X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Faxis_view.cc;h=2d96b17aa1b2d13b43254ff76b8392eb8c15515c;hb=dc4f730ac95837590e8305f69778d1049e4a545e;hp=5e36fc43c1e5a7bc04a4dcdeb38b0cf899c04eb1;hpb=ad017365f7a73f8ba57f667cc1aa36478b48c50e;p=ardour.git diff --git a/gtk2_ardour/axis_view.cc b/gtk2_ardour/axis_view.cc index 5e36fc43c1..2d96b17aa1 100644 --- a/gtk2_ardour/axis_view.cc +++ b/gtk2_ardour/axis_view.cc @@ -27,17 +27,18 @@ #include "pbd/error.h" #include "pbd/convert.h" +#include "pbd/i18n.h" #include -#include #include +#include "ardour/selection.h" + #include "public_editor.h" #include "ardour_ui.h" #include "gui_object.h" #include "axis_view.h" #include "utils.h" -#include "i18n.h" using namespace std; using namespace Gtk; @@ -47,10 +48,8 @@ using namespace ARDOUR_UI_UTILS; list AxisView::used_colors; -AxisView::AxisView (ARDOUR::Session* sess) - : SessionHandlePtr (sess) +AxisView::AxisView () { - _selected = false; } AxisView::~AxisView() @@ -69,33 +68,68 @@ AxisView::gui_property (const string& property_name) const if (property_hashtable.count(property_name)) { return property_hashtable[property_name]; } else { - string rv = gui_object_state().get_string (state_id(), property_name); + string rv = gui_object_state().get_string (state_id(), property_name); property_hashtable.erase(property_name); property_hashtable.emplace(property_name, rv); return rv; } } +bool +AxisView::get_gui_property (const std::string& property_name, std::string& value) const +{ + std::string str = gui_property(property_name); + + if (!str.empty()) { + value = str; + return true; + } + + return false; +} + +void +AxisView::set_gui_property (const std::string& property_name, const std::string& value) +{ + property_hashtable.erase (property_name); + property_hashtable.emplace (property_name, value); + gui_object_state ().set_property (state_id (), property_name, value); +} + bool AxisView::marked_for_display () const { - string const v = gui_property ("visible"); - return (v == "" || PBD::string_is_affirmative (v)); + bool visible; + if (!get_gui_property ("visible", visible)) { + return true; + } + return visible; } bool AxisView::set_marked_for_display (bool yn) { - string const v = gui_property ("visible"); - if (v == "" || yn != PBD::string_is_affirmative (v)) { - set_gui_property ("visible", yn); - return true; // things changed + bool visible; + if (get_gui_property ("visible", visible) && visible == yn) { + return false; // nothing changed } - return false; + + set_gui_property ("visible", yn); + return true; // things changed } GUIObjectState& -AxisView::gui_object_state() +AxisView::gui_object_state() { return *ARDOUR_UI::instance()->gui_object_state; } + +void +AxisView::set_selected (bool yn) +{ + if (selected() == yn) { + return; + } + + Selectable::set_selected (yn); +}