Author: Carlos Lopez <genet...@gmail.com>
Date:   Fri Nov 25 12:44:02 2011 +0100

Add a signal handler on Canvas View to update the action menus and toggle 
buttons when meta data changes.

---

 synfig-studio/src/gui/canvasview.cpp |   34 ++++++++++++++++++++++++++++++++++
 synfig-studio/src/gui/canvasview.h   |    2 ++
 synfig-studio/src/gui/workarea.cpp   |    2 +-
 3 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/synfig-studio/src/gui/canvasview.cpp 
b/synfig-studio/src/gui/canvasview.cpp
index d53417c..162be65 100644
--- a/synfig-studio/src/gui/canvasview.cpp
+++ b/synfig-studio/src/gui/canvasview.cpp
@@ -789,6 +789,7 @@ CanvasView::CanvasView(etl::loose_handle<Instance> 
instance,etl::handle<synfigap
 
        
work_area->signal_layer_selected().connect(sigc::mem_fun(*this,&studio::CanvasView::workarea_layer_selected));
        
work_area->signal_input_device_changed().connect(sigc::mem_fun(*this,&studio::CanvasView::on_input_device_changed));
+       
work_area->signal_meta_data_changed().connect(sigc::mem_fun(*this,&studio::CanvasView::on_meta_data_changed));
 
        canvas_interface()->signal_canvas_added().connect(
                sigc::hide(
@@ -3757,6 +3758,39 @@ CanvasView::toggle_duck_mask(Duckmatic::Type type)
 }
 
 void
+CanvasView::on_meta_data_changed()
+{
+       // update the buttons and actions that are associated
+       toggling_show_grid=true;
+       toggling_snap_grid=true;
+       toggling_onion_skin=true;
+       try
+       {
+               // Update the toggle ducks actions
+               Glib::RefPtr<Gtk::ToggleAction> action;
+               action = 
Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic(action_group->get_action("toggle-onion-skin"));
+               action->set_active((bool)(work_area->get_onion_skin()));
+               action = 
Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic(action_group->get_action("toggle-grid-show"));
+               action->set_active((bool)(work_area->grid_status()));
+               action = 
Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic(action_group->get_action("toggle-grid-snap"));
+               action->set_active((bool)(work_area->get_grid_snap()));
+               // Update the toggle buttons
+               onion_skin->set_active(work_area->get_onion_skin());
+               snap_grid->set_active(work_area->get_grid_snap());
+               show_grid->set_active(work_area->grid_status());
+       }
+       catch(...)
+       {
+               toggling_show_grid=false;
+               toggling_snap_grid=false;
+               toggling_onion_skin=false;
+       }
+       toggling_show_grid=false;
+       toggling_snap_grid=false;
+       toggling_onion_skin=false;
+}
+
+void
 CanvasView::image_import()
 {
        // String filename(dirname(get_canvas()->get_file_name()));
diff --git a/synfig-studio/src/gui/canvasview.h 
b/synfig-studio/src/gui/canvasview.h
index d504b32..30cb02f 100644
--- a/synfig-studio/src/gui/canvasview.h
+++ b/synfig-studio/src/gui/canvasview.h
@@ -714,6 +714,8 @@ private:
 
        void on_play_stop_pressed();
 
+       void on_meta_data_changed();
+
 protected:
        bool close_instance_when_safe();
        bool on_delete_event(GdkEventAny* event);
diff --git a/synfig-studio/src/gui/workarea.cpp 
b/synfig-studio/src/gui/workarea.cpp
index 327bb63..f21b2a3 100644
--- a/synfig-studio/src/gui/workarea.cpp
+++ b/synfig-studio/src/gui/workarea.cpp
@@ -1022,6 +1022,7 @@ WorkArea::load_meta_data()
 
        meta_data_lock=false;
        queue_draw();
+       signal_meta_data_changed()();
 }
 
 void
@@ -1032,7 +1033,6 @@ WorkArea::set_onion_skin(bool x)
        onion_skin=x;
        save_meta_data();
        queue_render_preview();
-       signal_onion_skin_changed()();
 }
 
 bool


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Synfig-devl mailing list
Synfig-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to