From bb7c857a698f1eb208bd83a57eeca2b81b75cdb5 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 12 Dec 2015 20:39:38 +0100 Subject: [PATCH] add rc-config widget to display text-config/paths (read only) --- gtk2_ardour/option_editor.cc | 39 ++++++++++++++++++++++++++++++++++++ gtk2_ardour/option_editor.h | 16 +++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc index cd9ff81d1e..e963726531 100644 --- a/gtk2_ardour/option_editor.cc +++ b/gtk2_ardour/option_editor.cc @@ -137,6 +137,45 @@ RcActionButton::add_to_page (OptionEditorPage *p) } } +RcConfigDisplay::RcConfigDisplay (string const & i, string const & n, sigc::slot g, char s) + : _get (g) + , _id (i) + , _sep (s) +{ + _label = manage (right_aligned_label (n)); + _info = manage (new Label); + _info-> set_line_wrap (true); + set_state_from_config (); +} + +void +RcConfigDisplay::set_state_from_config () +{ + string p = _get(); + if (_sep) { + std::replace (p.begin(), p.end(), _sep, '\n'); + } + _info->set_text (p); +} + +void +RcConfigDisplay::parameter_changed (std::string const & p) +{ + if (p == _id) { + set_state_from_config (); + } +} + +void +RcConfigDisplay::add_to_page (OptionEditorPage *p) +{ + int const n = p->table.property_n_rows(); + int m = n + 1; + p->table.resize (m, 3); + p->table.attach (*_label, 1, 2, n, n + 1, FILL | EXPAND); + p->table.attach (*_info, 2, 3, n, n + 1, FILL | EXPAND); +} + BoolOption::BoolOption (string const & i, string const & n, sigc::slot g, sigc::slot s) : Option (i, n), diff --git a/gtk2_ardour/option_editor.h b/gtk2_ardour/option_editor.h index 07e7fbeca8..76370619aa 100644 --- a/gtk2_ardour/option_editor.h +++ b/gtk2_ardour/option_editor.h @@ -121,6 +121,22 @@ protected: Gtk::VBox* _box; ///< constituent box for subclasses to add widgets to }; +class RcConfigDisplay : public OptionEditorComponent +{ +public: + RcConfigDisplay (std::string const &, std::string const &, sigc::slot, char s = '\0'); + void add_to_page (OptionEditorPage *); + void parameter_changed (std::string const & p); + void set_state_from_config (); + Gtk::Widget& tip_widget() { return *_info; } +protected: + sigc::slot _get; + Gtk::Label* _label; + Gtk::Label* _info; + std::string _id; + char _sep; +}; + class RcActionButton : public OptionEditorComponent { public: -- 2.30.2