X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fcanvasview.cpp;h=8c0f3b72f085ce9902efbeb43682bdea93ae2f5f;hb=f444974043946c071373c9caf7e7c85f9e1f9354;hp=3782afdb3a112ece27e4f06f24ad8665bb090419;hpb=4cbd49675829104fbe062066427be2519e62fbf6;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/canvasview.cpp b/synfig-studio/trunk/src/gtkmm/canvasview.cpp index 3782afd..8c0f3b7 100644 --- a/synfig-studio/trunk/src/gtkmm/canvasview.cpp +++ b/synfig-studio/trunk/src/gtkmm/canvasview.cpp @@ -53,6 +53,8 @@ #include #include #include +#include +#include #include #include @@ -1324,13 +1326,13 @@ CanvasView::init_menus() { Glib::RefPtr 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()); @@ -2004,6 +2006,7 @@ static bool _close_instance(etl::handle 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 @@ -2014,6 +2017,7 @@ CanvasView::close_instance() 250); } else +#endif Glib::signal_timeout().connect( sigc::bind(sigc::ptr_fun(_close_instance), (etl::handle)get_instance()), @@ -2035,14 +2039,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()) { @@ -2151,10 +2161,10 @@ CanvasView::on_layer_toggle(synfig::Layer::Handle layer) } void -CanvasView::popup_param_menu(synfigapp::ValueDesc value_desc, float location) +CanvasView::popup_param_menu(synfigapp::ValueDesc value_desc, float location, bool bezier) { parammenu.items().clear(); - get_instance()->make_param_menu(¶mmenu,get_canvas(),value_desc,location); + get_instance()->make_param_menu(¶mmenu,get_canvas(),value_desc,location,bezier); parammenu.popup(3,gtk_get_current_event_time()); } @@ -2412,6 +2422,7 @@ CanvasView::time_zoom_in() time_window_adjustment().set_page_size(time_window_adjustment().get_page_size()*0.75); if (time_window_adjustment().get_page_size() < min_page_size) time_window_adjustment().set_page_size(min_page_size); + time_window_adjustment().set_page_increment(time_window_adjustment().get_page_size()); time_window_adjustment().changed(); refresh_time_window(); @@ -2426,6 +2437,7 @@ CanvasView::time_zoom_out() time_window_adjustment().set_page_size(time_window_adjustment().get_page_size()/0.75); if (time_window_adjustment().get_page_size() > length) time_window_adjustment().set_page_size(length); + time_window_adjustment().set_page_increment(time_window_adjustment().get_page_size()); time_window_adjustment().changed(); refresh_time_window(); @@ -2573,6 +2585,20 @@ CanvasView::duck_change_param(const synfig::Point &value,synfig::Layer::Handle l bool CanvasView::on_duck_changed(const synfig::Point &value,const synfigapp::ValueDesc& value_desc) { + if( ValueNode_BLineCalcVertex::Handle bline_vertex = + ValueNode_BLineCalcVertex::Handle::cast_dynamic(value_desc.get_value_node()) + ) + { + Real radius = 0.0; + Real amount = synfig::find_closest_point( + ( *bline_vertex->get_link(bline_vertex->get_link_index_from_name("bline")) )( get_time() ), + value, + radius, + ( *bline_vertex->get_link(bline_vertex->get_link_index_from_name("loop")) )( get_time() ).get(bool()) + ); + return canvas_interface()->change_value(synfigapp::ValueDesc(bline_vertex,bline_vertex->get_link_index_from_name("amount")), amount); + } + switch(value_desc.get_value_type()) { case ValueBase::TYPE_REAL: