00001
00021
00022
00023
00024
00025 #ifndef __SYNFIG_STUDIO_KEYFRAMETREE_H
00026 #define __SYNFIG_STUDIO_KEYFRAMETREE_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 "keyframetreestore.h"
00035 #include <synfig/keyframe.h>
00036
00037
00038
00039
00040
00041
00042
00043 namespace studio {
00044
00045 class CellRenderer_Time;
00046
00047 class KeyframeTree : public Gtk::TreeView
00048 {
00049
00050
00051
00052
00053 public:
00054
00055 enum ColumnID
00056 {
00057 COLUMNID_TIME,
00058 COLUMNID_DESCRIPTION,
00059 COLUMNID_JUMP,
00060
00061 COLUMNID_END
00062 };
00063
00064
00065
00066
00067
00068 public:
00069
00070 KeyframeTreeStore::Model model;
00071
00072
00073
00074
00075
00076 private:
00077
00078 Glib::RefPtr<KeyframeTreeStore> keyframe_tree_store_;
00079
00080 CellRenderer_Time *cell_renderer_time;
00081
00082 CellRenderer_Time *cell_renderer_time_delta;
00083
00084 Gtk::CellRendererText *cell_renderer_description;
00085
00086 sigc::signal<void,synfig::Keyframe> signal_edited_;
00087
00088 sigc::signal<void,synfig::Keyframe,synfig::Time> signal_edited_time_;
00089
00090 sigc::signal<void,synfig::Keyframe,synfig::String> signal_edited_description_;
00091
00092 sigc::signal<void, int, Gtk::TreeRow, ColumnID> signal_user_click_;
00093
00094 bool editable_;
00095
00096
00097
00098
00099
00100 private:
00101
00102
00103
00104
00105
00106 private:
00107
00108 void on_edited_time(const Glib::ustring&path_string,synfig::Time time);
00109
00110 void on_edited_time_delta(const Glib::ustring&path_string,synfig::Time time);
00111
00112 void on_edited_description(const Glib::ustring&path_string,const Glib::ustring &description);
00113
00114 bool on_event(GdkEvent *event);
00115
00116 void on_rend_desc_changed();
00117
00118
00119
00120
00121
00122 public:
00123
00124 KeyframeTree();
00125 ~KeyframeTree();
00126
00127 void set_model(Glib::RefPtr<KeyframeTreeStore> keyframe_tree_store_);
00128
00129 void set_editable(bool x=true);
00130
00131 bool get_editable()const { return editable_; }
00132
00134 sigc::signal<void,synfig::Keyframe>& signal_edited() { return signal_edited_; }
00135
00137 sigc::signal<void,synfig::Keyframe,synfig::Time>& signal_edited_time() { return signal_edited_time_; }
00138
00140 sigc::signal<void,synfig::Keyframe,synfig::String>& signal_edited_description() { return signal_edited_description_; }
00141
00142 sigc::signal<void,int, Gtk::TreeRow, ColumnID>& signal_user_click() { return signal_user_click_; }
00143 };
00144
00145 };
00146
00147
00148
00149 #endif