Merge branch 'genete_master'
[synfig.git] / synfig-studio / trunk / src / gtkmm / canvasview.cpp
index f12fcf0..72a3ed6 100644 (file)
@@ -99,6 +99,7 @@
 #include "preview.h"
 #include "audiocontainer.h"
 #include "widget_timeslider.h"
+#include "framedial.h"
 
 #include <synfigapp/main.h>
 #include <synfigapp/inputdevice.h>
@@ -941,8 +942,6 @@ CanvasView::create_time_bar()
        keyframebutton->signal_clicked().connect(sigc::mem_fun(*this, &studio::CanvasView::on_keyframe_button_pressed));
        keyframebutton->show();
 
-       Gtk::Table *table= manage(new class Gtk::Table(2, 3, false));
-
        //setup the audio display
        disp_audio->set_size_request(-1,32); //disp_audio->show();
        disp_audio->set_time_adjustment(&time_adjustment());
@@ -956,14 +955,32 @@ CanvasView::create_time_bar()
                sigc::mem_fun(*audio,&AudioContainer::stop_scrubbing)
        );
 
-       table->attach(*manage(disp_audio), 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
-       table->attach(*timeslider, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK, 0, 0);
-       table->attach(*time_window_scroll, 0, 1, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK, 0, 0);
+       FrameDial *framedial = manage(new class FrameDial());
+       framedial->signal_seek_begin().connect(
+                       sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_time), Time::begin())
+       );
+       framedial->signal_seek_prev_frame().connect(
+                       sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_frame), -1)
+       );
+       framedial->signal_seek_next_frame().connect(
+                       sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_frame), 1)
+       );
+       framedial->signal_seek_end().connect(
+                       sigc::bind(sigc::mem_fun(*canvas_interface().get(), &synfigapp::CanvasInterface::seek_time), Time::end())
+       );
+       framedial->show();
+
+       Gtk::Table *table = manage(new class Gtk::Table(4, 3, false));
+       timebar = table;
 
-       table->attach(*animatebutton, 1, 2, 0, 3, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
-       table->attach(*keyframebutton, 2, 3, 0, 3, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
-       timebar=table;
+       table->attach(*manage(disp_audio), 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
+       table->attach(*framedial, 0, 1, 1, 2,Gtk::SHRINK, Gtk::SHRINK);
+       table->attach(*timeslider, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
+       table->attach(*time_window_scroll, 1, 2, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
+       table->attach(*animatebutton, 2, 3, 0, 3, Gtk::SHRINK, Gtk::SHRINK);
+       table->attach(*keyframebutton, 3, 4, 0, 3, Gtk::SHRINK, Gtk::SHRINK);
        table->show();
+
        return table;
 }
 
@@ -2173,7 +2190,7 @@ CanvasView::build_tables()
 void
 CanvasView::on_layer_toggle(synfig::Layer::Handle layer)
 {
-       synfigapp::Action::Handle action(synfigapp::Action::create("layer_activate"));
+       synfigapp::Action::Handle action(synfigapp::Action::create("LayerActivate"));
        assert(action);
 
        if(!action)
@@ -2845,9 +2862,9 @@ CanvasView::rebuild_ducks_layer_(synfig::TransformStack& transform_stack, synfig
                        Vector focus(layer->get_param("focus").get(Vector()));
 
                        if(!scale.is_equal_to(Vector(1,1)))
-                               transform_stack.push(new Transform_Scale(scale,origin+focus));
+                               transform_stack.push(new Transform_Scale(layer->get_guid(), scale,origin+focus));
                        if(!origin.is_equal_to(Vector(0,0)))
-                               transform_stack.push(new Transform_Translate(origin));
+                               transform_stack.push(new Transform_Translate(layer->get_guid(), origin));
 
                        rebuild_ducks_layer_(transform_stack,child_canvas,selected_list);
 
@@ -3195,7 +3212,7 @@ set_waypoint_model(std::set<synfig::Waypoint, std::less<UniqueID> > waypoints,
                Waypoint waypoint(*iter);
                waypoint.apply_model(model);
 
-               synfigapp::Action::Handle action(synfigapp::Action::create("waypoint_set"));
+               synfigapp::Action::Handle action(synfigapp::Action::create("WaypointSet"));
 
                assert(action);
 
@@ -3371,7 +3388,7 @@ CanvasView::on_waypoint_changed()
        param_list.add("waypoint",waypoint_dialog.get_waypoint());
 //     param_list.add("time",canvas_interface()->get_time());
 
-       get_instance()->process_action("waypoint_set_smart", param_list);
+       get_instance()->process_action("WaypointSetSmart", param_list);
 }
 
 void
@@ -3384,7 +3401,7 @@ CanvasView::on_waypoint_delete()
        param_list.add("waypoint",waypoint_dialog.get_waypoint());
 //     param_list.add("time",canvas_interface()->get_time());
 
-       get_instance()->process_action("waypoint_remove", param_list);
+       get_instance()->process_action("WaypointRemove", param_list);
 }
 
 void
@@ -3408,7 +3425,7 @@ CanvasView::on_drop_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& con
                        if(!layer->set_param("text",ValueBase(selection_data)))
                                break;
 
-                       synfigapp::Action::Handle       action(synfigapp::Action::create("layer_add"));
+                       synfigapp::Action::Handle       action(synfigapp::Action::create("LayerAdd"));
 
                        assert(action);
                        if(!action)
@@ -3493,7 +3510,7 @@ CanvasView::on_drop_drag_data_received(const Glib::RefPtr<Gdk::DragContext>& con
 void
 CanvasView::on_keyframe_add_pressed()
 {
-       synfigapp::Action::Handle action(synfigapp::Action::create("keyframe_add"));
+       synfigapp::Action::Handle action(synfigapp::Action::create("KeyframeAdd"));
 
        if(!action)
        {
@@ -3521,7 +3538,7 @@ CanvasView::on_keyframe_duplicate_pressed()
        }
        keyframe=row[model.keyframe];
 
-       synfigapp::Action::Handle action(synfigapp::Action::create("keyframe_duplicate"));
+       synfigapp::Action::Handle action(synfigapp::Action::create("KeyframeDuplicate"));
 
        if(!action)
        {
@@ -3550,7 +3567,7 @@ CanvasView::on_keyframe_remove_pressed()
        }
        keyframe=row[model.keyframe];
 
-       synfigapp::Action::Handle action(synfigapp::Action::create("keyframe_remove"));
+       synfigapp::Action::Handle action(synfigapp::Action::create("KeyframeRemove"));
 
        if(!action)
        {