00001
00021
00022
00023
00024
00025 #ifndef __SYNFIG_DOCKMANAGER_H
00026 #define __SYNFIG_DOCKMANAGER_H
00027
00028
00029
00030 #include <vector>
00031 #include <list>
00032 #include <synfig/string.h>
00033 #include <sigc++/signal.h>
00034 #include <sigc++/object.h>
00035 #include <ETL/smart_ptr>
00036
00037
00038
00039
00040
00041
00042
00043 namespace studio {
00044
00045 class Dockable;
00046 class DockDialog;
00047 class DockSettings;
00048
00049 class DockManager : public sigc::trackable
00050 {
00051 friend class Dockable;
00052 friend class DockDialog;
00053 friend class DockSettings;
00054
00055 std::list<Dockable*> dockable_list_;
00056 std::list<DockDialog*> dock_dialog_list_;
00057
00058 sigc::signal<void,Dockable*> signal_dockable_registered_;
00059
00060 etl::smart_ptr<DockSettings> dock_settings;
00061
00062 public:
00063 DockManager();
00064 ~DockManager();
00065
00066 DockDialog& find_dock_dialog(int id);
00067 const DockDialog& find_dock_dialog(int id)const;
00068
00069 sigc::signal<void,Dockable*>& signal_dockable_registered() { return signal_dockable_registered_; }
00070
00071 void register_dockable(Dockable& x);
00072 bool unregister_dockable(Dockable& x);
00073 Dockable& find_dockable(const synfig::String& x);
00074 void present(synfig::String x);
00075
00076 };
00077
00078 };
00079
00080
00081
00082 #endif