projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Couple of new functions to duplicate and delete a waypoint without having a ValueDesc.
[synfig.git]
/
synfig-studio
/
trunk
/
src
/
gtkmm
/
duckmatic.cpp
diff --git
a/synfig-studio/trunk/src/gtkmm/duckmatic.cpp
b/synfig-studio/trunk/src/gtkmm/duckmatic.cpp
index
072f065
..
d6cc012
100644
(file)
--- a/
synfig-studio/trunk/src/gtkmm/duckmatic.cpp
+++ b/
synfig-studio/trunk/src/gtkmm/duckmatic.cpp
@@
-56,6
+56,8
@@
#include "onemoment.h"
#include "onemoment.h"
+#include "general.h"
+
#endif
/* === U S I N G =========================================================== */
#endif
/* === U S I N G =========================================================== */
@@
-97,7
+99,12
@@
Duckmatic::Duckmatic():
Duckmatic::~Duckmatic()
{
clear_ducks();
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
}
void
@@
-406,7
+413,7
@@
Duckmatic::end_duck_drag()
}
Point
}
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);
{
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)
{
// 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;
}
}
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
{
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;
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)
{
bool
Duckmatic::load_sketch(const synfig::String& filename)
{
+ ChangeLocale change_locale(LC_NUMERIC, "C");
std::ifstream file(filename.c_str());
if(!file)
std::ifstream file(filename.c_str());
if(!file)
@@
-1005,7
+1025,7
@@
Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<Canva
duck->set_scalar(param_desc->get_scalar());
}
duck->set_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(
duck->signal_edited().connect(
sigc::bind(
sigc::mem_fun(
@@
-1081,12
+1101,13
@@
Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<Canva
duck->set_scalar(param_desc->get_scalar());
}
duck->set_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,
sigc::bind(
sigc::mem_fun(
*canvas_view,
- &studio::CanvasView::on_duck_changed
+ &studio::CanvasView::on_duck_
angle_
changed
),
value_desc
)
),
value_desc
)
@@
-1179,7
+1200,7
@@
Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<Canva
else
duck->set_type(Duck::TYPE_POSITION);
else
duck->set_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(
duck->signal_edited().connect(
sigc::bind(
sigc::mem_fun(