X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Faxis_view.h;h=62362f0e4a6bf4a8b92c9706f80d1c012892d27d;hb=99b0712be451bf16ce9266ebe622c3ed38bf412f;hp=29f167d85e4583421c49a3633118b203066e1fa9;hpb=c83389b8ec5fef9553a401e6123b7e55702af9e2;p=ardour.git diff --git a/gtk2_ardour/axis_view.h b/gtk2_ardour/axis_view.h index 29f167d85e..62362f0e4a 100644 --- a/gtk2_ardour/axis_view.h +++ b/gtk2_ardour/axis_view.h @@ -21,6 +21,7 @@ #define __ardour_gtk_axis_view_h__ #include +#include #include #include @@ -30,6 +31,7 @@ #include "ardour/session_handle.h" +#include "gui_object.h" #include "prompter.h" #include "selectable.h" @@ -44,28 +46,39 @@ namespace ARDOUR { class AxisView : public virtual Selectable, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr { public: - /** - * Returns the current 'Track' Color - * - * @return the current Track Color - */ - Gdk::Color color() const { return _color; } + /** @return the track's own color */ + Gdk::Color color () const { return _color; } ARDOUR::Session* session() const { return _session; } virtual std::string name() const = 0; - virtual bool marked_for_display() const { return _marked_for_display; } - virtual void set_marked_for_display (bool yn) { - _marked_for_display = yn; + sigc::signal Hiding; + + virtual std::string state_id() const = 0; + /* for now, we always return properties in string form. + */ + std::string gui_property (const std::string& property_name) const; + + template void set_gui_property (const std::string& property_name, const T& value) { + std::stringstream s; + s << value; + property_hashtable.erase(property_name); + property_hashtable.emplace(property_name, s.str()); + gui_object_state().set_property (state_id(), property_name, value); } - - static PBD::Signal1 CatchDeletion; - sigc::signal Hiding; + void cleanup_gui_properties () { + /* remove related property node from the GUI state */ + gui_object_state().remove_node (state_id()); + property_hashtable.clear (); + } + + bool marked_for_display () const; + virtual bool set_marked_for_display (bool); - void set_old_order_key (uint32_t ok) { _old_order_key = ok; } - uint32_t old_order_key() const { return _old_order_key; } + static GUIObjectState& gui_object_state(); + void clear_property_cache() { property_hashtable.clear(); } protected: @@ -79,16 +92,13 @@ class AxisView : public virtual Selectable, public PBD::ScopedConnectionList, pu */ static Gdk::Color unique_random_color(); - Gdk::Color _color; static std::list used_colors; Gtk::Label name_label; - bool _marked_for_display; - uint32_t _old_order_key; - + mutable boost::unordered_map property_hashtable; }; /* class AxisView */ #endif /* __ardour_gtk_axis_view_h__ */