Ardour  8.12
option_editor.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2009 Taybin Rutkin <taybin@taybin.com>
3  * Copyright (C) 2005-2018 Paul Davis <paul@linuxaudiosystems.com>
4  * Copyright (C) 2005 Karsten Wiese <fzuuzf@googlemail.com>
5  * Copyright (C) 2008-2015 David Robillard <d@drobilla.net>
6  * Copyright (C) 2009-2012 Carl Hetherington <carl@carlh.net>
7  * Copyright (C) 2012-2018 Robin Gareus <robin@gareus.org>
8  * Copyright (C) 2013-2015 John Emmas <john@creativepost.co.uk>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License along
21  * with this program; if not, write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23  */
24 
25 #ifndef __gtk_ardour_option_editor_h__
26 #define __gtk_ardour_option_editor_h__
27 
28 #include <gtkmm/checkbutton.h>
29 #include <gtkmm/comboboxtext.h>
31 #include <gtkmm/label.h>
32 #include <gtkmm/notebook.h>
33 #include <gtkmm/scale.h>
34 #include <gtkmm/spinbutton.h>
35 #include <gtkmm/table.h>
36 #include <gtkmm/treestore.h>
37 #include <gtkmm/treeview.h>
38 #include <gtkmm/window.h>
39 
40 #include "pbd/configuration.h"
41 
42 #include "actions.h"
43 #include "ardour_window.h"
44 #include "audio_clock.h"
45 #include "ardour/types.h"
46 
63 namespace ArdourWidgets {
64  class Frame;
65  class HSliderController;
66 }
67 
68 class OptionEditorPage;
69 
72 {
73 public:
76 
80  virtual void parameter_changed (std::string const & p) = 0;
81 
83  virtual void set_state_from_config () = 0;
84 
86  virtual void add_to_page (OptionEditorPage *) = 0;
87 
90 
91  void set_note (std::string const &);
92 
93  virtual Gtk::Widget& tip_widget() = 0;
94 
95  virtual PBD::Configuration::Metadata const * get_metadata() const;
97 
98  void highlight ();
99  void end_highlight ();
100 
101 protected:
103 
104  std::string _note;
107 };
108 
111 {
112 public:
113  OptionEditorHeading (std::string const &);
114 
115  void parameter_changed (std::string const &) {}
118 
119  Gtk::Widget& tip_widget() { return *_label; }
120 
121 private:
123 };
124 
127 {
128 public:
130 
131  void parameter_changed (std::string const &) {}
134 
136 
137 private:
139 };
140 
142 {
143 public:
144  RcConfigDisplay (std::string const &, std::string const &, sigc::slot<std::string>, char s = '\0');
146  void parameter_changed (std::string const & p);
148  Gtk::Widget& tip_widget() { return *_info; }
149 protected:
150  sigc::slot<std::string> _get;
153  std::string _id;
154  char _sep;
155 };
156 
158 {
159 public:
160  RcActionButton (std::string const & t, const Glib::SignalProxy0< void >::SlotType & slot, std::string const & l = "");
162 
163  void parameter_changed (std::string const & p) {}
166 
167 protected:
170  std::string _name;
171 };
172 
175 {
176 public:
181  Option (std::string const & i,
182  std::string const & n
183  )
184  : _id (i),
185  _name (n)
186  {}
187 
188  void parameter_changed (std::string const & p)
189  {
190  if (p == _id) {
192  }
193  }
194 
195  virtual void set_state_from_config () = 0;
196  virtual void add_to_page (OptionEditorPage*) = 0;
197 
198  std::string id () const {
199  return _id;
200  }
201 
202 protected:
203  std::string _id;
204  std::string _name;
205 };
206 
208 class CheckOption : public OptionEditorComponent , public Gtkmm2ext::Activatable, public sigc::trackable
209 {
210 public:
211  CheckOption (std::string const &, std::string const &, Glib::RefPtr<Gtk::Action> act );
213  void parameter_changed (std::string const &) {}
215 
216  void set_sensitive (bool yn) {
217  _button->set_sensitive (yn);
218  }
219 
221 
222 protected:
223  void action_toggled ();
226 
227  virtual void toggled ();
228 
231 };
232 
234 class BoolOption : public Option
235 {
236 public:
237  BoolOption (std::string const &, std::string const &, sigc::slot<bool>, sigc::slot<bool, bool>);
240 
241  void set_sensitive (bool yn) {
242  _button->set_sensitive (yn);
243  }
244 
246 
247 protected:
248  virtual void toggled ();
249 
250  sigc::slot<bool> _get;
251  sigc::slot<bool, bool> _set;
254 };
255 
257 {
258 public:
259  RouteDisplayBoolOption (std::string const &, std::string const &, sigc::slot<bool>, sigc::slot<bool, bool>);
260 
261 protected:
262  virtual void toggled ();
263 };
264 
267 {
268 public:
269  FooOption (Gtk::Widget *w) : _w (w) {}
270 
272  add_widget_to_page (p, _w);
273  }
274 
275  Gtk::Widget& tip_widget() { return *_w; }
277  void parameter_changed (std::string const &) {}
278 private:
280 };
281 
283 class EntryOption : public Option
284 {
285 public:
286  EntryOption (std::string const &, std::string const &, sigc::slot<std::string>, sigc::slot<bool, std::string>);
289  void set_sensitive (bool);
290  void set_invalid_chars (std::string i) { _invalid = i; }
291  void set_valid_chars (std::string i) { _valid = i; }
292 
293  Gtk::Widget& tip_widget() { return *_entry; }
294 
295 private:
296  void activated ();
298  void filter_text (const Glib::ustring&, int*);
299 
300  sigc::slot<std::string> _get;
301  sigc::slot<bool, std::string> _set;
304  std::string _invalid;
305  std::string _valid;
306 };
307 
308 
312 template <class T>
313 class ComboOption : public Option
314 {
315 public:
323  std::string const & i,
324  std::string const & n,
325  sigc::slot<T> g,
326  sigc::slot<bool, T> s
327  )
328  : Option (i, n)
329  , _get (g)
330  , _set (s)
331  {
332  _label = Gtk::manage (new Gtk::Label (n + ":"));
333  _label->set_alignment (0, 0.5);
335  _combo->signal_changed().connect (sigc::mem_fun (*this, &ComboOption::changed));
336  }
337 
339  {
340  uint32_t r = 0;
341  while (r < _options.size() && _get () != _options[r]) {
342  ++r;
343  }
344 
345  if (r < _options.size()) {
346  _combo->set_active (r);
347  }
348  }
349 
351  {
353  }
354 
359  void add (T e, std::string const & o)
360  {
361  _options.push_back (e);
362  _combo->append (o);
363  /* Remove excess space.
364  * gtk_combo_box_size_requet() does the following:
365  * {
366  * gtk_widget_size_request (GTK_BIN (widget)->child, &bin_req);
367  * gtk_combo_box_remeasure (combo_box);
368  * bin_req.width = MAX (bin_req.width, priv->width);
369  * }
370  *
371  * - gtk_combo_box_remeasure() measures the extents of all children
372  * correctly using gtk_cell_view_get_size_of_row() and sets priv->width.
373  * - The direct child (current active item as entry) is however too large.
374  * Likely because Ardour's clearlooks.rc.in does not correctly set this up).
375  */
376  _combo->get_child()->set_size_request (20, -1);
377  }
378 
379  void clear ()
380  {
381  _combo->remove_all();
382  _options.clear ();
383  }
384 
385  void changed ()
386  {
387  uint32_t const r = _combo->get_active_row_number ();
388  if (r < _options.size()) {
389  _set (_options[r]);
390  }
391  }
392  void set_sensitive (bool yn)
393  {
394  _combo->set_sensitive (yn);
395  }
396 
397  Gtk::Widget& tip_widget() { return *_combo; }
398 
399 private:
400  sigc::slot<T> _get;
401  sigc::slot<bool, T> _set;
404  std::vector<T> _options;
405 };
406 
407 
410 class HSliderOption : public Option
411 {
412 public:
414  std::string const& i,
415  std::string const& n,
416  sigc::slot<float> g,
417  sigc::slot<bool, float> s,
418  double lower, double upper,
419  double step_increment = 1,
420  double page_increment = 10,
421  double mult = 1.0,
422  bool logarithmic = false
423  );
424 
426  virtual void changed ();
428  void set_sensitive (bool yn);
429 
431  Gtk::HScale& scale() { return _hscale; }
432 
433 protected:
434  sigc::slot<float> _get;
435  sigc::slot<bool, float> _set;
439  double _mult;
440  bool _log;
441 };
442 
443 
447 class ComboStringOption : public Option
448 {
449 public:
457  std::string const & i,
458  std::string const & n,
459  sigc::slot<std::string> g,
460  sigc::slot<bool, std::string> s
461  );
462 
465 
469  void set_popdown_strings (const std::vector<std::string>& strings);
470 
471  void clear ();
472  void changed ();
473  void set_sensitive (bool yn);
474 
475  Gtk::Widget& tip_widget() { return *_combo; }
476 
477 private:
478  sigc::slot<std::string> _get;
479  sigc::slot<bool, std::string> _set;
482 };
483 
484 
488 class BoolComboOption : public Option
489 {
490 public:
492  std::string const &,
493  std::string const &,
494  std::string const &,
495  std::string const &,
496  sigc::slot<bool>,
497  sigc::slot<bool, bool>
498  );
499 
502  void changed ();
503  void set_sensitive (bool);
504 
505  Gtk::Widget& tip_widget() { return *_combo; }
506 
507 private:
508  sigc::slot<bool> _get;
509  sigc::slot<bool, bool> _set;
512 };
513 
514 
516 template <class T>
517 class SpinOption : public Option
518 {
519 public:
534  std::string const & i,
535  std::string const & n,
536  sigc::slot<T> g,
537  sigc::slot<bool, T> s,
538  T min,
539  T max,
540  T step,
541  T page,
542  std::string const & unit = "",
543  float scale = 1,
544  unsigned digits = 0
545  )
546  : Option (i, n)
547  , _get (g)
548  , _set (s)
549  , _scale (scale)
550  {
551  _label = Gtk::manage (new Gtk::Label (n + ":"));
552  _label->set_alignment (0, 0.5);
553 
555  _spin->set_range (min, max);
556  _spin->set_increments (step, page);
557  _spin->set_digits(digits);
558 
559  _box = Gtk::manage (new Gtk::HBox);
560  _box->pack_start (*_spin, true, true);
561  _box->set_spacing (4);
562  if (unit.length()) {
563  _box->pack_start (*Gtk::manage (new Gtk::Label (unit)), false, false);
564  }
565 
566  _spin->signal_value_changed().connect (sigc::mem_fun (*this, &SpinOption::changed));
567  }
568 
570  {
571  _spin->set_value (_get () / _scale);
572  }
573 
575  {
576  add_widgets_to_page (p, _label, _box, false);
577  }
578 
579  void changed ()
580  {
581  _set (static_cast<T> (_spin->get_value ()) * _scale);
582  }
583 
584  Gtk::Widget& tip_widget() { return *_spin; }
585 
586 private:
587  sigc::slot<T> _get;
588  sigc::slot<bool, T> _set;
589  float _scale;
593 };
594 
595 class FaderOption : public Option
596 {
597 public:
598 
599  FaderOption (std::string const &, std::string const &, sigc::slot<ARDOUR::gain_t> g, sigc::slot<bool, ARDOUR::gain_t> s);
602 
604 
605 private:
606  void db_changed ();
607  void on_activate ();
609 
616  sigc::slot<ARDOUR::gain_t> _get;
617  sigc::slot<bool, ARDOUR::gain_t> _set;
618 };
619 
620 class WidgetOption : public Option
621 {
622  public:
623  WidgetOption (std::string const & i, std::string const & n, Gtk::Widget& w);
624 
626  void parameter_changed (std::string const &) {}
628 
630 
631  private:
633 };
634 
635 class ClockOption : public Option
636 {
637 public:
638  ClockOption (std::string const &, std::string const &, sigc::slot<std::string>, sigc::slot<bool, std::string>);
642 
644  AudioClock& clock() { return _clock; }
645 
646 private:
650  sigc::slot<std::string> _get;
651  sigc::slot<bool, std::string> _set;
653 };
654 
655 class DirectoryOption : public Option
656 {
657 public:
658  DirectoryOption (std::string const &, std::string const &, sigc::slot<std::string>, sigc::slot<bool, std::string>);
659 
662 
664 
665 private:
667 
668  sigc::slot<std::string> _get;
669  sigc::slot<bool, std::string> _set;
671  sigc::connection _changed_connection;
672 };
673 
679 {
680 public:
681  OptionEditorPage (Gtk::Notebook&, std::string const &);
683 
686  std::list<OptionEditorComponent*> components;
687 
688 private:
689  void init ();
690 };
691 
693 {
694 public:
696  {
697  box.pack_start (table, false, false);
698  box.set_border_width (0);
699  }
700 
701  void parameter_changed (std::string const &) = 0;
703  virtual void add_to_page (OptionEditorPage*);
704 
705  Gtk::Widget& tip_widget() { return *table.children().front().get_widget(); }
706 };
707 
709 class OptionEditor : virtual public sigc::trackable
710 {
711 public:
713  virtual ~OptionEditor ();
714 
715  void add_option (std::string const &, OptionEditorComponent *);
716  void add_page (std::string const &, Gtk::Widget& page_widget);
717 
718  std::string current_page (); /* ought to be const but .. hard */
719  void set_current_page (std::string const &);
720  std::map<std::string, OptionEditorPage*>& pages() { return _pages; }
721 
722 protected:
723  virtual void parameter_changed (std::string const &);
724 
728 
730  {
731  public:
734 
736  add (name);
737  add (widget);
738  }
739  };
740 
742  Glib::RefPtr<Gtk::TreeStore> option_tree;
743 
744  /* searching */
745 
750  struct SearchResult {
751  SearchResult (std::string const & p, OptionEditorComponent& c) : page_title (p), component (c) {}
752 
753  std::string page_title;
755  };
756  typedef std::vector<SearchResult> SearchResults;
758  typedef std::vector<std::string> SearchTargets;
760  SearchResults::iterator search_iterator;
762  std::string last_search_string;
764  sigc::connection not_found_timeout;
765 
766  void search ();
767  void search_highlight (std::string const & page_title, OptionEditorComponent&);
771  void not_found ();
772 
773 private:
777  std::map<std::string, OptionEditorPage*> _pages;
778 
779  void add_path_to_treeview (std::string const &, Gtk::Widget&);
781  bool create_missing = false);
783 };
784 
787 {
788 public:
791 
794 };
795 
798 {
799 public:
800  OptionEditorWindow (PBD::Configuration *, std::string const &);
802 protected:
805 };
806 
807 #endif /* __gtk_ardour_option_editor_h__ */
Gtk::Label * _label
BoolComboOption(std::string const &, std::string const &, std::string const &, std::string const &, sigc::slot< bool >, sigc::slot< bool, bool >)
sigc::slot< bool, bool > _set
void set_state_from_config()
void set_sensitive(bool)
sigc::slot< bool > _get
void add_to_page(OptionEditorPage *)
Gtk::ComboBoxText * _combo
Gtk::Widget & tip_widget()
void set_sensitive(bool yn)
virtual void toggled()
Gtk::CheckButton * _button
UI button.
void add_to_page(OptionEditorPage *)
sigc::slot< bool, bool > _set
slot to set the configuration variable's value
Gtk::Widget & tip_widget()
void set_state_from_config()
sigc::slot< bool > _get
slot to get the configuration variable's value
BoolOption(std::string const &, std::string const &, sigc::slot< bool >, sigc::slot< bool, bool >)
Gtk::Label * _label
label for button, so we can use markup
Gtk::CheckButton * _button
UI button.
void set_state_from_config()
void action_toggled()
Gtk::Label * _label
label for button, so we can use markup
void parameter_changed(std::string const &)
void action_sensitivity_changed()
void add_to_page(OptionEditorPage *)
void set_sensitive(bool yn)
CheckOption(std::string const &, std::string const &, Glib::RefPtr< Gtk::Action > act)
void action_visibility_changed()
Gtk::Widget & tip_widget()
virtual void toggled()
AudioClock _clock
ARDOUR::Session * _session
void add_to_page(OptionEditorPage *)
sigc::slot< bool, std::string > _set
void set_state_from_config()
void set_session(ARDOUR::Session *)
sigc::slot< std::string > _get
AudioClock & clock()
Gtk::Widget & tip_widget()
Gtk::Label * _label
ClockOption(std::string const &, std::string const &, sigc::slot< std::string >, sigc::slot< bool, std::string >)
void save_clock_time()
void add_to_page(OptionEditorPage *p)
void changed()
sigc::slot< bool, T > _set
std::vector< T > _options
Gtk::Widget & tip_widget()
Gtk::Label * _label
void add(T e, std::string const &o)
void set_sensitive(bool yn)
Gtk::ComboBoxText * _combo
void set_state_from_config()
ComboOption(std::string const &i, std::string const &n, sigc::slot< T > g, sigc::slot< bool, T > s)
sigc::slot< T > _get
sigc::slot< std::string > _get
Gtk::Label * _label
void set_sensitive(bool yn)
void add_to_page(OptionEditorPage *p)
void set_state_from_config()
Gtk::ComboBoxText * _combo
void set_popdown_strings(const std::vector< std::string > &strings)
sigc::slot< bool, std::string > _set
ComboStringOption(std::string const &i, std::string const &n, sigc::slot< std::string > g, sigc::slot< bool, std::string > s)
Gtk::Widget & tip_widget()
DirectoryOption(std::string const &, std::string const &, sigc::slot< std::string >, sigc::slot< bool, std::string >)
void set_state_from_config()
Gtk::FileChooserButton _file_chooser
sigc::connection _changed_connection
void selection_changed()
sigc::slot< std::string > _get
slot to get the configuration variable's value
sigc::slot< bool, std::string > _set
slot to set the configuration variable's value
void add_to_page(OptionEditorPage *)
Gtk::Widget & tip_widget()
bool focus_out(GdkEventFocus *)
EntryOption(std::string const &, std::string const &, sigc::slot< std::string >, sigc::slot< bool, std::string >)
Gtk::Label * _label
UI label.
Gtk::Entry * _entry
UI entry.
std::string _valid
void set_invalid_chars(std::string i)
Gtk::Widget & tip_widget()
sigc::slot< bool, std::string > _set
slot to set the configuration variable's value
void add_to_page(OptionEditorPage *)
void set_state_from_config()
std::string _invalid
void set_sensitive(bool)
void set_valid_chars(std::string i)
void activated()
sigc::slot< std::string > _get
slot to get the configuration variable's value
void filter_text(const Glib::ustring &, int *)
Gtk::HBox _box
Gtk::Adjustment _db_adjustment
bool on_key_press(GdkEventKey *ev)
Gtk::VBox _fader_centering_box
Gtk::Widget & tip_widget()
Gtk::Label * _label
FaderOption(std::string const &, std::string const &, sigc::slot< ARDOUR::gain_t > g, sigc::slot< bool, ARDOUR::gain_t > s)
void add_to_page(OptionEditorPage *)
Gtk::Entry _db_display
ArdourWidgets::HSliderController * _db_slider
void db_changed()
sigc::slot< ARDOUR::gain_t > _get
void set_state_from_config()
void on_activate()
sigc::slot< bool, ARDOUR::gain_t > _set
void set_state_from_config()
FooOption(Gtk::Widget *w)
void parameter_changed(std::string const &)
void add_to_page(OptionEditorPage *p)
Gtk::Widget & tip_widget()
Gtk::Widget * _w
Gtk::Widget * get_child()
void pack_start(Widget &child, bool expand, bool fill, guint padding=0)
void set_spacing(int spacing)
void append(const Glib::ustring &text)
void set_active(int index)
int get_active_row_number() const
Glib::SignalProxy0< void > signal_changed()
void set_border_width(guint border_width)
void set_alignment(float xalign=0.0, float yalign=0.5)
void set_digits(guint digits)
double get_value() const
void set_value(double value)
void set_range(double min, double max)
void set_increments(double step, double page)
Glib::SignalProxy0< void > signal_value_changed()
TableList & children()
void add(TreeModelColumnBase &column)
void set_sensitive(bool sensitive=true)
void set_size_request(int width=-1, int height=-1)
sigc::slot< bool, float > _set
Gtk::Adjustment _adj
void set_sensitive(bool yn)
Gtk::Label * _label
HSliderOption(std::string const &i, std::string const &n, sigc::slot< float > g, sigc::slot< bool, float > s, double lower, double upper, double step_increment=1, double page_increment=10, double mult=1.0, bool logarithmic=false)
Gtk::Widget & tip_widget()
sigc::slot< float > _get
void add_to_page(OptionEditorPage *p)
Gtk::HScale & scale()
Gtk::HScale _hscale
void set_state_from_config()
virtual void changed()
void set_state_from_config()
void add_to_page(OptionEditorPage *)
void parameter_changed(std::string const &)
Gtk::Widget & tip_widget()
Gtk::EventBox _dummy
ArdourWidgets::Frame * _frame
void set_note(std::string const &)
virtual PBD::Configuration::Metadata const * get_metadata() const
void set_metadata(PBD::Configuration::Metadata const &)
virtual Gtk::Widget & tip_widget()=0
virtual ~OptionEditorComponent()
Definition: option_editor.h:75
virtual void set_state_from_config()=0
PBD::Configuration::Metadata const * _metadata
void maybe_add_note(OptionEditorPage *, int)
void add_widgets_to_page(OptionEditorPage *, Gtk::Widget *, Gtk::Widget *, bool expand=true)
virtual void add_to_page(OptionEditorPage *)=0
virtual void parameter_changed(std::string const &p)=0
void add_widget_to_page(OptionEditorPage *, Gtk::Widget *)
OptionEditorContainer(PBD::Configuration *)
Gtk::Label * _label
the label used for the heading
Gtk::Widget & tip_widget()
void parameter_changed(std::string const &)
OptionEditorHeading(std::string const &)
void add_to_page(OptionEditorPage *)
virtual void add_to_page(OptionEditorPage *)
void set_state_from_config()=0
void parameter_changed(std::string const &)=0
Gtk::Widget & tip_widget()
std::list< OptionEditorComponent * > components
OptionEditorPage(Gtk::Notebook &, std::string const &)
Gtk::Table table
OptionEditorWindow(PBD::Configuration *, std::string const &)
Gtk::TreeModelColumn< Gtk::Widget * > widget
Gtk::TreeModelColumn< std::string > name
sigc::connection not_found_timeout
OptionEditor(PBD::Configuration *)
Gtk::Notebook & notebook()
PBD::Configuration * _config
bool search_key_press(GdkEventKey *)
std::map< std::string, OptionEditorPage * > & pages()
void set_current_page(std::string const &)
virtual ~OptionEditor()
OptionEditorComponent * search_current_highlight
void add_page(std::string const &, Gtk::Widget &page_widget)
Gtk::TreeModel::iterator find_path_in_treemodel(std::string const &pn, bool create_missing=false)
Gtk::Label search_label
void search_highlight(std::string const &page_title, OptionEditorComponent &)
std::vector< std::string > SearchTargets
Gtk::HBox search_packer
void add_option(std::string const &, OptionEditorComponent *)
int search_not_found_count
bool search_key_focus(GdkEventFocus *)
Gtk::Notebook _notebook
void add_path_to_treeview(std::string const &, Gtk::Widget &)
Gtk::Entry search_entry
SearchResults::iterator search_iterator
Gtk::Button search_button
OptionColumns option_columns
Gtk::TreeView & treeview()
bool not_found_callback()
std::vector< SearchResult > SearchResults
std::string current_page()
SearchTargets search_targets
SearchResults * search_results
std::string last_search_string
virtual void parameter_changed(std::string const &)
void not_found()
void treeview_row_selected()
std::map< std::string, OptionEditorPage * > _pages
PBD::ScopedConnection config_connection
Glib::RefPtr< Gtk::TreeStore > option_tree
Gtk::TreeView option_treeview
std::string _name
std::string _id
virtual void set_state_from_config()=0
virtual void add_to_page(OptionEditorPage *)=0
void parameter_changed(std::string const &p)
Option(std::string const &i, std::string const &n)
std::string id() const
std::vector< std::string > Metadata
Definition: configuration.h:50
RcActionButton(std::string const &t, const Glib::SignalProxy0< void >::SlotType &slot, std::string const &l="")
void add_to_page(OptionEditorPage *)
Gtk::Button * _button
Gtk::Label * _label
void parameter_changed(std::string const &p)
void set_state_from_config()
Gtk::Widget & tip_widget()
std::string _name
void add_to_page(OptionEditorPage *)
Gtk::Label * _label
void parameter_changed(std::string const &p)
sigc::slot< std::string > _get
std::string _id
void set_state_from_config()
Gtk::Label * _info
Gtk::Widget & tip_widget()
RcConfigDisplay(std::string const &, std::string const &, sigc::slot< std::string >, char s='\0')
RouteDisplayBoolOption(std::string const &, std::string const &, sigc::slot< bool >, sigc::slot< bool, bool >)
virtual void toggled()
Gtk::HBox * _box
Gtk::Widget & tip_widget()
Gtk::SpinButton * _spin
SpinOption(std::string const &i, std::string const &n, sigc::slot< T > g, sigc::slot< bool, T > s, T min, T max, T step, T page, std::string const &unit="", float scale=1, unsigned digits=0)
sigc::slot< T > _get
void add_to_page(OptionEditorPage *p)
void changed()
sigc::slot< bool, T > _set
Gtk::Label * _label
void set_state_from_config()
Gtk::Widget * _widget
void parameter_changed(std::string const &)
void set_state_from_config()
WidgetOption(std::string const &i, std::string const &n, Gtk::Widget &w)
void add_to_page(OptionEditorPage *)
Gtk::Widget & tip_widget()
T * manage(T *obj)
Definition: object.h:58
SearchResult(std::string const &p, OptionEditorComponent &c)
OptionEditorComponent & component