diff options
| author | Alexander Valavanis <valavanisalex@gmail.com> | 2018-06-17 21:46:25 +0000 |
|---|---|---|
| committer | Alexander Valavanis <valavanisalex@gmail.com> | 2018-06-17 21:46:25 +0000 |
| commit | 860d9295fd3fd6b5ed8e7141651cda01b016d46c (patch) | |
| tree | 93f9e943625ba0f538839f8b2e0e7b732a8f542c /src/ui/toolbar | |
| parent | Potential fix for FTBFS introduced in 60ecfba7 (diff) | |
| download | inkscape-860d9295fd3fd6b5ed8e7141651cda01b016d46c.tar.gz inkscape-860d9295fd3fd6b5ed8e7141651cda01b016d46c.zip | |
ZoomToolbar: C++ify and GtkAction migration
Diffstat (limited to 'src/ui/toolbar')
| -rw-r--r-- | src/ui/toolbar/toolbar.cpp | 56 | ||||
| -rw-r--r-- | src/ui/toolbar/toolbar.h | 50 | ||||
| -rw-r--r-- | src/ui/toolbar/zoom-toolbar.cpp | 48 | ||||
| -rw-r--r-- | src/ui/toolbar/zoom-toolbar.h | 32 |
4 files changed, 176 insertions, 10 deletions
diff --git a/src/ui/toolbar/toolbar.cpp b/src/ui/toolbar/toolbar.cpp new file mode 100644 index 000000000..e1c9d082f --- /dev/null +++ b/src/ui/toolbar/toolbar.cpp @@ -0,0 +1,56 @@ +#include "toolbar.h" + +#include <gtkmm/separatortoolitem.h> + +#include "desktop.h" + +#include "helper/action.h" + +namespace Inkscape { +namespace UI { +namespace Toolbar { + +/** + * \brief Add a toolbutton that performs a given verb + * + * \param[in] verb_code The code for the verb (e.g., SP_VERB_EDIT_SELECT_ALL) + */ +void +Toolbar::add_toolbutton_for_verb(unsigned int verb_code) +{ + auto context = Inkscape::ActionContext(_desktop); + auto button = SPAction::create_toolbutton_for_verb(verb_code, context); + add(*button); +} + +/** + * \brief Add a separator line to the toolbar + * + * \details This is just a convenience wrapper for the + * standard GtkMM functionality + */ +void +Toolbar::add_separator() +{ + add(* Gtk::manage(new Gtk::SeparatorToolItem())); +} + +GtkWidget * +Toolbar::create(SPDesktop *desktop) +{ + auto toolbar = Gtk::manage(new Toolbar(desktop)); + return GTK_WIDGET(toolbar->gobj()); +} +} +} +} +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/ui/toolbar/toolbar.h b/src/ui/toolbar/toolbar.h new file mode 100644 index 000000000..8f18cfe57 --- /dev/null +++ b/src/ui/toolbar/toolbar.h @@ -0,0 +1,50 @@ +#ifndef SEEN_TOOLBAR_H +#define SEEN_TOOLBAR_H + +#include <gtkmm/toolbar.h> + +class SPDesktop; + +namespace Inkscape { +namespace UI { +namespace Toolbar { +/** + * \brief An abstract definition for a toolbar within Inkscape + * + * \detail This is basically the same as a Gtk::Toolbar but contains a + * few convenience functions. All toolbars must define a "create" + * function that adds all the required tool-items and returns the + * toolbar as a GtkWidget + */ +class Toolbar : public Gtk::Toolbar { +protected: + SPDesktop *_desktop; + + /** + * \brief A default constructor that just assigns the desktop + */ + Toolbar(SPDesktop *desktop) + : _desktop(desktop) + {} + + void add_toolbutton_for_verb(unsigned int verb_code); + void add_separator(); + +protected: + static GtkWidget * create(SPDesktop *desktop); +}; +} +} +} + +#endif +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/ui/toolbar/zoom-toolbar.cpp b/src/ui/toolbar/zoom-toolbar.cpp index a961c0061..ec28dda89 100644 --- a/src/ui/toolbar/zoom-toolbar.cpp +++ b/src/ui/toolbar/zoom-toolbar.cpp @@ -30,14 +30,50 @@ #include "zoom-toolbar.h" -//######################## -//## Zoom Toolbox ## -//######################## +#include "desktop.h" +#include "verbs.h" -void sp_zoom_toolbox_prep(SPDesktop * /*desktop*/, GtkActionGroup* /*mainActions*/, GObject* /*holder*/) +#include "helper/action.h" + +namespace Inkscape { +namespace UI { +namespace Toolbar { +ZoomToolbar::ZoomToolbar(SPDesktop *desktop) + : Toolbar(desktop) +{ + add_toolbutton_for_verb(SP_VERB_ZOOM_IN); + add_toolbutton_for_verb(SP_VERB_ZOOM_OUT); + + add_separator(); + + add_toolbutton_for_verb(SP_VERB_ZOOM_1_1); + add_toolbutton_for_verb(SP_VERB_ZOOM_1_2); + add_toolbutton_for_verb(SP_VERB_ZOOM_2_1); + + add_separator(); + + add_toolbutton_for_verb(SP_VERB_ZOOM_SELECTION); + add_toolbutton_for_verb(SP_VERB_ZOOM_DRAWING); + add_toolbutton_for_verb(SP_VERB_ZOOM_PAGE); + add_toolbutton_for_verb(SP_VERB_ZOOM_PAGE_WIDTH); + + add_separator(); + + add_toolbutton_for_verb(SP_VERB_ZOOM_PREV); + add_toolbutton_for_verb(SP_VERB_ZOOM_NEXT); + + show_all(); +} + +GtkWidget * +ZoomToolbar::create(SPDesktop *desktop) { - // no custom GtkAction setup needed -} // end of sp_zoom_toolbox_prep() + auto toolbar = Gtk::manage(new ZoomToolbar(desktop)); + return GTK_WIDGET(toolbar->gobj()); +} +} +} +} /* Local Variables: diff --git a/src/ui/toolbar/zoom-toolbar.h b/src/ui/toolbar/zoom-toolbar.h index 45d979066..6be5856eb 100644 --- a/src/ui/toolbar/zoom-toolbar.h +++ b/src/ui/toolbar/zoom-toolbar.h @@ -27,11 +27,35 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -class SPDesktop; +#include "toolbar.h" -typedef struct _GtkActionGroup GtkActionGroup; -typedef struct _GObject GObject; +namespace Inkscape { +namespace UI { +namespace Toolbar { -void sp_zoom_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder); +/** + * \brief A toolbar for controlling the zoom + */ +class ZoomToolbar : public Toolbar { +protected: + ZoomToolbar(SPDesktop *desktop); + +public: + static GtkWidget * create(SPDesktop *desktop); +}; +} +} +} #endif /* !SEEN_ZOOM_TOOLBAR_H */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : |
