X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fsession_object.h;h=ac74f07b7700c3522e13f7597abc620487fa25d2;hb=ae2ce3053f465fd5685343c30b32b642cef5f882;hp=1a6a79ceee0227a9c325b076f7198d36db4f99b4;hpb=e0aaed6d65f160c328cb8b56d7c6552ee15d65e2;p=ardour.git diff --git a/libs/ardour/ardour/session_object.h b/libs/ardour/ardour/session_object.h index 1a6a79ceee..ac74f07b77 100644 --- a/libs/ardour/ardour/session_object.h +++ b/libs/ardour/ardour/session_object.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2000-2007 Paul Davis + Copyright (C) 2000-2010 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,43 +21,50 @@ #define __ardour_session_object_h__ #include -#include "pbd/statefuldestructible.h" +#include "pbd/statefuldestructible.h" +#include "pbd/signals.h" +#include "pbd/properties.h" + +#include "ardour/ardour.h" +#include "ardour/session_handle.h" namespace ARDOUR { -class Session; +namespace Properties { + LIBARDOUR_API extern PBD::PropertyDescriptor name; +} +class Session; -/** An object associated with a Session. - * - * This is a few common things factored out of IO which weren't IO specific - * (to fix the problem with e.g. PluginInsert being an IO which it shouldn't be). - * collection of input and output ports with connections. +/** A named object associated with a Session. Objects derived from this class are + expected to be destroyed before the session calls drop_references(). */ -class SessionObject : public PBD::StatefulDestructible + +class LIBARDOUR_API SessionObject : public SessionHandleRef, public PBD::StatefulDestructible { -public: - SessionObject(Session& session, const std::string& name) - : _session(session) - , _name(name) - {} - - Session& session() const { return _session; } - const std::string& name() const { return _name; } - + public: + static void make_property_quarks (); + + SessionObject (Session& session, const std::string& name) + : SessionHandleRef (session) + , _name (Properties::name, name) + { + add_property (_name); + } + + Session& session() const { return _session; } + std::string name() const { return _name; } + virtual bool set_name (const std::string& str) { if (_name != str) { _name = str; - NameChanged(); + PropertyChanged (PBD::PropertyChange (Properties::name)); } return true; } - - sigc::signal NameChanged; -protected: - Session& _session; - std::string _name; + protected: + PBD::Property _name; }; } // namespace ARDOUR