Skip to content

Commit

Permalink
fix 250 : Add shortcut to hide/show all ducks
Browse files Browse the repository at this point in the history
* New action "mask-none_ducks"
* Menu/View/Show Hide Handle/"Toggle None/Last visible Handles"
* <Alt><0> has toggle all handles.

http://www.synfig.org/issues/thebuggenie/synfig/issues/250
  • Loading branch information
d-j-a-y authored and morevnaproject committed Dec 23, 2015
1 parent f82eb09 commit 29fb15a
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 5 deletions.
7 changes: 5 additions & 2 deletions synfig-studio/src/gui/app.cpp
Expand Up @@ -899,16 +899,17 @@ DEFINE_ACTION("restore-default-settings", _("Restore Defaults"));
DEFINE_ACTION("toggle-mainwin-menubar", _("Menubar"));
DEFINE_ACTION("toggle-mainwin-toolbar", _("Toolbar"));

DEFINE_ACTION("mask-none-ducks", _("Toggle None/Last visible Handles"));
DEFINE_ACTION("mask-position-ducks", _("Show Position Handles"));
DEFINE_ACTION("mask-vertex-ducks", _("Show Vertex Handles"));
DEFINE_ACTION("mask-tangent-ducks", _("Show Tangent Handles"));
DEFINE_ACTION("mask-radius-ducks", _("Show Radius Handles"));
DEFINE_ACTION("mask-width-ducks", _("Show Width Handles"));
DEFINE_ACTION("mask-widthpoint-position-ducks", _("Show WidthPoints Position Handles"));
DEFINE_ACTION("mask-angle-ducks", _("Show Angle Handles"));
DEFINE_ACTION("mask-bone-setup-ducks", _("Show Bone Setup Handles"));
DEFINE_ACTION("mask-bone-recursive-ducks", _("Show Recursive Scale Bone Handles"));
DEFINE_ACTION("mask-bone-ducks", _("Next Bone Handles"));
DEFINE_ACTION("mask-widthpoint-position-ducks", _("Show WidthPoints Position Handles"));
DEFINE_ACTION("quality-00", _("Use Parametric Renderer"));
DEFINE_ACTION("quality-01", _("Use Quality Level 1"));
DEFINE_ACTION("quality-02", _("Use Quality Level 2"));
Expand Down Expand Up @@ -1035,16 +1036,17 @@ DEFINE_ACTION("keyframe-properties","Properties");
" <menuitem action='toggle-mainwin-toolbar' />"
" <separator />"
" <menu action='menu-duck-mask'>"
" <menuitem action='mask-none-ducks' />"
" <menuitem action='mask-position-ducks' />"
" <menuitem action='mask-vertex-ducks' />"
" <menuitem action='mask-tangent-ducks' />"
" <menuitem action='mask-radius-ducks' />"
" <menuitem action='mask-width-ducks' />"
" <menuitem action='mask-widthpoint-position-ducks' />"
" <menuitem action='mask-angle-ducks' />"
" <menuitem action='mask-bone-setup-ducks' />"
" <menuitem action='mask-bone-recursive-ducks' />"
" <menuitem action='mask-bone-ducks' />"
" <menuitem action='mask-widthpoint-position-ducks' />"
" </menu>"
" <menu action='menu-preview-quality'>"
" <menuitem action='quality-00' />"
Expand Down Expand Up @@ -1256,6 +1258,7 @@ DEFINE_ACTION("keyframe-properties","Properties");
ACCEL("<Control>s", "<Actions>/canvasview/save" );
ACCEL("<Control><Shift>s", "<Actions>/canvasview/save-as" );
ACCEL2(Gtk::AccelKey('`',Gdk::CONTROL_MASK, "<Actions>/canvasview/toggle-low-res" ));
ACCEL("<Mod1>0", "<Actions>/canvasview/mask-none-ducks" );
ACCEL("<Mod1>1", "<Actions>/canvasview/mask-position-ducks" );
ACCEL("<Mod1>2", "<Actions>/canvasview/mask-vertex-ducks" );
ACCEL("<Mod1>3", "<Actions>/canvasview/mask-tangent-ducks" );
Expand Down
24 changes: 23 additions & 1 deletion synfig-studio/src/gui/canvasview.cpp
Expand Up @@ -1936,6 +1936,10 @@ CanvasView::init_menus()

{
Glib::RefPtr<Gtk::ToggleAction> action;
//! toggle none/last visible
action= Gtk::ToggleAction::create("mask-none-ducks", _("Toggle None/Last visible Handles"));
action->set_active(false);
action_group->add(action, sigc::mem_fun(*this,&CanvasView::toggle_duck_mask_all));

#define DUCK_MASK(lower,upper,string) \
action=Gtk::ToggleAction::create("mask-" #lower "-ducks", string); \
Expand All @@ -1950,11 +1954,11 @@ CanvasView::init_menus()
DUCK_MASK(vertex,VERTEX,_("Show Vertex Handles"));
DUCK_MASK(radius,RADIUS,_("Show Radius Handles"));
DUCK_MASK(width,WIDTH,_("Show Width Handles"));
DUCK_MASK(widthpoint-position, WIDTHPOINT_POSITION, _("Show WidthPoints Position Handles"));
DUCK_MASK(angle,ANGLE,_("Show Angle Handles"));
action_mask_bone_setup_ducks = action;
DUCK_MASK(bone-recursive,BONE_RECURSIVE,_("Show Recursive Scale Bone Handles"));
action_mask_bone_recursive_ducks = action;
DUCK_MASK(widthpoint-position, WIDTHPOINT_POSITION, _("Show WidthPoints Position Handles"));

#undef DUCK_MASK

Expand Down Expand Up @@ -4014,6 +4018,7 @@ CanvasView::toggle_duck_mask(Duckmatic::Type type)
action = Glib::RefPtr<Gtk::ToggleAction>::cast_dynamic(action_group->get_action("mask-angle-ducks"));
action->set_active((bool)(work_area->get_type_mask()&Duck::TYPE_ANGLE));
// Update toggle ducks buttons
action->get_active();
toggleducksdial.update_toggles(work_area->get_type_mask());
}
catch(...)
Expand All @@ -4023,6 +4028,23 @@ CanvasView::toggle_duck_mask(Duckmatic::Type type)
toggling_ducks_=false;
}

void
CanvasView::toggle_duck_mask_all()
{
if (work_area->get_type_mask_state ()== Duck::TYPE_NONE)
{
work_area->set_type_mask_state ( work_area->get_type_mask());
work_area->set_type_mask(Duck::TYPE_NONE);
toggle_duck_mask(Duck::TYPE_NONE);
}
else
{
work_area->set_type_mask(work_area->get_type_mask_state());
work_area->set_type_mask_state ( Duck::TYPE_NONE);
toggle_duck_mask(Duck::TYPE_NONE);
}
}

void
CanvasView::mask_bone_ducks()
{
Expand Down
6 changes: 6 additions & 0 deletions synfig-studio/src/gui/canvasview.h
Expand Up @@ -762,7 +762,13 @@ class CanvasView : public Dockable, public etl::shared_object

void update_quality();

//! Toggle given handle type
//! \Param[in] type The Duckmatic::Type to toggle
//! \Sa DuckMatic::set_type_mask(), DuckMatic::get_type_mask()
void toggle_duck_mask(Duckmatic::Type type);
//! Toggle between none/last visible handles
//! \Sa DuckMatic::set_type_mask_state(), DuckMatic::get_type_mask_state()
void toggle_duck_mask_all();

bool is_time_equal_to_current_frame(const synfig::Time &time, const synfig::Time &range = synfig::Time(0.0));

Expand Down
1 change: 1 addition & 0 deletions synfig-studio/src/gui/duckmatic.cpp
Expand Up @@ -116,6 +116,7 @@ void set_duck_value_desc(Duck& duck, const synfigapp::ValueDesc& value_desc, con
Duckmatic::Duckmatic(etl::loose_handle<synfigapp::CanvasInterface> canvas_interface):
canvas_interface(canvas_interface),
type_mask(Duck::TYPE_ALL-Duck::TYPE_WIDTH-Duck::TYPE_BONE_RECURSIVE-Duck::TYPE_WIDTHPOINT_POSITION),
type_mask_state(Duck::TYPE_NONE),
alternative_mode_(false),
lock_animation_mode_(false),
grid_snap(false),
Expand Down
14 changes: 12 additions & 2 deletions synfig-studio/src/gui/duckmatic.h
Expand Up @@ -190,7 +190,7 @@ typedef std::map<synfig::GUID,etl::smart_ptr<synfig::Point> > DuckDataMap;

etl::loose_handle<synfigapp::CanvasInterface> canvas_interface;

Type type_mask;
Type type_mask, type_mask_state;

DuckMap duck_map;

Expand Down Expand Up @@ -520,11 +520,21 @@ typedef std::map<synfig::GUID,etl::smart_ptr<synfig::Point> > DuckDataMap;
bool add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<CanvasView> canvas_view, const synfig::TransformStack& transform_stack_, synfig::ParamDesc *param_desc=0);

//! Set the type mask, which determines what types of ducks are shown
//! \Param[in] x Duck::Type set to backup when toggling handles
//! \Sa get_type_mask(), CanvasView::toggle_duck_all()
void set_type_mask(Type x) { type_mask=x; }

//! Get the type mask, which determines what types of ducks are shown
//! \Sa set_type_mask(), CanvasView::toggle_duck_all()
Type get_type_mask()const { return type_mask; }

//! Set the type mask state, which determines what types of ducks are shown on toggle
//! \Param[in] x Duck::Type set to backup when toggling handles
//! \Sa get_type_mask_state(), CanvasView::toggle_duck_mask_all()
void set_type_mask_state(Type x) { type_mask_state=x; }
//! Get the type mask state, which determines what types of ducks are shown on toggle
//! \Sa set_type_mask_state(), CanvasView::toggle_duck_mask_all()
Type get_type_mask_state()const { return type_mask_state; }

void select_all_ducks();
void unselect_all_ducks();

Expand Down

0 comments on commit 29fb15a

Please sign in to comment.