diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/CMakeLists.txt | 2 | ||||
| -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 |
5 files changed, 178 insertions, 10 deletions
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt index 0374fad15..0ae3b8624 100644 --- a/src/ui/CMakeLists.txt +++ b/src/ui/CMakeLists.txt @@ -48,6 +48,7 @@ set(ui_SRC toolbar/spray-toolbar.cpp toolbar/star-toolbar.cpp toolbar/text-toolbar.cpp + toolbar/toolbar.cpp toolbar/tweak-toolbar.cpp toolbar/zoom-toolbar.cpp @@ -328,6 +329,7 @@ set(ui_SRC toolbar/spray-toolbar.h toolbar/star-toolbar.h toolbar/text-toolbar.h + toolbar/toolbar.h toolbar/tweak-toolbar.h toolbar/zoom-toolbar.h 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 : |
