#include <synfig/valuenode_dynamiclist.h>
#include <synfig/valuenode_twotone.h>
#include <synfig/valuenode_stripes.h>
+#include <synfig/valuenode_blinecalcvertex.h>
+#include <synfig/valuenode_bline.h>
#include <synfig/layer.h>
#include <synfigapp/uimanager.h>
{
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());
bool
CanvasView::close_instance()
{
+#ifdef SINGLE_THREADED
if (get_work_area()->get_updating())
{
get_work_area()->stop_updating(true); // stop and mark as cancelled
250);
}
else
+#endif
Glib::signal_timeout().connect(
sigc::bind(sigc::ptr_fun(_close_instance),
(etl::handle<Instance>)get_instance()),
{
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())
{
}
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());
}
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();
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();
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: