Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: added ability to show/hide rulers #2634

Merged
merged 13 commits into from Aug 26, 2022
2 changes: 2 additions & 0 deletions synfig-studio/src/gui/app.cpp
Expand Up @@ -973,6 +973,7 @@ DEFINE_ACTION("mask-bone-ducks", _("Next Bone Handles"))
for(std::list<int>::iterator iter = CanvasView::get_pixel_sizes().begin(); iter != CanvasView::get_pixel_sizes().end(); iter++)
DEFINE_ACTION(strprintf("lowres-pixel-%d", *iter), strprintf(_("Set Low-Res pixel size to %d"), *iter))

DEFINE_ACTION("toggle-rulers-show", _("Toggle Rulers Show"))
DEFINE_ACTION("toggle-grid-show", _("Toggle Grid Show"))
DEFINE_ACTION("toggle-grid-snap", _("Toggle Grid Snap"))
DEFINE_ACTION("toggle-guide-show", _("Toggle Guide Show"))
Expand Down Expand Up @@ -1125,6 +1126,7 @@ DEFINE_ACTION("keyframe-properties", _("Properties"))
ui_info_menu +=
" </menu>"
" <separator name='sep-view1'/>"
" <menuitem action='toggle-rulers-show'/>"
" <menuitem action='toggle-grid-show'/>"
" <menuitem action='toggle-grid-snap'/>"
" <menuitem action='toggle-guide-show'/>"
Expand Down
13 changes: 13 additions & 0 deletions synfig-studio/src/gui/canvasview.cpp
Expand Up @@ -1577,6 +1577,11 @@ CanvasView::init_menus()
{
Glib::RefPtr<Gtk::ToggleAction> action;

rulers_show_toggle = Gtk::ToggleAction::create("toggle-rulers-show", _("Show Rulers"));
rulers_show_toggle->set_active(work_area->get_show_rulers());
work_area->set_rulers_visible(work_area->get_show_rulers());
action_group->add(rulers_show_toggle, sigc::mem_fun(*this, &CanvasView::toggle_show_ruler));

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(*this, &CanvasView::toggle_show_grid));
Expand Down Expand Up @@ -2701,6 +2706,14 @@ CanvasView::set_onion_skins()
work_area->set_onion_skins(onion_skins);
}

void
CanvasView::toggle_show_ruler()
{
work_area->toggle_rulers();
// Update the toggle ruler show action
set_rulers_show_toggle(work_area->get_show_rulers());
}

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

void set_grid_snap_toggle(bool flag) { grid_snap_toggle->set_active(flag); }
void set_grid_show_toggle(bool flag) { grid_show_toggle->set_active(flag); }
void set_rulers_show_toggle(bool flag) { rulers_show_toggle->set_active(flag); }
void set_guides_snap_toggle(bool flag) { guides_snap_toggle->set_active(flag); }
void set_guides_show_toggle(bool flag) { guides_show_toggle->set_active(flag); }
void set_onion_skin_toggle(bool flag) { onion_skin_toggle->set_active(flag); }
Expand Down Expand Up @@ -343,6 +344,7 @@ class CanvasView : public Dockable, public etl::shared_object

Glib::RefPtr<Gtk::ToggleAction> grid_snap_toggle;
Glib::RefPtr<Gtk::ToggleAction> grid_show_toggle;
Glib::RefPtr<Gtk::ToggleAction> rulers_show_toggle;
Glib::RefPtr<Gtk::ToggleAction> guides_snap_toggle;
Glib::RefPtr<Gtk::ToggleAction> guides_show_toggle;
Glib::RefPtr<Gtk::ToggleAction> onion_skin_toggle;
Expand Down Expand Up @@ -469,6 +471,7 @@ class CanvasView : public Dockable, public etl::shared_object
void increase_low_res_pixel_size();
void toggle_low_res_pixel_flag();
void set_onion_skins();
void toggle_show_ruler();
void toggle_show_grid();
void toggle_snap_grid();
void toggle_show_guides();
Expand Down
27 changes: 26 additions & 1 deletion synfig-studio/src/gui/workarea.cpp
Expand Up @@ -144,6 +144,7 @@ WorkArea::WorkArea(etl::loose_handle<synfigapp::CanvasInterface> canvas_interfac
highlight_active_bone(false),
show_grid(false),
show_guides(true),
show_rulers(true),
background_size(15,15),
background_first_color(0.88, 0.88, 0.88), /* light gray */
background_second_color(0.65, 0.65, 0.65), /* dark gray */
Expand Down Expand Up @@ -228,7 +229,7 @@ WorkArea::WorkArea(etl::loose_handle<synfigapp::CanvasInterface> canvas_interfac

Gtk::Arrow *menubutton = manage(new Gtk::Arrow(Gtk::ARROW_RIGHT, Gtk::SHADOW_OUT));
menubutton->set_size_request(18, 18);
Gtk::EventBox *menubutton_box = manage(new Gtk::EventBox());
menubutton_box = manage(new Gtk::EventBox());
menubutton_box->add(*menubutton);
menubutton_box->add_events(Gdk::BUTTON_RELEASE_MASK);
menubutton_box->signal_button_release_event().connect(
Expand Down Expand Up @@ -293,6 +294,7 @@ WorkArea::WorkArea(etl::loose_handle<synfigapp::CanvasInterface> canvas_interfac
get_canvas()->signal_meta_data_changed("grid_color").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
get_canvas()->signal_meta_data_changed("grid_snap").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
get_canvas()->signal_meta_data_changed("grid_show").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
get_canvas()->signal_meta_data_changed("status_ruler").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
get_canvas()->signal_meta_data_changed("guide_show").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
get_canvas()->signal_meta_data_changed("guide_x").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
get_canvas()->signal_meta_data_changed("guide_y").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
Expand Down Expand Up @@ -371,6 +373,7 @@ WorkArea::save_meta_data()
canvas_interface->set_meta_data("guide_snap", get_guide_snap() ? "1" : "0");
canvas_interface->set_meta_data("guide_show", get_show_guides() ? "1" : "0");
canvas_interface->set_meta_data("grid_show", show_grid ? "1" : "0");
canvas_interface->set_meta_data("status_ruler", show_rulers ? "1" : "0");
canvas_interface->set_meta_data("jack_offset", strprintf("%f", (double)jack_offset));
canvas_interface->set_meta_data("onion_skin", onion_skin ? "1" : "0");
canvas_interface->set_meta_data("onion_skin_past", strprintf("%d", onion_skins[0]));
Expand Down Expand Up @@ -547,6 +550,12 @@ WorkArea::load_meta_data()
set_guides_color(synfig::Color(gr,gg,gb));
}

data=canvas->get_meta_data("status_ruler");
if(data.size() && (data=="1" || data[0]=='t' || data[0]=='T'))
show_rulers=true;
if(data.size() && (data=="0" || data[0]=='f' || data[0]=='F'))
show_rulers=false;

data=canvas->get_meta_data("grid_show");
if(data.size() && (data=="1" || data[0]=='t' || data[0]=='T'))
show_grid=true;
Expand Down Expand Up @@ -803,6 +812,22 @@ WorkArea::set_background_rendering(bool x)
queue_draw();
}

void
WorkArea::set_rulers_visible(bool visible)
{
hruler->set_visible(visible);
vruler->set_visible(visible);
menubutton_box->set_visible(visible);
}

void
WorkArea::toggle_rulers()
mohamedAdhamc marked this conversation as resolved.
Show resolved Hide resolved
{
show_rulers = !show_rulers;
set_rulers_visible(show_rulers);
save_meta_data();
}

void
WorkArea::enable_grid()
{
Expand Down
8 changes: 8 additions & 0 deletions synfig-studio/src/gui/workarea.h
Expand Up @@ -40,6 +40,7 @@
#include <gtkmm/adjustment.h>
#include <gtkmm/drawingarea.h>
#include <gtkmm/grid.h>
#include <gtkmm/eventbox.h>

#include <gui/dials/zoomdial.h>
#include <gui/duckmatic.h>
Expand Down Expand Up @@ -134,6 +135,7 @@ class WorkArea : public Gtk::Grid, public Duckmatic
etl::handle<Renderer_Canvas> renderer_canvas;

// Widgets
Gtk::EventBox *menubutton_box;
Gtk::DrawingArea *drawing_area;
Gtk::Frame *drawing_frame;
Widget_Ruler *hruler;
Expand Down Expand Up @@ -180,6 +182,8 @@ class WorkArea : public Gtk::Grid, public Duckmatic
etl::loose_handle<synfig::ValueNode> active_bone_;
bool highlight_active_bone;

//! This state is true if ruler should be shown
bool show_rulers;
//! This flag is set if the grid should be drawn
bool show_grid;

Expand Down Expand Up @@ -349,6 +353,9 @@ class WorkArea : public Gtk::Grid, public Duckmatic

void refresh_dimension_info();

void toggle_rulers();
void set_rulers_visible(bool visible);

//! Enables showing of the grid
void enable_grid();
//! Disables showing of the grid
Expand All @@ -366,6 +373,7 @@ class WorkArea : public Gtk::Grid, public Duckmatic
//! Returns the color of the grid
const synfig::Color &get_grid_color()const { return Duckmatic::get_grid_color();}

bool get_show_rulers()const { return show_rulers; }
//! Returns the state of the show_guides flag
bool get_show_guides()const { return show_guides; }
//! Sets the showing of the grid
Expand Down