Ardour  9.0-pre0-582-g084a23a80d
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 #pragma once
26 
27 #include <gtkmm/checkbutton.h>
28 #include <gtkmm/comboboxtext.h>
30 #include <gtkmm/label.h>
31 #include <gtkmm/notebook.h>
32 #include <gtkmm/scale.h>
33 #include <gtkmm/spinbutton.h>
34 #include <gtkmm/table.h>
35 #include <gtkmm/treestore.h>
36 #include <gtkmm/treeview.h>
37 #include <gtkmm/window.h>
38 
39 #include "pbd/configuration.h"
40 
41 #include "actions.h"
42 #include "ardour_window.h"
43 #include "audio_clock.h"
44 #include "ardour/types.h"
45 
62 namespace ArdourWidgets {
63  class Frame;
64  class HSliderController;
65 }
66 
67 class OptionEditorPage;
68 
71 {
72 public:
75 
79  virtual void parameter_changed (std::string const & p) = 0;
80 
82  virtual void set_state_from_config () = 0;
83 
85  virtual void add_to_page (OptionEditorPage *) = 0;
86 
89 
90  void set_note (std::string const &);
91 
92  virtual Gtk::Widget& tip_widget() = 0;
93 
94  virtual PBD::Configuration::Metadata const * get_metadata() const;
96 
97  void highlight ();
98  void end_highlight ();
99 
100 protected:
102 
103  std::string _note;
106 };
107 
110 {
111 public:
112  OptionEditorHeading (std::string const &);
113 
114  void parameter_changed (std::string const &) {}
117 
118  Gtk::Widget& tip_widget() { return *_label; }
119 
120 private:
122 };
123 
126 {
127 public:
129 
130  void parameter_changed (std::string const &) {}
133 
135 
136 private:
138 };
139 
141 {
142 public:
143  RcConfigDisplay (std::string const &, std::string const &, sigc::slot<std::string>, char s = '\0');
145  void parameter_changed (std::string const & p);
147  Gtk::Widget& tip_widget() { return *_info; }
148 protected:
149  sigc::slot<std::string> _get;
152  std::string _id;
153  char _sep;
154 };
155 
157 {
158 public:
159  RcActionButton (std::string const & t, const Glib::SignalProxy0< void >::SlotType & slot, std::string const & l = "");
161 
162  void parameter_changed (std::string const & p) {}
165 
166 protected:
169  std::string _name;
170 };
171 
174 {
175 public:
180  Option (std::string const & i,
181  std::string const & n
182  )
183  : _id (i),
184  _name (n)
185  {}
186 
187  void parameter_changed (std::string const & p)
188  {
189  if (p == _id) {
191  }
192  }
193 
194  virtual void set_state_from_config () = 0;
195  virtual void add_to_page (OptionEditorPage*) = 0;
196 
197  std::string id () const {
198  return _id;
199  }
200 
201 protected:
202  std::string _id;
203  std::string _name;
204 };
205 
207 class CheckOption : public OptionEditorComponent , public Gtkmm2ext::Activatable, public sigc::trackable
208 {
209 public:
210  CheckOption (std::string const &, std::string const &, Glib::RefPtr<Gtk::Action> act );
212  void parameter_changed (std::string const &) {}
214 
215  void set_sensitive (bool yn) {
216  _button->set_sensitive (yn);
217  }
218 
220 
221 protected:
222  void action_toggled ();
225 
226  virtual void toggled ();
227 
230 };
231 
233 class BoolOption : public Option
234 {
235 public:
236  BoolOption (std::string const &, std::string const &, sigc::slot<bool>, sigc::slot<bool, bool>);
239 
240  void set_sensitive (bool yn) {
241  _button->set_sensitive (yn);
242  }
243 
245 
246 protected:
247  virtual void toggled ();
248 
249  sigc::slot<bool> _get;
250  sigc::slot<bool, bool> _set;
253 };
254 
256 {
257 public:
258  RouteDisplayBoolOption (std::string const &, std::string const &, sigc::slot<bool>, sigc::slot<bool, bool>);
259 
260 protected:
261  virtual void toggled ();
262 };
263 
266 {
267 public:
268  FooOption (Gtk::Widget *w) : _w (w) {}
269 
271  add_widget_to_page (p, _w);
272  }
273 
274  Gtk::Widget& tip_widget() { return *_w; }
276  void parameter_changed (std::string const &) {}
277 private:
279 };
280 
282 class EntryOption : public Option
283 {
284 public:
285  EntryOption (std::string const &, std::string const &, sigc::slot<std::string>, sigc::slot<bool, std::string>);
288  void set_sensitive (bool);
289  void set_invalid_chars (std::string i) { _invalid = i; }
290  void set_valid_chars (std::string i) { _valid = i; }
291 
292  Gtk::Widget& tip_widget() { return *_entry; }
293 
294 private:
295  void activated ();
297  void filter_text (const Glib::ustring&, int*);
298 
299  sigc::slot<std::string> _get;
300  sigc::slot<bool, std::string> _set;
303  std::string _invalid;
304  std::string _valid;
305 };
306 
307 
311 template <class T>
312 class ComboOption : public Option
313 {
314 public:
322  std::string const & i,
323  std::string const & n,
324  sigc::slot<T> g,
325  sigc::slot<bool, T> s
326  )
327  : Option (i, n)
328  , _get (g)
329  , _set (s)
330  {
331  _label = Gtk::manage (new Gtk::Label (n + ":"));
332  _label->set_alignment (0, 0.5);
334  _combo->signal_changed().connect (sigc::mem_fun (*this, &ComboOption::changed));
335  }
336 
338  {
339  uint32_t r = 0;
340  while (r < _options.size() && _get () != _options[r]) {
341  ++r;
342  }
343 
344  if (r < _options.size()) {
345  _combo->set_active (r);
346  }
347  }
348 
350  {
352  }
353 
358  void add (T e, std::string const & o)
359  {
360  _options.push_back (e);
361  _combo->append (o);
362  /* Remove excess space.
363  * gtk_combo_box_size_requet() does the following:
364  * {
365  * gtk_widget_size_request (GTK_BIN (widget)->child, &bin_req);
366  * gtk_combo_box_remeasure (combo_box);
367  * bin_req.width = MAX (bin_req.width, priv->width);
368  * }
369  *
370  * - gtk_combo_box_remeasure() measures the extents of all children
371  * correctly using gtk_cell_view_get_size_of_row() and sets priv->width.
372  * - The direct child (current active item as entry) is however too large.
373  * Likely because Ardour's clearlooks.rc.in does not correctly set this up).
374  */
375  _combo->get_child()->set_size_request (20, -1);
376  }
377 
378  void clear ()
379  {
380  _combo->remove_all();
381  _options.clear ();
382  }
383 
384  void changed ()
385  {
386  uint32_t const r = _combo->get_active_row_number ();
387  if (r < _options.size()) {
388  _set (_options[r]);
389  }
390  }
391  void set_sensitive (bool yn)
392  {
393  _combo->set_sensitive (yn);
394  }
395 
396  Gtk::Widget& tip_widget() { return *_combo; }
397 
398 private:
399  sigc::slot<T> _get;
400  sigc::slot<bool, T> _set;
403  std::vector<T> _options;
404 };
405 
406 
409 class HSliderOption : public Option
410 {
411 public:
413  std::string const& i,
414  std::string const& n,
415  sigc::slot<float> g,
416  sigc::slot<bool, float> s,
417  double lower, double upper,
418  double step_increment = 1,
419  double page_increment = 10,
420  double mult = 1.0,
421  bool logarithmic = false
422  );
423 
425  virtual void changed ();
427  void set_sensitive (bool yn);
428 
430  Gtk::HScale& scale() { return _hscale; }
431 
432 protected:
433  sigc::slot<float> _get;
434  sigc::slot<bool, float> _set;
438  double _mult;
439  bool _log;
440 };
441 
442 
446 class ComboStringOption : public Option
447 {
448 public:
456  std::string const & i,
457  std::string const & n,
458  sigc::slot<std::string> g,
459  sigc::slot<bool, std::string> s
460  );
461 
464 
468  void set_popdown_strings (const std::vector<std::string>& strings);
469 
470  void clear ();
471  void changed ();
472  void set_sensitive (bool yn);
473 
474  Gtk::Widget& tip_widget() { return *_combo; }
475 
476 private:
477  sigc::slot<std::string> _get;
478  sigc::slot<bool, std::string> _set;
481 };
482 
483 
487 class BoolComboOption : public Option
488 {
489 public:
491  std::string const &,
492  std::string const &,
493  std::string const &,
494  std::string const &,
495  sigc::slot<bool>,
496  sigc::slot<bool, bool>
497  );
498 
501  void changed ();
502  void set_sensitive (bool);
503 
504  Gtk::Widget& tip_widget() { return *_combo; }
505 
506 private:
507  sigc::slot<bool> _get;
508  sigc::slot<bool, bool> _set;
511 };
512 
513 
515 template <class T>
516 class SpinOption : public Option
517 {
518 public:
533  std::string const & i,
534  std::string const & n,
535  sigc::slot<T> g,
536  sigc::slot<bool, T> s,
537  T min,
538  T max,
539  T step,
540  T page,
541  std::string const & unit = "",
542  float scale = 1,
543  unsigned digits = 0
544  )
545  : Option (i, n)
546  , _get (g)
547  , _set (s)
548  , _scale (scale)
549  {
550  _label = Gtk::manage (new Gtk::Label (n + ":"));
551  _label->set_alignment (0, 0.5);
552 
554  _spin->set_range (min, max);
555  _spin->set_increments (step, page);
556  _spin->set_digits(digits);
557 
558  _box = Gtk::manage (new Gtk::HBox);
559  _box->pack_start (*_spin, true, true);
560  _box->set_spacing (4);
561  if (unit.length()) {
562  _box->pack_start (*Gtk::manage (new Gtk::Label (unit)), false, false);
563  }
564 
565  _spin->signal_value_changed().connect (sigc::mem_fun (*this, &SpinOption::changed));
566  }
567 
569  {
570  _spin->set_value (_get () / _scale);
571  }
572 
574  {
575  add_widgets_to_page (p, _label, _box, false);
576  }
577 
578  void changed ()
579  {
580  _set (static_cast<T> (_spin->get_value ()) * _scale);
581  }
582 
583  Gtk::Widget& tip_widget() { return *_spin; }
584 
585 private:
586  sigc::slot<T> _get;
587  sigc::slot<bool, T> _set;
588  float _scale;
592 };
593 
594 class FaderOption : public Option
595 {
596 public:
597 
598  FaderOption (std::string const &, std::string const &, sigc::slot<ARDOUR::gain_t> g, sigc::slot<bool, ARDOUR::gain_t> s);
601 
603 
604 private:
605  void db_changed ();
606  void on_activate ();
608 
615  sigc::slot<ARDOUR::gain_t> _get;
616  sigc::slot<bool, ARDOUR::gain_t> _set;
617 };
618 
619 class WidgetOption : public Option
620 {
621  public:
622  WidgetOption (std::string const & i, std::string const & n, Gtk::Widget& w);
623 
625  void parameter_changed (std::string const &) {}
627 
629 
630  private:
632 };
633 
634 class ClockOption : public Option
635 {
636 public:
637  ClockOption (std::string const &, std::string const &, sigc::slot<std::string>, sigc::slot<bool, std::string>);
641 
643  AudioClock& clock() { return _clock; }
644 
645 private:
649  sigc::slot<std::string> _get;
650  sigc::slot<bool, std::string> _set;
652 };
653 
654 class DirectoryOption : public Option
655 {
656 public:
657  DirectoryOption (std::string const &, std::string const &, sigc::slot<std::string>, sigc::slot<bool, std::string>);
658 
661 
663 
664 private:
666 
667  sigc::slot<std::string> _get;
668  sigc::slot<bool, std::string> _set;
670  sigc::connection _changed_connection;
671 };
672 
678 {
679 public:
680  OptionEditorPage (Gtk::Notebook&, std::string const &);
682 
685  std::list<OptionEditorComponent*> components;
686 
687 private:
688  void init ();
689 };
690 
692 {
693 public:
695  {
696  box.pack_start (table, false, false);
697  box.set_border_width (0);
698  }
699 
700  void parameter_changed (std::string const &) = 0;
702  virtual void add_to_page (OptionEditorPage*);
703 
704  Gtk::Widget& tip_widget() { return *table.children().front().get_widget(); }
705 };
706 
708 class OptionEditor : virtual public sigc::trackable
709 {
710 public:
712  virtual ~OptionEditor ();
713 
714  void add_option (std::string const &, OptionEditorComponent *);
715  void add_page (std::string const &, Gtk::Widget& page_widget);
716 
717  std::string current_page (); /* ought to be const but .. hard */
718  void set_current_page (std::string const &);
719  std::map<std::string, OptionEditorPage*>& pages() { return _pages; }
720 
721 protected:
722  virtual void parameter_changed (std::string const &);
723 
727 
729  {
730  public:
733 
735  add (name);
736  add (widget);
737  }
738  };
739 
741  Glib::RefPtr<Gtk::TreeStore> option_tree;
742 
743  /* searching */
744 
749  struct SearchResult {
750  SearchResult (std::string const & p, OptionEditorComponent& c) : page_title (p), component (c) {}
751 
752  std::string page_title;
754  };
755  typedef std::vector<SearchResult> SearchResults;
757  typedef std::vector<std::string> SearchTargets;
759  SearchResults::iterator search_iterator;
761  std::string last_search_string;
763  sigc::connection not_found_timeout;
764 
765  void search ();
766  void search_highlight (std::string const & page_title, OptionEditorComponent&);
770  void not_found ();
771 
772 private:
776  std::map<std::string, OptionEditorPage*> _pages;
777 
778  void add_path_to_treeview (std::string const &, Gtk::Widget&);
780  bool create_missing = false);
782 };
783 
786 {
787 public:
790 
793 };
794 
797 {
798 public:
799  OptionEditorWindow (PBD::Configuration *, std::string const &);
801 protected:
804 };
805 
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:74
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:48
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