From: gballintijn Date: Mon, 11 May 2009 16:31:34 +0000 (+0000) Subject: Refactored the canvas zoom button "minibar": X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=a75d39ae6509cd7b24e8924ffab41e8014591a8f;p=synfig.git Refactored the canvas zoom button "minibar": * Moved the constructor code to zoomdial.cpp. * Made fields private that can be private. * Removed the use of a CPP macro to reuse C++ code. * Some minor layout changes. git-svn-id: https://synfig.svn.sourceforge.net/svnroot/synfig@2376 1f10aa63-cdf2-0310-b900-c93c546f37ac --- diff --git a/synfig-studio/trunk/src/gtkmm/zoomdial.cpp b/synfig-studio/trunk/src/gtkmm/zoomdial.cpp index 130c105..78c76c1 100644 --- a/synfig-studio/trunk/src/gtkmm/zoomdial.cpp +++ b/synfig-studio/trunk/src/gtkmm/zoomdial.cpp @@ -29,7 +29,8 @@ # include #endif -//#include "zoomdial.h" +#include "zoomdial.h" +#include #include "general.h" @@ -38,6 +39,7 @@ /* === U S I N G =========================================================== */ using namespace std; +using namespace studio; /* === M A C R O S ========================================================= */ @@ -47,4 +49,33 @@ using namespace std; /* === M E T H O D S ======================================================= */ +ZoomDial::ZoomDial(Gtk::IconSize & size): Table(3, 1, false) +{ + zoom_in = create_icon(size, "gtk-add", _("Zoom In")); + zoom_out = create_icon(size, "gtk-remove", _("Zoom Out")); + zoom_fit = create_icon(size, "gtk-zoom-fit", _("Zoom to Fit")); + zoom_norm = create_icon(size, "gtk-zoom-100", _("Zoom to 100%")); + + attach(*zoom_out, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + attach(*zoom_norm, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + attach(*zoom_fit, 2, 3, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); + attach(*zoom_in, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); +} + +Gtk::Button * +ZoomDial::create_icon(Gtk::IconSize size, const char * stockid, + const char * tooltip) +{ + Gtk::Button *button = manage(new class Gtk::Button()); + Gtk::Image *icon = manage(new Gtk::Image(Gtk::StockID(stockid), size)); + button->add(*icon); + tooltips.set_tip(*button, tooltip); + icon->set_padding(0, 0); + icon->show(); + button->set_relief(Gtk::RELIEF_NONE); + button->show(); + + return button; +} + diff --git a/synfig-studio/trunk/src/gtkmm/zoomdial.h b/synfig-studio/trunk/src/gtkmm/zoomdial.h index 72bce13..eda3fae 100644 --- a/synfig-studio/trunk/src/gtkmm/zoomdial.h +++ b/synfig-studio/trunk/src/gtkmm/zoomdial.h @@ -6,7 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** Copyright (c) 2008 Chris Moore +** Copyright (c) 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -29,22 +29,11 @@ /* === H E A D E R S ======================================================= */ #include +#include #include -#include "general.h" - /* === M A C R O S ========================================================= */ -#define SMALL_BUTTON(button,stockid,tooltip) \ - button = manage(new class Gtk::Button()); \ - icon=manage(new Gtk::Image(Gtk::StockID(stockid),iconsize)); \ - button->add(*icon); \ - tooltips.set_tip(*button,tooltip); \ - icon->set_padding(0,0);\ - icon->show(); \ - button->set_relief(Gtk::RELIEF_NONE); \ - button->show() - /* === T Y P E D E F S ===================================================== */ /* === C L A S S E S & S T R U C T S ======================================= */ @@ -54,40 +43,23 @@ namespace studio class ZoomDial : public Gtk::Table { - Gtk::Tooltips tooltips; - Gtk::IconSize iconsize; - -public: Gtk::Button *zoom_in; Gtk::Button *zoom_out; Gtk::Button *zoom_fit; Gtk::Button *zoom_norm; - ZoomDial(Gtk::IconSize &size):Table(3, 1, false),iconsize(size) - { - Gtk::Image *icon; - - SMALL_BUTTON(zoom_in,"gtk-add",_("Zoom In")); - SMALL_BUTTON(zoom_out,"gtk-remove",_("Zoom Out")); - SMALL_BUTTON(zoom_fit,"gtk-zoom-fit",_("Zoom to Fit")); - SMALL_BUTTON(zoom_norm,"gtk-zoom-100",_("Zoom to 100%")); - - attach(*zoom_out, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); - attach(*zoom_norm, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); - attach(*zoom_fit, 2, 3, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); - attach(*zoom_in, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0); - } - - Glib::SignalProxy0 signal_zoom_in() - { return zoom_in->signal_clicked(); } - Glib::SignalProxy0 signal_zoom_out() - { return zoom_out->signal_clicked(); } - Glib::SignalProxy0 signal_zoom_fit() - { return zoom_fit->signal_clicked(); } - Glib::SignalProxy0 signal_zoom_norm() - { return zoom_norm->signal_clicked(); } + Gtk::Button *create_icon(Gtk::IconSize size, const char * stockid, + const char * tooltip); + +public: + ZoomDial(Gtk::IconSize &size); + + Glib::SignalProxy0 signal_zoom_in() { return zoom_in->signal_clicked(); } + Glib::SignalProxy0 signal_zoom_out() { return zoom_out->signal_clicked(); } + Glib::SignalProxy0 signal_zoom_fit() { return zoom_fit->signal_clicked(); } + Glib::SignalProxy0 signal_zoom_norm() { return zoom_norm->signal_clicked(); } }; // END of class ZoomDial