00001
00021
00022
00023
00024
00025 #ifndef __SYNFIG_STUDIO_LAYERGROUPTREE_H
00026 #define __SYNFIG_STUDIO_LAYERGROUPTREE_H
00027
00028
00029
00030 #include <gtkmm/treeview.h>
00031 #include <gtkmm/treestore.h>
00032 #include <synfigapp/canvasinterface.h>
00033 #include <synfigapp/value_desc.h>
00034 #include "layergrouptreestore.h"
00035
00036
00037
00038
00039
00040
00041
00042 namespace synfig { class Layer; }
00043
00044 namespace studio {
00045
00046 class LayerGroupTree : public Gtk::TreeView
00047 {
00048
00049
00050
00051
00052 public:
00053
00054 typedef std::list<synfig::Layer::Handle> LayerList;
00055
00056
00057
00058
00059
00060 public:
00061
00062 LayerGroupTreeStore::Model model;
00063
00064
00065
00066
00067
00068 private:
00069
00070 Glib::RefPtr<LayerGroupTreeStore> layer_group_tree_store_;
00071
00072 Gtk::CellRendererText *cell_renderer_description;
00073
00074 bool editable_;
00075
00076
00077 sigc::signal<void,etl::handle<synfig::Layer> > signal_popup_layer_menu_;
00078
00079
00080 Gtk::TreeView::Column* label_column;
00081
00082
00083
00084
00085
00086 private:
00087
00088
00089
00090
00091
00092 private:
00093
00094 bool on_event(GdkEvent *event);
00095
00096
00097
00098
00099
00100 public:
00101
00102 LayerGroupTree();
00103 ~LayerGroupTree();
00104 void set_cursor(const Gtk::TreeModel::Path& path, bool start_editing=false);
00105
00106 Glib::RefPtr<LayerGroupTreeStore> get_model() { return layer_group_tree_store_; }
00107
00108 sigc::signal<void,etl::handle<synfig::Layer> >& signal_popup_layer_menu() { return signal_popup_layer_menu_; }
00109
00110
00111
00112 void set_model(Glib::RefPtr<LayerGroupTreeStore> layer_group_tree_store_);
00113
00114 void set_editable(bool x=true);
00115
00116 bool get_editable()const { return editable_; }
00117
00118 std::list<synfig::String> get_selected_groups()const;
00119
00120 LayerList get_selected_layers()const;
00121 };
00122
00123 };
00124
00125
00126
00127 #endif