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