1 /* === S Y N F I G ========================================================= */
2 /*! \file dock_keyframes.cpp
3 ** \brief Template File
5 ** $Id: dock_keyframes.cpp,v 1.3 2005/01/13 20:23:01 darco Exp $
8 ** Copyright (c) 2002 Robert B. Quattlebaum Jr.
10 ** This software and associated documentation
11 ** are CONFIDENTIAL and PROPRIETARY property of
12 ** the above-mentioned copyright holder.
14 ** You may not copy, print, publish, or in any
15 ** other way distribute this software without
16 ** a prior written agreement with
17 ** the copyright holder.
20 /* ========================================================================= */
22 /* === H E A D E R S ======================================================= */
31 #include "dock_keyframes.h"
34 #include <gtkmm/scrolledwindow.h>
37 #include <sigc++/signal.h>
38 #include <sigc++/hide.h>
39 #include <sigc++/slot.h>
40 #include "keyframetreestore.h"
41 #include "keyframetree.h"
42 #include "canvasview.h"
43 #include "keyframeactionmanager.h"
47 /* === U S I N G =========================================================== */
51 using namespace synfig;
52 using namespace studio;
54 /* === M A C R O S ========================================================= */
56 /* === G L O B A L S ======================================================= */
58 /* === P R O C E D U R E S ================================================= */
60 /* === M E T H O D S ======================================================= */
62 Dock_Keyframes::Dock_Keyframes():
63 Dock_CanvasSpecific("keyframes",_("Keyframes"),Gtk::StockID("synfig-keyframes")),
64 action_group(Gtk::ActionGroup::create()),
65 keyframe_action_manager(new KeyframeActionManager)
67 keyframe_action_manager->set_ui_manager(App::ui_manager());
68 keyframe_action_manager->signal_show_keyframe_properties().connect(
69 sigc::mem_fun(*this,&Dock_Keyframes::show_keyframe_properties)
72 Gtk::StockID("gtk-add"),
73 _("Inserts a Keyframe at the current time")
74 )->signal_clicked().connect(
77 &Dock_Keyframes::add_keyframe_pressed
82 Gtk::StockID("synfig-duplicate"),
83 _("Duplicates the selected keyframe at the current time")
84 )->signal_clicked().connect(
87 &Dock_Keyframes::duplicate_keyframe_pressed
92 Gtk::StockID("gtk-delete"),
93 _("Deletes the selected Keyframe")
94 )->signal_clicked().connect(
97 &Dock_Keyframes::delete_keyframe_pressed
101 Glib::ustring ui_info =
103 " <toolbar action='toolbar-keyframe'>"
104 " <toolitem action='action-keyframe_add' />"
105 " <toolitem action='action-keyframe_duplicate' />"
106 " <toolitem action='action-keyframe_remove' />"
107 " <toolitem action='keyframe-properties' />"
112 App::ui_manager()->add_ui_from_string(ui_info);
114 set_toolbar(*dynamic_cast<Gtk::Toolbar*>(App::ui_manager()->get_widget("/toolbar-keyframe")));
117 Dock_Keyframes::~Dock_Keyframes()
122 Dock_Keyframes::show_keyframe_properties()
124 if(get_canvas_view())
125 get_canvas_view()->show_keyframe_dialog();
130 Dock_Keyframes::add_keyframe_pressed()
132 if(get_canvas_view())
133 get_canvas_view()->on_keyframe_add_pressed();
137 Dock_Keyframes::duplicate_keyframe_pressed()
139 if(get_canvas_view())
140 get_canvas_view()->on_keyframe_duplicate_pressed();
144 Dock_Keyframes::delete_keyframe_pressed()
146 if(get_canvas_view())
147 get_canvas_view()->on_keyframe_remove_pressed();
152 Dock_Keyframes::init_canvas_view_vfunc(etl::loose_handle<CanvasView> canvas_view)
154 Glib::RefPtr<KeyframeTreeStore> keyframe_tree_store;
155 keyframe_tree_store=KeyframeTreeStore::create(canvas_view->canvas_interface());
157 KeyframeTree* keyframe_tree(new KeyframeTree());
158 keyframe_tree->set_model(keyframe_tree_store);
159 keyframe_tree->set_editable(true);
161 canvas_view->set_tree_model(get_name(),keyframe_tree_store);
162 canvas_view->set_ext_widget(get_name(),keyframe_tree);
166 Dock_Keyframes::changed_canvas_view_vfunc(etl::loose_handle<CanvasView> canvas_view)
170 Gtk::Widget* tree_view(canvas_view->get_ext_widget(get_name()));
175 keyframe_action_manager->set_keyframe_tree(dynamic_cast<KeyframeTree*>(canvas_view->get_ext_widget(get_name())));
176 keyframe_action_manager->set_canvas_interface(canvas_view->canvas_interface());
177 keyframe_action_manager->refresh();
183 keyframe_action_manager->set_keyframe_tree(0);
184 keyframe_action_manager->set_canvas_interface(0);
185 keyframe_action_manager->refresh();