summaryrefslogtreecommitdiffstats
path: root/src/ui/toolbar/dropper-toolbar.cpp
diff options
context:
space:
mode:
authorAlexander Valavanis <valavanisalex@gmail.com>2018-07-29 13:56:29 +0000
committerAlexander Valavanis <valavanisalex@gmail.com>2018-07-29 13:56:29 +0000
commitaa6dde633662cf5fecea6425b7367eb2b93d53fb (patch)
tree947bc444bd17b5ff424e3efcaa17f788e4b1b880 /src/ui/toolbar/dropper-toolbar.cpp
parentchange header string (diff)
downloadinkscape-aa6dde633662cf5fecea6425b7367eb2b93d53fb.tar.gz
inkscape-aa6dde633662cf5fecea6425b7367eb2b93d53fb.zip
DropperToolbar: GtkAction migration
Diffstat (limited to 'src/ui/toolbar/dropper-toolbar.cpp')
-rw-r--r--src/ui/toolbar/dropper-toolbar.cpp118
1 files changed, 56 insertions, 62 deletions
diff --git a/src/ui/toolbar/dropper-toolbar.cpp b/src/ui/toolbar/dropper-toolbar.cpp
index b9d21be1b..c66c5ead0 100644
--- a/src/ui/toolbar/dropper-toolbar.cpp
+++ b/src/ui/toolbar/dropper-toolbar.cpp
@@ -37,83 +37,77 @@
#include "preferences.h"
#include "widgets/spinbutton-events.h"
-using Inkscape::DocumentUndo;
+namespace Inkscape {
+namespace UI {
+namespace Toolbar {
-//########################
-//## Dropper ##
-//########################
-
-static void toggle_dropper_pick_alpha( GtkToggleAction* act, gpointer tbl )
+void DropperToolbar::on_pick_alpha_button_toggled()
{
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setInt( "/tools/dropper/pick", gtk_toggle_action_get_active( act ) );
- GtkAction* set_action = GTK_ACTION( g_object_get_data(G_OBJECT(tbl), "set_action") );
- if ( set_action ) {
- if ( gtk_toggle_action_get_active( act ) ) {
- gtk_action_set_sensitive( set_action, TRUE );
- } else {
- gtk_action_set_sensitive( set_action, FALSE );
- }
- }
-
- spinbutton_defocus(GTK_WIDGET(tbl));
+ auto active = _pick_alpha_button->get_active();
+
+ auto prefs = Inkscape::Preferences::get();
+ prefs->setInt( "/tools/dropper/pick", active );
+
+ _set_alpha_button->set_sensitive(active);
+
+ spinbutton_defocus(GTK_WIDGET(gobj()));
}
-static void toggle_dropper_set_alpha( GtkToggleAction* act, gpointer tbl )
+void DropperToolbar::on_set_alpha_button_toggled()
{
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setBool( "/tools/dropper/setalpha", gtk_toggle_action_get_active( act ) );
- spinbutton_defocus(GTK_WIDGET(tbl));
+ auto prefs = Inkscape::Preferences::get();
+ prefs->setBool( "/tools/dropper/setalpha", _set_alpha_button->get_active( ) );
+ spinbutton_defocus(GTK_WIDGET(gobj()));
}
-
-/**
- * Dropper auxiliary toolbar construction and setup.
- *
+/*
* TODO: Would like to add swatch of current color.
* TODO: Add queue of last 5 or so colors selected with new swatches so that
* can drag and drop places. Will provide a nice mixing palette.
*/
-void sp_dropper_toolbox_prep(SPDesktop * /*desktop*/, GtkActionGroup* mainActions, GObject* holder)
+DropperToolbar::DropperToolbar(SPDesktop *desktop)
+ : Toolbar(desktop)
{
+ // Add widgets to toolbar
+ add_label(_("Opacity:"));
+ _pick_alpha_button = add_toggle_button(_("Pick"),
+ _("Pick both the color and the alpha (transparency) under cursor; "
+ "otherwise, pick only the visible color premultiplied by alpha"));
+ _set_alpha_button = add_toggle_button(_("Assign"),
+ _("If alpha was picked, assign it to selection "
+ "as fill or stroke transparency"));
+
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- gint pickAlpha = prefs->getInt( "/tools/dropper/pick", 1 );
-
- {
- EgeOutputAction* act = ege_output_action_new( "DropperOpacityAction", _("Opacity:"), "", nullptr );
- ege_output_action_set_use_markup( act, TRUE );
- gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
- }
-
- {
- InkToggleAction* act = ink_toggle_action_new( "DropperPickAlphaAction",
- _("Pick opacity"),
- _("Pick both the color and the alpha (transparency) under cursor; otherwise, pick only the visible color premultiplied by alpha"),
- nullptr,
- GTK_ICON_SIZE_MENU );
- g_object_set( act, "short_label", _("Pick"), NULL );
- gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
- g_object_set_data( holder, "pick_action", act );
- gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), pickAlpha );
- g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_dropper_pick_alpha), holder );
- }
-
- {
- InkToggleAction* act = ink_toggle_action_new( "DropperSetAlphaAction",
- _("Assign opacity"),
- _("If alpha was picked, assign it to selection as fill or stroke transparency"),
- nullptr,
- GTK_ICON_SIZE_MENU );
- g_object_set( act, "short_label", _("Assign"), NULL );
- gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
- g_object_set_data( holder, "set_action", act );
- gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool( "/tools/dropper/setalpha", true) );
- // make sure it's disabled if we're not picking alpha
- gtk_action_set_sensitive( GTK_ACTION(act), pickAlpha );
- g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_dropper_set_alpha), holder );
- }
+
+ // Set initial state of widgets
+ auto pickAlpha = prefs->getInt( "/tools/dropper/pick", 1 );
+ auto setAlpha = prefs->getBool( "/tools/dropper/setalpha", true);
+
+ _pick_alpha_button->set_active(pickAlpha);
+ _set_alpha_button->set_active(setAlpha);
+
+ // Make sure the set-alpha button is disabled if we're not picking alpha
+ _set_alpha_button->set_sensitive(pickAlpha);
+
+ // Connect signal handlers
+ auto pick_alpha_button_toggled_cb = sigc::mem_fun(*this, &DropperToolbar::on_pick_alpha_button_toggled);
+ auto set_alpha_button_toggled_cb = sigc::mem_fun(*this, &DropperToolbar::on_set_alpha_button_toggled);
+
+ _pick_alpha_button->signal_toggled().connect(pick_alpha_button_toggled_cb);
+ _set_alpha_button->signal_toggled().connect(set_alpha_button_toggled_cb);
+
+ show_all();
}
+GtkWidget *
+DropperToolbar::create(SPDesktop *desktop)
+{
+ auto toolbar = Gtk::manage(new DropperToolbar(desktop));
+ return GTK_WIDGET(toolbar->gobj());
+}
+}
+}
+}
/*
Local Variables: