Conditionally compile out the 'single threaded' stuff. It doesn't work very well...
[synfig.git] / synfig-studio / trunk / src / gtkmm / canvasview.cpp
index 8ba09bc..84b0f45 100644 (file)
@@ -1324,13 +1324,13 @@ CanvasView::init_menus()
        {
                Glib::RefPtr<Gtk::ToggleAction> action;
 
-               action = Gtk::ToggleAction::create("toggle-grid-show", _("Show Grid"));
-               action->set_active(work_area->grid_status());
-               action_group->add(action, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid));
+               grid_show_toggle = Gtk::ToggleAction::create("toggle-grid-show", _("Show Grid"));
+               grid_show_toggle->set_active(work_area->grid_status());
+               action_group->add(grid_show_toggle, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid));
 
-               action = Gtk::ToggleAction::create("toggle-grid-snap", _("Snap to Grid"));
-               action->set_active(work_area->get_grid_snap());
-               action_group->add(action, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid_snap));
+               grid_snap_toggle = Gtk::ToggleAction::create("toggle-grid-snap", _("Snap to Grid"));
+               grid_snap_toggle->set_active(work_area->get_grid_snap());
+               action_group->add(grid_snap_toggle, sigc::mem_fun(*work_area, &studio::WorkArea::toggle_grid_snap));
 
                action = Gtk::ToggleAction::create("toggle-guide-show", _("Show Guides"));
                action->set_active(work_area->get_show_guides());
@@ -1391,22 +1391,26 @@ CanvasView::init_menus()
 
        }
 
-#define DUCK_MASK(lower,upper,string)  \
-       duck_mask_##lower=Gtk::ToggleAction::create("mask-" #lower "-ducks", string); \
-       duck_mask_##lower->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_##upper)); \
-       action_group->add( duck_mask_##lower, \
-               sigc::bind( \
-                       sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask), \
-                       Duck::TYPE_##upper \
-               ) \
-       )
-       DUCK_MASK(position,POSITION,_("Show Position Ducks"));
-       DUCK_MASK(tangent,TANGENT,_("Show Tangent Ducks"));
-       DUCK_MASK(vertex,VERTEX,_("Show Vertex Ducks"));
-       DUCK_MASK(radius,RADIUS,_("Show Radius Ducks"));
-       DUCK_MASK(width,WIDTH,_("Show Width Ducks"));
-       DUCK_MASK(angle,ANGLE,_("Show Angle Ducks"));
+       {
+               Glib::RefPtr<Gtk::ToggleAction> action;
+
+#define DUCK_MASK(lower,upper,string)                                                                                          \
+               action=Gtk::ToggleAction::create("mask-" #lower "-ducks", string);                      \
+               action->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_##upper));      \
+               action_group->add(action,                                                                                                       \
+                       sigc::bind(                                                                                                                             \
+                               sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),            \
+                               Duck::TYPE_##upper))
+
+               DUCK_MASK(position,POSITION,_("Show Position Ducks"));
+               DUCK_MASK(tangent,TANGENT,_("Show Tangent Ducks"));
+               DUCK_MASK(vertex,VERTEX,_("Show Vertex Ducks"));
+               DUCK_MASK(radius,RADIUS,_("Show Radius Ducks"));
+               DUCK_MASK(width,WIDTH,_("Show Width Ducks"));
+               DUCK_MASK(angle,ANGLE,_("Show Angle Ducks"));
+
 #undef DUCK_MASK
+       }
 
        add_accel_group(App::ui_manager()->get_accel_group());
 
@@ -2000,6 +2004,7 @@ static bool _close_instance(etl::handle<Instance> instance)
 bool
 CanvasView::close_instance()
 {
+#ifdef SINGLE_THREADED
        if (get_work_area()->get_updating())
        {
                get_work_area()->stop_updating(true); // stop and mark as cancelled
@@ -2010,6 +2015,7 @@ CanvasView::close_instance()
                        250);
        }
        else
+#endif
                Glib::signal_timeout().connect(
                        sigc::bind(sigc::ptr_fun(_close_instance),
                                           (etl::handle<Instance>)get_instance()),
@@ -2031,14 +2037,20 @@ CanvasView::update_title()
 {
        string title;
 
-       if(get_instance()->synfigapp::Instance::get_action_count())
-               title="*";
-       title+=etl::basename(get_instance()->get_file_name())
-               +" : ";
-       if(get_canvas()->get_name().empty())
-               title+='"'+get_canvas()->get_id()+'"';
-       else
-               title+='"'+get_canvas()->get_name()+'"';
+       title = strprintf("%s%s\"%s\"",
+                                         (
+                                                 get_instance()->get_action_count()
+                                                 ? "*"
+                                                 : ""
+                                         ), (
+                                                 get_instance()->has_real_filename()
+                                                 ? (etl::basename(get_instance()->get_file_name()) + " : ").c_str()
+                                                 : ""
+                                         ), (
+                                                 get_canvas()->get_name().empty()
+                                                 ? get_canvas()->get_id().c_str()
+                                                 : get_canvas()->get_name().c_str()
+                                         ));
 
        if(get_instance()->synfigapp::Instance::in_repository())
        {
@@ -3439,43 +3451,6 @@ CanvasView::toggle_duck_mask(Duckmatic::Type type)
 {
        bool is_currently_on(work_area->get_type_mask()&type);
 
-       switch(type)
-       {
-       case Duck::TYPE_POSITION:
-               if(duck_mask_position)
-                       duck_mask_position->set_active(!is_currently_on);
-               break;
-
-       case Duck::TYPE_VERTEX:
-               if(duck_mask_vertex)
-                       duck_mask_vertex->set_active(!is_currently_on);
-               break;
-
-       case Duck::TYPE_TANGENT:
-               if(duck_mask_tangent)
-                       duck_mask_tangent->set_active(!is_currently_on);
-               break;
-
-       case Duck::TYPE_RADIUS:
-               if(duck_mask_radius)
-                       duck_mask_radius->set_active(!is_currently_on);
-               break;
-
-       case Duck::TYPE_WIDTH:
-               if(duck_mask_width)
-                       duck_mask_width->set_active(!is_currently_on);
-               break;
-
-       case Duck::TYPE_ANGLE:
-               if(duck_mask_angle)
-                       duck_mask_angle->set_active(!is_currently_on);
-               break;
-
-       default:
-               synfig::warning("CanvasView::toggle_duck_mask():Unknown duck type!");
-               break;
-       }
-
        if(is_currently_on)
                work_area->set_type_mask(work_area->get_type_mask()-type);
        else