summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorAndrew Higginson <at.higginson@gmail.com>2011-12-27 21:04:47 +0000
committerAndrew <at.higginson@gmail.com>2011-12-27 21:04:47 +0000
commit80960b623a99aae1402ab651b2974ef544ed3b03 (patch)
treeba49d42c2789e9e11f805e2d5263e10f9fedeef8 /src/widgets
parenttry to fix bug (diff)
parentGDL: Cherry-pick upstream patch 73852 (2011-03-23) - Add missing return value. (diff)
downloadinkscape-80960b623a99aae1402ab651b2974ef544ed3b03.tar.gz
inkscape-80960b623a99aae1402ab651b2974ef544ed3b03.zip
merged with trunk so I can build again...
(bzr r10092.1.36)
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/CMakeLists.txt112
-rw-r--r--src/widgets/Makefile_insert2
-rw-r--r--src/widgets/button.cpp98
-rw-r--r--src/widgets/button.h19
-rw-r--r--src/widgets/dash-selector.cpp15
-rw-r--r--src/widgets/dash-selector.h12
-rw-r--r--src/widgets/desktop-widget.cpp197
-rw-r--r--src/widgets/desktop-widget.h28
-rw-r--r--src/widgets/eek-preview.cpp17
-rw-r--r--src/widgets/eek-preview.h12
-rw-r--r--src/widgets/ege-paint-def.cpp14
-rw-r--r--src/widgets/ege-paint-def.h6
-rw-r--r--src/widgets/fill-style.cpp7
-rw-r--r--src/widgets/font-selector.cpp339
-rw-r--r--src/widgets/font-selector.h26
-rw-r--r--src/widgets/gradient-image.cpp183
-rw-r--r--src/widgets/gradient-image.h17
-rw-r--r--src/widgets/gradient-selector.cpp114
-rw-r--r--src/widgets/gradient-selector.h10
-rw-r--r--src/widgets/gradient-toolbar.cpp48
-rw-r--r--src/widgets/gradient-toolbar.h2
-rw-r--r--src/widgets/gradient-vector.cpp80
-rw-r--r--src/widgets/gradient-vector.h15
-rw-r--r--src/widgets/icon.cpp179
-rw-r--r--src/widgets/icon.h6
-rw-r--r--src/widgets/paint-selector.cpp233
-rw-r--r--src/widgets/paint-selector.h29
-rw-r--r--src/widgets/ruler.cpp103
-rw-r--r--src/widgets/ruler.h18
-rw-r--r--src/widgets/select-toolbar.cpp91
-rw-r--r--src/widgets/select-toolbar.h5
-rw-r--r--src/widgets/shrink-wrap-button.cpp2
-rw-r--r--src/widgets/sp-attribute-widget.cpp852
-rw-r--r--src/widgets/sp-attribute-widget.h113
-rw-r--r--src/widgets/sp-color-gtkselector.cpp2
-rw-r--r--src/widgets/sp-color-gtkselector.h10
-rw-r--r--src/widgets/sp-color-icc-selector.cpp81
-rw-r--r--src/widgets/sp-color-icc-selector.h23
-rw-r--r--src/widgets/sp-color-notebook.cpp62
-rw-r--r--src/widgets/sp-color-notebook.h14
-rw-r--r--src/widgets/sp-color-preview.cpp211
-rw-r--r--src/widgets/sp-color-preview.h55
-rw-r--r--src/widgets/sp-color-scales.cpp76
-rw-r--r--src/widgets/sp-color-scales.h15
-rw-r--r--src/widgets/sp-color-selector.cpp56
-rw-r--r--src/widgets/sp-color-selector.h10
-rw-r--r--src/widgets/sp-color-slider.cpp139
-rw-r--r--src/widgets/sp-color-slider.h12
-rw-r--r--src/widgets/sp-color-wheel-selector.cpp46
-rw-r--r--src/widgets/sp-color-wheel-selector.h21
-rw-r--r--src/widgets/sp-widget.cpp79
-rw-r--r--src/widgets/sp-widget.h12
-rw-r--r--src/widgets/sp-xmlview-attr-list.cpp2
-rw-r--r--src/widgets/sp-xmlview-attr-list.h9
-rw-r--r--src/widgets/sp-xmlview-content.cpp6
-rw-r--r--src/widgets/sp-xmlview-content.h10
-rw-r--r--src/widgets/sp-xmlview-tree.cpp26
-rw-r--r--src/widgets/sp-xmlview-tree.h10
-rw-r--r--src/widgets/spinbutton-events.cpp24
-rw-r--r--src/widgets/spinbutton-events.h5
-rw-r--r--src/widgets/spw-utilities.cpp40
-rw-r--r--src/widgets/spw-utilities.h4
-rw-r--r--src/widgets/stroke-style.cpp108
-rw-r--r--src/widgets/stroke-style.h15
-rw-r--r--src/widgets/toolbox.cpp857
-rw-r--r--src/widgets/toolbox.h14
66 files changed, 1926 insertions, 3132 deletions
diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt
index f3c0e70fa..418cc5c6f 100644
--- a/src/widgets/CMakeLists.txt
+++ b/src/widgets/CMakeLists.txt
@@ -1,36 +1,78 @@
-SET(widgets_SRC
-button.cpp
-calligraphic-profile-rename.cpp
-dash-selector.cpp
-desktop-widget.cpp
-font-selector.cpp
-gradient-image.cpp
-gradient-selector.cpp
-gradient-toolbar.cpp
-gradient-vector.cpp
-icon.cpp
-layer-selector.cpp
-paint-selector.cpp
-ruler.cpp
-select-toolbar.cpp
-shrink-wrap-button.cpp
-sp-color-gtkselector.cpp
-sp-color-icc-selector.cpp
-sp-color-notebook.cpp
-sp-color-preview.cpp
-sp-color-scales.cpp
-sp-color-selector.cpp
-sp-color-slider.cpp
-sp-color-wheel-selector.cpp
-spinbutton-events.cpp
-sp-widget.cpp
-spw-utilities.cpp
-sp-xmlview-attr-list.cpp
-sp-xmlview-content.cpp
-sp-xmlview-tree.cpp
-swatch-selector.cpp
-toolbox.cpp
+
+set(widgets_SRC
+ button.cpp
+ dash-selector.cpp
+ desktop-widget.cpp
+ eek-preview.cpp
+ ege-paint-def.cpp
+ fill-style.cpp
+ font-selector.cpp
+ gradient-image.cpp
+ gradient-selector.cpp
+ gradient-toolbar.cpp
+ gradient-vector.cpp
+ icon.cpp
+ paint-selector.cpp
+ ruler.cpp
+ select-toolbar.cpp
+ shrink-wrap-button.cpp
+ sp-attribute-widget.cpp
+ sp-color-gtkselector.cpp
+ sp-color-icc-selector.cpp
+ sp-color-notebook.cpp
+ sp-color-scales.cpp
+ sp-color-selector.cpp
+ sp-color-slider.cpp
+ sp-color-wheel-selector.cpp
+ sp-widget.cpp
+ sp-xmlview-attr-list.cpp
+ sp-xmlview-content.cpp
+ sp-xmlview-tree.cpp
+ spinbutton-events.cpp
+ spw-utilities.cpp
+ stroke-style.cpp
+ swatch-selector.cpp
+ toolbox.cpp
+
+
+ # -------
+ # Headers
+ button.h
+ dash-selector.h
+ desktop-widget.h
+ eek-preview.h
+ ege-paint-def.h
+ fill-n-stroke-factory.h
+ fill-style.h
+ font-selector.h
+ gradient-image.h
+ gradient-selector.h
+ gradient-toolbar.h
+ gradient-vector.h
+ icon.h
+ paint-selector.h
+ ruler.h
+ select-toolbar.h
+ shrink-wrap-button.h
+ sp-attribute-widget.h
+ sp-color-gtkselector.h
+ sp-color-icc-selector.h
+ sp-color-notebook.h
+ sp-color-scales.h
+ sp-color-selector.h
+ sp-color-slider.h
+ sp-color-wheel-selector.h
+ sp-widget.h
+ sp-xmlview-attr-list.h
+ sp-xmlview-content.h
+ sp-xmlview-tree.h
+ spinbutton-events.h
+ spw-utilities.h
+ stroke-style.h
+ swatch-selector.h
+ toolbox.h
+ widget-sizes.h
)
-ADD_LIBRARY(widgets STATIC ${widgets_SRC})
-TARGET_LINK_LIBRARIES(widgets
-2geom ${INKSCAPE_LIBS})
+
+# add_inkscape_lib(widgets_LIB "${widgets_SRC}")
+add_inkscape_source("${widgets_SRC}")
diff --git a/src/widgets/Makefile_insert b/src/widgets/Makefile_insert
index af32ec700..86046b918 100644
--- a/src/widgets/Makefile_insert
+++ b/src/widgets/Makefile_insert
@@ -42,8 +42,6 @@ ink_common_sources += \
widgets/sp-color-icc-selector.h \
widgets/sp-color-notebook.cpp \
widgets/sp-color-notebook.h \
- widgets/sp-color-preview.cpp \
- widgets/sp-color-preview.h \
widgets/sp-color-scales.cpp \
widgets/sp-color-scales.h \
widgets/sp-color-selector.cpp \
diff --git a/src/widgets/button.cpp b/src/widgets/button.cpp
index dc830d096..1360e0a30 100644
--- a/src/widgets/button.cpp
+++ b/src/widgets/button.cpp
@@ -43,20 +43,10 @@ static gint sp_button_process_event (SPButton *button, GdkEvent *event);
static void sp_button_set_action (SPButton *button, SPAction *action);
static void sp_button_set_doubleclick_action (SPButton *button, SPAction *action);
-static void sp_button_action_set_active (SPAction *action, unsigned int active, void *data);
-static void sp_button_action_set_sensitive (SPAction *action, unsigned int sensitive, void *data);
-static void sp_button_action_set_shortcut (SPAction *action, unsigned int shortcut, void *data);
-static void sp_button_set_composed_tooltip (GtkTooltips *tooltips, GtkWidget *widget, SPAction *action);
+static void sp_button_action_set_active (SPButton *button, bool active);
+static void sp_button_set_composed_tooltip (GtkWidget *widget, SPAction *action);
static GtkToggleButtonClass *parent_class;
-SPActionEventVector button_event_vector = {
- {NULL},
- NULL,
- sp_button_action_set_active,
- sp_button_action_set_sensitive,
- sp_button_action_set_shortcut,
- NULL
-};
GType sp_button_get_type(void)
{
@@ -98,12 +88,13 @@ sp_button_init (SPButton *button)
{
button->action = NULL;
button->doubleclick_action = NULL;
- button->tooltips = NULL;
+ new (&button->c_set_active) sigc::connection();
+ new (&button->c_set_sensitive) sigc::connection();
gtk_container_set_border_width (GTK_CONTAINER (button), 0);
- GTK_WIDGET_UNSET_FLAGS (GTK_WIDGET (button), GTK_CAN_FOCUS);
- GTK_WIDGET_UNSET_FLAGS (GTK_WIDGET (button), GTK_CAN_DEFAULT);
+ gtk_widget_set_can_focus (GTK_WIDGET (button), FALSE);
+ gtk_widget_set_can_default (GTK_WIDGET (button), FALSE);
g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (sp_button_perform_action), NULL);
g_signal_connect_after (G_OBJECT (button), "event", G_CALLBACK (sp_button_process_event), NULL);
@@ -112,23 +103,18 @@ sp_button_init (SPButton *button)
static void
sp_button_destroy (GtkObject *object)
{
- SPButton *button;
-
- button = SP_BUTTON (object);
-
- if (button->tooltips) {
- g_object_unref (G_OBJECT (button->tooltips));
- button->tooltips = NULL;
- }
+ SPButton *button = SP_BUTTON (object);
if (button->action) {
sp_button_set_action (button, NULL);
}
-
if (button->doubleclick_action) {
sp_button_set_doubleclick_action (button, NULL);
}
+ button->c_set_active.~connection();
+ button->c_set_sensitive.~connection();
+
((GtkObjectClass *) (parent_class))->destroy (object);
}
@@ -186,7 +172,7 @@ sp_button_perform_action (SPButton *button, gpointer /*data*/)
GtkWidget *
-sp_button_new( Inkscape::IconSize size, SPButtonType type, SPAction *action, SPAction *doubleclick_action, GtkTooltips *tooltips )
+sp_button_new( Inkscape::IconSize size, SPButtonType type, SPAction *action, SPAction *doubleclick_action )
{
SPButton *button;
@@ -194,9 +180,6 @@ sp_button_new( Inkscape::IconSize size, SPButtonType type, SPAction *action, SPA
button->type = type;
button->lsize = CLAMP( size, Inkscape::ICON_SIZE_MENU, Inkscape::ICON_SIZE_DECORATION );
- button->tooltips = tooltips;
-
- if (tooltips) g_object_ref ((GObject *) tooltips);
sp_button_set_action (button, action);
if (doubleclick_action)
@@ -221,12 +204,13 @@ static void
sp_button_set_doubleclick_action (SPButton *button, SPAction *action)
{
if (button->doubleclick_action) {
- nr_object_unref ((NRObject *) button->doubleclick_action);
+ g_object_unref (button->doubleclick_action);
}
button->doubleclick_action = action;
if (action) {
- button->doubleclick_action = (SPAction *) nr_object_ref ((NRObject *) action);
+ g_object_ref(action);
}
+
}
static void
@@ -235,17 +219,25 @@ sp_button_set_action (SPButton *button, SPAction *action)
GtkWidget *child;
if (button->action) {
- nr_active_object_remove_listener_by_data ((NRActiveObject *) button->action, button);
- nr_object_unref ((NRObject *) button->action);
+ button->c_set_active.disconnect();
+ button->c_set_sensitive.disconnect();
child = gtk_bin_get_child (GTK_BIN (button));
if (child) {
gtk_container_remove (GTK_CONTAINER (button), child);
}
+ g_object_unref(button->action);
}
button->action = action;
if (action) {
- button->action = (SPAction *) nr_object_ref ((NRObject *) action);
- nr_active_object_add_listener ((NRActiveObject *) action, (NRObjectEventVector *) &button_event_vector, sizeof (SPActionEventVector), button);
+ g_object_ref(action);
+ button->c_set_active = action->signal_set_active.connect(
+ sigc::bind<0>(
+ sigc::ptr_fun(&sp_button_action_set_active),
+ SP_BUTTON(button)));
+ button->c_set_sensitive = action->signal_set_sensitive.connect(
+ sigc::bind<0>(
+ sigc::ptr_fun(&gtk_widget_set_sensitive),
+ GTK_WIDGET(button)));
if (action->image) {
child = sp_icon_new (button->lsize, action->image);
gtk_widget_show (child);
@@ -253,16 +245,12 @@ sp_button_set_action (SPButton *button, SPAction *action)
}
}
- if (button->tooltips) {
- sp_button_set_composed_tooltip (button->tooltips, (GtkWidget *) button, action);
- }
+ sp_button_set_composed_tooltip ((GtkWidget *) button, action);
}
static void
-sp_button_action_set_active (SPAction */*action*/, unsigned int active, void *data)
+sp_button_action_set_active (SPButton *button, bool active)
{
- SPButton *button;
- button = (SPButton *) data;
if (button->type != SP_BUTTON_TYPE_TOGGLE) {
return;
}
@@ -273,22 +261,7 @@ sp_button_action_set_active (SPAction */*action*/, unsigned int active, void *da
}
}
-static void
-sp_button_action_set_sensitive (SPAction */*action*/, unsigned int sensitive, void *data)
-{
- gtk_widget_set_sensitive (GTK_WIDGET (data), sensitive);
-}
-
-static void
-sp_button_action_set_shortcut (SPAction *action, unsigned int /*shortcut*/, void *data)
-{
- SPButton *button=SP_BUTTON (data);
- if (button->tooltips) {
- sp_button_set_composed_tooltip (button->tooltips, GTK_WIDGET (button), action);
- }
-}
-
-static void sp_button_set_composed_tooltip(GtkTooltips *tooltips, GtkWidget *widget, SPAction *action)
+static void sp_button_set_composed_tooltip(GtkWidget *widget, SPAction *action)
{
if (action) {
unsigned int shortcut = sp_shortcut_get_primary (action->verb);
@@ -298,16 +271,16 @@ static void sp_button_set_composed_tooltip(GtkTooltips *tooltips, GtkWidget *wid
gchar *key = sp_shortcut_get_label(shortcut);
gchar *tip = g_strdup_printf ("%s (%s)", action->tip, key);
- gtk_tooltips_set_tip(tooltips, widget, tip, NULL);
+ gtk_widget_set_tooltip_text(widget, tip);
g_free(tip);
g_free(key);
} else {
// action has no shortcut
- gtk_tooltips_set_tip(tooltips, widget, action->tip, NULL);
+ gtk_widget_set_tooltip_text(widget, action->tip);
}
} else {
// no action
- gtk_tooltips_set_tip(tooltips, widget, NULL, NULL);
+ gtk_widget_set_tooltip_text(widget, NULL);
}
}
@@ -316,13 +289,12 @@ sp_button_new_from_data( Inkscape::IconSize size,
SPButtonType type,
Inkscape::UI::View::View *view,
const gchar *name,
- const gchar *tip,
- GtkTooltips *tooltips )
+ const gchar *tip )
{
GtkWidget *button;
SPAction *action=sp_action_new(view, name, name, tip, name, 0);
- button = sp_button_new (size, type, action, NULL, tooltips);
- nr_object_unref ((NRObject *) action);
+ button = sp_button_new (size, type, action, NULL);
+ g_object_unref(action);
return button;
}
diff --git a/src/widgets/button.h b/src/widgets/button.h
index f14af94d1..41863357d 100644
--- a/src/widgets/button.h
+++ b/src/widgets/button.h
@@ -13,13 +13,11 @@
*/
#define SP_TYPE_BUTTON (sp_button_get_type ())
-#define SP_BUTTON(o) (GTK_CHECK_CAST ((o), SP_TYPE_BUTTON, SPButton))
-#define SP_IS_BUTTON(o) (GTK_CHECK_TYPE ((o), SP_TYPE_BUTTON))
-
-#include <gtk/gtkwidget.h>
-#include <gtk/gtktogglebutton.h>
-#include <gtk/gtktooltips.h>
+#define SP_BUTTON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_BUTTON, SPButton))
+#define SP_IS_BUTTON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_BUTTON))
+#include <gtk/gtk.h>
+#include <sigc++/sigc++.h>
#include "helper/action.h"
#include "icon-size.h"
@@ -40,7 +38,9 @@ struct SPButton {
unsigned int psize;
SPAction *action;
SPAction *doubleclick_action;
- GtkTooltips *tooltips;
+
+ sigc::connection c_set_active;
+ sigc::connection c_set_sensitive;
};
struct SPButtonClass {
@@ -51,7 +51,7 @@ struct SPButtonClass {
GType sp_button_get_type (void);
-GtkWidget *sp_button_new (Inkscape::IconSize size, SPButtonType type, SPAction *action, SPAction *doubleclick_action, GtkTooltips *tooltips);
+GtkWidget *sp_button_new (Inkscape::IconSize size, SPButtonType type, SPAction *action, SPAction *doubleclick_action);
void sp_button_toggle_set_down (SPButton *button, gboolean down);
@@ -59,8 +59,7 @@ GtkWidget *sp_button_new_from_data (Inkscape::IconSize size,
SPButtonType type,
Inkscape::UI::View::View *view,
const gchar *name,
- const gchar *tip,
- GtkTooltips *tooltips);
+ const gchar *tip);
diff --git a/src/widgets/dash-selector.cpp b/src/widgets/dash-selector.cpp
index e7e029334..6b22bd396 100644
--- a/src/widgets/dash-selector.cpp
+++ b/src/widgets/dash-selector.cpp
@@ -1,7 +1,6 @@
-#define __SP_DASH_SELECTOR_NEW_C__
-
-/** @file
- * @brief Option menu for selecting dash patterns - implementation
+/**
+ * @file
+ * Option menu for selecting dash patterns - implementation.
*/
/* Author:
* Lauris Kaplinski <lauris@kaplinski.com>
@@ -22,9 +21,9 @@
#include <cstring>
#include <string>
-#include <libnr/nr-macros.h>
#include <gtk/gtk.h>
#include <glibmm/i18n.h>
+#include <2geom/coord.h>
#include "style.h"
#include "dialogs/dialog-events.h"
@@ -32,7 +31,7 @@
#include <gtkmm/optionmenu.h>
#include <gtkmm/adjustment.h>
-#include <gtkmm/spinbutton.h>
+#include "ui/widget/spinbutton.h"
#include "dash-selector.h"
@@ -73,7 +72,7 @@ SPDashSelector::SPDashSelector() {
dash->set_menu(*m);
offset = new Gtk::Adjustment(0.0, 0.0, 10.0, 0.1, 1.0, 0.0);
- Gtk::SpinButton *sb = new Gtk::SpinButton(*offset, 0.1, 2);
+ Inkscape::UI::Widget::SpinButton *sb = new Inkscape::UI::Widget::SpinButton(*offset, 0.1, 2);
tt->set_tip(*sb, _("Pattern offset"));
sp_dialog_defocus_on_enter_cpp(sb);
@@ -144,7 +143,7 @@ SPDashSelector::set_dash (int ndash, double *dash, double o)
if (np == ndash) {
int j;
for (j = 0; j < ndash; j++) {
- if (!NR_DF_TEST_CLOSE (dash[j], pattern[j], delta))
+ if (!Geom::are_near(dash[j], pattern[j], delta))
break;
}
if (j == ndash) {
diff --git a/src/widgets/dash-selector.h b/src/widgets/dash-selector.h
index 6db66f805..1fadf4385 100644
--- a/src/widgets/dash-selector.h
+++ b/src/widgets/dash-selector.h
@@ -1,9 +1,6 @@
-#ifndef __SP_DASH_SELECTOR_NEW_H__
-#define __SP_DASH_SELECTOR_NEW_H__
+#ifndef SEEN_SP_DASH_SELECTOR_NEW_H
+#define SEEN_SP_DASH_SELECTOR_NEW_H
-/** @file
- * @brief Option menu for selecting dash patterns
- */
/* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
* Maximilian Albert <maximilian.albert> (gtkmm-ification)
@@ -25,6 +22,9 @@ class Adjustment;
}
// TODO: should we rather derive this from OptionMenu and add the spinbutton somehow else?
+/**
+ * Option menu for selecting dash patterns.
+ */
class SPDashSelector : public Gtk::HBox {
public:
SPDashSelector();
@@ -47,7 +47,7 @@ private:
static gchar const *const _prefs_path;
};
-#endif
+#endif // SEEN_SP_DASH_SELECTOR_NEW_H
/*
Local Variables:
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index 323a5b08b..b65d78117 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -24,18 +24,18 @@
# include "config.h"
#endif
-#include <gtkmm/paned.h>
#include <gtk/gtk.h>
+#include <gtkmm.h>
+#include <2geom/rect.h>
#include "box3d-context.h"
-#include "color-profile-fns.h"
+#include "cms-system.h"
#include "conn-avoid-ref.h"
#include "desktop-events.h"
#include "desktop-handles.h"
#include "desktop-widget.h"
#include "display/sp-canvas.h"
#include "display/canvas-arena.h"
-#include "display/nr-arena.h"
#include "document.h"
#include "ege-color-prof-tracker.h"
#include "ege-select-one-action.h"
@@ -58,6 +58,7 @@
#include "ui/widget/selected-style.h"
#include "ui/uxmanager.h"
#include "util/ege-appear-time-tracker.h"
+#include "sp-root.h"
// We're in the "widgets" directory, so no need to explicitly prefix these:
#include "button.h"
@@ -192,7 +193,7 @@ void CMSPrefWatcher::hook(EgeColorProfTracker */*tracker*/, gint screen, gint mo
guint len = 0;
ege_color_prof_tracker_get_profile_for( screen, monitor, reinterpret_cast<gpointer*>(&buf), &len );
- Glib::ustring id = Inkscape::colorprofile_set_display_per( buf, len, screen, monitor );
+ Glib::ustring id = Inkscape::CMSSystem::setDisplayPer( buf, len, screen, monitor );
#endif // ENABLE_LCMS
}
@@ -212,7 +213,7 @@ void CMSPrefWatcher::_setCmsSensitive(bool enabled)
#if ENABLE_LCMS
for ( std::list<SPDesktopWidget*>::iterator it = _widget_list.begin(); it != _widget_list.end(); ++it ) {
SPDesktopWidget *dtw = *it;
- if ( GTK_WIDGET_SENSITIVE( dtw->cms_adjust ) != enabled ) {
+ if ( gtk_widget_get_sensitive( dtw->cms_adjust ) != enabled ) {
cms_adjust_set_sensitive( dtw, enabled );
}
}
@@ -230,12 +231,12 @@ SPDesktopWidget::setMessage (Inkscape::MessageType type, const gchar *message)
gtk_label_set_markup (sb, message ? message : "");
// make sure the important messages are displayed immediately!
- if (type == Inkscape::IMMEDIATE_MESSAGE && GTK_WIDGET_DRAWABLE (GTK_WIDGET(sb))) {
+ if (type == Inkscape::IMMEDIATE_MESSAGE && gtk_widget_is_drawable (GTK_WIDGET(sb))) {
gtk_widget_queue_draw(GTK_WIDGET(sb));
gdk_window_process_updates(GTK_WIDGET(sb)->window, TRUE);
}
- gtk_tooltips_set_tip (this->tt, this->select_status_eventbox, gtk_label_get_text (sb) , NULL);
+ gtk_widget_set_tooltip_text (this->select_status_eventbox, gtk_label_get_text (sb));
}
Geom::Point
@@ -253,7 +254,7 @@ static GTimer *overallTimer = 0;
*/
GType SPDesktopWidget::getType(void)
{
- static GtkType type = 0;
+ static GType type = 0;
if (!type) {
GTypeInfo info = {
sizeof(SPDesktopWidgetClass),
@@ -280,7 +281,7 @@ GType SPDesktopWidget::getType(void)
static void
sp_desktop_widget_class_init (SPDesktopWidgetClass *klass)
{
- dtw_parent_class = (SPViewWidgetClass*)gtk_type_class (SP_TYPE_VIEW_WIDGET);
+ dtw_parent_class = (SPViewWidgetClass*)g_type_class_peek_parent (klass);
GtkObjectClass *object_class = (GtkObjectClass *) klass;
GtkWidgetClass *widget_class = (GtkWidgetClass *) klass;
@@ -312,7 +313,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
dtw->window = 0;
dtw->desktop = NULL;
dtw->_interaction_disabled_counter = 0;
- dtw->tt = gtk_tooltips_new ();
/* Main table */
dtw->vbox = gtk_vbox_new (FALSE, 0);
@@ -333,7 +333,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
dtw->hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_end( GTK_BOX (dtw->vbox), dtw->hbox, TRUE, TRUE, 0 );
gtk_widget_show(dtw->hbox);
-
+
dtw->aux_toolbox = ToolboxFactory::createAuxToolbox();
gtk_box_pack_end (GTK_BOX (dtw->vbox), dtw->aux_toolbox, FALSE, TRUE, 0);
@@ -358,7 +358,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
dtw->hruler = sp_hruler_new ();
dtw->hruler_box = eventbox;
sp_ruler_set_metric (GTK_RULER (dtw->hruler), SP_PT);
- gtk_tooltips_set_tip (dtw->tt, dtw->hruler_box, gettext(sp_unit_get_plural (&sp_unit_get_by_id(SP_UNIT_PT))), NULL);
+ gtk_widget_set_tooltip_text (dtw->hruler_box, gettext(sp_unit_get_plural (&sp_unit_get_by_id(SP_UNIT_PT))));
gtk_container_add (GTK_CONTAINER (eventbox), dtw->hruler);
gtk_table_attach (GTK_TABLE (canvas_tbl), eventbox, 1, 2, 0, 1, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(GTK_FILL), widget->style->xthickness, 0);
g_signal_connect (G_OBJECT (eventbox), "button_press_event", G_CALLBACK (sp_dt_hruler_event), dtw);
@@ -370,7 +370,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
dtw->vruler = sp_vruler_new ();
dtw->vruler_box = eventbox;
sp_ruler_set_metric (GTK_RULER (dtw->vruler), SP_PT);
- gtk_tooltips_set_tip (dtw->tt, dtw->vruler_box, gettext(sp_unit_get_plural (&sp_unit_get_by_id(SP_UNIT_PT))), NULL);
+ gtk_widget_set_tooltip_text (dtw->vruler_box, gettext(sp_unit_get_plural (&sp_unit_get_by_id(SP_UNIT_PT))));
gtk_container_add (GTK_CONTAINER (eventbox), GTK_WIDGET (dtw->vruler));
gtk_table_attach (GTK_TABLE (canvas_tbl), eventbox, 0, 1, 1, 2, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(GTK_FILL), 0, widget->style->ythickness);
g_signal_connect (G_OBJECT (eventbox), "button_press_event", G_CALLBACK (sp_dt_vruler_event), dtw);
@@ -387,9 +387,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
dtw->sticky_zoom = sp_button_new_from_data ( Inkscape::ICON_SIZE_DECORATION,
SP_BUTTON_TYPE_TOGGLE,
NULL,
- INKSCAPE_ICON_ZOOM_ORIGINAL,
- _("Zoom drawing if window size changes"),
- dtw->tt);
+ INKSCAPE_ICON("zoom-original"),
+ _("Zoom drawing if window size changes"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dtw->sticky_zoom), prefs->getBool("/options/stickyzoom/value"));
gtk_box_pack_start (GTK_BOX (dtw->vscrollbar_box), dtw->sticky_zoom, FALSE, FALSE, 0);
g_signal_connect (G_OBJECT (dtw->sticky_zoom), "toggled", G_CALLBACK (sp_dtw_sticky_zoom_toggled), dtw);
@@ -410,9 +409,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
dtw->cms_adjust = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
SP_BUTTON_TYPE_TOGGLE,
NULL,
- INKSCAPE_ICON_COLOR_MANAGEMENT,
- tip,
- dtw->tt );
+ INKSCAPE_ICON("color-management"),
+ tip );
#if ENABLE_LCMS
{
Glib::ustring current = prefs->getString("/options/displayprofile/uri");
@@ -442,7 +440,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
#if ENABLE_LCMS
dtw->canvas->enable_cms_display_adj = prefs->getBool("/options/displayprofile/enable");
#endif // ENABLE_LCMS
- GTK_WIDGET_SET_FLAGS (GTK_WIDGET (dtw->canvas), GTK_CAN_FOCUS);
+ gtk_widget_set_can_focus (GTK_WIDGET (dtw->canvas), TRUE);
style = gtk_style_copy (GTK_WIDGET (dtw->canvas)->style);
style->bg[GTK_STATE_NORMAL] = style->white;
gtk_widget_set_style (GTK_WIDGET (dtw->canvas), style);
@@ -492,16 +490,16 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
// zoom status spinbutton
dtw->zoom_status = gtk_spin_button_new_with_range (log(SP_DESKTOP_ZOOM_MIN)/log(2), log(SP_DESKTOP_ZOOM_MAX)/log(2), 0.1);
- gtk_tooltips_set_tip (dtw->tt, dtw->zoom_status, _("Zoom"), NULL);
+ gtk_widget_set_tooltip_text (dtw->zoom_status, _("Zoom"));
gtk_widget_set_size_request (dtw->zoom_status, STATUS_ZOOM_WIDTH, -1);
gtk_entry_set_width_chars (GTK_ENTRY (dtw->zoom_status), 6);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (dtw->zoom_status), FALSE);
gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (dtw->zoom_status), GTK_UPDATE_ALWAYS);
g_signal_connect (G_OBJECT (dtw->zoom_status), "input", G_CALLBACK (sp_dtw_zoom_input), dtw);
g_signal_connect (G_OBJECT (dtw->zoom_status), "output", G_CALLBACK (sp_dtw_zoom_output), dtw);
- gtk_object_set_data (GTK_OBJECT (dtw->zoom_status), "dtw", dtw->canvas);
- gtk_signal_connect (GTK_OBJECT (dtw->zoom_status), "focus-in-event", GTK_SIGNAL_FUNC (spinbutton_focus_in), dtw->zoom_status);
- gtk_signal_connect (GTK_OBJECT (dtw->zoom_status), "key-press-event", GTK_SIGNAL_FUNC (spinbutton_keypress), dtw->zoom_status);
+ g_object_set_data (G_OBJECT (dtw->zoom_status), "dtw", dtw->canvas);
+ g_signal_connect (G_OBJECT (dtw->zoom_status), "focus-in-event", G_CALLBACK (spinbutton_focus_in), dtw->zoom_status);
+ g_signal_connect (G_OBJECT (dtw->zoom_status), "key-press-event", G_CALLBACK (spinbutton_keypress), dtw->zoom_status);
dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->zoom_status), "value_changed", G_CALLBACK (sp_dtw_zoom_value_changed), dtw);
dtw->zoom_update = g_signal_connect (G_OBJECT (dtw->zoom_status), "populate_popup", G_CALLBACK (sp_dtw_zoom_populate_popup), dtw);
@@ -512,7 +510,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
gtk_table_attach(GTK_TABLE(dtw->coord_status), gtk_vseparator_new(), 0,1, 0,2, GTK_FILL, GTK_FILL, 0, 0);
eventbox = gtk_event_box_new ();
gtk_container_add (GTK_CONTAINER (eventbox), dtw->coord_status);
- gtk_tooltips_set_tip (dtw->tt, eventbox, _("Cursor coordinates"), NULL);
+ gtk_widget_set_tooltip_text (eventbox, _("Cursor coordinates"));
GtkWidget *label_x = gtk_label_new(_("X:"));
gtk_misc_set_alignment (GTK_MISC(label_x), 0.0, 0.5);
gtk_table_attach(GTK_TABLE(dtw->coord_status), label_x, 1,2, 0,1, GTK_FILL, GTK_FILL, 0, 0);
@@ -542,13 +540,11 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
#if ENABLE_LCMS
bool fromDisplay = prefs->getBool( "/options/displayprofile/from_display");
if ( fromDisplay ) {
- Glib::ustring id = Inkscape::colorprofile_get_display_id( 0, 0 );
+ Glib::ustring id = Inkscape::CMSSystem::getDisplayId( 0, 0 );
bool enabled = false;
- if ( dtw->canvas->cms_key ) {
- *(dtw->canvas->cms_key) = id;
- enabled = !dtw->canvas->cms_key->empty();
- }
+ dtw->canvas->cms_key = id;
+ enabled = !dtw->canvas->cms_key.empty();
cms_adjust_set_sensitive( dtw, enabled );
}
#endif // ENABLE_LCMS
@@ -601,7 +597,7 @@ sp_desktop_widget_destroy (GtkObject *object)
}
g_signal_handlers_disconnect_by_func(G_OBJECT (dtw->zoom_status), (gpointer) G_CALLBACK(sp_dtw_zoom_input), dtw);
g_signal_handlers_disconnect_by_func(G_OBJECT (dtw->zoom_status), (gpointer) G_CALLBACK(sp_dtw_zoom_output), dtw);
- gtk_signal_disconnect_by_data (GTK_OBJECT (dtw->zoom_status), dtw->zoom_status);
+ g_signal_handlers_disconnect_matched (G_OBJECT (dtw->zoom_status), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, dtw->zoom_status);
g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->zoom_status), (gpointer) G_CALLBACK (sp_dtw_zoom_value_changed), dtw);
g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->zoom_status), (gpointer) G_CALLBACK (sp_dtw_zoom_populate_popup), dtw);
g_signal_handlers_disconnect_by_func (G_OBJECT (dtw->canvas), (gpointer) G_CALLBACK (sp_desktop_widget_event), dtw);
@@ -631,12 +627,10 @@ sp_desktop_widget_destroy (GtkObject *object)
void
SPDesktopWidget::updateTitle(gchar const* uri)
{
- Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window");
+ Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
if (window) {
- gchar const *fname = ( TRUE
- ? uri
- : g_basename(uri) );
+ gchar const *fname = uri;
GString *name = g_string_new ("");
gchar const *grayscalename = "(grayscale) ";
@@ -646,10 +640,10 @@ SPDesktopWidget::updateTitle(gchar const* uri)
gchar const *colormodename = "";
gchar const *colormodenamecomma = "";
- if (this->desktop->getColorMode() == Inkscape::COLORRENDERMODE_GRAYSCALE) {
+ if (this->desktop->getColorMode() == Inkscape::COLORMODE_GRAYSCALE) {
colormodename = grayscalename;
colormodenamecomma = grayscalenamecomma;
- } else if (this->desktop->getColorMode() == Inkscape::COLORRENDERMODE_PRINT_COLORS_PREVIEW) {
+ } else if (this->desktop->getColorMode() == Inkscape::COLORMODE_PRINT_COLORS_PREVIEW) {
colormodename = printcolorsname;
colormodenamecomma = printcolorsnamecomma;
}
@@ -699,7 +693,7 @@ sp_desktop_widget_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
return;
}
- if (GTK_WIDGET_REALIZED (widget)) {
+ if (gtk_widget_get_realized (widget)) {
Geom::Rect const area = dtw->desktop->get_display_area();
double zoom = dtw->desktop->current_zoom();
@@ -737,15 +731,11 @@ sp_desktop_widget_realize (GtkWidget *widget)
if (GTK_WIDGET_CLASS (dtw_parent_class)->realize)
(* GTK_WIDGET_CLASS (dtw_parent_class)->realize) (widget);
- NRRect d;
- d.x0 = 0.0;
- d.y0 = 0.0;
- d.x1 = (dtw->desktop->doc())->getWidth ();
- d.y1 = (dtw->desktop->doc())->getHeight ();
+ Geom::Rect d = Geom::Rect::from_xywh(Geom::Point(0,0), (dtw->desktop->doc())->getDimensions());
- if ((fabs (d.x1 - d.x0) < 1.0) || (fabs (d.y1 - d.y0) < 1.0)) return;
+ if (d.width() < 1.0 || d.height() < 1.0) return;
- dtw->desktop->set_display_area (d.x0, d.y0, d.x1, d.y1, 10);
+ dtw->desktop->set_display_area (d.left(), d.top(), d.right(), d.bottom(), 10);
dtw->updateNamedview();
}
@@ -807,13 +797,11 @@ void sp_dtw_color_profile_event(EgeColorProfTracker */*tracker*/, SPDesktopWidge
GdkScreen* screen = gtk_widget_get_screen(GTK_WIDGET(dtw));
gint screenNum = gdk_screen_get_number(screen);
gint monitor = gdk_screen_get_monitor_at_window(screen, gtk_widget_get_toplevel(GTK_WIDGET(dtw))->window);
- Glib::ustring id = Inkscape::colorprofile_get_display_id( screenNum, monitor );
+ Glib::ustring id = Inkscape::CMSSystem::getDisplayId( screenNum, monitor );
bool enabled = false;
- if ( dtw->canvas->cms_key ) {
- *(dtw->canvas->cms_key) = id;
- dtw->requestCanvasUpdate();
- enabled = !dtw->canvas->cms_key->empty();
- }
+ dtw->canvas->cms_key = id;
+ dtw->requestCanvasUpdate();
+ enabled = !dtw->canvas->cms_key.empty();
cms_adjust_set_sensitive( dtw, enabled );
#endif // ENABLE_LCMS
}
@@ -891,7 +879,7 @@ SPDesktopWidget::shutdown()
"If you close without saving, your changes will be discarded."),
doc->getName());
// fix for bug 1767940:
- GTK_WIDGET_UNSET_FLAGS(GTK_WIDGET(GTK_MESSAGE_DIALOG(dialog)->label), GTK_CAN_FOCUS);
+ gtk_widget_set_can_focus(GTK_WIDGET(GTK_MESSAGE_DIALOG(dialog)->label), FALSE);
GtkWidget *close_button;
close_button = gtk_button_new_with_mnemonic(_("Close _without saving"));
@@ -909,7 +897,7 @@ SPDesktopWidget::shutdown()
switch (response) {
case GTK_RESPONSE_YES:
{
- Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window");
+ Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
doc->doRef();
sp_namedview_document_from_window(desktop);
@@ -943,12 +931,11 @@ SPDesktopWidget::shutdown()
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_NONE,
- _("<span weight=\"bold\" size=\"larger\">The file \"%s\" was saved with a format (%s) that may cause data loss!</span>\n\n"
+ _("<span weight=\"bold\" size=\"larger\">The file \"%s\" was saved with a format that may cause data loss!</span>\n\n"
"Do you want to save this file as Inkscape SVG?"),
- doc->getName() ? doc->getName() : "Unnamed",
- SP_MODULE_KEY_OUTPUT_SVG_INKSCAPE);
+ doc->getName() ? doc->getName() : "Unnamed");
// fix for bug 1767940:
- GTK_WIDGET_UNSET_FLAGS(GTK_WIDGET(GTK_MESSAGE_DIALOG(dialog)->label), GTK_CAN_FOCUS);
+ gtk_widget_set_can_focus(GTK_WIDGET(GTK_MESSAGE_DIALOG(dialog)->label), FALSE);
GtkWidget *close_button;
close_button = gtk_button_new_with_mnemonic(_("Close _without saving"));
@@ -971,7 +958,7 @@ SPDesktopWidget::shutdown()
{
doc->doRef();
- Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window");
+ Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
if (sp_file_save_dialog(*window, doc, Inkscape::Extension::FILE_SAVE_METHOD_INKSCAPE_SVG)) {
doc->doUnref();
@@ -1080,10 +1067,10 @@ SPDesktopWidget::letZoomGrabFocus()
void
SPDesktopWidget::getWindowGeometry (gint &x, gint &y, gint &w, gint &h)
{
- gboolean vis = GTK_WIDGET_VISIBLE (this);
+ gboolean vis = gtk_widget_get_visible (GTK_WIDGET(this));
(void)vis; // TODO figure out why it is here but not used.
- Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window");
+ Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
if (window)
{
@@ -1095,7 +1082,7 @@ SPDesktopWidget::getWindowGeometry (gint &x, gint &y, gint &w, gint &h)
void
SPDesktopWidget::setWindowPosition (Geom::Point p)
{
- Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window");
+ Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
if (window)
{
@@ -1106,12 +1093,12 @@ SPDesktopWidget::setWindowPosition (Geom::Point p)
void
SPDesktopWidget::setWindowSize (gint w, gint h)
{
- Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window");
+ Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
if (window)
{
window->set_default_size (w, h);
- window->reshow_with_initial_size ();
+ window->resize (w, h);
}
}
@@ -1124,7 +1111,7 @@ SPDesktopWidget::setWindowSize (gint w, gint h)
void
SPDesktopWidget::setWindowTransient (void *p, int transient_policy)
{
- Gtk::Window *window = (Gtk::Window*)gtk_object_get_data (GTK_OBJECT(this), "window");
+ Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
if (window)
{
GtkWindow *w = (GtkWindow *) window->gobj();
@@ -1151,6 +1138,25 @@ SPDesktopWidget::presentWindow()
gtk_window_present (w);
}
+bool SPDesktopWidget::showInfoDialog( Glib::ustring const &message )
+{
+ bool result = false;
+ GtkWindow *window = GTK_WINDOW( gtk_widget_get_toplevel( GTK_WIDGET(this) ) );
+ if (window)
+ {
+ GtkWidget *dialog = gtk_message_dialog_new(
+ window,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_OK,
+ "%s", message.c_str());
+ gtk_window_set_title( GTK_WINDOW(dialog), _("Note:")); // probably want to take this as a parameter.
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ }
+ return result;
+}
+
bool
SPDesktopWidget::warnDialog (gchar* text)
{
@@ -1259,26 +1265,26 @@ void SPDesktopWidget::layoutWidgets()
#ifndef GDK_WINDOWING_QUARTZ
if (!prefs->getBool(pref_root + "menu/state", true)) {
- gtk_widget_hide_all (dtw->menubar);
+ gtk_widget_hide (dtw->menubar);
} else {
gtk_widget_show_all (dtw->menubar);
}
#endif
if (!prefs->getBool(pref_root + "commands/state", true)) {
- gtk_widget_hide_all (dtw->commands_toolbox);
+ gtk_widget_hide (dtw->commands_toolbox);
} else {
gtk_widget_show_all (dtw->commands_toolbox);
}
if (!prefs->getBool(pref_root + "snaptoolbox/state", true)) {
- gtk_widget_hide_all (dtw->snap_toolbox);
+ gtk_widget_hide (dtw->snap_toolbox);
} else {
gtk_widget_show_all (dtw->snap_toolbox);
}
if (!prefs->getBool(pref_root + "toppanel/state", true)) {
- gtk_widget_hide_all (dtw->aux_toolbox);
+ gtk_widget_hide (dtw->aux_toolbox);
} else {
// we cannot just show_all because that will show all tools' panels;
// this is a function from toolbox.cpp that shows only the current tool's panel
@@ -1286,27 +1292,27 @@ void SPDesktopWidget::layoutWidgets()
}
if (!prefs->getBool(pref_root + "toolbox/state", true)) {
- gtk_widget_hide_all (dtw->tool_toolbox);
+ gtk_widget_hide (dtw->tool_toolbox);
} else {
gtk_widget_show_all (dtw->tool_toolbox);
}
if (!prefs->getBool(pref_root + "statusbar/state", true)) {
- gtk_widget_hide_all (dtw->statusbar);
+ gtk_widget_hide (dtw->statusbar);
} else {
gtk_widget_show_all (dtw->statusbar);
}
if (!prefs->getBool(pref_root + "panels/state", true)) {
- gtk_widget_hide_all( GTK_WIDGET(dtw->panels->gobj()) );
+ gtk_widget_hide ( GTK_WIDGET(dtw->panels->gobj()) );
} else {
gtk_widget_show_all( GTK_WIDGET(dtw->panels->gobj()) );
}
if (!prefs->getBool(pref_root + "scrollbars/state", true)) {
- gtk_widget_hide_all (dtw->hscrollbar);
- gtk_widget_hide_all (dtw->vscrollbar_box);
- gtk_widget_hide_all( dtw->cms_adjust );
+ gtk_widget_hide (dtw->hscrollbar);
+ gtk_widget_hide (dtw->vscrollbar_box);
+ gtk_widget_hide ( dtw->cms_adjust );
} else {
gtk_widget_show_all (dtw->hscrollbar);
gtk_widget_show_all (dtw->vscrollbar_box);
@@ -1314,8 +1320,8 @@ void SPDesktopWidget::layoutWidgets()
}
if (!prefs->getBool(pref_root + "rulers/state", true)) {
- gtk_widget_hide_all (dtw->hruler);
- gtk_widget_hide_all (dtw->vruler);
+ gtk_widget_hide (dtw->hruler);
+ gtk_widget_hide (dtw->vruler);
} else {
gtk_widget_show_all (dtw->hruler);
gtk_widget_show_all (dtw->vruler);
@@ -1506,7 +1512,7 @@ sp_desktop_widget_update_hruler (SPDesktopWidget *dtw)
* the latter is used for drawing e.g. the grids and guides. Only when the viewbox
* coincides with the pixel buffer, everything will line up nicely.
*/
- NR::IRect viewbox = dtw->canvas->getViewboxIntegers();
+ Geom::IntRect viewbox = dtw->canvas->getViewboxIntegers();
double const scale = dtw->desktop->current_zoom();
double s = viewbox.min()[Geom::X] / scale - dtw->ruler_origin[Geom::X];
@@ -1522,7 +1528,7 @@ sp_desktop_widget_update_vruler (SPDesktopWidget *dtw)
* the latter is used for drawing e.g. the grids and guides. Only when the viewbox
* coincides with the pixel buffer, everything will line up nicely.
*/
- NR::IRect viewbox = dtw->canvas->getViewboxIntegers();
+ Geom::IntRect viewbox = dtw->canvas->getViewboxIntegers();
double const scale = dtw->desktop->current_zoom();
double s = viewbox.min()[Geom::Y] / -scale - dtw->ruler_origin[Geom::Y];
@@ -1545,12 +1551,12 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags)
/* This loops through all the grandchildren of aux toolbox,
* and for each that it finds, it performs an sp_search_by_data_recursive(),
* looking for widgets that hold some "tracker" data (this is used by
- * all toolboxes to refer to the unit selector). The default document units
+ * all toolboxes to refer to the unit selector). The default document units
* is then selected within these unit selectors.
*
* Of course it would be nice to be able to refer to the toolbox and the
* unit selector directly by name, but I don't yet see a way to do that.
- *
+ *
* This should solve: https://bugs.launchpad.net/inkscape/+bug/362995
*/
if (GTK_IS_CONTAINER(aux_toolbox)) {
@@ -1558,7 +1564,7 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags)
for (GList *i = ch; i != NULL; i = i->next) {
if (GTK_IS_CONTAINER(i->data)) {
GList *grch = gtk_container_get_children (GTK_CONTAINER(i->data));
- for (GList *j = grch; j != NULL; j = j->next) {
+ for (GList *j = grch; j != NULL; j = j->next) {
if (!GTK_IS_WIDGET(j->data)) // wasn't a widget
continue;
@@ -1576,8 +1582,8 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags)
} // children
} // if aux_toolbox is a container
- gtk_tooltips_set_tip(this->tt, this->hruler_box, gettext(sp_unit_get_plural (nv->doc_units)), NULL);
- gtk_tooltips_set_tip(this->tt, this->vruler_box, gettext(sp_unit_get_plural (nv->doc_units)), NULL);
+ gtk_widget_set_tooltip_text(this->hruler_box, gettext(sp_unit_get_plural (nv->doc_units)));
+ gtk_widget_set_tooltip_text(this->vruler_box, gettext(sp_unit_get_plural (nv->doc_units)));
sp_desktop_widget_update_rulers(this);
ToolboxFactory::updateSnapToolbox(this->desktop, 0, this->snap_toolbox);
@@ -1787,9 +1793,9 @@ void
sp_desktop_widget_toggle_rulers (SPDesktopWidget *dtw)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- if (GTK_WIDGET_VISIBLE (dtw->hruler)) {
- gtk_widget_hide_all (dtw->hruler);
- gtk_widget_hide_all (dtw->vruler);
+ if (gtk_widget_get_visible (dtw->hruler)) {
+ gtk_widget_hide (dtw->hruler);
+ gtk_widget_hide (dtw->vruler);
prefs->setBool(dtw->desktop->is_fullscreen() ? "/fullscreen/rulers/state" : "/window/rulers/state", false);
} else {
gtk_widget_show_all (dtw->hruler);
@@ -1802,10 +1808,10 @@ void
sp_desktop_widget_toggle_scrollbars (SPDesktopWidget *dtw)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- if (GTK_WIDGET_VISIBLE (dtw->hscrollbar)) {
- gtk_widget_hide_all (dtw->hscrollbar);
- gtk_widget_hide_all (dtw->vscrollbar_box);
- gtk_widget_hide_all( dtw->cms_adjust );
+ if (gtk_widget_get_visible (dtw->hscrollbar)) {
+ gtk_widget_hide (dtw->hscrollbar);
+ gtk_widget_hide (dtw->vscrollbar_box);
+ gtk_widget_hide ( dtw->cms_adjust );
prefs->setBool(dtw->desktop->is_fullscreen() ? "/fullscreen/scrollbars/state" : "/window/scrollbars/state", false);
} else {
gtk_widget_show_all (dtw->hscrollbar);
@@ -1818,7 +1824,7 @@ sp_desktop_widget_toggle_scrollbars (SPDesktopWidget *dtw)
void sp_desktop_widget_toggle_color_prof_adj( SPDesktopWidget *dtw )
{
- if ( GTK_WIDGET_SENSITIVE( dtw->cms_adjust ) ) {
+ if ( gtk_widget_get_sensitive( dtw->cms_adjust ) ) {
if ( SP_BUTTON_IS_DOWN(dtw->cms_adjust) ) {
sp_button_toggle_set_down( SP_BUTTON(dtw->cms_adjust), FALSE );
} else {
@@ -1832,8 +1838,8 @@ void
sp_spw_toggle_menubar (SPDesktopWidget *dtw, bool is_fullscreen)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- if (GTK_WIDGET_VISIBLE (dtw->menubar)) {
- gtk_widget_hide_all (dtw->menubar);
+ if (gtk_widget_get_visible (dtw->menubar)) {
+ gtk_widget_hide (dtw->menubar);
prefs->setBool(is_fullscreen ? "/fullscreen/menu/state" : "/window/menu/state", false);
} else {
gtk_widget_show_all (dtw->menubar);
@@ -1870,9 +1876,8 @@ sp_desktop_widget_update_scrollbars (SPDesktopWidget *dtw, double scale)
SPDocument *doc = dtw->desktop->doc();
Geom::Rect darea ( Geom::Point(-doc->getWidth(), -doc->getHeight()),
Geom::Point(2 * doc->getWidth(), 2 * doc->getHeight()) );
- SPObject* root = doc->root;
- SPItem* item = SP_ITEM(root);
- Geom::OptRect deskarea = Geom::unify(darea, item->getBboxDesktop());
+
+ Geom::OptRect deskarea = darea | doc->getRoot()->desktopVisualBounds();
/* Canvas region we always show unconditionally */
Geom::Rect carea( Geom::Point(deskarea->min()[Geom::X] * scale - 64, deskarea->max()[Geom::Y] * -scale - 64),
diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h
index 0102897e5..29af8bd75 100644
--- a/src/widgets/desktop-widget.h
+++ b/src/widgets/desktop-widget.h
@@ -12,11 +12,8 @@
* ? -2004
*/
-#include <gtk/gtktooltips.h>
-#include <gtk/gtkwindow.h>
+#include <gtk/gtk.h>
-#include "libnr/nr-point.h"
-#include "forward.h"
#include "sp-object.h"
#include "message.h"
#include "ui/view/view-widget.h"
@@ -24,17 +21,19 @@
#include <stddef.h>
#include <sigc++/connection.h>
+#include <2geom/point.h>
// forward declaration
typedef struct _EgeColorProfTracker EgeColorProfTracker;
struct SPCanvas;
+class SPDesktopWidget;
#define SP_TYPE_DESKTOP_WIDGET SPDesktopWidget::getType()
-#define SP_DESKTOP_WIDGET(o) (GTK_CHECK_CAST ((o), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidget))
-#define SP_DESKTOP_WIDGET_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidgetClass))
-#define SP_IS_DESKTOP_WIDGET(o) (GTK_CHECK_TYPE ((o), SP_TYPE_DESKTOP_WIDGET))
-#define SP_IS_DESKTOP_WIDGET_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_DESKTOP_WIDGET))
+#define SP_DESKTOP_WIDGET(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidget))
+#define SP_DESKTOP_WIDGET_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidgetClass))
+#define SP_IS_DESKTOP_WIDGET(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_DESKTOP_WIDGET))
+#define SP_IS_DESKTOP_WIDGET_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_DESKTOP_WIDGET))
void sp_desktop_widget_destroy (SPDesktopWidget* dtw);
@@ -70,8 +69,6 @@ struct SPDesktopWidget {
sigc::connection modified_connection;
- GtkTooltips *tt;
-
SPDesktop *desktop;
Gtk::Window *window;
@@ -200,8 +197,14 @@ struct SPDesktopWidget {
{ _dtw->setCoordinateStatus (p); }
virtual void setMessage (Inkscape::MessageType type, gchar const* msg)
{ _dtw->setMessage (type, msg); }
+
+ virtual bool showInfoDialog( Glib::ustring const &message ) {
+ return _dtw->showInfoDialog( message );
+ }
+
virtual bool warnDialog (gchar* text)
{ return _dtw->warnDialog (text); }
+
virtual Inkscape::UI::Widget::Dock* getDock ()
{ return _dtw->getDock(); }
};
@@ -218,6 +221,7 @@ struct SPDesktopWidget {
void setWindowSize (gint w, gint h);
void setWindowTransient (void *p, int transient_policy);
void presentWindow();
+ bool showInfoDialog( Glib::ustring const &message );
bool warnDialog (gchar *text);
void setToolboxFocusTo (gchar const *);
void setToolboxAdjustmentValue (gchar const * id, double value);
@@ -234,7 +238,7 @@ struct SPDesktopWidget {
Inkscape::UI::Widget::Dock* getDock();
- static GtkType getType();
+ static GType getType();
static SPDesktopWidget* createInstance(SPNamedView *namedview);
void updateNamedview();
@@ -242,7 +246,7 @@ struct SPDesktopWidget {
private:
GtkWidget *tool_toolbox;
GtkWidget *aux_toolbox;
- GtkWidget *commands_toolbox,;
+ GtkWidget *commands_toolbox;
GtkWidget *snap_toolbox;
static void init(SPDesktopWidget *widget);
diff --git a/src/widgets/eek-preview.cpp b/src/widgets/eek-preview.cpp
index 8fefbe75c..d867647ed 100644
--- a/src/widgets/eek-preview.cpp
+++ b/src/widgets/eek-preview.cpp
@@ -1,6 +1,3 @@
-/** @file
- * @brief EEK preview stuff
- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
@@ -192,7 +189,7 @@ static guint eek_preview_signals[LAST_SIGNAL] = { 0 };
gboolean eek_preview_expose_event( GtkWidget* widget, GdkEventExpose* event )
{
-/* g_message("Exposed!!! %s", GTK_WIDGET_HAS_FOCUS(widget) ? "XXX" : "---" ); */
+/* g_message("Exposed!!! %s", gtk_widget_has_focus(widget) ? "XXX" : "---" ); */
gint insetX = 0;
gint insetY = 0;
@@ -218,13 +215,13 @@ gboolean eek_preview_expose_event( GtkWidget* widget, GdkEventExpose* event )
}
*/
- if ( GTK_WIDGET_DRAWABLE( widget ) ) {
+ if ( gtk_widget_is_drawable( widget ) ) {
GtkStyle* style = gtk_widget_get_style( widget );
if ( insetX > 0 || insetY > 0 ) {
gtk_paint_flat_box( style,
widget->window,
- (GtkStateType)GTK_WIDGET_STATE(widget),
+ (GtkStateType)gtk_widget_get_state(widget),
GTK_SHADOW_NONE,
NULL,
widget,
@@ -379,7 +376,7 @@ gboolean eek_preview_expose_event( GtkWidget* widget, GdkEventExpose* event )
}
- if ( GTK_WIDGET_HAS_FOCUS(widget) ) {
+ if ( gtk_widget_has_focus(widget) ) {
gtk_paint_focus( style,
widget->window,
GTK_STATE_NORMAL,
@@ -437,7 +434,7 @@ static gboolean eek_preview_button_press_cb( GtkWidget* widget, GdkEventButton*
if ( gtk_get_event_widget( (GdkEvent*)event ) == widget ) {
EekPreview* preview = EEK_PREVIEW(widget);
- if ( preview->_takesFocus && !GTK_WIDGET_HAS_FOCUS(widget) ) {
+ if ( preview->_takesFocus && !gtk_widget_has_focus(widget) ) {
gtk_widget_grab_focus(widget);
}
@@ -684,8 +681,8 @@ void eek_preview_set_details( EekPreview* preview, PreviewStyle prevstyle, ViewT
static void eek_preview_init( EekPreview *preview )
{
GtkWidget* widg = GTK_WIDGET(preview);
- GTK_WIDGET_SET_FLAGS( widg, GTK_CAN_FOCUS );
- GTK_WIDGET_SET_FLAGS( widg, GTK_RECEIVES_DEFAULT );
+ gtk_widget_set_can_focus( widg, TRUE );
+ gtk_widget_set_receives_default( widg, TRUE );
gtk_widget_set_sensitive( widg, TRUE );
diff --git a/src/widgets/eek-preview.h b/src/widgets/eek-preview.h
index 49fe8e660..7275ab9b4 100644
--- a/src/widgets/eek-preview.h
+++ b/src/widgets/eek-preview.h
@@ -1,6 +1,3 @@
-/** @file
- * @brief EEK preview stuff
- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
@@ -40,8 +37,13 @@
#ifndef SEEN_EEK_PREVIEW_H
#define SEEN_EEK_PREVIEW_H
-#include <gdk/gdkpixbuf.h>
-#include <gtk/gtkdrawingarea.h>
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+/**
+ * @file
+ * Generic implementation of a object that can be shown by a preview.
+ */
G_BEGIN_DECLS
diff --git a/src/widgets/ege-paint-def.cpp b/src/widgets/ege-paint-def.cpp
index 2fc6927df..542205b53 100644
--- a/src/widgets/ege-paint-def.cpp
+++ b/src/widgets/ege-paint-def.cpp
@@ -1,6 +1,3 @@
-/** @file
- * @brief EGE paint definition
- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
@@ -50,6 +47,7 @@
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
+#include <glibmm/i18n.h>
#include <glibmm/stringutils.h>
#if !defined(_)
@@ -71,7 +69,8 @@ PaintDef::PaintDef() :
r(0),
g(0),
b(0),
- editable(false)
+ editable(false),
+ _listeners()
{
}
@@ -81,7 +80,8 @@ PaintDef::PaintDef( ColorType type ) :
r(0),
g(0),
b(0),
- editable(false)
+ editable(false),
+ _listeners()
{
switch (type) {
case CLEAR:
@@ -102,7 +102,8 @@ PaintDef::PaintDef( unsigned int r, unsigned int g, unsigned int b, const std::s
r(r),
g(g),
b(b),
- editable(false)
+ editable(false),
+ _listeners()
{
}
@@ -127,6 +128,7 @@ PaintDef& PaintDef::operator=( PaintDef const &other )
b = other.b;
descr = other.descr;
editable = other.editable;
+ //TODO: _listeners should be assigned a value
}
return *this;
}
diff --git a/src/widgets/ege-paint-def.h b/src/widgets/ege-paint-def.h
index 32f92ac3d..856146019 100644
--- a/src/widgets/ege-paint-def.h
+++ b/src/widgets/ege-paint-def.h
@@ -1,6 +1,3 @@
-/** @file
- * @brief EGE paint definition
- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
@@ -49,6 +46,9 @@ namespace ege
typedef void (*ColorCallback)( void* data );
+/**
+ * Pure data representation of a color definition.
+ */
class PaintDef
{
public:
diff --git a/src/widgets/fill-style.cpp b/src/widgets/fill-style.cpp
index b4272a3a4..6f076b4c4 100644
--- a/src/widgets/fill-style.cpp
+++ b/src/widgets/fill-style.cpp
@@ -1,5 +1,6 @@
-/** @file
- * @brief Fill style widget
+/**
+ * @file
+ * Fill style widget.
*/
/* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
@@ -23,7 +24,7 @@
#include <glibmm/i18n.h>
#include <gtkmm/box.h>
-#include <gtk/gtkvbox.h>
+#include <gtk/gtk.h>
#include "desktop.h"
#include "selection.h"
diff --git a/src/widgets/font-selector.cpp b/src/widgets/font-selector.cpp
index 71e9563cd..a9340a291 100644
--- a/src/widgets/font-selector.cpp
+++ b/src/widgets/font-selector.cpp
@@ -20,31 +20,17 @@
# include "config.h"
#endif
-#include <libnr/nr-blit.h>
-#include <libnr/nr-convert2geom.h>
#include <libnrtype/font-instance.h>
-#include <libnrtype/raster-glyph.h>
-#include <libnrtype/RasterFont.h>
-#include <libnrtype/TextWrapper.h>
-#include <libnrtype/one-glyph.h>
#include <libnrtype/font-lister.h>
#include <2geom/transforms.h>
#include <gtk/gtk.h>
-#include <gtk/gtkframe.h>
-#include <gtk/gtkscrolledwindow.h>
-#include <gtk/gtkclist.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtkcombo.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtkdrawingarea.h>
-
-#include "../display/nr-plain-stuff-gdk.h"
+
#include <glibmm/i18n.h>
-#include "../desktop.h"
-#include "font-selector.h"
+#include "desktop.h"
+#include "widgets/font-selector.h"
/* SPFontSelector */
@@ -135,7 +121,7 @@ static void sp_font_selector_class_init(SPFontSelectorClass *c)
{
GtkObjectClass *object_class = (GtkObjectClass *) c;
- fs_parent_class = (GtkHBoxClass* )gtk_type_class(GTK_TYPE_HBOX);
+ fs_parent_class = (GtkHBoxClass* )g_type_class_peek_parent (c);
fs_signals[FONT_SET] = gtk_signal_new ("font_set",
GTK_RUN_FIRST,
@@ -398,7 +384,7 @@ static void sp_font_selector_emit_set (SPFontSelector *fsel)
GtkWidget *sp_font_selector_new()
{
- SPFontSelector *fsel = (SPFontSelector*) gtk_type_new(SP_TYPE_FONT_SELECTOR);
+ SPFontSelector *fsel = (SPFontSelector*) g_object_new(SP_TYPE_FONT_SELECTOR, NULL);
return (GtkWidget *) fsel;
}
@@ -519,321 +505,6 @@ double sp_font_selector_get_size(SPFontSelector *fsel)
return fsel->fontsize;
}
-/* SPFontPreview */
-
-struct SPFontPreview
-{
- GtkDrawingArea darea;
-
- font_instance *font;
- raster_font *rfont;
- gchar *phrase;
- unsigned long rgba;
-};
-
-struct SPFontPreviewClass
-{
- GtkDrawingAreaClass parent_class;
-};
-
-static void sp_font_preview_class_init(SPFontPreviewClass *c);
-static void sp_font_preview_init(SPFontPreview *fsel);
-static void sp_font_preview_destroy(GtkObject *object);
-
-void sp_font_preview_size_request(GtkWidget *widget, GtkRequisition *req);
-static gint sp_font_preview_expose(GtkWidget *widget, GdkEventExpose *event);
-
-static GtkDrawingAreaClass *fp_parent_class = NULL;
-
-GType sp_font_preview_get_type()
-{
- static GType type = 0;
- if (!type) {
- GTypeInfo info = {
- sizeof(SPFontPreviewClass),
- 0, // base_init
- 0, // base_finalize
- (GClassInitFunc)sp_font_preview_class_init,
- 0, // class_finalize
- 0, // class_data
- sizeof(SPFontPreview),
- 0, // n_preallocs
- (GInstanceInitFunc)sp_font_preview_init,
- 0 // value_table
- };
- type = g_type_register_static(GTK_TYPE_DRAWING_AREA, "SPFontPreview", &info, static_cast<GTypeFlags>(0));
- }
- return type;
-}
-
-static void sp_font_preview_class_init (SPFontPreviewClass *c)
-{
- GtkObjectClass *object_class = (GtkObjectClass *) c;
- GtkWidgetClass *widget_class = (GtkWidgetClass *) c;
-
- fp_parent_class = (GtkDrawingAreaClass*) gtk_type_class(GTK_TYPE_DRAWING_AREA);
-
- object_class->destroy = sp_font_preview_destroy;
-
- widget_class->size_request = sp_font_preview_size_request;
- widget_class->expose_event = sp_font_preview_expose;
-}
-
-static void sp_font_preview_init(SPFontPreview *fprev)
-{
- fprev->rgba = 0x000000ff;
-}
-
-static void sp_font_preview_destroy(GtkObject *object)
-{
- SPFontPreview *fprev = SP_FONT_PREVIEW (object);
-
- if (fprev->rfont) {
- fprev->rfont->Unref();
- fprev->rfont = NULL;
- }
-
- if (fprev->font) {
- fprev->font->Unref();
- fprev->font = NULL;
- }
-
- g_free(fprev->phrase);
- fprev->phrase = NULL;
-
- if (GTK_OBJECT_CLASS (fp_parent_class)->destroy) {
- GTK_OBJECT_CLASS (fp_parent_class)->destroy(object);
- }
-}
-
-void sp_font_preview_size_request(GtkWidget */*widget*/, GtkRequisition *req)
-{
- req->width = 256;
- req->height = 32;
-}
-
-#define SPFP_MAX_LEN 64
-
-static gint sp_font_preview_expose(GtkWidget *widget, GdkEventExpose *event)
-{
- SPFontPreview *fprev = SP_FONT_PREVIEW(widget);
-
- if (GTK_WIDGET_DRAWABLE (widget)) {
- if (fprev->rfont) {
-
- int glyphs[SPFP_MAX_LEN];
- double hpos[SPFP_MAX_LEN];
-
- font_instance *tface = fprev->rfont->daddy;
-
- double theSize = fprev->rfont->style.transform.descrim();
-
- gchar const *p;
- if (fprev->phrase) {
- p = fprev->phrase;
- } else {
- /* TRANSLATORS: Test string used in text and font dialog (when no
- * text has been entered) to get a preview of the font. Choose
- * some representative characters that users of your locale will be
- * interested in. */
- p = _("AaBbCcIiPpQq12369$\342\202\254\302\242?.;/()");
- }
- int len = 0;
-
- NRRect bbox;
- bbox.x0 = bbox.y0 = bbox.x1 = bbox.y1 = 0.0;
-
- text_wrapper* str_text=new text_wrapper;
- str_text->SetDefaultFont(tface);
- str_text->AppendUTF8(p,-1);
- if ( str_text->uni32_length > 0 ) {
- str_text->DoLayout();
- if ( str_text->glyph_length > 0 ) {
- PangoFont *curPF = NULL;
- font_instance *curF = NULL;
- for (int i = 0; i < str_text->glyph_length && i < SPFP_MAX_LEN; i++) {
- if ( str_text->glyph_text[i].font != curPF ) {
- curPF = str_text->glyph_text[i].font;
- if (curF) {
- curF->Unref();
- }
- curF = NULL;
- if ( curPF ) {
- PangoFontDescription* pfd = pango_font_describe(curPF);
- curF = (font_factory::Default())->Face(pfd);
- pango_font_description_free(pfd);
- }
- }
- Geom::Point base_pt(str_text->glyph_text[i].x, str_text->glyph_text[i].y);
- base_pt *= theSize;
-
- glyphs[len] = str_text->glyph_text[i].gl;
- hpos[len] = base_pt[0];
- len++;
- if ( curF ) {
- Geom::OptRect nbbox = curF->BBox(str_text->glyph_text[i].gl);
- if (nbbox) {
- bbox.x0 = MIN(bbox.x0, base_pt[Geom::X] + theSize * (nbbox->min())[0]);
- bbox.y0 = MIN(bbox.y0, base_pt[Geom::Y] - theSize * (nbbox->max())[1]);
- bbox.x1 = MAX(bbox.x1, base_pt[Geom::X] + theSize * (nbbox->max())[0]);
- bbox.y1 = MAX(bbox.y1, base_pt[Geom::Y] - theSize * (nbbox->min())[1]);
- }
- }
- }
- if ( curF ) {
- curF->Unref();
- }
- }
- }
-
- // XXX: FIXME: why does this code ignore adv.y
- /* while (p && *p && (len < SPFP_MAX_LEN)) {
- unsigned int unival;
- NRRect gbox;
- unival = g_utf8_get_char (p);
- glyphs[len] = tface->MapUnicodeChar( unival);
- hpos[len] = (int)px;
- Geom::Point adv = fprev->rfont->Advance(glyphs[len]);
- fprev->rfont->BBox( glyphs[len], &gbox);
- bbox.x0 = MIN (px + gbox.x0, bbox.x0);
- bbox.y0 = MIN (py + gbox.y0, bbox.y0);
- bbox.x1 = MAX (px + gbox.x1, bbox.x1);
- bbox.y1 = MAX (py + gbox.y1, bbox.y1);
- px += adv[Geom::X];
- len += 1;
- p = g_utf8_next_char (p);
- }*/
-
- float startx = (widget->allocation.width - (bbox.x1 - bbox.x0)) / 2;
- float starty = widget->allocation.height - (widget->allocation.height - (bbox.y1 - bbox.y0)) / 2 - bbox.y1;
-
- for (int y = event->area.y; y < event->area.y + event->area.height; y += 64) {
- for (int x = event->area.x; x < event->area.x + event->area.width; x += 64) {
- NRPixBlock pb, m;
- int x0 = x;
- int y0 = y;
- int x1 = MIN(x0 + 64, event->area.x + event->area.width);
- int y1 = MIN(y0 + 64, event->area.y + event->area.height);
- guchar *ps = nr_pixelstore_16K_new (TRUE, 0xff);
- nr_pixblock_setup_extern(&pb, NR_PIXBLOCK_MODE_R8G8B8, x0, y0, x1, y1, ps, 3 * (x1 - x0), FALSE, FALSE);
- nr_pixblock_setup_fast(&m, NR_PIXBLOCK_MODE_A8, x0, y0, x1, y1, TRUE);
- pb.empty = FALSE;
-
- PangoFont *curPF = NULL;
- font_instance *curF = NULL;
- raster_font *curRF = NULL;
- for (int i=0; i < len; i++) {
- if ( str_text->glyph_text[i].font != curPF ) {
- curPF=str_text->glyph_text[i].font;
- if ( curF ) {
- curF->Unref();
- }
- curF = NULL;
- if ( curPF ) {
- PangoFontDescription* pfd = pango_font_describe(curPF);
- curF=(font_factory::Default())->Face(pfd);
- pango_font_description_free(pfd);
- }
- if ( curF ) {
- if ( curRF ) {
- curRF->Unref();
- }
- curRF = NULL;
- curRF = curF->RasterFont(fprev->rfont->style);
- }
- }
- raster_glyph *g = (curRF) ? curRF->GetGlyph(glyphs[i]) : NULL;
- if ( g ) {
- g->Blit(Geom::Point(hpos[i] + startx, starty), m);
- }
- }
- if (curRF) {
- curRF->Unref();
- }
- if (curF) {
- curF->Unref();
- }
-
- nr_blit_pixblock_mask_rgba32(&pb, &m, fprev->rgba);
- gdk_draw_rgb_image(widget->window, widget->style->black_gc,
- x0, y0, x1 - x0, y1 - y0,
- GDK_RGB_DITHER_NONE, NR_PIXBLOCK_PX (&pb), pb.rs);
- nr_pixblock_release(&m);
- nr_pixblock_release(&pb);
- nr_pixelstore_16K_free(ps);
- }
- }
-
- delete str_text;
-
- } else {
- nr_gdk_draw_gray_garbage(widget->window, widget->style->black_gc,
- event->area.x, event->area.y,
- event->area.width, event->area.height);
- }
- }
-
- return TRUE;
-}
-
-GtkWidget * sp_font_preview_new()
-{
- GtkWidget *w = (GtkWidget*) gtk_type_new(SP_TYPE_FONT_PREVIEW);
-
- return w;
-}
-
-void sp_font_preview_set_font(SPFontPreview *fprev, font_instance *font, SPFontSelector *fsel)
-{
- if (font)
- {
- font->Ref();
- }
-
- if (fprev->font)
- {
- fprev->font->Unref();
- }
-
- fprev->font = font;
-
- if (fprev->rfont)
- {
- fprev->rfont->Unref();
- fprev->rfont=NULL;
- }
-
- if (fprev->font)
- {
- Geom::Affine flip(Geom::Scale(fsel->fontsize, -fsel->fontsize));
- fprev->rfont = fprev->font->RasterFont(flip, 0);
- }
-
- if (GTK_WIDGET_DRAWABLE (fprev)) gtk_widget_queue_draw (GTK_WIDGET (fprev));
-}
-
-void sp_font_preview_set_rgba32(SPFontPreview *fprev, guint32 rgba)
-{
- fprev->rgba = rgba;
- if (GTK_WIDGET_DRAWABLE (fprev)) {
- gtk_widget_queue_draw (GTK_WIDGET (fprev));
- }
-}
-
-void sp_font_preview_set_phrase(SPFontPreview *fprev, const gchar *phrase)
-{
- g_free (fprev->phrase);
- if (phrase) {
- fprev->phrase = g_strdup (phrase);
- } else {
- fprev->phrase = NULL;
- }
- if (GTK_WIDGET_DRAWABLE(fprev)) {
- gtk_widget_queue_draw (GTK_WIDGET (fprev));
- }
-}
-
-
/*
Local Variables:
mode:c++
diff --git a/src/widgets/font-selector.h b/src/widgets/font-selector.h
index 6ab2a1a12..340a76f7f 100644
--- a/src/widgets/font-selector.h
+++ b/src/widgets/font-selector.h
@@ -1,5 +1,5 @@
-#ifndef __SP_FONT_SELECTOR_H__
-#define __SP_FONT_SELECTOR_H__
+#ifndef SP_FONT_SELECTOR_H
+#define SP_FONT_SELECTOR_H
/*
* Font selection widgets
@@ -17,22 +17,18 @@
#include <glib.h>
struct SPFontSelector;
-struct SPFontPreview;
#define SP_TYPE_FONT_SELECTOR (sp_font_selector_get_type ())
#define SP_FONT_SELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_FONT_SELECTOR, SPFontSelector))
#define SP_IS_FONT_SELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_FONT_SELECTOR))
-#define SP_TYPE_FONT_PREVIEW (sp_font_preview_get_type ())
-#define SP_FONT_PREVIEW(o) (GTK_CHECK_CAST ((o), SP_TYPE_FONT_PREVIEW, SPFontPreview))
-#define SP_IS_FONT_PREVIEW(o) (GTK_CHECK_TYPE ((o), SP_TYPE_FONT_PREVIEW))
-
-#include <libnrtype/nrtype-forward.h>
#include <gtk/gtkwidget.h>
+class font_instance;
+
/* SPFontSelector */
-GtkType sp_font_selector_get_type (void);
+GType sp_font_selector_get_type (void);
GtkWidget *sp_font_selector_new (void);
@@ -41,19 +37,9 @@ void sp_font_selector_set_font (SPFontSelector *fsel, font_instance *font, doubl
font_instance *sp_font_selector_get_font (SPFontSelector *fsel);
double sp_font_selector_get_size (SPFontSelector *fsel);
-/* SPFontPreview */
-
-GtkType sp_font_preview_get_type (void);
-
-GtkWidget *sp_font_preview_new (void);
-
-void sp_font_preview_set_font (SPFontPreview *fprev, font_instance *font, SPFontSelector *fsel);
-void sp_font_preview_set_rgba32 (SPFontPreview *fprev, guint32 rgba);
-void sp_font_preview_set_phrase (SPFontPreview *fprev, const gchar *phrase);
-
-#endif
+#endif // SP_FONT_SELECTOR_H
/*
Local Variables:
diff --git a/src/widgets/gradient-image.cpp b/src/widgets/gradient-image.cpp
index 11d2d528a..3e5f15499 100644
--- a/src/widgets/gradient-image.cpp
+++ b/src/widgets/gradient-image.cpp
@@ -12,10 +12,8 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <libnr/nr-pixblock-pattern.h>
#include "macros.h"
-#include "../display/nr-plain-stuff.h"
-#include "../display/nr-plain-stuff-gdk.h"
+#include "display/cairo-utils.h"
#include "gradient-image.h"
#include "sp-gradient.h"
#include "sp-gradient-fns.h"
@@ -29,10 +27,7 @@ static void sp_gradient_image_class_init (SPGradientImageClass *klass);
static void sp_gradient_image_init (SPGradientImage *image);
static void sp_gradient_image_destroy (GtkObject *object);
-static void sp_gradient_image_realize (GtkWidget *widget);
-static void sp_gradient_image_unrealize (GtkWidget *widget);
static void sp_gradient_image_size_request (GtkWidget *widget, GtkRequisition *requisition);
-static void sp_gradient_image_size_allocate (GtkWidget *widget, GtkAllocation *allocation);
static gint sp_gradient_image_expose (GtkWidget *widget, GdkEventExpose *event);
static void sp_gradient_image_gradient_release (SPObject *, SPGradientImage *im);
@@ -41,24 +36,22 @@ static void sp_gradient_image_update (SPGradientImage *img);
static GtkWidgetClass *parent_class;
-GtkType
+GType
sp_gradient_image_get_type (void)
{
- //TODO: switch to GObject
- // GtkType and such calls were deprecated a while back with the
- // introduction of GObject as a separate layer, with GType instead. --JonCruz
-
- static GtkType type = 0;
+ static GType type = 0;
if (!type) {
- GtkTypeInfo info = {
- (gchar*) "SPGradientImage",
- sizeof (SPGradientImage),
+ GTypeInfo info = {
sizeof (SPGradientImageClass),
- (GtkClassInitFunc) sp_gradient_image_class_init,
- (GtkObjectInitFunc) sp_gradient_image_init,
- NULL, NULL, NULL
+ NULL, NULL,
+ (GClassInitFunc) sp_gradient_image_class_init,
+ NULL, NULL,
+ sizeof (SPGradientImage),
+ 0,
+ (GInstanceInitFunc) sp_gradient_image_init,
+ NULL
};
- type = gtk_type_unique (GTK_TYPE_WIDGET, &info);
+ type = g_type_register_static (GTK_TYPE_WIDGET, "SPGradientImage", &info, (GTypeFlags)0);
}
return type;
}
@@ -72,24 +65,20 @@ sp_gradient_image_class_init (SPGradientImageClass *klass)
object_class = (GtkObjectClass *) klass;
widget_class = (GtkWidgetClass *) klass;
- parent_class = (GtkWidgetClass*)gtk_type_class (GTK_TYPE_WIDGET);
+ parent_class = (GtkWidgetClass*)g_type_class_peek_parent (klass);
object_class->destroy = sp_gradient_image_destroy;
- widget_class->realize = sp_gradient_image_realize;
- widget_class->unrealize = sp_gradient_image_unrealize;
widget_class->size_request = sp_gradient_image_size_request;
- widget_class->size_allocate = sp_gradient_image_size_allocate;
widget_class->expose_event = sp_gradient_image_expose;
}
static void
sp_gradient_image_init (SPGradientImage *image)
{
- GTK_WIDGET_SET_FLAGS (image, GTK_NO_WINDOW);
+ gtk_widget_set_has_window (GTK_WIDGET(image), FALSE);
image->gradient = NULL;
- image->px = NULL;
new (&image->release_connection) sigc::connection();
new (&image->modified_connection) sigc::connection();
@@ -115,105 +104,39 @@ sp_gradient_image_destroy (GtkObject *object)
(* ((GtkObjectClass *) (parent_class))->destroy) (object);
}
-static void
-sp_gradient_image_realize (GtkWidget *widget)
-{
- SPGradientImage *image;
-
- image = SP_GRADIENT_IMAGE (widget);
-
- if (((GtkWidgetClass *) parent_class)->realize)
- (* ((GtkWidgetClass *) parent_class)->realize) (widget);
-
- g_assert (!image->px);
- image->px = g_new (guchar, 3 * VBLOCK * widget->allocation.width);
- sp_gradient_image_update (image);
-}
-
-static void
-sp_gradient_image_unrealize (GtkWidget *widget)
-{
- SPGradientImage *image;
-
- image = SP_GRADIENT_IMAGE (widget);
-
- if (((GtkWidgetClass *) parent_class)->unrealize)
- (* ((GtkWidgetClass *) parent_class)->unrealize) (widget);
-
- g_assert (image->px);
- g_free (image->px);
- image->px = NULL;
-}
-
-static void
-sp_gradient_image_size_request (GtkWidget *widget, GtkRequisition *requisition)
-{
- SPGradientImage *slider;
-
- slider = SP_GRADIENT_IMAGE (widget);
-
- requisition->width = 64;
- requisition->height = 12;
-}
-
-static void
-sp_gradient_image_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
+static void sp_gradient_image_size_request(GtkWidget * /*widget*/, GtkRequisition *requisition)
{
- SPGradientImage *image;
-
- image = SP_GRADIENT_IMAGE (widget);
-
- widget->allocation = *allocation;
-
- if (GTK_WIDGET_REALIZED (widget)) {
- g_free (image->px);
- image->px = g_new (guchar, 3 * VBLOCK * allocation->width);
- }
-
- sp_gradient_image_update (image);
+ requisition->width = 64;
+ requisition->height = 12;
}
static gint
sp_gradient_image_expose (GtkWidget *widget, GdkEventExpose *event)
{
- SPGradientImage *image;
-
- image = SP_GRADIENT_IMAGE (widget);
-
- if (GTK_WIDGET_DRAWABLE (widget)) {
- gint x0, y0, x1, y1;
- x0 = MAX (event->area.x, widget->allocation.x);
- y0 = MAX (event->area.y, widget->allocation.y);
- x1 = MIN (event->area.x + event->area.width, widget->allocation.x + widget->allocation.width);
- y1 = MIN (event->area.y + event->area.height, widget->allocation.y + widget->allocation.height);
- if ((x1 > x0) && (y1 > y0)) {
- if (image->px) {
- if (image->gradient) {
- gint y;
- guchar *p;
- p = image->px + 3 * (x0 - widget->allocation.x);
- for (y = y0; y < y1; y += VBLOCK) {
- gdk_draw_rgb_image (widget->window, widget->style->black_gc,
- x0, y,
- (x1 - x0), MIN (VBLOCK, y1 - y),
- GDK_RGB_DITHER_MAX,
- p, widget->allocation.width * 3);
- }
- } else {
- nr_gdk_draw_gray_garbage (widget->window, widget->style->black_gc,
- x0, y0,
- x1 - x0, y1 - y0);
- }
- } else {
- gdk_draw_rectangle (widget->window, widget->style->black_gc,
- x0, y0,
- (x1 - x0), (y1 - x0),
- TRUE);
- }
- }
- }
-
- return TRUE;
+ SPGradientImage *image = SP_GRADIENT_IMAGE (widget);
+ SPGradient *gr = image->gradient;
+
+ cairo_t *ct = gdk_cairo_create(widget->window);
+
+ cairo_rectangle(ct, event->area.x, event->area.y,
+ event->area.width, event->area.height);
+ cairo_clip(ct);
+ cairo_translate(ct, widget->allocation.x, widget->allocation.y);
+
+ cairo_pattern_t *check = ink_cairo_pattern_create_checkerboard();
+ cairo_set_source(ct, check);
+ cairo_paint(ct);
+ cairo_pattern_destroy(check);
+
+ if (gr) {
+ cairo_pattern_t *p = sp_gradient_create_preview_pattern(gr, widget->allocation.width);
+ cairo_set_source(ct, p);
+ cairo_paint(ct);
+ cairo_pattern_destroy(p);
+ }
+ cairo_destroy(ct);
+
+ return TRUE;
}
GtkWidget *
@@ -221,7 +144,7 @@ sp_gradient_image_new (SPGradient *gradient)
{
SPGradientImage *image;
- image = (SPGradientImage*)gtk_type_new (SP_TYPE_GRADIENT_IMAGE);
+ image = (SPGradientImage*)g_object_new (SP_TYPE_GRADIENT_IMAGE, NULL);
sp_gradient_image_set_gradient (image, gradient);
@@ -268,27 +191,7 @@ sp_gradient_image_gradient_modified (SPObject *, guint /*flags*/, SPGradientImag
static void
sp_gradient_image_update (SPGradientImage *image)
{
- GtkAllocation *allocation;
-
- if (!image->px) return;
-
- allocation = &((GtkWidget *) image)->allocation;
-
- if (image->gradient) {
- nr_render_checkerboard_rgb (image->px, allocation->width, VBLOCK, 3 * allocation->width, 0, 0);
- sp_gradient_render_vector_block_rgb (image->gradient,
- image->px, allocation->width, VBLOCK, 3 * allocation->width,
- 0, allocation->width, TRUE);
- } else {
- NRPixBlock pb;
- nr_pixblock_setup_extern (&pb, NR_PIXBLOCK_MODE_R8G8B8,
- 0, 0, allocation->width, VBLOCK,
- image->px, 3 * allocation->width, TRUE, FALSE);
- nr_pixblock_render_gray_noise (&pb, NULL);
- nr_pixblock_release (&pb);
- }
-
- if (GTK_WIDGET_DRAWABLE (image)) {
+ if (gtk_widget_is_drawable (GTK_WIDGET(image))) {
gtk_widget_queue_draw (GTK_WIDGET (image));
}
}
diff --git a/src/widgets/gradient-image.h b/src/widgets/gradient-image.h
index 7b3854a02..0fbed879f 100644
--- a/src/widgets/gradient-image.h
+++ b/src/widgets/gradient-image.h
@@ -13,8 +13,8 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gtk/gtkwidget.h>
-#include "../libnr/nr-matrix.h"
+#include <gtk/gtk.h>
+
class SPGradient;
#include <glib.h>
@@ -23,15 +23,14 @@ class SPGradient;
#include <sigc++/connection.h>
#define SP_TYPE_GRADIENT_IMAGE (sp_gradient_image_get_type ())
-#define SP_GRADIENT_IMAGE(o) (GTK_CHECK_CAST ((o), SP_TYPE_GRADIENT_IMAGE, SPGradientImage))
-#define SP_GRADIENT_IMAGE_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_GRADIENT_IMAGE, SPGradientImageClass))
-#define SP_IS_GRADIENT_IMAGE(o) (GTK_CHECK_TYPE ((o), SP_TYPE_GRADIENT_IMAGE))
-#define SP_IS_GRADIENT_IMAGE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_GRADIENT_IMAGE))
+#define SP_GRADIENT_IMAGE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_GRADIENT_IMAGE, SPGradientImage))
+#define SP_GRADIENT_IMAGE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_GRADIENT_IMAGE, SPGradientImageClass))
+#define SP_IS_GRADIENT_IMAGE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_GRADIENT_IMAGE))
+#define SP_IS_GRADIENT_IMAGE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_GRADIENT_IMAGE))
struct SPGradientImage {
GtkWidget widget;
SPGradient *gradient;
- guchar *px;
sigc::connection release_connection;
sigc::connection modified_connection;
@@ -41,11 +40,9 @@ struct SPGradientImageClass {
GtkWidgetClass parent_class;
};
-GtkType sp_gradient_image_get_type (void);
+GType sp_gradient_image_get_type (void);
GtkWidget *sp_gradient_image_new (SPGradient *gradient);
void sp_gradient_image_set_gradient (SPGradientImage *gi, SPGradient *gr);
-
-
#endif
diff --git a/src/widgets/gradient-selector.cpp b/src/widgets/gradient-selector.cpp
index f7a981c9f..bece60a08 100644
--- a/src/widgets/gradient-selector.cpp
+++ b/src/widgets/gradient-selector.cpp
@@ -16,11 +16,7 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include <gtk/gtkhbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkoptionmenu.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtktooltips.h>
+#include <gtk/gtk.h>
#include "document.h"
#include "../document-private.h"
@@ -49,8 +45,7 @@ static void sp_gradient_selector_destroy (GtkObject *object);
static void sp_gradient_selector_vector_set (SPGradientVectorSelector *gvs, SPGradient *gr, SPGradientSelector *sel);
static void sp_gradient_selector_edit_vector_clicked (GtkWidget *w, SPGradientSelector *sel);
static void sp_gradient_selector_add_vector_clicked (GtkWidget *w, SPGradientSelector *sel);
-
-static void sp_gradient_selector_spread_activate (GtkWidget *widget, SPGradientSelector *sel);
+static void sp_gradient_selector_spread_changed (GtkComboBox *widget, SPGradientSelector *sel);
static GtkVBoxClass *parent_class;
static guint signals[LAST_SIGNAL] = {0};
@@ -87,32 +82,36 @@ sp_gradient_selector_class_init (SPGradientSelectorClass *klass)
object_class = (GtkObjectClass *) klass;
- parent_class = (GtkVBoxClass*)gtk_type_class (GTK_TYPE_VBOX);
+ parent_class = (GtkVBoxClass*)g_type_class_peek_parent (klass);
- signals[GRABBED] = gtk_signal_new ("grabbed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPGradientSelectorClass, grabbed),
+ signals[GRABBED] = g_signal_new ("grabbed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET (SPGradientSelectorClass, grabbed),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- signals[DRAGGED] = gtk_signal_new ("dragged",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPGradientSelectorClass, dragged),
+ G_TYPE_NONE, 0);
+ signals[DRAGGED] = g_signal_new ("dragged",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET (SPGradientSelectorClass, dragged),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- signals[RELEASED] = gtk_signal_new ("released",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPGradientSelectorClass, released),
+ G_TYPE_NONE, 0);
+ signals[RELEASED] = g_signal_new ("released",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET (SPGradientSelectorClass, released),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- signals[CHANGED] = gtk_signal_new ("changed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPGradientSelectorClass, changed),
+ G_TYPE_NONE, 0);
+ signals[CHANGED] = g_signal_new ("changed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET (SPGradientSelectorClass, changed),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
+ G_TYPE_NONE, 0);
object_class->destroy = sp_gradient_selector_destroy;
}
@@ -137,7 +136,6 @@ static void sp_gradient_selector_init(SPGradientSelector *sel)
GtkWidget *hb = gtk_hbox_new( FALSE, 0 );
sel->nonsolid.push_back(hb);
gtk_box_pack_start( GTK_BOX(sel), hb, FALSE, FALSE, 0 );
- GtkTooltips *ttips = gtk_tooltips_new ();
sel->add = gtk_button_new_with_label (_("Duplicate"));
sel->nonsolid.push_back(sel->add);
@@ -159,33 +157,34 @@ static void sp_gradient_selector_init(SPGradientSelector *sel)
gtk_widget_show(hb);
gtk_box_pack_start( GTK_BOX(sel), hb, FALSE, FALSE, 0 );
- sel->spread = gtk_option_menu_new();
+// The GtkComboBoxText API only appeared in Gtk 2.24 but Inkscape supports
+// builds for Gtk >= 2.20.
+// Older versions need to use now-deprecated parts of
+// the GtkComboBox API instead.
+#if GTK_CHECK_VERSION(2,24,0)
+ sel->spread = gtk_combo_box_text_new ();
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (sel->spread), _("none"));
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (sel->spread), _("reflected"));
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (sel->spread), _("direct"));
+#else
+ sel->spread = gtk_combo_box_new_text ();
+ gtk_combo_box_append_text (GTK_COMBO_BOX (sel->spread), _("none"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (sel->spread), _("reflected"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (sel->spread), _("direct"));
+#endif
+
sel->nonsolid.push_back(sel->spread);
gtk_widget_show(sel->spread);
gtk_box_pack_end( GTK_BOX(hb), sel->spread, FALSE, FALSE, 0 );
- gtk_tooltips_set_tip( ttips, sel->spread,
+ gtk_widget_set_tooltip_text( sel->spread,
// TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/pservers.html#LinearGradientSpreadMethodAttribute
_("Whether to fill with flat color beyond the ends of the gradient vector "
"(spreadMethod=\"pad\"), or repeat the gradient in the same direction "
"(spreadMethod=\"repeat\"), or repeat the gradient in alternating opposite "
- "directions (spreadMethod=\"reflect\")"), NULL);
-
- GtkWidget *m = gtk_menu_new();
- GtkWidget *mi = gtk_menu_item_new_with_label(_("none"));
- gtk_menu_append (GTK_MENU (m), mi);
- g_object_set_data (G_OBJECT (mi), "gradientSpread", GUINT_TO_POINTER (SP_GRADIENT_SPREAD_PAD));
- g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (sp_gradient_selector_spread_activate), sel);
- mi = gtk_menu_item_new_with_label (_("reflected"));
- g_object_set_data (G_OBJECT (mi), "gradientSpread", GUINT_TO_POINTER (SP_GRADIENT_SPREAD_REFLECT));
- g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (sp_gradient_selector_spread_activate), sel);
- gtk_menu_append (GTK_MENU (m), mi);
- mi = gtk_menu_item_new_with_label (_("direct"));
- g_object_set_data (G_OBJECT (mi), "gradientSpread", GUINT_TO_POINTER (SP_GRADIENT_SPREAD_REPEAT));
- g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (sp_gradient_selector_spread_activate), sel);
- gtk_menu_append (GTK_MENU (m), mi);
- gtk_widget_show_all (m);
-
- gtk_option_menu_set_menu( GTK_OPTION_MENU(sel->spread), m );
+ "directions (spreadMethod=\"reflect\")"));
+
+ g_signal_connect (G_OBJECT (sel->spread), "changed",
+ G_CALLBACK (sp_gradient_selector_spread_changed), sel);
sel->spreadLbl = gtk_label_new( _("Repeat:") );
sel->nonsolid.push_back(sel->spreadLbl);
@@ -213,7 +212,7 @@ sp_gradient_selector_new (void)
{
SPGradientSelector *sel;
- sel = (SPGradientSelector*)gtk_type_new (SP_TYPE_GRADIENT_SELECTOR);
+ sel = (SPGradientSelector*)g_object_new (SP_TYPE_GRADIENT_SELECTOR, NULL);
return (GtkWidget *) sel;
}
@@ -242,8 +241,7 @@ void SPGradientSelector::setUnits(SPGradientUnits units)
void SPGradientSelector::setSpread(SPGradientSpread spread)
{
gradientSpread = spread;
-
- gtk_option_menu_set_history(GTK_OPTION_MENU(this->spread), gradientSpread);
+ gtk_combo_box_set_active (GTK_COMBO_BOX(this->spread), gradientSpread);
}
SPGradientUnits SPGradientSelector::getUnits()
@@ -360,7 +358,7 @@ sp_gradient_selector_add_vector_clicked (GtkWidget */*w*/, SPGradientSelector *s
Inkscape::GC::release(stop);
}
- SP_DOCUMENT_DEFS(doc)->getRepr()->addChild(repr, NULL);
+ doc->getDefs()->getRepr()->addChild(repr, NULL);
gr = (SPGradient *) doc->getObjectByRepr(repr);
sp_gradient_vector_selector_set_gradient(
@@ -369,17 +367,13 @@ sp_gradient_selector_add_vector_clicked (GtkWidget */*w*/, SPGradientSelector *s
Inkscape::GC::release(repr);
}
-
-
static void
-sp_gradient_selector_spread_activate (GtkWidget *widget, SPGradientSelector *sel)
+sp_gradient_selector_spread_changed (GtkComboBox *widget, SPGradientSelector *sel)
{
- sel->gradientSpread = (SPGradientSpread)GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget), "gradientSpread"));
-
- g_signal_emit (G_OBJECT (sel), signals[CHANGED], 0);
+ sel->gradientSpread = (SPGradientSpread) gtk_combo_box_get_active (GTK_COMBO_BOX(widget));
+ g_signal_emit (G_OBJECT (sel), signals[CHANGED], 0);
}
-
/*
Local Variables:
mode:c++
diff --git a/src/widgets/gradient-selector.h b/src/widgets/gradient-selector.h
index 860804ec6..d957f7baf 100644
--- a/src/widgets/gradient-selector.h
+++ b/src/widgets/gradient-selector.h
@@ -16,7 +16,7 @@
*/
#include <glib.h>
-#include <gtk/gtkvbox.h>
+#include <gtk/gtk.h>
#include <vector>
#include "sp-gradient.h"
#include "sp-gradient-spread.h"
@@ -25,10 +25,10 @@
class SPGradient;
#define SP_TYPE_GRADIENT_SELECTOR (sp_gradient_selector_get_type ())
-#define SP_GRADIENT_SELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_GRADIENT_SELECTOR, SPGradientSelector))
-#define SP_GRADIENT_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_GRADIENT_SELECTOR, SPGradientSelectorClass))
-#define SP_IS_GRADIENT_SELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_GRADIENT_SELECTOR))
-#define SP_IS_GRADIENT_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_GRADIENT_SELECTOR))
+#define SP_GRADIENT_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_GRADIENT_SELECTOR, SPGradientSelector))
+#define SP_GRADIENT_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_GRADIENT_SELECTOR, SPGradientSelectorClass))
+#define SP_IS_GRADIENT_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_GRADIENT_SELECTOR))
+#define SP_IS_GRADIENT_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_GRADIENT_SELECTOR))
diff --git a/src/widgets/gradient-toolbar.cpp b/src/widgets/gradient-toolbar.cpp
index e7596ead4..9fe875d28 100644
--- a/src/widgets/gradient-toolbar.cpp
+++ b/src/widgets/gradient-toolbar.cpp
@@ -193,7 +193,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient *
gtk_container_add (GTK_CONTAINER (i), l);
gtk_widget_show (i);
- gtk_menu_append (GTK_MENU (m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL (m), i);
gtk_widget_set_sensitive (om, FALSE);
} else if (selection_empty) {
// Document has gradients, but nothing is currently selected.
@@ -203,7 +203,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient *
gtk_container_add (GTK_CONTAINER (i), l);
gtk_widget_show (i);
- gtk_menu_append (GTK_MENU (m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL (m), i);
gtk_widget_set_sensitive (om, FALSE);
} else {
@@ -214,7 +214,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient *
gtk_container_add (GTK_CONTAINER (i), l);
gtk_widget_show (i);
- gtk_menu_append (GTK_MENU (m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL (m), i);
}
if (gr_multi) {
@@ -224,7 +224,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient *
gtk_container_add (GTK_CONTAINER (i), l);
gtk_widget_show (i);
- gtk_menu_append (GTK_MENU (m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL (m), i);
}
while (gl) {
@@ -250,7 +250,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient *
gtk_container_add (GTK_CONTAINER (i), hb);
- gtk_menu_append (GTK_MENU (m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL (m), i);
if (gradient == gr_selected) {
pos = idx;
@@ -464,12 +464,10 @@ GtkWidget * gr_change_widget(SPDesktop *desktop)
SPGradientSpread spr_selected = (SPGradientSpread) INT_MAX; // meaning undefined
bool spr_multi = false;
- GtkTooltips *tt = gtk_tooltips_new();
-
gr_read_selection (selection, ev? ev->get_drag() : 0, gr_selected, gr_multi, spr_selected, spr_multi);
GtkWidget *widget = gtk_hbox_new(FALSE, FALSE);
- gtk_object_set_data(GTK_OBJECT(widget), "dtw", desktop->canvas);
+ g_object_set_data(G_OBJECT(widget), "dtw", desktop->canvas);
g_object_set_data (G_OBJECT (widget), "desktop", desktop);
GtkWidget *om = gr_vector_list (desktop, selection->isEmpty(), gr_selected, gr_multi);
@@ -484,10 +482,10 @@ GtkWidget * gr_change_widget(SPDesktop *desktop)
{
GtkWidget *hb = gtk_hbox_new(FALSE, 1);
GtkWidget *b = gtk_button_new_with_label(_("Edit..."));
- gtk_tooltips_set_tip(tt, b, _("Edit the stops of the gradient"), NULL);
+ gtk_widget_set_tooltip_text(b, _("Edit the stops of the gradient"));
gtk_widget_show(b);
gtk_container_add(GTK_CONTAINER(hb), b);
- gtk_signal_connect(GTK_OBJECT(b), "clicked", GTK_SIGNAL_FUNC(gr_edit), widget);
+ g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(gr_edit), widget);
gtk_box_pack_start (GTK_BOX(buttons), hb, FALSE, FALSE, 0);
}
@@ -521,9 +519,9 @@ GtkWidget * gr_change_widget(SPDesktop *desktop)
// connect to release and modified signals of the defs (i.e. when someone changes gradient)
sigc::connection *release_connection = new sigc::connection();
- *release_connection = SP_DOCUMENT_DEFS(document)->connectRelease(sigc::bind<1>(sigc::ptr_fun(&gr_defs_release), widget));
+ *release_connection = document->getDefs()->connectRelease(sigc::bind<1>(sigc::ptr_fun(&gr_defs_release), widget));
sigc::connection *modified_connection = new sigc::connection();
- *modified_connection = SP_DOCUMENT_DEFS(document)->connectModified(sigc::bind<2>(sigc::ptr_fun(&gr_defs_modified), widget));
+ *modified_connection = document->getDefs()->connectModified(sigc::bind<2>(sigc::ptr_fun(&gr_defs_modified), widget));
// when widget is destroyed, disconnect
g_signal_connect(G_OBJECT(widget), "destroy", G_CALLBACK(gr_disconnect_sigc), release_connection);
@@ -539,10 +537,8 @@ sp_gradient_toolbox_new(SPDesktop *desktop)
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
GtkWidget *tbl = gtk_toolbar_new();
- gtk_object_set_data(GTK_OBJECT(tbl), "dtw", desktop->canvas);
- gtk_object_set_data(GTK_OBJECT(tbl), "desktop", desktop);
-
- GtkTooltips *tt = gtk_tooltips_new();
+ g_object_set_data(G_OBJECT(tbl), "dtw", desktop->canvas);
+ g_object_set_data(G_OBJECT(tbl), "desktop", desktop);
sp_toolbox_add_label(tbl, _("<b>New:</b>"));
@@ -556,9 +552,8 @@ sp_gradient_toolbox_new(SPDesktop *desktop)
GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
SP_BUTTON_TYPE_TOGGLE,
NULL,
- INKSCAPE_ICON_PAINT_GRADIENT_LINEAR,
- _("Create linear gradient"),
- tt);
+ INKSCAPE_ICON("paint-gradient-linear"),
+ _("Create linear gradient") );
g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (gr_toggle_type), tbl);
g_object_set_data(G_OBJECT(tbl), "linear", button);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
@@ -570,9 +565,8 @@ sp_gradient_toolbox_new(SPDesktop *desktop)
GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
SP_BUTTON_TYPE_TOGGLE,
NULL,
- INKSCAPE_ICON_PAINT_GRADIENT_RADIAL,
- _("Create radial (elliptic or circular) gradient"),
- tt);
+ INKSCAPE_ICON("paint-gradient-radial"),
+ _("Create radial (elliptic or circular) gradient"));
g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (gr_toggle_type), tbl);
g_object_set_data(G_OBJECT(tbl), "radial", button);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
@@ -598,9 +592,8 @@ sp_gradient_toolbox_new(SPDesktop *desktop)
GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
SP_BUTTON_TYPE_TOGGLE,
NULL,
- INKSCAPE_ICON_OBJECT_FILL,
- _("Create gradient in the fill"),
- tt);
+ INKSCAPE_ICON("object-fill"),
+ _("Create gradient in the fill"));
g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (gr_toggle_fillstroke), tbl);
g_object_set_data(G_OBJECT(tbl), "fill", button);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
@@ -612,9 +605,8 @@ sp_gradient_toolbox_new(SPDesktop *desktop)
GtkWidget *button = sp_button_new_from_data( Inkscape::ICON_SIZE_DECORATION,
SP_BUTTON_TYPE_TOGGLE,
NULL,
- INKSCAPE_ICON_OBJECT_STROKE,
- _("Create gradient in the stroke"),
- tt);
+ INKSCAPE_ICON("object-stroke"),
+ _("Create gradient in the stroke"));
g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (gr_toggle_fillstroke), tbl);
g_object_set_data(G_OBJECT(tbl), "stroke", button);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
diff --git a/src/widgets/gradient-toolbar.h b/src/widgets/gradient-toolbar.h
index 41138724a..f1e258f6b 100644
--- a/src/widgets/gradient-toolbar.h
+++ b/src/widgets/gradient-toolbar.h
@@ -12,7 +12,7 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
struct SPDesktop;
GtkWidget *sp_gradient_toolbox_new (SPDesktop *desktop);
diff --git a/src/widgets/gradient-vector.cpp b/src/widgets/gradient-vector.cpp
index 839ddf67c..8c39b52dd 100644
--- a/src/widgets/gradient-vector.cpp
+++ b/src/widgets/gradient-vector.cpp
@@ -102,15 +102,16 @@ static void sp_gradient_vector_selector_class_init(SPGradientVectorSelectorClass
object_class = GTK_OBJECT_CLASS(klass);
- parent_class = static_cast<GtkVBoxClass*>(gtk_type_class(GTK_TYPE_VBOX));
+ parent_class = static_cast<GtkVBoxClass*>(g_type_class_peek_parent(klass));
- signals[VECTOR_SET] = gtk_signal_new( "vector_set",
- GTK_RUN_LAST,
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPGradientVectorSelectorClass, vector_set),
- gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_POINTER);
+ signals[VECTOR_SET] = g_signal_new( "vector_set",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(SPGradientVectorSelectorClass, vector_set),
+ NULL, NULL,
+ gtk_marshal_NONE__POINTER,
+ G_TYPE_NONE, 1,
+ GTK_TYPE_POINTER);
object_class->destroy = sp_gradient_vector_selector_destroy;
}
@@ -164,7 +165,7 @@ GtkWidget *sp_gradient_vector_selector_new(SPDocument *doc, SPGradient *gr)
g_return_val_if_fail(!gr || SP_IS_GRADIENT(gr), NULL);
g_return_val_if_fail(!gr || (gr->document == doc), NULL);
- gvs = static_cast<GtkWidget*>(gtk_type_new(SP_TYPE_GRADIENT_VECTOR_SELECTOR));
+ gvs = static_cast<GtkWidget*>(g_object_new(SP_TYPE_GRADIENT_VECTOR_SELECTOR, NULL));
if (doc) {
sp_gradient_vector_selector_set_gradient(SP_GRADIENT_VECTOR_SELECTOR(gvs), doc, gr);
@@ -204,8 +205,8 @@ void sp_gradient_vector_selector_set_gradient(SPGradientVectorSelector *gvs, SPD
// Connect signals
if (doc) {
- gvs->defs_release_connection = SP_DOCUMENT_DEFS(doc)->connectRelease(sigc::bind<1>(sigc::ptr_fun(&sp_gvs_defs_release), gvs));
- gvs->defs_modified_connection = SP_DOCUMENT_DEFS(doc)->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_gvs_defs_modified), gvs));
+ gvs->defs_release_connection = doc->getDefs()->connectRelease(sigc::bind<1>(sigc::ptr_fun(&sp_gvs_defs_release), gvs));
+ gvs->defs_modified_connection = doc->getDefs()->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_gvs_defs_modified), gvs));
}
if (gr) {
gvs->gradient_release_connection = gr->connectRelease(sigc::bind<1>(sigc::ptr_fun(&sp_gvs_gradient_release), gvs));
@@ -273,19 +274,19 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs)
GtkWidget *i;
i = gtk_menu_item_new_with_label(_("No document selected"));
gtk_widget_show(i);
- gtk_menu_append(GTK_MENU(m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL(m), i);
gtk_widget_set_sensitive(gvs->menu, FALSE);
} else if (!gl) {
GtkWidget *i;
i = gtk_menu_item_new_with_label(_("No gradients in document"));
gtk_widget_show(i);
- gtk_menu_append(GTK_MENU(m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL(m), i);
gtk_widget_set_sensitive(gvs->menu, FALSE);
} else if (!gvs->gr) {
GtkWidget *i;
i = gtk_menu_item_new_with_label(_("No gradient selected"));
gtk_widget_show(i);
- gtk_menu_append(GTK_MENU(m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL(m), i);
gtk_widget_set_sensitive(gvs->menu, FALSE);
} else {
while (gl) {
@@ -319,7 +320,7 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs)
gtk_container_add(GTK_CONTAINER(i), w);
- gtk_menu_append(GTK_MENU(m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL(m), i);
if (gr == gvs->gr) {
pos = idx;
@@ -423,7 +424,7 @@ void SPGradientVectorSelector::setSwatched()
##################################################################*/
#include "../widgets/sp-color-notebook.h"
-#include "../widgets/sp-color-preview.h"
+#include "ui/widget/color-preview.h"
#include "../widgets/widget-sizes.h"
#include "../xml/node-event-vector.h"
#include "../svg/svg-color.h"
@@ -550,7 +551,7 @@ static void update_stop_list( GtkWidget *mnu, SPGradient *gradient, SPStop *new_
if (!sl) {
GtkWidget *i = gtk_menu_item_new_with_label(_("No stops in gradient"));
gtk_widget_show(i);
- gtk_menu_append(GTK_MENU(m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL(m), i);
gtk_widget_set_sensitive(mnu, FALSE);
} else {
@@ -561,9 +562,9 @@ static void update_stop_list( GtkWidget *mnu, SPGradient *gradient, SPStop *new_
gtk_widget_show(i);
g_object_set_data(G_OBJECT(i), "stop", stop);
GtkWidget *hb = gtk_hbox_new(FALSE, 4);
- GtkWidget *cpv = sp_color_preview_new(sp_stop_get_rgba32(stop));
- gtk_widget_show(cpv);
- gtk_container_add( GTK_CONTAINER(hb), cpv );
+ Gtk::Widget *cpv = Gtk::manage(new Inkscape::UI::Widget::ColorPreview(sp_stop_get_rgba32(stop)));
+ cpv->show();
+ gtk_container_add( GTK_CONTAINER(hb), cpv->gobj() );
g_object_set_data( G_OBJECT(i), "preview", cpv );
Inkscape::XML::Node *repr = reinterpret_cast<SPItem *>(sl->data)->getRepr();
GtkWidget *l = gtk_label_new(repr->attribute("id"));
@@ -572,7 +573,7 @@ static void update_stop_list( GtkWidget *mnu, SPGradient *gradient, SPStop *new_
gtk_box_pack_start(GTK_BOX(hb), l, TRUE, TRUE, 0);
gtk_widget_show(hb);
gtk_container_add(GTK_CONTAINER(i), hb);
- gtk_menu_append(GTK_MENU(m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL(m), i);
}
}
@@ -608,7 +609,7 @@ static void sp_grad_edit_select(GtkOptionMenu *mnu, GtkWidget *tbl)
GtkWidget *offspin = GTK_WIDGET(g_object_get_data(G_OBJECT(tbl), "offspn"));
GtkWidget *offslide =GTK_WIDGET(g_object_get_data(G_OBJECT(tbl), "offslide"));
- GtkAdjustment *adj = static_cast<GtkAdjustment*>(gtk_object_get_data(GTK_OBJECT(tbl), "offset"));
+ GtkAdjustment *adj = static_cast<GtkAdjustment*>(g_object_get_data(G_OBJECT(tbl), "offset"));
bool isEndStop = false;
@@ -788,15 +789,14 @@ static GtkWidget * sp_gradient_vector_widget_new(SPGradient *gradient, SPStop *s
gtk_box_pack_start(GTK_BOX(vb), w, TRUE, TRUE, PAD);
sp_repr_add_listener(gradient->getRepr(), &grad_edit_dia_repr_events, vb);
- GtkTooltips *tt = gtk_tooltips_new();
/* Stop list */
GtkWidget *mnu = gtk_option_menu_new();
/* Create new menu widget */
update_stop_list(GTK_WIDGET(mnu), gradient, NULL);
- gtk_signal_connect(GTK_OBJECT(mnu), "changed", GTK_SIGNAL_FUNC(sp_grad_edit_select), vb);
+ g_signal_connect(G_OBJECT(mnu), "changed", G_CALLBACK(sp_grad_edit_select), vb);
gtk_widget_show(mnu);
- gtk_object_set_data(GTK_OBJECT(vb), "stopmenu", mnu);
+ g_object_set_data(G_OBJECT(vb), "stopmenu", mnu);
gtk_box_pack_start(GTK_BOX(vb), mnu, FALSE, FALSE, 0);
/* Add and Remove buttons */
@@ -805,13 +805,13 @@ static GtkWidget * sp_gradient_vector_widget_new(SPGradient *gradient, SPStop *s
GtkWidget *b = gtk_button_new_with_label(_("Add stop"));
gtk_widget_show(b);
gtk_container_add(GTK_CONTAINER(hb), b);
- gtk_tooltips_set_tip(tt, b, _("Add another control stop to gradient"), NULL);
- gtk_signal_connect(GTK_OBJECT(b), "clicked", GTK_SIGNAL_FUNC(sp_grd_ed_add_stop), vb);
+ gtk_widget_set_tooltip_text(b, _("Add another control stop to gradient"));
+ g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(sp_grd_ed_add_stop), vb);
b = gtk_button_new_with_label(_("Delete stop"));
gtk_widget_show(b);
gtk_container_add(GTK_CONTAINER(hb), b);
- gtk_tooltips_set_tip(tt, b, _("Delete current control stop from gradient"), NULL);
- gtk_signal_connect(GTK_OBJECT(b), "clicked", GTK_SIGNAL_FUNC(sp_grd_ed_del_stop), vb);
+ gtk_widget_set_tooltip_text(b, _("Delete current control stop from gradient"));
+ g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(sp_grd_ed_del_stop), vb);
gtk_widget_show(hb);
gtk_box_pack_start(GTK_BOX(vb),hb, FALSE, FALSE, AUX_BETWEEN_BUTTON_GROUPS);
@@ -829,7 +829,7 @@ static GtkWidget * sp_gradient_vector_widget_new(SPGradient *gradient, SPStop *s
/* Adjustment */
GtkAdjustment *Offset_adj = NULL;
Offset_adj= (GtkAdjustment *) gtk_adjustment_new(0.0, 0.0, 1.0, 0.01, 0.01, 0.0);
- gtk_object_set_data(GTK_OBJECT(vb), "offset", Offset_adj);
+ g_object_set_data(G_OBJECT(vb), "offset", Offset_adj);
GtkMenu *m = GTK_MENU(gtk_option_menu_get_menu(GTK_OPTION_MENU(mnu)));
SPStop *stop = SP_STOP(g_object_get_data(G_OBJECT(gtk_menu_get_active(m)), "stop"));
gtk_adjustment_set_value(Offset_adj, stop->offset);
@@ -839,14 +839,14 @@ static GtkWidget * sp_gradient_vector_widget_new(SPGradient *gradient, SPStop *s
gtk_scale_set_draw_value( GTK_SCALE(slider), FALSE );
gtk_widget_show(slider);
gtk_box_pack_start(GTK_BOX(hb),slider, TRUE, TRUE, AUX_BETWEEN_BUTTON_GROUPS);
- gtk_object_set_data(GTK_OBJECT(vb), "offslide", slider);
+ g_object_set_data(G_OBJECT(vb), "offslide", slider);
/* Spinbutton */
GtkWidget *sbtn = gtk_spin_button_new(GTK_ADJUSTMENT(Offset_adj), 0.01, 2);
sp_dialog_defocus_on_enter(sbtn);
gtk_widget_show(sbtn);
gtk_box_pack_start(GTK_BOX(hb),sbtn, FALSE, TRUE, AUX_BETWEEN_BUTTON_GROUPS);
- gtk_object_set_data(GTK_OBJECT(vb), "offspn", sbtn);
+ g_object_set_data(G_OBJECT(vb), "offspn", sbtn);
if (stop->offset>0 && stop->offset<1) {
gtk_widget_set_sensitive(slider, TRUE);
@@ -858,10 +858,10 @@ static GtkWidget * sp_gradient_vector_widget_new(SPGradient *gradient, SPStop *s
/* Signals */
- gtk_signal_connect(GTK_OBJECT(Offset_adj), "value_changed",
- GTK_SIGNAL_FUNC(offadjustmentChanged), vb);
+ g_signal_connect(G_OBJECT(Offset_adj), "value_changed",
+ G_CALLBACK(offadjustmentChanged), vb);
- // gtk_signal_connect(GTK_OBJECT(slider), "changed", GTK_SIGNAL_FUNC(offsliderChanged), vb);
+ // g_signal_connect(G_OBJECT(slider), "changed", G_CALLBACK(offsliderChanged), vb);
gtk_widget_show(hb);
gtk_box_pack_start(GTK_BOX(vb), hb, FALSE, FALSE, PAD);
@@ -925,9 +925,9 @@ GtkWidget * sp_gradient_vector_editor_new(SPGradient *gradient, SPStop *stop)
wd.win = dlg;
wd.stop = 0;
g_signal_connect(G_OBJECT(INKSCAPE), "activate_desktop", G_CALLBACK(sp_transientize_callback), &wd);
- gtk_signal_connect(GTK_OBJECT(dlg), "event", GTK_SIGNAL_FUNC(sp_dialog_event_handler), dlg);
- gtk_signal_connect(GTK_OBJECT(dlg), "destroy", G_CALLBACK(sp_gradient_vector_dialog_destroy), dlg);
- gtk_signal_connect(GTK_OBJECT(dlg), "delete_event", G_CALLBACK(sp_gradient_vector_dialog_delete), dlg);
+ g_signal_connect(G_OBJECT(dlg), "event", G_CALLBACK(sp_dialog_event_handler), dlg);
+ g_signal_connect(G_OBJECT(dlg), "destroy", G_CALLBACK(sp_gradient_vector_dialog_destroy), dlg);
+ g_signal_connect(G_OBJECT(dlg), "delete_event", G_CALLBACK(sp_gradient_vector_dialog_delete), dlg);
g_signal_connect(G_OBJECT(INKSCAPE), "shut_down", G_CALLBACK(sp_gradient_vector_dialog_delete), dlg);
g_signal_connect( G_OBJECT(INKSCAPE), "dialogs_hide", G_CALLBACK(sp_dialog_hide), dlg );
g_signal_connect( G_OBJECT(INKSCAPE), "dialogs_unhide", G_CALLBACK(sp_dialog_unhide), dlg );
@@ -1188,8 +1188,8 @@ static void sp_gradient_vector_color_changed(SPColorSelector *csel, GtkObject *o
blocked = FALSE;
- SPColorPreview *cpv = static_cast<SPColorPreview *>(g_object_get_data(G_OBJECT(gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(mnu)))), "preview"));
- sp_color_preview_set_rgba32(cpv, sp_stop_get_rgba32(stop));
+ Inkscape::UI::Widget::ColorPreview *cpv = static_cast<Inkscape::UI::Widget::ColorPreview *>(g_object_get_data(G_OBJECT(gtk_menu_get_active(GTK_MENU(gtk_option_menu_get_menu(mnu)))), "preview"));
+ cpv->setRgba32(sp_stop_get_rgba32(stop));
}
/*
diff --git a/src/widgets/gradient-vector.h b/src/widgets/gradient-vector.h
index 012d4e9a3..b198895e7 100644
--- a/src/widgets/gradient-vector.h
+++ b/src/widgets/gradient-vector.h
@@ -20,14 +20,17 @@
#include <stddef.h>
#include <sigc++/connection.h>
-#include <gtk/gtkvbox.h>
-#include "../forward.h"
+#include <gtk/gtk.h>
#define SP_TYPE_GRADIENT_VECTOR_SELECTOR (sp_gradient_vector_selector_get_type ())
-#define SP_GRADIENT_VECTOR_SELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_GRADIENT_VECTOR_SELECTOR, SPGradientVectorSelector))
-#define SP_GRADIENT_VECTOR_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_GRADIENT_VECTOR_SELECTOR, SPGradientVectorSelectorClass))
-#define SP_IS_GRADIENT_VECTOR_SELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_GRADIENT_VECTOR_SELECTOR))
-#define SP_IS_GRADIENT_VECTOR_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_GRADIENT_VECTOR_SELECTOR))
+#define SP_GRADIENT_VECTOR_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_GRADIENT_VECTOR_SELECTOR, SPGradientVectorSelector))
+#define SP_GRADIENT_VECTOR_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_GRADIENT_VECTOR_SELECTOR, SPGradientVectorSelectorClass))
+#define SP_IS_GRADIENT_VECTOR_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_GRADIENT_VECTOR_SELECTOR))
+#define SP_IS_GRADIENT_VECTOR_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_GRADIENT_VECTOR_SELECTOR))
+
+class SPDocument;
+class SPGradient;
+class SPStop;
struct SPGradientVectorSelector {
GtkVBox vbox;
diff --git a/src/widgets/icon.cpp b/src/widgets/icon.cpp
index c2634f6a1..09caaa7f1 100644
--- a/src/widgets/icon.cpp
+++ b/src/widgets/icon.cpp
@@ -17,21 +17,25 @@
#endif
#include <cstring>
-#include <glib/gmem.h>
+#include <glib.h>
#include <glib/gstdio.h>
#include <gtk/gtk.h>
#include <gtkmm.h>
#include <gdkmm/pixbuf.h>
#include <glibmm/fileutils.h>
+#include <2geom/transforms.h>
#include "path-prefix.h"
#include "preferences.h"
#include "inkscape.h"
#include "document.h"
#include "sp-item.h"
-#include "display/nr-arena.h"
-#include "display/nr-arena-item.h"
+#include "display/cairo-utils.h"
+#include "display/drawing-context.h"
+#include "display/drawing-item.h"
+#include "display/drawing.h"
#include "io/sys.h"
+#include "sp-root.h"
#include "icon.h"
@@ -88,7 +92,7 @@ struct IconImpl {
static std::list<gchar*> &icons_svg_paths();
static guchar *load_svg_pixels(std::list<Glib::ustring> const &names,
- unsigned lsize, unsigned psize);
+ unsigned psize, unsigned &stride);
static std::string fileEscape( std::string const & str );
@@ -176,7 +180,7 @@ void IconImpl::classInit(SPIconClass *klass)
void IconImpl::init(SPIcon *icon)
{
- GTK_WIDGET_FLAGS(icon) |= GTK_NO_WINDOW;
+ gtk_widget_set_has_window (GTK_WIDGET (icon), FALSE);
icon->lsize = Inkscape::ICON_SIZE_BUTTON;
icon->psize = 0;
icon->name = 0;
@@ -224,14 +228,14 @@ void IconImpl::sizeAllocate(GtkWidget *widget, GtkAllocation *allocation)
{
widget->allocation = *allocation;
- if (GTK_WIDGET_DRAWABLE(widget)) {
+ if (gtk_widget_is_drawable(widget)) {
gtk_widget_queue_draw(widget);
}
}
int IconImpl::expose(GtkWidget *widget, GdkEventExpose *event)
{
- if ( GTK_WIDGET_DRAWABLE(widget) ) {
+ if ( gtk_widget_is_drawable(widget) ) {
SPIcon *icon = SP_ICON(widget);
if ( !icon->pb ) {
fetchPixbuf( icon );
@@ -995,13 +999,13 @@ void IconImpl::paint(SPIcon *icon, GdkRectangle const */*area*/)
bool unref_image = false;
/* copied from the expose function of GtkImage */
- if (GTK_WIDGET_STATE (icon) != GTK_STATE_NORMAL && image) {
+ if (gtk_widget_get_state (GTK_WIDGET(icon)) != GTK_STATE_NORMAL && image) {
GtkIconSource *source = gtk_icon_source_new();
gtk_icon_source_set_pixbuf(source, icon->pb);
gtk_icon_source_set_size(source, GTK_ICON_SIZE_SMALL_TOOLBAR); // note: this is boilerplate and not used
gtk_icon_source_set_size_wildcarded(source, FALSE);
image = gtk_style_render_icon (widget.style, source, gtk_widget_get_direction(&widget),
- (GtkStateType) GTK_WIDGET_STATE(&widget), (GtkIconSize)-1, &widget, "gtk-image");
+ (GtkStateType) gtk_widget_get_state(&widget), (GtkIconSize)-1, &widget, "gtk-image");
gtk_icon_source_free(source);
unref_image = true;
}
@@ -1071,9 +1075,24 @@ GdkPixbuf *IconImpl::loadPixmap(gchar const *name, unsigned /*lsize*/, unsigned
return pb;
}
-// takes doc, root, icon, and icon name to produce pixels
-extern "C" guchar *sp_icon_doc_icon( SPDocument *doc, NRArenaItem *root,
- gchar const *name, unsigned psize )
+static Geom::IntRect round_rect(Geom::Rect const &r)
+{
+ using Geom::X;
+ using Geom::Y;
+ Geom::IntPoint a, b;
+ a[X] = round(r.left());
+ a[Y] = round(r.top());
+ b[X] = round(r.right());
+ b[Y] = round(r.bottom());
+ Geom::IntRect ret(a, b);
+ return ret;
+}
+
+// takes doc, drawing, icon, and icon name to produce pixels
+extern "C" guchar *
+sp_icon_doc_icon( SPDocument *doc, Inkscape::Drawing &drawing,
+ gchar const *name, unsigned psize,
+ unsigned &stride)
{
bool const dump = Inkscape::Preferences::get()->getBool("/debug/icons/dumpSvg");
guchar *px = NULL;
@@ -1081,9 +1100,9 @@ extern "C" guchar *sp_icon_doc_icon( SPDocument *doc, NRArenaItem *root,
if (doc) {
SPObject *object = doc->getObjectById(name);
if (object && SP_IS_ITEM(object)) {
- /* Find bbox in document */
- Geom::Affine const i2doc(SP_ITEM(object)->i2doc_affine());
- Geom::OptRect dbox = SP_ITEM(object)->getBounds(i2doc);
+ SPItem *item = SP_ITEM(object);
+ // Find bbox in document
+ Geom::OptRect dbox = item->documentVisualBounds();
if ( object->parent == NULL )
{
@@ -1093,28 +1112,21 @@ extern "C" guchar *sp_icon_doc_icon( SPDocument *doc, NRArenaItem *root,
/* This is in document coordinates, i.e. pixels */
if ( dbox ) {
- NRGC gc(NULL);
/* Update to renderable state */
double sf = 1.0;
- nr_arena_item_set_transform(root, (Geom::Affine)Geom::Scale(sf, sf));
- gc.transform.setIdentity();
- nr_arena_item_invoke_update( root, NULL, &gc,
- NR_ARENA_ITEM_STATE_ALL,
- NR_ARENA_ITEM_STATE_NONE );
+ drawing.root()->setTransform(Geom::Scale(sf));
+ drawing.update();
/* Item integer bbox in points */
- NRRectL ibox;
- ibox.x0 = (int) floor(sf * dbox->min()[Geom::X] + 0.5);
- ibox.y0 = (int) floor(sf * dbox->min()[Geom::Y] + 0.5);
- ibox.x1 = (int) floor(sf * dbox->max()[Geom::X] + 0.5);
- ibox.y1 = (int) floor(sf * dbox->max()[Geom::Y] + 0.5);
+ // NOTE: previously, each rect coordinate was rounded using floor(c + 0.5)
+ Geom::IntRect ibox = round_rect(*dbox);
if ( dump ) {
- g_message( " box --'%s' (%f,%f)-(%f,%f)", name, (double)ibox.x0, (double)ibox.y0, (double)ibox.x1, (double)ibox.y1 );
+ g_message( " box --'%s' (%f,%f)-(%f,%f)", name, (double)ibox.left(), (double)ibox.top(), (double)ibox.right(), (double)ibox.bottom() );
}
/* Find button visible area */
- int width = ibox.x1 - ibox.x0;
- int height = ibox.y1 - ibox.y0;
+ int width = ibox.width();
+ int height = ibox.height();
if ( dump ) {
g_message( " vis --'%s' (%d,%d)", name, width, height );
@@ -1128,68 +1140,58 @@ extern "C" guchar *sp_icon_doc_icon( SPDocument *doc, NRArenaItem *root,
}
sf = (double)psize / (double)block;
- nr_arena_item_set_transform(root, (Geom::Affine)Geom::Scale(sf, sf));
- gc.transform.setIdentity();
- nr_arena_item_invoke_update( root, NULL, &gc,
- NR_ARENA_ITEM_STATE_ALL,
- NR_ARENA_ITEM_STATE_NONE );
- /* Item integer bbox in points */
- ibox.x0 = (int) floor(sf * dbox->min()[Geom::X] + 0.5);
- ibox.y0 = (int) floor(sf * dbox->min()[Geom::Y] + 0.5);
- ibox.x1 = (int) floor(sf * dbox->max()[Geom::X] + 0.5);
- ibox.y1 = (int) floor(sf * dbox->max()[Geom::Y] + 0.5);
+ drawing.root()->setTransform(Geom::Scale(sf));
+ drawing.update();
+ ibox = round_rect(*dbox * Geom::Scale(sf));
if ( dump ) {
- g_message( " box2 --'%s' (%f,%f)-(%f,%f)", name, (double)ibox.x0, (double)ibox.y0, (double)ibox.x1, (double)ibox.y1 );
+ g_message( " box2 --'%s' (%f,%f)-(%f,%f)", name, (double)ibox.left(), (double)ibox.top(), (double)ibox.right(), (double)ibox.bottom() );
}
/* Find button visible area */
- width = ibox.x1 - ibox.x0;
- height = ibox.y1 - ibox.y0;
+ width = ibox.width();
+ height = ibox.height();
if ( dump ) {
g_message( " vis2 --'%s' (%d,%d)", name, width, height );
}
}
}
+ Geom::IntPoint pdim(psize, psize);
int dx, dy;
//dx = (psize - width) / 2;
//dy = (psize - height) / 2;
dx=dy=psize;
dx=(dx-width)/2; // watch out for psize, since 'unsigned'-'signed' can cause problems if the result is negative
dy=(dy-height)/2;
- NRRectL area;
- area.x0 = ibox.x0 - dx;
- area.y0 = ibox.y0 - dy;
- area.x1 = area.x0 + psize;
- area.y1 = area.y0 + psize;
+ Geom::IntRect area = Geom::IntRect::from_xywh(ibox.min() - Geom::IntPoint(dx,dy), pdim);
/* Actual renderable area */
- NRRectL ua;
- ua.x0 = MAX(ibox.x0, area.x0);
- ua.y0 = MAX(ibox.y0, area.y0);
- ua.x1 = MIN(ibox.x1, area.x1);
- ua.y1 = MIN(ibox.y1, area.y1);
+ Geom::IntRect ua = *Geom::intersect(ibox, area);
if ( dump ) {
- g_message( " area --'%s' (%f,%f)-(%f,%f)", name, (double)area.x0, (double)area.y0, (double)area.x1, (double)area.y1 );
- g_message( " ua --'%s' (%f,%f)-(%f,%f)", name, (double)ua.x0, (double)ua.y0, (double)ua.x1, (double)ua.y1 );
+ g_message( " area --'%s' (%f,%f)-(%f,%f)", name, (double)area.left(), (double)area.top(), (double)area.right(), (double)area.bottom() );
+ g_message( " ua --'%s' (%f,%f)-(%f,%f)", name, (double)ua.left(), (double)ua.top(), (double)ua.right(), (double)ua.bottom() );
}
+
+ stride = cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, psize);
+
/* Set up pixblock */
- px = g_new(guchar, 4 * psize * psize);
- memset(px, 0x00, 4 * psize * psize);
+ px = g_new(guchar, stride * psize);
+ memset(px, 0x00, stride * psize);
+
/* Render */
- NRPixBlock B;
- nr_pixblock_setup_extern( &B, NR_PIXBLOCK_MODE_R8G8B8A8N,
- ua.x0, ua.y0, ua.x1, ua.y1,
- px + 4 * psize * (ua.y0 - area.y0) +
- 4 * (ua.x0 - area.x0),
- 4 * psize, FALSE, FALSE );
- nr_arena_item_invoke_render(NULL, root, &ua, &B,
- NR_ARENA_ITEM_RENDER_NO_CACHE );
- nr_pixblock_release(&B);
+ cairo_surface_t *s = cairo_image_surface_create_for_data(px,
+ CAIRO_FORMAT_ARGB32, psize, psize, stride);
+ Inkscape::DrawingContext ct(s, ua.min());
+
+ drawing.render(ct, ua);
+ cairo_surface_destroy(s);
+
+ // convert to GdkPixbuf format
+ convert_pixels_argb32_to_pixbuf(px, psize, psize, stride);
if ( Inkscape::Preferences::get()->getBool("/debug/icons/overlaySvg") ) {
- IconImpl::overlayPixels( px, psize, psize, 4 * psize, 0x00, 0x00, 0xff );
+ IconImpl::overlayPixels( px, psize, psize, stride, 0x00, 0x00, 0xff );
}
}
}
@@ -1203,9 +1205,21 @@ extern "C" guchar *sp_icon_doc_icon( SPDocument *doc, NRArenaItem *root,
class SVGDocCache
{
public:
- SVGDocCache( SPDocument *doc, NRArenaItem *root ) : doc(doc), root(root) {}
+ SVGDocCache( SPDocument *doc )
+ : doc(doc)
+ , visionkey(SPItem::display_key_new(1))
+ {
+ doc->doRef();
+ doc->ensureUpToDate();
+ drawing.setRoot(doc->getRoot()->invoke_show(drawing, visionkey, SP_ITEM_SHOW_DISPLAY ));
+ }
+ ~SVGDocCache() {
+ doc->getRoot()->invoke_hide(visionkey);
+ doc->doUnref();
+ }
SPDocument *doc;
- NRArenaItem *root;
+ Inkscape::Drawing drawing;
+ unsigned visionkey;
};
static std::map<Glib::ustring, SVGDocCache *> doc_cache;
@@ -1245,7 +1259,7 @@ std::list<gchar*> &IconImpl::icons_svg_paths()
// this function renders icons from icons.svg and returns the pixels.
guchar *IconImpl::load_svg_pixels(std::list<Glib::ustring> const &names,
- unsigned /*lsize*/, unsigned psize)
+ unsigned psize, unsigned &stride)
{
bool const dump = Inkscape::Preferences::get()->getBool("/debug/icons/dumpSvg");
std::list<gchar *> &sources = icons_svg_paths();
@@ -1272,27 +1286,14 @@ guchar *IconImpl::load_svg_pixels(std::list<Glib::ustring> const &names,
if ( dump ) {
g_message("Loaded icon file %s", doc_filename);
}
- // prep the document
- doc->ensureUpToDate();
-
- // Create new arena
- NRArena *arena = NRArena::create();
-
- // Create ArenaItem and set transform
- unsigned visionkey = SPItem::display_key_new(1);
- // fixme: Memory manage root if needed (Lauris)
- // This needs to be fixed indeed; this leads to a memory leak of a few megabytes these days
- // because shapes are being rendered which are not being freed
- NRArenaItem *root = SP_ITEM(doc->getRoot())->invoke_show( arena, visionkey, SP_ITEM_SHOW_DISPLAY );
-
// store into the cache
- info = new SVGDocCache(doc, root);
+ info = new SVGDocCache(doc);
doc_cache[key] = info;
}
}
if (info) {
for (std::list<Glib::ustring>::const_iterator it = names.begin(); !px && (it != names.end()); ++it ) {
- px = sp_icon_doc_icon( info->doc, info->root, it->c_str(), psize );
+ px = sp_icon_doc_icon( info->doc, info->drawing, it->c_str(), psize, stride );
}
}
}
@@ -1416,10 +1417,11 @@ bool IconImpl::prerenderIcon(gchar const *name, GtkIconSize lsize, unsigned psiz
g_message("load_svg_pixels([%s] = %s, %d, %d)", name, legacyNames[name].c_str(), lsize, psize);
}
}
- guchar* px = load_svg_pixels(names, lsize, psize);
+ unsigned stride;
+ guchar* px = load_svg_pixels(names, psize, stride);
if (px) {
GdkPixbuf* pb = gdk_pixbuf_new_from_data( px, GDK_COLORSPACE_RGB, TRUE, 8,
- psize, psize, psize * 4,
+ psize, psize, stride,
reinterpret_cast<GdkPixbufDestroyNotify>(g_free), NULL );
pb_cache[key] = pb;
addToIconSet(pb, name, lsize, psize);
@@ -1457,10 +1459,11 @@ GdkPixbuf *IconImpl::loadSvg(std::list<Glib::ustring> const &names, GtkIconSize
// did we already load this icon at this scale/size?
GdkPixbuf* pb = get_cached_pixbuf(key);
if (!pb) {
- guchar *px = load_svg_pixels(names, lsize, psize);
+ unsigned stride;
+ guchar *px = load_svg_pixels(names, psize, stride);
if (px) {
pb = gdk_pixbuf_new_from_data(px, GDK_COLORSPACE_RGB, TRUE, 8,
- psize, psize, psize * 4,
+ psize, psize, stride,
(GdkPixbufDestroyNotify)g_free, NULL);
pb_cache[key] = pb;
addToIconSet(pb, names.begin()->c_str(), lsize, psize);
diff --git a/src/widgets/icon.h b/src/widgets/icon.h
index a20fad73a..f04d2f8da 100644
--- a/src/widgets/icon.h
+++ b/src/widgets/icon.h
@@ -19,10 +19,10 @@
#include "icon-size.h"
#define SP_TYPE_ICON SPIcon::getType()
-#define SP_ICON(o) (GTK_CHECK_CAST ((o), SP_TYPE_ICON, SPIcon))
-#define SP_IS_ICON(o) (GTK_CHECK_TYPE ((o), SP_TYPE_ICON))
+#define SP_ICON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_ICON, SPIcon))
+#define SP_IS_ICON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_ICON))
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
struct SPIconClass {
GtkWidgetClass parent_class;
diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp
index f0b55cf13..fc9dc9263 100644
--- a/src/widgets/paint-selector.cpp
+++ b/src/widgets/paint-selector.cpp
@@ -1,4 +1,5 @@
-/** \file
+/**
+ * @file
* SPPaintSelector: Generic paint selector widget.
*/
@@ -23,14 +24,7 @@
#include <cstring>
#include <string>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkradiobutton.h>
-#include <gtk/gtkframe.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkoptionmenu.h>
-#include <gtk/gtktooltips.h>
-#include <gtk/gtkmenuitem.h>
-#include <gtk/gtkseparatormenuitem.h>
+#include <gtk/gtk.h>
#include "../sp-pattern.h"
#include <glibmm/i18n.h>
@@ -78,7 +72,7 @@ static void sp_paint_selector_class_init(SPPaintSelectorClass *klass);
static void sp_paint_selector_init(SPPaintSelector *slider);
static void sp_paint_selector_destroy(GtkObject *object);
-static GtkWidget *sp_paint_selector_style_button_add(SPPaintSelector *psel, gchar const *px, SPPaintSelector::Mode mode, GtkTooltips *tt, gchar const *tip);
+static GtkWidget *sp_paint_selector_style_button_add(SPPaintSelector *psel, gchar const *px, SPPaintSelector::Mode mode, gchar const *tip);
static void sp_paint_selector_style_button_toggled(GtkToggleButton *tb, SPPaintSelector *psel);
static void sp_paint_selector_fillrule_toggled(GtkToggleButton *tb, SPPaintSelector *psel);
@@ -134,14 +128,14 @@ static SPGradientSelector *getGradientFromData(SPPaintSelector const *psel)
grad = swatchsel->getGradientSelector();
}
} else {
- grad = reinterpret_cast<SPGradientSelector*>(gtk_object_get_data(GTK_OBJECT(psel->selector), "gradient-selector"));
+ grad = reinterpret_cast<SPGradientSelector*>(g_object_get_data(G_OBJECT(psel->selector), "gradient-selector"));
}
return grad;
}
GType sp_paint_selector_get_type(void)
{
- static GtkType type = 0;
+ static GType type = 0;
if (!type) {
GTypeInfo info = {
sizeof(SPPaintSelectorClass),
@@ -163,50 +157,52 @@ GType sp_paint_selector_get_type(void)
static void
sp_paint_selector_class_init(SPPaintSelectorClass *klass)
{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass *) klass;
- widget_class = (GtkWidgetClass *) klass;
+ GtkObjectClass *object_class = (GtkObjectClass *) klass;
- parent_class = (GtkVBoxClass*)gtk_type_class(GTK_TYPE_VBOX);
+ parent_class = (GtkVBoxClass*)g_type_class_peek_parent(klass);
- psel_signals[MODE_CHANGED] = gtk_signal_new("mode_changed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPPaintSelectorClass, mode_changed),
+ psel_signals[MODE_CHANGED] = g_signal_new("mode_changed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPPaintSelectorClass, mode_changed),
+ NULL, NULL,
gtk_marshal_NONE__UINT,
- GTK_TYPE_NONE, 1, GTK_TYPE_UINT);
- psel_signals[GRABBED] = gtk_signal_new("grabbed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPPaintSelectorClass, grabbed),
+ G_TYPE_NONE, 1, GTK_TYPE_UINT);
+ psel_signals[GRABBED] = g_signal_new("grabbed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPPaintSelectorClass, grabbed),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- psel_signals[DRAGGED] = gtk_signal_new("dragged",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPPaintSelectorClass, dragged),
+ G_TYPE_NONE, 0);
+ psel_signals[DRAGGED] = g_signal_new("dragged",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPPaintSelectorClass, dragged),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- psel_signals[RELEASED] = gtk_signal_new("released",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPPaintSelectorClass, released),
+ G_TYPE_NONE, 0);
+ psel_signals[RELEASED] = g_signal_new("released",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPPaintSelectorClass, released),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- psel_signals[CHANGED] = gtk_signal_new("changed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPPaintSelectorClass, changed),
+ G_TYPE_NONE, 0);
+ psel_signals[CHANGED] = g_signal_new("changed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPPaintSelectorClass, changed),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- psel_signals[FILLRULE_CHANGED] = gtk_signal_new("fillrule_changed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPPaintSelectorClass, fillrule_changed),
+ G_TYPE_NONE, 0);
+ psel_signals[FILLRULE_CHANGED] = g_signal_new("fillrule_changed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPPaintSelectorClass, fillrule_changed),
+ NULL, NULL,
gtk_marshal_NONE__UINT,
- GTK_TYPE_NONE, 1, GTK_TYPE_UINT);
+ G_TYPE_NONE, 1, GTK_TYPE_UINT);
object_class->destroy = sp_paint_selector_destroy;
}
@@ -217,8 +213,6 @@ sp_paint_selector_class_init(SPPaintSelectorClass *klass)
static void
sp_paint_selector_init(SPPaintSelector *psel)
{
- GtkTooltips *tt = gtk_tooltips_new();
-
psel->mode = static_cast<SPPaintSelector::Mode>(-1); // huh? do you mean 0xff? -- I think this means "not in the enum"
/* Paint style button box */
@@ -228,20 +222,20 @@ sp_paint_selector_init(SPPaintSelector *psel)
gtk_box_pack_start(GTK_BOX(psel), psel->style, FALSE, FALSE, 0);
/* Buttons */
- psel->none = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON_PAINT_NONE,
- SPPaintSelector::MODE_NONE, tt, _("No paint"));
- psel->solid = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON_PAINT_SOLID,
- SPPaintSelector::MODE_COLOR_RGB, tt, _("Flat color"));
- psel->gradient = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON_PAINT_GRADIENT_LINEAR,
- SPPaintSelector::MODE_GRADIENT_LINEAR, tt, _("Linear gradient"));
- psel->radial = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON_PAINT_GRADIENT_RADIAL,
- SPPaintSelector::MODE_GRADIENT_RADIAL, tt, _("Radial gradient"));
- psel->pattern = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON_PAINT_PATTERN,
- SPPaintSelector::MODE_PATTERN, tt, _("Pattern"));
- psel->swatch = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON_PAINT_SWATCH,
- SPPaintSelector::MODE_SWATCH, tt, _("Swatch"));
- psel->unset = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON_PAINT_UNKNOWN,
- SPPaintSelector::MODE_UNSET, tt, _("Unset paint (make it undefined so it can be inherited)"));
+ psel->none = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-none"),
+ SPPaintSelector::MODE_NONE, _("No paint"));
+ psel->solid = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-solid"),
+ SPPaintSelector::MODE_COLOR_RGB, _("Flat color"));
+ psel->gradient = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-gradient-linear"),
+ SPPaintSelector::MODE_GRADIENT_LINEAR, _("Linear gradient"));
+ psel->radial = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-gradient-radial"),
+ SPPaintSelector::MODE_GRADIENT_RADIAL, _("Radial gradient"));
+ psel->pattern = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-pattern"),
+ SPPaintSelector::MODE_PATTERN, _("Pattern"));
+ psel->swatch = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-swatch"),
+ SPPaintSelector::MODE_SWATCH, _("Swatch"));
+ psel->unset = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-unknown"),
+ SPPaintSelector::MODE_UNSET, _("Unset paint (make it undefined so it can be inherited)"));
/* Fillrule */
{
@@ -253,23 +247,23 @@ sp_paint_selector_init(SPPaintSelector *psel)
gtk_button_set_relief(GTK_BUTTON(psel->evenodd), GTK_RELIEF_NONE);
gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(psel->evenodd), FALSE);
// TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty
- gtk_tooltips_set_tip(tt, psel->evenodd, _("Any path self-intersections or subpaths create holes in the fill (fill-rule: evenodd)"), NULL);
- gtk_object_set_data(GTK_OBJECT(psel->evenodd), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_EVENODD));
- w = sp_icon_new(Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON_FILL_RULE_EVEN_ODD);
+ gtk_widget_set_tooltip_text(psel->evenodd, _("Any path self-intersections or subpaths create holes in the fill (fill-rule: evenodd)"));
+ g_object_set_data(G_OBJECT(psel->evenodd), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_EVENODD));
+ w = sp_icon_new(Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON("fill-rule-even-odd"));
gtk_container_add(GTK_CONTAINER(psel->evenodd), w);
gtk_box_pack_start(GTK_BOX(psel->fillrulebox), psel->evenodd, FALSE, FALSE, 0);
- gtk_signal_connect(GTK_OBJECT(psel->evenodd), "toggled", GTK_SIGNAL_FUNC(sp_paint_selector_fillrule_toggled), psel);
+ g_signal_connect(G_OBJECT(psel->evenodd), "toggled", G_CALLBACK(sp_paint_selector_fillrule_toggled), psel);
- psel->nonzero = gtk_radio_button_new(gtk_radio_button_group(GTK_RADIO_BUTTON(psel->evenodd)));
+ psel->nonzero = gtk_radio_button_new(gtk_radio_button_get_group(GTK_RADIO_BUTTON(psel->evenodd)));
gtk_button_set_relief(GTK_BUTTON(psel->nonzero), GTK_RELIEF_NONE);
gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(psel->nonzero), FALSE);
// TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty
- gtk_tooltips_set_tip(tt, psel->nonzero, _("Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)"), NULL);
- gtk_object_set_data(GTK_OBJECT(psel->nonzero), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_NONZERO));
- w = sp_icon_new(Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON_FILL_RULE_NONZERO);
+ gtk_widget_set_tooltip_text(psel->nonzero, _("Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)"));
+ g_object_set_data(G_OBJECT(psel->nonzero), "mode", GUINT_TO_POINTER(SPPaintSelector::FILLRULE_NONZERO));
+ w = sp_icon_new(Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON("fill-rule-nonzero"));
gtk_container_add(GTK_CONTAINER(psel->nonzero), w);
gtk_box_pack_start(GTK_BOX(psel->fillrulebox), psel->nonzero, FALSE, FALSE, 0);
- gtk_signal_connect(GTK_OBJECT(psel->nonzero), "toggled", GTK_SIGNAL_FUNC(sp_paint_selector_fillrule_toggled), psel);
+ g_signal_connect(G_OBJECT(psel->nonzero), "toggled", G_CALLBACK(sp_paint_selector_fillrule_toggled), psel);
}
/* Frame */
@@ -297,12 +291,12 @@ sp_paint_selector_destroy(GtkObject *object)
static GtkWidget *sp_paint_selector_style_button_add(SPPaintSelector *psel,
gchar const *pixmap, SPPaintSelector::Mode mode,
- GtkTooltips *tt, gchar const *tip)
+ gchar const *tip)
{
GtkWidget *b, *w;
b = gtk_toggle_button_new();
- gtk_tooltips_set_tip(tt, b, tip, NULL);
+ gtk_widget_set_tooltip_text(b, tip);
gtk_widget_show(b);
gtk_container_set_border_width(GTK_CONTAINER(b), 0);
@@ -310,14 +304,14 @@ static GtkWidget *sp_paint_selector_style_button_add(SPPaintSelector *psel,
gtk_button_set_relief(GTK_BUTTON(b), GTK_RELIEF_NONE);
gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(b), FALSE);
- gtk_object_set_data(GTK_OBJECT(b), "mode", GUINT_TO_POINTER(mode));
+ g_object_set_data(G_OBJECT(b), "mode", GUINT_TO_POINTER(mode));
w = sp_icon_new(Inkscape::ICON_SIZE_BUTTON, pixmap);
gtk_widget_show(w);
gtk_container_add(GTK_CONTAINER(b), w);
gtk_box_pack_start(GTK_BOX(psel->style), b, FALSE, FALSE, 0);
- gtk_signal_connect(GTK_OBJECT(b), "toggled", GTK_SIGNAL_FUNC(sp_paint_selector_style_button_toggled), psel);
+ g_signal_connect(G_OBJECT(b), "toggled", G_CALLBACK(sp_paint_selector_style_button_toggled), psel);
return b;
}
@@ -326,7 +320,7 @@ static void
sp_paint_selector_style_button_toggled(GtkToggleButton *tb, SPPaintSelector *psel)
{
if (!psel->update && gtk_toggle_button_get_active(tb)) {
- psel->setMode(static_cast<SPPaintSelector::Mode>(GPOINTER_TO_UINT(gtk_object_get_data(GTK_OBJECT(tb), "mode"))));
+ psel->setMode(static_cast<SPPaintSelector::Mode>(GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(tb), "mode"))));
}
}
@@ -335,7 +329,7 @@ sp_paint_selector_fillrule_toggled(GtkToggleButton *tb, SPPaintSelector *psel)
{
if (!psel->update && gtk_toggle_button_get_active(tb)) {
SPPaintSelector::FillRule fr = static_cast<SPPaintSelector::FillRule>(GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(tb), "mode")));
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[FILLRULE_CHANGED], fr);
+ g_signal_emit(G_OBJECT(psel), psel_signals[FILLRULE_CHANGED], 0, fr);
}
}
@@ -355,7 +349,7 @@ sp_paint_selector_show_fillrule(SPPaintSelector *psel, bool is_fill)
SPPaintSelector *sp_paint_selector_new(FillOrStroke kind)
{
- SPPaintSelector *psel = static_cast<SPPaintSelector*>(gtk_type_new(SP_TYPE_PAINT_SELECTOR));
+ SPPaintSelector *psel = static_cast<SPPaintSelector*>(g_object_new(SP_TYPE_PAINT_SELECTOR, NULL));
psel->setMode(SPPaintSelector::MODE_MULTIPLE);
@@ -406,7 +400,7 @@ void SPPaintSelector::setMode(Mode mode)
break;
}
this->mode = mode;
- gtk_signal_emit(GTK_OBJECT(this), psel_signals[MODE_CHANGED], this->mode);
+ g_signal_emit(G_OBJECT(this), psel_signals[MODE_CHANGED], 0, this->mode);
update = FALSE;
}
}
@@ -443,7 +437,7 @@ void SPPaintSelector::setColorAlpha(SPColor const &color, float alpha)
setMode(MODE_COLOR_RGB);
}
- csel = reinterpret_cast<SPColorSelector*>(gtk_object_get_data(GTK_OBJECT(selector), "color-selector"));
+ csel = reinterpret_cast<SPColorSelector*>(g_object_get_data(G_OBJECT(selector), "color-selector"));
rgba = color.toRGBA32( alpha );
csel->base->setColorAlpha( color, alpha );
}
@@ -619,17 +613,17 @@ sp_paint_selector_set_mode_none(SPPaintSelector *psel)
static void sp_paint_selector_color_grabbed(SPColorSelector * /*csel*/, SPPaintSelector *psel)
{
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[GRABBED]);
+ g_signal_emit(G_OBJECT(psel), psel_signals[GRABBED], 0);
}
static void sp_paint_selector_color_dragged(SPColorSelector * /*csel*/, SPPaintSelector *psel)
{
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[DRAGGED]);
+ g_signal_emit(G_OBJECT(psel), psel_signals[DRAGGED], 0);
}
static void sp_paint_selector_color_released(SPColorSelector * /*csel*/, SPPaintSelector *psel)
{
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[RELEASED]);
+ g_signal_emit(G_OBJECT(psel), psel_signals[RELEASED], 0);
}
static void
@@ -637,7 +631,7 @@ sp_paint_selector_color_changed(SPColorSelector *csel, SPPaintSelector *psel)
{
csel->base->getColorAlpha( psel->color, psel->alpha );
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[CHANGED]);
+ g_signal_emit(G_OBJECT(psel), psel_signals[CHANGED], 0);
}
static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelector::Mode /*mode*/)
@@ -649,7 +643,7 @@ static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelec
if ((psel->mode == SPPaintSelector::MODE_COLOR_RGB) || (psel->mode == SPPaintSelector::MODE_COLOR_CMYK)) {
/* Already have color selector */
- csel = (GtkWidget*)gtk_object_get_data(GTK_OBJECT(psel->selector), "color-selector");
+ csel = (GtkWidget*)g_object_get_data(G_OBJECT(psel->selector), "color-selector");
} else {
sp_paint_selector_clear_frame(psel);
@@ -661,12 +655,12 @@ static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelec
/* Color selector */
csel = sp_color_selector_new( SP_TYPE_COLOR_NOTEBOOK );
gtk_widget_show(csel);
- gtk_object_set_data(GTK_OBJECT(vb), "color-selector", csel);
+ g_object_set_data(G_OBJECT(vb), "color-selector", csel);
gtk_box_pack_start(GTK_BOX(vb), csel, TRUE, TRUE, 0);
- gtk_signal_connect(GTK_OBJECT(csel), "grabbed", GTK_SIGNAL_FUNC(sp_paint_selector_color_grabbed), psel);
- gtk_signal_connect(GTK_OBJECT(csel), "dragged", GTK_SIGNAL_FUNC(sp_paint_selector_color_dragged), psel);
- gtk_signal_connect(GTK_OBJECT(csel), "released", GTK_SIGNAL_FUNC(sp_paint_selector_color_released), psel);
- gtk_signal_connect(GTK_OBJECT(csel), "changed", GTK_SIGNAL_FUNC(sp_paint_selector_color_changed), psel);
+ g_signal_connect(G_OBJECT(csel), "grabbed", G_CALLBACK(sp_paint_selector_color_grabbed), psel);
+ g_signal_connect(G_OBJECT(csel), "dragged", G_CALLBACK(sp_paint_selector_color_dragged), psel);
+ g_signal_connect(G_OBJECT(csel), "released", G_CALLBACK(sp_paint_selector_color_released), psel);
+ g_signal_connect(G_OBJECT(csel), "changed", G_CALLBACK(sp_paint_selector_color_changed), psel);
/* Pack everything to frame */
gtk_container_add(GTK_CONTAINER(psel->frame), vb);
psel->selector = vb;
@@ -686,22 +680,22 @@ static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelec
static void sp_paint_selector_gradient_grabbed(SPColorSelector * /*csel*/, SPPaintSelector *psel)
{
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[GRABBED]);
+ g_signal_emit(G_OBJECT(psel), psel_signals[GRABBED], 0);
}
static void sp_paint_selector_gradient_dragged(SPColorSelector * /*csel*/, SPPaintSelector *psel)
{
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[DRAGGED]);
+ g_signal_emit(G_OBJECT(psel), psel_signals[DRAGGED], 0);
}
static void sp_paint_selector_gradient_released(SPColorSelector * /*csel*/, SPPaintSelector *psel)
{
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[RELEASED]);
+ g_signal_emit(G_OBJECT(psel), psel_signals[RELEASED], 0);
}
static void sp_paint_selector_gradient_changed(SPColorSelector * /*csel*/, SPPaintSelector *psel)
{
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[CHANGED]);
+ g_signal_emit(G_OBJECT(psel), psel_signals[CHANGED], 0);
}
static void sp_paint_selector_set_mode_gradient(SPPaintSelector *psel, SPPaintSelector::Mode mode)
@@ -719,20 +713,20 @@ static void sp_paint_selector_set_mode_gradient(SPPaintSelector *psel, SPPaintSe
if ((psel->mode == SPPaintSelector::MODE_GRADIENT_LINEAR) || (psel->mode == SPPaintSelector::MODE_GRADIENT_RADIAL)) {
/* Already have gradient selector */
- gsel = (GtkWidget*)gtk_object_get_data(GTK_OBJECT(psel->selector), "gradient-selector");
+ gsel = (GtkWidget*)g_object_get_data(G_OBJECT(psel->selector), "gradient-selector");
} else {
sp_paint_selector_clear_frame(psel);
/* Create new gradient selector */
gsel = sp_gradient_selector_new();
gtk_widget_show(gsel);
- gtk_signal_connect(GTK_OBJECT(gsel), "grabbed", GTK_SIGNAL_FUNC(sp_paint_selector_gradient_grabbed), psel);
- gtk_signal_connect(GTK_OBJECT(gsel), "dragged", GTK_SIGNAL_FUNC(sp_paint_selector_gradient_dragged), psel);
- gtk_signal_connect(GTK_OBJECT(gsel), "released", GTK_SIGNAL_FUNC(sp_paint_selector_gradient_released), psel);
- gtk_signal_connect(GTK_OBJECT(gsel), "changed", GTK_SIGNAL_FUNC(sp_paint_selector_gradient_changed), psel);
+ g_signal_connect(G_OBJECT(gsel), "grabbed", G_CALLBACK(sp_paint_selector_gradient_grabbed), psel);
+ g_signal_connect(G_OBJECT(gsel), "dragged", G_CALLBACK(sp_paint_selector_gradient_dragged), psel);
+ g_signal_connect(G_OBJECT(gsel), "released", G_CALLBACK(sp_paint_selector_gradient_released), psel);
+ g_signal_connect(G_OBJECT(gsel), "changed", G_CALLBACK(sp_paint_selector_gradient_changed), psel);
/* Pack everything to frame */
gtk_container_add(GTK_CONTAINER(psel->frame), gsel);
psel->selector = gsel;
- gtk_object_set_data(GTK_OBJECT(psel->selector), "gradient-selector", gsel);
+ g_object_set_data(G_OBJECT(psel->selector), "gradient-selector", gsel);
}
/* Actually we have to set option menu history here */
@@ -769,7 +763,7 @@ static void sp_psel_pattern_destroy(GtkWidget *widget, SPPaintSelector * /*psel*
static void sp_psel_pattern_change(GtkWidget * /*widget*/, SPPaintSelector *psel)
{
- gtk_signal_emit(GTK_OBJECT(psel), psel_signals[CHANGED]);
+ g_signal_emit(G_OBJECT(psel), psel_signals[CHANGED], 0);
}
@@ -833,18 +827,15 @@ sp_pattern_menu_build (GtkWidget *m, GSList *pattern_list, SPDocument */*source*
gtk_widget_show(hb);
gtk_container_add(GTK_CONTAINER(i), hb);
- gtk_menu_append(GTK_MENU(m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL(m), i);
}
}
/**
- * sp_pattern_list_from_doc()
- *
- * \brief Pick up all patterns from source, except those that are in
- * current_doc (if non-NULL), and add items to the pattern menu
- *
+ * Pick up all patterns from source, except those that are in
+ * current_doc (if non-NULL), and add items to the pattern menu.
*/
-static void sp_pattern_list_from_doc (GtkWidget *m, SPDocument * /*current_doc*/, SPDocument *source, SPDocument * /*pattern_doc*/)
+static void sp_pattern_list_from_doc(GtkWidget *m, SPDocument * /*current_doc*/, SPDocument *source, SPDocument * /*pattern_doc*/)
{
GSList *pl = ink_pattern_list_get(source);
GSList *clean_pl = NULL;
@@ -890,7 +881,7 @@ ink_pattern_menu_populate_menu(GtkWidget *m, SPDocument *doc)
gchar const *patid = "";
g_object_set_data (G_OBJECT(i), "pattern", (void *) patid);
gtk_widget_show(i);
- gtk_menu_append(GTK_MENU(m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL(m), i);
}
// suck in from patterns.svg
@@ -914,7 +905,7 @@ ink_pattern_menu(GtkWidget *mnu)
GtkWidget *i;
i = gtk_menu_item_new_with_label(_("No document selected"));
gtk_widget_show(i);
- gtk_menu_append(GTK_MENU(m), i);
+ gtk_menu_shell_append(GTK_MENU_SHELL(m), i);
gtk_widget_set_sensitive(mnu, FALSE);
} else {
@@ -946,9 +937,9 @@ void SPPaintSelector::updatePatternList( SPPattern *pattern )
/* Set history */
- if (pattern && !gtk_object_get_data(GTK_OBJECT(mnu), "update")) {
+ if (pattern && !g_object_get_data(G_OBJECT(mnu), "update")) {
- gtk_object_set_data(GTK_OBJECT(mnu), "update", GINT_TO_POINTER(TRUE));
+ g_object_set_data(G_OBJECT(mnu), "update", GINT_TO_POINTER(TRUE));
gchar const *patname = pattern->getRepr()->attribute("id");
@@ -970,7 +961,7 @@ void SPPaintSelector::updatePatternList( SPPattern *pattern )
gtk_option_menu_set_history(GTK_OPTION_MENU(mnu), patpos);
- gtk_object_set_data(GTK_OBJECT(mnu), "update", GINT_TO_POINTER(FALSE));
+ g_object_set_data(G_OBJECT(mnu), "update", GINT_TO_POINTER(FALSE));
}
//gtk_option_menu_set_history(GTK_OPTION_MENU(mnu), 0);
}
@@ -987,7 +978,7 @@ static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSel
if (psel->mode == SPPaintSelector::MODE_PATTERN) {
/* Already have pattern menu */
- tbl = (GtkWidget*)gtk_object_get_data(GTK_OBJECT(psel->selector), "pattern-selector");
+ tbl = (GtkWidget*)g_object_get_data(G_OBJECT(psel->selector), "pattern-selector");
} else {
sp_paint_selector_clear_frame(psel);
@@ -1000,9 +991,9 @@ static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSel
GtkWidget *mnu = gtk_option_menu_new();
ink_pattern_menu(mnu);
- gtk_signal_connect(GTK_OBJECT(mnu), "changed", GTK_SIGNAL_FUNC(sp_psel_pattern_change), psel);
- gtk_signal_connect(GTK_OBJECT(mnu), "destroy", GTK_SIGNAL_FUNC(sp_psel_pattern_destroy), psel);
- gtk_object_set_data(GTK_OBJECT(psel), "patternmenu", mnu);
+ g_signal_connect(G_OBJECT(mnu), "changed", G_CALLBACK(sp_psel_pattern_change), psel);
+ g_signal_connect(G_OBJECT(mnu), "destroy", G_CALLBACK(sp_psel_pattern_destroy), psel);
+ g_object_set_data(G_OBJECT(psel), "patternmenu", mnu);
g_object_ref( G_OBJECT(mnu));
gtk_container_add(GTK_CONTAINER(hb), mnu);
@@ -1023,7 +1014,7 @@ static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSel
gtk_container_add(GTK_CONTAINER(psel->frame), tbl);
psel->selector = tbl;
- gtk_object_set_data(GTK_OBJECT(psel->selector), "pattern-selector", tbl);
+ g_object_set_data(G_OBJECT(psel->selector), "pattern-selector", tbl);
gtk_frame_set_label(GTK_FRAME(psel->frame), _("Pattern fill"));
}
@@ -1098,7 +1089,7 @@ static void sp_paint_selector_set_mode_swatch(SPPaintSelector *psel, SPPaintSele
// Pack everything to frame
gtk_container_add(GTK_CONTAINER(psel->frame), GTK_WIDGET(swatchsel->gobj()));
psel->selector = GTK_WIDGET(swatchsel->gobj());
- gtk_object_set_data(GTK_OBJECT(psel->selector), "swatch-selector", swatchsel);
+ g_object_set_data(G_OBJECT(psel->selector), "swatch-selector", swatchsel);
gtk_frame_set_label(GTK_FRAME(psel->frame), _("Swatch fill"));
}
diff --git a/src/widgets/paint-selector.h b/src/widgets/paint-selector.h
index f3aff5a68..69cfa602e 100644
--- a/src/widgets/paint-selector.h
+++ b/src/widgets/paint-selector.h
@@ -1,7 +1,6 @@
#ifndef SEEN_SP_PAINT_SELECTOR_H
#define SEEN_SP_PAINT_SELECTOR_H
-
-/** \file
+/*
* Generic paint selector widget
*
* Authors:
@@ -14,27 +13,27 @@
*/
#include <glib.h>
+#include <gtk/gtk.h>
+#include "color.h"
#include "fill-or-stroke.h"
#include "sp-gradient-spread.h"
#include "sp-gradient-units.h"
class SPGradient;
+class SPDesktop;
+class SPPattern;
+class SPStyle;
#define SP_TYPE_PAINT_SELECTOR (sp_paint_selector_get_type ())
-#define SP_PAINT_SELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_PAINT_SELECTOR, SPPaintSelector))
-#define SP_PAINT_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_PAINT_SELECTOR, SPPaintSelectorClass))
-#define SP_IS_PAINT_SELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_PAINT_SELECTOR))
-#define SP_IS_PAINT_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_PAINT_SELECTOR))
-
-#include <gtk/gtkvbox.h>
+#define SP_PAINT_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_PAINT_SELECTOR, SPPaintSelector))
+#define SP_PAINT_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_PAINT_SELECTOR, SPPaintSelectorClass))
+#define SP_IS_PAINT_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_PAINT_SELECTOR))
+#define SP_IS_PAINT_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_PAINT_SELECTOR))
-#include "../forward.h"
-#include <color.h>
-#include <libnr/nr-forward.h>
-
-
-/// Generic paint selector widget
+/**
+ * Generic paint selector widget.
+ */
struct SPPaintSelector {
GtkVBox vbox;
@@ -114,7 +113,7 @@ struct SPPaintSelectorClass {
void (* fillrule_changed) (SPPaintSelector *psel, SPPaintSelector::FillRule fillrule);
};
-GtkType sp_paint_selector_get_type (void);
+GType sp_paint_selector_get_type (void);
SPPaintSelector *sp_paint_selector_new(FillOrStroke kind);
diff --git a/src/widgets/ruler.cpp b/src/widgets/ruler.cpp
index dd0336413..7baa0a172 100644
--- a/src/widgets/ruler.cpp
+++ b/src/widgets/ruler.cpp
@@ -1,5 +1,3 @@
-#define __SP_RULER_C__
-
/*
* Customized ruler class for inkscape
*
@@ -8,8 +6,9 @@
* Frank Felfe <innerspace@iname.com>
* bulia byak <buliabyak@users.sf.net>
* Diederik van Lierop <mail@diedenrezi.nl>
+ * Jon A. Cruz <jon@joncruz.org>
*
- * Copyright (C) 1999-2008 authors
+ * Copyright (C) 1999-2011 authors
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
@@ -37,30 +36,25 @@ static gint sp_hruler_motion_notify (GtkWidget *widget, GdkEventMotion *eve
static GtkWidgetClass *hruler_parent_class;
-GtkType
+GType
sp_hruler_get_type (void)
{
- //TODO: switch to GObject
- // GtkType and such calls were deprecated a while back with the
- // introduction of GObject as a separate layer, with GType instead. --JonCruz
-
- static GtkType hruler_type = 0;
+ static GType hruler_type = 0;
if (!hruler_type)
{
- static const GtkTypeInfo hruler_info =
- {
- (gchar*) "SPHRuler",
- sizeof (SPHRuler),
+ static const GTypeInfo hruler_info = {
sizeof (SPHRulerClass),
- (GtkClassInitFunc) sp_hruler_class_init,
- (GtkObjectInitFunc) sp_hruler_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
+ NULL, NULL,
+ (GClassInitFunc) sp_hruler_class_init,
+ NULL, NULL,
+ sizeof (SPHRuler),
+ 0,
+ (GInstanceInitFunc) sp_hruler_init,
+ NULL
};
- hruler_type = gtk_type_unique (gtk_ruler_get_type (), &hruler_info);
+ hruler_type = g_type_register_static (gtk_ruler_get_type (), "SPHRuler", &hruler_info, (GTypeFlags)0);
}
return hruler_type;
@@ -72,7 +66,7 @@ sp_hruler_class_init (SPHRulerClass *klass)
GtkWidgetClass *widget_class;
GtkRulerClass *ruler_class;
- hruler_parent_class = (GtkWidgetClass *) gtk_type_class (GTK_TYPE_RULER);
+ hruler_parent_class = (GtkWidgetClass *) g_type_class_peek_parent (klass);
widget_class = (GtkWidgetClass*) klass;
ruler_class = (GtkRulerClass*) klass;
@@ -96,7 +90,7 @@ sp_hruler_init (SPHRuler *hruler)
GtkWidget*
sp_hruler_new (void)
{
- return GTK_WIDGET (gtk_type_new (sp_hruler_get_type ()));
+ return GTK_WIDGET (g_object_new (sp_hruler_get_type (), NULL));
}
static gint
@@ -128,30 +122,25 @@ static void sp_vruler_size_request (GtkWidget *widget, GtkRequisition *requisiti
static GtkWidgetClass *vruler_parent_class;
-GtkType
+GType
sp_vruler_get_type (void)
{
- //TODO: switch to GObject
- // GtkType and such calls were deprecated a while back with the
- // introduction of GObject as a separate layer, with GType instead. --JonCruz
-
- static GtkType vruler_type = 0;
+ static GType vruler_type = 0;
if (!vruler_type)
{
- static const GtkTypeInfo vruler_info =
- {
- (gchar*) "SPVRuler",
- sizeof (SPVRuler),
+ static const GTypeInfo vruler_info = {
sizeof (SPVRulerClass),
- (GtkClassInitFunc) sp_vruler_class_init,
- (GtkObjectInitFunc) sp_vruler_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
+ NULL, NULL,
+ (GClassInitFunc) sp_vruler_class_init,
+ NULL, NULL,
+ sizeof (SPVRuler),
+ 0,
+ (GInstanceInitFunc) sp_vruler_init,
+ NULL
};
- vruler_type = gtk_type_unique (gtk_ruler_get_type (), &vruler_info);
+ vruler_type = g_type_register_static (gtk_ruler_get_type (), "SPVRuler", &vruler_info, (GTypeFlags)0);
}
return vruler_type;
@@ -163,7 +152,7 @@ sp_vruler_class_init (SPVRulerClass *klass)
GtkWidgetClass *widget_class;
GtkRulerClass *ruler_class;
- vruler_parent_class = (GtkWidgetClass *) gtk_type_class (GTK_TYPE_RULER);
+ vruler_parent_class = (GtkWidgetClass *) g_type_class_peek_parent (klass);
widget_class = (GtkWidgetClass*) klass;
ruler_class = (GtkRulerClass*) klass;
@@ -189,7 +178,7 @@ sp_vruler_init (SPVRuler *vruler)
GtkWidget*
sp_vruler_new (void)
{
- return GTK_WIDGET (gtk_type_new (sp_vruler_get_type ()));
+ return GTK_WIDGET (g_object_new (sp_vruler_get_type (), NULL));
}
@@ -222,8 +211,7 @@ static void
sp_ruler_common_draw_ticks (GtkRuler *ruler)
{
GtkWidget *widget;
- GdkGC *gc, *bg_gc;
- PangoFontDescription *pango_desc;
+ GdkGC *gc;
PangoContext *pango_context;
PangoLayout *pango_layout;
gint i, j, tick_index;
@@ -246,15 +234,13 @@ sp_ruler_common_draw_ticks (GtkRuler *ruler)
g_return_if_fail (ruler != NULL);
- if (!GTK_WIDGET_DRAWABLE (ruler))
+ if (!gtk_widget_is_drawable (GTK_WIDGET (ruler)))
return;
g_object_get(G_OBJECT(ruler), "orientation", &orientation, NULL);
widget = GTK_WIDGET (ruler);
gc = widget->style->fg_gc[GTK_STATE_NORMAL];
- bg_gc = widget->style->bg_gc[GTK_STATE_NORMAL];
- pango_desc = widget->style->font_desc;
pango_context = gtk_widget_get_pango_context (widget);
pango_layout = pango_layout_new (pango_context);
PangoFontDescription *fs = pango_font_description_new ();
@@ -390,26 +376,19 @@ sp_ruler_common_draw_ticks (GtkRuler *ruler)
}
}
-//TODO: warning: deprecated conversion from string constant to ‘gchar*’
-//
-//Turn out to be warnings that we should probably leave in place. The
-// pointers/types used need to be read-only. So until we correct the using
-// code, those warnings are actually desired. They say "Hey! Fix this". We
-// definitely don't want to hide/ignore them. --JonCruz
-
-// TODO address const/non-const gchar* issue:
+// Note: const casts are due to GtkRuler being const-broken and not scheduled for any more fixes.
/// Ruler metrics.
static GtkRulerMetric const sp_ruler_metrics[] = {
// NOTE: the order of records in this struct must correspond to the SPMetric enum.
- {"NONE", "", 1, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {"millimeters", "mm", PX_PER_MM, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {"centimeters", "cm", PX_PER_CM, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {"inches", "in", PX_PER_IN, { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 }, { 1, 2, 4, 8, 16 }},
- {"feet", "ft", PX_PER_FT, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {"points", "pt", PX_PER_PT, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {"picas", "pc", PX_PER_PC, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {"pixels", "px", PX_PER_PX, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {"meters", "m", PX_PER_M, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+ {const_cast<gchar*>("NONE"), const_cast<gchar*>(""), 1, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+ {const_cast<gchar*>("millimeters"), const_cast<gchar*>("mm"), PX_PER_MM, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+ {const_cast<gchar*>("centimeters"), const_cast<gchar*>("cm"), PX_PER_CM, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+ {const_cast<gchar*>("inches"), const_cast<gchar*>("in"), PX_PER_IN, { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 }, { 1, 2, 4, 8, 16 }},
+ {const_cast<gchar*>("feet"), const_cast<gchar*>("ft"), PX_PER_FT, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+ {const_cast<gchar*>("points"), const_cast<gchar*>("pt"), PX_PER_PT, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+ {const_cast<gchar*>("picas"), const_cast<gchar*>("pc"), PX_PER_PC, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+ {const_cast<gchar*>("pixels"), const_cast<gchar*>("px"), PX_PER_PX, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
+ {const_cast<gchar*>("meters"), const_cast<gchar*>("m"), PX_PER_M, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
};
void
@@ -425,6 +404,6 @@ sp_ruler_set_metric (GtkRuler *ruler,
ruler->metric = const_cast<GtkRulerMetric *>(&sp_ruler_metrics[metric]);
- if (GTK_WIDGET_DRAWABLE (ruler))
+ if (gtk_widget_is_drawable (GTK_WIDGET (ruler)))
gtk_widget_queue_draw (GTK_WIDGET (ruler));
}
diff --git a/src/widgets/ruler.h b/src/widgets/ruler.h
index 7a3509325..a774f12ef 100644
--- a/src/widgets/ruler.h
+++ b/src/widgets/ruler.h
@@ -13,7 +13,7 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gtk/gtkruler.h>
+#include <gtk/gtk.h>
#include "sp-metric.h"
#include <iostream>
#include <glib.h>
@@ -22,9 +22,9 @@
void sp_ruler_set_metric (GtkRuler * ruler, SPMetric metric);
-#define SP_HRULER(obj) GTK_CHECK_CAST (obj, sp_hruler_get_type (), SPHRuler)
-#define SP_HRULER_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, sp_hruler_get_type (), SPHRulerClass)
-#define SP_IS_HRULER(obj) GTK_CHECK_TYPE (obj, sp_hruler_get_type ())
+#define SP_HRULER(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, sp_hruler_get_type (), SPHRuler)
+#define SP_HRULER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, sp_hruler_get_type (), SPHRulerClass)
+#define SP_IS_HRULER(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, sp_hruler_get_type ())
struct SPHRuler
@@ -38,7 +38,7 @@ struct SPHRulerClass
};
-GtkType sp_hruler_get_type (void);
+GType sp_hruler_get_type (void);
GtkWidget* sp_hruler_new (void);
@@ -47,9 +47,9 @@ GtkWidget* sp_hruler_new (void);
-#define SP_VRULER(obj) GTK_CHECK_CAST (obj, sp_vruler_get_type (), SPVRuler)
-#define SP_VRULER_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, sp_vruler_get_type (), SPVRulerClass)
-#define SP_IS_VRULER(obj) GTK_CHECK_TYPE (obj, sp_vruler_get_type ())
+#define SP_VRULER(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, sp_vruler_get_type (), SPVRuler)
+#define SP_VRULER_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, sp_vruler_get_type (), SPVRulerClass)
+#define SP_IS_VRULER(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, sp_vruler_get_type ())
struct SPVRuler
@@ -63,7 +63,7 @@ struct SPVRulerClass
};
-GtkType sp_vruler_get_type (void);
+GType sp_vruler_get_type (void);
GtkWidget* sp_vruler_new (void);
diff --git a/src/widgets/select-toolbar.cpp b/src/widgets/select-toolbar.cpp
index 89253983b..38346ce56 100644
--- a/src/widgets/select-toolbar.cpp
+++ b/src/widgets/select-toolbar.cpp
@@ -17,12 +17,12 @@
#endif
#include <gtk/gtk.h>
-#include <gtk/gtkaction.h>
#include "widgets/button.h"
#include "widgets/spw-utilities.h"
#include "widgets/widget-sizes.h"
#include "widgets/spinbutton-events.h"
+#include "ui/widget/spinbutton.h"
#include "widgets/icon.h"
#include "widgets/sp-widget.h"
@@ -70,7 +70,7 @@ sp_selection_layout_widget_update(SPWidget *spw, Inkscape::Selection *sel)
if ( sel && !sel->isEmpty() ) {
int prefs_bbox = prefs->getInt("/tools/bounding_box", 0);
SPItem::BBoxType bbox_type = (prefs_bbox ==0)?
- SPItem::APPROXIMATE_BBOX : SPItem::GEOMETRIC_BBOX;
+ SPItem::VISUAL_BBOX : SPItem::GEOMETRIC_BBOX;
Geom::OptRect const bbox(sel->bounds(bbox_type));
if ( bbox ) {
UnitTracker *tracker = reinterpret_cast<UnitTracker*>(g_object_get_data(G_OBJECT(spw), "tracker"));
@@ -159,12 +159,16 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, SPWidget *spw)
document->ensureUpToDate ();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+
+ Geom::OptRect bbox_vis = selection->visualBounds();
+ Geom::OptRect bbox_geom = selection->geometricBounds();
+
int prefs_bbox = prefs->getInt("/tools/bounding_box");
- SPItem::BBoxType bbox_type = (prefs_bbox ==0)?
- SPItem::APPROXIMATE_BBOX : SPItem::GEOMETRIC_BBOX;
- Geom::OptRect bbox = selection->bounds(bbox_type);
+ SPItem::BBoxType bbox_type = (prefs_bbox == 0)?
+ SPItem::VISUAL_BBOX : SPItem::GEOMETRIC_BBOX;
+ Geom::OptRect bbox_user = selection->bounds(bbox_type);
- if ( !bbox ) {
+ if ( !bbox_user ) {
g_object_set_data(G_OBJECT(spw), "update", GINT_TO_POINTER(FALSE));
return;
}
@@ -186,35 +190,35 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, SPWidget *spw)
x0 = sp_units_get_pixels (a_x->value, unit);
y0 = sp_units_get_pixels (a_y->value, unit);
x1 = x0 + sp_units_get_pixels (a_w->value, unit);
- xrel = sp_units_get_pixels (a_w->value, unit) / bbox->dimensions()[Geom::X];
+ xrel = sp_units_get_pixels (a_w->value, unit) / bbox_user->dimensions()[Geom::X];
y1 = y0 + sp_units_get_pixels (a_h->value, unit);
- yrel = sp_units_get_pixels (a_h->value, unit) / bbox->dimensions()[Geom::Y];
+ yrel = sp_units_get_pixels (a_h->value, unit) / bbox_user->dimensions()[Geom::Y];
} else {
double const x0_propn = a_x->value * unit.unittobase;
- x0 = bbox->min()[Geom::X] * x0_propn;
+ x0 = bbox_user->min()[Geom::X] * x0_propn;
double const y0_propn = a_y->value * unit.unittobase;
- y0 = y0_propn * bbox->min()[Geom::Y];
+ y0 = y0_propn * bbox_user->min()[Geom::Y];
xrel = a_w->value * unit.unittobase;
- x1 = x0 + xrel * bbox->dimensions()[Geom::X];
+ x1 = x0 + xrel * bbox_user->dimensions()[Geom::X];
yrel = a_h->value * unit.unittobase;
- y1 = y0 + yrel * bbox->dimensions()[Geom::Y];
+ y1 = y0 + yrel * bbox_user->dimensions()[Geom::Y];
}
// Keep proportions if lock is on
GtkToggleAction *lock = GTK_TOGGLE_ACTION( g_object_get_data(G_OBJECT(spw), "lock") );
if ( gtk_toggle_action_get_active(lock) ) {
if (adj == a_h) {
- x1 = x0 + yrel * bbox->dimensions()[Geom::X];
+ x1 = x0 + yrel * bbox_user->dimensions()[Geom::X];
} else if (adj == a_w) {
- y1 = y0 + xrel * bbox->dimensions()[Geom::Y];
+ y1 = y0 + xrel * bbox_user->dimensions()[Geom::Y];
}
}
// scales and moves, in px
- double mh = fabs(x0 - bbox->min()[Geom::X]);
- double sh = fabs(x1 - bbox->max()[Geom::X]);
- double mv = fabs(y0 - bbox->min()[Geom::Y]);
- double sv = fabs(y1 - bbox->max()[Geom::Y]);
+ double mh = fabs(x0 - bbox_user->min()[Geom::X]);
+ double sh = fabs(x1 - bbox_user->max()[Geom::X]);
+ double mv = fabs(y0 - bbox_user->min()[Geom::Y]);
+ double sv = fabs(y1 - bbox_user->max()[Geom::Y]);
// unless the unit is %, convert the scales and moves to the unit
if (unit.base == SP_UNIT_ABSOLUTE || unit.base == SP_UNIT_DEVICE) {
@@ -242,7 +246,16 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, SPWidget *spw)
gdouble strokewidth = stroke_average_width (selection->itemList());
int transform_stroke = prefs->getBool("/options/transform/stroke", true) ? 1 : 0;
- Geom::Affine scaler = get_scale_transform_with_stroke (*bbox, strokewidth, transform_stroke, x0, y0, x1, y1);
+ Geom::Affine scaler;
+ if (bbox_type == SPItem::VISUAL_BBOX) {
+ scaler = get_scale_transform_for_variable_stroke (*bbox_vis, *bbox_geom, transform_stroke, x0, y0, x1, y1);
+ } else {
+ // 1) We could have use the newer get_scale_transform_for_variable_stroke() here, but to avoid regressions
+ // we'll just use the old get_scale_transform_for_uniform_stroke() for now.
+ // 2) get_scale_transform_for_uniform_stroke() is intended for visual bounding boxes, not geometrical ones!
+ // we'll trick it into using a geometric bounding box though, by setting the stroke width to zero
+ scaler = get_scale_transform_for_uniform_stroke (*bbox_geom, 0, false, x0, y0, x1, y1);
+ }
sp_selection_apply_affine(selection, scaler);
DocumentUndo::maybeDone(document, actionkey, SP_VERB_CONTEXT_SELECT,
@@ -255,6 +268,16 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, SPWidget *spw)
g_object_set_data(G_OBJECT(spw), "update", GINT_TO_POINTER(FALSE));
}
+static GtkWidget* createCustomSlider( GtkAdjustment *adjustment, gdouble climbRate, guint digits )
+{
+ Inkscape::UI::Widget::SpinButton *inkSpinner = new Inkscape::UI::Widget::SpinButton(*Glib::wrap(adjustment, true), climbRate, digits);
+ inkSpinner = Gtk::manage( inkSpinner );
+ GtkWidget *widget = GTK_WIDGET( inkSpinner->gobj() );
+ return widget;
+}
+
+// TODO create_adjustment_action appears to be a rogue tile copy from toolbox.cpp. Resolve it to be unified:
+
static EgeAdjustmentAction * create_adjustment_action( gchar const *name,
gchar const *label,
gchar const *shortLabel,
@@ -266,6 +289,12 @@ static EgeAdjustmentAction * create_adjustment_action( gchar const *name,
gchar const *tooltip,
gboolean altx )
{
+ static bool init = false;
+ if ( !init ) {
+ init = true;
+ ege_adjustment_action_set_compact_tool_factory( createCustomSlider );
+ }
+
GtkAdjustment* adj = GTK_ADJUSTMENT( gtk_adjustment_new( 0.0, lower, 1e6, SPIN_STEP, SPIN_PAGE_STEP, 0 ) );
if (tracker) {
tracker->addAdjustment(adj);
@@ -279,7 +308,7 @@ static EgeAdjustmentAction * create_adjustment_action( gchar const *name,
g_object_set( act, "short_label", Q_(shortLabel), NULL );
}
- gtk_signal_connect( GTK_OBJECT(adj), "value_changed", GTK_SIGNAL_FUNC(sp_object_layout_any_value_changed), spw );
+ g_signal_connect( G_OBJECT(adj), "value_changed", G_CALLBACK(sp_object_layout_any_value_changed), spw );
if ( focusTarget ) {
ege_adjustment_action_set_focuswidget( act, focusTarget );
}
@@ -351,9 +380,9 @@ static void toggle_pattern( GtkToggleAction* act, gpointer data )
static void toggle_lock( GtkToggleAction *act, gpointer /*data*/ ) {
gboolean active = gtk_toggle_action_get_active( act );
if ( active ) {
- g_object_set( G_OBJECT(act), "iconId", INKSCAPE_ICON_OBJECT_LOCKED, NULL );
+ g_object_set( G_OBJECT(act), "iconId", INKSCAPE_ICON("object-locked"), NULL );
} else {
- g_object_set( G_OBJECT(act), "iconId", INKSCAPE_ICON_OBJECT_UNLOCKED, NULL );
+ g_object_set( G_OBJECT(act), "iconId", INKSCAPE_ICON("object-unlocked"), NULL );
}
}
@@ -382,7 +411,7 @@ static GtkAction* create_action_for_verb( Inkscape::Verb* verb, Inkscape::UI::Vi
InkAction* inky = ink_action_new( verb->get_id(), verb->get_name(), verb->get_tip(), verb->get_image(), size );
act = GTK_ACTION(inky);
- g_signal_connect( G_OBJECT(inky), "activate", GTK_SIGNAL_FUNC(trigger_sp_action), targetAction );
+ g_signal_connect( G_OBJECT(inky), "activate", G_CALLBACK(trigger_sp_action), targetAction );
Inkscape::queueIconPrerender( verb->get_image(), size );
@@ -480,7 +509,7 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb
InkToggleAction* itact = ink_toggle_action_new( "LockAction",
_("Lock width and height"),
_("When locked, change both width and height by the same proportion"),
- INKSCAPE_ICON_OBJECT_UNLOCKED,
+ INKSCAPE_ICON("object-unlocked"),
Inkscape::ICON_SIZE_DECORATION );
g_object_set( itact, "short_label", "Lock", NULL );
g_object_set_data( G_OBJECT(spw), "lock", itact );
@@ -502,8 +531,8 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb
g_object_set_data( G_OBJECT(spw), "contextActions", contextActions );
// Force update when selection changes.
- gtk_signal_connect(GTK_OBJECT(spw), "modify_selection", GTK_SIGNAL_FUNC(sp_selection_layout_widget_modify_selection), desktop);
- gtk_signal_connect(GTK_OBJECT(spw), "change_selection", GTK_SIGNAL_FUNC(sp_selection_layout_widget_change_selection), desktop);
+ g_signal_connect(G_OBJECT(spw), "modify_selection", G_CALLBACK(sp_selection_layout_widget_modify_selection), desktop);
+ g_signal_connect(G_OBJECT(spw), "change_selection", G_CALLBACK(sp_selection_layout_widget_change_selection), desktop);
// Update now.
sp_selection_layout_widget_update(SP_WIDGET(spw), SP_ACTIVE_DESKTOP ? sp_desktop_selection(SP_ACTIVE_DESKTOP) : NULL);
@@ -527,7 +556,7 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb
// "Transform with object" buttons
{
- EgeOutputAction* act = ege_output_action_new( "transform_affect_label", _("Affect:"), _("Control whether or not to scale stroke widths, scale rectangle corners, transform gradient fills, and transform pattern fills with the object"), 0 );
+ EgeOutputAction* act = ege_output_action_new( "transform_affect_label", _("Affect:"), _("Control whether or not to scale stroke widths, scale rectangle corners, transform gradient fills, and transform pattern fills with the object"), 0 );
ege_output_action_set_use_markup( act, TRUE );
g_object_set( act, "visible-overflown", FALSE, NULL );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
@@ -537,7 +566,7 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb
InkToggleAction* itact = ink_toggle_action_new( "transform_stroke",
_("Scale stroke width"),
_("When scaling objects, scale the stroke width by the same proportion"),
- INKSCAPE_ICON_TRANSFORM_AFFECT_STROKE,
+ INKSCAPE_ICON("transform-affect-stroke"),
Inkscape::ICON_SIZE_DECORATION );
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(itact), prefs->getBool("/options/transform/stroke", true) );
g_signal_connect_after( G_OBJECT(itact), "toggled", G_CALLBACK(toggle_stroke), desktop) ;
@@ -548,7 +577,7 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb
InkToggleAction* itact = ink_toggle_action_new( "transform_corners",
_("Scale rounded corners"),
_("When scaling rectangles, scale the radii of rounded corners"),
- INKSCAPE_ICON_TRANSFORM_AFFECT_ROUNDED_CORNERS,
+ INKSCAPE_ICON("transform-affect-rounded-corners"),
Inkscape::ICON_SIZE_DECORATION );
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(itact), prefs->getBool("/options/transform/rectcorners", true) );
g_signal_connect_after( G_OBJECT(itact), "toggled", G_CALLBACK(toggle_corners), desktop) ;
@@ -559,7 +588,7 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb
InkToggleAction* itact = ink_toggle_action_new( "transform_gradient",
_("Move gradients"),
_("Move gradients (in fill or stroke) along with the objects"),
- INKSCAPE_ICON_TRANSFORM_AFFECT_GRADIENT,
+ INKSCAPE_ICON("transform-affect-gradient"),
Inkscape::ICON_SIZE_DECORATION );
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(itact), prefs->getBool("/options/transform/gradient", true) );
g_signal_connect_after( G_OBJECT(itact), "toggled", G_CALLBACK(toggle_gradient), desktop) ;
@@ -570,7 +599,7 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb
InkToggleAction* itact = ink_toggle_action_new( "transform_pattern",
_("Move patterns"),
_("Move patterns (in fill or stroke) along with the objects"),
- INKSCAPE_ICON_TRANSFORM_AFFECT_PATTERN,
+ INKSCAPE_ICON("transform-affect-pattern"),
Inkscape::ICON_SIZE_DECORATION );
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(itact), prefs->getBool("/options/transform/pattern", true) );
g_signal_connect_after( G_OBJECT(itact), "toggled", G_CALLBACK(toggle_pattern), desktop) ;
diff --git a/src/widgets/select-toolbar.h b/src/widgets/select-toolbar.h
index dbab1975a..e3573da66 100644
--- a/src/widgets/select-toolbar.h
+++ b/src/widgets/select-toolbar.h
@@ -14,9 +14,8 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gtk/gtkactiongroup.h>
-#include <gtk/gtkstyle.h>
-struct SPDesktop;
+#include <gtk/gtk.h>
+class SPDesktop;
void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder);
diff --git a/src/widgets/shrink-wrap-button.cpp b/src/widgets/shrink-wrap-button.cpp
index d73f972d9..e0c9e3cd1 100644
--- a/src/widgets/shrink-wrap-button.cpp
+++ b/src/widgets/shrink-wrap-button.cpp
@@ -10,7 +10,7 @@
*/
#include <gtkmm/button.h>
-#include <gtk/gtkbin.h>
+#include <gtk/gtk.h>
namespace Inkscape {
namespace Widgets {
diff --git a/src/widgets/sp-attribute-widget.cpp b/src/widgets/sp-attribute-widget.cpp
index a64a03f4e..d2c52e2ae 100644
--- a/src/widgets/sp-attribute-widget.cpp
+++ b/src/widgets/sp-attribute-widget.cpp
@@ -1,16 +1,14 @@
-/** @file
- * @brief Widget that listens and modifies repr attributes
- */
/* Authors:
* Lauris Kaplinski <lauris@ximian.com>
- * Abhishek Sharma
+ * Abhishek Sharma
+ * Kris De Gussem <Kris.DeGussem@gmail.com>
*
* Copyright (C) 2001 Ximian, Inc.
+ * Copyright (C) 2011, authors
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gtk/gtktable.h>
-#include <gtk/gtklabel.h>
+#include <gtk/gtk.h>
#include "xml/repr.h"
#include "macros.h"
#include "document.h"
@@ -24,708 +22,224 @@
using Inkscape::DocumentUndo;
-static void sp_attribute_widget_class_init (SPAttributeWidgetClass *klass);
-static void sp_attribute_widget_init (SPAttributeWidget *widget);
-static void sp_attribute_widget_destroy (GtkObject *object);
-
-static void sp_attribute_widget_changed (GtkEditable *editable);
-
-static void sp_attribute_widget_object_modified ( SPObject *object,
- guint flags,
- SPAttributeWidget *spaw );
-static void sp_attribute_widget_object_release ( SPObject *object,
- SPAttributeWidget *spaw );
-
-static GtkEntryClass *parent_class;
-
-
-
-
-GType sp_attribute_widget_get_type(void)
-{
- static GtkType type = 0;
- if (!type) {
- GTypeInfo info = {
- sizeof(SPAttributeWidgetClass),
- 0, // base_init
- 0, // base_finalize
- (GClassInitFunc)sp_attribute_widget_class_init,
- 0, // class_finalize
- 0, // class_data
- sizeof(SPAttributeWidget),
- 0, // n_preallocs
- (GInstanceInitFunc)sp_attribute_widget_init,
- 0 // value_table
- };
- type = g_type_register_static(GTK_TYPE_ENTRY, "SPAttributeWidget", &info, static_cast<GTypeFlags>(0));
- }
- return type;
-} // end of sp_attribute_widget_get_type()
-
-
-
-static void
-sp_attribute_widget_class_init (SPAttributeWidgetClass *klass)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
- GtkEditableClass *editable_class;
-
- object_class = GTK_OBJECT_CLASS (klass);
- widget_class = GTK_WIDGET_CLASS (klass);
- editable_class = GTK_EDITABLE_CLASS (klass);
-
- parent_class = (GtkEntryClass*)gtk_type_class (GTK_TYPE_ENTRY);
-
- object_class->destroy = sp_attribute_widget_destroy;
-
- editable_class->changed = sp_attribute_widget_changed;
-
-} // end of sp_attribute_widget_class_init()
-
+static void sp_attribute_table_object_modified (SPObject *object, guint flags, SPAttributeTable *spaw);
+static void sp_attribute_table_entry_changed (Gtk::Editable *editable, SPAttributeTable *spat);
+#define XPAD 4
+#define YPAD 0
-static void
-sp_attribute_widget_init (SPAttributeWidget *spaw)
+SPAttributeTable::SPAttributeTable () :
+ blocked(0),
+ hasobj(0),
+ table(0),
+ _attributes(),
+ _entries(),
+ modified_connection()
{
- spaw->blocked = FALSE;
- spaw->hasobj = FALSE;
-
- spaw->src.object = NULL;
-
- spaw->attribute = NULL;
-
- new (&spaw->modified_connection) sigc::connection();
- new (&spaw->release_connection) sigc::connection();
+ src.object = NULL;
}
-
-
-static void
-sp_attribute_widget_destroy (GtkObject *object)
+SPAttributeTable::SPAttributeTable (SPObject *object, std::vector<Glib::ustring> &labels, std::vector<Glib::ustring> &attributes, GtkWidget* parent) :
+ blocked(0),
+ hasobj(0),
+ table(0),
+ _attributes(),
+ _entries(),
+ modified_connection()
{
-
- SPAttributeWidget *spaw;
-
- spaw = SP_ATTRIBUTE_WIDGET (object);
-
- if (spaw->attribute) {
- g_free (spaw->attribute);
- spaw->attribute = NULL;
- }
-
-
- if (spaw->hasobj) {
-
- if (spaw->src.object) {
- spaw->modified_connection.disconnect();
- spaw->release_connection.disconnect();
- spaw->src.object = NULL;
- }
- } else {
-
- if (spaw->src.repr) {
- spaw->src.repr = Inkscape::GC::release(spaw->src.repr);
- }
- } // end of if()
-
- spaw->modified_connection.~connection();
- spaw->release_connection.~connection();
-
- ((GtkObjectClass *) parent_class)->destroy (object);
-
+ src.object = NULL;
+ set_object(object, labels, attributes, parent);
}
-
-
-static void
-sp_attribute_widget_changed (GtkEditable *editable)
+SPAttributeTable::~SPAttributeTable ()
{
-
- SPAttributeWidget *spaw;
-
- spaw = SP_ATTRIBUTE_WIDGET (editable);
-
- if (!spaw->blocked) {
-
- const gchar *text;
- spaw->blocked = TRUE;
- text = gtk_entry_get_text (GTK_ENTRY (spaw));
- if (!*text)
- text = NULL;
-
- if (spaw->hasobj && spaw->src.object) {
- spaw->src.object->getRepr()->setAttribute(spaw->attribute, text, false);
- DocumentUndo::done(spaw->src.object->document, SP_VERB_NONE,
- _("Set attribute"));
-
- } else if (spaw->src.repr) {
- spaw->src.repr->setAttribute(spaw->attribute, text, false);
- /* TODO: Warning! Undo will not be flushed in given case */
- }
- spaw->blocked = FALSE;
- }
-
-} // end of sp_attribute_widget_changed()
-
-
-
-GtkWidget *
-sp_attribute_widget_new ( SPObject *object, const gchar *attribute )
-{
- SPAttributeWidget *spaw;
-
- g_return_val_if_fail (!object || SP_IS_OBJECT (object), NULL);
- g_return_val_if_fail (!object || attribute, NULL);
-
- spaw = (SPAttributeWidget*)gtk_type_new (SP_TYPE_ATTRIBUTE_WIDGET);
-
- sp_attribute_widget_set_object (spaw, object, attribute);
-
- return GTK_WIDGET (spaw);
-
-} // end of sp_attribute_widget_new()
-
-
-
-GtkWidget *
-sp_attribute_widget_new_repr ( Inkscape::XML::Node *repr, const gchar *attribute )
-{
- SPAttributeWidget *spaw;
-
- spaw = (SPAttributeWidget*)gtk_type_new (SP_TYPE_ATTRIBUTE_WIDGET);
-
- sp_attribute_widget_set_repr (spaw, repr, attribute);
-
- return GTK_WIDGET (spaw);
+ clear();
}
-
-
-void
-sp_attribute_widget_set_object ( SPAttributeWidget *spaw,
- SPObject *object,
- const gchar *attribute )
+void SPAttributeTable::clear(void)
{
-
- g_return_if_fail (spaw != NULL);
- g_return_if_fail (SP_IS_ATTRIBUTE_WIDGET (spaw));
- g_return_if_fail (!object || SP_IS_OBJECT (object));
- g_return_if_fail (!object || attribute);
- g_return_if_fail (attribute != NULL);
-
- if (spaw->attribute) {
- g_free (spaw->attribute);
- spaw->attribute = NULL;
- }
-
- if (spaw->hasobj) {
-
- if (spaw->src.object) {
- spaw->modified_connection.disconnect();
- spaw->release_connection.disconnect();
- spaw->src.object = NULL;
- }
- } else {
-
- if (spaw->src.repr) {
- spaw->src.repr = Inkscape::GC::release(spaw->src.repr);
+ Gtk::Widget *w;
+
+ if (table)
+ {
+ std::vector<Widget*> ch = table->get_children();
+
+ for (int i = (ch.size())-1; i >=0 ; i--)
+ {
+ w = ch[i];
+ ch.pop_back();
+ if (w != NULL)
+ {
+ try
+ {
+ delete w;
+ }
+ catch(...)
+ {
+ }
}
}
+ ch.clear();
+ _attributes.clear();
+ _entries.clear();
- spaw->hasobj = TRUE;
-
- if (object) {
- const gchar *val;
-
- spaw->blocked = TRUE;
- spaw->src.object = object;
-
- spaw->modified_connection = object->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_attribute_widget_object_modified), spaw));
- spaw->release_connection = object->connectRelease(sigc::bind<1>(sigc::ptr_fun(&sp_attribute_widget_object_release), spaw));
-
- spaw->attribute = g_strdup (attribute);
-
- val = object->getRepr()->attribute(attribute);
- gtk_entry_set_text (GTK_ENTRY (spaw), val ? val : (const gchar *) "");
- spaw->blocked = FALSE;
+ delete table;
+ table = NULL;
}
- gtk_widget_set_sensitive (GTK_WIDGET (spaw), (spaw->src.object != NULL));
-
-} // end of sp_attribute_widget_set_object()
-
-
-
-void
-sp_attribute_widget_set_repr ( SPAttributeWidget *spaw,
- Inkscape::XML::Node *repr,
- const gchar *attribute )
-{
-
- g_return_if_fail (spaw != NULL);
- g_return_if_fail (SP_IS_ATTRIBUTE_WIDGET (spaw));
- g_return_if_fail (attribute != NULL);
-
- if (spaw->attribute) {
- g_free (spaw->attribute);
- spaw->attribute = NULL;
- }
-
- if (spaw->hasobj) {
-
- if (spaw->src.object) {
- spaw->modified_connection.disconnect();
- spaw->release_connection.disconnect();
- spaw->src.object = NULL;
+ if (hasobj) {
+ if (src.object) {
+ modified_connection.disconnect();
+ src.object = NULL;
}
} else {
-
- if (spaw->src.repr) {
- spaw->src.repr = Inkscape::GC::release(spaw->src.repr);
+ if (src.repr) {
+ src.repr = Inkscape::GC::release(src.repr);
}
}
-
- spaw->hasobj = FALSE;
-
- if (repr) {
- const gchar *val;
-
- spaw->blocked = TRUE;
- spaw->src.repr = Inkscape::GC::anchor(repr);
- spaw->attribute = g_strdup (attribute);
-
- val = repr->attribute(attribute);
- gtk_entry_set_text (GTK_ENTRY (spaw), val ? val : (const gchar *) "");
- spaw->blocked = FALSE;
- }
-
- gtk_widget_set_sensitive (GTK_WIDGET (spaw), (spaw->src.repr != NULL));
-
-} // end of sp_attribute_widget_set_repr()
-
-
-
-static void
-sp_attribute_widget_object_modified ( SPObject */*object*/,
- guint flags,
- SPAttributeWidget *spaw )
-{
-
- if (flags && SP_OBJECT_MODIFIED_FLAG) {
-
- const gchar *val, *text;
- val = spaw->src.object->getRepr()->attribute(spaw->attribute);
- text = gtk_entry_get_text (GTK_ENTRY (spaw));
-
- if (val || text) {
-
- if (!val || !text || strcmp (val, text)) {
- /* We are different */
- spaw->blocked = TRUE;
- gtk_entry_set_text ( GTK_ENTRY (spaw),
- val ? val : (const gchar *) "");
- spaw->blocked = FALSE;
- } // end of if()
-
- } // end of if()
-
- } //end of if()
-
-} // end of sp_attribute_widget_object_modified()
-
-
-
-static void
-sp_attribute_widget_object_release ( SPObject */*object*/,
- SPAttributeWidget *spaw )
-{
- sp_attribute_widget_set_object (spaw, NULL, NULL);
}
-
-
-/* SPAttributeTable */
-
-static void sp_attribute_table_class_init (SPAttributeTableClass *klass);
-static void sp_attribute_table_init (SPAttributeTable *widget);
-static void sp_attribute_table_destroy (GtkObject *object);
-
-static void sp_attribute_table_object_modified (SPObject *object, guint flags, SPAttributeTable *spaw);
-static void sp_attribute_table_object_release (SPObject *object, SPAttributeTable *spaw);
-static void sp_attribute_table_entry_changed (GtkEditable *editable, SPAttributeTable *spat);
-
-static GtkVBoxClass *table_parent_class;
-
-
-
-
-GType sp_attribute_table_get_type(void)
-{
- static GtkType type = 0;
- if (!type) {
- GTypeInfo info = {
- sizeof(SPAttributeTableClass),
- 0, // base_init
- 0, // base_finalize
- (GClassInitFunc)sp_attribute_table_class_init,
- 0, // class_finalize
- 0, // class_data
- sizeof(SPAttributeTable),
- 0, // n_preallocs
- (GInstanceInitFunc)sp_attribute_table_init,
- 0 // value_table
- };
- type = g_type_register_static(GTK_TYPE_VBOX, "SPAttributeTable", &info, static_cast<GTypeFlags>(0));
- }
- return type;
-} // end of sp_attribute_table_get_type()
-
-
-
-static void
-sp_attribute_table_class_init (SPAttributeTableClass *klass)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = GTK_OBJECT_CLASS (klass);
- widget_class = GTK_WIDGET_CLASS (klass);
-
- table_parent_class = (GtkVBoxClass*)gtk_type_class (GTK_TYPE_VBOX);
-
- object_class->destroy = sp_attribute_table_destroy;
-
-} // end of sp_attribute_table_class_init()
-
-
-
-static void
-sp_attribute_table_init ( SPAttributeTable *spat )
-{
- spat->blocked = FALSE;
- spat->hasobj = FALSE;
- spat->table = NULL;
- spat->src.object = NULL;
- spat->num_attr = 0;
- spat->attributes = NULL;
- spat->entries = NULL;
-
- new (&spat->modified_connection) sigc::connection();
- new (&spat->release_connection) sigc::connection();
-}
-
-static void
-sp_attribute_table_destroy ( GtkObject *object )
-{
- SPAttributeTable *spat;
-
- spat = SP_ATTRIBUTE_TABLE (object);
-
- if (spat->attributes) {
- gint i;
- for (i = 0; i < spat->num_attr; i++) {
- g_free (spat->attributes[i]);
- }
- g_free (spat->attributes);
- spat->attributes = NULL;
- }
-
- if (spat->hasobj) {
-
- if (spat->src.object) {
- spat->modified_connection.disconnect();
- spat->release_connection.disconnect();
- spat->src.object = NULL;
- }
- } else {
- if (spat->src.repr) {
- spat->src.repr = Inkscape::GC::release(spat->src.repr);
- }
- } // end of if()
-
- spat->modified_connection.~connection();
- spat->release_connection.~connection();
-
- if (spat->entries) {
- g_free (spat->entries);
- spat->entries = NULL;
- }
-
- spat->table = NULL;
-
- if (((GtkObjectClass *) table_parent_class)->destroy) {
- (* ((GtkObjectClass *) table_parent_class)->destroy) (object);
- }
-
-} // end of sp_attribute_table_destroy()
-
-
-GtkWidget *
-sp_attribute_table_new ( SPObject *object,
- gint num_attr,
- const gchar **labels,
- const gchar **attributes )
-{
- SPAttributeTable *spat;
-
- g_return_val_if_fail (!object || SP_IS_OBJECT (object), NULL);
- g_return_val_if_fail (!object || (num_attr > 0), NULL);
- g_return_val_if_fail (!num_attr || (labels && attributes), NULL);
-
- spat = (SPAttributeTable*)gtk_type_new (SP_TYPE_ATTRIBUTE_TABLE);
-
- sp_attribute_table_set_object (spat, object, num_attr, labels, attributes);
-
- return GTK_WIDGET (spat);
-
-} // end of sp_attribute_table_new()
-
-
-
-GtkWidget *
-sp_attribute_table_new_repr ( Inkscape::XML::Node *repr,
- gint num_attr,
- const gchar **labels,
- const gchar **attributes )
+void SPAttributeTable::set_object(SPObject *object,
+ std::vector<Glib::ustring> &labels,
+ std::vector<Glib::ustring> &attributes,
+ GtkWidget* parent)
{
- SPAttributeTable *spat;
-
- g_return_val_if_fail (!num_attr || (labels && attributes), NULL);
-
- spat = (SPAttributeTable*)gtk_type_new (SP_TYPE_ATTRIBUTE_TABLE);
-
- sp_attribute_table_set_repr (spat, repr, num_attr, labels, attributes);
-
- return GTK_WIDGET (spat);
-
-} // end of sp_attribute_table_new_repr()
-
-
-
-#define XPAD 4
-#define YPAD 0
-
-void
-sp_attribute_table_set_object ( SPAttributeTable *spat,
- SPObject *object,
- gint num_attr,
- const gchar **labels,
- const gchar **attributes )
-{
-
- g_return_if_fail (spat != NULL);
- g_return_if_fail (SP_IS_ATTRIBUTE_TABLE (spat));
+ g_return_if_fail (parent);
g_return_if_fail (!object || SP_IS_OBJECT (object));
- g_return_if_fail (!object || (num_attr > 0));
- g_return_if_fail (!num_attr || (labels && attributes));
+ g_return_if_fail (!object || !labels.empty() || !attributes.empty());
+ g_return_if_fail (labels.size() == attributes.size());
- if (spat->table) {
- gtk_widget_destroy (spat->table);
- spat->table = NULL;
- }
-
- if (spat->attributes) {
- gint i;
- for (i = 0; i < spat->num_attr; i++) {
- g_free (spat->attributes[i]);
- }
- g_free (spat->attributes);
- spat->attributes = NULL;
- }
-
- if (spat->entries) {
- g_free (spat->entries);
- spat->entries = NULL;
- }
-
- if (spat->hasobj) {
- if (spat->src.object) {
- spat->modified_connection.disconnect();
- spat->release_connection.disconnect();
- spat->src.object = NULL;
- }
- } else {
- if (spat->src.repr) {
- spat->src.repr = Inkscape::GC::release(spat->src.repr);
- }
- }
-
- spat->hasobj = TRUE;
+ clear();
+ hasobj = true;
if (object) {
- gint i;
-
- spat->blocked = TRUE;
-
- /* Set up object */
- spat->src.object = object;
- spat->num_attr = num_attr;
-
- spat->modified_connection = object->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_attribute_table_object_modified), spat));
- spat->release_connection = object->connectRelease(sigc::bind<1>(sigc::ptr_fun(&sp_attribute_table_object_release), spat));
-
- /* Create table */
- spat->table = gtk_table_new (num_attr, 2, FALSE);
- gtk_container_add (GTK_CONTAINER (spat), spat->table);
- /* Arrays */
- spat->attributes = g_new0 (gchar *, num_attr);
- spat->entries = g_new0 (GtkWidget *, num_attr);
- /* Fill rows */
- for (i = 0; i < num_attr; i++) {
- GtkWidget *w;
+ blocked = true;
+
+ // Set up object
+ src.object = object;
+ modified_connection = object->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_attribute_table_object_modified), this));
+
+ // Create table
+ table = Gtk::manage(new Gtk::Table (attributes.size(), 2, false));
+ gtk_container_add (GTK_CONTAINER (parent),(GtkWidget*)table->gobj());
+
+ // Fill rows
+ _attributes = attributes;
+ for (guint i = 0; i < (attributes.size()); i++) {
+ Gtk::Label *ll;
+ Gtk::Entry *ee;
+ Gtk::Widget *w;
const gchar *val;
- spat->attributes[i] = g_strdup (attributes[i]);
- w = gtk_label_new (_(labels[i]));
- gtk_widget_show (w);
- gtk_misc_set_alignment (GTK_MISC (w), 1.0, 0.5);
- gtk_table_attach ( GTK_TABLE (spat->table), w, 0, 1, i, i + 1,
- GTK_FILL,
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ ll = new Gtk::Label (_(labels[i].c_str()));
+ w = (Gtk::Widget *) ll;
+ ll->show();
+ ll->set_alignment (1.0, 0.5);
+ table->attach (*w, 0, 1, i, i + 1,
+ Gtk::FILL,
+ (Gtk::EXPAND | Gtk::FILL),
XPAD, YPAD );
- w = gtk_entry_new ();
- gtk_widget_show (w);
- val = object->getRepr()->attribute(attributes[i]);
- gtk_entry_set_text (GTK_ENTRY (w), val ? val : (const gchar *) "");
- gtk_table_attach ( GTK_TABLE (spat->table), w, 1, 2, i, i + 1,
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ ee = new Gtk::Entry();
+ w = (Gtk::Widget *) ee;
+ ee->show();
+ val = object->getRepr()->attribute(attributes[i].c_str());
+ ee->set_text (val ? val : (const gchar *) "");
+ table->attach (*w, 1, 2, i, i + 1,
+ (Gtk::EXPAND | Gtk::FILL),
+ (Gtk::EXPAND | Gtk::FILL),
XPAD, YPAD );
- spat->entries[i] = w;
- g_signal_connect ( G_OBJECT (w), "changed",
+ _entries.push_back(w);
+ g_signal_connect ( w->gobj(), "changed",
G_CALLBACK (sp_attribute_table_entry_changed),
- spat );
+ this );
}
/* Show table */
- gtk_widget_show (spat->table);
-
- spat->blocked = FALSE;
+ table->show ();
+ blocked = false;
}
+}
- gtk_widget_set_sensitive ( GTK_WIDGET (spat),
- (spat->src.object != NULL) );
-
-} // end of sp_attribute_table_set_object()
-
-
-
-void
-sp_attribute_table_set_repr ( SPAttributeTable *spat,
- Inkscape::XML::Node *repr,
- gint num_attr,
- const gchar **labels,
- const gchar **attributes )
+void SPAttributeTable::set_repr (Inkscape::XML::Node *repr,
+ std::vector<Glib::ustring> &labels,
+ std::vector<Glib::ustring> &attributes,
+ GtkWidget* parent)
{
- g_return_if_fail (spat != NULL);
- g_return_if_fail (SP_IS_ATTRIBUTE_TABLE (spat));
- g_return_if_fail (!num_attr || (labels && attributes));
-
- if (spat->table) {
- gtk_widget_destroy (spat->table);
- spat->table = NULL;
- }
+ g_return_if_fail (!labels.empty() || !attributes.empty());
+ g_return_if_fail (labels.size() == attributes.size());
- if (spat->attributes) {
- gint i;
- for (i = 0; i < spat->num_attr; i++) {
- g_free (spat->attributes[i]);
- }
- g_free (spat->attributes);
- spat->attributes = NULL;
- }
+ clear();
- if (spat->entries) {
- g_free (spat->entries);
- spat->entries = NULL;
- }
-
- if (spat->hasobj) {
- if (spat->src.object) {
- spat->modified_connection.disconnect();
- spat->release_connection.disconnect();
- spat->src.object = NULL;
- }
- } else {
- if (spat->src.repr) {
- spat->src.repr = Inkscape::GC::release(spat->src.repr);
- }
- }
-
- spat->hasobj = FALSE;
+ hasobj = false;
if (repr) {
- gint i;
-
- spat->blocked = TRUE;
-
- /* Set up repr */
- spat->src.repr = Inkscape::GC::anchor(repr);
- spat->num_attr = num_attr;
- /* Create table */
- spat->table = gtk_table_new (num_attr, 2, FALSE);
- gtk_container_add (GTK_CONTAINER (spat), spat->table);
- /* Arrays */
- spat->attributes = g_new0 (gchar *, num_attr);
- spat->entries = g_new0 (GtkWidget *, num_attr);
-
- /* Fill rows */
- for (i = 0; i < num_attr; i++) {
- GtkWidget *w;
+ blocked = true;
+
+ // Set up repr
+ src.repr = Inkscape::GC::anchor(repr);
+
+ // Create table
+ table = new Gtk::Table (attributes.size(), 2, false);
+ gtk_container_add (GTK_CONTAINER (parent),(GtkWidget*)table->gobj());
+
+ // Fill rows
+ _attributes = attributes;
+ for (guint i = 0; i < (attributes.size()); i++) {
+ Gtk::Label *ll;
+ Gtk::Entry *ee;
+ Gtk::Widget *w;
const gchar *val;
- spat->attributes[i] = g_strdup (attributes[i]);
- w = gtk_label_new (labels[i]);
- gtk_widget_show (w);
- gtk_misc_set_alignment (GTK_MISC (w), 1.0, 0.5);
- gtk_table_attach ( GTK_TABLE (spat->table), w, 0, 1, i, i + 1,
- GTK_FILL,
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ ll = new Gtk::Label (_(labels[i].c_str()));
+ w = (Gtk::Widget *) ll;
+ ll->show ();
+ ll->set_alignment (1.0, 0.5);
+ table->attach (*w, 0, 1, i, i + 1,
+ Gtk::FILL,
+ (Gtk::EXPAND | Gtk::FILL),
XPAD, YPAD );
- w = gtk_entry_new ();
- gtk_widget_show (w);
- val = repr->attribute(attributes[i]);
- gtk_entry_set_text (GTK_ENTRY (w), val ? val : (const gchar *) "");
- gtk_table_attach ( GTK_TABLE (spat->table), w, 1, 2, i, i + 1,
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
- (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
+ ee = new Gtk::Entry();
+ w = (Gtk::Widget *) ee;
+ ee->show();
+ val = repr->attribute(attributes[i].c_str());
+ ee->set_text (val ? val : (const gchar *) "");
+ table->attach (*w, 1, 2, i, i + 1,
+ (Gtk::EXPAND | Gtk::FILL),
+ (Gtk::EXPAND | Gtk::FILL),
XPAD, YPAD );
- spat->entries[i] = w;
- g_signal_connect ( G_OBJECT (w), "changed",
+ _entries.push_back(w);
+ g_signal_connect ( w->gobj(), "changed",
G_CALLBACK (sp_attribute_table_entry_changed),
- spat );
+ this );
}
/* Show table */
- gtk_widget_show (spat->table);
-
- spat->blocked = FALSE;
+ table->show ();
+ blocked = false;
}
-
- gtk_widget_set_sensitive (GTK_WIDGET (spat), (spat->src.repr != NULL));
-
-} // end of sp_attribute_table_set_repr()
-
+}
-static void
-sp_attribute_table_object_modified ( SPObject */*object*/,
+static void sp_attribute_table_object_modified ( SPObject */*object*/,
guint flags,
SPAttributeTable *spat )
{
if (flags && SP_OBJECT_MODIFIED_FLAG)
{
- gint i;
- for (i = 0; i < spat->num_attr; i++) {
- const gchar *val, *text;
- val = spat->src.object->getRepr()->attribute(spat->attributes[i]);
- text = gtk_entry_get_text (GTK_ENTRY (spat->entries[i]));
- if (val || text) {
- if (!val || !text || strcmp (val, text)) {
+ guint i;
+ std::vector<Glib::ustring> attributes = spat->get_attributes();
+ std::vector<Gtk::Widget *> entries = spat->get_entries();
+ Gtk::Entry* e;
+ Glib::ustring text;
+ for (i = 0; i < (attributes.size()); i++) {
+ const gchar *val;
+ e = (Gtk::Entry*) entries[i];
+ val = spat->src.object->getRepr()->attribute(attributes[i].c_str());
+ text = e->get_text ();
+ if (val || !text.empty()) {
+ if (text != val) {
/* We are different */
- spat->blocked = TRUE;
- gtk_entry_set_text ( GTK_ENTRY (spat->entries[i]),
- val ? val : (const gchar *) "");
- spat->blocked = FALSE;
+ spat->blocked = true;
+ e->set_text (val ? val : (const gchar *) "");
+ spat->blocked = false;
}
}
}
@@ -733,44 +247,32 @@ sp_attribute_table_object_modified ( SPObject */*object*/,
} // end of sp_attribute_table_object_modified()
-
-
-static void
-sp_attribute_table_object_release (SPObject */*object*/, SPAttributeTable *spat)
-{
- sp_attribute_table_set_object (spat, NULL, 0, NULL, NULL);
-}
-
-
-
-static void
-sp_attribute_table_entry_changed ( GtkEditable *editable,
+static void sp_attribute_table_entry_changed ( Gtk::Editable *editable,
SPAttributeTable *spat )
{
if (!spat->blocked)
{
- gint i;
- for (i = 0; i < spat->num_attr; i++) {
-
- if (GTK_WIDGET (editable) == spat->entries[i]) {
- const gchar *text;
- spat->blocked = TRUE;
- text = gtk_entry_get_text (GTK_ENTRY (spat->entries[i]));
-
- if (!*text)
- text = NULL;
+ guint i;
+ std::vector<Glib::ustring> attributes = spat->get_attributes();
+ std::vector<Gtk::Widget *> entries = spat->get_entries();
+ Gtk::Entry *e;
+ for (i = 0; i < (attributes.size()); i++) {
+ e = (Gtk::Entry *) entries[i];
+ if ((GtkWidget*) (editable) == (GtkWidget*) e->gobj()) {
+ spat->blocked = true;
+ Glib::ustring text = e->get_text ();
if (spat->hasobj && spat->src.object) {
- spat->src.object->getRepr()->setAttribute(spat->attributes[i], text, false);
+ spat->src.object->getRepr()->setAttribute(attributes[i].c_str(), text.c_str(), false);
DocumentUndo::done(spat->src.object->document, SP_VERB_NONE,
_("Set attribute"));
} else if (spat->src.repr) {
- spat->src.repr->setAttribute(spat->attributes[i], text, false);
+ spat->src.repr->setAttribute(attributes[i].c_str(), text.c_str(), false);
/* TODO: Warning! Undo will not be flushed in given case */
}
- spat->blocked = FALSE;
+ spat->blocked = false;
return;
}
}
diff --git a/src/widgets/sp-attribute-widget.h b/src/widgets/sp-attribute-widget.h
index 617c5b012..a03b9b193 100644
--- a/src/widgets/sp-attribute-widget.h
+++ b/src/widgets/sp-attribute-widget.h
@@ -1,10 +1,12 @@
-/** @file
- * @brief Widget that listens and modifies repr attributes
+/**
+ * @file
+ * Widget that listens and modifies repr attributes.
*/
/* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
+ * Kris De Gussem <Kris.DeGussem@gmail.com>
*
- * Copyright (C) 2002 authors
+ * Copyright (C) 2002,2011 authors
* Copyright (C) 2001 Ximian, Inc.
*
* Licensed under GNU GPL, read the file 'COPYING' for more information
@@ -13,110 +15,47 @@
#ifndef SEEN_DIALOGS_SP_ATTRIBUTE_WIDGET_H
#define SEEN_DIALOGS_SP_ATTRIBUTE_WIDGET_H
+#include <gtk/gtk.h>
+#include <gtkmm.h>
#include <glib.h>
#include <stddef.h>
#include <sigc++/connection.h>
-#define SP_TYPE_ATTRIBUTE_WIDGET (sp_attribute_widget_get_type ())
-#define SP_ATTRIBUTE_WIDGET(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_ATTRIBUTE_WIDGET, SPAttributeWidget))
-#define SP_ATTRIBUTE_WIDGET_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), SP_TYPE_ATTRIBUTE_WIDGET, SPAttributeWidgetClass))
-#define SP_IS_ATTRIBUTE_WIDGET(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_ATTRIBUTE_WIDGET))
-#define SP_IS_ATTRIBUTE_WIDGET_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), SP_TYPE_ATTRIBUTE_WIDGET))
-
-#define SP_TYPE_ATTRIBUTE_TABLE (sp_attribute_table_get_type ())
-#define SP_ATTRIBUTE_TABLE(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_ATTRIBUTE_TABLE, SPAttributeTable))
-#define SP_ATTRIBUTE_TABLE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), SP_TYPE_ATTRIBUTE_TABLE, SPAttributeTableClass))
-#define SP_IS_ATTRIBUTE_TABLE(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_ATTRIBUTE_TABLE))
-#define SP_IS_ATTRIBUTE_TABLE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), SP_TYPE_ATTRIBUTE_TABLE))
-
namespace Inkscape {
namespace XML {
class Node;
}
}
-
-struct SPAttributeWidget;
-struct SPAttributeWidgetClass;
-
struct SPAttributeTable;
struct SPAttributeTableClass;
-
-#include <gtk/gtkentry.h>
-#include <gtk/gtkvbox.h>
-
-#include <forward.h>
-
-struct SPAttributeWidget {
- GtkEntry entry;
- guint blocked : 1;
- guint hasobj : 1;
+class SPObject;
+
+class SPAttributeTable : public Gtk::Widget {
+public:
+ SPAttributeTable ();
+ SPAttributeTable (SPObject *object, std::vector<Glib::ustring> &labels, std::vector<Glib::ustring> &attributes, GtkWidget* parent);
+ ~SPAttributeTable ();
+ void set_object(SPObject *object, std::vector<Glib::ustring> &labels, std::vector<Glib::ustring> &attributes, GtkWidget* parent);
+ void set_repr(Inkscape::XML::Node *repr, std::vector<Glib::ustring> &labels, std::vector<Glib::ustring> &attributes, GtkWidget* parent);
+ std::vector<Glib::ustring> get_attributes(void) {return _attributes;};
+ std::vector<Gtk::Widget *> get_entries(void) {return _entries;};
union {
SPObject *object;
Inkscape::XML::Node *repr;
} src;
- gchar *attribute;
+ guint blocked;
+ guint hasobj;
+private:
+ Gtk::Table *table;
+ std::vector<Glib::ustring> _attributes;
+ std::vector<Gtk::Widget *> _entries;
sigc::connection modified_connection;
- sigc::connection release_connection;
+
+ void clear(void);
};
-struct SPAttributeWidgetClass {
- GtkEntryClass entry_class;
-};
-
-GtkType sp_attribute_widget_get_type (void);
-
-GtkWidget *sp_attribute_widget_new (SPObject *object, const gchar *attribute);
-GtkWidget *sp_attribute_widget_new_repr (Inkscape::XML::Node *repr, const gchar *attribute);
-
-void sp_attribute_widget_set_object ( SPAttributeWidget *spw,
- SPObject *object,
- const gchar *attribute );
-void sp_attribute_widget_set_repr ( SPAttributeWidget *spw,
- Inkscape::XML::Node *repr,
- const gchar *attribute );
-
-/* SPAttributeTable */
-
-struct SPAttributeTable {
- GtkVBox vbox;
- guint blocked : 1;
- guint hasobj : 1;
- GtkWidget *table;
- union {
- SPObject *object;
- Inkscape::XML::Node *repr;
- } src;
- gint num_attr;
- gchar **attributes;
- GtkWidget **entries;
-
- sigc::connection modified_connection;
- sigc::connection release_connection;
-};
-
-struct SPAttributeTableClass {
- GtkEntryClass entry_class;
-};
-
-GtkType sp_attribute_table_get_type (void);
-
-GtkWidget *sp_attribute_table_new ( SPObject *object, gint num_attr,
- const gchar **labels,
- const gchar **attributes );
-GtkWidget *sp_attribute_table_new_repr ( Inkscape::XML::Node *repr, gint num_attr,
- const gchar **labels,
- const gchar **attributes );
-void sp_attribute_table_set_object ( SPAttributeTable *spw,
- SPObject *object, gint num_attr,
- const gchar **labels,
- const gchar **attrs );
-void sp_attribute_table_set_repr ( SPAttributeTable *spw,
- Inkscape::XML::Node *repr, gint num_attr,
- const gchar **labels,
- const gchar **attrs );
-
#endif
/*
diff --git a/src/widgets/sp-color-gtkselector.cpp b/src/widgets/sp-color-gtkselector.cpp
index 10254321a..60a63d8c4 100644
--- a/src/widgets/sp-color-gtkselector.cpp
+++ b/src/widgets/sp-color-gtkselector.cpp
@@ -113,7 +113,7 @@ sp_color_gtkselector_new( GType )
{
SPColorGtkselector *csel;
- csel = (SPColorGtkselector*)gtk_type_new (SP_TYPE_COLOR_GTKSELECTOR);
+ csel = (SPColorGtkselector*)g_object_new (SP_TYPE_COLOR_GTKSELECTOR, NULL);
return GTK_WIDGET (csel);
}
diff --git a/src/widgets/sp-color-gtkselector.h b/src/widgets/sp-color-gtkselector.h
index b9b2b0862..3142406c1 100644
--- a/src/widgets/sp-color-gtkselector.h
+++ b/src/widgets/sp-color-gtkselector.h
@@ -1,7 +1,7 @@
#ifndef SEEN_SP_COLOR_GTKSELECTOR_H
#define SEEN_SP_COLOR_GTKSELECTOR_H
-#include <gtk/gtkcolorsel.h>
+#include <gtk/gtk.h>
#include "../color.h"
#include "sp-color-selector.h"
@@ -33,10 +33,10 @@ protected:
#define SP_TYPE_COLOR_GTKSELECTOR (sp_color_gtkselector_get_type ())
-#define SP_COLOR_GTKSELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_COLOR_GTKSELECTOR, SPColorGtkselector))
-#define SP_COLOR_GTKSELECTOR_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_GTKSELECTOR, SPColorGtkselectorClass))
-#define SP_IS_COLOR_GTKSELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_COLOR_GTKSELECTOR))
-#define SP_IS_COLOR_GTKSELECTOR_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_GTKSELECTOR))
+#define SP_COLOR_GTKSELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_COLOR_GTKSELECTOR, SPColorGtkselector))
+#define SP_COLOR_GTKSELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_GTKSELECTOR, SPColorGtkselectorClass))
+#define SP_IS_COLOR_GTKSELECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_COLOR_GTKSELECTOR))
+#define SP_IS_COLOR_GTKSELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_GTKSELECTOR))
struct SPColorGtkselector {
SPColorSelector base;
diff --git a/src/widgets/sp-color-icc-selector.cpp b/src/widgets/sp-color-icc-selector.cpp
index 12467041c..28a317717 100644
--- a/src/widgets/sp-color-icc-selector.cpp
+++ b/src/widgets/sp-color-icc-selector.cpp
@@ -2,12 +2,7 @@
# include "config.h"
#endif
#include <math.h>
-#include <gtk/gtkbutton.h>
#include <gtk/gtk.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtktable.h>
-#include <gtk/gtkspinbutton.h>
#include <glibmm/i18n.h>
#include "../dialogs/dialog-events.h"
#include "sp-color-icc-selector.h"
@@ -20,12 +15,12 @@
#define noDEBUG_LCMS
#if ENABLE_LCMS
-#include "color-profile-fns.h"
#include "color-profile.h"
+#include "cms-system.h"
+#include "color-profile-cms-fns.h"
#ifdef DEBUG_LCMS
#include "preferences.h"
-#include <gtk/gtkmessagedialog.h>
#endif // DEBUG_LCMS
#endif // ENABLE_LCMS
@@ -134,6 +129,8 @@ ColorICCSelector::ColorICCSelector( SPColorSelector* csel )
_updating( FALSE ),
_dragging( FALSE ),
_fixupNeeded(0),
+ _fixupBtn(0),
+ _profileSel(0),
_fooCount(0),
_fooScales(0),
_fooAdj(0),
@@ -142,9 +139,9 @@ ColorICCSelector::ColorICCSelector( SPColorSelector* csel )
_fooLabel(0),
_fooMap(0),
_adj(0),
+ _slider(0),
_sbtn(0),
- _label(0),
- _tt(0)
+ _label(0)
#if ENABLE_LCMS
,
_profileName(""),
@@ -265,6 +262,12 @@ void getThings( DWORD space, gchar const**& namers, gchar const**& tippies, guin
tippies = tips[index];
scalies = scales[index];
}
+
+
+void getThings( Inkscape::ColorProfile *prof, gchar const**& namers, gchar const**& tippies, guint const*& scalies ) {
+ getThings( asICColorSpaceSig(prof->getColorSpace()), namers, tippies, scalies );
+}
+
#endif // ENABLE_LCMS
@@ -276,8 +279,6 @@ void ColorICCSelector::init()
_updating = FALSE;
_dragging = FALSE;
- _tt = gtk_tooltips_new();
-
t = gtk_table_new (5, 3, FALSE);
gtk_widget_show (t);
gtk_box_pack_start (GTK_BOX (_csel), t, TRUE, TRUE, 0);
@@ -296,7 +297,7 @@ void ColorICCSelector::init()
_fixupBtn = gtk_button_new_with_label(_("Fix"));
g_signal_connect( G_OBJECT(_fixupBtn), "clicked", G_CALLBACK(_fixupHit), (gpointer)this );
gtk_widget_set_sensitive( _fixupBtn, FALSE );
- gtk_tooltips_set_tip( _tt, _fixupBtn, _("Fix RGB fallback to match icc-color() value."), NULL );
+ gtk_widget_set_tooltip_text( _fixupBtn, _("Fix RGB fallback to match icc-color() value.") );
//gtk_misc_set_alignment( GTK_MISC (_fixupBtn), 1.0, 0.5 );
gtk_widget_show( _fixupBtn );
gtk_table_attach( GTK_TABLE (t), _fixupBtn, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, XPAD, YPAD );
@@ -344,18 +345,18 @@ void ColorICCSelector::init()
/* Slider */
_fooSlider[i] = sp_color_slider_new( _fooAdj[i] );
#if ENABLE_LCMS
- gtk_tooltips_set_tip( _tt, _fooSlider[i], tips[i], NULL );
+ gtk_widget_set_tooltip_text( _fooSlider[i], tips[i] );
#else
- gtk_tooltips_set_tip( _tt, _fooSlider[i], ".", NULL );
+ gtk_widget_set_tooltip_text( _fooSlider[i], "." );
#endif // ENABLE_LCMS
gtk_widget_show( _fooSlider[i] );
gtk_table_attach( GTK_TABLE (t), _fooSlider[i], 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)GTK_FILL, XPAD, YPAD );
_fooBtn[i] = gtk_spin_button_new( _fooAdj[i], step, digits );
#if ENABLE_LCMS
- gtk_tooltips_set_tip( _tt, _fooBtn[i], tips[i], NULL );
+ gtk_widget_set_tooltip_text( _fooBtn[i], tips[i] );
#else
- gtk_tooltips_set_tip( _tt, _fooBtn[i], ".", NULL );
+ gtk_widget_set_tooltip_text( _fooBtn[i], "." );
#endif // ENABLE_LCMS
sp_dialog_defocus_on_enter( _fooBtn[i] );
gtk_label_set_mnemonic_widget( GTK_LABEL(_fooLabel[i]), _fooBtn[i] );
@@ -367,11 +368,11 @@ void ColorICCSelector::init()
/* Signals */
- gtk_signal_connect( GTK_OBJECT( _fooAdj[i] ), "value_changed", GTK_SIGNAL_FUNC( _adjustmentChanged ), _csel );
+ g_signal_connect( G_OBJECT( _fooAdj[i] ), "value_changed", G_CALLBACK( _adjustmentChanged ), _csel );
- gtk_signal_connect( GTK_OBJECT( _fooSlider[i] ), "grabbed", GTK_SIGNAL_FUNC( _sliderGrabbed ), _csel );
- gtk_signal_connect( GTK_OBJECT( _fooSlider[i] ), "released", GTK_SIGNAL_FUNC( _sliderReleased ), _csel );
- gtk_signal_connect( GTK_OBJECT( _fooSlider[i] ), "changed", GTK_SIGNAL_FUNC( _sliderChanged ), _csel );
+ g_signal_connect( G_OBJECT( _fooSlider[i] ), "grabbed", G_CALLBACK( _sliderGrabbed ), _csel );
+ g_signal_connect( G_OBJECT( _fooSlider[i] ), "released", G_CALLBACK( _sliderReleased ), _csel );
+ g_signal_connect( G_OBJECT( _fooSlider[i] ), "changed", G_CALLBACK( _sliderChanged ), _csel );
row++;
}
@@ -387,7 +388,7 @@ void ColorICCSelector::init()
/* Slider */
_slider = sp_color_slider_new (_adj);
- gtk_tooltips_set_tip (_tt, _slider, _("Alpha (opacity)"), NULL);
+ gtk_widget_set_tooltip_text (_slider, _("Alpha (opacity)"));
gtk_widget_show (_slider);
gtk_table_attach (GTK_TABLE (t), _slider, 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)GTK_FILL, XPAD, YPAD);
@@ -399,22 +400,22 @@ void ColorICCSelector::init()
/* Spinbutton */
_sbtn = gtk_spin_button_new (GTK_ADJUSTMENT (_adj), 1.0, 0);
- gtk_tooltips_set_tip (_tt, _sbtn, _("Alpha (opacity)"), NULL);
+ gtk_widget_set_tooltip_text (_sbtn, _("Alpha (opacity)"));
sp_dialog_defocus_on_enter (_sbtn);
gtk_label_set_mnemonic_widget (GTK_LABEL(_label), _sbtn);
gtk_widget_show (_sbtn);
gtk_table_attach (GTK_TABLE (t), _sbtn, 2, 3, row, row + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD);
/* Signals */
- gtk_signal_connect (GTK_OBJECT (_adj), "value_changed",
- GTK_SIGNAL_FUNC (_adjustmentChanged), _csel);
-
- gtk_signal_connect (GTK_OBJECT (_slider), "grabbed",
- GTK_SIGNAL_FUNC (_sliderGrabbed), _csel);
- gtk_signal_connect (GTK_OBJECT (_slider), "released",
- GTK_SIGNAL_FUNC (_sliderReleased), _csel);
- gtk_signal_connect (GTK_OBJECT (_slider), "changed",
- GTK_SIGNAL_FUNC (_sliderChanged), _csel);
+ g_signal_connect (G_OBJECT (_adj), "value_changed",
+ G_CALLBACK (_adjustmentChanged), _csel);
+
+ g_signal_connect (G_OBJECT (_slider), "grabbed",
+ G_CALLBACK (_sliderGrabbed), _csel);
+ g_signal_connect (G_OBJECT (_slider), "released",
+ G_CALLBACK (_sliderReleased), _csel);
+ g_signal_connect (G_OBJECT (_slider), "changed",
+ G_CALLBACK (_sliderChanged), _csel);
}
static void
@@ -441,7 +442,7 @@ sp_color_icc_selector_new (void)
{
SPColorICCSelector *csel;
- csel = (SPColorICCSelector*)gtk_type_new (SP_TYPE_COLOR_ICC_SELECTOR);
+ csel = (SPColorICCSelector*)g_object_new (SP_TYPE_COLOR_ICC_SELECTOR, NULL);
return GTK_WIDGET (csel);
}
@@ -506,12 +507,12 @@ void ColorICCSelector::_switchToProfile( gchar const* name )
#ifdef DEBUG_LCMS
g_message("got on out [%04x] [%04x] [%04x] [%04x]", post[0], post[1], post[2], post[3]);
#endif // DEBUG_LCMS
- guint count = _cmsChannelsOf( newProf->getColorSpace() );
+ guint count = _cmsChannelsOf( asICColorSpaceSig(newProf->getColorSpace()) );
gchar const** names = 0;
gchar const** tips = 0;
guint const* scales = 0;
- getThings( newProf->getColorSpace(), names, tips, scales );
+ getThings( asICColorSpaceSig(newProf->getColorSpace()), names, tips, scales );
for ( guint i = 0; i < count; i++ ) {
gdouble val = (((gdouble)post[i])/65535.0) * (gdouble)scales[i];
@@ -689,19 +690,19 @@ void ColorICCSelector::_setProfile( SVGICCColor* profile )
if ( profile ) {
_prof = SP_ACTIVE_DOCUMENT->profileManager->find(profile->colorProfile.c_str());
- if ( _prof && _prof->getProfileClass() != icSigNamedColorClass ) {
- _profChannelCount = _cmsChannelsOf( _prof->getColorSpace() );
+ if ( _prof && (asICColorProfileClassSig(_prof->getProfileClass()) != icSigNamedColorClass) ) {
+ _profChannelCount = _cmsChannelsOf( asICColorSpaceSig(_prof->getColorSpace()) );
gchar const** names = 0;
gchar const** tips = 0;
- getThings( _prof->getColorSpace(), names, tips, _fooScales );
+ getThings( asICColorSpaceSig(_prof->getColorSpace()), names, tips, _fooScales );
if ( profChanged ) {
for ( guint i = 0; i < _profChannelCount; i++ ) {
gtk_label_set_text_with_mnemonic( GTK_LABEL(_fooLabel[i]), names[i]);
- gtk_tooltips_set_tip( _tt, _fooSlider[i], tips[i], NULL );
- gtk_tooltips_set_tip( _tt, _fooBtn[i], tips[i], NULL );
+ gtk_widget_set_tooltip_text( _fooSlider[i], tips[i] );
+ gtk_widget_set_tooltip_text( _fooBtn[i], tips[i] );
sp_color_slider_set_colors( SP_COLOR_SLIDER(_fooSlider[i]),
SPColor(0.0, 0.0, 0.0).toRGBA32(0xff),
@@ -709,7 +710,7 @@ void ColorICCSelector::_setProfile( SVGICCColor* profile )
SPColor(1.0, 1.0, 1.0).toRGBA32(0xff) );
/*
_fooAdj[i] = GTK_ADJUSTMENT( gtk_adjustment_new( val, 0.0, _fooScales[i], step, page, page ) );
- gtk_signal_connect( GTK_OBJECT( _fooAdj[i] ), "value_changed", GTK_SIGNAL_FUNC( _adjustmentChanged ), _csel );
+ g_signal_connect( G_OBJECT( _fooAdj[i] ), "value_changed", G_CALLBACK( _adjustmentChanged ), _csel );
sp_color_slider_set_adjustment( SP_COLOR_SLIDER(_fooSlider[i]), _fooAdj[i] );
gtk_spin_button_set_adjustment( GTK_SPIN_BUTTON(_fooBtn[i]), _fooAdj[i] );
diff --git a/src/widgets/sp-color-icc-selector.h b/src/widgets/sp-color-icc-selector.h
index 9fd80c04a..166348830 100644
--- a/src/widgets/sp-color-icc-selector.h
+++ b/src/widgets/sp-color-icc-selector.h
@@ -1,19 +1,16 @@
#ifndef SEEN_SP_COLOR_ICC_SELECTOR_H
#define SEEN_SP_COLOR_ICC_SELECTOR_H
-#include <glib/gtypes.h>
-#include <gtk/gtktooltips.h>
-#include <gtk/gtkvbox.h>
+#include <glib.h>
+#include <gtk/gtk.h>
#include "../color.h"
#include "sp-color-slider.h"
#include "sp-color-selector.h"
-#if ENABLE_LCMS
-#include "color-profile.h"
-#endif // ENABLE_LCMS
-
-
+namespace Inkscape {
+struct ColorProfile;
+}
struct SPColorICCSelector;
struct SPColorICCSelectorClass;
@@ -67,8 +64,6 @@ protected:
GtkWidget* _sbtn; /* Spinbutton */
GtkWidget* _label; /* Label */
- GtkTooltips* _tt; /* tooltip container */
-
#if ENABLE_LCMS
std::string _profileName;
Inkscape::ColorProfile* _prof;
@@ -85,10 +80,10 @@ private:
#define SP_TYPE_COLOR_ICC_SELECTOR (sp_color_icc_selector_get_type ())
-#define SP_COLOR_ICC_SELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_COLOR_ICC_SELECTOR, SPColorICCSelector))
-#define SP_COLOR_ICC_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_ICC_SELECTOR, SPColorICCSelectorClass))
-#define SP_IS_COLOR_ICC_SELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_COLOR_ICC_SELECTOR))
-#define SP_IS_COLOR_ICC_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_ICC_SELECTOR))
+#define SP_COLOR_ICC_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_COLOR_ICC_SELECTOR, SPColorICCSelector))
+#define SP_COLOR_ICC_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_ICC_SELECTOR, SPColorICCSelectorClass))
+#define SP_IS_COLOR_ICC_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_COLOR_ICC_SELECTOR))
+#define SP_IS_COLOR_ICC_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_ICC_SELECTOR))
struct SPColorICCSelector {
SPColorSelector parent;
diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp
index 174971555..c9a09349b 100644
--- a/src/widgets/sp-color-notebook.cpp
+++ b/src/widgets/sp-color-notebook.cpp
@@ -1,5 +1,3 @@
-#define __SP_COLOR_NOTEBOOK_C__
-
/*
* A notebook with RGB, CMYK, CMS, HSL, and Wheel pages
*
@@ -37,6 +35,10 @@
#include "../inkscape.h"
#include "../document.h"
#include "../profile-manager.h"
+#include "color-profile.h"
+#include "cms-system.h"
+
+using Inkscape::CMSSystem;
struct SPColorNotebookTracker {
const gchar* name;
@@ -62,7 +64,7 @@ static SPColorSelectorClass *parent_class;
GType sp_color_notebook_get_type(void)
{
- static GtkType type = 0;
+ static GType type = 0;
if (!type) {
GTypeInfo info = {
sizeof(SPColorNotebookClass),
@@ -102,7 +104,7 @@ sp_color_notebook_class_init (SPColorNotebookClass *klass)
static void
sp_color_notebook_switch_page(GtkNotebook *notebook,
- GtkNotebookPage *page,
+ GtkWidget *page,
guint page_num,
SPColorNotebook *colorbook)
{
@@ -111,14 +113,14 @@ sp_color_notebook_switch_page(GtkNotebook *notebook,
ColorNotebook* nb = (ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base);
nb->switchPage( notebook, page, page_num );
- // remember the page we seitched to
+ // remember the page we switched to
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
prefs->setInt("/colorselector/page", page_num);
}
}
void ColorNotebook::switchPage(GtkNotebook*,
- GtkNotebookPage*,
+ GtkWidget*,
guint page_num)
{
SPColorSelector* csel;
@@ -203,8 +205,6 @@ void ColorNotebook::init()
GType *selector_types = 0;
guint selector_type_count = 0;
- GtkTooltips *tt = gtk_tooltips_new ();
-
/* tempory hardcoding to get types loaded */
SP_TYPE_COLOR_SCALES;
SP_TYPE_COLOR_WHEEL_SELECTOR;
@@ -233,7 +233,7 @@ void ColorNotebook::init()
if (!g_type_is_a (selector_types[i], SP_TYPE_COLOR_NOTEBOOK))
{
guint howmany = 1;
- gpointer klass = gtk_type_class (selector_types[i]);
+ gpointer klass = g_type_class_ref (selector_types[i]);
if ( klass && SP_IS_COLOR_SELECTOR_CLASS (klass) )
{
SPColorSelectorClass *ck = SP_COLOR_SELECTOR_CLASS (klass);
@@ -296,7 +296,7 @@ void ColorNotebook::init()
GtkWidget *item = gtk_check_menu_item_new_with_label (_(entry->name));
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), entry->enabledFull);
gtk_widget_show (item);
- gtk_menu_append (menu, item);
+ gtk_menu_shell_append (GTK_MENU_SHELL(menu), item);
g_signal_connect (G_OBJECT (item), "activate",
G_CALLBACK (sp_color_notebook_menuitem_response),
@@ -320,7 +320,7 @@ void ColorNotebook::init()
// but first fix it so it remembers its settings in prefs and does not take that much space (entire vertical column!)
//gtk_table_attach (GTK_TABLE (table), align, 2, 3, row, row + 1, GTK_FILL, GTK_FILL, XPAD, YPAD);
- gtk_signal_connect_object(GTK_OBJECT(_btn), "event", GTK_SIGNAL_FUNC (sp_color_notebook_menu_handler), GTK_OBJECT(_csel));
+ g_signal_connect_swapped(G_OBJECT(_btn), "event", G_CALLBACK (sp_color_notebook_menu_handler), G_OBJECT(_csel));
if ( !found )
{
gtk_widget_set_sensitive (_btn, FALSE);
@@ -336,24 +336,21 @@ void ColorNotebook::init()
_box_colormanaged = gtk_event_box_new ();
GtkWidget *colormanaged = gtk_image_new_from_icon_name ("color-management-icon", GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_container_add (GTK_CONTAINER (_box_colormanaged), colormanaged);
- GtkTooltips *tooltips_colormanaged = gtk_tooltips_new ();
- gtk_tooltips_set_tip (tooltips_colormanaged, _box_colormanaged, _("Color Managed"), "");
+ gtk_widget_set_tooltip_text (_box_colormanaged, _("Color Managed"));
gtk_widget_set_sensitive (_box_colormanaged, false);
gtk_box_pack_start(GTK_BOX(rgbabox), _box_colormanaged, FALSE, FALSE, 2);
_box_outofgamut = gtk_event_box_new ();
GtkWidget *outofgamut = gtk_image_new_from_icon_name ("out-of-gamut-icon", GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_container_add (GTK_CONTAINER (_box_outofgamut), outofgamut);
- GtkTooltips *tooltips_outofgamut = gtk_tooltips_new ();
- gtk_tooltips_set_tip (tooltips_outofgamut, _box_outofgamut, _("Out of gamut!"), "");
+ gtk_widget_set_tooltip_text (_box_outofgamut, _("Out of gamut!"));
gtk_widget_set_sensitive (_box_outofgamut, false);
gtk_box_pack_start(GTK_BOX(rgbabox), _box_outofgamut, FALSE, FALSE, 2);
_box_toomuchink = gtk_event_box_new ();
GtkWidget *toomuchink = gtk_image_new_from_icon_name ("too-much-ink-icon", GTK_ICON_SIZE_SMALL_TOOLBAR);
gtk_container_add (GTK_CONTAINER (_box_toomuchink), toomuchink);
- GtkTooltips *tooltips_toomuchink = gtk_tooltips_new ();
- gtk_tooltips_set_tip (tooltips_toomuchink, _box_toomuchink, _("Too much ink!"), "");
+ gtk_widget_set_tooltip_text (_box_toomuchink, _("Too much ink!"));
gtk_widget_set_sensitive (_box_toomuchink, false);
gtk_box_pack_start(GTK_BOX(rgbabox), _box_toomuchink, FALSE, FALSE, 2);
@@ -368,7 +365,7 @@ void ColorNotebook::init()
sp_dialog_defocus_on_enter (_rgbae);
gtk_entry_set_max_length (GTK_ENTRY (_rgbae), 8);
gtk_entry_set_width_chars (GTK_ENTRY (_rgbae), 8);
- gtk_tooltips_set_tip (tt, _rgbae, _("Hexadecimal RGBA value of the color"), NULL);
+ gtk_widget_set_tooltip_text (_rgbae, _("Hexadecimal RGBA value of the color"));
gtk_box_pack_start(GTK_BOX(rgbabox), _rgbae, FALSE, FALSE, 0);
gtk_label_set_mnemonic_widget (GTK_LABEL(_rgbal), _rgbae);
@@ -388,10 +385,10 @@ void ColorNotebook::init()
gtk_table_attach (GTK_TABLE (table), _p, 2, 3, row, row + 1, GTK_FILL, GTK_FILL, XPAD, YPAD);
#endif
- _switchId = g_signal_connect(GTK_OBJECT (_book), "switch-page",
- GTK_SIGNAL_FUNC (sp_color_notebook_switch_page), SP_COLOR_NOTEBOOK(_csel));
+ _switchId = g_signal_connect(G_OBJECT (_book), "switch-page",
+ G_CALLBACK (sp_color_notebook_switch_page), SP_COLOR_NOTEBOOK(_csel));
- _entryId = gtk_signal_connect (GTK_OBJECT (_rgbae), "changed", GTK_SIGNAL_FUNC (ColorNotebook::_rgbaEntryChangedHook), _csel);
+ _entryId = g_signal_connect (G_OBJECT (_rgbae), "changed", G_CALLBACK (ColorNotebook::_rgbaEntryChangedHook), _csel);
}
static void
@@ -436,7 +433,7 @@ sp_color_notebook_new (void)
{
SPColorNotebook *colorbook;
- colorbook = (SPColorNotebook*)gtk_type_new (SP_TYPE_COLOR_NOTEBOOK);
+ colorbook = (SPColorNotebook*)g_object_new (SP_TYPE_COLOR_NOTEBOOK, NULL);
return GTK_WIDGET (colorbook);
}
@@ -489,9 +486,14 @@ void ColorNotebook::_rgbaEntryChanged(GtkEntry* entry)
if (t) {
Glib::ustring text = t;
bool changed = false;
- if (!text.empty() && text[0] == '#') {
+
+ // Here we deal with pasted colors with theformat '#RRGGBB' or 'RRGGBB'
+ // In those cases we keep (and so add) the current alpha value.
+ if (!text.empty()) {
changed = true;
- text.erase(0,1);
+ if (text[0] == '#') {
+ text.erase(0,1);
+ }
if (text.size() == 6) {
// it was a standard RGB hex
unsigned int alph = SP_COLOR_F_TO_U(_alpha);
@@ -534,14 +536,14 @@ void ColorNotebook::_updateRgbaEntry( const SPColor& color, gfloat alpha )
if (color.icc){
Inkscape::ColorProfile* target_profile = SP_ACTIVE_DOCUMENT->profileManager->find(color.icc->colorProfile.c_str());
if ( target_profile )
- gtk_widget_set_sensitive (_box_outofgamut, target_profile->GamutCheck(color));
+ gtk_widget_set_sensitive(_box_outofgamut, target_profile->GamutCheck(color));
}
/* update too-much-ink icon */
gtk_widget_set_sensitive (_box_toomuchink, false);
if (color.icc){
Inkscape::ColorProfile* prof = SP_ACTIVE_DOCUMENT->profileManager->find(color.icc->colorProfile.c_str());
- if ( prof && ( (prof->getColorSpace() == icSigCmykData) || (prof->getColorSpace() == icSigCmyData) ) ) {
+ if ( prof && CMSSystem::isPrintColorSpace(prof) ) {
gtk_widget_show(GTK_WIDGET(_box_toomuchink));
double ink_sum = 0;
for (unsigned int i=0; i<color.icc->colors.size(); i++){
@@ -653,10 +655,10 @@ GtkWidget* ColorNotebook::addPage(GType page_type, guint submode)
// g_message( "Hitting up for tab for '%s'", str );
tab_label = gtk_label_new(_(str));
gtk_notebook_append_page( GTK_NOTEBOOK (_book), page, tab_label );
- gtk_signal_connect (GTK_OBJECT (page), "grabbed", GTK_SIGNAL_FUNC (_entryGrabbed), _csel);
- gtk_signal_connect (GTK_OBJECT (page), "dragged", GTK_SIGNAL_FUNC (_entryDragged), _csel);
- gtk_signal_connect (GTK_OBJECT (page), "released", GTK_SIGNAL_FUNC (_entryReleased), _csel);
- gtk_signal_connect (GTK_OBJECT (page), "changed", GTK_SIGNAL_FUNC (_entryChanged), _csel);
+ g_signal_connect (G_OBJECT (page), "grabbed", G_CALLBACK (_entryGrabbed), _csel);
+ g_signal_connect (G_OBJECT (page), "dragged", G_CALLBACK (_entryDragged), _csel);
+ g_signal_connect (G_OBJECT (page), "released", G_CALLBACK (_entryReleased), _csel);
+ g_signal_connect (G_OBJECT (page), "changed", G_CALLBACK (_entryChanged), _csel);
}
return page;
diff --git a/src/widgets/sp-color-notebook.h b/src/widgets/sp-color-notebook.h
index 0b9b2ed87..85b4315ed 100644
--- a/src/widgets/sp-color-notebook.h
+++ b/src/widgets/sp-color-notebook.h
@@ -12,9 +12,7 @@
* This code is in public domain
*/
-#include <gtk/gtkvbox.h>
-#include <gtk/gtknotebook.h>
-#include <gtk/gtkentry.h>
+#include <gtk/gtk.h>
#include "../color.h"
#include "sp-color-selector.h"
@@ -33,7 +31,7 @@ public:
virtual void init();
SPColorSelector* getCurrentSelector();
- void switchPage( GtkNotebook *notebook, GtkNotebookPage *page, guint page_num );
+ void switchPage( GtkNotebook *notebook, GtkWidget *page, guint page_num );
GtkWidget* addPage( GType page_type, guint submode );
void removePage( GType page_type, guint submode );
@@ -78,10 +76,10 @@ private:
#define SP_TYPE_COLOR_NOTEBOOK (sp_color_notebook_get_type ())
-#define SP_COLOR_NOTEBOOK(o) (GTK_CHECK_CAST ((o), SP_TYPE_COLOR_NOTEBOOK, SPColorNotebook))
-#define SP_COLOR_NOTEBOOK_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_NOTEBOOK, SPColorNotebookClass))
-#define SP_IS_COLOR_NOTEBOOK(o) (GTK_CHECK_TYPE ((o), SP_TYPE_COLOR_NOTEBOOK))
-#define SP_IS_COLOR_NOTEBOOK_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_NOTEBOOK))
+#define SP_COLOR_NOTEBOOK(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_COLOR_NOTEBOOK, SPColorNotebook))
+#define SP_COLOR_NOTEBOOK_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_NOTEBOOK, SPColorNotebookClass))
+#define SP_IS_COLOR_NOTEBOOK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_COLOR_NOTEBOOK))
+#define SP_IS_COLOR_NOTEBOOK_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_NOTEBOOK))
struct SPColorNotebook {
SPColorSelector parent; /* Parent */
diff --git a/src/widgets/sp-color-preview.cpp b/src/widgets/sp-color-preview.cpp
deleted file mode 100644
index 5c8154709..000000000
--- a/src/widgets/sp-color-preview.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * A simple color preview widget
- *
- * Author:
- * Lauris Kaplinski <lauris@kaplinski.com>
- *
- * Copyright (C) 2001-2002 Lauris Kaplinski
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Released under GNU GPL, read the file 'COPYING' for more information
- */
-
-#include "../display/nr-plain-stuff-gdk.h"
-#include "sp-color-preview.h"
-
-#define SPCP_DEFAULT_WIDTH 32
-#define SPCP_DEFAULT_HEIGHT 11
-
-static void sp_color_preview_class_init (SPColorPreviewClass *klass);
-static void sp_color_preview_init (SPColorPreview *image);
-static void sp_color_preview_destroy (GtkObject *object);
-
-static void sp_color_preview_size_request (GtkWidget *widget, GtkRequisition *requisition);
-static void sp_color_preview_size_allocate (GtkWidget *widget, GtkAllocation *allocation);
-static gint sp_color_preview_expose (GtkWidget *widget, GdkEventExpose *event);
-
-static void sp_color_preview_paint (SPColorPreview *cp, GdkRectangle *area);
-
-static GtkWidgetClass *parent_class;
-
-GType sp_color_preview_get_type(void)
-{
- static GType type = 0;
- if (!type) {
- static const GTypeInfo info = {
- sizeof(SPColorPreviewClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) sp_color_preview_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(SPColorPreview),
- 0, /* n_preallocs */
- (GInstanceInitFunc) sp_color_preview_init,
- 0, /* value_table */
- };
-
- type = g_type_register_static( GTK_TYPE_WIDGET,
- "SPColorPreview",
- &info,
- static_cast< GTypeFlags > (0) );
- }
- return type;
-}
-
-static void
-sp_color_preview_class_init (SPColorPreviewClass *klass)
-{
- GtkObjectClass *object_class;
- GtkWidgetClass *widget_class;
-
- object_class = (GtkObjectClass *) klass;
- widget_class = (GtkWidgetClass *) klass;
-
- parent_class = (GtkWidgetClass*)gtk_type_class (GTK_TYPE_WIDGET);
-
- object_class->destroy = sp_color_preview_destroy;
-
- widget_class->size_request = sp_color_preview_size_request;
- widget_class->size_allocate = sp_color_preview_size_allocate;
- widget_class->expose_event = sp_color_preview_expose;
-}
-
-static void
-sp_color_preview_init (SPColorPreview *image)
-{
- GTK_WIDGET_SET_FLAGS (image, GTK_NO_WINDOW);
-
- image->rgba = 0xffffffff;
-}
-
-static void
-sp_color_preview_destroy (GtkObject *object)
-{
- SPColorPreview *image;
-
- image = SP_COLOR_PREVIEW (object);
-
- if (((GtkObjectClass *) (parent_class))->destroy)
- (* ((GtkObjectClass *) (parent_class))->destroy) (object);
-}
-
-static void
-sp_color_preview_size_request (GtkWidget *widget, GtkRequisition *requisition)
-{
- SPColorPreview *slider;
-
- slider = SP_COLOR_PREVIEW (widget);
-
- requisition->width = SPCP_DEFAULT_WIDTH;
- requisition->height = SPCP_DEFAULT_HEIGHT;
-}
-
-static void
-sp_color_preview_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
-{
- SPColorPreview *image;
-
- image = SP_COLOR_PREVIEW (widget);
-
- widget->allocation = *allocation;
-
- if (GTK_WIDGET_DRAWABLE (image)) {
- gtk_widget_queue_draw (GTK_WIDGET (image));
- }
-}
-
-static gint
-sp_color_preview_expose (GtkWidget *widget, GdkEventExpose *event)
-{
- SPColorPreview *cp;
-
- cp = SP_COLOR_PREVIEW (widget);
-
- if (GTK_WIDGET_DRAWABLE (widget)) {
- sp_color_preview_paint (cp, &event->area);
- }
-
- return TRUE;
-}
-
-GtkWidget *
-sp_color_preview_new (guint32 rgba)
-{
- SPColorPreview *image;
-
- image = (SPColorPreview*)gtk_type_new (SP_TYPE_COLOR_PREVIEW);
-
- sp_color_preview_set_rgba32 (image, rgba);
-
- return (GtkWidget *) image;
-}
-
-void
-sp_color_preview_set_rgba32 (SPColorPreview *cp, guint32 rgba)
-{
- cp->rgba = rgba;
-
- if (GTK_WIDGET_DRAWABLE (cp)) {
- gtk_widget_queue_draw (GTK_WIDGET (cp));
- }
-}
-
-static void
-sp_color_preview_paint (SPColorPreview *cp, GdkRectangle *area)
-{
- GtkWidget *widget;
- GdkRectangle warea, carea;
- GdkRectangle wpaint, cpaint;
- gint w2;
-
- widget = GTK_WIDGET (cp);
-
- warea.x = widget->allocation.x;
- warea.y = widget->allocation.y;
- warea.width = widget->allocation.width;
- warea.height = widget->allocation.height;
-
- if (!gdk_rectangle_intersect (area, &warea, &wpaint)) return;
-
- /* Transparent area */
-
- w2 = warea.width / 2;
-
- carea.x = warea.x;
- carea.y = warea.y;
- carea.width = w2;
- carea.height = warea.height;
-
- if (gdk_rectangle_intersect (area, &carea, &cpaint)) {
- nr_gdk_draw_rgba32_solid (widget->window, widget->style->black_gc,
- cpaint.x, cpaint.y,
- cpaint.width, cpaint.height,
- cp->rgba);
- }
-
- /* Solid area */
-
- carea.x = warea.x + w2;
- carea.y = warea.y;
- carea.width = warea.width - w2;
- carea.height = warea.height;
-
- if (gdk_rectangle_intersect (area, &carea, &cpaint)) {
- nr_gdk_draw_rgba32_solid (widget->window, widget->style->black_gc,
- cpaint.x, cpaint.y,
- cpaint.width, cpaint.height,
- cp->rgba | 0xff);
- }
-}
-
-/*
- 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/widgets/sp-color-preview.h b/src/widgets/sp-color-preview.h
deleted file mode 100644
index 32572e915..000000000
--- a/src/widgets/sp-color-preview.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef SEEN_COLOR_PREVIEW_H
-#define SEEN_COLOR_PREVIEW_H
-
-/*
- * A simple color preview widget
- *
- * Author:
- * Lauris Kaplinski <lauris@kaplinski.com>
- *
- * Copyright (C) 2001-2002 Lauris Kaplinski
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Released under GNU GPL, read the file 'COPYING' for more information
- */
-
-#include <gtk/gtkwidget.h>
-
-#include <glib.h>
-
-
-
-#define SP_TYPE_COLOR_PREVIEW (sp_color_preview_get_type ())
-#define SP_COLOR_PREVIEW(o) (GTK_CHECK_CAST ((o), SP_TYPE_COLOR_PREVIEW, SPColorPreview))
-#define SP_COLOR_PREVIEW_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_PREVIEW, SPColorPreviewClass))
-#define SP_IS_COLOR_PREVIEW(o) (GTK_CHECK_TYPE ((o), SP_TYPE_COLOR_PREVIEW))
-#define SP_IS_COLOR_PREVIEW_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_PREVIEW))
-
-struct SPColorPreview {
- GtkWidget widget;
-
- guint32 rgba;
-};
-
-struct SPColorPreviewClass {
- GtkWidgetClass parent_class;
-};
-
-GType sp_color_preview_get_type(void);
-
-GtkWidget *sp_color_preview_new(guint32 rgba);
-
-void sp_color_preview_set_rgba32(SPColorPreview *cp, guint32 color);
-
-
-#endif // SEEN_COLOR_PREVIEW_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 :
diff --git a/src/widgets/sp-color-scales.cpp b/src/widgets/sp-color-scales.cpp
index fb8bb0795..c07e44aa6 100644
--- a/src/widgets/sp-color-scales.cpp
+++ b/src/widgets/sp-color-scales.cpp
@@ -140,8 +140,6 @@ void ColorScales::init()
_updating = FALSE;
_dragging = FALSE;
- _tt = gtk_tooltips_new();
-
t = gtk_table_new (5, 3, FALSE);
gtk_widget_show (t);
gtk_box_pack_start (GTK_BOX (_csel), t, TRUE, TRUE, 0);
@@ -168,16 +166,16 @@ void ColorScales::init()
gtk_table_attach (GTK_TABLE (t), _b[i], 2, 3, i, i + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD);
/* Attach channel value to adjustment */
- gtk_object_set_data (GTK_OBJECT (_a[i]), "channel", GINT_TO_POINTER (i));
+ g_object_set_data (G_OBJECT (_a[i]), "channel", GINT_TO_POINTER (i));
/* Signals */
- gtk_signal_connect (GTK_OBJECT (_a[i]), "value_changed",
- GTK_SIGNAL_FUNC (_adjustmentAnyChanged), _csel);
- gtk_signal_connect (GTK_OBJECT (_s[i]), "grabbed",
- GTK_SIGNAL_FUNC (_sliderAnyGrabbed), _csel);
- gtk_signal_connect (GTK_OBJECT (_s[i]), "released",
- GTK_SIGNAL_FUNC (_sliderAnyReleased), _csel);
- gtk_signal_connect (GTK_OBJECT (_s[i]), "changed",
- GTK_SIGNAL_FUNC (_sliderAnyChanged), _csel);
+ g_signal_connect (G_OBJECT (_a[i]), "value_changed",
+ G_CALLBACK (_adjustmentAnyChanged), _csel);
+ g_signal_connect (G_OBJECT (_s[i]), "grabbed",
+ G_CALLBACK (_sliderAnyGrabbed), _csel);
+ g_signal_connect (G_OBJECT (_s[i]), "released",
+ G_CALLBACK (_sliderAnyReleased), _csel);
+ g_signal_connect (G_OBJECT (_s[i]), "changed",
+ G_CALLBACK (_sliderAnyChanged), _csel);
}
/* Initial mode is none, so it works */
@@ -208,7 +206,7 @@ sp_color_scales_new (void)
{
SPColorScales *csel;
- csel = (SPColorScales*)gtk_type_new (SP_TYPE_COLOR_SCALES);
+ csel = (SPColorScales*)g_object_new (SP_TYPE_COLOR_SCALES, NULL);
return GTK_WIDGET (csel);
}
@@ -402,17 +400,17 @@ void ColorScales::setMode(SPColorScalesMode mode)
case SP_COLOR_SCALES_MODE_RGB:
_setRangeLimit(255.0);
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[0]), _("_R:"));
- gtk_tooltips_set_tip (_tt, _s[0], _("Red"), NULL);
- gtk_tooltips_set_tip (_tt, _b[0], _("Red"), NULL);
+ gtk_widget_set_tooltip_text (_s[0], _("Red"));
+ gtk_widget_set_tooltip_text (_b[0], _("Red"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[1]), _("_G:"));
- gtk_tooltips_set_tip (_tt, _s[1], _("Green"), NULL);
- gtk_tooltips_set_tip (_tt, _b[1], _("Green"), NULL);
+ gtk_widget_set_tooltip_text (_s[1], _("Green"));
+ gtk_widget_set_tooltip_text (_b[1], _("Green"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[2]), _("_B:"));
- gtk_tooltips_set_tip (_tt, _s[2], _("Blue"), NULL);
- gtk_tooltips_set_tip (_tt, _b[2], _("Blue"), NULL);
+ gtk_widget_set_tooltip_text (_s[2], _("Blue"));
+ gtk_widget_set_tooltip_text (_b[2], _("Blue"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[3]), _("_A:"));
- gtk_tooltips_set_tip (_tt, _s[3], _("Alpha (opacity)"), NULL);
- gtk_tooltips_set_tip (_tt, _b[3], _("Alpha (opacity)"), NULL);
+ gtk_widget_set_tooltip_text (_s[3], _("Alpha (opacity)"));
+ gtk_widget_set_tooltip_text (_b[3], _("Alpha (opacity)"));
sp_color_slider_set_map (SP_COLOR_SLIDER (_s[0]), NULL);
gtk_widget_hide (_l[4]);
gtk_widget_hide (_s[4]);
@@ -428,17 +426,17 @@ void ColorScales::setMode(SPColorScalesMode mode)
case SP_COLOR_SCALES_MODE_HSV:
_setRangeLimit(255.0);
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[0]), _("_H:"));
- gtk_tooltips_set_tip (_tt, _s[0], _("Hue"), NULL);
- gtk_tooltips_set_tip (_tt, _b[0], _("Hue"), NULL);
+ gtk_widget_set_tooltip_text (_s[0], _("Hue"));
+ gtk_widget_set_tooltip_text (_b[0], _("Hue"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[1]), _("_S:"));
- gtk_tooltips_set_tip (_tt, _s[1], _("Saturation"), NULL);
- gtk_tooltips_set_tip (_tt, _b[1], _("Saturation"), NULL);
+ gtk_widget_set_tooltip_text (_s[1], _("Saturation"));
+ gtk_widget_set_tooltip_text (_b[1], _("Saturation"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[2]), _("_L:"));
- gtk_tooltips_set_tip (_tt, _s[2], _("Lightness"), NULL);
- gtk_tooltips_set_tip (_tt, _b[2], _("Lightness"), NULL);
+ gtk_widget_set_tooltip_text (_s[2], _("Lightness"));
+ gtk_widget_set_tooltip_text (_b[2], _("Lightness"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[3]), _("_A:"));
- gtk_tooltips_set_tip (_tt, _s[3], _("Alpha (opacity)"), NULL);
- gtk_tooltips_set_tip (_tt, _b[3], _("Alpha (opacity)"), NULL);
+ gtk_widget_set_tooltip_text (_s[3], _("Alpha (opacity)"));
+ gtk_widget_set_tooltip_text (_b[3], _("Alpha (opacity)"));
sp_color_slider_set_map (SP_COLOR_SLIDER (_s[0]), (guchar*)sp_color_scales_hue_map ());
gtk_widget_hide (_l[4]);
gtk_widget_hide (_s[4]);
@@ -456,20 +454,20 @@ void ColorScales::setMode(SPColorScalesMode mode)
case SP_COLOR_SCALES_MODE_CMYK:
_setRangeLimit(100.0);
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[0]), _("_C:"));
- gtk_tooltips_set_tip (_tt, _s[0], _("Cyan"), NULL);
- gtk_tooltips_set_tip (_tt, _b[0], _("Cyan"), NULL);
+ gtk_widget_set_tooltip_text (_s[0], _("Cyan"));
+ gtk_widget_set_tooltip_text (_b[0], _("Cyan"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[1]), _("_M:"));
- gtk_tooltips_set_tip (_tt, _s[1], _("Magenta"), NULL);
- gtk_tooltips_set_tip (_tt, _b[1], _("Magenta"), NULL);
+ gtk_widget_set_tooltip_text (_s[1], _("Magenta"));
+ gtk_widget_set_tooltip_text (_b[1], _("Magenta"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[2]), _("_Y:"));
- gtk_tooltips_set_tip (_tt, _s[2], _("Yellow"), NULL);
- gtk_tooltips_set_tip (_tt, _b[2], _("Yellow"), NULL);
+ gtk_widget_set_tooltip_text (_s[2], _("Yellow"));
+ gtk_widget_set_tooltip_text (_b[2], _("Yellow"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[3]), _("_K:"));
- gtk_tooltips_set_tip (_tt, _s[3], _("Black"), NULL);
- gtk_tooltips_set_tip (_tt, _b[3], _("Black"), NULL);
+ gtk_widget_set_tooltip_text (_s[3], _("Black"));
+ gtk_widget_set_tooltip_text (_b[3], _("Black"));
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[4]), _("_A:"));
- gtk_tooltips_set_tip (_tt, _s[4], _("Alpha (opacity)"), NULL);
- gtk_tooltips_set_tip (_tt, _b[4], _("Alpha (opacity)"), NULL);
+ gtk_widget_set_tooltip_text (_s[4], _("Alpha (opacity)"));
+ gtk_widget_set_tooltip_text (_b[4], _("Alpha (opacity)"));
sp_color_slider_set_map (SP_COLOR_SLIDER (_s[0]), NULL);
gtk_widget_show (_l[4]);
gtk_widget_show (_s[4]);
@@ -540,7 +538,7 @@ guint ColorScales::getSubmode() const
void ColorScales::_adjustmentAnyChanged( GtkAdjustment *adjustment, SPColorScales *cs )
{
- gint channel = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (adjustment), "channel"));
+ gint channel = GPOINTER_TO_INT (g_object_get_data(G_OBJECT (adjustment), "channel"));
_adjustmentChanged(cs, channel);
}
diff --git a/src/widgets/sp-color-scales.h b/src/widgets/sp-color-scales.h
index 21a85a08e..3b11bc05e 100644
--- a/src/widgets/sp-color-scales.h
+++ b/src/widgets/sp-color-scales.h
@@ -1,9 +1,8 @@
#ifndef SEEN_SP_COLOR_SCALES_H
#define SEEN_SP_COLOR_SCALES_H
-#include <glib/gtypes.h>
-#include <gtk/gtktooltips.h>
-#include <gtk/gtkvbox.h>
+#include <glib.h>
+#include <gtk/gtk.h>
#include <color.h>
#include <widgets/sp-color-slider.h>
@@ -66,8 +65,6 @@ protected:
GtkWidget *_b[5]; /* Spinbuttons */
GtkWidget *_l[5]; /* Labels */
- GtkTooltips *_tt; /* tooltip container */
-
private:
// By default, disallow copy constructor and assignment operator
ColorScales(ColorScales const &obj);
@@ -77,10 +74,10 @@ private:
#define SP_TYPE_COLOR_SCALES (sp_color_scales_get_type())
-#define SP_COLOR_SCALES(o) (GTK_CHECK_CAST((o), SP_TYPE_COLOR_SCALES, SPColorScales))
-#define SP_COLOR_SCALES_CLASS(k) (GTK_CHECK_CLASS_CAST((k), SP_TYPE_COLOR_SCALES, SPColorScalesClass))
-#define SP_IS_COLOR_SCALES(o) (GTK_CHECK_TYPE((o), SP_TYPE_COLOR_SCALES))
-#define SP_IS_COLOR_SCALES_CLASS(k) (GTK_CHECK_CLASS_TYPE((k), SP_TYPE_COLOR_SCALES))
+#define SP_COLOR_SCALES(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_COLOR_SCALES, SPColorScales))
+#define SP_COLOR_SCALES_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_COLOR_SCALES, SPColorScalesClass))
+#define SP_IS_COLOR_SCALES(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_COLOR_SCALES))
+#define SP_IS_COLOR_SCALES_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_COLOR_SCALES))
struct SPColorScales {
SPColorSelector parent;
diff --git a/src/widgets/sp-color-selector.cpp b/src/widgets/sp-color-selector.cpp
index c6f13b391..b017ed923 100644
--- a/src/widgets/sp-color-selector.cpp
+++ b/src/widgets/sp-color-selector.cpp
@@ -7,7 +7,7 @@
# include "config.h"
#endif
#include <math.h>
-#include <gtk/gtksignal.h>
+#include <gtk/gtk.h>
#include <glibmm/i18n.h>
#include "sp-color-selector.h"
@@ -68,30 +68,34 @@ void sp_color_selector_class_init( SPColorSelectorClass *klass )
object_class = GTK_OBJECT_CLASS(klass);
widget_class = GTK_WIDGET_CLASS(klass);
- parent_class = GTK_VBOX_CLASS( gtk_type_class(GTK_TYPE_VBOX) );
+ parent_class = GTK_VBOX_CLASS( g_type_class_peek_parent(klass) );
- csel_signals[GRABBED] = gtk_signal_new( "grabbed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPColorSelectorClass, grabbed),
+ csel_signals[GRABBED] = g_signal_new( "grabbed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPColorSelectorClass, grabbed),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
GTK_TYPE_NONE, 0 );
- csel_signals[DRAGGED] = gtk_signal_new( "dragged",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPColorSelectorClass, dragged),
+ csel_signals[DRAGGED] = g_signal_new( "dragged",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPColorSelectorClass, dragged),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
GTK_TYPE_NONE, 0 );
- csel_signals[RELEASED] = gtk_signal_new( "released",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPColorSelectorClass, released),
+ csel_signals[RELEASED] = g_signal_new( "released",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPColorSelectorClass, released),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
GTK_TYPE_NONE, 0 );
- csel_signals[CHANGED] = gtk_signal_new( "changed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET(SPColorSelectorClass, changed),
+ csel_signals[CHANGED] = g_signal_new( "changed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET(SPColorSelectorClass, changed),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
GTK_TYPE_NONE, 0 );
@@ -111,7 +115,7 @@ void sp_color_selector_init( SPColorSelector *csel )
{
csel->base->init();
}
-/* gtk_signal_connect(GTK_OBJECT(csel->rgbae), "changed", GTK_SIGNAL_FUNC(sp_color_selector_rgba_entry_changed), csel); */
+/* g_signal_connect(G_OBJECT(csel->rgbae), "changed", G_CALLBACK(sp_color_selector_rgba_entry_changed), csel); */
}
void sp_color_selector_destroy( GtkObject *object )
@@ -230,7 +234,7 @@ void ColorSelector::setColorAlpha( const SPColor& color, gfloat alpha, bool emit
_colorChanged();
if (emit) {
- gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[CHANGED]);
+ g_signal_emit(G_OBJECT(_csel), csel_signals[CHANGED], 0);
}
#ifdef DUMP_CHANGE_INFO
} else {
@@ -248,7 +252,7 @@ void ColorSelector::_grabbed()
"GRABBED",
FOO_NAME(_csel));
#endif
- gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[GRABBED]);
+ g_signal_emit(G_OBJECT(_csel), csel_signals[GRABBED], 0);
}
void ColorSelector::_released()
@@ -259,8 +263,8 @@ void ColorSelector::_released()
"RELEASED",
FOO_NAME(_csel));
#endif
- gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[RELEASED]);
- gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[CHANGED]);
+ g_signal_emit(G_OBJECT(_csel), csel_signals[RELEASED], 0);
+ g_signal_emit(G_OBJECT(_csel), csel_signals[CHANGED], 0);
}
// Called from subclasses to update color and broadcast if needed
@@ -288,7 +292,7 @@ void ColorSelector::_updateInternals( const SPColor& color, gfloat alpha, gboole
"GRABBED",
color.toRGBA32( alpha ), (color.icc?color.icc->colorProfile.c_str():"<null>"), FOO_NAME(_csel));
#endif
- gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[GRABBED]);
+ g_signal_emit(G_OBJECT(_csel), csel_signals[GRABBED], 0);
}
else if ( released )
{
@@ -297,7 +301,7 @@ void ColorSelector::_updateInternals( const SPColor& color, gfloat alpha, gboole
"RELEASED",
color.toRGBA32( alpha ), (color.icc?color.icc->colorProfile.c_str():"<null>"), FOO_NAME(_csel));
#endif
- gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[RELEASED]);
+ g_signal_emit(G_OBJECT(_csel), csel_signals[RELEASED], 0);
}
if ( colorDifferent || released )
@@ -307,7 +311,7 @@ void ColorSelector::_updateInternals( const SPColor& color, gfloat alpha, gboole
(_held ? "CHANGED" : "DRAGGED" ),
color.toRGBA32( alpha ), (color.icc?color.icc->colorProfile.c_str():"<null>"), FOO_NAME(_csel));
#endif
- gtk_signal_emit(GTK_OBJECT(_csel), csel_signals[_held ? CHANGED : DRAGGED]);
+ g_signal_emit(G_OBJECT(_csel), csel_signals[_held ? CHANGED : DRAGGED], 0);
}
}
diff --git a/src/widgets/sp-color-selector.h b/src/widgets/sp-color-selector.h
index 3b35140ed..c27cad45f 100644
--- a/src/widgets/sp-color-selector.h
+++ b/src/widgets/sp-color-selector.h
@@ -1,7 +1,7 @@
#ifndef SEEN_SP_COLOR_SELECTOR_H
#define SEEN_SP_COLOR_SELECTOR_H
-#include <gtk/gtkvbox.h>
+#include <gtk/gtk.h>
#include "../color.h"
#include <glib.h>
@@ -58,10 +58,10 @@ private:
#define SP_TYPE_COLOR_SELECTOR (sp_color_selector_get_type ())
-#define SP_COLOR_SELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_COLOR_SELECTOR, SPColorSelector))
-#define SP_COLOR_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_SELECTOR, SPColorSelectorClass))
-#define SP_IS_COLOR_SELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_COLOR_SELECTOR))
-#define SP_IS_COLOR_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_SELECTOR))
+#define SP_COLOR_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_COLOR_SELECTOR, SPColorSelector))
+#define SP_COLOR_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_SELECTOR, SPColorSelectorClass))
+#define SP_IS_COLOR_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_COLOR_SELECTOR))
+#define SP_IS_COLOR_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_SELECTOR))
#define SP_COLOR_SELECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SP_TYPE_COLOR_SELECTOR, SPColorSelectorClass))
struct SPColorSelector {
diff --git a/src/widgets/sp-color-slider.cpp b/src/widgets/sp-color-slider.cpp
index 0e30b1ce6..ad21e9031 100644
--- a/src/widgets/sp-color-slider.cpp
+++ b/src/widgets/sp-color-slider.cpp
@@ -1,5 +1,3 @@
-#define __SP_COLOR_SLIDER_C__
-
/*
* A slider with colored background
*
@@ -12,8 +10,7 @@
* This code is in public domain
*/
-#include <gtk/gtkversion.h>
-#include <gtk/gtksignal.h>
+#include <gtk/gtk.h>
#include "sp-color-scales.h"
#include "preferences.h"
@@ -57,24 +54,22 @@ static const guchar *sp_color_slider_render_map (gint x0, gint y0, gint width, g
static GtkWidgetClass *parent_class;
static guint slider_signals[LAST_SIGNAL] = {0};
-GtkType
+GType
sp_color_slider_get_type (void)
{
- //TODO: switch to GObject
- // GtkType and such calls were deprecated a while back with the
- // introduction of GObject as a separate layer, with GType instead. --JonCruz
-
- static GtkType type = 0;
+ static GType type = 0;
if (!type) {
- GtkTypeInfo info = {
- (gchar*) "SPColorSlider",
- sizeof (SPColorSlider),
+ GTypeInfo info = {
sizeof (SPColorSliderClass),
- (GtkClassInitFunc) sp_color_slider_class_init,
- (GtkObjectInitFunc) sp_color_slider_init,
- NULL, NULL, NULL
+ NULL, NULL,
+ (GClassInitFunc) sp_color_slider_class_init,
+ NULL, NULL,
+ sizeof (SPColorSlider),
+ 0,
+ (GInstanceInitFunc) sp_color_slider_init,
+ NULL
};
- type = gtk_type_unique (GTK_TYPE_WIDGET, &info);
+ type = g_type_register_static (GTK_TYPE_WIDGET, "SPColorSlider", &info, (GTypeFlags)0);
}
return type;
}
@@ -88,32 +83,36 @@ sp_color_slider_class_init (SPColorSliderClass *klass)
object_class = (GtkObjectClass *) klass;
widget_class = (GtkWidgetClass *) klass;
- parent_class = (GtkWidgetClass*)gtk_type_class (GTK_TYPE_WIDGET);
+ parent_class = (GtkWidgetClass*)g_type_class_peek_parent (klass);
- slider_signals[GRABBED] = gtk_signal_new ("grabbed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPColorSliderClass, grabbed),
+ slider_signals[GRABBED] = g_signal_new ("grabbed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET (SPColorSliderClass, grabbed),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- slider_signals[DRAGGED] = gtk_signal_new ("dragged",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPColorSliderClass, dragged),
+ G_TYPE_NONE, 0);
+ slider_signals[DRAGGED] = g_signal_new ("dragged",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET (SPColorSliderClass, dragged),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- slider_signals[RELEASED] = gtk_signal_new ("released",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPColorSliderClass, released),
+ G_TYPE_NONE, 0);
+ slider_signals[RELEASED] = g_signal_new ("released",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET (SPColorSliderClass, released),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- slider_signals[CHANGED] = gtk_signal_new ("changed",
- (GtkSignalRunType)(GTK_RUN_FIRST | GTK_RUN_NO_RECURSE),
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPColorSliderClass, changed),
+ G_TYPE_NONE, 0);
+ slider_signals[CHANGED] = g_signal_new ("changed",
+ G_TYPE_FROM_CLASS(object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
+ G_STRUCT_OFFSET (SPColorSliderClass, changed),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
+ G_TYPE_NONE, 0);
object_class->destroy = sp_color_slider_destroy;
@@ -134,7 +133,7 @@ static void
sp_color_slider_init (SPColorSlider *slider)
{
/* We are widget with window */
- GTK_WIDGET_UNSET_FLAGS (slider, GTK_NO_WINDOW);
+ gtk_widget_set_has_window (GTK_WIDGET(slider), TRUE);
slider->dragging = FALSE;
@@ -171,7 +170,7 @@ sp_color_slider_destroy (GtkObject *object)
slider = SP_COLOR_SLIDER (object);
if (slider->adjustment) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (slider->adjustment), slider);
+ g_signal_handlers_disconnect_matched (G_OBJECT (slider->adjustment), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, slider);
gtk_object_unref (GTK_OBJECT (slider->adjustment));
slider->adjustment = NULL;
}
@@ -183,13 +182,10 @@ sp_color_slider_destroy (GtkObject *object)
static void
sp_color_slider_realize (GtkWidget *widget)
{
- SPColorSlider *slider;
GdkWindowAttr attributes;
gint attributes_mask;
- slider = SP_COLOR_SLIDER (widget);
-
- GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+ gtk_widget_set_realized (widget, TRUE);
attributes.window_type = GDK_WINDOW_CHILD;
attributes.x = widget->allocation.x;
@@ -217,10 +213,6 @@ sp_color_slider_realize (GtkWidget *widget)
static void
sp_color_slider_size_request (GtkWidget *widget, GtkRequisition *requisition)
{
- SPColorSlider *slider;
-
- slider = SP_COLOR_SLIDER (widget);
-
requisition->width = SLIDER_WIDTH + widget->style->xthickness * 2;
requisition->height = SLIDER_HEIGHT + widget->style->ythickness * 2;
}
@@ -228,13 +220,9 @@ sp_color_slider_size_request (GtkWidget *widget, GtkRequisition *requisition)
static void
sp_color_slider_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
{
- SPColorSlider *slider;
-
- slider = SP_COLOR_SLIDER (widget);
-
widget->allocation = *allocation;
- if (GTK_WIDGET_REALIZED (widget)) {
+ if (gtk_widget_get_realized (widget)) {
/* Resize GdkWindow */
gdk_window_move_resize (widget->window, allocation->x, allocation->y, allocation->width, allocation->height);
}
@@ -247,10 +235,7 @@ sp_color_slider_expose (GtkWidget *widget, GdkEventExpose *event)
slider = SP_COLOR_SLIDER (widget);
- if (GTK_WIDGET_DRAWABLE (widget)) {
- gint width, height;
- width = widget->allocation.width;
- height = widget->allocation.height;
+ if (gtk_widget_is_drawable (widget)) {
sp_color_slider_paint (slider, &event->area);
}
@@ -268,11 +253,11 @@ sp_color_slider_button_press (GtkWidget *widget, GdkEventButton *event)
gint cx, cw;
cx = widget->style->xthickness;
cw = widget->allocation.width - 2 * cx;
- gtk_signal_emit (GTK_OBJECT (slider), slider_signals[GRABBED]);
+ g_signal_emit (G_OBJECT (slider), slider_signals[GRABBED], 0);
slider->dragging = TRUE;
slider->oldvalue = slider->value;
ColorScales::setScaled( slider->adjustment, CLAMP ((gfloat) (event->x - cx) / cw, 0.0, 1.0) );
- gtk_signal_emit (GTK_OBJECT (slider), slider_signals[DRAGGED]);
+ g_signal_emit (G_OBJECT (slider), slider_signals[DRAGGED], 0);
gdk_pointer_grab (widget->window, FALSE,
(GdkEventMask)(GDK_POINTER_MOTION_MASK |
GDK_BUTTON_RELEASE_MASK),
@@ -292,8 +277,8 @@ sp_color_slider_button_release (GtkWidget *widget, GdkEventButton *event)
if (event->button == 1) {
gdk_pointer_ungrab (event->time);
slider->dragging = FALSE;
- gtk_signal_emit (GTK_OBJECT (slider), slider_signals[RELEASED]);
- if (slider->value != slider->oldvalue) gtk_signal_emit (GTK_OBJECT (slider), slider_signals[CHANGED]);
+ g_signal_emit (G_OBJECT (slider), slider_signals[RELEASED], 0);
+ if (slider->value != slider->oldvalue) g_signal_emit (G_OBJECT (slider), slider_signals[CHANGED], 0);
}
return FALSE;
@@ -311,7 +296,7 @@ sp_color_slider_motion_notify (GtkWidget *widget, GdkEventMotion *event)
cx = widget->style->xthickness;
cw = widget->allocation.width - 2 * cx;
ColorScales::setScaled( slider->adjustment, CLAMP ((gfloat) (event->x - cx) / cw, 0.0, 1.0) );
- gtk_signal_emit (GTK_OBJECT (slider), slider_signals[DRAGGED]);
+ g_signal_emit (G_OBJECT (slider), slider_signals[DRAGGED], 0);
}
return FALSE;
@@ -322,43 +307,39 @@ sp_color_slider_new (GtkAdjustment *adjustment)
{
SPColorSlider *slider;
- slider = (SPColorSlider*)gtk_type_new (SP_TYPE_COLOR_SLIDER);
+ slider = (SPColorSlider*)g_object_new (SP_TYPE_COLOR_SLIDER, NULL);
sp_color_slider_set_adjustment (slider, adjustment);
return GTK_WIDGET (slider);
}
-void
-sp_color_slider_set_adjustment (SPColorSlider *slider, GtkAdjustment *adjustment)
+void sp_color_slider_set_adjustment(SPColorSlider *slider, GtkAdjustment *adjustment)
{
- g_return_if_fail (slider != NULL);
- g_return_if_fail (SP_IS_COLOR_SLIDER (slider));
+ g_return_if_fail (slider != NULL);
+ g_return_if_fail (SP_IS_COLOR_SLIDER (slider));
- if (!adjustment) {
- adjustment = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 1.0, 0.01, 0.0, 0.0);
- }
-#if GTK_CHECK_VERSION (2,14,0)
- else {
+ if (!adjustment) {
+ adjustment = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 1.0, 0.01, 0.0, 0.0);
+ } else {
gtk_adjustment_set_page_increment(adjustment, 0.0);
gtk_adjustment_set_page_size(adjustment, 0.0);
}
-#endif
if (slider->adjustment != adjustment) {
if (slider->adjustment) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (slider->adjustment), slider);
+ g_signal_handlers_disconnect_matched (G_OBJECT (slider->adjustment), G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, slider);
gtk_object_unref (GTK_OBJECT (slider->adjustment));
}
slider->adjustment = adjustment;
gtk_object_ref (GTK_OBJECT (adjustment));
- gtk_object_sink (GTK_OBJECT (adjustment));
+ g_object_ref_sink (adjustment);
- gtk_signal_connect (GTK_OBJECT (adjustment), "changed",
- GTK_SIGNAL_FUNC (sp_color_slider_adjustment_changed), slider);
- gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
- GTK_SIGNAL_FUNC (sp_color_slider_adjustment_value_changed), slider);
+ g_signal_connect (G_OBJECT (adjustment), "changed",
+ G_CALLBACK (sp_color_slider_adjustment_changed), slider);
+ g_signal_connect (G_OBJECT (adjustment), "value_changed",
+ G_CALLBACK (sp_color_slider_adjustment_value_changed), slider);
slider->value = ColorScales::getScaled( adjustment );
diff --git a/src/widgets/sp-color-slider.h b/src/widgets/sp-color-slider.h
index bdeb3e4b6..591d8368a 100644
--- a/src/widgets/sp-color-slider.h
+++ b/src/widgets/sp-color-slider.h
@@ -12,7 +12,7 @@
* This code is in public domain
*/
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
#include <glib.h>
@@ -22,10 +22,10 @@ struct SPColorSlider;
struct SPColorSliderClass;
#define SP_TYPE_COLOR_SLIDER (sp_color_slider_get_type ())
-#define SP_COLOR_SLIDER(o) (GTK_CHECK_CAST ((o), SP_TYPE_COLOR_SLIDER, SPColorSlider))
-#define SP_COLOR_SLIDER_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_SLIDER, SPColorSliderClass))
-#define SP_IS_COLOR_SLIDER(o) (GTK_CHECK_TYPE ((o), SP_TYPE_COLOR_SLIDER))
-#define SP_IS_COLOR_SLIDER_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_SLIDER))
+#define SP_COLOR_SLIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_COLOR_SLIDER, SPColorSlider))
+#define SP_COLOR_SLIDER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_SLIDER, SPColorSliderClass))
+#define SP_IS_COLOR_SLIDER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_COLOR_SLIDER))
+#define SP_IS_COLOR_SLIDER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_SLIDER))
struct SPColorSlider {
GtkWidget widget;
@@ -53,7 +53,7 @@ struct SPColorSliderClass {
void (* changed) (SPColorSlider *slider);
};
-GtkType sp_color_slider_get_type (void);
+GType sp_color_slider_get_type (void);
GtkWidget *sp_color_slider_new (GtkAdjustment *adjustment);
diff --git a/src/widgets/sp-color-wheel-selector.cpp b/src/widgets/sp-color-wheel-selector.cpp
index 2e36a024e..89008288a 100644
--- a/src/widgets/sp-color-wheel-selector.cpp
+++ b/src/widgets/sp-color-wheel-selector.cpp
@@ -2,10 +2,7 @@
# include "config.h"
#endif
#include <math.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtktable.h>
-#include <gtk/gtkspinbutton.h>
+#include <gtk/gtk.h>
#include <glibmm/i18n.h>
#include "../dialogs/dialog-events.h"
#include "sp-color-wheel-selector.h"
@@ -85,6 +82,7 @@ ColorWheelSelector::ColorWheelSelector( SPColorSelector* csel )
_dragging( FALSE ),
_adj(0),
_wheel(0),
+ _slider(0),
_sbtn(0),
_label(0)
{
@@ -135,14 +133,12 @@ static void resizeHSVWheel( GtkHSV *hsv, GtkAllocation *allocation )
gtk_hsv_set_metrics( hsv, diam, ring );
}
-#if GTK_CHECK_VERSION(2,18,0)
static void handleWheelStyleSet(GtkHSV *hsv, GtkStyle* /*previous*/, gpointer /*userData*/)
{
GtkAllocation allocation = {0, 0, 0, 0};
gtk_widget_get_allocation( GTK_WIDGET(hsv), &allocation );
resizeHSVWheel( hsv, &allocation );
}
-#endif // GTK_CHECK_VERSION(2,18,0)
static void handleWheelAllocation(GtkHSV *hsv, GtkAllocation *allocation, gpointer /*userData*/)
{
@@ -157,8 +153,6 @@ void ColorWheelSelector::init()
_updating = FALSE;
_dragging = FALSE;
- _tt = gtk_tooltips_new();
-
t = gtk_table_new (5, 3, FALSE);
gtk_widget_show (t);
gtk_box_pack_start (GTK_BOX (_csel), t, TRUE, TRUE, 0);
@@ -184,7 +178,7 @@ void ColorWheelSelector::init()
/* Slider */
_slider = sp_color_slider_new (_adj);
- gtk_tooltips_set_tip (_tt, _slider, _("Alpha (opacity)"), NULL);
+ gtk_widget_set_tooltip_text (_slider, _("Alpha (opacity)"));
gtk_widget_show (_slider);
gtk_table_attach (GTK_TABLE (t), _slider, 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)GTK_FILL, XPAD, YPAD);
@@ -196,34 +190,32 @@ void ColorWheelSelector::init()
/* Spinbutton */
_sbtn = gtk_spin_button_new (GTK_ADJUSTMENT (_adj), 1.0, 0);
- gtk_tooltips_set_tip (_tt, _sbtn, _("Alpha (opacity)"), NULL);
+ gtk_widget_set_tooltip_text (_sbtn, _("Alpha (opacity)"));
sp_dialog_defocus_on_enter (_sbtn);
gtk_label_set_mnemonic_widget (GTK_LABEL(_label), _sbtn);
gtk_widget_show (_sbtn);
gtk_table_attach (GTK_TABLE (t), _sbtn, 2, 3, row, row + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD);
/* Signals */
- gtk_signal_connect (GTK_OBJECT (_adj), "value_changed",
- GTK_SIGNAL_FUNC (_adjustmentChanged), _csel);
+ g_signal_connect (G_OBJECT (_adj), "value_changed",
+ G_CALLBACK (_adjustmentChanged), _csel);
- gtk_signal_connect (GTK_OBJECT (_slider), "grabbed",
- GTK_SIGNAL_FUNC (_sliderGrabbed), _csel);
- gtk_signal_connect (GTK_OBJECT (_slider), "released",
- GTK_SIGNAL_FUNC (_sliderReleased), _csel);
- gtk_signal_connect (GTK_OBJECT (_slider), "changed",
- GTK_SIGNAL_FUNC (_sliderChanged), _csel);
+ g_signal_connect (G_OBJECT (_slider), "grabbed",
+ G_CALLBACK (_sliderGrabbed), _csel);
+ g_signal_connect (G_OBJECT (_slider), "released",
+ G_CALLBACK (_sliderReleased), _csel);
+ g_signal_connect (G_OBJECT (_slider), "changed",
+ G_CALLBACK (_sliderChanged), _csel);
- gtk_signal_connect( GTK_OBJECT(_wheel), "changed",
- GTK_SIGNAL_FUNC(_wheelChanged), _csel );
+ g_signal_connect( G_OBJECT(_wheel), "changed",
+ G_CALLBACK (_wheelChanged), _csel );
// GTK does not automatically scale the color wheel, so we have to add that in:
- gtk_signal_connect( GTK_OBJECT(_wheel), "size-allocate",
- GTK_SIGNAL_FUNC(handleWheelAllocation), _csel );
-#if GTK_CHECK_VERSION(2,18,0)
- gtk_signal_connect( GTK_OBJECT(_wheel), "style-set",
- GTK_SIGNAL_FUNC(handleWheelStyleSet), _csel );
-#endif // GTK_CHECK_VERSION(2,18,0)
+ g_signal_connect( G_OBJECT (_wheel), "size-allocate",
+ G_CALLBACK (handleWheelAllocation), _csel );
+ g_signal_connect( G_OBJECT (_wheel), "style-set",
+ G_CALLBACK (handleWheelStyleSet), _csel );
}
static void
@@ -250,7 +242,7 @@ sp_color_wheel_selector_new (void)
{
SPColorWheelSelector *csel;
- csel = (SPColorWheelSelector*)gtk_type_new (SP_TYPE_COLOR_WHEEL_SELECTOR);
+ csel = (SPColorWheelSelector*)g_object_new (SP_TYPE_COLOR_WHEEL_SELECTOR, NULL);
return GTK_WIDGET (csel);
}
diff --git a/src/widgets/sp-color-wheel-selector.h b/src/widgets/sp-color-wheel-selector.h
index 34a5f4cd0..4d8f79976 100644
--- a/src/widgets/sp-color-wheel-selector.h
+++ b/src/widgets/sp-color-wheel-selector.h
@@ -1,9 +1,8 @@
#ifndef SEEN_SP_COLOR_WHEEL_SELECTOR_H
#define SEEN_SP_COLOR_WHEEL_SELECTOR_H
-#include <glib/gtypes.h>
-#include <gtk/gtktooltips.h>
-#include <gtk/gtkvbox.h>
+#include <glib.h>
+#include <gtk/gtk.h>
#include "../color.h"
#include "sp-color-slider.h"
@@ -39,13 +38,11 @@ protected:
gboolean _updating : 1;
gboolean _dragging : 1;
- GtkAdjustment* _adj; /* Channel adjustment */
+ GtkAdjustment* _adj; // Channel adjustment
GtkWidget* _wheel;
GtkWidget* _slider;
- GtkWidget* _sbtn; /* Spinbutton */
- GtkWidget* _label; /* Label */
-
- GtkTooltips* _tt; /* tooltip container */
+ GtkWidget* _sbtn; // Spinbutton
+ GtkWidget* _label; // Label
private:
// By default, disallow copy constructor and assignment operator
@@ -56,10 +53,10 @@ private:
#define SP_TYPE_COLOR_WHEEL_SELECTOR (sp_color_wheel_selector_get_type ())
-#define SP_COLOR_WHEEL_SELECTOR(o) (GTK_CHECK_CAST ((o), SP_TYPE_COLOR_WHEEL_SELECTOR, SPColorWheelSelector))
-#define SP_COLOR_WHEEL_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_WHEEL_SELECTOR, SPColorWheelSelectorClass))
-#define SP_IS_COLOR_WHEEL_SELECTOR(o) (GTK_CHECK_TYPE ((o), SP_TYPE_COLOR_WHEEL_SELECTOR))
-#define SP_IS_COLOR_WHEEL_SELECTOR_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_WHEEL_SELECTOR))
+#define SP_COLOR_WHEEL_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_COLOR_WHEEL_SELECTOR, SPColorWheelSelector))
+#define SP_COLOR_WHEEL_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_WHEEL_SELECTOR, SPColorWheelSelectorClass))
+#define SP_IS_COLOR_WHEEL_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_COLOR_WHEEL_SELECTOR))
+#define SP_IS_COLOR_WHEEL_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_WHEEL_SELECTOR))
struct SPColorWheelSelector {
SPColorSelector parent;
diff --git a/src/widgets/sp-widget.cpp b/src/widgets/sp-widget.cpp
index f694c461c..ef8a6c03c 100644
--- a/src/widgets/sp-widget.cpp
+++ b/src/widgets/sp-widget.cpp
@@ -43,24 +43,25 @@ static void sp_widget_set_selection (Inkscape::Application *inkscape, Inkscape::
static GtkBinClass *parent_class;
static guint signals[LAST_SIGNAL] = {0};
-GtkType
+GType
sp_widget_get_type (void)
{
- //TODO: switch to GObject
- // GtkType and such calls were deprecated a while back with the
- // introduction of GObject as a separate layer, with GType instead. --JonCruz
-
- static GtkType type = 0;
+ static GType type = 0;
if (!type) {
- static const GtkTypeInfo info = {
- (gchar*) "SPWidget",
- sizeof (SPWidget),
+ static const GTypeInfo info = {
sizeof (SPWidgetClass),
- (GtkClassInitFunc) sp_widget_class_init,
- (GtkObjectInitFunc) sp_widget_init,
- NULL, NULL, NULL
+ NULL, NULL,
+ (GClassInitFunc) sp_widget_class_init,
+ NULL, NULL,
+ sizeof (SPWidget),
+ 0,
+ (GInstanceInitFunc) sp_widget_init,
+ NULL
};
- type = gtk_type_unique (GTK_TYPE_BIN, &info);
+ type = g_type_register_static (GTK_TYPE_BIN,
+ "SPWidget",
+ &info,
+ (GTypeFlags)0);
}
return type;
}
@@ -74,36 +75,40 @@ sp_widget_class_init (SPWidgetClass *klass)
object_class = (GtkObjectClass *) klass;
widget_class = (GtkWidgetClass *) klass;
- parent_class = (GtkBinClass*)gtk_type_class (GTK_TYPE_BIN);
+ parent_class = (GtkBinClass*)g_type_class_peek_parent (klass);
object_class->destroy = sp_widget_destroy;
- signals[CONSTRUCT] = gtk_signal_new ("construct",
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPWidgetClass, construct),
+ signals[CONSTRUCT] = g_signal_new ("construct",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (SPWidgetClass, construct),
+ NULL, NULL,
gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
- signals[CHANGE_SELECTION] = gtk_signal_new ("change_selection",
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPWidgetClass, change_selection),
+ G_TYPE_NONE, 0);
+ signals[CHANGE_SELECTION] = g_signal_new ("change_selection",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (SPWidgetClass, change_selection),
+ NULL, NULL,
gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1,
+ G_TYPE_NONE, 1,
GTK_TYPE_POINTER);
- signals[MODIFY_SELECTION] = gtk_signal_new ("modify_selection",
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPWidgetClass, modify_selection),
+ signals[MODIFY_SELECTION] = g_signal_new ("modify_selection",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (SPWidgetClass, modify_selection),
+ NULL, NULL,
gtk_marshal_NONE__POINTER_UINT,
- GTK_TYPE_NONE, 2,
+ G_TYPE_NONE, 2,
GTK_TYPE_POINTER, GTK_TYPE_UINT);
- signals[SET_SELECTION] = gtk_signal_new ("set_selection",
- GTK_RUN_FIRST,
- GTK_CLASS_TYPE(object_class),
- GTK_SIGNAL_OFFSET (SPWidgetClass, set_selection),
+ signals[SET_SELECTION] = g_signal_new ("set_selection",
+ G_TYPE_FROM_CLASS(object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (SPWidgetClass, set_selection),
+ NULL, NULL,
gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1,
+ G_TYPE_NONE, 1,
GTK_TYPE_POINTER);
widget_class->show = sp_widget_show;
@@ -184,7 +189,7 @@ sp_widget_expose (GtkWidget *widget, GdkEventExpose *event)
gtk_container_propagate_expose (GTK_CONTAINER(widget), bin->child, event);
}
/*
- if ((bin->child) && (GTK_WIDGET_NO_WINDOW (bin->child))) {
+ if ((bin->child) && (!gtk_widget_get_has_window (bin->child))) {
GdkEventExpose ce;
ce = *event;
gtk_widget_event (bin->child, (GdkEvent *) &ce);
@@ -217,7 +222,7 @@ sp_widget_new_global (Inkscape::Application *inkscape)
{
SPWidget *spw;
- spw = (SPWidget*)gtk_type_new (SP_TYPE_WIDGET);
+ spw = (SPWidget*)g_object_new (SP_TYPE_WIDGET, NULL);
if (!sp_widget_construct_global (spw, inkscape)) {
gtk_object_unref (GTK_OBJECT (spw));
@@ -233,7 +238,7 @@ sp_widget_construct_global (SPWidget *spw, Inkscape::Application *inkscape)
g_return_val_if_fail (!spw->inkscape, NULL);
spw->inkscape = inkscape;
- if (GTK_WIDGET_VISIBLE (spw)) {
+ if (gtk_widget_get_visible (GTK_WIDGET(spw))) {
g_signal_connect (G_OBJECT (inkscape), "modify_selection", G_CALLBACK (sp_widget_modify_selection), spw);
g_signal_connect (G_OBJECT (inkscape), "change_selection", G_CALLBACK (sp_widget_change_selection), spw);
g_signal_connect (G_OBJECT (inkscape), "set_selection", G_CALLBACK (sp_widget_set_selection), spw);
diff --git a/src/widgets/sp-widget.h b/src/widgets/sp-widget.h
index e9f9cfe73..66320cd4d 100644
--- a/src/widgets/sp-widget.h
+++ b/src/widgets/sp-widget.h
@@ -16,12 +16,12 @@
#include <glib.h>
#define SP_TYPE_WIDGET (sp_widget_get_type ())
-#define SP_WIDGET(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_WIDGET, SPWidget))
-#define SP_WIDGET_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), SP_TYPE_WIDGET, SPWidgetClass))
-#define SP_IS_WIDGET(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_WIDGET))
-#define SP_IS_WIDGET_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), SP_TYPE_WIDGET))
+#define SP_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_WIDGET, SPWidget))
+#define SP_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_WIDGET, SPWidgetClass))
+#define SP_IS_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_WIDGET))
+#define SP_IS_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_WIDGET))
-#include <gtk/gtkbin.h>
+#include <gtk/gtk.h>
namespace Inkscape {
class Application;
@@ -42,7 +42,7 @@ struct SPWidgetClass {
void (* set_selection) (SPWidget *spw, Inkscape::Selection *selection);
};
-GtkType sp_widget_get_type (void);
+GType sp_widget_get_type (void);
/* fixme: Think (Lauris) */
/* Generic constructor for global widget */
diff --git a/src/widgets/sp-xmlview-attr-list.cpp b/src/widgets/sp-xmlview-attr-list.cpp
index 535a4b534..9aa46a399 100644
--- a/src/widgets/sp-xmlview-attr-list.cpp
+++ b/src/widgets/sp-xmlview-attr-list.cpp
@@ -108,7 +108,7 @@ sp_xmlview_attr_list_class_init (SPXMLViewAttrListClass * klass)
object_class = (GtkObjectClass *) klass;
object_class->destroy = sp_xmlview_attr_list_destroy;
- parent_class = (GtkCListClass*)gtk_type_class (GTK_TYPE_CLIST);
+ parent_class = (GtkCListClass*)g_type_class_peek_parent (klass);
g_signal_new ( "row-value-changed",
G_TYPE_FROM_CLASS(klass),
diff --git a/src/widgets/sp-xmlview-attr-list.h b/src/widgets/sp-xmlview-attr-list.h
index 8e7b844d0..9479dd77a 100644
--- a/src/widgets/sp-xmlview-attr-list.h
+++ b/src/widgets/sp-xmlview-attr-list.h
@@ -13,7 +13,6 @@
*/
#include <stdio.h>
-#include <gtk/gtkctree.h>
#include <gtk/gtk.h>
#include "../xml/repr.h"
@@ -21,9 +20,9 @@
#define SP_TYPE_XMLVIEW_ATTR_LIST (sp_xmlview_attr_list_get_type ())
-#define SP_XMLVIEW_ATTR_LIST(o) (GTK_CHECK_CAST ((o), SP_TYPE_XMLVIEW_ATTR_LIST, SPXMLViewAttrList))
-#define SP_IS_XMLVIEW_ATTR_LIST(o) (GTK_CHECK_TYPE ((o), SP_TYPE_XMLVIEW_ATTR_LIST))
-#define SP_XMLVIEW_ATTR_LIST_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_XMLVIEW_ATTR_LIST))
+#define SP_XMLVIEW_ATTR_LIST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_XMLVIEW_ATTR_LIST, SPXMLViewAttrList))
+#define SP_IS_XMLVIEW_ATTR_LIST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_XMLVIEW_ATTR_LIST))
+#define SP_XMLVIEW_ATTR_LIST_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_XMLVIEW_ATTR_LIST))
struct SPXMLViewAttrList
{
@@ -39,7 +38,7 @@ struct SPXMLViewAttrListClass
void (* row_changed) (SPXMLViewAttrList *list, gint row);
};
-GtkType sp_xmlview_attr_list_get_type (void);
+GType sp_xmlview_attr_list_get_type (void);
GtkWidget * sp_xmlview_attr_list_new (Inkscape::XML::Node * repr);
#define SP_XMLVIEW_ATTR_LIST_GET_REPR(list) (SP_XMLVIEW_ATTR_LIST (list)->repr)
diff --git a/src/widgets/sp-xmlview-content.cpp b/src/widgets/sp-xmlview-content.cpp
index 75d68d25c..1f35f2373 100644
--- a/src/widgets/sp-xmlview-content.cpp
+++ b/src/widgets/sp-xmlview-content.cpp
@@ -46,7 +46,7 @@ sp_xmlview_content_new (Inkscape::XML::Node * repr)
SPXMLViewContent *text;
tb = gtk_text_buffer_new (NULL);
- text = (SPXMLViewContent*)gtk_type_new (SP_TYPE_XMLVIEW_CONTENT);
+ text = (SPXMLViewContent*)g_object_new (SP_TYPE_XMLVIEW_CONTENT, NULL);
gtk_text_view_set_buffer (GTK_TEXT_VIEW (text), tb);
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text), GTK_WRAP_CHAR);
@@ -80,7 +80,7 @@ sp_xmlview_content_set_repr (SPXMLViewContent * text, Inkscape::XML::Node * repr
GType sp_xmlview_content_get_type(void)
{
- static GtkType type = 0;
+ static GType type = 0;
if (!type) {
GTypeInfo info = {
@@ -108,7 +108,7 @@ sp_xmlview_content_class_init (SPXMLViewContentClass * klass)
object_class = (GtkObjectClass *) klass;
- parent_class = (GtkTextViewClass*)gtk_type_class (GTK_TYPE_TEXT_VIEW);
+ parent_class = (GtkTextViewClass*)g_type_class_peek_parent (klass);
object_class->destroy = sp_xmlview_content_destroy;
}
diff --git a/src/widgets/sp-xmlview-content.h b/src/widgets/sp-xmlview-content.h
index 3077b2251..941ef0be1 100644
--- a/src/widgets/sp-xmlview-content.h
+++ b/src/widgets/sp-xmlview-content.h
@@ -16,7 +16,7 @@
#include <stdio.h>
-#include <gtk/gtktextview.h>
+#include <gtk/gtk.h>
#include "../xml/repr.h"
#include <glib.h>
@@ -24,9 +24,9 @@
#define SP_TYPE_XMLVIEW_CONTENT (sp_xmlview_content_get_type ())
-#define SP_XMLVIEW_CONTENT(o) (GTK_CHECK_CAST ((o), SP_TYPE_XMLVIEW_CONTENT, SPXMLViewContent))
-#define SP_IS_XMLVIEW_CONTENT(o) (GTK_CHECK_TYPE ((o), SP_TYPE_XMLVIEW_CONTENT))
-#define SP_XMLVIEW_CONTENT_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_XMLVIEW_CONTENT))
+#define SP_XMLVIEW_CONTENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_XMLVIEW_CONTENT, SPXMLViewContent))
+#define SP_IS_XMLVIEW_CONTENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_XMLVIEW_CONTENT))
+#define SP_XMLVIEW_CONTENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_XMLVIEW_CONTENT))
struct SPXMLViewContent
{
@@ -41,7 +41,7 @@ struct SPXMLViewContentClass
GtkTextViewClass parent_class;
};
-GtkType sp_xmlview_content_get_type (void);
+GType sp_xmlview_content_get_type (void);
GtkWidget * sp_xmlview_content_new (Inkscape::XML::Node * repr);
#define SP_XMLVIEW_CONTENT_GET_REPR(text) (SP_XMLVIEW_CONTENT (text)->repr)
diff --git a/src/widgets/sp-xmlview-tree.cpp b/src/widgets/sp-xmlview-tree.cpp
index b757123b5..b867b1044 100644
--- a/src/widgets/sp-xmlview-tree.cpp
+++ b/src/widgets/sp-xmlview-tree.cpp
@@ -125,25 +125,23 @@ sp_xmlview_tree_set_repr (SPXMLViewTree * tree, Inkscape::XML::Node * repr)
gtk_clist_thaw (GTK_CLIST (tree));
}
-GtkType
+GType
sp_xmlview_tree_get_type (void)
{
- //TODO: switch to GObject
- // GtkType and such calls were deprecated a while back with the
- // introduction of GObject as a separate layer, with GType instead. --JonCruz
-
- static GtkType type = 0;
+ static GType type = 0;
if (!type) {
- static const GtkTypeInfo info = {
- (gchar*) "SPXMLViewTree",
- sizeof (SPXMLViewTree),
+ static const GTypeInfo info = {
sizeof (SPXMLViewTreeClass),
- (GtkClassInitFunc) sp_xmlview_tree_class_init,
- (GtkObjectInitFunc) sp_xmlview_tree_init,
- NULL, NULL, NULL
+ NULL, NULL,
+ (GClassInitFunc) sp_xmlview_tree_class_init,
+ NULL, NULL,
+ sizeof (SPXMLViewTree),
+ 0,
+ (GInstanceInitFunc) sp_xmlview_tree_init,
+ NULL
};
- type = gtk_type_unique (GTK_TYPE_CTREE, &info);
+ type = g_type_register_static (GTK_TYPE_CTREE, "SPXMLViewTree", &info, (GTypeFlags)0);
}
return type;
@@ -155,7 +153,7 @@ sp_xmlview_tree_class_init (SPXMLViewTreeClass * klass)
GtkObjectClass * object_class;
object_class = (GtkObjectClass *) klass;
- parent_class = (GtkCTreeClass *) gtk_type_class (GTK_TYPE_CTREE);
+ parent_class = (GtkCTreeClass *) g_type_class_peek_parent (klass);
GTK_CTREE_CLASS (object_class)->tree_move = tree_move;
diff --git a/src/widgets/sp-xmlview-tree.h b/src/widgets/sp-xmlview-tree.h
index a5dadbb61..5d228f982 100644
--- a/src/widgets/sp-xmlview-tree.h
+++ b/src/widgets/sp-xmlview-tree.h
@@ -12,7 +12,7 @@
* Released under the GNU GPL; see COPYING for details
*/
-#include <gtk/gtkctree.h>
+#include <gtk/gtk.h>
#include "../xml/repr.h"
#include <glib.h>
@@ -20,9 +20,9 @@
#define SP_TYPE_XMLVIEW_TREE (sp_xmlview_tree_get_type ())
-#define SP_XMLVIEW_TREE(o) (GTK_CHECK_CAST ((o), SP_TYPE_XMLVIEW_TREE, SPXMLViewTree))
-#define SP_IS_XMLVIEW_TREE(o) (GTK_CHECK_TYPE ((o), SP_TYPE_XMLVIEW_TREE))
-#define SP_XMLVIEW_TREE_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_XMLVIEW_TREE))
+#define SP_XMLVIEW_TREE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_XMLVIEW_TREE, SPXMLViewTree))
+#define SP_IS_XMLVIEW_TREE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_XMLVIEW_TREE))
+#define SP_XMLVIEW_TREE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_XMLVIEW_TREE))
struct SPXMLViewTree;
struct SPXMLViewTreeClass;
@@ -40,7 +40,7 @@ struct SPXMLViewTreeClass
GtkCTreeClass parent_class;
};
-GtkType sp_xmlview_tree_get_type (void);
+GType sp_xmlview_tree_get_type (void);
GtkWidget * sp_xmlview_tree_new (Inkscape::XML::Node * repr, void * factory, void * data);
#define SP_XMLVIEW_TREE_REPR(tree) (SP_XMLVIEW_TREE (tree)->repr)
diff --git a/src/widgets/spinbutton-events.cpp b/src/widgets/spinbutton-events.cpp
index 4b60ce812..994d954cc 100644
--- a/src/widgets/spinbutton-events.cpp
+++ b/src/widgets/spinbutton-events.cpp
@@ -27,7 +27,7 @@ spinbutton_focus_in (GtkWidget *w, GdkEventKey */*event*/, gpointer /*data*/)
{
gdouble *ini;
- ini = (gdouble *) gtk_object_get_data (GTK_OBJECT (w), "ini");
+ ini = (gdouble *) g_object_get_data(G_OBJECT (w), "ini");
if (ini) g_free (ini); // free the old value if any
// retrieve the value
@@ -35,7 +35,7 @@ spinbutton_focus_in (GtkWidget *w, GdkEventKey */*event*/, gpointer /*data*/)
*ini = gtk_spin_button_get_value (GTK_SPIN_BUTTON(w));
// remember it
- gtk_object_set_data (GTK_OBJECT (w), "ini", ini);
+ g_object_set_data (G_OBJECT (w), "ini", ini);
return FALSE; // I didn't consume the event
}
@@ -43,7 +43,7 @@ spinbutton_focus_in (GtkWidget *w, GdkEventKey */*event*/, gpointer /*data*/)
void
spinbutton_undo (GtkWidget *w)
{
- gdouble *ini = (gdouble *) gtk_object_get_data (GTK_OBJECT (w), "ini");
+ gdouble *ini = (gdouble *) g_object_get_data(G_OBJECT (w), "ini");
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), *ini);
}
@@ -51,11 +51,11 @@ void
spinbutton_defocus (GtkObject *container)
{
// defocus spinbuttons by moving focus to the canvas, unless "stay" is on
- gboolean stay = GPOINTER_TO_INT(gtk_object_get_data (GTK_OBJECT (container), "stay"));
+ gboolean stay = GPOINTER_TO_INT(g_object_get_data(G_OBJECT (container), "stay"));
if (stay) {
- gtk_object_set_data (GTK_OBJECT (container), "stay", GINT_TO_POINTER (FALSE));
+ g_object_set_data (G_OBJECT (container), "stay", GINT_TO_POINTER (FALSE));
} else {
- GtkWidget *canvas = (GtkWidget *) gtk_object_get_data (GTK_OBJECT (container), "dtw");
+ GtkWidget *canvas = (GtkWidget *) g_object_get_data(G_OBJECT (container), "dtw");
if (canvas) {
gtk_widget_grab_focus (GTK_WIDGET(canvas));
}
@@ -82,7 +82,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data)
case GDK_Tab:
case GDK_ISO_Left_Tab:
// set the flag meaning "do not leave toolbar when changing value"
- gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
+ g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
return FALSE; // I didn't consume the event
break;
@@ -91,7 +91,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data)
case GDK_Up:
case GDK_KP_Up:
- gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
+ g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
v = gtk_spin_button_get_value(GTK_SPIN_BUTTON (w));
v += SPIN_STEP;
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v);
@@ -99,7 +99,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data)
break;
case GDK_Down:
case GDK_KP_Down:
- gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
+ g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
v = gtk_spin_button_get_value(GTK_SPIN_BUTTON (w));
v -= SPIN_STEP;
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v);
@@ -107,7 +107,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data)
break;
case GDK_Page_Up:
case GDK_KP_Page_Up:
- gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
+ g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
v = gtk_spin_button_get_value(GTK_SPIN_BUTTON (w));
v += SPIN_PAGE_STEP;
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v);
@@ -115,7 +115,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data)
break;
case GDK_Page_Down:
case GDK_KP_Page_Down:
- gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
+ g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
v = gtk_spin_button_get_value(GTK_SPIN_BUTTON (w));
v -= SPIN_PAGE_STEP;
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), v);
@@ -123,7 +123,7 @@ spinbutton_keypress (GtkWidget *w, GdkEventKey *event, gpointer data)
break;
case GDK_z:
case GDK_Z:
- gtk_object_set_data (GTK_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
+ g_object_set_data (G_OBJECT (spw), "stay", GINT_TO_POINTER(TRUE));
if (event->state & GDK_CONTROL_MASK) {
spinbutton_undo (w);
return TRUE; // I consumed the event
diff --git a/src/widgets/spinbutton-events.h b/src/widgets/spinbutton-events.h
index 683748d0a..cf8c7b44b 100644
--- a/src/widgets/spinbutton-events.h
+++ b/src/widgets/spinbutton-events.h
@@ -9,9 +9,8 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <glib/gtypes.h>
-#include <gtk/gtkstyle.h> /* GtkWidget */
-#include <gtk/gtktypeutils.h> /* GtkObject */
+#include <glib.h>
+#include <gtk/gtk.h> /* GtkWidget */
gboolean spinbutton_focus_in (GtkWidget *w, GdkEventKey *event, gpointer data);
void spinbutton_undo (GtkWidget *w);
diff --git a/src/widgets/spw-utilities.cpp b/src/widgets/spw-utilities.cpp
index 49e3a7495..ece329576 100644
--- a/src/widgets/spw-utilities.cpp
+++ b/src/widgets/spw-utilities.cpp
@@ -1,5 +1,3 @@
-#define __SPW_UTILITIES_C__
-
/*
* Inkscape Widget Utilities
*
@@ -92,15 +90,13 @@ GtkWidget *spw_vbox_checkbutton(GtkWidget *dialog, GtkWidget *vbox,
g_assert (dialog != NULL);
g_assert (vbox != NULL);
- GtkTooltips *tt = gtk_tooltips_new ();
-
GtkWidget *b = gtk_check_button_new_with_label (label);
- gtk_tooltips_set_tip(tt, b, tip, NULL);
+ gtk_widget_set_tooltip_text(b, tip);
g_assert (b != NULL);
gtk_widget_show (b);
gtk_box_pack_start (GTK_BOX (vbox), b, FALSE, FALSE, 0);
- gtk_object_set_data (GTK_OBJECT (b), "key", key);
- gtk_object_set_data (GTK_OBJECT (dialog), key, b);
+ g_object_set_data (G_OBJECT (b), "key", key);
+ g_object_set_data (G_OBJECT (dialog), key, b);
g_signal_connect (G_OBJECT (b), "toggled", cb, dialog);
return b;
}
@@ -130,8 +126,8 @@ spw_checkbutton(GtkWidget * dialog, GtkWidget * table,
gtk_widget_show (b);
gtk_table_attach (GTK_TABLE (table), b, 1, 2, row, row+1,
(GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)0, 0, 0);
- gtk_object_set_data (GTK_OBJECT (b), "key", key);
- gtk_object_set_data (GTK_OBJECT (dialog), key, b);
+ g_object_set_data (G_OBJECT (b), "key", key);
+ g_object_set_data (G_OBJECT (dialog), key, b);
g_signal_connect (G_OBJECT (b), "toggled", cb, dialog);
if (insensitive == 1) {
gtk_widget_set_sensitive (b, FALSE);
@@ -158,7 +154,7 @@ spw_dropdown(GtkWidget * dialog, GtkWidget * table,
gtk_widget_show (selector);
gtk_table_attach (GTK_TABLE (table), selector, 1, 2, row, row+1,
(GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)0, 0, 0);
- gtk_object_set_data (GTK_OBJECT (dialog), key, selector);
+ g_object_set_data (G_OBJECT (dialog), key, selector);
return selector;
}
@@ -183,9 +179,9 @@ spw_unit_selector(GtkWidget * dialog, GtkWidget * table,
a = gtk_adjustment_new (0.0, can_be_negative?-1e6:0, 1e6, 1.0, 10.0, 10.0);
g_assert(a != NULL);
- gtk_object_set_data (GTK_OBJECT (a), "key", key);
- gtk_object_set_data (GTK_OBJECT (a), "unit_selector", us);
- gtk_object_set_data (GTK_OBJECT (dialog), key, a);
+ g_object_set_data (G_OBJECT (a), "key", key);
+ g_object_set_data (G_OBJECT (a), "unit_selector", us);
+ g_object_set_data (G_OBJECT (dialog), key, a);
sp_unit_selector_add_adjustment (SP_UNIT_SELECTOR (us), GTK_ADJUSTMENT (a));
sb = gtk_spin_button_new (GTK_ADJUSTMENT (a), 1.0, 4);
g_assert(sb != NULL);
@@ -229,15 +225,14 @@ sp_set_font_size_smaller (GtkWidget *w)
}
/**
-\brief Finds the descendant of w which has the data with the given key and returns the data, or NULL if there's none
-*/
-gpointer
-sp_search_by_data_recursive (GtkWidget *w, gpointer key)
+ * Finds the descendant of w which has the data with the given key and returns the data, or NULL if there's none.
+ */
+gpointer sp_search_by_data_recursive(GtkWidget *w, gpointer key)
{
gpointer r = NULL;
if (w && GTK_IS_OBJECT(w)) {
- r = gtk_object_get_data (GTK_OBJECT(w), (gchar *) key);
+ r = g_object_get_data(G_OBJECT(w), (gchar *) key);
}
if (r) return r;
@@ -253,16 +248,15 @@ sp_search_by_data_recursive (GtkWidget *w, gpointer key)
}
/**
-\brief Returns the descendant of w which has the given key and value pair, or NULL if there's none
-*/
-GtkWidget *
-sp_search_by_value_recursive (GtkWidget *w, gchar *key, gchar *value)
+ * Returns the descendant of w which has the given key and value pair, or NULL if there's none.
+ */
+GtkWidget *sp_search_by_value_recursive(GtkWidget *w, gchar *key, gchar *value)
{
gchar *r = NULL;
GtkWidget *child;
if (w && GTK_IS_OBJECT(w)) {
- r = (gchar *) gtk_object_get_data (GTK_OBJECT(w), key);
+ r = (gchar *) g_object_get_data(G_OBJECT(w), key);
}
if (r && !strcmp (r, value)) return w;
diff --git a/src/widgets/spw-utilities.h b/src/widgets/spw-utilities.h
index 9a387454f..7ae36aa29 100644
--- a/src/widgets/spw-utilities.h
+++ b/src/widgets/spw-utilities.h
@@ -18,8 +18,8 @@
SPObject, that reacts to modification.
*/
-#include <glib/gtypes.h>
-#include <gtk/gtkstyle.h> /* GtkWidget */
+#include <glib.h>
+#include <gtk/gtk.h> /* GtkWidget */
#include <gtkmm/widget.h>
namespace Gtk {
diff --git a/src/widgets/stroke-style.cpp b/src/widgets/stroke-style.cpp
index 555418269..23c02ea35 100644
--- a/src/widgets/stroke-style.cpp
+++ b/src/widgets/stroke-style.cpp
@@ -1,6 +1,3 @@
-/** @file
- * @brief Stroke style dialog
- */
/* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
* Bryce Harrington <brycehar@bryceharrington.org>
@@ -20,7 +17,7 @@
#define noSP_SS_VERBOSE
-#include <glib/gmem.h>
+#include <glib.h>
#include <gtk/gtk.h>
#include <glibmm/i18n.h>
@@ -28,8 +25,7 @@
#include "desktop-style.h"
#include "dialogs/dialog-events.h"
#include "display/canvas-bpath.h" // for SP_STROKE_LINEJOIN_*
-#include "display/nr-arena.h"
-#include "display/nr-arena-item.h"
+#include "display/drawing.h"
#include "document-private.h"
#include "gradient-chemistry.h"
#include "helper/stock-items.h"
@@ -55,6 +51,7 @@
#include "widgets/paint-selector.h"
#include "widgets/sp-widget.h"
#include "widgets/spw-utilities.h"
+#include "ui/widget/spinbutton.h"
#include "xml/repr.h"
#include "stroke-style.h"
@@ -152,12 +149,13 @@ sp_stroke_radio_button(Gtk::RadioButton *tb, char const *icon,
static Gtk::Image *
sp_marker_prev_new(unsigned psize, gchar const *mname,
SPDocument *source, SPDocument *sandbox,
- gchar const *menu_id, NRArena const * /*arena*/, unsigned /*visionkey*/, NRArenaItem *root)
+ gchar const *menu_id, Inkscape::Drawing &drawing, unsigned /*visionkey*/)
{
// Retrieve the marker named 'mname' from the source SVG document
SPObject const *marker = source->getObjectById(mname);
- if (marker == NULL)
+ if (marker == NULL) {
return NULL;
+ }
// Create a copy repr of the marker with id="sample"
Inkscape::XML::Document *xml_doc = sandbox->getReprDoc();
@@ -167,8 +165,9 @@ sp_marker_prev_new(unsigned psize, gchar const *mname,
// Replace the old sample in the sandbox by the new one
Inkscape::XML::Node *defsrepr = sandbox->getObjectById("defs")->getRepr();
SPObject *oldmarker = sandbox->getObjectById("sample");
- if (oldmarker)
+ if (oldmarker) {
oldmarker->deleteObject(false);
+ }
defsrepr->appendChild(mrepr);
Inkscape::GC::release(mrepr);
@@ -182,12 +181,13 @@ sp_marker_prev_new(unsigned psize, gchar const *mname,
sandbox->getRoot()->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
sandbox->ensureUpToDate();
- if (object == NULL || !SP_IS_ITEM(object))
+ if (object == NULL || !SP_IS_ITEM(object)) {
return NULL; // sandbox broken?
+ }
+ SPItem *item = SP_ITEM(object);
// Find object's bbox in document
- Geom::Affine const i2doc(SP_ITEM(object)->i2doc_affine());
- Geom::OptRect dbox = SP_ITEM(object)->getBounds(i2doc);
+ Geom::OptRect dbox = item->documentVisualBounds();
if (!dbox) {
return NULL;
@@ -203,7 +203,7 @@ sp_marker_prev_new(unsigned psize, gchar const *mname,
Glib::RefPtr<Gdk::Pixbuf> pixbuf = Glib::wrap(svg_preview_cache.get_preview_from_cache(key));
if (!pixbuf) {
- pixbuf = Glib::wrap(render_pixbuf(root, sf, *dbox, psize));
+ pixbuf = Glib::wrap(render_pixbuf(drawing, sf, *dbox, psize));
svg_preview_cache.set_preview_in_cache(key, pixbuf->gobj());
}
@@ -224,7 +224,7 @@ ink_marker_list_get (SPDocument *source)
return NULL;
GSList *ml = NULL;
- SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS (source);
+ SPDefs *defs = source->getDefs();
for ( SPObject *child = defs->firstChild(); child; child = child->getNext() )
{
if (SP_IS_MARKER(child)) {
@@ -243,9 +243,9 @@ static void
sp_marker_menu_build (Gtk::Menu *m, GSList *marker_list, SPDocument *source, SPDocument *sandbox, gchar const *menu_id)
{
// Do this here, outside of loop, to speed up preview generation:
- NRArena const *arena = NRArena::create();
+ Inkscape::Drawing drawing;
unsigned const visionkey = SPItem::display_key_new(1);
- NRArenaItem *root = SP_ITEM(sandbox->getRoot())->invoke_show((NRArena *) arena, visionkey, SP_ITEM_SHOW_DISPLAY);
+ drawing.setRoot(sandbox->getRoot()->invoke_show(drawing, visionkey, SP_ITEM_SHOW_DISPLAY));
for (; marker_list != NULL; marker_list = marker_list->next) {
Inkscape::XML::Node *repr = reinterpret_cast<SPItem *>(marker_list->data)->getRepr();
@@ -266,7 +266,7 @@ sp_marker_menu_build (Gtk::Menu *m, GSList *marker_list, SPDocument *source, SPD
// generate preview
- Gtk::Image *prv = sp_marker_prev_new (22, markid, source, sandbox, menu_id, arena, visionkey, root);
+ Gtk::Image *prv = sp_marker_prev_new (22, markid, source, sandbox, menu_id, drawing, visionkey);
prv->show();
hb->pack_start(*prv, false, false, 6);
@@ -283,19 +283,14 @@ sp_marker_menu_build (Gtk::Menu *m, GSList *marker_list, SPDocument *source, SPD
m->append(*i);
}
- SP_ITEM(sandbox->getRoot())->invoke_hide(visionkey);
- nr_object_unref((NRObject *) arena);
+ sandbox->getRoot()->invoke_hide(visionkey);
}
/**
- * sp_marker_list_from_doc()
- *
- * \brief Pick up all markers from source, except those that are in
- * current_doc (if non-NULL), and add items to the m menu
- *
+ * Pick up all markers from source, except those that are in
+ * current_doc (if non-NULL), and add items to the m menu.
*/
-static void
-sp_marker_list_from_doc (Gtk::Menu *m, SPDocument * /*current_doc*/, SPDocument *source, SPDocument * /*markers_doc*/, SPDocument *sandbox, gchar const *menu_id)
+static void sp_marker_list_from_doc(Gtk::Menu *m, SPDocument * /*current_doc*/, SPDocument *source, SPDocument * /*markers_doc*/, SPDocument *sandbox, gchar const *menu_id)
{
GSList *ml = ink_marker_list_get(source);
GSList *clean_ml = NULL;
@@ -612,7 +607,7 @@ static gboolean stroke_width_set_unit(SPUnitSelector *,
gdouble average = stroke_average_width (objects);
- if (average == NR_HUGE || average == 0)
+ if (average == Geom::infinity() || average == 0)
return FALSE;
a->set_value (100.0 * w / average);
@@ -641,11 +636,9 @@ static gboolean stroke_width_set_unit(SPUnitSelector *,
/**
- * \brief Creates a new widget for the line stroke style.
- *
+ * Creates a new widget for the line stroke style.
*/
-Gtk::Container *
-sp_stroke_style_line_widget_new(void)
+Gtk::Container *sp_stroke_style_line_widget_new(void)
{
Gtk::Widget *us;
SPDashSelector *ds;
@@ -653,7 +646,7 @@ sp_stroke_style_line_widget_new(void)
Gtk::Container *spw;
Gtk::Table *t;
Gtk::Adjustment *a;
- Gtk::SpinButton *sb;
+ Inkscape::UI::Widget::SpinButton *sb;
Gtk::RadioButton *tb;
Gtk::HBox *f, *hb;
@@ -688,7 +681,7 @@ sp_stroke_style_line_widget_new(void)
a = new Gtk::Adjustment(1.0, 0.0, 1000.0, 0.1, 10.0, 0.0);
spw->set_data("width", a);
- sb = new Gtk::SpinButton(*a, 0.1, 3);
+ sb = new Inkscape::UI::Widget::SpinButton(*a, 0.1, 3);
tt->set_tip(*sb, _("Stroke width"));
sb->show();
spw_label(t, C_("Stroke width", "_Width:"), 0, i, sb);
@@ -720,7 +713,7 @@ sp_stroke_style_line_widget_new(void)
tb = NULL;
- tb = sp_stroke_radio_button(tb, INKSCAPE_ICON_STROKE_JOIN_MITER,
+ tb = sp_stroke_radio_button(tb, INKSCAPE_ICON("stroke-join-miter"),
hb, spw, "join", "miter");
// TRANSLATORS: Miter join: joining lines with a sharp (pointed) corner.
@@ -729,7 +722,7 @@ sp_stroke_style_line_widget_new(void)
tt->set_tip(*tb, _("Miter join"));
spw->set_data("miter join", tb);
- tb = sp_stroke_radio_button(tb, INKSCAPE_ICON_STROKE_JOIN_ROUND,
+ tb = sp_stroke_radio_button(tb, INKSCAPE_ICON("stroke-join-round"),
hb, spw, "join", "round");
@@ -739,7 +732,7 @@ sp_stroke_style_line_widget_new(void)
tt->set_tip(*tb, _("Round join"));
spw->set_data("round join", tb);
- tb = sp_stroke_radio_button(tb, INKSCAPE_ICON_STROKE_JOIN_BEVEL,
+ tb = sp_stroke_radio_button(tb, INKSCAPE_ICON("stroke-join-bevel"),
hb, spw, "join", "bevel");
@@ -765,7 +758,7 @@ sp_stroke_style_line_widget_new(void)
a = new Gtk::Adjustment(4.0, 0.0, 100.0, 0.1, 10.0, 0.0);
spw->set_data("miterlimit", a);
- sb = new Gtk::SpinButton(*a, 0.1, 2);
+ sb = new Inkscape::UI::Widget::SpinButton(*a, 0.1, 2);
tt->set_tip(*sb, _("Maximum length of the miter (in units of stroke width)"));
sb->show();
spw_label(t, _("Miter _limit:"), 0, i, sb);
@@ -786,7 +779,7 @@ sp_stroke_style_line_widget_new(void)
tb = NULL;
- tb = sp_stroke_radio_button(tb, INKSCAPE_ICON_STROKE_CAP_BUTT,
+ tb = sp_stroke_radio_button(tb, INKSCAPE_ICON("stroke-cap-butt"),
hb, spw, "cap", "butt");
spw->set_data("cap butt", tb);
@@ -794,7 +787,7 @@ sp_stroke_style_line_widget_new(void)
// of the line; the ends of the line are square
tt->set_tip(*tb, _("Butt cap"));
- tb = sp_stroke_radio_button(tb, INKSCAPE_ICON_STROKE_CAP_ROUND,
+ tb = sp_stroke_radio_button(tb, INKSCAPE_ICON("stroke-cap-round"),
hb, spw, "cap", "round");
spw->set_data("cap round", tb);
@@ -802,7 +795,7 @@ sp_stroke_style_line_widget_new(void)
// line; the ends of the line are rounded
tt->set_tip(*tb, _("Round cap"));
- tb = sp_stroke_radio_button(tb, INKSCAPE_ICON_STROKE_CAP_SQUARE,
+ tb = sp_stroke_radio_button(tb, INKSCAPE_ICON("stroke-cap-square"),
hb, spw, "cap", "square");
spw->set_data("cap square", tb);
@@ -948,13 +941,13 @@ sp_jointype_set (Gtk::Container *spw, unsigned const jointype)
Gtk::RadioButton *tb = NULL;
switch (jointype) {
case SP_STROKE_LINEJOIN_MITER:
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_JOIN_MITER));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-join-miter")));
break;
case SP_STROKE_LINEJOIN_ROUND:
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_JOIN_ROUND));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-join-round")));
break;
case SP_STROKE_LINEJOIN_BEVEL:
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_JOIN_BEVEL));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-join-bevel")));
break;
default:
break;
@@ -971,13 +964,13 @@ sp_captype_set (Gtk::Container *spw, unsigned const captype)
Gtk::RadioButton *tb = NULL;
switch (captype) {
case SP_STROKE_LINECAP_BUTT:
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_CAP_BUTT));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-cap-butt")));
break;
case SP_STROKE_LINECAP_ROUND:
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_CAP_ROUND));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-cap-round")));
break;
case SP_STROKE_LINECAP_SQUARE:
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_CAP_SQUARE));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-cap-square")));
break;
default:
break;
@@ -1057,8 +1050,8 @@ sp_stroke_style_line_update(Gtk::Container *spw, Inkscape::Selection *sel)
tb = static_cast<Gtk::RadioButton *>(spw->get_data("bevel join"));
tb->set_sensitive(enabled);
- Gtk::SpinButton* sb = NULL;
- sb = static_cast<Gtk::SpinButton *>(spw->get_data("miterlimit_sb"));
+ Inkscape::UI::Widget::SpinButton* sb = NULL;
+ sb = static_cast<Inkscape::UI::Widget::SpinButton *>(spw->get_data("miterlimit_sb"));
sb->set_sensitive(enabled);
tb = static_cast<Gtk::RadioButton *>(spw->get_data("cap butt"));
@@ -1264,14 +1257,13 @@ sp_stroke_style_line_dash_changed(Gtk::Container *spw)
}
/**
- * \brief This routine handles toggle events for buttons in the stroke style
- * dialog.
+ * This routine handles toggle events for buttons in the stroke style dialog.
+ *
* When activated, this routine gets the data for the various widgets, and then
* calls the respective routines to update css properties, etc.
*
*/
-static void
-sp_stroke_style_any_toggled(Gtk::ToggleButton *tb, Gtk::Container *spw)
+static void sp_stroke_style_any_toggled(Gtk::ToggleButton *tb, Gtk::Container *spw)
{
if (spw->get_data("update")) {
return;
@@ -1324,16 +1316,16 @@ sp_stroke_style_set_join_buttons(Gtk::Container *spw, Gtk::ToggleButton *active)
{
Gtk::RadioButton *tb;
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_JOIN_MITER));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-join-miter")));
tb->set_active(active == tb);
Gtk::SpinButton *ml = static_cast<Gtk::SpinButton *>(spw->get_data("miterlimit_sb"));
ml->set_sensitive(active == tb);
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_JOIN_ROUND));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-join-round")));
tb->set_active(active == tb);
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_JOIN_BEVEL));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-join-bevel")));
tb->set_active(active == tb);
}
@@ -1345,11 +1337,11 @@ sp_stroke_style_set_cap_buttons(Gtk::Container *spw, Gtk::ToggleButton *active)
{
Gtk::RadioButton *tb;
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_CAP_BUTT));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-cap-butt")));
tb->set_active(active == tb);
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_CAP_ROUND));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-cap-round")));
tb->set_active(active == tb);
- tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON_STROKE_CAP_SQUARE));
+ tb = static_cast<Gtk::RadioButton *>(spw->get_data(INKSCAPE_ICON("stroke-cap-square")));
tb->set_active(active == tb);
}
diff --git a/src/widgets/stroke-style.h b/src/widgets/stroke-style.h
index b8ab05810..882901f45 100644
--- a/src/widgets/stroke-style.h
+++ b/src/widgets/stroke-style.h
@@ -1,5 +1,6 @@
-/** @file
- * @brief Stroke style dialog
+/**
+ * @file
+ * Widgets used in the stroke style dialog.
*/
/* Author:
* Lauris Kaplinski <lauris@ximian.com>
@@ -19,9 +20,19 @@ class Widget;
class Container;
}
+/**
+ * Creates an instance of a paint style widget.
+ */
Gtk::Widget *sp_stroke_style_paint_widget_new(void);
+
+/**
+ * Creates an instance of a line style widget.
+ */
Gtk::Container *sp_stroke_style_line_widget_new(void);
+/**
+ * Switches a line or paint style widget to track the given desktop.
+ */
void sp_stroke_style_widget_set_desktop(Gtk::Widget *widget, SPDesktop *desktop);
#endif // SEEN_DIALOGS_STROKE_STYLE_H
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index 7ef864383..0638e9ca7 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -1,6 +1,7 @@
-/** @file
- * @brief Controls bars for some of Inkscape's tools (for some tools,
- * they are in their own files)
+/**
+ * @file
+ * Controls bars for some of Inkscape's tools (for some tools,
+ * they are in their own files).
*/
/* Authors:
* MenTaLguY <mental@rydia.net>
@@ -100,6 +101,7 @@
#include "../verbs.h"
#include "../widgets/button.h"
#include "../widgets/spinbutton-events.h"
+#include "ui/widget/spinbutton.h"
#include "../widgets/spw-utilities.h"
#include "../widgets/widget-sizes.h"
#include "../xml/attribute-record.h"
@@ -132,6 +134,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainA
static void sp_tweak_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder);
static void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder);
static void sp_zoom_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder);
+static void sp_measure_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder);
static void sp_star_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder);
static void sp_arc_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder);
static void sp_rect_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder);
@@ -173,6 +176,7 @@ static struct {
{ "SPTweakContext", "tweak_tool", SP_VERB_CONTEXT_TWEAK, SP_VERB_CONTEXT_TWEAK_PREFS },
{ "SPSprayContext", "spray_tool", SP_VERB_CONTEXT_SPRAY, SP_VERB_CONTEXT_SPRAY_PREFS },
{ "SPZoomContext", "zoom_tool", SP_VERB_CONTEXT_ZOOM, SP_VERB_CONTEXT_ZOOM_PREFS },
+ { "SPMeasureContext", "measure_tool", SP_VERB_CONTEXT_MEASURE, SP_VERB_CONTEXT_MEASURE_PREFS },
{ "SPRectContext", "rect_tool", SP_VERB_CONTEXT_RECT, SP_VERB_CONTEXT_RECT_PREFS },
{ "Box3DContext", "3dbox_tool", SP_VERB_CONTEXT_3DBOX, SP_VERB_CONTEXT_3DBOX_PREFS },
{ "SPArcContext", "arc_tool", SP_VERB_CONTEXT_ARC, SP_VERB_CONTEXT_ARC_PREFS },
@@ -211,6 +215,8 @@ static struct {
SP_VERB_INVALID, 0, 0},
{ "SPZoomContext", "zoom_toolbox", 0, sp_zoom_toolbox_prep, "ZoomToolbar",
SP_VERB_INVALID, 0, 0},
+ { "SPMeasureContext", "measure_toolbox", 0, sp_measure_toolbox_prep, "MeasureToolbar",
+ SP_VERB_INVALID, 0, 0},
{ "SPStarContext", "star_toolbox", 0, sp_star_toolbox_prep, "StarToolbar",
SP_VERB_CONTEXT_STAR_PREFS, "/tools/shapes/star", N_("Style of new stars")},
{ "SPRectContext", "rect_toolbox", 0, sp_rect_toolbox_prep, "RectToolbar",
@@ -332,7 +338,6 @@ static gchar const * ui_descr =
" <toolbar name='SprayToolbar'>"
" <toolitem action='SprayModeAction' />"
" <separator />"
- " <separator />"
" <toolitem action='SprayWidthAction' />"
" <toolitem action='SprayPressureAction' />"
" <toolitem action='SprayPopulationAction' />"
@@ -361,6 +366,13 @@ static gchar const * ui_descr =
" <toolitem action='ZoomNext' />"
" </toolbar>"
+ " <toolbar name='MeasureToolbar'>"
+ " <toolitem action='MeasureFontSizeAction' />"
+ " <separator />"
+ " <toolitem action='measure_units_label' />"
+ " <toolitem action='MeasureUnitsAction' />"
+ " </toolbar>"
+
" <toolbar name='StarToolbar'>"
" <separator />"
" <toolitem action='StarStateAction' />"
@@ -469,9 +481,9 @@ static gchar const * ui_descr =
" </toolbar>"
" <toolbar name='EraserToolbar'>"
- " <toolitem action='EraserWidthAction' />"
- " <separator />"
" <toolitem action='EraserModeAction' />"
+ " <separator />"
+ " <toolitem action='EraserWidthAction' />"
" </toolbar>"
" <toolbar name='TextToolbar'>"
@@ -548,11 +560,11 @@ static void update_commands_toolbox(SPDesktop *desktop, SPEventContext *eventcon
static GtkWidget * sp_toolbox_button_new_from_verb_with_doubleclick( GtkWidget *t, Inkscape::IconSize size, SPButtonType type,
Inkscape::Verb *verb, Inkscape::Verb *doubleclick_verb,
- Inkscape::UI::View::View *view, GtkTooltips *tt);
+ Inkscape::UI::View::View *view);
class VerbAction : public Gtk::Action {
public:
- static Glib::RefPtr<VerbAction> create(Inkscape::Verb* verb, Inkscape::Verb* verb2, Inkscape::UI::View::View *view, GtkTooltips *tooltips);
+ static Glib::RefPtr<VerbAction> create(Inkscape::Verb* verb, Inkscape::Verb* verb2, Inkscape::UI::View::View *view);
virtual ~VerbAction();
virtual void set_active(bool active = true);
@@ -570,31 +582,29 @@ private:
Inkscape::Verb* verb;
Inkscape::Verb* verb2;
Inkscape::UI::View::View *view;
- GtkTooltips *tooltips;
bool active;
- VerbAction(Inkscape::Verb* verb, Inkscape::Verb* verb2, Inkscape::UI::View::View *view, GtkTooltips *tooltips);
+ VerbAction(Inkscape::Verb* verb, Inkscape::Verb* verb2, Inkscape::UI::View::View *view);
};
-Glib::RefPtr<VerbAction> VerbAction::create(Inkscape::Verb* verb, Inkscape::Verb* verb2, Inkscape::UI::View::View *view, GtkTooltips *tooltips)
+Glib::RefPtr<VerbAction> VerbAction::create(Inkscape::Verb* verb, Inkscape::Verb* verb2, Inkscape::UI::View::View *view)
{
Glib::RefPtr<VerbAction> result;
SPAction *action = verb->get_action(view);
if ( action ) {
//SPAction* action2 = verb2 ? verb2->get_action(view) : 0;
- result = Glib::RefPtr<VerbAction>(new VerbAction(verb, verb2, view, tooltips));
+ result = Glib::RefPtr<VerbAction>(new VerbAction(verb, verb2, view));
}
return result;
}
-VerbAction::VerbAction(Inkscape::Verb* verb, Inkscape::Verb* verb2, Inkscape::UI::View::View *view, GtkTooltips *tooltips) :
+VerbAction::VerbAction(Inkscape::Verb* verb, Inkscape::Verb* verb2, Inkscape::UI::View::View *view) :
Gtk::Action(Glib::ustring(verb->get_id()), Gtk::StockID(verb->get_image()), Glib::ustring(_(verb->get_name())), Glib::ustring(_(verb->get_tip()))),
verb(verb),
verb2(verb2),
view(view),
- tooltips(tooltips),
active(false)
{
}
@@ -624,8 +634,7 @@ Gtk::Widget* VerbAction::create_tool_item_vfunc()
SP_BUTTON_TYPE_TOGGLE,
verb,
verb2,
- view,
- tooltips );
+ view );
if ( active ) {
sp_button_toggle_set_down( SP_BUTTON(button), active);
}
@@ -808,7 +817,7 @@ static void delete_prefspusher(GtkObject * /*obj*/, PrefPusher *watcher )
GtkWidget * sp_toolbox_button_new_from_verb_with_doubleclick(GtkWidget *t, Inkscape::IconSize size, SPButtonType type,
Inkscape::Verb *verb, Inkscape::Verb *doubleclick_verb,
- Inkscape::UI::View::View *view, GtkTooltips *tt)
+ Inkscape::UI::View::View *view)
{
SPAction *action = verb->get_action(view);
if (!action) {
@@ -824,7 +833,7 @@ GtkWidget * sp_toolbox_button_new_from_verb_with_doubleclick(GtkWidget *t, Inksc
/* fixme: Handle sensitive/unsensitive */
/* fixme: Implement sp_button_new_from_action */
- GtkWidget *b = sp_button_new(size, type, action, doubleclick_action, tt);
+ GtkWidget *b = sp_button_new(size, type, action, doubleclick_action);
gtk_widget_show(b);
@@ -855,23 +864,6 @@ static void trigger_sp_action( GtkAction* /*act*/, gpointer user_data )
}
}
-static void sp_action_action_set_sensitive(SPAction * /*action*/, unsigned int sensitive, void *data)
-{
- if ( data ) {
- GtkAction* act = GTK_ACTION(data);
- gtk_action_set_sensitive( act, sensitive );
- }
-}
-
-static SPActionEventVector action_event_vector = {
- {NULL},
- NULL,
- NULL,
- sp_action_action_set_sensitive,
- NULL,
- NULL
-};
-
static GtkAction* create_action_for_verb( Inkscape::Verb* verb, Inkscape::UI::View::View* view, Inkscape::IconSize size )
{
GtkAction* act = 0;
@@ -881,10 +873,15 @@ static GtkAction* create_action_for_verb( Inkscape::Verb* verb, Inkscape::UI::Vi
act = GTK_ACTION(inky);
gtk_action_set_sensitive( act, targetAction->sensitive );
- g_signal_connect( G_OBJECT(inky), "activate", GTK_SIGNAL_FUNC(trigger_sp_action), targetAction );
+ g_signal_connect( G_OBJECT(inky), "activate", G_CALLBACK(trigger_sp_action), targetAction );
- SPAction*rebound = dynamic_cast<SPAction *>( nr_object_ref( dynamic_cast<NRObject *>(targetAction) ) );
- nr_active_object_add_listener( (NRActiveObject *)rebound, (NRObjectEventVector *)&action_event_vector, sizeof(SPActionEventVector), inky );
+ // FIXME: memory leak: this is not unrefed anywhere
+ g_object_ref(G_OBJECT(targetAction));
+ g_object_set_data_full(G_OBJECT(inky), "SPAction", (void*) targetAction, (GDestroyNotify) &g_object_unref);
+ targetAction->signal_set_sensitive.connect(
+ sigc::bind<0>(
+ sigc::ptr_fun(&gtk_action_set_sensitive),
+ GTK_ACTION(inky)));
return act;
}
@@ -932,7 +929,7 @@ static Glib::RefPtr<Gtk::ActionGroup> create_or_fetch_actions( SPDesktop* deskto
SP_VERB_ZOOM_PAGE,
SP_VERB_ZOOM_PAGE_WIDTH,
SP_VERB_ZOOM_PREV,
- SP_VERB_ZOOM_SELECTION,
+ SP_VERB_ZOOM_SELECTION
};
Inkscape::IconSize toolboxSize = ToolboxFactory::prefToSize("/toolbox/small");
@@ -959,9 +956,8 @@ static Glib::RefPtr<Gtk::ActionGroup> create_or_fetch_actions( SPDesktop* deskto
}
if ( !mainActions->get_action("ToolZoom") ) {
- GtkTooltips *tt = gtk_tooltips_new();
for ( guint i = 0; i < G_N_ELEMENTS(tools) && tools[i].type_name; i++ ) {
- Glib::RefPtr<VerbAction> va = VerbAction::create(Inkscape::Verb::get(tools[i].verb), Inkscape::Verb::get(tools[i].doubleclick_verb), view, tt);
+ Glib::RefPtr<VerbAction> va = VerbAction::create(Inkscape::Verb::get(tools[i].verb), Inkscape::Verb::get(tools[i].doubleclick_verb), view);
if ( va ) {
mainActions->add(va);
if ( i == 0 ) {
@@ -1053,6 +1049,14 @@ GtkWidget *ToolboxFactory::createSnapToolbox()
return toolboxNewCommon( tb, BAR_SNAP, GTK_POS_LEFT );
}
+static GtkWidget* createCustomSlider( GtkAdjustment *adjustment, gdouble climbRate, guint digits )
+{
+ Inkscape::UI::Widget::SpinButton *inkSpinner = new Inkscape::UI::Widget::SpinButton(*Glib::wrap(adjustment, true), climbRate, digits);
+ inkSpinner = Gtk::manage( inkSpinner );
+ GtkWidget *widget = GTK_WIDGET( inkSpinner->gobj() );
+ return widget;
+}
+
static EgeAdjustmentAction * create_adjustment_action( gchar const *name,
gchar const *label, gchar const *shortLabel, gchar const *tooltip,
Glib::ustring const &path, gdouble def,
@@ -1065,6 +1069,12 @@ static EgeAdjustmentAction * create_adjustment_action( gchar const *name,
void (*callback)(GtkAdjustment *, GObject *),
gdouble climb = 0.1, guint digits = 3, double factor = 1.0 )
{
+ static bool init = false;
+ if ( !init ) {
+ init = true;
+ ege_adjustment_action_set_compact_tool_factory( createCustomSlider );
+ }
+
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
GtkAdjustment* adj = GTK_ADJUSTMENT( gtk_adjustment_new( prefs->getDouble(path, def) * factor,
lower, upper, step, page, 0 ) );
@@ -1072,7 +1082,7 @@ static EgeAdjustmentAction * create_adjustment_action( gchar const *name,
sp_unit_selector_add_adjustment( SP_UNIT_SELECTOR(us), adj );
}
- gtk_signal_connect( GTK_OBJECT(adj), "value-changed", GTK_SIGNAL_FUNC(callback), dataKludge );
+ g_signal_connect( G_OBJECT(adj), "value-changed", G_CALLBACK(callback), dataKludge );
EgeAdjustmentAction* act = ege_adjustment_action_new( adj, name, label, tooltip, 0, climb, digits );
if ( shortLabel ) {
@@ -1348,7 +1358,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeInsertAction",
_("Insert node"),
_("Insert new nodes into selected segments"),
- INKSCAPE_ICON_NODE_ADD,
+ INKSCAPE_ICON("node-add"),
secondarySize );
g_object_set( inky, "short_label", _("Insert"), NULL );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_add), 0 );
@@ -1359,7 +1369,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeDeleteAction",
_("Delete node"),
_("Delete selected nodes"),
- INKSCAPE_ICON_NODE_DELETE,
+ INKSCAPE_ICON("node-delete"),
secondarySize );
g_object_set( inky, "short_label", _("Delete"), NULL );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_delete), 0 );
@@ -1370,7 +1380,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeJoinAction",
_("Join nodes"),
_("Join selected nodes"),
- INKSCAPE_ICON_NODE_JOIN,
+ INKSCAPE_ICON("node-join"),
secondarySize );
g_object_set( inky, "short_label", _("Join"), NULL );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_join), 0 );
@@ -1381,7 +1391,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeBreakAction",
_("Break nodes"),
_("Break path at selected nodes"),
- INKSCAPE_ICON_NODE_BREAK,
+ INKSCAPE_ICON("node-break"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_break), 0 );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1392,7 +1402,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeJoinSegmentAction",
_("Join with segment"),
_("Join selected endnodes with a new segment"),
- INKSCAPE_ICON_NODE_JOIN_SEGMENT,
+ INKSCAPE_ICON("node-join-segment"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_join_segment), 0 );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1402,7 +1412,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeDeleteSegmentAction",
_("Delete segment"),
_("Delete segment between two non-endpoint nodes"),
- INKSCAPE_ICON_NODE_DELETE_SEGMENT,
+ INKSCAPE_ICON("node-delete-segment"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_delete_segment), 0 );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1412,7 +1422,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeCuspAction",
_("Node Cusp"),
_("Make selected nodes corner"),
- INKSCAPE_ICON_NODE_TYPE_CUSP,
+ INKSCAPE_ICON("node-type-cusp"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_cusp), 0 );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1422,7 +1432,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeSmoothAction",
_("Node Smooth"),
_("Make selected nodes smooth"),
- INKSCAPE_ICON_NODE_TYPE_SMOOTH,
+ INKSCAPE_ICON("node-type-smooth"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_smooth), 0 );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1432,7 +1442,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeSymmetricAction",
_("Node Symmetric"),
_("Make selected nodes symmetric"),
- INKSCAPE_ICON_NODE_TYPE_SYMMETRIC,
+ INKSCAPE_ICON("node-type-symmetric"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_symmetrical), 0 );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1442,7 +1452,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeAutoAction",
_("Node Auto"),
_("Make selected nodes auto-smooth"),
- INKSCAPE_ICON_NODE_TYPE_AUTO_SMOOTH,
+ INKSCAPE_ICON("node-type-auto-smooth"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_auto), 0 );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1452,7 +1462,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeLineAction",
_("Node Line"),
_("Make selected segments lines"),
- INKSCAPE_ICON_NODE_SEGMENT_LINE,
+ INKSCAPE_ICON("node-segment-line"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_toline), 0 );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1462,7 +1472,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "NodeCurveAction",
_("Node Curve"),
_("Make selected segments curves"),
- INKSCAPE_ICON_NODE_SEGMENT_CURVE,
+ INKSCAPE_ICON("node-segment-curve"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_tocurve), 0 );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1483,7 +1493,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkToggleAction* act = ink_toggle_action_new( "NodesShowHandlesAction",
_("Show Handles"),
_("Show Bezier handles of selected nodes"),
- INKSCAPE_ICON_SHOW_NODE_HANDLES,
+ INKSCAPE_ICON("show-node-handles"),
secondarySize );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
PrefPusher *pusher = new PrefPusher(GTK_TOGGLE_ACTION(act), "/tools/nodes/show_handles");
@@ -1494,7 +1504,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkToggleAction* act = ink_toggle_action_new( "NodesShowHelperpath",
_("Show Outline"),
_("Show path outline (without path effects)"),
- INKSCAPE_ICON_SHOW_PATH_OUTLINE,
+ INKSCAPE_ICON("show-path-outline"),
secondarySize );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
PrefPusher *pusher = new PrefPusher(GTK_TOGGLE_ACTION(act), "/tools/nodes/show_outline");
@@ -1506,7 +1516,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( verb->get_id(),
verb->get_name(),
verb->get_tip(),
- INKSCAPE_ICON_PATH_EFFECT_PARAMETER_NEXT,
+ INKSCAPE_ICON("path-effect-parameter-next"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_node_path_edit_nextLPEparam), desktop );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -1517,7 +1527,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkToggleAction* inky = ink_toggle_action_new( "ObjectEditClipPathAction",
_("Edit clipping paths"),
_("Show clipping path(s) of selected object(s)"),
- INKSCAPE_ICON_PATH_CLIP_EDIT,
+ INKSCAPE_ICON("path-clip-edit"),
secondarySize );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
PrefPusher *pusher = new PrefPusher(GTK_TOGGLE_ACTION(inky), "/tools/nodes/edit_clipping_paths");
@@ -1528,7 +1538,7 @@ static void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkToggleAction* inky = ink_toggle_action_new( "ObjectEditMaskPathAction",
_("Edit masks"),
_("Show mask(s) of selected object(s)"),
- INKSCAPE_ICON_PATH_MASK_EDIT,
+ INKSCAPE_ICON("path-mask-edit"),
secondarySize );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
PrefPusher *pusher = new PrefPusher(GTK_TOGGLE_ACTION(inky), "/tools/nodes/edit_masks");
@@ -1613,6 +1623,63 @@ static void sp_zoom_toolbox_prep(SPDesktop * /*desktop*/, GtkActionGroup* /*main
// no custom GtkAction setup needed
} // end of sp_zoom_toolbox_prep()
+static void
+sp_measure_fontsize_value_changed(GtkAdjustment *adj, GObject *tbl)
+{
+ SPDesktop *desktop = (SPDesktop *) g_object_get_data( tbl, "desktop" );
+
+ if (DocumentUndo::getUndoSensitive(sp_desktop_document(desktop))) {
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ prefs->setInt(Glib::ustring("/tools/measure/fontsize"), adj->value);
+ }
+}
+
+static void measure_unit_changed(GtkAction* /*act*/, GObject* tbl)
+{
+ UnitTracker* tracker = reinterpret_cast<UnitTracker*>(g_object_get_data(tbl, "tracker"));
+ SPUnit const *unit = tracker->getActiveUnit();
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ prefs->setInt("/tools/measure/unitid", unit->unit_id);
+}
+
+static void sp_measure_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, GObject* holder)
+{
+ UnitTracker* tracker = new UnitTracker( SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE );
+ tracker->setActiveUnit( sp_desktop_namedview(desktop)->doc_units );
+ g_object_set_data( holder, "tracker", tracker );
+
+ EgeAdjustmentAction *eact = 0;
+
+ /* Font Size */
+ {
+ eact = create_adjustment_action( "MeasureFontSizeAction",
+ _("Font Size"), _("Font Size:"),
+ _("The font size to be used in the measurement labels"),
+ "/tools/measure/fontsize", 0.0,
+ GTK_WIDGET(desktop->canvas), NULL, holder, FALSE, NULL,
+ 10, 36, 1.0, 4.0,
+ 0, 0, 0,
+ sp_measure_fontsize_value_changed);
+ gtk_action_group_add_action( mainActions, GTK_ACTION(eact) );
+ }
+
+
+ // units label
+ {
+ EgeOutputAction* act = ege_output_action_new( "measure_units_label", _("Units:"), _("The units to be used for the measurements"), 0 );
+ ege_output_action_set_use_markup( act, TRUE );
+ g_object_set( act, "visible-overflown", FALSE, NULL );
+ gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
+ }
+
+ // units menu
+ {
+ GtkAction* act = tracker->createAction( "MeasureUnitsAction", _("Units:"), _("The units to be used for the measurements") );
+ g_signal_connect_after( G_OBJECT(act), "changed", G_CALLBACK(measure_unit_changed), (GObject*)holder );
+ gtk_action_group_add_action( mainActions, act );
+ }
+} // end of sp_measure_toolbox_prep()
+
void ToolboxFactory::setToolboxDesktop(GtkWidget *toolbox, SPDesktop *desktop)
{
sigc::connection *conn = static_cast<sigc::connection*>(g_object_get_data(G_OBJECT(toolbox),
@@ -1708,7 +1775,7 @@ static void setupToolboxCommon( GtkWidget *toolbox,
GtkPositionType pos = static_cast<GtkPositionType>(GPOINTER_TO_INT(g_object_get_data( G_OBJECT(toolbox), HANDLE_POS_MARK )));
orientation = ((pos == GTK_POS_LEFT) || (pos == GTK_POS_RIGHT)) ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
}
- gtk_toolbar_set_orientation(GTK_TOOLBAR(toolBar), orientation);
+ gtk_orientable_set_orientation (GTK_ORIENTABLE(toolBar), orientation);
gtk_toolbar_set_show_arrow(GTK_TOOLBAR(toolBar), TRUE);
g_object_set_data(G_OBJECT(toolBar), "desktop", NULL);
@@ -1727,7 +1794,7 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati
{
#if DUMP_DETAILS
g_message("Set orientation for %p to be %d", toolbox, orientation);
- GType type = GTK_WIDGET_TYPE(toolbox);
+ GType type = G_OBJECT_TYPE(toolbox);
g_message(" [%s]", g_type_name(type));
g_message(" %p", g_object_get_data(G_OBJECT(toolbox), BAR_ID_KEY));
#endif
@@ -1742,7 +1809,7 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati
GtkWidget* child = gtk_bin_get_child(GTK_BIN(toolbox));
if (child) {
#if DUMP_DETAILS
- GType type2 = GTK_WIDGET_TYPE(child);
+ GType type2 = G_OBJECT_TYPE(child);
g_message(" child [%s]", g_type_name(type2));
#endif // DUMP_DETAILS
@@ -1756,7 +1823,7 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati
for (GList* curr = children; curr; curr = g_list_next(curr)) {
GtkWidget* child2 = GTK_WIDGET(curr->data);
#if DUMP_DETAILS
- GType type3 = GTK_WIDGET_TYPE(child2);
+ GType type3 = G_OBJECT_TYPE(child2);
g_message(" child2 [%s]", g_type_name(type3));
#endif // DUMP_DETAILS
@@ -1766,12 +1833,12 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati
for (GList* curr2 = children2; curr2; curr2 = g_list_next(curr2)) {
GtkWidget* child3 = GTK_WIDGET(curr2->data);
#if DUMP_DETAILS
- GType type4 = GTK_WIDGET_TYPE(child3);
+ GType type4 = G_OBJECT_TYPE(child3);
g_message(" child3 [%s]", g_type_name(type4));
#endif // DUMP_DETAILS
if (GTK_IS_TOOLBAR(child3)) {
GtkToolbar* childBar = GTK_TOOLBAR(child3);
- gtk_toolbar_set_orientation(childBar, orientation);
+ gtk_orientable_set_orientation(GTK_ORIENTABLE(childBar), orientation);
}
}
g_list_free(children2);
@@ -1781,7 +1848,7 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati
if (GTK_IS_TOOLBAR(child2)) {
GtkToolbar* childBar = GTK_TOOLBAR(child2);
- gtk_toolbar_set_orientation(childBar, orientation);
+ gtk_orientable_set_orientation(GTK_ORIENTABLE(childBar), orientation);
if (GTK_IS_HANDLE_BOX(toolbox)) {
handleBox = GTK_HANDLE_BOX(toolbox);
}
@@ -1800,7 +1867,7 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati
}
} else if (GTK_IS_TOOLBAR(child)) {
GtkToolbar* toolbar = GTK_TOOLBAR(child);
- gtk_toolbar_set_orientation( toolbar, orientation );
+ gtk_orientable_set_orientation( GTK_ORIENTABLE(toolbar), orientation );
if (GTK_IS_HANDLE_BOX(toolbox)) {
handleBox = GTK_HANDLE_BOX(toolbox);
}
@@ -1824,6 +1891,7 @@ void setup_tool_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
" <toolitem action='ToolNode' />"
" <toolitem action='ToolTweak' />"
" <toolitem action='ToolZoom' />"
+ " <toolitem action='ToolMeasure' />"
" <!-- Shapes -->"
" <toolitem action='ToolRect' />"
@@ -2066,71 +2134,83 @@ static void toggle_snap_callback(GtkToggleAction *act, gpointer data) //data poi
dt->toggleSnapGlobal();
break;
case SP_ATTR_INKSCAPE_SNAP_BBOX:
- v = nv->snap_manager.snapprefs.getSnapModeBBox();
+ v = nv->snap_manager.snapprefs.isTargetSnappable(Inkscape::SNAPTARGET_BBOX_CATEGORY);
sp_repr_set_boolean(repr, "inkscape:snap-bbox", !v);
break;
- case SP_ATTR_INKSCAPE_BBOX_PATHS:
- v = nv->snap_manager.snapprefs.getSnapToBBoxPath();
+ case SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_BBOX_EDGE);
sp_repr_set_boolean(repr, "inkscape:bbox-paths", !v);
break;
- case SP_ATTR_INKSCAPE_BBOX_NODES:
- v = nv->snap_manager.snapprefs.getSnapToBBoxNode();
+ case SP_ATTR_INKSCAPE_SNAP_BBOX_CORNER:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_BBOX_CORNER);
sp_repr_set_boolean(repr, "inkscape:bbox-nodes", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_NODES:
- v = nv->snap_manager.snapprefs.getSnapModeNode();
+ case SP_ATTR_INKSCAPE_SNAP_NODE:
+ v = nv->snap_manager.snapprefs.isTargetSnappable(Inkscape::SNAPTARGET_NODE_CATEGORY);
sp_repr_set_boolean(repr, "inkscape:snap-nodes", !v);
break;
- case SP_ATTR_INKSCAPE_OBJECT_PATHS:
- v = nv->snap_manager.snapprefs.getSnapToItemPath();
+ case SP_ATTR_INKSCAPE_SNAP_PATH:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_PATH);
sp_repr_set_boolean(repr, "inkscape:object-paths", !v);
break;
- case SP_ATTR_INKSCAPE_OBJECT_NODES:
- v = nv->snap_manager.snapprefs.getSnapToItemNode();
+ case SP_ATTR_INKSCAPE_SNAP_PATH_CLIP:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_PATH_CLIP);
+ sp_repr_set_boolean(repr, "inkscape:snap-path-clip", !v);
+ break;
+ case SP_ATTR_INKSCAPE_SNAP_PATH_MASK:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_PATH_MASK);
+ sp_repr_set_boolean(repr, "inkscape:snap-path-mask", !v);
+ break;
+ case SP_ATTR_INKSCAPE_SNAP_NODE_CUSP:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_NODE_CUSP);
sp_repr_set_boolean(repr, "inkscape:object-nodes", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_SMOOTH_NODES:
- v = nv->snap_manager.snapprefs.getSnapSmoothNodes();
+ case SP_ATTR_INKSCAPE_SNAP_NODE_SMOOTH:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_NODE_SMOOTH);
sp_repr_set_boolean(repr, "inkscape:snap-smooth-nodes", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_INTERS_PATHS:
- v = nv->snap_manager.snapprefs.getSnapIntersectionCS();
+ case SP_ATTR_INKSCAPE_SNAP_PATH_INTERSECTION:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_PATH_INTERSECTION);
sp_repr_set_boolean(repr, "inkscape:snap-intersection-paths", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_CENTER:
- v = nv->snap_manager.snapprefs.getIncludeItemCenter();
+ case SP_ATTR_INKSCAPE_SNAP_OTHERS:
+ v = nv->snap_manager.snapprefs.isTargetSnappable(Inkscape::SNAPTARGET_OTHERS_CATEGORY);
+ sp_repr_set_boolean(repr, "inkscape:snap-others", !v);
+ break;
+ case SP_ATTR_INKSCAPE_SNAP_ROTATION_CENTER:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_ROTATION_CENTER);
sp_repr_set_boolean(repr, "inkscape:snap-center", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_GRIDS:
- v = nv->snap_manager.snapprefs.getSnapToGrids();
+ case SP_ATTR_INKSCAPE_SNAP_GRID:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_GRID);
sp_repr_set_boolean(repr, "inkscape:snap-grids", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_TO_GUIDES:
- v = nv->snap_manager.snapprefs.getSnapToGuides();
+ case SP_ATTR_INKSCAPE_SNAP_GUIDE:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_GUIDE);
sp_repr_set_boolean(repr, "inkscape:snap-to-guides", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_PAGE:
- v = nv->snap_manager.snapprefs.getSnapToPageBorder();
+ case SP_ATTR_INKSCAPE_SNAP_PAGE_BORDER:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_PAGE_BORDER);
sp_repr_set_boolean(repr, "inkscape:snap-page", !v);
break;
- /*case SP_ATTR_INKSCAPE_SNAP_INTERS_GRIDGUIDE:
- v = nv->snap_manager.snapprefs.getSnapIntersectionGG();
- sp_repr_set_boolean(repr, "inkscape:snap-intersection-grid-guide", !v);
- break;*/
- case SP_ATTR_INKSCAPE_SNAP_LINE_MIDPOINTS:
- v = nv->snap_manager.snapprefs.getSnapLineMidpoints();
+ case SP_ATTR_INKSCAPE_SNAP_LINE_MIDPOINT:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_LINE_MIDPOINT);
sp_repr_set_boolean(repr, "inkscape:snap-midpoints", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_OBJECT_MIDPOINTS:
- v = nv->snap_manager.snapprefs.getSnapObjectMidpoints();
+ case SP_ATTR_INKSCAPE_SNAP_OBJECT_MIDPOINT:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_OBJECT_MIDPOINT);
sp_repr_set_boolean(repr, "inkscape:snap-object-midpoints", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE_MIDPOINTS:
- v = nv->snap_manager.snapprefs.getSnapBBoxEdgeMidpoints();
+ case SP_ATTR_INKSCAPE_SNAP_TEXT_BASELINE:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_TEXT_BASELINE);
+ sp_repr_set_boolean(repr, "inkscape:snap-text-baseline", !v);
+ break;
+ case SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE_MIDPOINT:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_BBOX_EDGE_MIDPOINT);
sp_repr_set_boolean(repr, "inkscape:snap-bbox-edge-midpoints", !v);
break;
- case SP_ATTR_INKSCAPE_SNAP_BBOX_MIDPOINTS:
- v = nv->snap_manager.snapprefs.getSnapBBoxMidpoints();
+ case SP_ATTR_INKSCAPE_SNAP_BBOX_MIDPOINT:
+ v = nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_BBOX_MIDPOINT);
sp_repr_set_boolean(repr, "inkscape:snap-bbox-midpoints", !v);
break;
default:
@@ -2165,8 +2245,11 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
" <toolitem action='ToggleSnapToItemNode' />"
" <toolitem action='ToggleSnapToSmoothNodes' />"
" <toolitem action='ToggleSnapToFromLineMidpoints' />"
+ " <separator />"
+ " <toolitem action='ToggleSnapFromOthers' />"
" <toolitem action='ToggleSnapToFromObjectCenters' />"
" <toolitem action='ToggleSnapToFromRotationCenter' />"
+ " <toolitem action='ToggleSnapToFromTextBaseline' />"
" <separator />"
" <toolitem action='ToggleSnapToPageBorder' />"
" <toolitem action='ToggleSnapToGrids' />"
@@ -2184,7 +2267,7 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
// For example, this action could be based on the verb(+action) + PrefsPusher.
Inkscape::Verb* verb = Inkscape::Verb::get(SP_VERB_TOGGLE_SNAPPING);
InkToggleAction* act = ink_toggle_action_new(verb->get_id(),
- verb->get_name(), verb->get_tip(), INKSCAPE_ICON_SNAP, secondarySize,
+ verb->get_name(), verb->get_tip(), INKSCAPE_ICON("snap"), secondarySize,
SP_ATTR_INKSCAPE_SNAP_GLOBAL);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
@@ -2193,7 +2276,7 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapFromBBoxCorner",
- _("Bounding box"), _("Snap bounding box corners"), INKSCAPE_ICON_SNAP_BOUNDING_BOX,
+ _("Bounding box"), _("Snap bounding boxes"), INKSCAPE_ICON("snap"),
secondarySize, SP_ATTR_INKSCAPE_SNAP_BBOX);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
@@ -2203,7 +2286,7 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToBBoxPath",
_("Bounding box edges"), _("Snap to edges of a bounding box"),
- INKSCAPE_ICON_SNAP_BOUNDING_BOX_EDGES, secondarySize, SP_ATTR_INKSCAPE_BBOX_PATHS);
+ INKSCAPE_ICON("snap-bounding-box-edges"), secondarySize, SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2211,8 +2294,8 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToBBoxNode",
- _("Bounding box corners"), _("Snap to bounding box corners"),
- INKSCAPE_ICON_SNAP_BOUNDING_BOX_CORNERS, secondarySize, SP_ATTR_INKSCAPE_BBOX_NODES);
+ _("Bounding box corners"), _("Snap bounding box corners"),
+ INKSCAPE_ICON("snap-bounding-box-corners"), secondarySize, SP_ATTR_INKSCAPE_SNAP_BBOX_CORNER);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2220,9 +2303,9 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToFromBBoxEdgeMidpoints",
- _("BBox Edge Midpoints"), _("Snap from and to midpoints of bounding box edges"),
- INKSCAPE_ICON_SNAP_BOUNDING_BOX_MIDPOINTS, secondarySize,
- SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE_MIDPOINTS);
+ _("BBox Edge Midpoints"), _("Snap midpoints of bounding box edges"),
+ INKSCAPE_ICON("snap-bounding-box-midpoints"), secondarySize,
+ SP_ATTR_INKSCAPE_SNAP_BBOX_EDGE_MIDPOINT);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2230,8 +2313,8 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToFromBBoxCenters",
- _("BBox Centers"), _("Snapping from and to centers of bounding boxes"),
- INKSCAPE_ICON_SNAP_BOUNDING_BOX_CENTER, secondarySize, SP_ATTR_INKSCAPE_SNAP_BBOX_MIDPOINTS);
+ _("BBox Centers"), _("Snapping centers of bounding boxes"),
+ INKSCAPE_ICON("snap-bounding-box-center"), secondarySize, SP_ATTR_INKSCAPE_SNAP_BBOX_MIDPOINT);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2239,7 +2322,7 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapFromNode",
- _("Nodes"), _("Snap nodes or handles"), INKSCAPE_ICON_SNAP_NODES, secondarySize, SP_ATTR_INKSCAPE_SNAP_NODES);
+ _("Nodes"), _("Snap nodes, paths, and handles"), INKSCAPE_ICON("snap"), secondarySize, SP_ATTR_INKSCAPE_SNAP_NODE);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2247,8 +2330,8 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToItemPath",
- _("Paths"), _("Snap to paths"), INKSCAPE_ICON_SNAP_NODES_PATH, secondarySize,
- SP_ATTR_INKSCAPE_OBJECT_PATHS);
+ _("Paths"), _("Snap to paths"), INKSCAPE_ICON("snap-nodes-path"), secondarySize,
+ SP_ATTR_INKSCAPE_SNAP_PATH);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2257,7 +2340,7 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToPathIntersections",
_("Path intersections"), _("Snap to path intersections"),
- INKSCAPE_ICON_SNAP_NODES_INTERSECTION, secondarySize, SP_ATTR_INKSCAPE_SNAP_INTERS_PATHS);
+ INKSCAPE_ICON("snap-nodes-intersection"), secondarySize, SP_ATTR_INKSCAPE_SNAP_PATH_INTERSECTION);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2265,8 +2348,8 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToItemNode",
- _("To nodes"), _("Snap to cusp nodes"), INKSCAPE_ICON_SNAP_NODES_CUSP, secondarySize,
- SP_ATTR_INKSCAPE_OBJECT_NODES);
+ _("To nodes"), _("Snap cusp nodes, incl. rectangle corners"), INKSCAPE_ICON("snap-nodes-cusp"), secondarySize,
+ SP_ATTR_INKSCAPE_SNAP_NODE_CUSP);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2274,8 +2357,8 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToSmoothNodes",
- _("Smooth nodes"), _("Snap to smooth nodes"), INKSCAPE_ICON_SNAP_NODES_SMOOTH,
- secondarySize, SP_ATTR_INKSCAPE_SNAP_SMOOTH_NODES);
+ _("Smooth nodes"), _("Snap smooth nodes, incl. quadrant points of ellipses"), INKSCAPE_ICON("snap-nodes-smooth"),
+ secondarySize, SP_ATTR_INKSCAPE_SNAP_NODE_SMOOTH);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2283,8 +2366,16 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToFromLineMidpoints",
- _("Line Midpoints"), _("Snap from and to midpoints of line segments"),
- INKSCAPE_ICON_SNAP_NODES_MIDPOINT, secondarySize, SP_ATTR_INKSCAPE_SNAP_LINE_MIDPOINTS);
+ _("Line Midpoints"), _("Snap midpoints of line segments"),
+ INKSCAPE_ICON("snap-nodes-midpoint"), secondarySize, SP_ATTR_INKSCAPE_SNAP_LINE_MIDPOINT);
+
+ gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
+ g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
+ }
+
+ {
+ InkToggleAction* act = ink_toggle_action_new("ToggleSnapFromOthers",
+ _("Others"), _("Snap other points (centers, guide origins, gradient handles, etc.)"), INKSCAPE_ICON("snap"), secondarySize, SP_ATTR_INKSCAPE_SNAP_OTHERS);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2292,8 +2383,8 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToFromObjectCenters",
- _("Object Centers"), _("Snap from and to centers of objects"),
- INKSCAPE_ICON_SNAP_NODES_CENTER, secondarySize, SP_ATTR_INKSCAPE_SNAP_OBJECT_MIDPOINTS);
+ _("Object Centers"), _("Snap centers of objects"),
+ INKSCAPE_ICON("snap-nodes-center"), secondarySize, SP_ATTR_INKSCAPE_SNAP_OBJECT_MIDPOINT);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2301,17 +2392,27 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToFromRotationCenter",
- _("Rotation Centers"), _("Snap from and to an item's rotation center"),
- INKSCAPE_ICON_SNAP_NODES_ROTATION_CENTER, secondarySize, SP_ATTR_INKSCAPE_SNAP_CENTER);
+ _("Rotation Centers"), _("Snap an item's rotation center"),
+ INKSCAPE_ICON("snap-nodes-rotation-center"), secondarySize, SP_ATTR_INKSCAPE_SNAP_ROTATION_CENTER);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
}
{
+ InkToggleAction* act = ink_toggle_action_new("ToggleSnapToFromTextBaseline",
+ _("Text baseline"), _("Snap text anchors and baselines"),
+ INKSCAPE_ICON("snap-text-baseline"), secondarySize, SP_ATTR_INKSCAPE_SNAP_TEXT_BASELINE);
+
+ gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
+ g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
+ }
+
+
+ {
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToPageBorder",
- _("Page border"), _("Snap to the page border"), INKSCAPE_ICON_SNAP_PAGE,
- secondarySize, SP_ATTR_INKSCAPE_SNAP_PAGE);
+ _("Page border"), _("Snap to the page border"), INKSCAPE_ICON("snap-page"),
+ secondarySize, SP_ATTR_INKSCAPE_SNAP_PAGE_BORDER);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2319,8 +2420,8 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToGrids",
- _("Grids"), _("Snap to grids"), INKSCAPE_ICON_GRID_RECTANGULAR, secondarySize,
- SP_ATTR_INKSCAPE_SNAP_GRIDS);
+ _("Grids"), _("Snap to grids"), INKSCAPE_ICON("grid-rectangular"), secondarySize,
+ SP_ATTR_INKSCAPE_SNAP_GRID);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
@@ -2328,23 +2429,13 @@ void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
{
InkToggleAction* act = ink_toggle_action_new("ToggleSnapToGuides",
- _("Guides"), _("Snap to guides"), INKSCAPE_ICON_GUIDES, secondarySize,
- SP_ATTR_INKSCAPE_SNAP_TO_GUIDES);
+ _("Guides"), _("Snap guides"), INKSCAPE_ICON("guides"), secondarySize,
+ SP_ATTR_INKSCAPE_SNAP_GUIDE);
gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
}
- /*{
- InkToggleAction* act = ink_toggle_action_new("ToggleSnapToGridGuideIntersections",
- _("Grid/guide intersections"), _("Snap to intersections of a grid with a guide"),
- INKSCAPE_ICON_SNAP_GRID_GUIDE_INTERSECTIONS, secondarySize,
- SP_ATTR_INKSCAPE_SNAP_INTERS_GRIDGUIDE);
-
- gtk_action_group_add_action( mainActions->gobj(), GTK_ACTION( act ) );
- g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(toggle_snap_callback), toolbox );
- }*/
-
setupToolboxCommon( toolbox, desktop, descr,
"/ui/SnapToolbar",
"/toolbox/secondary" );
@@ -2397,10 +2488,11 @@ void ToolboxFactory::updateSnapToolbox(SPDesktop *desktop, SPEventContext * /*ev
Glib::RefPtr<Gtk::Action> act7 = mainActions->get_action("ToggleSnapToItemNode");
Glib::RefPtr<Gtk::Action> act8 = mainActions->get_action("ToggleSnapToSmoothNodes");
Glib::RefPtr<Gtk::Action> act9 = mainActions->get_action("ToggleSnapToFromLineMidpoints");
- Glib::RefPtr<Gtk::Action> act10 = mainActions->get_action("ToggleSnapToFromObjectCenters");
+ Glib::RefPtr<Gtk::Action> act10 = mainActions->get_action("ToggleSnapFromOthers");
+ Glib::RefPtr<Gtk::Action> act10b = mainActions->get_action("ToggleSnapToFromObjectCenters");
Glib::RefPtr<Gtk::Action> act11 = mainActions->get_action("ToggleSnapToFromRotationCenter");
+ Glib::RefPtr<Gtk::Action> act11b = mainActions->get_action("ToggleSnapToFromTextBaseline");
Glib::RefPtr<Gtk::Action> act12 = mainActions->get_action("ToggleSnapToPageBorder");
- //Glib::RefPtr<Gtk::Action> act13 = mainActions->get_action("ToggleSnapToGridGuideIntersections");
Glib::RefPtr<Gtk::Action> act14 = mainActions->get_action("ToggleSnapToGrids");
Glib::RefPtr<Gtk::Action> act15 = mainActions->get_action("ToggleSnapToGuides");
@@ -2417,47 +2509,50 @@ void ToolboxFactory::updateSnapToolbox(SPDesktop *desktop, SPEventContext * /*ev
bool const c1 = nv->snap_manager.snapprefs.getSnapEnabledGlobally();
gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act1->gobj()), c1);
- bool const c2 = nv->snap_manager.snapprefs.getSnapModeBBox();
+ bool const c2 = nv->snap_manager.snapprefs.isTargetSnappable(SNAPTARGET_BBOX_CATEGORY);
gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act2->gobj()), c2);
gtk_action_set_sensitive(GTK_ACTION(act2->gobj()), c1);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act3->gobj()), nv->snap_manager.snapprefs.getSnapToBBoxPath());
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act3->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(SNAPTARGET_BBOX_EDGE));
gtk_action_set_sensitive(GTK_ACTION(act3->gobj()), c1 && c2);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act4->gobj()), nv->snap_manager.snapprefs.getSnapToBBoxNode());
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act4->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(SNAPTARGET_BBOX_CORNER));
gtk_action_set_sensitive(GTK_ACTION(act4->gobj()), c1 && c2);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act4b->gobj()), nv->snap_manager.snapprefs.getSnapBBoxEdgeMidpoints());
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act4b->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(SNAPTARGET_BBOX_EDGE_MIDPOINT));
gtk_action_set_sensitive(GTK_ACTION(act4b->gobj()), c1 && c2);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act4c->gobj()), nv->snap_manager.snapprefs.getSnapBBoxMidpoints());
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act4c->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(SNAPTARGET_BBOX_MIDPOINT));
gtk_action_set_sensitive(GTK_ACTION(act4c->gobj()), c1 && c2);
- bool const c3 = nv->snap_manager.snapprefs.getSnapModeNode();
+ bool const c3 = nv->snap_manager.snapprefs.isTargetSnappable(SNAPTARGET_NODE_CATEGORY);
gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act5->gobj()), c3);
gtk_action_set_sensitive(GTK_ACTION(act5->gobj()), c1);
- bool const c4 = nv->snap_manager.snapprefs.getSnapToItemPath();
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act6->gobj()), c4);
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act6->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_PATH));
gtk_action_set_sensitive(GTK_ACTION(act6->gobj()), c1 && c3);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act6b->gobj()), nv->snap_manager.snapprefs.getSnapIntersectionCS());
- gtk_action_set_sensitive(GTK_ACTION(act6b->gobj()), c1 && c3 && c4);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act7->gobj()), nv->snap_manager.snapprefs.getSnapToItemNode());
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act6b->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_PATH_INTERSECTION));
+ gtk_action_set_sensitive(GTK_ACTION(act6b->gobj()), c1 && c3);
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act7->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_NODE_CUSP));
gtk_action_set_sensitive(GTK_ACTION(act7->gobj()), c1 && c3);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act8->gobj()), nv->snap_manager.snapprefs.getSnapSmoothNodes());
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act8->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_NODE_SMOOTH));
gtk_action_set_sensitive(GTK_ACTION(act8->gobj()), c1 && c3);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act9->gobj()), nv->snap_manager.snapprefs.getSnapLineMidpoints());
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act9->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_LINE_MIDPOINT));
gtk_action_set_sensitive(GTK_ACTION(act9->gobj()), c1 && c3);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act10->gobj()), nv->snap_manager.snapprefs.getSnapObjectMidpoints());
- gtk_action_set_sensitive(GTK_ACTION(act10->gobj()), c1 && c3);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act11->gobj()), nv->snap_manager.snapprefs.getIncludeItemCenter());
- gtk_action_set_sensitive(GTK_ACTION(act11->gobj()), c1 && c3);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act12->gobj()), nv->snap_manager.snapprefs.getSnapToPageBorder());
+ bool const c5 = nv->snap_manager.snapprefs.isTargetSnappable(SNAPTARGET_OTHERS_CATEGORY);
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act10->gobj()), c5);
+ gtk_action_set_sensitive(GTK_ACTION(act10->gobj()), c1);
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act10b->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_OBJECT_MIDPOINT));
+ gtk_action_set_sensitive(GTK_ACTION(act10b->gobj()), c1 && c5);
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act11->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_ROTATION_CENTER));
+ gtk_action_set_sensitive(GTK_ACTION(act11->gobj()), c1 && c5);
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act11b->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_TEXT_BASELINE));
+ gtk_action_set_sensitive(GTK_ACTION(act11b->gobj()), c1 && c5);
+
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act12->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_PAGE_BORDER));
gtk_action_set_sensitive(GTK_ACTION(act12->gobj()), c1);
- //gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act13->gobj()), nv->snap_manager.snapprefs.getSnapIntersectionGG());
- //gtk_action_set_sensitive(GTK_ACTION(act13->gobj()), c1);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act14->gobj()), nv->snap_manager.snapprefs.getSnapToGrids());
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act14->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_GRID));
gtk_action_set_sensitive(GTK_ACTION(act14->gobj()), c1);
- gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act15->gobj()), nv->snap_manager.snapprefs.getSnapToGuides());
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(act15->gobj()), nv->snap_manager.snapprefs.isSnapButtonEnabled(Inkscape::SNAPTARGET_GUIDE));
gtk_action_set_sensitive(GTK_ACTION(act15->gobj()), c1);
@@ -2481,8 +2576,8 @@ void ToolboxFactory::showAuxToolbox(GtkWidget *toolbox_toplevel)
static GtkWidget *sp_empty_toolbox_new(SPDesktop *desktop)
{
GtkWidget *tbl = gtk_toolbar_new();
- gtk_object_set_data(GTK_OBJECT(tbl), "dtw", desktop->canvas);
- gtk_object_set_data(GTK_OBJECT(tbl), "desktop", desktop);
+ g_object_set_data(G_OBJECT(tbl), "dtw", desktop->canvas);
+ g_object_set_data(G_OBJECT(tbl), "desktop", desktop);
gtk_widget_show_all(tbl);
sp_set_font_size_smaller (tbl);
@@ -2729,10 +2824,10 @@ static void star_tb_event_attr_changed(Inkscape::XML::Node *repr, gchar const *n
bool isFlatSided = prefs->getBool("/tools/shapes/star/isflatsided", true);
if (!strcmp(name, "inkscape:randomized")) {
- adj = GTK_ADJUSTMENT( gtk_object_get_data(GTK_OBJECT(tbl), "randomized") );
+ adj = GTK_ADJUSTMENT( g_object_get_data(G_OBJECT(tbl), "randomized") );
gtk_adjustment_set_value(adj, sp_repr_get_double_attribute(repr, "inkscape:randomized", 0.0));
} else if (!strcmp(name, "inkscape:rounded")) {
- adj = GTK_ADJUSTMENT( gtk_object_get_data(GTK_OBJECT(tbl), "rounded") );
+ adj = GTK_ADJUSTMENT( g_object_get_data(G_OBJECT(tbl), "rounded") );
gtk_adjustment_set_value(adj, sp_repr_get_double_attribute(repr, "inkscape:rounded", 0.0));
} else if (!strcmp(name, "inkscape:flatsided")) {
GtkAction* prop_action = GTK_ACTION( g_object_get_data(G_OBJECT(tbl), "prop_action") );
@@ -2746,7 +2841,7 @@ static void star_tb_event_attr_changed(Inkscape::XML::Node *repr, gchar const *n
gtk_action_set_sensitive( prop_action, FALSE );
}
} else if ((!strcmp(name, "sodipodi:r1") || !strcmp(name, "sodipodi:r2")) && (!isFlatSided) ) {
- adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "proportion");
+ adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "proportion");
gdouble r1 = sp_repr_get_double_attribute(repr, "sodipodi:r1", 1.0);
gdouble r2 = sp_repr_get_double_attribute(repr, "sodipodi:r2", 1.0);
if (r2 < r1) {
@@ -2755,7 +2850,7 @@ static void star_tb_event_attr_changed(Inkscape::XML::Node *repr, gchar const *n
gtk_adjustment_set_value(adj, r1/r2);
}
} else if (!strcmp(name, "sodipodi:sides")) {
- adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "magnitude");
+ adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "magnitude");
gtk_adjustment_set_value(adj, sp_repr_get_int_attribute(repr, "sodipodi:sides", 0));
}
@@ -2869,7 +2964,7 @@ void sp_toolbox_add_label(GtkWidget *tbl, gchar const *title, bool wide)
} else {
gtk_box_pack_start(GTK_BOX(tbl), boxl, FALSE, FALSE, 0);
}
- gtk_object_set_data(GTK_OBJECT(tbl), "mode_label", l);
+ g_object_set_data(G_OBJECT(tbl), "mode_label", l);
}
@@ -2898,14 +2993,14 @@ static void sp_star_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
gtk_list_store_set( model, &iter,
0, _("Polygon"),
1, _("Regular polygon (with one handle) instead of a star"),
- 2, INKSCAPE_ICON_DRAW_POLYGON,
+ 2, INKSCAPE_ICON("draw-polygon"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Star"),
1, _("Star instead of a regular polygon (with one handle)"),
- 2, INKSCAPE_ICON_DRAW_STAR,
+ 2, INKSCAPE_ICON("draw-star"),
-1 );
EgeSelectOneAction* act = ege_select_one_action_new( "FlatAction", (""), (""), NULL, GTK_TREE_MODEL(model) );
@@ -3328,7 +3423,7 @@ static void sp_rect_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
InkAction* inky = ink_action_new( "RectResetAction",
_("Not rounded"),
_("Make corners sharp"),
- INKSCAPE_ICON_RECTANGLE_MAKE_CORNERS_SHARP,
+ INKSCAPE_ICON("rectangle-make-corners-sharp"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_rtb_defaults), holder );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -3375,7 +3470,7 @@ static void box3d_set_button_and_adjustment(Persp3D *persp,
gtk_action_set_sensitive(act, TRUE);
double angle = persp3d_get_infinite_angle(persp, axis);
- if (angle != NR_HUGE) { // FIXME: We should catch this error earlier (don't show the spinbutton at all)
+ if (angle != Geom::infinity()) { // FIXME: We should catch this error earlier (don't show the spinbutton at all)
gtk_adjustment_set_value(adj, box3d_normalize_angle(angle));
}
} else {
@@ -3401,21 +3496,21 @@ static void box3d_resync_toolbar(Inkscape::XML::Node *persp_repr, GObject *data)
return;
}
{
- adj = GTK_ADJUSTMENT(gtk_object_get_data(GTK_OBJECT(tbl), "box3d_angle_x"));
+ adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "box3d_angle_x"));
act = GTK_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_angle_x_action"));
tact = &INK_TOGGLE_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_vp_x_state_action"))->action;
box3d_set_button_and_adjustment(persp, Proj::X, adj, act, tact);
}
{
- adj = GTK_ADJUSTMENT(gtk_object_get_data(GTK_OBJECT(tbl), "box3d_angle_y"));
+ adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "box3d_angle_y"));
act = GTK_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_angle_y_action"));
tact = &INK_TOGGLE_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_vp_y_state_action"))->action;
box3d_set_button_and_adjustment(persp, Proj::Y, adj, act, tact);
}
{
- adj = GTK_ADJUSTMENT(gtk_object_get_data(GTK_OBJECT(tbl), "box3d_angle_z"));
+ adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "box3d_angle_z"));
act = GTK_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_angle_z_action"));
tact = &INK_TOGGLE_ACTION(g_object_get_data(G_OBJECT(tbl), "box3d_vp_z_state_action"))->action;
@@ -3615,7 +3710,7 @@ static void box3d_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions,
// Translators: VP is short for 'vanishing point'
_("State of VP in X direction"),
_("Toggle VP in X direction between 'finite' and 'infinite' (=parallel)"),
- INKSCAPE_ICON_PERSPECTIVE_PARALLEL,
+ INKSCAPE_ICON("perspective-parallel"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
g_object_set_data( holder, "box3d_vp_x_state_action", act );
@@ -3654,7 +3749,7 @@ static void box3d_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions,
// Translators: VP is short for 'vanishing point'
_("State of VP in Y direction"),
_("Toggle VP in Y direction between 'finite' and 'infinite' (=parallel)"),
- INKSCAPE_ICON_PERSPECTIVE_PARALLEL,
+ INKSCAPE_ICON("perspective-parallel"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
g_object_set_data( holder, "box3d_vp_y_state_action", act );
@@ -3693,7 +3788,7 @@ static void box3d_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions,
// Translators: VP is short for 'vanishing point'
_("State of VP in Z direction"),
_("Toggle VP in Z direction between 'finite' and 'infinite' (=parallel)"),
- INKSCAPE_ICON_PERSPECTIVE_PARALLEL,
+ INKSCAPE_ICON("perspective-parallel"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
g_object_set_data( holder, "box3d_vp_z_state_action", act );
@@ -3782,15 +3877,15 @@ static void sp_spl_tb_defaults(GtkWidget * /*widget*/, GtkObject *obj)
gdouble exp = 1.0;
gdouble t0 = 0.0;
- adj = (GtkAdjustment*)gtk_object_get_data(obj, "revolution");
+ adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(obj), "revolution");
gtk_adjustment_set_value(adj, rev);
gtk_adjustment_value_changed(adj);
- adj = (GtkAdjustment*)gtk_object_get_data(obj, "expansion");
+ adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(obj), "expansion");
gtk_adjustment_set_value(adj, exp);
gtk_adjustment_value_changed(adj);
- adj = (GtkAdjustment*)gtk_object_get_data(obj, "t0");
+ adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(obj), "t0");
gtk_adjustment_set_value(adj, t0);
gtk_adjustment_value_changed(adj);
@@ -3816,13 +3911,13 @@ static void spiral_tb_event_attr_changed(Inkscape::XML::Node *repr,
g_object_set_data(G_OBJECT(tbl), "freeze", GINT_TO_POINTER(TRUE));
GtkAdjustment *adj;
- adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "revolution");
+ adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "revolution");
gtk_adjustment_set_value(adj, (sp_repr_get_double_attribute(repr, "sodipodi:revolution", 3.0)));
- adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "expansion");
+ adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "expansion");
gtk_adjustment_set_value(adj, (sp_repr_get_double_attribute(repr, "sodipodi:expansion", 1.0)));
- adj = (GtkAdjustment*)gtk_object_get_data(GTK_OBJECT(tbl), "t0");
+ adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "t0");
gtk_adjustment_set_value(adj, (sp_repr_get_double_attribute(repr, "sodipodi:t0", 0.0)));
g_object_set_data(G_OBJECT(tbl), "freeze", GINT_TO_POINTER(FALSE));
@@ -3995,14 +4090,14 @@ static void sp_add_freehand_mode_toggle(GtkActionGroup* mainActions, GObject* ho
gtk_list_store_set( model, &iter,
0, _("Bezier"),
1, _("Create regular Bezier path"),
- 2, INKSCAPE_ICON_PATH_MODE_BEZIER,
+ 2, INKSCAPE_ICON("path-mode-bezier"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Spiro"),
1, _("Create Spiro path"),
- 2, INKSCAPE_ICON_PATH_MODE_SPIRO,
+ 2, INKSCAPE_ICON("path-mode-spiro"),
-1 );
if (!tool_is_pencil) {
@@ -4010,14 +4105,14 @@ static void sp_add_freehand_mode_toggle(GtkActionGroup* mainActions, GObject* ho
gtk_list_store_set( model, &iter,
0, _("Zigzag"),
1, _("Create a sequence of straight line segments"),
- 2, INKSCAPE_ICON_PATH_MODE_POLYLINE,
+ 2, INKSCAPE_ICON("path-mode-polyline"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Paraxial"),
1, _("Create a sequence of paraxial line segments"),
- 2, INKSCAPE_ICON_PATH_MODE_POLYLINE_PARAXIAL,
+ 2, INKSCAPE_ICON("path-mode-polyline-paraxial"),
-1 );
}
@@ -4047,7 +4142,7 @@ static void freehand_change_shape(EgeSelectOneAction* act, GObject *dataKludge)
}
/**
- * \brief Generate the list of freehand advanced shape option entries.
+ * Generate the list of freehand advanced shape option entries.
*/
static GList * freehand_shape_dropdown_items_list() {
GList *glist = NULL;
@@ -4107,7 +4202,7 @@ static void sp_pencil_tb_defaults(GtkWidget * /*widget*/, GtkObject *obj)
// fixme: make settable
gdouble tolerance = 4;
- adj = (GtkAdjustment*)gtk_object_get_data(obj, "tolerance");
+ adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(obj), "tolerance");
gtk_adjustment_set_value(adj, tolerance);
gtk_adjustment_value_changed(adj);
@@ -4313,91 +4408,91 @@ static void sp_tweak_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainAction
gtk_list_store_set( model, &iter,
0, _("Move mode"),
1, _("Move objects in any direction"),
- 2, INKSCAPE_ICON_OBJECT_TWEAK_PUSH,
+ 2, INKSCAPE_ICON("object-tweak-push"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Move in/out mode"),
1, _("Move objects towards cursor; with Shift from cursor"),
- 2, INKSCAPE_ICON_OBJECT_TWEAK_ATTRACT,
+ 2, INKSCAPE_ICON("object-tweak-attract"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Move jitter mode"),
1, _("Move objects in random directions"),
- 2, INKSCAPE_ICON_OBJECT_TWEAK_RANDOMIZE,
+ 2, INKSCAPE_ICON("object-tweak-randomize"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Scale mode"),
1, _("Shrink objects, with Shift enlarge"),
- 2, INKSCAPE_ICON_OBJECT_TWEAK_SHRINK,
+ 2, INKSCAPE_ICON("object-tweak-shrink"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Rotate mode"),
1, _("Rotate objects, with Shift counterclockwise"),
- 2, INKSCAPE_ICON_OBJECT_TWEAK_ROTATE,
+ 2, INKSCAPE_ICON("object-tweak-rotate"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Duplicate/delete mode"),
1, _("Duplicate objects, with Shift delete"),
- 2, INKSCAPE_ICON_OBJECT_TWEAK_DUPLICATE,
+ 2, INKSCAPE_ICON("object-tweak-duplicate"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Push mode"),
1, _("Push parts of paths in any direction"),
- 2, INKSCAPE_ICON_PATH_TWEAK_PUSH,
+ 2, INKSCAPE_ICON("path-tweak-push"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Shrink/grow mode"),
1, _("Shrink (inset) parts of paths; with Shift grow (outset)"),
- 2, INKSCAPE_ICON_PATH_TWEAK_SHRINK,
+ 2, INKSCAPE_ICON("path-tweak-shrink"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Attract/repel mode"),
1, _("Attract parts of paths towards cursor; with Shift from cursor"),
- 2, INKSCAPE_ICON_PATH_TWEAK_ATTRACT,
+ 2, INKSCAPE_ICON("path-tweak-attract"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Roughen mode"),
1, _("Roughen parts of paths"),
- 2, INKSCAPE_ICON_PATH_TWEAK_ROUGHEN,
+ 2, INKSCAPE_ICON("path-tweak-roughen"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Color paint mode"),
1, _("Paint the tool's color upon selected objects"),
- 2, INKSCAPE_ICON_OBJECT_TWEAK_PAINT,
+ 2, INKSCAPE_ICON("object-tweak-paint"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Color jitter mode"),
1, _("Jitter the colors of selected objects"),
- 2, INKSCAPE_ICON_OBJECT_TWEAK_JITTER_COLOR,
+ 2, INKSCAPE_ICON("object-tweak-jitter-color"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Blur mode"),
1, _("Blur selected objects more; with Shift, blur less"),
- 2, INKSCAPE_ICON_OBJECT_TWEAK_BLUR,
+ 2, INKSCAPE_ICON("object-tweak-blur"),
-1 );
@@ -4522,7 +4617,7 @@ static void sp_tweak_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainAction
InkToggleAction* act = ink_toggle_action_new( "TweakPressureAction",
_("Pressure"),
_("Use the pressure of the input device to alter the force of tweak action"),
- INKSCAPE_ICON_DRAW_USE_PRESSURE,
+ INKSCAPE_ICON("draw-use-pressure"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_tweak_pressure_state_changed), NULL);
@@ -4554,12 +4649,6 @@ static void sp_spray_standard_deviation_value_changed( GtkAdjustment *adj, GObje
prefs->setDouble( "/tools/spray/standard_deviation", adj->value );
}
-static void sp_spray_pressure_state_changed( GtkToggleAction *act, gpointer /*data*/ )
-{
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setBool("/tools/spray/usepressure", gtk_toggle_action_get_active(act));
-}
-
static void sp_spray_mode_changed( EgeSelectOneAction *act, GObject * /*tbl*/ )
{
int mode = ege_select_one_action_get_active( act );
@@ -4609,10 +4698,10 @@ static void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainAction
{
/* Mean */
- gchar const* labels[] = {_("(minimum mean)"), 0, 0, _("(default)"), 0, 0, 0, _("(maximum mean)")};
- gdouble values[] = {1, 5, 10, 20, 30, 50, 70, 100};
+ gchar const* labels[] = {_("(default)"), 0, 0, 0, 0, 0, 0, _("(maximum mean)")};
+ gdouble values[] = {0, 5, 10, 20, 30, 50, 70, 100};
EgeAdjustmentAction *eact = create_adjustment_action( "SprayMeanAction",
- _("Focus"), _("Focus:"), _("0 to spray a spot. Increase to enlarge the ring radius."),
+ _("Focus"), _("Focus:"), _("0 to spray a spot; increase to enlarge the ring radius"),
"/tools/spray/mean", 0,
GTK_WIDGET(desktop->canvas), NULL, holder, TRUE, "spray-mean",
0, 100, 1.0, 10.0,
@@ -4625,13 +4714,10 @@ static void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainAction
{
/* Standard_deviation */
- gchar const* labels[] = {_("(minimum scatter)"), 0, 0, _("(default)"), 0, 0, 0, _("(maximum scatter)")};
+ gchar const* labels[] = {_("(minimum scatter)"), 0, 0, 0, 0, 0, _("(default)"), _("(maximum scatter)")};
gdouble values[] = {1, 5, 10, 20, 30, 50, 70, 100};
-
- //TRANSLATORS: only translate "string" in "context|string".
- // For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
EgeAdjustmentAction *eact = create_adjustment_action( "SprayStandard_deviationAction",
- Q_("Toolbox|Scatter"), Q_("Toolbox|Scatter:"), _("Increase to scatter sprayed objects."),
+ C_("Spray tool", "Scatter"), C_("Spray tool", "Scatter:"), _("Increase to scatter sprayed objects"),
"/tools/spray/standard_deviation", 70,
GTK_WIDGET(desktop->canvas), NULL, holder, TRUE, "spray-standard_deviation",
1, 100, 1.0, 10.0,
@@ -4651,21 +4737,21 @@ static void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainAction
gtk_list_store_set( model, &iter,
0, _("Spray with copies"),
1, _("Spray copies of the initial selection"),
- 2, INKSCAPE_ICON_SPRAY_COPY_MODE,
+ 2, INKSCAPE_ICON("spray-mode-copy"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Spray with clones"),
1, _("Spray clones of the initial selection"),
- 2, INKSCAPE_ICON_SPRAY_CLONE_MODE,
+ 2, INKSCAPE_ICON("spray-mode-clone"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Spray single path"),
1, _("Spray objects in a single path"),
- 2, INKSCAPE_ICON_SPRAY_UNION_MODE,
+ 2, INKSCAPE_ICON("spray-mode-union"),
-1 );
EgeSelectOneAction* act = ege_select_one_action_new( "SprayModeAction", _("Mode"), (""), NULL, GTK_TREE_MODEL(model) );
@@ -4688,11 +4774,11 @@ static void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainAction
}
{ /* Population */
- gchar const* labels[] = {_("(low population)"), 0, 0, _("(default)"), 0, 0, _("(high population)")};
- gdouble values[] = {10, 25, 35, 50, 60, 80, 100};
+ gchar const* labels[] = {_("(low population)"), 0, 0, 0, _("(default)"), 0, _("(high population)")};
+ gdouble values[] = {5, 20, 35, 50, 70, 85, 100};
EgeAdjustmentAction *eact = create_adjustment_action( "SprayPopulationAction",
_("Amount"), _("Amount:"),
- _("Adjusts the number of items sprayed per clic."),
+ _("Adjusts the number of items sprayed per click"),
"/tools/spray/population", 70,
GTK_WIDGET(desktop->canvas), NULL, holder, TRUE, "spray-population",
1, 100, 1.0, 10.0,
@@ -4708,21 +4794,22 @@ static void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainAction
{
InkToggleAction* act = ink_toggle_action_new( "SprayPressureAction",
_("Pressure"),
- _("Use the pressure of the input device to alter the amount of sprayed objects."),
+ _("Use the pressure of the input device to alter the amount of sprayed objects"),
"use_pressure",
Inkscape::ICON_SIZE_DECORATION );
- gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
- g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(sp_spray_pressure_state_changed), NULL);
- gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/spray/usepressure", true) );
+ gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
+ PrefPusher *pusher = new PrefPusher(GTK_TOGGLE_ACTION(act), "/tools/spray/usepressure");
+ g_signal_connect(holder, "destroy", G_CALLBACK(delete_prefspusher), pusher);
+
}
{ /* Rotation */
- gchar const* labels[] = {_("(low rotation variation)"), 0, 0, _("(default)"), 0, 0, _("(high rotation variation)")};
- gdouble values[] = {10, 25, 35, 50, 60, 80, 100};
+ gchar const* labels[] = {_("(default)"), 0, 0, 0, 0, 0, 0, _("(high rotation variation)")};
+ gdouble values[] = {0, 10, 25, 35, 50, 60, 80, 100};
EgeAdjustmentAction *eact = create_adjustment_action( "SprayRotationAction",
_("Rotation"), _("Rotation:"),
// xgettext:no-c-format
- _("Variation of the rotation of the sprayed objects. 0% for the same rotation than the original object."),
+ _("Variation of the rotation of the sprayed objects; 0% for the same rotation than the original object"),
"/tools/spray/rotation_variation", 0,
GTK_WIDGET(desktop->canvas), NULL, holder, TRUE, "spray-rotation",
0, 100, 1.0, 10.0,
@@ -4735,15 +4822,12 @@ static void sp_spray_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainAction
}
{ /* Scale */
- gchar const* labels[] = {_("(low scale variation)"), 0, 0, _("(default)"), 0, 0, _("(high scale variation)")};
- gdouble values[] = {10, 25, 35, 50, 60, 80, 100};
-
- //TRANSLATORS: only translate "string" in "context|string".
- // For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+ gchar const* labels[] = {_("(default)"), 0, 0, 0, 0, 0, 0, _("(high scale variation)")};
+ gdouble values[] = {0, 10, 25, 35, 50, 60, 80, 100};
EgeAdjustmentAction *eact = create_adjustment_action( "SprayScaleAction",
- Q_("Toolbox|Scale"), Q_("Toolbox|Scale:"),
+ C_("Spray tool", "Scale"), C_("Spray tool", "Scale:"),
// xgettext:no-c-format
- _("Variation in the scale of the sprayed objects. 0% for the same scale than the original object."),
+ _("Variation in the scale of the sprayed objects; 0% for the same scale than the original object"),
"/tools/spray/scale_variation", 0,
GTK_WIDGET(desktop->canvas), NULL, holder, TRUE, "spray-scale",
0, 100, 1.0, 10.0,
@@ -5233,7 +5317,7 @@ static void sp_calligraphy_toolbox_prep(SPDesktop *desktop, GtkActionGroup* main
InkToggleAction* act = ink_toggle_action_new( "TraceAction",
_("Trace Background"),
_("Trace the lightness of the background by the width of the pen (white - minimum width, black - maximum width)"),
- INKSCAPE_ICON_DRAW_TRACE_BACKGROUND,
+ INKSCAPE_ICON("draw-trace-background"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
PrefPusher *pusher = new PrefPusher(GTK_TOGGLE_ACTION(act), "/tools/calligraphic/tracebackground", update_presets_list, holder);
@@ -5246,7 +5330,7 @@ static void sp_calligraphy_toolbox_prep(SPDesktop *desktop, GtkActionGroup* main
InkToggleAction* act = ink_toggle_action_new( "PressureAction",
_("Pressure"),
_("Use the pressure of the input device to alter the width of the pen"),
- INKSCAPE_ICON_DRAW_USE_PRESSURE,
+ INKSCAPE_ICON("draw-use-pressure"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
PrefPusher *pusher = new PrefPusher(GTK_TOGGLE_ACTION(act), "/tools/calligraphic/usepressure", update_presets_list, holder);
@@ -5259,7 +5343,7 @@ static void sp_calligraphy_toolbox_prep(SPDesktop *desktop, GtkActionGroup* main
InkToggleAction* act = ink_toggle_action_new( "TiltAction",
_("Tilt"),
_("Use the tilt of the input device to alter the angle of the pen's nib"),
- INKSCAPE_ICON_DRAW_USE_TILT,
+ INKSCAPE_ICON("draw-use-tilt"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
PrefPusher *pusher = new PrefPusher(GTK_TOGGLE_ACTION(act), "/tools/calligraphic/usetilt", update_presets_list, holder);
@@ -5587,14 +5671,14 @@ static void sp_arc_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions,
gtk_list_store_set( model, &iter,
0, _("Closed arc"),
1, _("Switch to segment (closed shape with two radii)"),
- 2, INKSCAPE_ICON_DRAW_ELLIPSE_SEGMENT,
+ 2, INKSCAPE_ICON("draw-ellipse-segment"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Open Arc"),
1, _("Switch to arc (unclosed shape)"),
- 2, INKSCAPE_ICON_DRAW_ELLIPSE_ARC,
+ 2, INKSCAPE_ICON("draw-ellipse-arc"),
-1 );
EgeSelectOneAction* act = ege_select_one_action_new( "ArcOpenAction", (""), (""), NULL, GTK_TREE_MODEL(model) );
@@ -5618,7 +5702,7 @@ static void sp_arc_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions,
InkAction* inky = ink_action_new( "ArcResetAction",
_("Make whole"),
_("Make the shape a whole ellipse, not arc or segment"),
- INKSCAPE_ICON_DRAW_ELLIPSE_WHOLE,
+ INKSCAPE_ICON("draw-ellipse-whole"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_arctb_defaults), holder );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -5863,7 +5947,7 @@ static void lpetool_toggle_set_bbox(GtkToggleAction *act, gpointer data)
SPDesktop *desktop = static_cast<SPDesktop *>(data);
Inkscape::Selection *selection = desktop->selection;
- Geom::OptRect bbox = selection->bounds();
+ Geom::OptRect bbox = selection->visualBounds();
if (bbox) {
Geom::Point A(bbox->min());
@@ -6118,23 +6202,6 @@ static void sp_erasertb_mode_changed( EgeSelectOneAction *act, GObject *tbl )
static void sp_eraser_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder)
{
{
- /* Width */
- gchar const* labels[] = {_("(hairline)"), 0, 0, 0, _("(default)"), 0, 0, 0, 0, _("(broad stroke)")};
- gdouble values[] = {1, 3, 5, 10, 15, 20, 30, 50, 75, 100};
- EgeAdjustmentAction *eact = create_adjustment_action( "EraserWidthAction",
- _("Pen Width"), _("Width:"),
- _("The width of the eraser pen (relative to the visible canvas area)"),
- "/tools/eraser/width", 15,
- GTK_WIDGET(desktop->canvas), NULL, holder, TRUE, "altx-eraser",
- 1, 100, 1.0, 10.0,
- labels, values, G_N_ELEMENTS(labels),
- sp_erc_width_value_changed, 1, 0);
- ege_adjustment_action_set_appearance( eact, TOOLBAR_SLIDER_HINT );
- gtk_action_group_add_action( mainActions, GTK_ACTION(eact) );
- gtk_action_set_sensitive( GTK_ACTION(eact), TRUE );
- }
-
- {
GtkListStore* model = gtk_list_store_new( 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING );
GtkTreeIter iter;
@@ -6142,17 +6209,18 @@ static void sp_eraser_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActio
gtk_list_store_set( model, &iter,
0, _("Delete"),
1, _("Delete objects touched by the eraser"),
- 2, INKSCAPE_ICON_DRAW_ERASER_DELETE_OBJECTS,
+ 2, INKSCAPE_ICON("draw-eraser-delete-objects"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Cut"),
1, _("Cut out from objects"),
- 2, INKSCAPE_ICON_PATH_DIFFERENCE,
+ 2, INKSCAPE_ICON("path-difference"),
-1 );
EgeSelectOneAction* act = ege_select_one_action_new( "EraserModeAction", (""), (""), NULL, GTK_TREE_MODEL(model) );
+ g_object_set( act, "short_label", _("Mode:"), NULL );
gtk_action_group_add_action( mainActions, GTK_ACTION(act) );
g_object_set_data( holder, "eraser_mode_action", act );
@@ -6169,6 +6237,23 @@ static void sp_eraser_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActio
g_signal_connect_after( G_OBJECT(act), "changed", G_CALLBACK(sp_erasertb_mode_changed), holder );
}
+ {
+ /* Width */
+ gchar const* labels[] = {_("(hairline)"), 0, 0, 0, _("(default)"), 0, 0, 0, 0, _("(broad stroke)")};
+ gdouble values[] = {1, 3, 5, 10, 15, 20, 30, 50, 75, 100};
+ EgeAdjustmentAction *eact = create_adjustment_action( "EraserWidthAction",
+ _("Pen Width"), _("Width:"),
+ _("The width of the eraser pen (relative to the visible canvas area)"),
+ "/tools/eraser/width", 15,
+ GTK_WIDGET(desktop->canvas), NULL, holder, TRUE, "altx-eraser",
+ 1, 100, 1.0, 10.0,
+ labels, values, G_N_ELEMENTS(labels),
+ sp_erc_width_value_changed, 1, 0);
+ ege_adjustment_action_set_appearance( eact, TOOLBAR_SLIDER_HINT );
+ gtk_action_group_add_action( mainActions, GTK_ACTION(eact) );
+ gtk_action_set_sensitive( GTK_ACTION(eact), TRUE );
+ }
+
}
//########################
@@ -6255,6 +6340,20 @@ static void cell_data_func(GtkCellLayout * /*cell_layout*/,
}
// Font family
+//
+// In most cases we should just be able to set the new family name
+// but there may be cases where a font family doesn't follow the
+// standard naming pattern. To handle those cases, we do a song and
+// dance to use Pango to find the best match. To do that we start
+// with the old "fontSpec" (which is the returned string from
+// pango_font_description_to_string() with the size unset). This
+// has the form "[family-list] [style-options]" where the
+// family-list is a comma separated list of font-family names
+// (optionally terminated by a comma). An example would be
+// "DejaVu Sans, Sans Bold". Only a "fontSpec" containing a
+// single font-family will work with Pango's best match routine.
+// If we can't obtain a good "fontSpec", we then resort to blindly
+// changing the font-family.
static void sp_text_fontfamily_value_changed( Ink_ComboBoxEntry_Action *act, GObject *tbl )
{
#ifdef DEBUG_TEXT
@@ -6279,6 +6378,9 @@ static void sp_text_fontfamily_value_changed( Ink_ComboBoxEntry_Action *act, GOb
int result_fontspec = sp_desktop_query_style (SP_ACTIVE_DESKTOP, query, QUERY_STYLE_PROPERTY_FONT_SPECIFICATION);
Glib::ustring fontSpec = query->text->font_specification.set ? query->text->font_specification.value : "";
+#ifdef DEBUG_TEXT
+ std::cout << " fontSpec from query :" << fontSpec << ":" << std::endl;
+#endif
// If that didn't work, try to get font spec from style
if (fontSpec.empty()) {
@@ -6294,90 +6396,90 @@ static void sp_text_fontfamily_value_changed( Ink_ComboBoxEntry_Action *act, GOb
fontSpec = font_factory::Default()->ConstructFontSpecification(fontFromStyle);
fontFromStyle->Unref();
}
+
#ifdef DEBUG_TEXT
- std::cout << " Fontspec not defined, reconstructed from style :" << fontSpec << ":" << std::endl;
+ std::cout << " fontSpec empty, try from style" << std::endl;
+ std::cout << " from style :" << fontSpec << ":" << std::endl;
sp_print_font( query );
#endif
+
}
- // And if that didn't work use default
- if( fontSpec.empty() ) {
+ // And if that didn't work use default. DO WE REALLY WANT TO DO THIS?
+ if ( fontSpec.empty() ) {
+
sp_style_read_from_prefs(query, "/tools/text");
-#ifdef DEBUG_TEXT
- std::cout << " read style from prefs:" << std::endl;
- sp_print_font( query );
-#endif
+
// Construct a new font specification if it does not yet exist
font_instance * fontFromStyle = font_factory::Default()->FaceFromStyle(query);
- if( fontFromStyle ) {
+ if ( fontFromStyle ) {
fontSpec = font_factory::Default()->ConstructFontSpecification(fontFromStyle);
fontFromStyle->Unref();
}
+
#ifdef DEBUG_TEXT
- std::cout << " Fontspec not defined, reconstructed from style :" << fontSpec << ":" << std::endl;
+ std::cout << " fontSpec empty, trying from prefs" << std::endl;
+ std::cout << " from prefs :" << fontSpec << ":" << std::endl;
sp_print_font( query );
#endif
}
+ // Now we have a font specification, replace family.
+ Glib::ustring newFontSpec = "";
SPCSSAttr *css = sp_repr_css_attr_new ();
- if (!fontSpec.empty()) {
- // Now we have a font specification, replace family.
- Glib::ustring newFontSpec = font_factory::Default()->ReplaceFontSpecificationFamily(fontSpec, family);
+ if (!fontSpec.empty()) newFontSpec = font_factory::Default()->ReplaceFontSpecificationFamily(fontSpec, family);
#ifdef DEBUG_TEXT
- std::cout << " New FontSpec from ReplaceFontSpecificationFamily :" << newFontSpec << ":" << std::endl;
+ std::cout << " New FontSpec from ReplaceFontSpecificationFamily :" << newFontSpec << ":" << std::endl;
#endif
- if (!newFontSpec.empty()) {
+ if (!fontSpec.empty() && !newFontSpec.empty() ) {
- if (fontSpec != newFontSpec) {
+ if (fontSpec != newFontSpec) {
- font_instance *font = font_factory::Default()->FaceFromFontSpecification(newFontSpec.c_str());
+ font_instance *font = font_factory::Default()->FaceFromFontSpecification(newFontSpec.c_str());
- if (font) {
- sp_repr_css_set_property (css, "-inkscape-font-specification", newFontSpec.c_str());
+ if (font) {
+ sp_repr_css_set_property (css, "-inkscape-font-specification", newFontSpec.c_str());
- // Set all the these just in case they were altered when finding the best
- // match for the new family and old style...
+ // Set all the these just in case they were altered when finding the best
+ // match for the new family and old style... Unnecessary?
- gchar c[256];
+ gchar c[256];
- font->Family(c, 256);
+ font->Family(c, 256);
- sp_repr_css_set_property (css, "font-family", c);
+ sp_repr_css_set_property (css, "font-family", c);
- font->Attribute( "weight", c, 256);
- sp_repr_css_set_property (css, "font-weight", c);
+ font->Attribute( "weight", c, 256);
+ sp_repr_css_set_property (css, "font-weight", c);
- font->Attribute("style", c, 256);
- sp_repr_css_set_property (css, "font-style", c);
+ font->Attribute("style", c, 256);
+ sp_repr_css_set_property (css, "font-style", c);
- font->Attribute("stretch", c, 256);
- sp_repr_css_set_property (css, "font-stretch", c);
+ font->Attribute("stretch", c, 256);
+ sp_repr_css_set_property (css, "font-stretch", c);
- font->Attribute("variant", c, 256);
- sp_repr_css_set_property (css, "font-variant", c);
+ font->Attribute("variant", c, 256);
+ sp_repr_css_set_property (css, "font-variant", c);
- font->Unref();
- }
+ font->Unref();
+ } else {
+ g_warning(_("Failed to find font matching: %s\n"), newFontSpec.c_str());
}
+ }
+ } else {
- } else {
-
- // newFontSpec empty
- // If the old font on selection (or default) does not exist on the system,
- // or the new font family does not exist,
- // ReplaceFontSpecificationFamily does not work. In that case we fall back to blindly
- // setting the family reported by the family chooser.
-
- // g_print ("fallback setting family: %s\n", family);
- sp_repr_css_set_property (css, "-inkscape-font-specification", family);
- sp_repr_css_set_property (css, "font-family", family);
- // Shoud we set other css font attributes?
- }
+ // Either old font does not exist on system or ReplaceFontSpecificationFamily() failed.
+ // Blindly fall back to setting the family to text in the font-family chooser.
- } // fontSpec not empty or not
+#ifdef DEBUG_TEXT
+ std::cout << " Failed to find new font, blindly setting family: " << family << std::endl;
+#endif
+ sp_repr_css_set_property (css, "-inkscape-font-specification", family);
+ sp_repr_css_set_property (css, "font-family", family);
+ }
// If querying returned nothing, update default style.
if (result_fontspec == QUERY_STYLE_NOTHING)
@@ -6494,7 +6596,7 @@ static void sp_text_style_changed( InkToggleAction* act, GObject *tbl )
sp_desktop_query_style (SP_ACTIVE_DESKTOP, query, QUERY_STYLE_PROPERTY_FONTNUMBERS);
font_instance * fontFromStyle = font_factory::Default()->FaceFromStyle(query);
- if( fontFromStyle ) {
+ if ( fontFromStyle ) {
fontSpec = font_factory::Default()->ConstructFontSpecification(fontFromStyle);
fontFromStyle->Unref();
}
@@ -6511,67 +6613,51 @@ static void sp_text_style_changed( InkToggleAction* act, GObject *tbl )
case 0:
{
// Bold
- if (!fontSpec.empty()) {
-
- newFontSpec = font_factory::Default()->FontSpecificationSetBold(fontSpec, active);
+ if (!fontSpec.empty()) newFontSpec = font_factory::Default()->FontSpecificationSetBold(fontSpec, active);
+ if ( !fontSpec.empty() && !newFontSpec.empty() ) {
- if (!newFontSpec.empty()) {
-
- // Set weight if we found font.
- font_instance * font = font_factory::Default()->FaceFromFontSpecification(newFontSpec.c_str());
- if (font) {
- gchar c[256];
- font->Attribute( "weight", c, 256);
- sp_repr_css_set_property (css, "font-weight", c);
- font->Unref();
- font = NULL;
- }
- nochange = false;
+ // Set weight using new font if found.
+ font_instance * font = font_factory::Default()->FaceFromFontSpecification(newFontSpec.c_str());
+ if (font) {
+ gchar c[256];
+ font->Attribute( "weight", c, 256);
+ sp_repr_css_set_property (css, "font-weight", c);
+ font->Unref();
+ font = NULL;
}
+ nochange = false;
+ } else {
+
+ // Blindly set weight.
+ sp_repr_css_set_property (css, "font-weight", (active == 0 ? "normal" : "bold") );
}
- // Reset button if no change.
- // The reset code didn't work in 0.47 and doesn't here... one must prevent an infinite loop
- /*
- if(nochange) {
- gtk_action_block_activate( GTK_ACTION(act) );
- gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), !active );
- gtk_action_unblock_activate( GTK_ACTION(act) );
- }
- */
break;
}
case 1:
{
// Italic/Oblique
- if (!fontSpec.empty()) {
-
- newFontSpec = font_factory::Default()->FontSpecificationSetItalic(fontSpec, active);
+ if (!fontSpec.empty()) newFontSpec = font_factory::Default()->FontSpecificationSetItalic(fontSpec, active);
- if (!newFontSpec.empty()) {
+ if ( !fontSpec.empty() && !newFontSpec.empty() ) {
- // Don't even set the italic/oblique if the font didn't exist on the system
- if( active ) {
- if( newFontSpec.find( "Italic" ) != Glib::ustring::npos ) {
- sp_repr_css_set_property (css, "font-style", "italic");
- } else {
- sp_repr_css_set_property (css, "font-style", "oblique");
- }
+ // Don't even set the italic/oblique if the font didn't exist on the system
+ if ( active ) {
+ if ( newFontSpec.find( "Italic" ) != Glib::ustring::npos ) {
+ sp_repr_css_set_property (css, "font-style", "italic");
} else {
- sp_repr_css_set_property (css, "font-style", "normal");
+ sp_repr_css_set_property (css, "font-style", "oblique");
}
- nochange = false;
+ } else {
+ sp_repr_css_set_property (css, "font-style", "normal");
}
+ nochange = false;
+
+ } else {
+
+ // Blindly set style.
+ sp_repr_css_set_property (css, "font-style", (active == 0 ? "normal" : "italic") );
}
- // Reset button if no change.
- // The reset code didn't work in 0.47... one must prevent an infinite loop
- /*
- if(nochange) {
- gtk_action_block_activate( GTK_ACTION(act) );
- gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), !active );
- gtk_action_unblock_activate( GTK_ACTION(act) );
- }
- */
break;
}
}
@@ -6702,15 +6788,14 @@ static void sp_text_align_mode_changed( EgeSelectOneAction *act, GObject *tbl )
unsigned writing_mode = item->style->writing_mode.value;
// below, variable names suggest horizontal move, but we check the writing direction
// and move in the corresponding axis
- int axis;
+ Geom::Dim2 axis;
if (writing_mode == SP_CSS_WRITING_MODE_LR_TB || writing_mode == SP_CSS_WRITING_MODE_RL_TB) {
- axis = NR::X;
+ axis = Geom::X;
} else {
- axis = NR::Y;
+ axis = Geom::Y;
}
- Geom::OptRect bbox
- = item->getBounds(Geom::identity(), SPItem::GEOMETRIC_BBOX);
+ Geom::OptRect bbox = item->geometricBounds();
if (!bbox)
continue;
double width = bbox->dimensions()[axis];
@@ -6759,7 +6844,7 @@ static void sp_text_align_mode_changed( EgeSelectOneAction *act, GObject *tbl )
}
}
Geom::Point XY = SP_TEXT(item)->attributes.firstXY();
- if (axis == NR::X) {
+ if (axis == Geom::X) {
XY = XY + Geom::Point (move, 0);
} else {
XY = XY + Geom::Point (0, move);
@@ -7122,7 +7207,7 @@ static void sp_text_orientation_mode_changed( EgeSelectOneAction *act, GObject *
* This function sets up the text-tool tool-controls, setting the entry boxes
* etc. to the values from the current selection or the default if no selection.
* It is called whenever a text selection is changed, including stepping cursor
- * through text.
+ * through text, or setting focus to text.
*/
static void sp_text_toolbox_selection_changed(Inkscape::Selection */*selection*/, GObject *tbl)
{
@@ -7647,14 +7732,14 @@ static void sp_text_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
gtk_list_store_set( model, &iter,
0, _("Horizontal"),
1, _("Horizontal text"),
- 2, INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_HORIZONTAL,
+ 2, INKSCAPE_ICON("format-text-direction-horizontal"),
-1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
0, _("Vertical"),
1, _("Vertical text"),
- 2, INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_VERTICAL,
+ 2, INKSCAPE_ICON("format-text-direction-vertical"),
-1 );
EgeSelectOneAction* act = ege_select_one_action_new( "TextOrientationAction", // Name
@@ -7946,7 +8031,7 @@ static void sp_connector_orthogonal_toggled( GtkToggleAction* act, GObject *tbl
if (cc_item_is_connector(item)) {
item->setAttribute( "inkscape:connector-type",
- value, false);
+ value, NULL);
item->avoidRef->handleSettingChange();
modmade = true;
}
@@ -7995,7 +8080,7 @@ static void connector_curvature_changed(GtkAdjustment *adj, GObject* tbl)
if (cc_item_is_connector(item)) {
item->setAttribute( "inkscape:connector-curvature",
- value, false);
+ value, NULL);
item->avoidRef->handleSettingChange();
modmade = true;
}
@@ -8111,7 +8196,7 @@ static void connector_tb_event_attr_changed(Inkscape::XML::Node *repr,
if ( !g_object_get_data(G_OBJECT(tbl), "freeze")
&& (strcmp(name, "inkscape:connector-spacing") == 0) ) {
- GtkAdjustment *adj = static_cast<GtkAdjustment*>(gtk_object_get_data(GTK_OBJECT(tbl), "spacing"));
+ GtkAdjustment *adj = static_cast<GtkAdjustment*>(g_object_get_data(G_OBJECT(tbl), "spacing"));
gdouble spacing = defaultConnSpacing;
sp_repr_get_double(repr, "inkscape:connector-spacing", &spacing);
@@ -8175,7 +8260,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
InkToggleAction* act = ink_toggle_action_new( "ConnectorEditModeAction",
_("EditMode"),
_("Switch between connection point editing and connector drawing mode"),
- INKSCAPE_ICON_CONNECTOR_EDIT,
+ INKSCAPE_ICON("connector-edit"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
@@ -8190,7 +8275,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
InkAction* inky = ink_action_new( "ConnectorAvoidAction",
_("Avoid"),
_("Make connectors avoid selected objects"),
- INKSCAPE_ICON_CONNECTOR_AVOID,
+ INKSCAPE_ICON("connector-avoid"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_connector_path_set_avoid), holder );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -8200,7 +8285,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
InkAction* inky = ink_action_new( "ConnectorIgnoreAction",
_("Ignore"),
_("Make connectors ignore selected objects"),
- INKSCAPE_ICON_CONNECTOR_IGNORE,
+ INKSCAPE_ICON("connector-ignore"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_connector_path_set_ignore), holder );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -8211,7 +8296,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
InkToggleAction* act = ink_toggle_action_new( "ConnectorOrthogonalAction",
_("Orthogonal"),
_("Make connector orthogonal or polyline"),
- INKSCAPE_ICON_CONNECTOR_ORTHOGONAL,
+ INKSCAPE_ICON("connector-orthogonal"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
@@ -8249,7 +8334,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
InkAction* inky = ink_action_new( "ConnectorGraphAction",
_("Graph"),
_("Nicely arrange selected connector network"),
- INKSCAPE_ICON_DISTRIBUTE_GRAPH,
+ INKSCAPE_ICON("distribute-graph"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_connector_graph_layout), holder );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -8272,7 +8357,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
InkToggleAction* act = ink_toggle_action_new( "ConnectorDirectedAction",
_("Downwards"),
_("Make connectors with end-markers (arrows) point downwards"),
- INKSCAPE_ICON_DISTRIBUTE_GRAPH_DIRECTED,
+ INKSCAPE_ICON("distribute-graph-directed"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
@@ -8288,7 +8373,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
InkToggleAction* act = ink_toggle_action_new( "ConnectorOverlapAction",
_("Remove overlaps"),
_("Do not allow overlapping shapes"),
- INKSCAPE_ICON_DISTRIBUTE_REMOVE_OVERLAPS,
+ INKSCAPE_ICON("distribute-remove-overlaps"),
Inkscape::ICON_SIZE_DECORATION );
gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
@@ -8304,7 +8389,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
InkAction* inky = ink_action_new( "ConnectorNewConnPointAction",
_("New connection point"),
_("Add a new connection point to the currently selected item"),
- INKSCAPE_ICON_CONNECTOR_NEW_CONNPOINT,
+ INKSCAPE_ICON("connector-new-connpoint"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_connector_new_connection_point), holder );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -8316,7 +8401,7 @@ static void sp_connector_toolbox_prep( SPDesktop *desktop, GtkActionGroup* mainA
InkAction* inky = ink_action_new( "ConnectorRemoveConnPointAction",
_("Remove connection point"),
_("Remove the currently selected connection point"),
- INKSCAPE_ICON_CONNECTOR_REMOVE_CONNPOINT,
+ INKSCAPE_ICON("connector-remove-connpoint"),
secondarySize );
g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_connector_remove_connection_point), holder );
gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
@@ -8367,7 +8452,9 @@ static void paintbucket_offset_changed(GtkAdjustment *adj, GObject *tbl)
SPUnit const *unit = tracker->getActiveUnit();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setDouble("/tools/paintbucket/offset", (gdouble)sp_units_get_pixels(adj->value, *unit));
+ // Don't adjust the offset value because we're saving the
+ // unit and it'll be correctly handled on load.
+ prefs->setDouble("/tools/paintbucket/offset", (gdouble)adj->value);
prefs->setString("/tools/paintbucket/offsetunits", sp_unit_get_abbreviation(unit));
}
diff --git a/src/widgets/toolbox.h b/src/widgets/toolbox.h
index a25705536..d7a1b9bd2 100644
--- a/src/widgets/toolbox.h
+++ b/src/widgets/toolbox.h
@@ -1,9 +1,7 @@
#ifndef SEEN_TOOLBOX_H
#define SEEN_TOOLBOX_H
-/**
- * \brief Main toolbox
- *
+/*
* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
* Frank Felfe <innerspace@iname.com>
@@ -15,16 +13,20 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gtk/gtkstyle.h>
-#include <gtk/gtktooltips.h>
+#include <gtk/gtk.h>
#include <glibmm/ustring.h>
-#include "forward.h"
#include "icon-size.h"
+class SPDesktop;
+class SPEventContext;
+
namespace Inkscape {
namespace UI {
+/**
+ * Main toolbox source.
+ */
class ToolboxFactory
{
public: