synfig-studio  1.0.3
keyframetree.h
Go to the documentation of this file.
1 /* === S Y N F I G ========================================================= */
21 /* ========================================================================= */
22 
23 /* === S T A R T =========================================================== */
24 
25 #ifndef __SYNFIG_STUDIO_KEYFRAMETREE_H
26 #define __SYNFIG_STUDIO_KEYFRAMETREE_H
27 
28 /* === H E A D E R S ======================================================= */
29 
30 #include <gtkmm/treeview.h>
31 #include <gtkmm/treestore.h>
33 #include <synfigapp/value_desc.h>
35 #include <synfig/keyframe.h>
36 
37 /* === M A C R O S ========================================================= */
38 
39 /* === T Y P E D E F S ===================================================== */
40 
41 /* === C L A S S E S & S T R U C T S ======================================= */
42 
43 namespace studio {
44 
45 class CellRenderer_Time;
46 
47 class KeyframeTree : public Gtk::TreeView
48 {
49  /*
50  -- ** -- P U B L I C T Y P E S ---------------------------------------------
51  */
52 
53 public:
54 
55  enum ColumnID
56  {
60 
62  };
63 
64  /*
65  -- ** -- P U B L I C D A T A ------------------------------------------------
66  */
67 
68 public:
69 
71  synfig::Keyframe selected_kf;
72 
73 
74  /*
75  -- ** -- P R I V A T E D A T A ---------------------------------------------
76  */
77 
78 private:
79 
80  Glib::RefPtr<KeyframeTreeStore> keyframe_tree_store_;
81 
82  CellRenderer_Time *cell_renderer_time;
83 
84  CellRenderer_Time *cell_renderer_time_delta;
85 
86  Gtk::CellRendererText *cell_renderer_description;
87 
88  sigc::signal<void,synfig::Keyframe> signal_edited_;
89 
90  sigc::signal<void,synfig::Keyframe,synfig::Time> signal_edited_time_;
91 
92  sigc::signal<void,synfig::Keyframe,synfig::String> signal_edited_description_;
93 
94  sigc::signal<void, int, Gtk::TreeRow, ColumnID> signal_user_click_;
95 
96  bool editable_;
97 
98  bool send_selection;
99 
100  /*
101  -- ** -- P R I V A T E M E T H O D S ---------------------------------------
102  */
103 
104 private:
105 
106  /*
107  -- ** -- S I G N A L T E R M I N A L S -------------------------------------
108  */
109 
110 private:
111 
112  void on_keyframe_toggle(const Glib::ustring& path_string);
113 
114  void on_edited_time(const Glib::ustring&path_string,synfig::Time time);
115 
116  void on_edited_time_delta(const Glib::ustring&path_string,synfig::Time time);
117 
118  void on_edited_description(const Glib::ustring&path_string,const Glib::ustring &description);
119 
120  bool on_event(GdkEvent *event);
121 
122  void on_rend_desc_changed();
123 
126  void on_selection_changed();
127 
129  void on_keyframe_selected(synfig::Keyframe, void* emitter);
130  sigc::connection keyframeselected;
131 
132  /*
133  -- ** -- P U B L I C M E T H O D S -----------------------------------------
134  */
135 
136 public:
137 
138  KeyframeTree();
139  ~KeyframeTree();
141  void set_model(Glib::RefPtr<KeyframeTreeStore> keyframe_tree_store_);
142 
143  void set_editable(bool x=true);
144 
145  bool get_editable()const { return editable_; }
146 
148  sigc::signal<void,synfig::Keyframe>& signal_edited() { return signal_edited_; }
149 
151  sigc::signal<void,synfig::Keyframe,synfig::Time>& signal_edited_time() { return signal_edited_time_; }
152 
154  sigc::signal<void,synfig::Keyframe,synfig::String>& signal_edited_description() { return signal_edited_description_; }
155 
156  sigc::signal<void,int, Gtk::TreeRow, ColumnID>& signal_user_click() { return signal_user_click_; }
157 
158  /*
159  -- ** -- P R O T E C T E D M E T H O D S ---------------------------------------
160  */
161 
162  protected:
163 
164 }; // END of KeyframeTree
165 
166 }; // END of namespace studio
167 
168 /* === E N D =============================================================== */
169 
170 #endif