X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fduckmatic.cpp;h=d6cc01224d193c9bfd93aaea51a8773b93c60b11;hb=590c258945a3865f48afa0a0f9d9b90cc35e548c;hp=072f0655d49b4da192c8e6d133b892a17d9e1a19;hpb=d2e1ae556ea6e51fc3b75764202a2243db24fcf0;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/duckmatic.cpp b/synfig-studio/trunk/src/gtkmm/duckmatic.cpp index 072f065..d6cc012 100644 --- a/synfig-studio/trunk/src/gtkmm/duckmatic.cpp +++ b/synfig-studio/trunk/src/gtkmm/duckmatic.cpp @@ -56,6 +56,8 @@ #include "onemoment.h" +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -97,7 +99,12 @@ Duckmatic::Duckmatic(): Duckmatic::~Duckmatic() { clear_ducks(); - //synfig::info("Duckmatic::~Duckmatic(): Deleted. Duck Count=%d",Duck::duck_count); + + if (Duck::duck_count) + synfig::error("%d ducks not yet deleted!", Duck::duck_count); + + if (getenv("SYNFIG_DEBUG_DESTRUCTORS")) + synfig::info("Duckmatic::~Duckmatic(): Deleted"); } void @@ -406,7 +413,7 @@ Duckmatic::end_duck_drag() } Point -Duckmatic::snap_point_to_grid(const Point& x, float radius)const +Duckmatic::snap_point_to_grid(const synfig::Point& x, float radius)const { Point ret(x); @@ -532,10 +539,21 @@ Duckmatic::signal_edited_selected_ducks() // Go ahead and call everyone's signals for(iter=ducks.begin();iter!=ducks.end();++iter) { - if(!(*iter)->signal_edited()((*iter)->get_point())) + if ((*iter)->get_type() == Duck::TYPE_ANGLE) + { + if(!(*iter)->signal_edited_angle()((*iter)->get_rotations())) + { + selected_ducks=old_set; + throw String("Bad edit"); + } + } + else { - selected_ducks=old_set; - throw String("Bad edit"); + if(!(*iter)->signal_edited()((*iter)->get_point())) + { + selected_ducks=old_set; + throw String("Bad edit"); + } } } selected_ducks=old_set; @@ -804,6 +822,7 @@ Duckmatic::find_bezier(synfig::Point pos, synfig::Real scale, synfig::Real radiu bool Duckmatic::save_sketch(const synfig::String& filename)const { + ChangeLocale change_locale(LC_NUMERIC, "C"); std::ofstream file(filename.c_str()); if(!file)return false; @@ -837,6 +856,7 @@ Duckmatic::save_sketch(const synfig::String& filename)const bool Duckmatic::load_sketch(const synfig::String& filename) { + ChangeLocale change_locale(LC_NUMERIC, "C"); std::ifstream file(filename.c_str()); if(!file) @@ -1005,7 +1025,7 @@ Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handleset_scalar(param_desc->get_scalar()); } - duck->signal_edited().clear(); + duck->signal_edited().clear(); // value_desc.get_value_type() == ValueBase::TYPE_REAL: duck->signal_edited().connect( sigc::bind( sigc::mem_fun( @@ -1081,12 +1101,13 @@ Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handleset_scalar(param_desc->get_scalar()); } - duck->signal_edited().clear(); - duck->signal_edited().connect( + duck->signal_edited().clear(); // value_desc.get_value_type() == ValueBase::TYPE_ANGLE: + duck->signal_edited_angle().clear(); + duck->signal_edited_angle().connect( sigc::bind( sigc::mem_fun( *canvas_view, - &studio::CanvasView::on_duck_changed + &studio::CanvasView::on_duck_angle_changed ), value_desc ) @@ -1179,7 +1200,7 @@ Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handleset_type(Duck::TYPE_POSITION); - duck->signal_edited().clear(); + duck->signal_edited().clear(); // value_desc.get_value_type() == ValueBase::TYPE_VECTOR: duck->signal_edited().connect( sigc::bind( sigc::mem_fun(