diff options
| author | Andrew Higginson <at.higginson@gmail.com> | 2011-12-27 21:04:47 +0000 |
|---|---|---|
| committer | Andrew <at.higginson@gmail.com> | 2011-12-27 21:04:47 +0000 |
| commit | 80960b623a99aae1402ab651b2974ef544ed3b03 (patch) | |
| tree | ba49d42c2789e9e11f805e2d5263e10f9fedeef8 /src/dialogs | |
| parent | try to fix bug (diff) | |
| parent | GDL: Cherry-pick upstream patch 73852 (2011-03-23) - Add missing return value. (diff) | |
| download | inkscape-80960b623a99aae1402ab651b2974ef544ed3b03.tar.gz inkscape-80960b623a99aae1402ab651b2974ef544ed3b03.zip | |
merged with trunk so I can build again...
(bzr r10092.1.36)
Diffstat (limited to 'src/dialogs')
| -rw-r--r-- | src/dialogs/CMakeLists.txt | 51 | ||||
| -rw-r--r-- | src/dialogs/clonetiler.cpp | 707 | ||||
| -rw-r--r-- | src/dialogs/clonetiler.h | 2 | ||||
| -rw-r--r-- | src/dialogs/dialog-events.cpp | 27 | ||||
| -rw-r--r-- | src/dialogs/dialog-events.h | 14 | ||||
| -rw-r--r-- | src/dialogs/export.cpp | 603 | ||||
| -rw-r--r-- | src/dialogs/find.cpp | 158 | ||||
| -rw-r--r-- | src/dialogs/find.h | 2 | ||||
| -rw-r--r-- | src/dialogs/item-properties.cpp | 244 | ||||
| -rw-r--r-- | src/dialogs/item-properties.h | 8 | ||||
| -rw-r--r-- | src/dialogs/object-attributes.cpp | 88 | ||||
| -rw-r--r-- | src/dialogs/object-attributes.h | 4 | ||||
| -rw-r--r-- | src/dialogs/spellcheck.cpp | 56 | ||||
| -rw-r--r-- | src/dialogs/spellcheck.h | 2 | ||||
| -rw-r--r-- | src/dialogs/text-edit.cpp | 178 | ||||
| -rw-r--r-- | src/dialogs/xml-tree.cpp | 416 |
16 files changed, 1283 insertions, 1277 deletions
diff --git a/src/dialogs/CMakeLists.txt b/src/dialogs/CMakeLists.txt index 9bcb1cd5a..6586b78af 100644 --- a/src/dialogs/CMakeLists.txt +++ b/src/dialogs/CMakeLists.txt @@ -1,25 +1,28 @@ -SET(dialogs_SRC -clonetiler.cpp -dialog-events.cpp -export.cpp -extensions.cpp -fill-style.cpp -find.cpp -guidelinedialog.cpp -iconpreview.cpp -in-dt-coordsys.cpp -item-properties.cpp -layer-properties.cpp -layers-panel.cpp -object-attributes.cpp -rdf.cpp -sp-attribute-widget.cpp -stroke-style.cpp -swatches.cpp -text-edit.cpp -unclump.cpp -xml-tree.cpp + +set(dialogs_SRC + clonetiler.cpp + dialog-events.cpp + export.cpp + find.cpp + item-properties.cpp + object-attributes.cpp + spellcheck.cpp + text-edit.cpp + xml-tree.cpp + + + # ------- + # Headers + clonetiler.h + dialog-events.h + export.h + find.h + item-properties.h + object-attributes.h + spellcheck.h + text-edit.h + xml-tree.h ) -ADD_LIBRARY(dialogs STATIC ${dialogs_SRC}) -TARGET_LINK_LIBRARIES(dialogs -2geom ${INKSCAPE_LIBS}) + +# add_inkscape_lib(dialogs_LIB "${dialogs_SRC}") +add_inkscape_source("${dialogs_SRC}") diff --git a/src/dialogs/clonetiler.cpp b/src/dialogs/clonetiler.cpp index 2a78cf5a1..1bb6b75d0 100644 --- a/src/dialogs/clonetiler.cpp +++ b/src/dialogs/clonetiler.cpp @@ -14,38 +14,44 @@ #ifdef HAVE_CONFIG_H # include "config.h" #endif -#include <glib/gmem.h> + +#include <climits> +#include <glib.h> #include <gtk/gtk.h> #include <glibmm/i18n.h> +#include <2geom/transforms.h> -#include "../desktop.h" -#include "../desktop-handles.h" +#include "desktop.h" +#include "desktop-handles.h" #include "dialog-events.h" -#include "display/nr-arena.h" -#include "display/nr-arena-item.h" -#include "../document.h" -#include "../filter-chemistry.h" +#include "display/cairo-utils.h" +#include "display/drawing.h" +#include "display/drawing-context.h" +#include "display/drawing-item.h" +#include "document.h" +#include "filter-chemistry.h" #include "helper/unit-menu.h" #include "helper/units.h" #include "helper/window.h" -#include "../inkscape.h" -#include "../interface.h" -#include "../macros.h" -#include "../message-stack.h" +#include "inkscape.h" +#include "interface.h" +#include "macros.h" +#include "message-stack.h" #include "preferences.h" -#include "../selection.h" -#include "../sp-filter.h" -#include "../sp-namedview.h" -#include "../sp-use.h" -#include "../style.h" +#include "selection.h" +#include "sp-filter.h" +#include "sp-namedview.h" +#include "sp-use.h" +#include "style.h" #include "svg/svg-color.h" #include "svg/svg.h" #include "ui/icon-names.h" #include "ui/widget/color-picker.h" #include "unclump.h" -#include "../verbs.h" +#include "verbs.h" #include "widgets/icon.h" #include "xml/repr.h" +#include "sp-root.h" using Inkscape::DocumentUndo; @@ -82,8 +88,7 @@ static sigc::connection _color_changed_connection; static Inkscape::UI::Widget::ColorPicker *color_picker; -static void -clonetiler_dialog_destroy( GtkObject */*object*/, gpointer /*data*/ ) +static void clonetiler_dialog_destroy(GtkObject */*object*/, gpointer /*data*/) { sp_signal_disconnect_by_data (INKSCAPE, dlg); _color_changed_connection.disconnect(); @@ -95,14 +100,17 @@ clonetiler_dialog_destroy( GtkObject */*object*/, gpointer /*data*/ ) } -static gboolean -clonetiler_dialog_delete (GtkObject */*object*/, GdkEvent * /*event*/, gpointer /*data*/) +static gboolean clonetiler_dialog_delete(GtkObject */*object*/, GdkEvent * /*event*/, gpointer /*data*/) { gtk_window_get_position ((GtkWindow *) dlg, &x, &y); gtk_window_get_size ((GtkWindow *) dlg, &w, &h); - if (x<0) x=0; - if (y<0) y=0; + if (x < 0) { + x = 0; + } + if (y < 0) { + y = 0; + } Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setInt(prefs_path + "x", x); @@ -114,8 +122,7 @@ clonetiler_dialog_delete (GtkObject */*object*/, GdkEvent * /*event*/, gpointer } -static void -on_picker_color_changed (guint rgba) +static void on_picker_color_changed(guint rgba) { static bool is_updating = false; if (is_updating || !SP_ACTIVE_DESKTOP) @@ -131,10 +138,9 @@ on_picker_color_changed (guint rgba) is_updating = false; } -static guint clonetiler_number_of_clones (SPObject *obj); +static guint clonetiler_number_of_clones(SPObject *obj); -static void -clonetiler_change_selection (Inkscape::Application * /*inkscape*/, Inkscape::Selection *selection, GtkWidget *dlg) +static void clonetiler_change_selection(Inkscape::Application * /*inkscape*/, Inkscape::Selection *selection, GtkWidget *dlg) { GtkWidget *buttons = (GtkWidget *) g_object_get_data (G_OBJECT(dlg), "buttons_on_tiles"); GtkWidget *status = (GtkWidget *) g_object_get_data (G_OBJECT(dlg), "status"); @@ -163,15 +169,16 @@ clonetiler_change_selection (Inkscape::Application * /*inkscape*/, Inkscape::Sel } } -static void -clonetiler_external_change (Inkscape::Application * /*inkscape*/, GtkWidget *dlg) +static void clonetiler_external_change(Inkscape::Application * /*inkscape*/, GtkWidget *dlg) { clonetiler_change_selection (NULL, sp_desktop_selection(SP_ACTIVE_DESKTOP), dlg); } -static void clonetiler_disconnect_gsignal (GObject *widget, gpointer source) { - if (source && G_IS_OBJECT(source)) +static void clonetiler_disconnect_gsignal(GObject *widget, gpointer source) +{ + if (source && G_IS_OBJECT(source)) { sp_signal_disconnect_by_data (source, widget); + } } @@ -196,9 +203,7 @@ enum { }; -static Geom::Affine -clonetiler_get_transform ( - +static Geom::Affine clonetiler_get_transform( // symmetry group int type, @@ -800,8 +805,7 @@ clonetiler_get_transform ( return Geom::identity(); } -static bool -clonetiler_is_a_clone_of (SPObject *tile, SPObject *obj) +static bool clonetiler_is_a_clone_of(SPObject *tile, SPObject *obj) { bool result = false; char *id_href = NULL; @@ -828,16 +832,14 @@ clonetiler_is_a_clone_of (SPObject *tile, SPObject *obj) return result; } -static NRArena const *trace_arena = NULL; +static Inkscape::Drawing *trace_drawing = NULL; static unsigned trace_visionkey; -static NRArenaItem *trace_root; static gdouble trace_zoom; -static SPDocument *trace_doc; +static SPDocument *trace_doc = NULL; -static void -clonetiler_trace_hide_tiled_clones_recursively (SPObject *from) +static void clonetiler_trace_hide_tiled_clones_recursively(SPObject *from) { - if (!trace_arena) + if (!trace_drawing) return; for (SPObject *o = from->firstChild(); o != NULL; o = o->next) { @@ -847,14 +849,13 @@ clonetiler_trace_hide_tiled_clones_recursively (SPObject *from) } } -static void -clonetiler_trace_setup (SPDocument *doc, gdouble zoom, SPItem *original) +static void clonetiler_trace_setup(SPDocument *doc, gdouble zoom, SPItem *original) { - trace_arena = NRArena::create(); + trace_drawing = new Inkscape::Drawing(); /* Create ArenaItem and set transform */ trace_visionkey = SPItem::display_key_new(1); trace_doc = doc; - trace_root = SP_ITEM(trace_doc->getRoot())->invoke_show((NRArena *) trace_arena, trace_visionkey, SP_ITEM_SHOW_DISPLAY); + trace_drawing->setRoot(trace_doc->getRoot()->invoke_show(*trace_drawing, trace_visionkey, SP_ITEM_SHOW_DISPLAY)); // hide the (current) original and any tiled clones, we only want to pick the background original->invoke_hide(trace_visionkey); @@ -866,98 +867,46 @@ clonetiler_trace_setup (SPDocument *doc, gdouble zoom, SPItem *original) trace_zoom = zoom; } -static guint32 -clonetiler_trace_pick (Geom::Rect box) +static guint32 clonetiler_trace_pick(Geom::Rect box) { - if (!trace_arena) + if (!trace_drawing) { return 0; + } - Geom::Affine t(Geom::Scale(trace_zoom, trace_zoom)); - nr_arena_item_set_transform(trace_root, &t); - NRGC gc(NULL); - gc.transform.setIdentity(); - nr_arena_item_invoke_update( trace_root, NULL, &gc, - NR_ARENA_ITEM_STATE_ALL, - NR_ARENA_ITEM_STATE_NONE ); + trace_drawing->root()->setTransform(Geom::Scale(trace_zoom)); + trace_drawing->update(); /* Item integer bbox in points */ - NRRectL ibox; - ibox.x0 = (int) floor(trace_zoom * box[Geom::X].min() + 0.5); - ibox.y0 = (int) floor(trace_zoom * box[Geom::Y].min() + 0.5); - ibox.x1 = (int) floor(trace_zoom * box[Geom::X].max() + 0.5); - ibox.y1 = (int) floor(trace_zoom * box[Geom::Y].max() + 0.5); + Geom::IntRect ibox = (box * Geom::Scale(trace_zoom)).roundOutwards(); /* Find visible area */ - int width = ibox.x1 - ibox.x0; - int height = ibox.y1 - ibox.y0; - - /* Set up pixblock */ - guchar *px = g_new(guchar, 4 * width * height); - - if (px == NULL) { - return 0; // buffer is too big or too small, cannot pick, so return 0 - } - - memset(px, 0x00, 4 * width * height); - + cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, ibox.width(), ibox.height()); + Inkscape::DrawingContext ct(s, ibox.min()); /* Render */ - NRPixBlock pb; - nr_pixblock_setup_extern( &pb, NR_PIXBLOCK_MODE_R8G8B8A8N, - ibox.x0, ibox.y0, ibox.x1, ibox.y1, - px, 4 * width, FALSE, FALSE ); - nr_arena_item_invoke_render(NULL, trace_root, &ibox, &pb, - NR_ARENA_ITEM_RENDER_NO_CACHE ); - + trace_drawing->render(ct, ibox); double R = 0, G = 0, B = 0, A = 0; - double count = 0; - double weight = 0; - - for (int y = ibox.y0; y < ibox.y1; y++) { - const unsigned char *s = NR_PIXBLOCK_PX (&pb) + (y - ibox.y0) * pb.rs; - for (int x = ibox.x0; x < ibox.x1; x++) { - count += 1; - weight += s[3] / 255.0; - R += s[0] / 255.0; - G += s[1] / 255.0; - B += s[2] / 255.0; - A += s[3] / 255.0; - s += 4; - } - } - - nr_pixblock_release(&pb); - - R = R / weight; - G = G / weight; - B = B / weight; - A = A / count; - - R = CLAMP (R, 0.0, 1.0); - G = CLAMP (G, 0.0, 1.0); - B = CLAMP (B, 0.0, 1.0); - A = CLAMP (A, 0.0, 1.0); + ink_cairo_surface_average_color(s, R, G, B, A); + cairo_surface_destroy(s); return SP_RGBA32_F_COMPOSE (R, G, B, A); } -static void -clonetiler_trace_finish () +static void clonetiler_trace_finish() { if (trace_doc) { - SP_ITEM(trace_doc->getRoot())->invoke_hide(trace_visionkey); - } - if (trace_arena) { - ((NRObject *) trace_arena)->unreference(); - trace_arena = NULL; + trace_doc->getRoot()->invoke_hide(trace_visionkey); + delete trace_drawing; + trace_doc = NULL; + trace_drawing = NULL; } } -static void -clonetiler_unclump( GtkWidget */*widget*/, void * ) +static void clonetiler_unclump(GtkWidget */*widget*/, void *) { SPDesktop *desktop = SP_ACTIVE_DESKTOP; - if (desktop == NULL) + if (desktop == NULL) { return; + } Inkscape::Selection *selection = sp_desktop_selection(desktop); @@ -988,8 +937,7 @@ clonetiler_unclump( GtkWidget */*widget*/, void * ) _("Unclump tiled clones")); } -static guint -clonetiler_number_of_clones (SPObject *obj) +static guint clonetiler_number_of_clones(SPObject *obj) { SPObject *parent = obj->parent; @@ -1004,12 +952,12 @@ clonetiler_number_of_clones (SPObject *obj) return n; } -static void -clonetiler_remove( GtkWidget */*widget*/, void *, bool do_undo = true ) +static void clonetiler_remove(GtkWidget */*widget*/, void *, bool do_undo = true) { SPDesktop *desktop = SP_ACTIVE_DESKTOP; - if (desktop == NULL) + if (desktop == NULL) { return; + } Inkscape::Selection *selection = sp_desktop_selection(desktop); @@ -1042,8 +990,7 @@ clonetiler_remove( GtkWidget */*widget*/, void *, bool do_undo = true ) } } -static Geom::Rect -transform_rect( Geom::Rect const &r, Geom::Affine const &m) +static Geom::Rect transform_rect(Geom::Rect const &r, Geom::Affine const &m) { using Geom::X; using Geom::Y; @@ -1064,22 +1011,23 @@ transform_rect( Geom::Rect const &r, Geom::Affine const &m) Randomizes \a val by \a rand, with 0 < val < 1 and all values (including 0, 1) having the same probability of being displaced. */ -static double -randomize01 (double val, double rand) +static double randomize01(double val, double rand) { double base = MIN (val - rand, 1 - 2*rand); - if (base < 0) base = 0; + if (base < 0) { + base = 0; + } val = base + g_random_double_range (0, MIN (2 * rand, 1 - base)); return CLAMP(val, 0, 1); // this should be unnecessary with the above provisions, but just in case... } -static void -clonetiler_apply( GtkWidget */*widget*/, void * ) +static void clonetiler_apply(GtkWidget */*widget*/, void *) { SPDesktop *desktop = SP_ACTIVE_DESKTOP; - if (desktop == NULL) + if (desktop == NULL) { return; + } Inkscape::Preferences *prefs = Inkscape::Preferences::get(); Inkscape::Selection *selection = sp_desktop_selection(desktop); @@ -1105,6 +1053,7 @@ clonetiler_apply( GtkWidget */*widget*/, void * ) gdk_window_process_all_updates(); SPObject *obj = selection->singleItem(); + SPItem *item = SP_IS_ITEM(obj) ? SP_ITEM(obj) : 0; Inkscape::XML::Node *obj_repr = obj->getRepr(); const char *id_href = g_strdup_printf("#%s", obj_repr->attribute("id")); SPObject *parent = obj->parent; @@ -1194,7 +1143,7 @@ clonetiler_apply( GtkWidget */*widget*/, void * ) double gamma_picked = prefs->getDoubleLimited(prefs_path + "gamma_picked", 0, -10, 10); if (dotrace) { - clonetiler_trace_setup (sp_desktop_document(desktop), 1.0, SP_ITEM (obj)); + clonetiler_trace_setup (sp_desktop_document(desktop), 1.0, item); } Geom::Point center; @@ -1221,16 +1170,15 @@ clonetiler_apply( GtkWidget */*widget*/, void * ) y0 = sp_repr_get_double_attribute (obj_repr, "inkscape:tile-y0", 0); } else { bool prefs_bbox = prefs->getBool("/tools/bounding_box", false); - SPItem::BBoxType bbox_type = ( prefs_bbox ? - SPItem::APPROXIMATE_BBOX : SPItem::GEOMETRIC_BBOX ); - Geom::OptRect r = SP_ITEM(obj)->getBounds(SP_ITEM(obj)->i2doc_affine(), - bbox_type); + SPItem::BBoxType bbox_type = ( !prefs_bbox ? + SPItem::VISUAL_BBOX : SPItem::GEOMETRIC_BBOX ); + Geom::OptRect r = item->documentBounds(bbox_type); if (r) { w = r->dimensions()[Geom::X]; h = r->dimensions()[Geom::Y]; x0 = r->min()[Geom::X]; y0 = r->min()[Geom::Y]; - center = desktop->dt2doc(SP_ITEM(obj)->getCenter()); + center = desktop->dt2doc(item->getCenter()); sp_repr_set_svg_double(obj_repr, "inkscape:tile-cx", center[Geom::X]); sp_repr_set_svg_double(obj_repr, "inkscape:tile-cy", center[Geom::Y]); @@ -1429,11 +1377,11 @@ clonetiler_apply( GtkWidget */*widget*/, void * ) } if (opacity < 1e-6) { // invisibly transparent, skip - continue; + continue; } if (fabs(t[0]) + fabs (t[1]) + fabs(t[2]) + fabs(t[3]) < 1e-6) { // too small, skip - continue; + continue; } // Create the clone @@ -1446,7 +1394,7 @@ clonetiler_apply( GtkWidget */*widget*/, void * ) Geom::Point new_center; bool center_set = false; if (obj_repr->attribute("inkscape:transform-center-x") || obj_repr->attribute("inkscape:transform-center-y")) { - new_center = desktop->dt2doc(SP_ITEM(obj)->getCenter()) * t; + new_center = desktop->dt2doc(item->getCenter()) * t; center_set = true; } @@ -1506,8 +1454,7 @@ clonetiler_apply( GtkWidget */*widget*/, void * ) _("Create tiled clones")); } -static GtkWidget * -clonetiler_new_tab (GtkWidget *nb, const gchar *label) +static GtkWidget * clonetiler_new_tab(GtkWidget *nb, const gchar *label) { GtkWidget *l = gtk_label_new_with_mnemonic (label); GtkWidget *vb = gtk_vbox_new (FALSE, VB_MARGIN); @@ -1516,76 +1463,75 @@ clonetiler_new_tab (GtkWidget *nb, const gchar *label) return vb; } -static void -clonetiler_checkbox_toggled (GtkToggleButton *tb, gpointer *data) +static void clonetiler_checkbox_toggled(GtkToggleButton *tb, gpointer *data) { const gchar *attr = (const gchar *) data; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setBool(prefs_path + attr, gtk_toggle_button_get_active(tb)); } -static GtkWidget * -clonetiler_checkbox (GtkTooltips *tt, const char *tip, const char *attr) +static GtkWidget * clonetiler_checkbox(const char *tip, const char *attr) { GtkWidget *hb = gtk_hbox_new(FALSE, VB_MARGIN); GtkWidget *b = gtk_check_button_new (); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, tip, NULL); + gtk_widget_set_tooltip_text (b, tip); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); bool value = prefs->getBool(prefs_path + attr); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(b), value); gtk_box_pack_end (GTK_BOX (hb), b, FALSE, TRUE, 0); - gtk_signal_connect ( GTK_OBJECT (b), "clicked", - GTK_SIGNAL_FUNC (clonetiler_checkbox_toggled), (gpointer) attr); + g_signal_connect ( G_OBJECT (b), "clicked", + G_CALLBACK (clonetiler_checkbox_toggled), (gpointer) attr); g_object_set_data (G_OBJECT(b), "uncheckable", GINT_TO_POINTER(TRUE)); return hb; } - -static void -clonetiler_value_changed (GtkAdjustment *adj, gpointer data) +static void clonetiler_value_changed(GtkAdjustment *adj, gpointer data) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); const gchar *pref = (const gchar *) data; prefs->setDouble(prefs_path + pref, adj->value); } -static GtkWidget * -clonetiler_spinbox (GtkTooltips *tt, const char *tip, const char *attr, double lower, double upper, const gchar *suffix, bool exponent = false) +static GtkWidget * clonetiler_spinbox(const char *tip, const char *attr, double lower, double upper, const gchar *suffix, bool exponent = false) { GtkWidget *hb = gtk_hbox_new(FALSE, 0); { GtkObject *a; - if (exponent) - a = gtk_adjustment_new(1.0, lower, upper, 0.01, 0.05, 0.1); - else - a = gtk_adjustment_new(0.0, lower, upper, 0.1, 0.5, 2); + if (exponent) { + a = gtk_adjustment_new(1.0, lower, upper, 0.01, 0.05, 0); + } else { + a = gtk_adjustment_new(0.0, lower, upper, 0.1, 0.5, 0); + } GtkWidget *sb; - if (exponent) + if (exponent) { sb = gtk_spin_button_new (GTK_ADJUSTMENT (a), 0.01, 2); - else + } else { sb = gtk_spin_button_new (GTK_ADJUSTMENT (a), 0.1, 1); + } - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), sb, tip, NULL); - gtk_entry_set_width_chars (GTK_ENTRY (sb), 4); + gtk_widget_set_tooltip_text (sb, tip); + gtk_entry_set_width_chars (GTK_ENTRY (sb), 5); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(sb), 3); gtk_box_pack_start (GTK_BOX (hb), sb, FALSE, FALSE, SB_MARGIN); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); double value = prefs->getDoubleLimited(prefs_path + attr, exponent? 1.0 : 0.0, lower, upper); gtk_adjustment_set_value (GTK_ADJUSTMENT (a), value); - gtk_signal_connect(GTK_OBJECT(a), "value_changed", - GTK_SIGNAL_FUNC(clonetiler_value_changed), (gpointer) attr); + g_signal_connect(G_OBJECT(a), "value_changed", + G_CALLBACK(clonetiler_value_changed), (gpointer) attr); - if (exponent) + if (exponent) { g_object_set_data (G_OBJECT(sb), "oneable", GINT_TO_POINTER(TRUE)); - else + } else { g_object_set_data (G_OBJECT(sb), "zeroable", GINT_TO_POINTER(TRUE)); + } } { @@ -1598,31 +1544,27 @@ clonetiler_spinbox (GtkTooltips *tt, const char *tip, const char *attr, double l return hb; } -static void -clonetiler_symgroup_changed( GtkMenuItem */*item*/, gpointer data ) +static void clonetiler_symgroup_changed(GtkComboBox *cb, gpointer /*data*/) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - gint group_new = GPOINTER_TO_INT (data); + gint group_new = gtk_combo_box_get_active (cb); prefs->setInt(prefs_path + "symmetrygroup", group_new); } -static void -clonetiler_xy_changed (GtkAdjustment *adj, gpointer data) +static void clonetiler_xy_changed(GtkAdjustment *adj, gpointer data) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); const gchar *pref = (const gchar *) data; prefs->setInt(prefs_path + pref, (int) floor(adj->value + 0.5)); } -static void -clonetiler_keep_bbox_toggled( GtkToggleButton *tb, gpointer /*data*/ ) +static void clonetiler_keep_bbox_toggled(GtkToggleButton *tb, gpointer /*data*/) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setBool(prefs_path + "keepbbox", gtk_toggle_button_get_active(tb)); } -static void -clonetiler_pick_to (GtkToggleButton *tb, gpointer data) +static void clonetiler_pick_to(GtkToggleButton *tb, gpointer data) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); const gchar *pref = (const gchar *) data; @@ -1630,26 +1572,25 @@ clonetiler_pick_to (GtkToggleButton *tb, gpointer data) } -static void -clonetiler_reset_recursive (GtkWidget *w) +static void clonetiler_reset_recursive(GtkWidget *w) { if (w && GTK_IS_OBJECT(w)) { { - int r = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT(w), "zeroable")); + int r = GPOINTER_TO_INT (g_object_get_data(G_OBJECT(w), "zeroable")); if (r && GTK_IS_SPIN_BUTTON(w)) { // spinbutton GtkAdjustment *a = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON(w)); gtk_adjustment_set_value (a, 0); } } { - int r = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT(w), "oneable")); + int r = GPOINTER_TO_INT (g_object_get_data(G_OBJECT(w), "oneable")); if (r && GTK_IS_SPIN_BUTTON(w)) { // spinbutton GtkAdjustment *a = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON(w)); gtk_adjustment_set_value (a, 1); } } { - int r = GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT(w), "uncheckable")); + int r = GPOINTER_TO_INT (g_object_get_data(G_OBJECT(w), "uncheckable")); if (r && GTK_IS_TOGGLE_BUTTON(w)) { // checkbox gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(w), FALSE); } @@ -1665,22 +1606,19 @@ clonetiler_reset_recursive (GtkWidget *w) } } -static void -clonetiler_reset( GtkWidget */*widget*/, void * ) +static void clonetiler_reset(GtkWidget */*widget*/, void *) { clonetiler_reset_recursive (dlg); } -static void -clonetiler_table_attach (GtkWidget *table, GtkWidget *widget, float align, int row, int col) +static void clonetiler_table_attach(GtkWidget *table, GtkWidget *widget, float align, int row, int col) { GtkWidget *a = gtk_alignment_new (align, 0, 0, 0); gtk_container_add(GTK_CONTAINER(a), widget); gtk_table_attach ( GTK_TABLE (table), a, col, col + 1, row, row + 1, (GtkAttachOptions)4, (GtkAttachOptions)0, 0, 0 ); } -static GtkWidget * -clonetiler_table_x_y_rand (int values) +static GtkWidget * clonetiler_table_x_y_rand(int values) { GtkWidget *table = gtk_table_new (values + 2, 5, FALSE); gtk_container_set_border_width (GTK_CONTAINER (table), VB_MARGIN); @@ -1690,7 +1628,7 @@ clonetiler_table_x_y_rand (int values) { GtkWidget *hb = gtk_hbox_new (FALSE, 0); - GtkWidget *i = sp_icon_new (Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON_OBJECT_ROWS); + GtkWidget *i = sp_icon_new (Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON("object-rows")); gtk_box_pack_start (GTK_BOX (hb), i, FALSE, FALSE, 2); GtkWidget *l = gtk_label_new (""); @@ -1703,7 +1641,7 @@ clonetiler_table_x_y_rand (int values) { GtkWidget *hb = gtk_hbox_new (FALSE, 0); - GtkWidget *i = sp_icon_new (Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON_OBJECT_COLUMNS); + GtkWidget *i = sp_icon_new (Inkscape::ICON_SIZE_DECORATION, INKSCAPE_ICON("object-columns")); gtk_box_pack_start (GTK_BOX (hb), i, FALSE, FALSE, 2); GtkWidget *l = gtk_label_new (""); @@ -1722,8 +1660,7 @@ clonetiler_table_x_y_rand (int values) return table; } -static void -clonetiler_pick_switched( GtkToggleButton */*tb*/, gpointer data ) +static void clonetiler_pick_switched(GtkToggleButton */*tb*/, gpointer data) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); guint v = GPOINTER_TO_INT (data); @@ -1731,8 +1668,7 @@ clonetiler_pick_switched( GtkToggleButton */*tb*/, gpointer data ) } -static void -clonetiler_switch_to_create( GtkToggleButton */*tb*/, GtkWidget *dlg ) +static void clonetiler_switch_to_create(GtkToggleButton */*tb*/, GtkWidget *dlg) { GtkWidget *rowscols = (GtkWidget *) g_object_get_data (G_OBJECT(dlg), "rowscols"); GtkWidget *widthheight = (GtkWidget *) g_object_get_data (G_OBJECT(dlg), "widthheight"); @@ -1749,8 +1685,7 @@ clonetiler_switch_to_create( GtkToggleButton */*tb*/, GtkWidget *dlg ) } -static void -clonetiler_switch_to_fill( GtkToggleButton */*tb*/, GtkWidget *dlg ) +static void clonetiler_switch_to_fill(GtkToggleButton */*tb*/, GtkWidget *dlg) { GtkWidget *rowscols = (GtkWidget *) g_object_get_data (G_OBJECT(dlg), "rowscols"); GtkWidget *widthheight = (GtkWidget *) g_object_get_data (G_OBJECT(dlg), "widthheight"); @@ -1769,8 +1704,7 @@ clonetiler_switch_to_fill( GtkToggleButton */*tb*/, GtkWidget *dlg ) -static void -clonetiler_fill_width_changed (GtkAdjustment *adj, GtkWidget *u) +static void clonetiler_fill_width_changed(GtkAdjustment *adj, GtkWidget *u) { gdouble const raw_dist = adj->value; SPUnit const &unit = *sp_unit_selector_get_unit(SP_UNIT_SELECTOR(u)); @@ -1780,8 +1714,7 @@ clonetiler_fill_width_changed (GtkAdjustment *adj, GtkWidget *u) prefs->setDouble(prefs_path + "fillwidth", pixels); } -static void -clonetiler_fill_height_changed (GtkAdjustment *adj, GtkWidget *u) +static void clonetiler_fill_height_changed(GtkAdjustment *adj, GtkWidget *u) { gdouble const raw_dist = adj->value; SPUnit const &unit = *sp_unit_selector_get_unit(SP_UNIT_SELECTOR(u)); @@ -1792,23 +1725,22 @@ clonetiler_fill_height_changed (GtkAdjustment *adj, GtkWidget *u) } -static void -clonetiler_do_pick_toggled( GtkToggleButton *tb, gpointer /*data*/ ) +static void clonetiler_do_pick_toggled(GtkToggleButton *tb, gpointer /*data*/) { GtkWidget *vvb = (GtkWidget *) g_object_get_data (G_OBJECT(dlg), "dotrace"); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setBool(prefs_path + "dotrace", gtk_toggle_button_get_active (tb)); - if (vvb) + if (vvb) { gtk_widget_set_sensitive (vvb, gtk_toggle_button_get_active (tb)); + } } -void -clonetiler_dialog (void) +void clonetiler_dialog(void) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (!dlg) @@ -1846,18 +1778,16 @@ clonetiler_dialog (void) wd.stop = 0; - gtk_signal_connect ( GTK_OBJECT (dlg), "event", GTK_SIGNAL_FUNC (sp_dialog_event_handler), dlg); + g_signal_connect ( G_OBJECT (dlg), "event", G_CALLBACK (sp_dialog_event_handler), dlg); - gtk_signal_connect ( GTK_OBJECT (dlg), "destroy", G_CALLBACK (clonetiler_dialog_destroy), dlg); - gtk_signal_connect ( GTK_OBJECT (dlg), "delete_event", G_CALLBACK (clonetiler_dialog_delete), dlg); + g_signal_connect ( G_OBJECT (dlg), "destroy", G_CALLBACK (clonetiler_dialog_destroy), dlg); + g_signal_connect ( G_OBJECT (dlg), "delete_event", G_CALLBACK (clonetiler_dialog_delete), dlg); g_signal_connect ( G_OBJECT (INKSCAPE), "shut_down", G_CALLBACK (clonetiler_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); g_signal_connect ( G_OBJECT (INKSCAPE), "activate_desktop", G_CALLBACK (sp_transientize_callback), &wd); - GtkTooltips *tt = gtk_tooltips_new(); - GtkWidget *mainbox = gtk_vbox_new(FALSE, 4); gtk_container_set_border_width (GTK_CONTAINER (mainbox), 6); gtk_container_add (GTK_CONTAINER (dlg), mainbox); @@ -1870,20 +1800,13 @@ clonetiler_dialog (void) { GtkWidget *vb = clonetiler_new_tab (nb, _("_Symmetry")); - GtkWidget *om = gtk_option_menu_new (); - /* TRANSLATORS: For the following 17 symmetry groups, see + /* TRANSLATORS: For the following 17 symmetry groups, see * http://www.bib.ulb.ac.be/coursmath/doc/17.htm (visual examples); * http://www.clarku.edu/~djoyce/wallpaper/seventeen.html (English vocabulary); or * http://membres.lycos.fr/villemingerard/Geometri/Sym1D.htm (French vocabulary). */ - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), om, _("Select one of the 17 symmetry groups for the tiling"), NULL); - gtk_box_pack_start (GTK_BOX (vb), om, FALSE, FALSE, SB_MARGIN); - - GtkWidget *m = gtk_menu_new (); - int current = prefs->getInt(prefs_path + "symmetrygroup", 0); - struct SymGroups { - int group; + gint group; gchar const *label; } const sym_groups[] = { // TRANSLATORS: "translation" means "shift" / "displacement" here. @@ -1908,25 +1831,40 @@ clonetiler_dialog (void) {TILE_P6M, _("<b>P6M</b>: reflection + 60° rotation")}, }; - for (unsigned j = 0; j < G_N_ELEMENTS(sym_groups); ++j) { + gint current = prefs->getInt(prefs_path + "symmetrygroup", 0); + + // Create a list structure containing all the data to be displayed in + // the symmetry group combo box. + GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING); + GtkTreeIter iter; + + for (unsigned j = 0; j < G_N_ELEMENTS(sym_groups); ++j) { SymGroups const &sg = sym_groups[j]; - GtkWidget *l = gtk_label_new (""); - gtk_label_set_markup (GTK_LABEL(l), sg.label); - gtk_misc_set_alignment (GTK_MISC(l), 0, 0.5); + // Add the description of the symgroup to a new row + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, sg.label, + -1); + } - GtkWidget *item = gtk_menu_item_new (); - gtk_container_add (GTK_CONTAINER (item), l); + // Add a new combo box widget with the list of symmetry groups to the vbox + GtkWidget *combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store)); + gtk_widget_set_tooltip_text (combo, _("Select one of the 17 symmetry groups for the tiling")); + gtk_box_pack_start (GTK_BOX (vb), combo, FALSE, FALSE, SB_MARGIN); - gtk_signal_connect ( GTK_OBJECT (item), "activate", - GTK_SIGNAL_FUNC (clonetiler_symgroup_changed), - GINT_TO_POINTER (sg.group) ); + // Specify the rendering of data from the list in a combo box cell + GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, FALSE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer, + "markup", 0, + NULL); - gtk_menu_append (GTK_MENU (m), item); - } + gtk_combo_box_set_active (GTK_COMBO_BOX (combo), current); - gtk_option_menu_set_menu (GTK_OPTION_MENU (om), m); - gtk_option_menu_set_history ( GTK_OPTION_MENU (om), current); + g_signal_connect (G_OBJECT (combo), "changed", + G_CALLBACK (clonetiler_symgroup_changed), + NULL); } table_row_labels = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); @@ -1949,7 +1887,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Horizontal shift per row (in % of tile width)"), "shiftx_per_j", -10000, 10000, "%"); @@ -1957,7 +1895,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Horizontal shift per column (in % of tile width)"), "shiftx_per_i", -10000, 10000, "%"); @@ -1965,8 +1903,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the horizontal shift by this percentage"), "shiftx_rand", + GtkWidget *l = clonetiler_spinbox (_("Randomize the horizontal shift by this percentage"), "shiftx_rand", 0, 1000, "%"); clonetiler_table_attach (table, l, 0, 2, 4); } @@ -1982,7 +1919,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Vertical shift per row (in % of tile height)"), "shifty_per_j", -10000, 10000, "%"); @@ -1990,7 +1927,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Vertical shift per column (in % of tile height)"), "shifty_per_i", -10000, 10000, "%"); @@ -1998,7 +1935,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( _("Randomize the vertical shift by this percentage"), "shifty_rand", 0, 1000, "%"); clonetiler_table_attach (table, l, 0, 3, 4); @@ -2013,14 +1950,14 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( _("Whether rows are spaced evenly (1), converge (<1) or diverge (>1)"), "shifty_exp", 0, 10, "", true); clonetiler_table_attach (table, l, 0, 4, 2); } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( _("Whether columns are spaced evenly (1), converge (<1) or diverge (>1)"), "shiftx_exp", 0, 10, "", true); clonetiler_table_attach (table, l, 0, 4, 3); @@ -2035,12 +1972,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of shifts for each row"), "shifty_alternate"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of shifts for each row"), "shifty_alternate"); clonetiler_table_attach (table, l, 0, 5, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of shifts for each column"), "shiftx_alternate"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of shifts for each column"), "shiftx_alternate"); clonetiler_table_attach (table, l, 0, 5, 3); } @@ -2053,12 +1990,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Cumulate the shifts for each row"), "shifty_cumulate"); + GtkWidget *l = clonetiler_checkbox (_("Cumulate the shifts for each row"), "shifty_cumulate"); clonetiler_table_attach (table, l, 0, 6, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Cumulate the shifts for each column"), "shiftx_cumulate"); + GtkWidget *l = clonetiler_checkbox (_("Cumulate the shifts for each column"), "shiftx_cumulate"); clonetiler_table_attach (table, l, 0, 6, 3); } @@ -2071,12 +2008,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Exclude tile height in shift"), "shifty_excludeh"); + GtkWidget *l = clonetiler_checkbox (_("Exclude tile height in shift"), "shifty_excludeh"); clonetiler_table_attach (table, l, 0, 7, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Exclude tile width in shift"), "shiftx_excludew"); + GtkWidget *l = clonetiler_checkbox (_("Exclude tile width in shift"), "shiftx_excludew"); clonetiler_table_attach (table, l, 0, 7, 3); } @@ -2099,7 +2036,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Horizontal scale per row (in % of tile width)"), "scalex_per_j", -100, 1000, "%"); @@ -2107,7 +2044,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Horizontal scale per column (in % of tile width)"), "scalex_per_i", -100, 1000, "%"); @@ -2115,8 +2052,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the horizontal scale by this percentage"), "scalex_rand", + GtkWidget *l = clonetiler_spinbox (_("Randomize the horizontal scale by this percentage"), "scalex_rand", 0, 1000, "%"); clonetiler_table_attach (table, l, 0, 2, 4); } @@ -2130,7 +2066,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Vertical scale per row (in % of tile height)"), "scaley_per_j", -100, 1000, "%"); @@ -2138,7 +2074,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Vertical scale per column (in % of tile height)"), "scaley_per_i", -100, 1000, "%"); @@ -2146,8 +2082,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the vertical scale by this percentage"), "scaley_rand", + GtkWidget *l = clonetiler_spinbox (_("Randomize the vertical scale by this percentage"), "scaley_rand", 0, 1000, "%"); clonetiler_table_attach (table, l, 0, 3, 4); } @@ -2161,15 +2096,13 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Whether row scaling is uniform (1), converge (<1) or diverge (>1)"), "scaley_exp", + GtkWidget *l = clonetiler_spinbox (_("Whether row scaling is uniform (1), converge (<1) or diverge (>1)"), "scaley_exp", 0, 10, "", true); clonetiler_table_attach (table, l, 0, 4, 2); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Whether column scaling is uniform (1), converge (<1) or diverge (>1)"), "scalex_exp", + GtkWidget *l = clonetiler_spinbox (_("Whether column scaling is uniform (1), converge (<1) or diverge (>1)"), "scalex_exp", 0, 10, "", true); clonetiler_table_attach (table, l, 0, 4, 3); } @@ -2183,15 +2116,13 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)"), "scaley_log", + GtkWidget *l = clonetiler_spinbox (_("Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)"), "scaley_log", 0, 10, "", false); clonetiler_table_attach (table, l, 0, 5, 2); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)"), "scalex_log", + GtkWidget *l = clonetiler_spinbox (_("Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)"), "scalex_log", 0, 10, "", false); clonetiler_table_attach (table, l, 0, 5, 3); } @@ -2205,12 +2136,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of scales for each row"), "scaley_alternate"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of scales for each row"), "scaley_alternate"); clonetiler_table_attach (table, l, 0, 6, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of scales for each column"), "scalex_alternate"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of scales for each column"), "scalex_alternate"); clonetiler_table_attach (table, l, 0, 6, 3); } @@ -2223,12 +2154,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Cumulate the scales for each row"), "scaley_cumulate"); + GtkWidget *l = clonetiler_checkbox (_("Cumulate the scales for each row"), "scaley_cumulate"); clonetiler_table_attach (table, l, 0, 7, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Cumulate the scales for each column"), "scalex_cumulate"); + GtkWidget *l = clonetiler_checkbox (_("Cumulate the scales for each column"), "scalex_cumulate"); clonetiler_table_attach (table, l, 0, 7, 3); } @@ -2251,7 +2182,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Rotate tiles by this angle for each row"), "rotate_per_j", -180, 180, "°"); @@ -2259,7 +2190,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, + GtkWidget *l = clonetiler_spinbox ( // xgettext:no-c-format _("Rotate tiles by this angle for each column"), "rotate_per_i", -180, 180, "°"); @@ -2267,8 +2198,7 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the rotation angle by this percentage"), "rotate_rand", + GtkWidget *l = clonetiler_spinbox (_("Randomize the rotation angle by this percentage"), "rotate_rand", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 2, 4); } @@ -2282,12 +2212,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the rotation direction for each row"), "rotate_alternatej"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the rotation direction for each row"), "rotate_alternatej"); clonetiler_table_attach (table, l, 0, 3, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the rotation direction for each column"), "rotate_alternatei"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the rotation direction for each column"), "rotate_alternatei"); clonetiler_table_attach (table, l, 0, 3, 3); } @@ -2300,12 +2230,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Cumulate the rotation for each row"), "rotate_cumulatej"); + GtkWidget *l = clonetiler_checkbox (_("Cumulate the rotation for each row"), "rotate_cumulatej"); clonetiler_table_attach (table, l, 0, 4, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Cumulate the rotation for each column"), "rotate_cumulatei"); + GtkWidget *l = clonetiler_checkbox (_("Cumulate the rotation for each column"), "rotate_cumulatei"); clonetiler_table_attach (table, l, 0, 4, 3); } @@ -2329,22 +2259,19 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Blur tiles by this percentage for each row"), "blur_per_j", + GtkWidget *l = clonetiler_spinbox (_("Blur tiles by this percentage for each row"), "blur_per_j", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 2, 2); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Blur tiles by this percentage for each column"), "blur_per_i", + GtkWidget *l = clonetiler_spinbox (_("Blur tiles by this percentage for each column"), "blur_per_i", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 2, 3); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the tile blur by this percentage"), "blur_rand", + GtkWidget *l = clonetiler_spinbox (_("Randomize the tile blur by this percentage"), "blur_rand", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 2, 4); } @@ -2358,12 +2285,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of blur change for each row"), "blur_alternatej"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of blur change for each row"), "blur_alternatej"); clonetiler_table_attach (table, l, 0, 3, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of blur change for each column"), "blur_alternatei"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of blur change for each column"), "blur_alternatei"); clonetiler_table_attach (table, l, 0, 3, 3); } @@ -2378,22 +2305,19 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Decrease tile opacity by this percentage for each row"), "opacity_per_j", + GtkWidget *l = clonetiler_spinbox (_("Decrease tile opacity by this percentage for each row"), "opacity_per_j", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 4, 2); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Decrease tile opacity by this percentage for each column"), "opacity_per_i", + GtkWidget *l = clonetiler_spinbox (_("Decrease tile opacity by this percentage for each column"), "opacity_per_i", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 4, 3); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the tile opacity by this percentage"), "opacity_rand", + GtkWidget *l = clonetiler_spinbox (_("Randomize the tile opacity by this percentage"), "opacity_rand", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 4, 4); } @@ -2407,12 +2331,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of opacity change for each row"), "opacity_alternatej"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of opacity change for each row"), "opacity_alternatej"); clonetiler_table_attach (table, l, 0, 5, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of opacity change for each column"), "opacity_alternatei"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of opacity change for each column"), "opacity_alternatei"); clonetiler_table_attach (table, l, 0, 5, 3); } } @@ -2450,22 +2374,19 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Change the tile hue by this percentage for each row"), "hue_per_j", + GtkWidget *l = clonetiler_spinbox (_("Change the tile hue by this percentage for each row"), "hue_per_j", -100, 100, "%"); clonetiler_table_attach (table, l, 0, 2, 2); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Change the tile hue by this percentage for each column"), "hue_per_i", + GtkWidget *l = clonetiler_spinbox (_("Change the tile hue by this percentage for each column"), "hue_per_i", -100, 100, "%"); clonetiler_table_attach (table, l, 0, 2, 3); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the tile hue by this percentage"), "hue_rand", + GtkWidget *l = clonetiler_spinbox (_("Randomize the tile hue by this percentage"), "hue_rand", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 2, 4); } @@ -2480,22 +2401,19 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Change the color saturation by this percentage for each row"), "saturation_per_j", + GtkWidget *l = clonetiler_spinbox (_("Change the color saturation by this percentage for each row"), "saturation_per_j", -100, 100, "%"); clonetiler_table_attach (table, l, 0, 3, 2); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Change the color saturation by this percentage for each column"), "saturation_per_i", + GtkWidget *l = clonetiler_spinbox (_("Change the color saturation by this percentage for each column"), "saturation_per_i", -100, 100, "%"); clonetiler_table_attach (table, l, 0, 3, 3); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the color saturation by this percentage"), "saturation_rand", + GtkWidget *l = clonetiler_spinbox (_("Randomize the color saturation by this percentage"), "saturation_rand", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 3, 4); } @@ -2509,22 +2427,19 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Change the color lightness by this percentage for each row"), "lightness_per_j", + GtkWidget *l = clonetiler_spinbox (_("Change the color lightness by this percentage for each row"), "lightness_per_j", -100, 100, "%"); clonetiler_table_attach (table, l, 0, 4, 2); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Change the color lightness by this percentage for each column"), "lightness_per_i", + GtkWidget *l = clonetiler_spinbox (_("Change the color lightness by this percentage for each column"), "lightness_per_i", -100, 100, "%"); clonetiler_table_attach (table, l, 0, 4, 3); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the color lightness by this percentage"), "lightness_rand", + GtkWidget *l = clonetiler_spinbox (_("Randomize the color lightness by this percentage"), "lightness_rand", 0, 100, "%"); clonetiler_table_attach (table, l, 0, 4, 4); } @@ -2538,12 +2453,12 @@ clonetiler_dialog (void) } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of color changes for each row"), "color_alternatej"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of color changes for each row"), "color_alternatej"); clonetiler_table_attach (table, l, 0, 5, 2); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Alternate the sign of color changes for each column"), "color_alternatei"); + GtkWidget *l = clonetiler_checkbox (_("Alternate the sign of color changes for each column"), "color_alternatei"); clonetiler_table_attach (table, l, 0, 5, 3); } @@ -2562,11 +2477,11 @@ clonetiler_dialog (void) g_object_set_data (G_OBJECT(b), "uncheckable", GINT_TO_POINTER(TRUE)); bool old = prefs->getBool(prefs_path + "dotrace"); gtk_toggle_button_set_active ((GtkToggleButton *) b, old); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("For each clone, pick a value from the drawing in that clone's location and apply it to the clone"), NULL); + gtk_widget_set_tooltip_text (b, _("For each clone, pick a value from the drawing in that clone's location and apply it to the clone")); gtk_box_pack_start (GTK_BOX (hb), b, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(b), "toggled", - GTK_SIGNAL_FUNC(clonetiler_do_pick_toggled), dlg); + g_signal_connect(G_OBJECT(b), "toggled", + G_CALLBACK(clonetiler_do_pick_toggled), dlg); } { @@ -2588,66 +2503,66 @@ clonetiler_dialog (void) GtkWidget* radio; { radio = gtk_radio_button_new_with_label (NULL, _("Color")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Pick the visible color and opacity"), NULL); + gtk_widget_set_tooltip_text (radio, _("Pick the visible color and opacity")); clonetiler_table_attach (table, radio, 0.0, 1, 1); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", - GTK_SIGNAL_FUNC (clonetiler_pick_switched), GINT_TO_POINTER(PICK_COLOR)); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (clonetiler_pick_switched), GINT_TO_POINTER(PICK_COLOR)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_COLOR); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("Opacity")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Pick the total accumulated opacity"), NULL); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("Opacity")); + gtk_widget_set_tooltip_text (radio, _("Pick the total accumulated opacity")); clonetiler_table_attach (table, radio, 0.0, 2, 1); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", - GTK_SIGNAL_FUNC (clonetiler_pick_switched), GINT_TO_POINTER(PICK_OPACITY)); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (clonetiler_pick_switched), GINT_TO_POINTER(PICK_OPACITY)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_OPACITY); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("R")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Pick the Red component of the color"), NULL); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("R")); + gtk_widget_set_tooltip_text (radio, _("Pick the Red component of the color")); clonetiler_table_attach (table, radio, 0.0, 1, 2); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", - GTK_SIGNAL_FUNC (clonetiler_pick_switched), GINT_TO_POINTER(PICK_R)); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (clonetiler_pick_switched), GINT_TO_POINTER(PICK_R)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_R); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("G")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Pick the Green component of the color"), NULL); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("G")); + gtk_widget_set_tooltip_text (radio, _("Pick the Green component of the color")); clonetiler_table_attach (table, radio, 0.0, 2, 2); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", - GTK_SIGNAL_FUNC (clonetiler_pick_switched), GINT_TO_POINTER(PICK_G)); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (clonetiler_pick_switched), GINT_TO_POINTER(PICK_G)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_G); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("B")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Pick the Blue component of the color"), NULL); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("B")); + gtk_widget_set_tooltip_text (radio, _("Pick the Blue component of the color")); clonetiler_table_attach (table, radio, 0.0, 3, 2); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", - GTK_SIGNAL_FUNC (clonetiler_pick_switched), GINT_TO_POINTER(PICK_B)); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (clonetiler_pick_switched), GINT_TO_POINTER(PICK_B)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_B); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color hue", "H")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Pick the hue of the color"), NULL); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color hue", "H")); + gtk_widget_set_tooltip_text (radio, _("Pick the hue of the color")); clonetiler_table_attach (table, radio, 0.0, 1, 3); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", - GTK_SIGNAL_FUNC (clonetiler_pick_switched), GINT_TO_POINTER(PICK_H)); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (clonetiler_pick_switched), GINT_TO_POINTER(PICK_H)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_H); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color saturation", "S")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Pick the saturation of the color"), NULL); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color saturation", "S")); + gtk_widget_set_tooltip_text (radio, _("Pick the saturation of the color")); clonetiler_table_attach (table, radio, 0.0, 2, 3); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", - GTK_SIGNAL_FUNC (clonetiler_pick_switched), GINT_TO_POINTER(PICK_S)); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (clonetiler_pick_switched), GINT_TO_POINTER(PICK_S)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_S); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color lightness", "L")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Pick the lightness of the color"), NULL); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), C_("Clonetiler color lightness", "L")); + gtk_widget_set_tooltip_text (radio, _("Pick the lightness of the color")); clonetiler_table_attach (table, radio, 0.0, 3, 3); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", - GTK_SIGNAL_FUNC (clonetiler_pick_switched), GINT_TO_POINTER(PICK_L)); + g_signal_connect (G_OBJECT (radio), "toggled", + G_CALLBACK (clonetiler_pick_switched), GINT_TO_POINTER(PICK_L)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), prefs->getInt(prefs_path + "pick", 0) == PICK_L); } @@ -2668,8 +2583,7 @@ clonetiler_dialog (void) clonetiler_table_attach (table, l, 1.0, 1, 1); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Shift the mid-range of the picked value upwards (>0) or downwards (<0)"), "gamma_picked", + GtkWidget *l = clonetiler_spinbox (_("Shift the mid-range of the picked value upwards (>0) or downwards (<0)"), "gamma_picked", -10, 10, ""); clonetiler_table_attach (table, l, 0.0, 1, 2); } @@ -2680,8 +2594,7 @@ clonetiler_dialog (void) clonetiler_table_attach (table, l, 1.0, 1, 3); } { - GtkWidget *l = clonetiler_spinbox (tt, - _("Randomize the picked value by this percentage"), "rand_picked", + GtkWidget *l = clonetiler_spinbox (_("Randomize the picked value by this percentage"), "rand_picked", 0, 100, "%"); clonetiler_table_attach (table, l, 0.0, 1, 4); } @@ -2692,7 +2605,7 @@ clonetiler_dialog (void) clonetiler_table_attach (table, l, 1.0, 2, 1); } { - GtkWidget *l = clonetiler_checkbox (tt, _("Invert the picked value"), "invert_picked"); + GtkWidget *l = clonetiler_checkbox (_("Invert the picked value"), "invert_picked"); clonetiler_table_attach (table, l, 0.0, 2, 2); } } @@ -2711,40 +2624,40 @@ clonetiler_dialog (void) GtkWidget *b = gtk_check_button_new_with_label (_("Presence")); bool old = prefs->getBool(prefs_path + "pick_to_presence", true); gtk_toggle_button_set_active ((GtkToggleButton *) b, old); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("Each clone is created with the probability determined by the picked value in that point"), NULL); + gtk_widget_set_tooltip_text (b, _("Each clone is created with the probability determined by the picked value in that point")); clonetiler_table_attach (table, b, 0.0, 1, 1); - gtk_signal_connect(GTK_OBJECT(b), "toggled", - GTK_SIGNAL_FUNC(clonetiler_pick_to), (gpointer) "pick_to_presence"); + g_signal_connect(G_OBJECT(b), "toggled", + G_CALLBACK(clonetiler_pick_to), (gpointer) "pick_to_presence"); } { GtkWidget *b = gtk_check_button_new_with_label (_("Size")); bool old = prefs->getBool(prefs_path + "pick_to_size"); gtk_toggle_button_set_active ((GtkToggleButton *) b, old); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("Each clone's size is determined by the picked value in that point"), NULL); + gtk_widget_set_tooltip_text (b, _("Each clone's size is determined by the picked value in that point")); clonetiler_table_attach (table, b, 0.0, 2, 1); - gtk_signal_connect(GTK_OBJECT(b), "toggled", - GTK_SIGNAL_FUNC(clonetiler_pick_to), (gpointer) "pick_to_size"); + g_signal_connect(G_OBJECT(b), "toggled", + G_CALLBACK(clonetiler_pick_to), (gpointer) "pick_to_size"); } { GtkWidget *b = gtk_check_button_new_with_label (_("Color")); bool old = prefs->getBool(prefs_path + "pick_to_color", 0); gtk_toggle_button_set_active ((GtkToggleButton *) b, old); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("Each clone is painted by the picked color (the original must have unset fill or stroke)"), NULL); + gtk_widget_set_tooltip_text (b, _("Each clone is painted by the picked color (the original must have unset fill or stroke)")); clonetiler_table_attach (table, b, 0.0, 1, 2); - gtk_signal_connect(GTK_OBJECT(b), "toggled", - GTK_SIGNAL_FUNC(clonetiler_pick_to), (gpointer) "pick_to_color"); + g_signal_connect(G_OBJECT(b), "toggled", + G_CALLBACK(clonetiler_pick_to), (gpointer) "pick_to_color"); } { GtkWidget *b = gtk_check_button_new_with_label (_("Opacity")); bool old = prefs->getBool(prefs_path + "pick_to_opacity", 0); gtk_toggle_button_set_active ((GtkToggleButton *) b, old); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("Each clone's opacity is determined by the picked value in that point"), NULL); + gtk_widget_set_tooltip_text (b, _("Each clone's opacity is determined by the picked value in that point")); clonetiler_table_attach (table, b, 0.0, 2, 2); - gtk_signal_connect(GTK_OBJECT(b), "toggled", - GTK_SIGNAL_FUNC(clonetiler_pick_to), (gpointer) "pick_to_opacity"); + g_signal_connect(G_OBJECT(b), "toggled", + G_CALLBACK(clonetiler_pick_to), (gpointer) "pick_to_opacity"); } } gtk_widget_set_sensitive (vvb, prefs->getBool(prefs_path + "dotrace")); @@ -2764,16 +2677,16 @@ clonetiler_dialog (void) g_object_set_data (G_OBJECT(dlg), "rowscols", (gpointer) hb); { - GtkObject *a = gtk_adjustment_new(0.0, 1, 500, 1, 10, 10); + GtkObject *a = gtk_adjustment_new(0.0, 1, 500, 1, 10, 0); int value = prefs->getInt(prefs_path + "jmax", 2); gtk_adjustment_set_value (GTK_ADJUSTMENT (a), value); GtkWidget *sb = gtk_spin_button_new (GTK_ADJUSTMENT (a), 1.0, 0); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), sb, _("How many rows in the tiling"), NULL); - gtk_entry_set_width_chars (GTK_ENTRY (sb), 5); + gtk_widget_set_tooltip_text (sb, _("How many rows in the tiling")); + gtk_entry_set_width_chars (GTK_ENTRY (sb), 7); gtk_box_pack_start (GTK_BOX (hb), sb, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(a), "value_changed", - GTK_SIGNAL_FUNC(clonetiler_xy_changed), (gpointer) "jmax"); + g_signal_connect(G_OBJECT(a), "value_changed", + G_CALLBACK(clonetiler_xy_changed), (gpointer) "jmax"); } { @@ -2784,16 +2697,16 @@ clonetiler_dialog (void) } { - GtkObject *a = gtk_adjustment_new(0.0, 1, 500, 1, 10, 10); + GtkObject *a = gtk_adjustment_new(0.0, 1, 500, 1, 10, 0); int value = prefs->getInt(prefs_path + "imax", 2); gtk_adjustment_set_value (GTK_ADJUSTMENT (a), value); GtkWidget *sb = gtk_spin_button_new (GTK_ADJUSTMENT (a), 1.0, 0); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), sb, _("How many columns in the tiling"), NULL); - gtk_entry_set_width_chars (GTK_ENTRY (sb), 5); + gtk_widget_set_tooltip_text (sb, _("How many columns in the tiling")); + gtk_entry_set_width_chars (GTK_ENTRY (sb), 7); gtk_box_pack_start (GTK_BOX (hb), sb, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(a), "value_changed", - GTK_SIGNAL_FUNC(clonetiler_xy_changed), (gpointer) "imax"); + g_signal_connect(G_OBJECT(a), "value_changed", + G_CALLBACK(clonetiler_xy_changed), (gpointer) "imax"); } clonetiler_table_attach (table, hb, 0.0, 1, 2); @@ -2809,7 +2722,7 @@ clonetiler_dialog (void) { // Width spinbutton - GtkObject *a = gtk_adjustment_new (0.0, -1e6, 1e6, 1.0, 10.0, 10.0); + GtkObject *a = gtk_adjustment_new (0.0, -1e6, 1e6, 1.0, 10.0, 0); sp_unit_selector_add_adjustment (SP_UNIT_SELECTOR (u), GTK_ADJUSTMENT (a)); double value = prefs->getDouble(prefs_path + "fillwidth", 50.0); @@ -2818,11 +2731,12 @@ clonetiler_dialog (void) gtk_adjustment_set_value (GTK_ADJUSTMENT (a), units); GtkWidget *e = gtk_spin_button_new (GTK_ADJUSTMENT (a), 1.0 , 2); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), e, _("Width of the rectangle to be filled"), NULL); - gtk_entry_set_width_chars (GTK_ENTRY (e), 5); + gtk_widget_set_tooltip_text (e, _("Width of the rectangle to be filled")); + gtk_entry_set_width_chars (GTK_ENTRY (e), 7); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(e), 4); gtk_box_pack_start (GTK_BOX (hb), e, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(a), "value_changed", - GTK_SIGNAL_FUNC(clonetiler_fill_width_changed), u); + g_signal_connect(G_OBJECT(a), "value_changed", + G_CALLBACK(clonetiler_fill_width_changed), u); } { GtkWidget *l = gtk_label_new (""); @@ -2833,7 +2747,7 @@ clonetiler_dialog (void) { // Height spinbutton - GtkObject *a = gtk_adjustment_new (0.0, -1e6, 1e6, 1.0, 10.0, 10.0); + GtkObject *a = gtk_adjustment_new (0.0, -1e6, 1e6, 1.0, 10.0, 0); sp_unit_selector_add_adjustment (SP_UNIT_SELECTOR (u), GTK_ADJUSTMENT (a)); double value = prefs->getDouble(prefs_path + "fillheight", 50.0); @@ -2843,11 +2757,12 @@ clonetiler_dialog (void) GtkWidget *e = gtk_spin_button_new (GTK_ADJUSTMENT (a), 1.0 , 2); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), e, _("Height of the rectangle to be filled"), NULL); - gtk_entry_set_width_chars (GTK_ENTRY (e), 5); + gtk_widget_set_tooltip_text (e, _("Height of the rectangle to be filled")); + gtk_entry_set_width_chars (GTK_ENTRY (e), 7); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(e), 4); gtk_box_pack_start (GTK_BOX (hb), e, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(a), "value_changed", - GTK_SIGNAL_FUNC(clonetiler_fill_height_changed), u); + g_signal_connect(G_OBJECT(a), "value_changed", + G_CALLBACK(clonetiler_fill_height_changed), u); } gtk_box_pack_start (GTK_BOX (hb), u, TRUE, TRUE, 0); @@ -2859,19 +2774,19 @@ clonetiler_dialog (void) GtkWidget* radio; { radio = gtk_radio_button_new_with_label (NULL, _("Rows, columns: ")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Create the specified number of rows and columns"), NULL); + gtk_widget_set_tooltip_text (radio, _("Create the specified number of rows and columns")); clonetiler_table_attach (table, radio, 0.0, 1, 1); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", GTK_SIGNAL_FUNC (clonetiler_switch_to_create), (gpointer) dlg); + g_signal_connect (G_OBJECT (radio), "toggled", G_CALLBACK (clonetiler_switch_to_create), (gpointer) dlg); } if (!prefs->getBool(prefs_path + "fillrect")) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), TRUE); gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON (radio)); } { - radio = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (radio)), _("Width, height: ")); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), radio, _("Fill the specified width and height with the tiling"), NULL); + radio = gtk_radio_button_new_with_label (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("Width, height: ")); + gtk_widget_set_tooltip_text (radio, _("Fill the specified width and height with the tiling")); clonetiler_table_attach (table, radio, 0.0, 2, 1); - gtk_signal_connect (GTK_OBJECT (radio), "toggled", GTK_SIGNAL_FUNC (clonetiler_switch_to_fill), (gpointer) dlg); + g_signal_connect (G_OBJECT (radio), "toggled", G_CALLBACK (clonetiler_switch_to_fill), (gpointer) dlg); } if (prefs->getBool(prefs_path + "fillrect")) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), TRUE); @@ -2888,11 +2803,11 @@ clonetiler_dialog (void) GtkWidget *b = gtk_check_button_new_with_label (_("Use saved size and position of the tile")); bool keepbbox = prefs->getBool(prefs_path + "keepbbox", true); gtk_toggle_button_set_active ((GtkToggleButton *) b, keepbbox); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("Pretend that the size and position of the tile are the same as the last time you tiled it (if any), instead of using the current size"), NULL); + gtk_widget_set_tooltip_text (b, _("Pretend that the size and position of the tile are the same as the last time you tiled it (if any), instead of using the current size")); gtk_box_pack_start (GTK_BOX (hb), b, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(b), "toggled", - GTK_SIGNAL_FUNC(clonetiler_keep_bbox_toggled), NULL); + g_signal_connect(G_OBJECT(b), "toggled", + G_CALLBACK(clonetiler_keep_bbox_toggled), NULL); } // Statusbar @@ -2914,8 +2829,8 @@ clonetiler_dialog (void) GtkWidget *l = gtk_label_new (""); gtk_label_set_markup_with_mnemonic (GTK_LABEL(l), _(" <b>_Create</b> ")); gtk_container_add (GTK_CONTAINER(b), l); - gtk_tooltips_set_tip (tt, b, _("Create and tile the clones of the selection"), NULL); - gtk_signal_connect (GTK_OBJECT (b), "clicked", GTK_SIGNAL_FUNC (clonetiler_apply), NULL); + gtk_widget_set_tooltip_text (b, _("Create and tile the clones of the selection")); + g_signal_connect (G_OBJECT (b), "clicked", G_CALLBACK (clonetiler_apply), NULL); gtk_box_pack_end (GTK_BOX (hb), b, FALSE, FALSE, 0); } @@ -2930,15 +2845,15 @@ clonetiler_dialog (void) // http://www.inkscape.org/screenshots/gallery/inkscape-0.42-CVS-tiles-unclump.png // So unclumping is the process of spreading a number of objects out more evenly. GtkWidget *b = gtk_button_new_with_mnemonic (_(" _Unclump ")); - gtk_tooltips_set_tip (tt, b, _("Spread out clones to reduce clumping; can be applied repeatedly"), NULL); - gtk_signal_connect (GTK_OBJECT (b), "clicked", GTK_SIGNAL_FUNC (clonetiler_unclump), NULL); + gtk_widget_set_tooltip_text (b, _("Spread out clones to reduce clumping; can be applied repeatedly")); + g_signal_connect (G_OBJECT (b), "clicked", G_CALLBACK (clonetiler_unclump), NULL); gtk_box_pack_end (GTK_BOX (sb), b, FALSE, FALSE, 0); } { GtkWidget *b = gtk_button_new_with_mnemonic (_(" Re_move ")); - gtk_tooltips_set_tip (tt, b, _("Remove existing tiled clones of the selected object (siblings only)"), NULL); - gtk_signal_connect (GTK_OBJECT (b), "clicked", GTK_SIGNAL_FUNC (clonetiler_remove), NULL); + gtk_widget_set_tooltip_text (b, _("Remove existing tiled clones of the selected object (siblings only)")); + g_signal_connect (G_OBJECT (b), "clicked", G_CALLBACK (clonetiler_remove), NULL); gtk_box_pack_end (GTK_BOX (sb), b, FALSE, FALSE, 0); } @@ -2955,8 +2870,8 @@ clonetiler_dialog (void) { GtkWidget *b = gtk_button_new_with_mnemonic (_(" R_eset ")); // TRANSLATORS: "change" is a noun here - gtk_tooltips_set_tip (tt, b, _("Reset all shifts, scales, rotates, opacity and color changes in the dialog to zero"), NULL); - gtk_signal_connect (GTK_OBJECT (b), "clicked", GTK_SIGNAL_FUNC (clonetiler_reset), NULL); + gtk_widget_set_tooltip_text (b, _("Reset all shifts, scales, rotates, opacity and color changes in the dialog to zero")); + g_signal_connect (G_OBJECT (b), "clicked", G_CALLBACK (clonetiler_reset), NULL); gtk_box_pack_start (GTK_BOX (hb), b, FALSE, FALSE, 0); } } diff --git a/src/dialogs/clonetiler.h b/src/dialogs/clonetiler.h index bfb35cd96..899181346 100644 --- a/src/dialogs/clonetiler.h +++ b/src/dialogs/clonetiler.h @@ -12,7 +12,7 @@ #include <glib.h> -#include <gtk/gtkwidget.h> +#include <gtk/gtk.h> void clonetiler_dialog ( void ); diff --git a/src/dialogs/dialog-events.cpp b/src/dialogs/dialog-events.cpp index 89feca23e..08600afa7 100644 --- a/src/dialogs/dialog-events.cpp +++ b/src/dialogs/dialog-events.cpp @@ -1,5 +1,6 @@ -/** @file - * @brief Event handler for dialog windows +/** + * @file + * Event handler for dialog windows. */ /* Authors: * bulia byak <bulia@dr.com> @@ -30,15 +31,12 @@ /** - * \brief Remove focus from window to whoever it is transient for... - * + * Remove focus from window to whoever it is transient for. */ -void -sp_dialog_defocus_cpp (Gtk::Window *win) +void sp_dialog_defocus_cpp(Gtk::Window *win) { - Gtk::Window *w; //find out the document window we're transient for - w = win->get_transient_for(); + Gtk::Window *w = win->get_transient_for(); //switch to it if (w) { @@ -61,11 +59,9 @@ sp_dialog_defocus (GtkWindow *win) /** - * \brief Callback to defocus a widget's parent dialog. - * + * Callback to defocus a widget's parent dialog. */ -void -sp_dialog_defocus_callback_cpp (Gtk::Entry *e) +void sp_dialog_defocus_callback_cpp(Gtk::Entry *e) { sp_dialog_defocus_cpp(dynamic_cast<Gtk::Window *>(e->get_toplevel())); } @@ -152,11 +148,10 @@ sp_dialog_event_handler (GtkWindow *win, GdkEvent *event, gpointer data) /** - * \brief Make the argument dialog transient to the currently active document - window. + * Make the argument dialog transient to the currently active document + * window. */ -void -sp_transientize (GtkWidget *dialog) +void sp_transientize(GtkWidget *dialog) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); #ifndef WIN32 // FIXME: Temporary Win32 special code to enable transient dialogs diff --git a/src/dialogs/dialog-events.h b/src/dialogs/dialog-events.h index 7b04d0f69..53be16682 100644 --- a/src/dialogs/dialog-events.h +++ b/src/dialogs/dialog-events.h @@ -9,12 +9,10 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#ifndef __DIALOG_EVENTS_H__ -#define __DIALOG_EVENTS_H__ +#ifndef SEEN_DIALOG_EVENTS_H +#define SEEN_DIALOG_EVENTS_H -#include <gtk/gtkstyle.h> -#include <gtk/gtkwindow.h> -#include <forward.h> +#include <gtk/gtk.h> /* * event callback can only accept one argument, but we need two, @@ -29,6 +27,12 @@ namespace Gtk { class Window; class Entry; } + +class SPDesktop; + +namespace Inkscape { +class Application; +} // namespace Inkscape typedef struct { GtkWidget *win; diff --git a/src/dialogs/export.cpp b/src/dialogs/export.cpp index b05f6589a..2f1b2cd89 100644 --- a/src/dialogs/export.cpp +++ b/src/dialogs/export.cpp @@ -1,5 +1,6 @@ -/** @file - * @brief PNG export dialog +/** + * @file + * PNG export dialog. */ /* Authors: * Lauris Kaplinski <lauris@kaplinski.com> @@ -54,6 +55,7 @@ #include "preferences.h" #include "verbs.h" #include "interface.h" +#include "sp-root.h" #include "extension/output.h" #include "extension/db.h" @@ -188,36 +190,34 @@ sp_export_dialog_delete ( GtkObject */*object*/, GdkEvent */*event*/, gpointer / } // end of sp_export_dialog_delete() /** - \brief Creates a new spin button for the export dialog - \param key The name of the spin button - \param val A default value for the spin button - \param min Minimum value for the spin button - \param max Maximum value for the spin button - \param step The step size for the spin button - \param page Size of the page increment - \param us Unit selector that effects this spin button - \param t Table to put the spin button in - \param x X location in the table \c t to start with - \param y Y location in the table \c t to start with - \param ll Text to put on the left side of the spin button (optional) - \param lr Text to put on the right side of the spin button (optional) - \param digits Number of digits to display after the decimal - \param sensitive Whether the spin button is sensitive or not - \param cb Callback for when this spin button is changed (optional) - \param dlg Export dialog the spin button is being placed in - -*/ -static void -sp_export_spinbutton_new ( gchar const *key, float val, float min, float max, - float step, float page, GtkWidget *us, - GtkWidget *t, int x, int y, - const gchar *ll, const gchar *lr, - int digits, unsigned int sensitive, - GCallback cb, GtkWidget *dlg ) + * Creates a new spin button for the export dialog. + * @param key The name of the spin button + * @param val A default value for the spin button + * @param min Minimum value for the spin button + * @param max Maximum value for the spin button + * @param step The step size for the spin button + * @param page Size of the page increment + * @param us Unit selector that effects this spin button + * @param t Table to put the spin button in + * @param x X location in the table \c t to start with + * @param y Y location in the table \c t to start with + * @param ll Text to put on the left side of the spin button (optional) + * @param lr Text to put on the right side of the spin button (optional) + * @param digits Number of digits to display after the decimal + * @param sensitive Whether the spin button is sensitive or not + * @param cb Callback for when this spin button is changed (optional) + * @param dlg Export dialog the spin button is being placed in + */ +static void sp_export_spinbutton_new( gchar const *key, float val, float min, float max, + float step, float page, GtkWidget *us, + GtkWidget *t, int x, int y, + const gchar *ll, const gchar *lr, + int digits, unsigned int sensitive, + GCallback cb, GtkWidget *dlg ) { GtkObject *adj = gtk_adjustment_new( val, min, max, step, page, 0 ); - gtk_object_set_data( adj, "key", const_cast<gchar *>(key) ); - gtk_object_set_data( GTK_OBJECT (dlg), (const gchar *)key, adj ); + g_object_set_data( G_OBJECT (adj), "key", const_cast<gchar *>(key) ); + g_object_set_data( G_OBJECT (dlg), (const gchar *)key, adj ); if (us) { sp_unit_selector_add_adjustment ( SP_UNIT_SELECTOR (us), @@ -261,7 +261,7 @@ sp_export_spinbutton_new ( gchar const *key, float val, float min, float max, } if (cb) - gtk_signal_connect (adj, "value_changed", cb, dlg); + g_signal_connect (adj, "value_changed", cb, dlg); return; } // end of sp_export_spinbutton_new() @@ -288,7 +288,7 @@ sp_export_dialog_area_box (GtkWidget * dlg) unitbox->pack_end(*us, false, false, 0); Gtk::Label* l = new Gtk::Label(_("Units:")); unitbox->pack_end(*l, false, false, 3); - gtk_object_set_data (GTK_OBJECT (dlg), "units", us->gobj()); + g_object_set_data (G_OBJECT (dlg), "units", us->gobj()); Gtk::HBox* togglebox = new Gtk::HBox(true, 0); @@ -296,10 +296,10 @@ sp_export_dialog_area_box (GtkWidget * dlg) for (int i = 0; i < SELECTION_NUMBER_OF; i++) { b = new Gtk::ToggleButton(_(selection_labels[i]), true); b->set_data("key", GINT_TO_POINTER(i)); - gtk_object_set_data (GTK_OBJECT (dlg), selection_names[i], b->gobj()); + g_object_set_data (G_OBJECT (dlg), selection_names[i], b->gobj()); togglebox->pack_start(*b, false, true, 0); - gtk_signal_connect ( GTK_OBJECT (b->gobj()), "clicked", - GTK_SIGNAL_FUNC (sp_export_area_toggled), dlg ); + g_signal_connect ( G_OBJECT (b->gobj()), "clicked", + G_CALLBACK (sp_export_area_toggled), dlg ); } g_signal_connect ( G_OBJECT (INKSCAPE), "change_selection", @@ -357,18 +357,18 @@ gchar* create_filepath_from_id (const gchar *id, const gchar *file_entry_text) { if (id == NULL) /* This should never happen */ id = "bitmap"; - gchar * directory = NULL; + gchar *directory = NULL; if (directory == NULL && file_entry_text != NULL && file_entry_text[0] != '\0') { // std::cout << "Directory from dialog" << std::endl; - directory = g_dirname(file_entry_text); + directory = g_path_get_dirname(file_entry_text); } if (directory == NULL) { /* Grab document directory */ if ( SP_ACTIVE_DOCUMENT->getURI() ) { // std::cout << "Directory from document" << std::endl; - directory = g_dirname( SP_ACTIVE_DOCUMENT->getURI() ); + directory = g_path_get_dirname( SP_ACTIVE_DOCUMENT->getURI() ); } } @@ -387,7 +387,7 @@ gchar* create_filepath_from_id (const gchar *id, const gchar *file_entry_text) { static void batch_export_clicked (GtkWidget *widget, GtkObject *base) { - Gtk::Widget *vb_singleexport = (Gtk::Widget *)gtk_object_get_data(base, "vb_singleexport"); + Gtk::Widget *vb_singleexport = (Gtk::Widget *)g_object_get_data(G_OBJECT(base), "vb_singleexport"); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget))) { vb_singleexport->set_sensitive(false); } else { @@ -431,13 +431,13 @@ sp_export_dialog (void) 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); + g_signal_connect ( G_OBJECT (dlg), "event", + G_CALLBACK (sp_dialog_event_handler), dlg); - gtk_signal_connect ( GTK_OBJECT (dlg), "destroy", + g_signal_connect ( G_OBJECT (dlg), "destroy", G_CALLBACK (sp_export_dialog_destroy), dlg); - gtk_signal_connect ( GTK_OBJECT (dlg), "delete_event", + g_signal_connect ( G_OBJECT (dlg), "delete_event", G_CALLBACK (sp_export_dialog_delete), dlg); g_signal_connect ( G_OBJECT (INKSCAPE), "shut_down", @@ -449,8 +449,6 @@ sp_export_dialog (void) g_signal_connect ( G_OBJECT (INKSCAPE), "dialogs_unhide", G_CALLBACK (sp_dialog_unhide), dlg); - GtkTooltips *tt = gtk_tooltips_new(); - Gtk::VBox *vb = new Gtk::VBox(false, 3); vb->set_border_width(3); gtk_container_add (GTK_CONTAINER (dlg), GTK_WIDGET(vb->gobj())); @@ -458,7 +456,7 @@ sp_export_dialog (void) Gtk::VBox *vb_singleexport = new Gtk::VBox(false, 0); vb_singleexport->set_border_width(0); vb->pack_start(*vb_singleexport); - gtk_object_set_data(GTK_OBJECT(dlg), "vb_singleexport", vb_singleexport); + g_object_set_data(G_OBJECT(dlg), "vb_singleexport", vb_singleexport); /* Export area frame */ { @@ -603,8 +601,8 @@ sp_export_dialog (void) hb->pack_start (*fe, true, true, 0); file_box->add(*hb); - gtk_object_set_data (GTK_OBJECT (dlg), "filename", fe->gobj()); - gtk_object_set_data (GTK_OBJECT (dlg), "filename-modified", (gpointer)FALSE); + g_object_set_data (G_OBJECT (dlg), "filename", fe->gobj()); + g_object_set_data (G_OBJECT (dlg), "filename-modified", (gpointer)FALSE); original_name = g_strdup(fe->get_text().c_str()); // pressing enter in the filename field is the same as clicking export: g_signal_connect ( G_OBJECT (fe->gobj()), "activate", @@ -622,9 +620,9 @@ sp_export_dialog (void) Gtk::HBox* batch_box = new Gtk::HBox(FALSE, 5); GtkWidget *be = gtk_check_button_new_with_mnemonic(_("B_atch export all selected objects")); gtk_widget_set_sensitive(GTK_WIDGET(be), TRUE); - gtk_object_set_data(GTK_OBJECT(dlg), "batch_checkbox", be); + g_object_set_data(G_OBJECT(dlg), "batch_checkbox", be); batch_box->pack_start(*Glib::wrap(be), false, false); - gtk_tooltips_set_tip(tt, be, _("Export each selected object into its own PNG file, using export hints if any (caution, overwrites without asking!)"), NULL); + gtk_widget_set_tooltip_text(be, _("Export each selected object into its own PNG file, using export hints if any (caution, overwrites without asking!)")); batch_box->show_all(); g_signal_connect(G_OBJECT(be), "toggled", GTK_SIGNAL_FUNC(batch_export_clicked), dlg); vb->pack_start(*batch_box); @@ -634,9 +632,9 @@ sp_export_dialog (void) Gtk::HBox* hide_box = new Gtk::HBox(FALSE, 5); GtkWidget *he = gtk_check_button_new_with_mnemonic(_("Hide a_ll except selected")); gtk_widget_set_sensitive(GTK_WIDGET(he), TRUE); - gtk_object_set_data(GTK_OBJECT(dlg), "hide_checkbox", he); + g_object_set_data(G_OBJECT(dlg), "hide_checkbox", he); hide_box->pack_start(*Glib::wrap(he), false, false); - gtk_tooltips_set_tip(tt, he, _("In the exported image, hide all objects except those that are selected"), NULL); + gtk_widget_set_tooltip_text(he, _("In the exported image, hide all objects except those that are selected")); hide_box->show_all(); vb->pack_start(*hide_box); } @@ -657,9 +655,9 @@ sp_export_dialog (void) image_label->pack_start(*l); b->add(*image_label); - gtk_tooltips_set_tip (tt, GTK_WIDGET(b->gobj()), _("Export the bitmap file with these settings"), NULL); - gtk_signal_connect ( GTK_OBJECT (b->gobj()), "clicked", - GTK_SIGNAL_FUNC (sp_export_export_clicked), dlg ); + gtk_widget_set_tooltip_text (GTK_WIDGET(b->gobj()), _("Export the bitmap file with these settings")); + g_signal_connect ( G_OBJECT (b->gobj()), "clicked", + G_CALLBACK (sp_export_export_clicked), dlg ); bb->pack_end(*b, false, false, 0); } @@ -679,8 +677,8 @@ static void sp_export_update_checkbuttons (GtkObject *base) { gint num = g_slist_length((GSList *) sp_desktop_selection(SP_ACTIVE_DESKTOP)->itemList()); - GtkWidget *be = (GtkWidget *)gtk_object_get_data(base, "batch_checkbox"); - GtkWidget *he = (GtkWidget *)gtk_object_get_data(base, "hide_checkbox"); + GtkWidget *be = (GtkWidget *)g_object_get_data(G_OBJECT(base), "batch_checkbox"); + GtkWidget *he = (GtkWidget *)g_object_get_data(G_OBJECT(base), "hide_checkbox"); if (num >= 2) { gtk_widget_set_sensitive (be, true); gtk_button_set_label (GTK_BUTTON(be), g_strdup_printf (ngettext("B_atch export %d selected object","B_atch export %d selected objects",num), num)); @@ -735,35 +733,33 @@ sp_export_find_default_selection(GtkWidget * dlg) /** - * \brief If selection changed or a different document activated, we must - * recalculate any chosen areas - * + * If selection changed or a different document activated, we must + * recalculate any chosen areas. */ -static void -sp_export_selection_changed ( Inkscape::Application *inkscape, - Inkscape::Selection *selection, - GtkObject *base ) +static void sp_export_selection_changed( Inkscape::Application *inkscape, + Inkscape::Selection *selection, + GtkObject *base ) { selection_type current_key; - current_key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + current_key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); if ((current_key == SELECTION_DRAWING || current_key == SELECTION_PAGE) && (sp_desktop_selection(SP_ACTIVE_DESKTOP))->isEmpty() == false && was_empty) { gtk_toggle_button_set_active - ( GTK_TOGGLE_BUTTON ( gtk_object_get_data (base, selection_names[SELECTION_SELECTION])), + ( GTK_TOGGLE_BUTTON ( g_object_get_data (G_OBJECT(base), selection_names[SELECTION_SELECTION])), TRUE ); } was_empty = (sp_desktop_selection(SP_ACTIVE_DESKTOP))->isEmpty(); - current_key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + current_key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); if (inkscape && SP_IS_INKSCAPE (inkscape) && selection && SELECTION_CUSTOM != current_key) { GtkToggleButton * button; - button = (GtkToggleButton *)gtk_object_get_data(base, selection_names[current_key]); + button = (GtkToggleButton *)g_object_get_data(G_OBJECT(base), selection_names[current_key]); sp_export_area_toggled(button, base); } @@ -777,27 +773,29 @@ sp_export_selection_modified ( Inkscape::Application */*inkscape*/, GtkObject *base ) { selection_type current_key; - current_key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + current_key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); switch (current_key) { case SELECTION_DRAWING: if ( SP_ACTIVE_DESKTOP ) { SPDocument *doc; doc = sp_desktop_document (SP_ACTIVE_DESKTOP); - Geom::OptRect bbox = SP_ITEM(doc->root)->getBboxDesktop(SPItem::RENDERING_BBOX); + Geom::OptRect bbox = doc->getRoot()->desktopVisualBounds(); if (bbox) { - sp_export_set_area (base, bbox->min()[Geom::X], - bbox->min()[Geom::Y], - bbox->max()[Geom::X], - bbox->max()[Geom::Y]); + sp_export_set_area (base, bbox->left(), + bbox->top(), + bbox->right(), + bbox->bottom()); } } break; case SELECTION_SELECTION: if ((sp_desktop_selection(SP_ACTIVE_DESKTOP))->isEmpty() == false) { - NRRect bbox; - (sp_desktop_selection (SP_ACTIVE_DESKTOP))->bounds(&bbox, SPItem::RENDERING_BBOX); - sp_export_set_area (base, bbox.x0, bbox.y0, bbox.x1, bbox.y1); + Geom::OptRect bbox = (sp_desktop_selection (SP_ACTIVE_DESKTOP))->visualBounds(); + sp_export_set_area (base, bbox->left(), + bbox->top(), + bbox->right(), + bbox->bottom()); } break; default: @@ -812,12 +810,12 @@ sp_export_selection_modified ( Inkscape::Application */*inkscape*/, static void sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) { - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; selection_type key, old_key; - key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data (GTK_OBJECT (tb), "key"))); - old_key = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT (tb), "key"))); + old_key = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); /* Ignore all "turned off" events unless we're the only active button */ if (!gtk_toggle_button_get_active (tb) ) { @@ -832,11 +830,11 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) } /* Turn off the currently active button unless it's us */ - gtk_object_set_data(GTK_OBJECT(base), "selection-type", (gpointer)key); + g_object_set_data(G_OBJECT(base), "selection-type", (gpointer)key); if (old_key != key) { gtk_toggle_button_set_active - ( GTK_TOGGLE_BUTTON ( gtk_object_get_data (base, selection_names[old_key])), + ( GTK_TOGGLE_BUTTON ( g_object_get_data (G_OBJECT(base), selection_names[old_key])), FALSE ); } @@ -853,7 +851,7 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) case SELECTION_SELECTION: if ((sp_desktop_selection(SP_ACTIVE_DESKTOP))->isEmpty() == false) { - bbox = sp_desktop_selection (SP_ACTIVE_DESKTOP)->bounds(SPItem::RENDERING_BBOX); + bbox = sp_desktop_selection (SP_ACTIVE_DESKTOP)->visualBounds(); /* Only if there is a selection that we can set do we break, otherwise we fall through to the drawing */ @@ -865,7 +863,7 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) /** \todo * This returns wrong values if the document has a viewBox. */ - bbox = SP_ITEM(doc->root)->getBboxDesktop(SPItem::RENDERING_BBOX); + bbox = doc->getRoot()->desktopVisualBounds(); /* If the drawing is valid, then we'll use it and break otherwise we drop through to the page settings */ if (bbox) { @@ -899,12 +897,12 @@ sp_export_area_toggled (GtkToggleButton *tb, GtkObject *base) } // end of if ( SP_ACTIVE_DESKTOP ) - if (SP_ACTIVE_DESKTOP && !gtk_object_get_data(GTK_OBJECT(base), "filename-modified")) { + if (SP_ACTIVE_DESKTOP && !g_object_get_data(G_OBJECT(base), "filename-modified")) { GtkWidget * file_entry; const gchar * filename = NULL; float xdpi = 0.0, ydpi = 0.0; - file_entry = (GtkWidget *)gtk_object_get_data (base, "filename"); + file_entry = (GtkWidget *)g_object_get_data (G_OBJECT(base), "filename"); switch (key) { case SELECTION_PAGE: @@ -1054,7 +1052,7 @@ filename_add_extension (const gchar *filename, const gchar *extension) return g_strconcat (filename, extension, NULL); else { - if (g_strcasecmp (dot + 1, extension) == 0) + if (g_ascii_strcasecmp (dot + 1, extension) == 0) return g_strdup (filename); else { @@ -1090,8 +1088,8 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) SPNamedView *nv = sp_desktop_namedview(SP_ACTIVE_DESKTOP); SPDocument *doc = sp_desktop_document (SP_ACTIVE_DESKTOP); - GtkWidget *be = (GtkWidget *)gtk_object_get_data(base, "batch_checkbox"); - GtkWidget *he = (GtkWidget *)gtk_object_get_data(base, "hide_checkbox"); + GtkWidget *be = (GtkWidget *)g_object_get_data(G_OBJECT(base), "batch_checkbox"); + GtkWidget *he = (GtkWidget *)g_object_get_data(G_OBJECT(base), "hide_checkbox"); bool hide = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (he)); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (be))) { // Batch export of selected objects @@ -1130,8 +1128,7 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) dpi = DPI_BASE; } - Geom::OptRect area; - item->invoke_bbox( area, item->i2d_affine(), TRUE ); + Geom::OptRect area = item->desktopVisualBounds(); if (area) { gint width = (gint) (area->width() * dpi / PX_PER_IN + 0.5); gint height = (gint) (area->height() * dpi / PX_PER_IN + 0.5); @@ -1163,7 +1160,7 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) } else { - GtkWidget *fe = (GtkWidget *)gtk_object_get_data(base, "filename"); + GtkWidget *fe = (GtkWidget *)g_object_get_data(G_OBJECT(base), "filename"); gchar const *filename = gtk_entry_get_text(GTK_ENTRY(fe)); float const x0 = sp_export_value_get_px(base, "x0"); @@ -1233,13 +1230,13 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) selections and all that */ g_free(original_name); original_name = g_strdup(filename_ext); - gtk_object_set_data (GTK_OBJECT (base), "filename-modified", (gpointer)FALSE); + g_object_set_data (G_OBJECT (base), "filename-modified", (gpointer)FALSE); gtk_widget_destroy (prog_dlg); g_object_set_data (G_OBJECT (base), "cancel", (gpointer) 0); /* Setup the values in the document */ - switch ((selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type")))) { + switch ((selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type")))) { case SELECTION_PAGE: case SELECTION_DRAWING: { SPDocument * doc = SP_ACTIVE_DOCUMENT; @@ -1283,11 +1280,13 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) for(; reprlst != NULL; reprlst = reprlst->next) { Inkscape::XML::Node * repr = (Inkscape::XML::Node *)reprlst->data; const gchar * temp_string; + gchar *dir = g_path_get_dirname(filename); + gchar *docdir = g_path_get_dirname(SP_ACTIVE_DOCUMENT->getURI()); if (repr->attribute("id") == NULL || !(g_strrstr(filename_ext, repr->attribute("id")) != NULL && ( !SP_ACTIVE_DOCUMENT->getURI() || - strcmp(g_dirname(filename), g_dirname(SP_ACTIVE_DOCUMENT->getURI())) == 0))) { + strcmp(dir, docdir) == 0))) { temp_string = repr->attribute("inkscape:export-filename"); if (temp_string == NULL || strcmp(temp_string, filename_ext)) { repr->setAttribute("inkscape:export-filename", filename_ext); @@ -1304,6 +1303,8 @@ sp_export_export_clicked (GtkButton */*button*/, GtkObject *base) sp_repr_set_svg_double(repr, "inkscape:export-ydpi", ydpi); modified = true; } + g_free(dir); + g_free(docdir); } DocumentUndo::setUndoSensitive(doc, saved); @@ -1441,34 +1442,34 @@ sp_export_bbox_equal(Geom::Rect const &one, Geom::Rect const &two) } /** - \brief This function is used to detect the current selection setting - based on the values in the x0, y0, x1 and y0 fields. - \param base The export dialog itself - - One of the most confusing parts of this function is why the array - is built at the beginning. What needs to happen here is that we - should always check the current selection to see if it is the valid - one. While this is a performance improvement it is also a usability - one during the cases where things like selections and drawings match - size. This way buttons change less 'randomly' (atleast in the eyes - of the user). To do this an array is built where the current selection - type is placed first, and then the others in an order from smallest - to largest (this can be configured by reshuffling \c test_order). - - All of the values in this function are rounded to two decimal places - because that is what is shown to the user. While everything is kept - more accurate than that, the user can't control more acurrate than - that, so for this to work for them - it needs to check on that level - of accuracy. - - \todo finish writing this up -*/ -static void -sp_export_detect_size(GtkObject * base) { + *This function is used to detect the current selection setting + * based on the values in the x0, y0, x1 and y0 fields. + * + * One of the most confusing parts of this function is why the array + * is built at the beginning. What needs to happen here is that we + * should always check the current selection to see if it is the valid + * one. While this is a performance improvement it is also a usability + * one during the cases where things like selections and drawings match + * size. This way buttons change less 'randomly' (atleast in the eyes + * of the user). To do this an array is built where the current selection + * type is placed first, and then the others in an order from smallest + * to largest (this can be configured by reshuffling \c test_order). + * + * All of the values in this function are rounded to two decimal places + * because that is what is shown to the user. While everything is kept + * more accurate than that, the user can't control more acurrate than + * that, so for this to work for them - it needs to check on that level + * of accuracy. + * + * @param base The export dialog itself. + * + * @todo finish writing this up. + */ +static void sp_export_detect_size(GtkObject * base) { static const selection_type test_order[SELECTION_NUMBER_OF] = {SELECTION_SELECTION, SELECTION_DRAWING, SELECTION_PAGE, SELECTION_CUSTOM}; selection_type this_test[SELECTION_NUMBER_OF + 1]; selection_type key = SELECTION_NUMBER_OF; - + Geom::Point x(sp_export_value_get_px (base, "x0"), sp_export_value_get_px (base, "y0")); Geom::Point y(sp_export_value_get_px (base, "x1"), @@ -1476,7 +1477,7 @@ sp_export_detect_size(GtkObject * base) { Geom::Rect current_bbox(x, y); //std::cout << "Current " << current_bbox; - this_test[0] = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); + this_test[0] = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); for (int i = 0; i < SELECTION_NUMBER_OF; i++) { this_test[i + 1] = test_order[i]; } @@ -1490,7 +1491,7 @@ sp_export_detect_size(GtkObject * base) { switch (this_test[i]) { case SELECTION_SELECTION: if ((sp_desktop_selection(SP_ACTIVE_DESKTOP))->isEmpty() == false) { - Geom::OptRect bbox = (sp_desktop_selection (SP_ACTIVE_DESKTOP))->bounds(SPItem::RENDERING_BBOX); + Geom::OptRect bbox = (sp_desktop_selection (SP_ACTIVE_DESKTOP))->bounds(SPItem::VISUAL_BBOX); //std::cout << "Selection " << bbox; if ( bbox && sp_export_bbox_equal(*bbox,current_bbox)) { @@ -1501,7 +1502,7 @@ sp_export_detect_size(GtkObject * base) { case SELECTION_DRAWING: { SPDocument *doc = sp_desktop_document (SP_ACTIVE_DESKTOP); - Geom::OptRect bbox = SP_ITEM(doc->root)->getBboxDesktop(SPItem::RENDERING_BBOX); + Geom::OptRect bbox = doc->getRoot()->desktopVisualBounds(); // std::cout << "Drawing " << bbox2; if ( bbox && sp_export_bbox_equal(*bbox,current_bbox) ) { @@ -1539,10 +1540,10 @@ sp_export_detect_size(GtkObject * base) { /* We're now using a custom size, not a fixed one */ /* printf("Detecting state: %s\n", selection_names[key]); */ - selection_type old = (selection_type)(GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(base), "selection-type"))); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_object_get_data(base, selection_names[old])), FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(gtk_object_get_data(base, selection_names[key])), TRUE); - gtk_object_set_data(GTK_OBJECT(base), "selection-type", (gpointer)key); + selection_type old = (selection_type)(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(base), "selection-type"))); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(g_object_get_data(G_OBJECT(base), selection_names[old])), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(g_object_get_data(G_OBJECT(base), selection_names[key])), TRUE); + g_object_set_data(G_OBJECT(base), "selection-type", (gpointer)key); return; } /* sp_export_detect_size */ @@ -1553,16 +1554,16 @@ sp_export_area_x_value_changed (GtkAdjustment *adj, GtkObject *base) { float x0, x1, xdpi, width; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data ( base, "update", GUINT_TO_POINTER (TRUE) ); + g_object_set_data ( G_OBJECT(base), "update", GUINT_TO_POINTER (TRUE) ); x0 = sp_export_value_get_px (base, "x0"); x1 = sp_export_value_get_px (base, "x1"); @@ -1573,7 +1574,7 @@ sp_export_area_x_value_changed (GtkAdjustment *adj, GtkObject *base) if (width < SP_EXPORT_MIN_SIZE) { const gchar *key; width = SP_EXPORT_MIN_SIZE; - key = (const gchar *)gtk_object_get_data (GTK_OBJECT (adj), "key"); + key = (const gchar *)g_object_get_data(G_OBJECT (adj), "key"); if (!strcmp (key, "x0")) { x1 = x0 + width * DPI_BASE / xdpi; @@ -1589,7 +1590,7 @@ sp_export_area_x_value_changed (GtkAdjustment *adj, GtkObject *base) sp_export_detect_size(base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data ( G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_area_x_value_changed() @@ -1600,16 +1601,16 @@ sp_export_area_y_value_changed (GtkAdjustment *adj, GtkObject *base) { float y0, y1, ydpi, height; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data ( G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); y0 = sp_export_value_get_px (base, "y0"); y1 = sp_export_value_get_px (base, "y1"); @@ -1620,7 +1621,7 @@ sp_export_area_y_value_changed (GtkAdjustment *adj, GtkObject *base) if (height < SP_EXPORT_MIN_SIZE) { const gchar *key; height = SP_EXPORT_MIN_SIZE; - key = (const gchar *)gtk_object_get_data (GTK_OBJECT (adj), "key"); + key = (const gchar *)g_object_get_data(G_OBJECT (adj), "key"); if (!strcmp (key, "y0")) { y1 = y0 + height * DPI_BASE / ydpi; sp_export_value_set_px (base, "y1", y1); @@ -1635,7 +1636,7 @@ sp_export_area_y_value_changed (GtkAdjustment *adj, GtkObject *base) sp_export_detect_size(base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data ( G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_area_y_value_changed() @@ -1646,15 +1647,15 @@ sp_export_area_width_value_changed (GtkAdjustment */*adj*/, GtkObject *base) { float x0, x1, xdpi, width, bmwidth; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data ( G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); x0 = sp_export_value_get_px (base, "x0"); x1 = sp_export_value_get_px (base, "x1"); @@ -1672,7 +1673,7 @@ sp_export_area_width_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_value_set_px (base, "x1", x0 + width); sp_export_value_set (base, "bmwidth", bmwidth); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_area_width_value_changed() @@ -1684,15 +1685,15 @@ sp_export_area_height_value_changed (GtkAdjustment */*adj*/, GtkObject *base) float y0, y1, ydpi, height, bmheight; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); y0 = sp_export_value_get_px (base, "y0"); y1 = sp_export_value_get_px (base, "y1"); @@ -1709,21 +1710,20 @@ sp_export_area_height_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_value_set_px (base, "y1", y0 + height); sp_export_value_set (base, "bmheight", bmheight); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_area_height_value_changed() /** - \brief A function to set the ydpi - \param base The export dialog - - This function grabs all of the y values and then figures out the - new bitmap size based on the changing dpi value. The dpi value is - gotten from the xdpi setting as these can not currently be independent. -*/ -static void -sp_export_set_image_y (GtkObject *base) + * A function to set the ydpi. + * @param base The export dialog. + * + * This function grabs all of the y values and then figures out the + * new bitmap size based on the changing dpi value. The dpi value is + * gotten from the xdpi setting as these can not currently be independent. + */ +static void sp_export_set_image_y(GtkObject *base) { float y0, y1, xdpi; @@ -1738,15 +1738,15 @@ sp_export_set_image_y (GtkObject *base) } // end of sp_export_set_image_y() /** - \brief A function to set the xdpi - \param base The export dialog - - This function grabs all of the x values and then figures out the - new bitmap size based on the changing dpi value. The dpi value is - gotten from the xdpi setting as these can not currently be independent. -*/ -static void -sp_export_set_image_x (GtkObject *base) + * A function to set the xdpi. + * + * This function grabs all of the x values and then figures out the + * new bitmap size based on the changing dpi value. The dpi value is + * gotten from the xdpi setting as these can not currently be independent. + * + * @param base The export dialog. + */ +static void sp_export_set_image_x(GtkObject *base) { float x0, x1, xdpi; @@ -1766,15 +1766,15 @@ sp_export_bitmap_width_value_changed (GtkAdjustment */*adj*/, GtkObject *base) { float x0, x1, bmwidth, xdpi; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); x0 = sp_export_value_get_px (base, "x0"); x1 = sp_export_value_get_px (base, "x1"); @@ -1790,7 +1790,7 @@ sp_export_bitmap_width_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_set_image_y (base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_bitmap_width_value_changed() @@ -1801,15 +1801,15 @@ sp_export_bitmap_height_value_changed (GtkAdjustment */*adj*/, GtkObject *base) { float y0, y1, bmheight, xdpi; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); y0 = sp_export_value_get_px (base, "y0"); y1 = sp_export_value_get_px (base, "y1"); @@ -1825,53 +1825,53 @@ sp_export_bitmap_height_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_set_image_x (base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_bitmap_width_value_changed() /** - \brief A function to adjust the bitmap width when the xdpi value changes - \param adj The adjustment that was changed - \param base The export dialog itself - - The first thing this function checks is to see if we are doing an - update. If we are, this function just returns because there is another - instance of it that will handle everything for us. If there is a - units change, we also assume that everyone is being updated appropriately - and there is nothing for us to do. - - If we're the highest level function, we set the update flag, and - continue on our way. - - All of the values are grabbed using the \c sp_export_value_get functions - (call to the _pt ones for x0 and x1 but just standard for xdpi). The - xdpi value is saved in the preferences for the next time the dialog - is opened. (does the selection dpi need to be set here?) - - A check is done to to ensure that we aren't outputing an invalid width, - this is set by SP_EXPORT_MIN_SIZE. If that is the case the dpi is - changed to make it valid. - - After all of this the bitmap width is changed. - - We also change the ydpi. This is a temporary hack as these can not - currently be independent. This is likely to change in the future. -*/ -void -sp_export_xdpi_value_changed (GtkAdjustment */*adj*/, GtkObject *base) + * A function to adjust the bitmap width when the xdpi value changes. + * + * The first thing this function checks is to see if we are doing an + * update. If we are, this function just returns because there is another + * instance of it that will handle everything for us. If there is a + * units change, we also assume that everyone is being updated appropriately + * and there is nothing for us to do. + * + * If we're the highest level function, we set the update flag, and + * continue on our way. + * + * All of the values are grabbed using the \c sp_export_value_get functions + * (call to the _pt ones for x0 and x1 but just standard for xdpi). The + * xdpi value is saved in the preferences for the next time the dialog + * is opened. (does the selection dpi need to be set here?) + * + * A check is done to to ensure that we aren't outputing an invalid width, + * this is set by SP_EXPORT_MIN_SIZE. If that is the case the dpi is + * changed to make it valid. + * + * After all of this the bitmap width is changed. + * + * We also change the ydpi. This is a temporary hack as these can not + * currently be independent. This is likely to change in the future. + * + * @param adj The adjustment that was changed. + * @param base The export dialog itself. + */ +void sp_export_xdpi_value_changed(GtkAdjustment */*adj*/, GtkObject *base) { float x0, x1, xdpi, bmwidth; - if (gtk_object_get_data (base, "update")) + if (g_object_get_data (G_OBJECT(base), "update")) return; - if (sp_unit_selector_update_test ((SPUnitSelector *)gtk_object_get_data - (base, "units"))) { + if (sp_unit_selector_update_test ((SPUnitSelector *)g_object_get_data + (G_OBJECT(base), "units"))) { return; } - gtk_object_set_data (base, "update", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE)); x0 = sp_export_value_get_px (base, "x0"); x1 = sp_export_value_get_px (base, "x1"); @@ -1896,82 +1896,80 @@ sp_export_xdpi_value_changed (GtkAdjustment */*adj*/, GtkObject *base) sp_export_set_image_y (base); - gtk_object_set_data (base, "update", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE)); return; } // end of sp_export_xdpi_value_changed() /** - \brief A function to change the area that is used for the exported - bitmap. - \param base This is the export dialog - \param x0 Horizontal upper left hand corner of the picture in points - \param y0 Vertical upper left hand corner of the picture in points - \param x1 Horizontal lower right hand corner of the picture in points - \param y1 Vertical lower right hand corner of the picture in points - - This function just calls \c sp_export_value_set_px for each of the - parameters that is passed in. This allows for setting them all in - one convient area. - - Update is set to suspend all of the other test running while all the - values are being set up. This allows for a performance increase, but - it also means that the wrong type won't be detected with only some of - the values set. After all the values are set everyone is told that - there has been an update. -*/ -static void -sp_export_set_area ( GtkObject *base, double x0, double y0, double x1, double y1 ) + * A function to change the area that is used for the exported. + * bitmap. + * + * This function just calls \c sp_export_value_set_px for each of the + * parameters that is passed in. This allows for setting them all in + * one convient area. + * + * Update is set to suspend all of the other test running while all the + * values are being set up. This allows for a performance increase, but + * it also means that the wrong type won't be detected with only some of + * the values set. After all the values are set everyone is told that + * there has been an update. + * + * @param base This is the export dialog. + * @param x0 Horizontal upper left hand corner of the picture in points. + * @param y0 Vertical upper left hand corner of the picture in points. + * @param x1 Horizontal lower right hand corner of the picture in points. + * @param y1 Vertical lower right hand corner of the picture in points. + */ +static void sp_export_set_area( GtkObject *base, double x0, double y0, double x1, double y1 ) { - gtk_object_set_data ( base, "update", GUINT_TO_POINTER (TRUE) ); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (TRUE) ); sp_export_value_set_px (base, "x1", x1); sp_export_value_set_px (base, "y1", y1); sp_export_value_set_px (base, "x0", x0); sp_export_value_set_px (base, "y0", y0); - gtk_object_set_data ( base, "update", GUINT_TO_POINTER (FALSE) ); + g_object_set_data (G_OBJECT (base), "update", GUINT_TO_POINTER (FALSE) ); - sp_export_area_x_value_changed ((GtkAdjustment *)gtk_object_get_data (base, "x1"), base); - sp_export_area_y_value_changed ((GtkAdjustment *)gtk_object_get_data (base, "y1"), base); + sp_export_area_x_value_changed ((GtkAdjustment *)g_object_get_data (G_OBJECT(base), "x1"), base); + sp_export_area_y_value_changed ((GtkAdjustment *)g_object_get_data (G_OBJECT(base), "y1"), base); return; } /** - \brief Sets the value of an adjustment - \param base The export dialog - \param key Which adjustment to set - \param val What value to set it to - - This function finds the adjustment using the data stored in the - export dialog. After finding the adjustment it then sets - the value of it. -*/ -static void -sp_export_value_set ( GtkObject *base, const gchar *key, double val ) + * Sets the value of an adjustment. + * + * This function finds the adjustment using the data stored in the + * export dialog. After finding the adjustment it then sets + * the value of it. + * + * @param base The export dialog. + * @param key Which adjustment to set. + * @param val What value to set it to. + */ +static void sp_export_value_set( GtkObject *base, const gchar *key, double val ) { - GtkAdjustment *adj; - - adj = (GtkAdjustment *)gtk_object_get_data (base, key); + GtkAdjustment *adj = (GtkAdjustment *)g_object_get_data (G_OBJECT(base), key); gtk_adjustment_set_value (adj, val); } /** - \brief A function to set a value using the units points - \param base The export dialog - \param key Which value should be set - \param val What the value should be in points - - This function first gets the adjustment for the key that is passed - in. It then figures out what units are currently being used in the - dialog. After doing all of that, it then converts the incoming - value and sets the adjustment. -*/ -static void -sp_export_value_set_px (GtkObject *base, const gchar *key, double val) + * A function to set a value using the units points. + * + * This function first gets the adjustment for the key that is passed + * in. It then figures out what units are currently being used in the + * dialog. After doing all of that, it then converts the incoming + *value and sets the adjustment. + * + * @param base The export dialog. + * @param key Which value should be set. + * @param val What the value should be in points. + */ +static void sp_export_value_set_px(GtkObject *base, const gchar *key, double val) { - const SPUnit *unit = sp_unit_selector_get_unit ((SPUnitSelector *)gtk_object_get_data (base, "units") ); + const SPUnit *unit = sp_unit_selector_get_unit ((SPUnitSelector *)g_object_get_data (G_OBJECT(base), "units") ); sp_export_value_set (base, key, sp_pixels_get_units (val, *unit)); @@ -1979,69 +1977,68 @@ sp_export_value_set_px (GtkObject *base, const gchar *key, double val) } /** - \brief Get the value of an adjustment in the export dialog - \param base The export dialog - \param key Which adjustment is being looked for - \return The value in the specified adjustment - - This function gets the adjustment from the data field in the export - dialog. It then grabs the value from the adjustment. -*/ -static float -sp_export_value_get ( GtkObject *base, const gchar *key ) + * Get the value of an adjustment in the export dialog. + * + * This function gets the adjustment from the data field in the export + * dialog. It then grabs the value from the adjustment. + * + * @param base The export dialog. + * @param key Which adjustment is being looked for. + * @return The value in the specified adjustment. + */ +static float sp_export_value_get( GtkObject *base, const gchar *key ) { GtkAdjustment *adj; - adj = (GtkAdjustment *)gtk_object_get_data (base, key); + adj = (GtkAdjustment *)g_object_get_data (G_OBJECT(base), key); return adj->value; } /** - \brief Grabs a value in the export dialog and converts the unit - to points - \param base The export dialog - \param key Which value should be returned - \return The value in the adjustment in points - - This function, at its most basic, is a call to \c sp_export_value_get - to get the value of the adjustment. It then finds the units that - are being used by looking at the "units" attribute of the export - dialog. Using that it converts the returned value into points. -*/ -static float -sp_export_value_get_px ( GtkObject *base, const gchar *key ) + * Grabs a value in the export dialog and converts the unit + * to points. + * + * This function, at its most basic, is a call to \c sp_export_value_get + * to get the value of the adjustment. It then finds the units that + * are being used by looking at the "units" attribute of the export + * dialog. Using that it converts the returned value into points. + * + * @param base The export dialog. + * @param key Which value should be returned. + * @return The value in the adjustment in points. + */ +static float sp_export_value_get_px( GtkObject *base, const gchar *key ) { float value = sp_export_value_get(base, key); - const SPUnit *unit = sp_unit_selector_get_unit ((SPUnitSelector *)gtk_object_get_data (base, "units")); + const SPUnit *unit = sp_unit_selector_get_unit ((SPUnitSelector *)g_object_get_data (G_OBJECT(base), "units")); return sp_units_get_pixels (value, *unit); } // end of sp_export_value_get_px() /** - \brief This function is called when the filename is changed by - anyone. It resets the virgin bit. - \param object Text entry box - \param data The export dialog - \return None - - This function gets called when the text area is modified. It is - looking for the case where the text area is modified from its - original value. In that case it sets the "filename-modified" bit - to TRUE. If the text dialog returns back to the original text, the - bit gets reset. This should stop simple mistakes. -*/ -static void -sp_export_filename_modified (GtkObject * object, gpointer data) + * This function is called when the filename is changed by + * anyone. It resets the virgin bit. + * + * This function gets called when the text area is modified. It is + * looking for the case where the text area is modified from its + * original value. In that case it sets the "filename-modified" bit + * to TRUE. If the text dialog returns back to the original text, the + * bit gets reset. This should stop simple mistakes. + * + * @param object Text entry box. + * @param data The export dialog. + */ +static void sp_export_filename_modified(GtkObject * object, gpointer data) { GtkWidget * text_entry = (GtkWidget *)object; GtkWidget * export_dialog = (GtkWidget *)data; if (!strcmp(original_name, gtk_entry_get_text(GTK_ENTRY(text_entry)))) { - gtk_object_set_data (GTK_OBJECT (export_dialog), "filename-modified", (gpointer)FALSE); + g_object_set_data (G_OBJECT (export_dialog), "filename-modified", (gpointer)FALSE); // printf("Modified: FALSE\n"); } else { - gtk_object_set_data (GTK_OBJECT (export_dialog), "filename-modified", (gpointer)TRUE); + g_object_set_data (G_OBJECT (export_dialog), "filename-modified", (gpointer)TRUE); // printf("Modified: TRUE\n"); } diff --git a/src/dialogs/find.cpp b/src/dialogs/find.cpp index c112b3531..7219c910e 100644 --- a/src/dialogs/find.cpp +++ b/src/dialogs/find.cpp @@ -1,5 +1,6 @@ -/** @file - * @brief Find dialog +/** + * @file + * Find dialog. */ /* Authors: * bulia byak <bulia@users.sf.net> @@ -60,6 +61,7 @@ sp_find_dialog(){ #include "../sp-image.h" #include "../sp-offset.h" #include <xml/repr.h> +#include "sp-root.h" #define MIN_ONSCREEN_DISTANCE 50 @@ -192,7 +194,7 @@ bool item_attr_match(SPItem *item, const gchar *name, bool exact) GSList * filter_onefield (GSList *l, GObject *dlg, const gchar *field, bool (*match_function)(SPItem *, const gchar *, bool), bool exact) { - GtkWidget *widget = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (dlg), field)); + GtkWidget *widget = GTK_WIDGET (g_object_get_data(G_OBJECT (dlg), field)); const gchar *text = gtk_entry_get_text (GTK_ENTRY(widget)); if (strlen (text) != 0) { @@ -214,7 +216,7 @@ filter_onefield (GSList *l, GObject *dlg, const gchar *field, bool (*match_funct bool type_checkbox (GtkWidget *widget, const gchar *data) { - return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (widget), data))); + return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (widget), data))); } bool @@ -259,9 +261,9 @@ item_type_match (SPItem *item, GtkWidget *widget) GSList * filter_types (GSList *l, GObject *dlg, bool (*match_function)(SPItem *, GtkWidget *)) { - GtkWidget *widget = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (dlg), "types")); + GtkWidget *widget = GTK_WIDGET (g_object_get_data(G_OBJECT (dlg), "types")); - GtkWidget *alltypes = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (widget), "all")); + GtkWidget *alltypes = GTK_WIDGET (g_object_get_data(G_OBJECT (widget), "all")); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (alltypes))) return l; @@ -340,18 +342,18 @@ void sp_find_dialog_find(GObject *, GObject *dlg) { SPDesktop *desktop = SP_ACTIVE_DESKTOP; - bool hidden = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "includehidden"))); - bool locked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "includelocked"))); + bool hidden = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "includehidden"))); + bool locked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "includelocked"))); GSList *l = NULL; - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "inselection")))) { - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "inlayer")))) { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "inselection")))) { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "inlayer")))) { l = all_selection_items (desktop->selection, l, desktop->currentLayer(), hidden, locked); } else { l = all_selection_items (desktop->selection, l, NULL, hidden, locked); } } else { - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (dlg), "inlayer")))) { + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (dlg), "inlayer")))) { l = all_items (desktop->currentLayer(), l, hidden, locked); } else { l = all_items(sp_desktop_document(desktop)->getRoot(), l, hidden, locked); @@ -388,7 +390,7 @@ void sp_find_dialog_find(GObject *, GObject *dlg) void sp_find_reset_searchfield (GObject *dlg, const gchar *field) { - GtkWidget *widget = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (dlg), field)); + GtkWidget *widget = GTK_WIDGET (g_object_get_data(G_OBJECT (dlg), field)); gtk_entry_set_text (GTK_ENTRY(widget), ""); } @@ -401,8 +403,8 @@ sp_find_dialog_reset (GObject *, GObject *dlg) sp_find_reset_searchfield (dlg, "style"); sp_find_reset_searchfield (dlg, "attr"); - GtkWidget *types = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (dlg), "types")); - GtkToggleButton *tb = GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (types), "all")); + GtkWidget *types = GTK_WIDGET (g_object_get_data(G_OBJECT (dlg), "types")); + GtkToggleButton *tb = GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (types), "all")); gtk_toggle_button_toggled (tb); gtk_toggle_button_set_active (tb, TRUE); } @@ -411,7 +413,7 @@ sp_find_dialog_reset (GObject *, GObject *dlg) #define FIND_LABELWIDTH 80 void -sp_find_new_searchfield (GtkWidget *dlg, GtkWidget *vb, const gchar *label, const gchar *id, GtkTooltips *tt, const gchar *tip) +sp_find_new_searchfield (GtkWidget *dlg, GtkWidget *vb, const gchar *label, const gchar *id, const gchar *tip) { GtkWidget *hb = gtk_hbox_new (FALSE, 0); GtkWidget *l = gtk_label_new_with_mnemonic (label); @@ -422,8 +424,8 @@ sp_find_new_searchfield (GtkWidget *dlg, GtkWidget *vb, const gchar *label, cons GtkWidget *tf = gtk_entry_new (); gtk_entry_set_max_length (GTK_ENTRY (tf), 64); gtk_box_pack_start (GTK_BOX (hb), tf, TRUE, TRUE, 0); - gtk_object_set_data (GTK_OBJECT (dlg), id, tf); - gtk_tooltips_set_tip (tt, tf, tip, NULL); + g_object_set_data (G_OBJECT (dlg), id, tf); + gtk_widget_set_tooltip_text (tf, tip); g_signal_connect ( G_OBJECT (tf), "activate", G_CALLBACK (sp_find_dialog_find), dlg ); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); @@ -431,10 +433,10 @@ sp_find_new_searchfield (GtkWidget *dlg, GtkWidget *vb, const gchar *label, cons } void -sp_find_new_button (GtkWidget *dlg, GtkWidget *hb, const gchar *label, GtkTooltips *tt, const gchar *tip, void (*function) (GObject *, GObject *)) +sp_find_new_button (GtkWidget *dlg, GtkWidget *hb, const gchar *label, const gchar *tip, void (*function) (GObject *, GObject *)) { GtkWidget *b = gtk_button_new_with_mnemonic (label); - gtk_tooltips_set_tip (tt, b, tip, NULL); + gtk_widget_set_tooltip_text (b, tip); gtk_box_pack_start (GTK_BOX (hb), b, TRUE, TRUE, 0); g_signal_connect ( G_OBJECT (b), "clicked", G_CALLBACK (function), dlg ); gtk_widget_show (b); @@ -443,22 +445,22 @@ sp_find_new_button (GtkWidget *dlg, GtkWidget *hb, const gchar *label, GtkToolti void toggle_alltypes (GtkToggleButton *tb, gpointer data) { - GtkWidget *alltypes_pane = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (data), "all-pane")); + GtkWidget *alltypes_pane = GTK_WIDGET (g_object_get_data(G_OBJECT (data), "all-pane")); if (gtk_toggle_button_get_active (tb)) { - gtk_widget_hide_all (alltypes_pane); + gtk_widget_hide (alltypes_pane); } else { gtk_widget_show_all (alltypes_pane); // excplicit toggle to make sure its handler gets called, no matter what was the original state - gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "shapes"))); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "shapes")), TRUE); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "paths")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "texts")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "groups")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "clones")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "images")), TRUE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "offsets")), TRUE); + gtk_toggle_button_toggled (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "shapes"))); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "shapes")), TRUE); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "paths")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "texts")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "groups")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "clones")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "images")), TRUE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "offsets")), TRUE); } sp_find_squeeze_window(); } @@ -466,15 +468,15 @@ toggle_alltypes (GtkToggleButton *tb, gpointer data) void toggle_shapes (GtkToggleButton *tb, gpointer data) { - GtkWidget *shapes_pane = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (data), "shapes-pane")); + GtkWidget *shapes_pane = GTK_WIDGET (g_object_get_data(G_OBJECT (data), "shapes-pane")); if (gtk_toggle_button_get_active (tb)) { - gtk_widget_hide_all (shapes_pane); + gtk_widget_hide (shapes_pane); } else { gtk_widget_show_all (shapes_pane); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "rects")), FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "ellipses")), FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "stars")), FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (data), "spirals")), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "rects")), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "ellipses")), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "stars")), FALSE); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (g_object_get_data(G_OBJECT (data), "spirals")), FALSE); } sp_find_squeeze_window(); } @@ -482,7 +484,7 @@ toggle_shapes (GtkToggleButton *tb, gpointer data) GtkWidget * sp_find_types_checkbox (GtkWidget *w, const gchar *data, gboolean active, - GtkTooltips *tt, const gchar *tip, + const gchar *tip, const gchar *label, void (*toggled)(GtkToggleButton *, gpointer)) { @@ -493,10 +495,10 @@ sp_find_types_checkbox (GtkWidget *w, const gchar *data, gboolean active, GtkWidget *b = gtk_check_button_new_with_label (label); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, active); - gtk_object_set_data (GTK_OBJECT (w), data, b); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, tip, NULL); + g_object_set_data (G_OBJECT (w), data, b); + gtk_widget_set_tooltip_text (b, tip); if (toggled) - gtk_signal_connect (GTK_OBJECT (b), "toggled", GTK_SIGNAL_FUNC (toggled), w); + g_signal_connect (G_OBJECT (b), "toggled", G_CALLBACK (toggled), w); gtk_box_pack_start (GTK_BOX (hb), b, FALSE, FALSE, 0); } @@ -505,7 +507,7 @@ sp_find_types_checkbox (GtkWidget *w, const gchar *data, gboolean active, GtkWidget * sp_find_types_checkbox_indented (GtkWidget *w, const gchar *data, gboolean active, - GtkTooltips *tt, const gchar *tip, + const gchar *tip, const gchar *label, void (*toggled)(GtkToggleButton *, gpointer), guint indent) { @@ -519,7 +521,7 @@ sp_find_types_checkbox_indented (GtkWidget *w, const gchar *data, gboolean activ gtk_box_pack_start (GTK_BOX (hb), l, FALSE, FALSE, 0); } - GtkWidget *c = sp_find_types_checkbox (w, data, active, tt, tip, label, toggled); + GtkWidget *c = sp_find_types_checkbox (w, data, active, tip, label, toggled); gtk_box_pack_start (GTK_BOX (hb), c, FALSE, FALSE, 0); return hb; @@ -529,8 +531,6 @@ sp_find_types_checkbox_indented (GtkWidget *w, const gchar *data, gboolean activ GtkWidget * sp_find_types () { - GtkTooltips *tt = gtk_tooltips_new (); - GtkWidget *vb = gtk_vbox_new (FALSE, 4); gtk_widget_show (vb); @@ -546,7 +546,7 @@ sp_find_types () gtk_box_pack_start (GTK_BOX (hb), l, FALSE, FALSE, 0); } - GtkWidget *alltypes = sp_find_types_checkbox (vb, "all", TRUE, tt, _("Search in all object types"), _("All types"), toggle_alltypes); + GtkWidget *alltypes = sp_find_types_checkbox (vb, "all", TRUE, _("Search in all object types"), _("All types"), toggle_alltypes); gtk_box_pack_start (GTK_BOX (hb), alltypes, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vb), hb, FALSE, FALSE, 0); @@ -557,7 +557,7 @@ sp_find_types () gtk_widget_show (vb_all); { - GtkWidget *c = sp_find_types_checkbox_indented (vb, "shapes", FALSE, tt, _("Search all shapes"), _("All shapes"), toggle_shapes, 10); + GtkWidget *c = sp_find_types_checkbox_indented (vb, "shapes", FALSE, _("Search all shapes"), _("All shapes"), toggle_shapes, 10); gtk_box_pack_start (GTK_BOX (vb_all), c, FALSE, FALSE, 0); } @@ -574,68 +574,68 @@ sp_find_types () } { - GtkWidget *c = sp_find_types_checkbox (vb, "rects", FALSE, tt, _("Search rectangles"), _("Rectangles"), NULL); + GtkWidget *c = sp_find_types_checkbox (vb, "rects", FALSE, _("Search rectangles"), _("Rectangles"), NULL); gtk_box_pack_start (GTK_BOX (hb), c, FALSE, FALSE, 0); } { - GtkWidget *c = sp_find_types_checkbox (vb, "ellipses", FALSE, tt, _("Search ellipses, arcs, circles"), _("Ellipses"), NULL); + GtkWidget *c = sp_find_types_checkbox (vb, "ellipses", FALSE, _("Search ellipses, arcs, circles"), _("Ellipses"), NULL); gtk_box_pack_start (GTK_BOX (hb), c, FALSE, FALSE, 0); } { - GtkWidget *c = sp_find_types_checkbox (vb, "stars", FALSE, tt, _("Search stars and polygons"), _("Stars"), NULL); + GtkWidget *c = sp_find_types_checkbox (vb, "stars", FALSE, _("Search stars and polygons"), _("Stars"), NULL); gtk_box_pack_start (GTK_BOX (hb), c, FALSE, FALSE, 0); } { - GtkWidget *c = sp_find_types_checkbox (vb, "spirals", FALSE, tt, _("Search spirals"), _("Spirals"), NULL); + GtkWidget *c = sp_find_types_checkbox (vb, "spirals", FALSE, _("Search spirals"), _("Spirals"), NULL); gtk_box_pack_start (GTK_BOX (hb), c, FALSE, FALSE, 0); } - gtk_object_set_data (GTK_OBJECT (vb), "shapes-pane", hb); + g_object_set_data (G_OBJECT (vb), "shapes-pane", hb); gtk_box_pack_start (GTK_BOX (vb_all), hb, FALSE, FALSE, 0); - gtk_widget_hide_all (hb); + gtk_widget_hide (hb); } { // TRANSLATORS: polyline is a set of connected straight line segments // http://www.w3.org/TR/SVG11/shapes.html#PolylineElement - GtkWidget *c = sp_find_types_checkbox_indented (vb, "paths", TRUE, tt, _("Search paths, lines, polylines"), _("Paths"), NULL, 10); + GtkWidget *c = sp_find_types_checkbox_indented (vb, "paths", TRUE, _("Search paths, lines, polylines"), _("Paths"), NULL, 10); gtk_box_pack_start (GTK_BOX (vb_all), c, FALSE, FALSE, 0); } { - GtkWidget *c = sp_find_types_checkbox_indented (vb, "texts", TRUE, tt, _("Search text objects"), _("Texts"), NULL, 10); + GtkWidget *c = sp_find_types_checkbox_indented (vb, "texts", TRUE, _("Search text objects"), _("Texts"), NULL, 10); gtk_box_pack_start (GTK_BOX (vb_all), c, FALSE, FALSE, 0); } { - GtkWidget *c = sp_find_types_checkbox_indented (vb, "groups", TRUE, tt, _("Search groups"), _("Groups"), NULL, 10); + GtkWidget *c = sp_find_types_checkbox_indented (vb, "groups", TRUE, _("Search groups"), _("Groups"), NULL, 10); gtk_box_pack_start (GTK_BOX (vb_all), c, FALSE, FALSE, 0); } { - GtkWidget *c = sp_find_types_checkbox_indented (vb, "clones", TRUE, tt, _("Search clones"), + GtkWidget *c = sp_find_types_checkbox_indented (vb, "clones", TRUE, _("Search clones"), //TRANSLATORS: "Clones" is a noun indicating type of object to find C_("Find dialog","Clones"), NULL, 10); gtk_box_pack_start (GTK_BOX (vb_all), c, FALSE, FALSE, 0); } { - GtkWidget *c = sp_find_types_checkbox_indented (vb, "images", TRUE, tt, _("Search images"), _("Images"), NULL, 10); + GtkWidget *c = sp_find_types_checkbox_indented (vb, "images", TRUE, _("Search images"), _("Images"), NULL, 10); gtk_box_pack_start (GTK_BOX (vb_all), c, FALSE, FALSE, 0); } { - GtkWidget *c = sp_find_types_checkbox_indented (vb, "offsets", TRUE, tt, _("Search offset objects"), _("Offsets"), NULL, 10); + GtkWidget *c = sp_find_types_checkbox_indented (vb, "offsets", TRUE, _("Search offset objects"), _("Offsets"), NULL, 10); gtk_box_pack_start (GTK_BOX (vb_all), c, FALSE, FALSE, 0); } gtk_box_pack_start (GTK_BOX (vb), vb_all, FALSE, FALSE, 0); - gtk_object_set_data (GTK_OBJECT (vb), "all-pane", vb_all); - gtk_widget_hide_all (vb_all); + g_object_set_data (G_OBJECT (vb), "all-pane", vb_all); + gtk_widget_hide (vb_all); } return vb; @@ -677,32 +677,30 @@ sp_find_dialog_old (void) 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); + g_signal_connect ( G_OBJECT (dlg), "event", G_CALLBACK (sp_dialog_event_handler), dlg); - gtk_signal_connect ( GTK_OBJECT (dlg), "destroy", G_CALLBACK (sp_find_dialog_destroy), NULL ); - gtk_signal_connect ( GTK_OBJECT (dlg), "delete_event", G_CALLBACK (sp_find_dialog_delete), dlg); + g_signal_connect ( G_OBJECT (dlg), "destroy", G_CALLBACK (sp_find_dialog_destroy), NULL ); + g_signal_connect ( G_OBJECT (dlg), "delete_event", G_CALLBACK (sp_find_dialog_delete), dlg); g_signal_connect ( G_OBJECT (INKSCAPE), "shut_down", G_CALLBACK (sp_find_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); - GtkTooltips *tt = gtk_tooltips_new (); - gtk_container_set_border_width (GTK_CONTAINER (dlg), 4); /* Toplevel vbox */ GtkWidget *vb = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (dlg), vb); - sp_find_new_searchfield (dlg, vb, _("_Text:"), "text", tt, _("Find objects by their text content (exact or partial match)")); - sp_find_new_searchfield (dlg, vb, _("_ID:"), "id", tt, _("Find objects by the value of the id attribute (exact or partial match)")); - sp_find_new_searchfield (dlg, vb, _("_Style:"), "style", tt, _("Find objects by the value of the style attribute (exact or partial match)")); - sp_find_new_searchfield (dlg, vb, _("_Attribute:"), "attr", tt ,_("Find objects by the name of an attribute (exact or partial match)")); + sp_find_new_searchfield (dlg, vb, _("_Text:"), "text", _("Find objects by their text content (exact or partial match)")); + sp_find_new_searchfield (dlg, vb, _("_ID:"), "id", _("Find objects by the value of the id attribute (exact or partial match)")); + sp_find_new_searchfield (dlg, vb, _("_Style:"), "style", _("Find objects by the value of the style attribute (exact or partial match)")); + sp_find_new_searchfield (dlg, vb, _("_Attribute:"), "attr", _("Find objects by the name of an attribute (exact or partial match)")); gtk_widget_show_all (vb); GtkWidget *types = sp_find_types (); - gtk_object_set_data (GTK_OBJECT (dlg), "types", types); + g_object_set_data (G_OBJECT (dlg), "types", types); gtk_box_pack_start (GTK_BOX (vb), types, FALSE, FALSE, 0); { @@ -714,8 +712,8 @@ sp_find_dialog_old (void) GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Search in s_election")); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE); - gtk_object_set_data (GTK_OBJECT (dlg), "inselection", b); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("Limit search to the current selection"), NULL); + g_object_set_data (G_OBJECT (dlg), "inselection", b); + gtk_widget_set_tooltip_text (b, _("Limit search to the current selection")); gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0); } @@ -723,8 +721,8 @@ sp_find_dialog_old (void) GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Search in current _layer")); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE); - gtk_object_set_data (GTK_OBJECT (dlg), "inlayer", b); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("Limit search to the current layer"), NULL); + g_object_set_data (G_OBJECT (dlg), "inlayer", b); + gtk_widget_set_tooltip_text (b, _("Limit search to the current layer")); gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0); } @@ -732,8 +730,8 @@ sp_find_dialog_old (void) GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Include _hidden")); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE); - gtk_object_set_data (GTK_OBJECT (dlg), "includehidden", b); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("Include hidden objects in search"), NULL); + g_object_set_data (G_OBJECT (dlg), "includehidden", b); + gtk_widget_set_tooltip_text (b, _("Include hidden objects in search")); gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0); } @@ -741,8 +739,8 @@ sp_find_dialog_old (void) GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Include l_ocked")); gtk_widget_show (b); gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE); - gtk_object_set_data (GTK_OBJECT (dlg), "includelocked", b); - gtk_tooltips_set_tip (GTK_TOOLTIPS (tt), b, _("Include locked objects in search"), NULL); + g_object_set_data (G_OBJECT (dlg), "includelocked", b); + gtk_widget_set_tooltip_text (b, _("Include locked objects in search")); gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0); } } @@ -753,8 +751,8 @@ sp_find_dialog_old (void) gtk_box_pack_start (GTK_BOX (vb), hb, FALSE, FALSE, 0); // TRANSLATORS: "Clear" is a verb here - sp_find_new_button (dlg, hb, _("_Clear"), tt, _("Clear values"), sp_find_dialog_reset); - sp_find_new_button (dlg, hb, _("_Find"), tt, _("Select objects matching all of the fields you filled in"), sp_find_dialog_find); + sp_find_new_button (dlg, hb, _("_Clear"), _("Clear values"), sp_find_dialog_reset); + sp_find_new_button (dlg, hb, _("_Find"), _("Select objects matching all of the fields you filled in"), sp_find_dialog_find); } } diff --git a/src/dialogs/find.h b/src/dialogs/find.h index fe5861a73..219c36bf2 100644 --- a/src/dialogs/find.h +++ b/src/dialogs/find.h @@ -12,7 +12,7 @@ #ifndef SEEN_FIND_H #define SEEN_FIND_H -#include <gtk/gtkstyle.h> +#include <gtk/gtk.h> void sp_find_dialog(); diff --git a/src/dialogs/item-properties.cpp b/src/dialogs/item-properties.cpp index 94b8b1e98..2e805c14e 100644 --- a/src/dialogs/item-properties.cpp +++ b/src/dialogs/item-properties.cpp @@ -1,13 +1,15 @@ -/** @file - * @brief Object properties dialog +/** + * @file + * Object properties dialog. */ /* Authors: * Lauris Kaplinski <lauris@kaplinski.com> * bulia byak <buliabyak@users.sf.net> * Johan Engelen <goejendaagh@zonnet.nl> * Abhishek Sharma + * Kris De Gussem <Kris.DeGussem@gmail.com> * - * Copyright (C) 1999-2006 Authors + * Copyright (C) 1999-2011 Authors * Copyright (C) 2001 Ximian, Inc. * * Released under GNU GPL, read the file 'COPYING' for more information @@ -16,21 +18,12 @@ #ifdef HAVE_CONFIG_H # include "config.h" #endif -#include <gtk/gtkvbox.h> -#include <gtk/gtkhbox.h> -#include <gtk/gtktable.h> -#include <gtk/gtkcheckbutton.h> #include <gtk/gtk.h> -#include <gtk/gtklabel.h> -#include <gtk/gtkframe.h> -#include <gtk/gtkexpander.h> -#include <gtk/gtktextview.h> -#include <gtk/gtktooltips.h> +#include <glibmm/i18n.h> #include "../desktop-handles.h" #include "dialog-events.h" #include "../document.h" -#include <glibmm/i18n.h> #include "../helper/window.h" #include "../inkscape.h" #include "../interface.h" @@ -47,6 +40,7 @@ using Inkscape::DocumentUndo; #define MIN_ONSCREEN_DISTANCE 50 static GtkWidget *dlg = NULL; +static SPAttributeTable* attrTable = NULL; static win_data wd; // impossible original values to make sure they are read from prefs @@ -60,16 +54,18 @@ static void sp_item_widget_sensitivity_toggled (GtkWidget *widget, SPWidget *spw static void sp_item_widget_hidden_toggled (GtkWidget *widget, SPWidget *spw); static void sp_item_widget_label_changed (GtkWidget *widget, SPWidget *spw); -static void -sp_item_dialog_destroy( GtkObject */*object*/, gpointer /*data*/ ) +static void sp_item_dialog_destroy( GtkObject */*object*/, gpointer /*data*/ ) { + if (attrTable) + { + delete attrTable; + } sp_signal_disconnect_by_data (INKSCAPE, dlg); wd.win = dlg = NULL; wd.stop = 0; } -static gboolean -sp_item_dialog_delete( GtkObject */*object*/, GdkEvent */*event*/, gpointer /*data*/ ) +static gboolean sp_item_dialog_delete( GtkObject */*object*/, GdkEvent */*event*/, gpointer /*data*/ ) { gtk_window_get_position ((GtkWindow *) dlg, &x, &y); gtk_window_get_size ((GtkWindow *) dlg, &w, &h); @@ -88,25 +84,21 @@ sp_item_dialog_delete( GtkObject */*object*/, GdkEvent */*event*/, gpointer /*da } /** - * \brief Creates new instance of item properties widget - * + * Creates new instance of item properties widget. */ -GtkWidget * -sp_item_widget_new (void) +GtkWidget *sp_item_widget_new(void) { GtkWidget *spw, *vb, *t, *cb, *l, *f, *tf, *pb, *int_expander, *int_label; GtkTextBuffer *desc_buffer; - GtkTooltips *tt = gtk_tooltips_new(); - /* Create container widget */ spw = sp_widget_new_global (INKSCAPE); - gtk_signal_connect ( GTK_OBJECT (spw), "modify_selection", - GTK_SIGNAL_FUNC (sp_item_widget_modify_selection), + g_signal_connect ( G_OBJECT (spw), "modify_selection", + G_CALLBACK (sp_item_widget_modify_selection), spw ); - gtk_signal_connect ( GTK_OBJECT (spw), "change_selection", - GTK_SIGNAL_FUNC (sp_item_widget_change_selection), + g_signal_connect ( G_OBJECT (spw), "change_selection", + G_CALLBACK (sp_item_widget_change_selection), spw ); vb = gtk_vbox_new (FALSE, 0); @@ -125,16 +117,16 @@ sp_item_widget_new (void) gtk_table_attach ( GTK_TABLE (t), l, 0, 1, 0, 1, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "id_label", l); + g_object_set_data (G_OBJECT (spw), "id_label", l); /* Create the entry box for the object id */ tf = gtk_entry_new (); - gtk_tooltips_set_tip (tt, tf, _("The id= attribute (only letters, digits, and the characters .-_: allowed)"), NULL); + gtk_widget_set_tooltip_text (tf, _("The id= attribute (only letters, digits, and the characters .-_: allowed)")); gtk_entry_set_max_length (GTK_ENTRY (tf), 64); gtk_table_attach ( GTK_TABLE (t), tf, 1, 2, 0, 1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "id", tf); + g_object_set_data (G_OBJECT (spw), "id", tf); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); // pressing enter in the id field is the same as clicking Set: @@ -142,31 +134,22 @@ sp_item_widget_new (void) // focus is in the id field initially: gtk_widget_grab_focus (GTK_WIDGET (tf)); - /* Button for setting the object's id, label, title and description. */ - pb = gtk_button_new_with_mnemonic (_("_Set")); - gtk_table_attach ( GTK_TABLE (t), pb, 2, 3, 0, 1, - (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), - (GtkAttachOptions)0, 0, 0 ); - gtk_signal_connect ( GTK_OBJECT (pb), "clicked", - GTK_SIGNAL_FUNC (sp_item_widget_label_changed), - spw ); - /* Create the label for the object label */ l = gtk_label_new_with_mnemonic (_("_Label:")); gtk_misc_set_alignment (GTK_MISC (l), 1, 0.5); gtk_table_attach ( GTK_TABLE (t), l, 0, 1, 1, 2, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "label_label", l); + g_object_set_data (G_OBJECT (spw), "label_label", l); /* Create the entry box for the object label */ tf = gtk_entry_new (); - gtk_tooltips_set_tip (tt, tf, _("A freeform label for the object"), NULL); + gtk_widget_set_tooltip_text (tf, _("A freeform label for the object")); gtk_entry_set_max_length (GTK_ENTRY (tf), 256); gtk_table_attach ( GTK_TABLE (t), tf, 1, 2, 1, 2, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "label", tf); + g_object_set_data (G_OBJECT (spw), "label", tf); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); // pressing enter in the label field is the same as clicking Set: @@ -178,7 +161,7 @@ sp_item_widget_new (void) gtk_table_attach ( GTK_TABLE (t), l, 0, 1, 2, 3, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "title_label", l); + g_object_set_data (G_OBJECT (spw), "title_label", l); /* Create the entry box for the object title */ tf = gtk_entry_new (); @@ -187,7 +170,7 @@ sp_item_widget_new (void) gtk_table_attach ( GTK_TABLE (t), tf, 1, 3, 2, 3, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_object_set_data (GTK_OBJECT (spw), "title", tf); + g_object_set_data (G_OBJECT (spw), "title", tf); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); /* Create the frame for the object description */ @@ -204,14 +187,14 @@ sp_item_widget_new (void) gtk_widget_set_sensitive (GTK_WIDGET (textframe), FALSE); gtk_container_add (GTK_CONTAINER (f), textframe); gtk_frame_set_shadow_type (GTK_FRAME (textframe), GTK_SHADOW_IN); - gtk_object_set_data(GTK_OBJECT(spw), "desc_frame", textframe); + g_object_set_data(G_OBJECT(spw), "desc_frame", textframe); tf = gtk_text_view_new(); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tf), GTK_WRAP_WORD); desc_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tf)); gtk_text_buffer_set_text(desc_buffer, "", -1); gtk_container_add (GTK_CONTAINER (textframe), tf); - gtk_object_set_data (GTK_OBJECT (spw), "desc", tf); + g_object_set_data (G_OBJECT (spw), "desc", tf); gtk_label_set_mnemonic_widget (GTK_LABEL (gtk_frame_get_label_widget (GTK_FRAME (f))), tf); /* Check boxes */ @@ -223,30 +206,37 @@ sp_item_widget_new (void) /* Hide */ cb = gtk_check_button_new_with_mnemonic (_("_Hide")); - gtk_tooltips_set_tip (tt, cb, _("Check to make the object invisible"), NULL); + gtk_widget_set_tooltip_text (cb, _("Check to make the object invisible")); gtk_table_attach ( GTK_TABLE (t), cb, 0, 1, 0, 1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); g_signal_connect (G_OBJECT(cb), "toggled", G_CALLBACK(sp_item_widget_hidden_toggled), spw); - gtk_object_set_data(GTK_OBJECT(spw), "hidden", cb); + g_object_set_data(G_OBJECT(spw), "hidden", cb); + + /* Button for setting the object's id, label, title and description. */ + pb = gtk_button_new_with_mnemonic (_("_Set")); + gtk_box_pack_start (GTK_BOX (hb_cb), pb, TRUE, TRUE, 10); + g_signal_connect ( G_OBJECT (pb), "clicked", + G_CALLBACK (sp_item_widget_label_changed), + spw ); /* Lock */ // TRANSLATORS: "Lock" is a verb here cb = gtk_check_button_new_with_mnemonic (_("L_ock")); - gtk_tooltips_set_tip (tt, cb, _("Check to make the object insensitive (not selectable by mouse)"), NULL); + gtk_widget_set_tooltip_text (cb, _("Check to make the object insensitive (not selectable by mouse)")); gtk_table_attach ( GTK_TABLE (t), cb, 1, 2, 0, 1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); - gtk_signal_connect ( GTK_OBJECT (cb), "toggled", - GTK_SIGNAL_FUNC (sp_item_widget_sensitivity_toggled), + g_signal_connect ( G_OBJECT (cb), "toggled", + G_CALLBACK (sp_item_widget_sensitivity_toggled), spw ); - gtk_object_set_data (GTK_OBJECT (spw), "sensitive", cb); + g_object_set_data (G_OBJECT (spw), "sensitive", cb); /* Create the frame for interactivity options */ int_label = gtk_label_new_with_mnemonic (_("_Interactivity")); int_expander = gtk_expander_new (NULL); gtk_expander_set_label_widget (GTK_EXPANDER (int_expander),int_label); - gtk_object_set_data (GTK_OBJECT (spw), "interactivity", int_expander); + g_object_set_data (G_OBJECT (spw), "interactivity", int_expander); gtk_box_pack_start (GTK_BOX (vb), int_expander, FALSE, FALSE, 0); @@ -260,8 +250,7 @@ sp_item_widget_new (void) -static void -sp_item_widget_modify_selection( SPWidget *spw, +static void sp_item_widget_modify_selection( SPWidget *spw, Inkscape::Selection *selection, guint /*flags*/, GtkWidget */*itemw*/ ) @@ -271,8 +260,7 @@ sp_item_widget_modify_selection( SPWidget *spw, -static void -sp_item_widget_change_selection ( SPWidget *spw, +static void sp_item_widget_change_selection ( SPWidget *spw, Inkscape::Selection *selection, GtkWidget */*itemw*/ ) { @@ -281,14 +269,13 @@ sp_item_widget_change_selection ( SPWidget *spw, /** -* \param selection Selection to use; should not be NULL. -*/ -static void -sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) + * @param selection Selection to use; should not be NULL. + */ +static void sp_item_widget_setup( SPWidget *spw, Inkscape::Selection *selection ) { g_assert (selection != NULL); - if (gtk_object_get_data (GTK_OBJECT (spw), "blocked")) + if (g_object_get_data(G_OBJECT (spw), "blocked")) return; if (!selection->singleItem()) { @@ -298,51 +285,51 @@ sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) gtk_widget_set_sensitive (GTK_WIDGET (spw), TRUE); } - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); SPItem *item = selection->singleItem(); /* Sensitive */ - GtkWidget *w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "sensitive")); + GtkWidget *w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "sensitive")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), item->isLocked()); /* Hidden */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "hidden")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "hidden")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), item->isExplicitlyHidden()); if (item->cloned) { /* ID */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id")); gtk_entry_set_text (GTK_ENTRY (w), ""); gtk_widget_set_sensitive (w, FALSE); - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id_label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id_label")); gtk_label_set_text (GTK_LABEL (w), _("Ref")); /* Label */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "label")); gtk_entry_set_text (GTK_ENTRY (w), ""); gtk_widget_set_sensitive (w, FALSE); - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "label_label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "label_label")); gtk_label_set_text (GTK_LABEL (w), _("Ref")); } else { SPObject *obj = (SPObject*)item; /* ID */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id")); gtk_entry_set_text (GTK_ENTRY (w), obj->getId()); gtk_widget_set_sensitive (w, TRUE); - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id_label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id_label")); gtk_label_set_markup_with_mnemonic (GTK_LABEL (w), _("_ID:")); /* Label */ - w = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "label")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "label")); gtk_entry_set_text (GTK_ENTRY (w), obj->defaultLabel()); gtk_widget_set_sensitive (w, TRUE); /* Title */ - w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "title")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "title")); gchar *title = obj->title(); if (title) { gtk_entry_set_text(GTK_ENTRY(w), title); @@ -352,7 +339,7 @@ sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) gtk_widget_set_sensitive(w, TRUE); /* Description */ - w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "desc")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "desc")); GtkTextBuffer *buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(w)); gchar *desc = obj->desc(); if (desc) { @@ -361,87 +348,90 @@ sp_item_widget_setup ( SPWidget *spw, Inkscape::Selection *selection ) } else { gtk_text_buffer_set_text(buf, "", 0); } - w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "desc_frame")); + w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "desc_frame")); gtk_widget_set_sensitive(w, TRUE); - w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "interactivity")); - - GtkWidget* int_table = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "interactivity_table")); - if (int_table){ - gtk_container_remove(GTK_CONTAINER(w), int_table); + w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "interactivity")); + + GtkWidget* int_table = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "interactivity_table")); + + std::vector<Glib::ustring> int_labels; + int_labels.push_back("onclick"); + int_labels.push_back("onmouseover"); + int_labels.push_back("onmouseout"); + int_labels.push_back("onmousedown"); + int_labels.push_back("onmouseup"); + int_labels.push_back("onmousemove"); + int_labels.push_back("onfocusin"); + int_labels.push_back("onfocusout"); + int_labels.push_back("onfocusout"); + int_labels.push_back("onload"); + + if (attrTable) + { + delete(attrTable); } - - const gchar* int_labels[10] = {"onclick", "onmouseover", "onmouseout", "onmousedown", "onmouseup", "onmousemove","onfocusin", "onfocusout", "onactivate", "onload"}; - - int_table = sp_attribute_table_new (obj, 10, int_labels, int_labels); - gtk_widget_show_all (int_table); - gtk_object_set_data(GTK_OBJECT(spw), "interactivity_table", int_table); - - gtk_container_add (GTK_CONTAINER (w), int_table); - + attrTable = new SPAttributeTable (obj, int_labels, int_labels, w); + attrTable->show_all(); + g_object_set_data(G_OBJECT(spw), "interactivity_table", (GtkWidget*) attrTable->gobj()); } - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); - - + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); } // end of sp_item_widget_setup() -static void -sp_item_widget_sensitivity_toggled (GtkWidget *widget, SPWidget *spw) +static void sp_item_widget_sensitivity_toggled (GtkWidget *widget, SPWidget *spw) { - if (gtk_object_get_data (GTK_OBJECT (spw), "blocked")) + if (g_object_get_data(G_OBJECT (spw), "blocked")) return; SPItem *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->singleItem(); g_return_if_fail (item != NULL); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); item->setLocked(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))); DocumentUndo::done(SP_ACTIVE_DOCUMENT, SP_VERB_DIALOG_ITEM, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))? _("Lock object") : _("Unlock object")); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); } -void -sp_item_widget_hidden_toggled(GtkWidget *widget, SPWidget *spw) +void sp_item_widget_hidden_toggled(GtkWidget *widget, SPWidget *spw) { - if (gtk_object_get_data (GTK_OBJECT (spw), "blocked")) + if (g_object_get_data(G_OBJECT (spw), "blocked")) return; SPItem *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->singleItem(); g_return_if_fail (item != NULL); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); item->setExplicitlyHidden(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))); DocumentUndo::done(SP_ACTIVE_DOCUMENT, SP_VERB_DIALOG_ITEM, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))? _("Hide object") : _("Unhide object")); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); } -static void -sp_item_widget_label_changed( GtkWidget */*widget*/, SPWidget *spw ) +static void sp_item_widget_label_changed( GtkWidget */*widget*/, SPWidget *spw ) { - if (gtk_object_get_data (GTK_OBJECT (spw), "blocked")) + if (g_object_get_data(G_OBJECT (spw), "blocked")) return; SPItem *item = sp_desktop_selection(SP_ACTIVE_DESKTOP)->singleItem(); g_return_if_fail (item != NULL); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (TRUE)); /* Retrieve the label widget for the object's id */ - GtkWidget *id_entry = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id")); + GtkWidget *id_entry = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id")); gchar *id = (gchar *) gtk_entry_get_text (GTK_ENTRY (id_entry)); g_strcanon (id, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.:", '_'); - GtkWidget *id_label = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "id_label")); + GtkWidget *id_label = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "id_label")); if (!strcmp (id, item->getId())) { gtk_label_set_markup_with_mnemonic (GTK_LABEL (id_label), _("_ID:")); } else if (!*id || !isalnum (*id)) { @@ -458,7 +448,7 @@ sp_item_widget_label_changed( GtkWidget */*widget*/, SPWidget *spw ) } /* Retrieve the label widget for the object's label */ - GtkWidget *label_entry = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (spw), "label")); + GtkWidget *label_entry = GTK_WIDGET(g_object_get_data(G_OBJECT (spw), "label")); gchar *label = (gchar *)gtk_entry_get_text (GTK_ENTRY (label_entry)); g_assert(label != NULL); @@ -473,14 +463,14 @@ sp_item_widget_label_changed( GtkWidget */*widget*/, SPWidget *spw ) } /* Retrieve the title */ - GtkWidget *w = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(spw), "title")); + GtkWidget *w = GTK_WIDGET(g_object_get_data(G_OBJECT(spw), "title")); gchar *title = (gchar *)gtk_entry_get_text(GTK_ENTRY (w)); if (obj->setTitle(title)) DocumentUndo::done(SP_ACTIVE_DOCUMENT, SP_VERB_DIALOG_ITEM, _("Set object title")); /* Retrieve the description */ - GtkTextView *tv = GTK_TEXT_VIEW(gtk_object_get_data(GTK_OBJECT(spw), "desc")); + GtkTextView *tv = GTK_TEXT_VIEW(g_object_get_data(G_OBJECT(spw), "desc")); GtkTextBuffer *buf = gtk_text_view_get_buffer(tv); GtkTextIter start, end; gtk_text_buffer_get_bounds(buf, &start, &end); @@ -490,25 +480,24 @@ sp_item_widget_label_changed( GtkWidget */*widget*/, SPWidget *spw ) _("Set object description")); g_free(desc); - gtk_object_set_data (GTK_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (spw), "blocked", GUINT_TO_POINTER (FALSE)); } // end of sp_item_widget_label_changed() /** - * \brief Dialog - * + * Dialog. */ -void -sp_item_dialog (void) +void sp_item_dialog(void) { if (dlg == NULL) { gchar title[500]; sp_ui_dialog_title_string (Inkscape::Verb::get(SP_VERB_DIALOG_ITEM), title); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - - dlg = sp_window_new (title, TRUE); + + Gtk::Window* window = Inkscape::UI::window_new (title, true); + dlg = (GtkWidget*)window->gobj(); if (x == -1000 || y == -1000) { x = prefs->getInt(prefs_path + "x", -1000); y = prefs->getInt(prefs_path + "y", -1000); @@ -518,9 +507,6 @@ sp_item_dialog (void) h = prefs->getInt(prefs_path + "h", 0); } -// if (x<0) x=0; -// if (y<0) y=0; - if (w && h) { gtk_window_resize ((GtkWindow *) dlg, w, h); } @@ -530,24 +516,22 @@ sp_item_dialog (void) gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER); } - sp_transientize (dlg); 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_item_dialog_destroy), dlg); - gtk_signal_connect ( GTK_OBJECT (dlg), "delete_event", G_CALLBACK (sp_item_dialog_delete), dlg); - g_signal_connect ( G_OBJECT (INKSCAPE), "shut_down", G_CALLBACK (sp_item_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); + g_signal_connect ( G_OBJECT (INKSCAPE), "activate_desktop", G_CALLBACK (sp_transientize_callback), &wd); + g_signal_connect ( G_OBJECT (dlg), "event", G_CALLBACK (sp_dialog_event_handler), dlg); + g_signal_connect ( G_OBJECT (dlg), "destroy", G_CALLBACK (sp_item_dialog_destroy), dlg); + g_signal_connect ( G_OBJECT (dlg), "delete_event", G_CALLBACK (sp_item_dialog_delete), dlg); + g_signal_connect ( G_OBJECT (INKSCAPE), "shut_down", G_CALLBACK (sp_item_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); // Dialog-specific stuff GtkWidget *itemw = sp_item_widget_new (); gtk_widget_show (itemw); gtk_container_add (GTK_CONTAINER (dlg), itemw); - } gtk_window_present ((GtkWindow *) dlg); diff --git a/src/dialogs/item-properties.h b/src/dialogs/item-properties.h index bc04608bc..51f5d7032 100644 --- a/src/dialogs/item-properties.h +++ b/src/dialogs/item-properties.h @@ -11,13 +11,11 @@ #ifndef SEEN_DIALOGS_ITEM_PROPERTIES_H #define SEEN_DIALOGS_ITEM_PROPERTIES_H -#include <glib.h> -#include <gtk/gtkwidget.h> -#include "../forward.h" +#include <gtk/gtk.h> -GtkWidget *sp_item_widget_new (void); +GtkWidget *sp_item_widget_new(void); -void sp_item_dialog (void); +void sp_item_dialog(void); #endif diff --git a/src/dialogs/object-attributes.cpp b/src/dialogs/object-attributes.cpp index 57b295e4e..0511ebb3a 100644 --- a/src/dialogs/object-attributes.cpp +++ b/src/dialogs/object-attributes.cpp @@ -1,11 +1,13 @@ -/** @file - * @brief Generic properties editor +/** + * @file + * Generic properties editor. */ /* Authors: * Lauris Kaplinski <lauris@kaplinski.com> * bulia byak <buliabyak@users.sf.net> + * Kris De Gussem <Kris.DeGussem@gmail.com> * - * Copyright (C) 1999-2005 Authors + * Copyright (C) 1999-2011 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -65,75 +67,41 @@ static const SPAttrDesc image_nohref_desc[] = { }; -static void -object_released( SPObject */*object*/, GtkWidget *widget ) -{ - gtk_widget_destroy (widget); -} - - - -static void -window_destroyed( GtkObject *window, GtkObject */*object*/ ) -{ - sigc::connection *release_connection = (sigc::connection *)g_object_get_data(G_OBJECT(window), "release_connection"); - release_connection->disconnect(); - delete release_connection; -} - - - -static void -sp_object_attr_show_dialog ( SPObject *object, +static void sp_object_attr_show_dialog ( SPObject *object, const SPAttrDesc *desc, const gchar *tag ) { - const gchar **labels, **attrs; - gint len, i; - gchar *title; - GtkWidget *w, *t; - - len = 0; - while (desc[len].label) len += 1; - - labels = (const gchar **)alloca (len * sizeof (char *)); - attrs = (const gchar **)alloca (len * sizeof (char *)); - - for (i = 0; i < len; i++) { - labels[i] = desc[i].label; - attrs[i] = desc[i].attribute; - } + int len; + Gtk::Window *window; + SPAttributeTable* t; + Glib::ustring title; + std::vector<Glib::ustring> labels; + std::vector<Glib::ustring> attrs; if (!strcmp (tag, "Link")) { - title = g_strdup_printf (_("Link Properties")); + title = _("Link Properties"); } else if (!strcmp (tag, "Image")) { - title = g_strdup_printf (_("Image Properties")); + title = _("Image Properties"); } else { - title = g_strdup_printf (_("%s Properties"), tag); + title = Glib::ustring::compose(_("%1 Properties"), tag); } - w = sp_window_new (title, TRUE); - g_free (title); - - t = sp_attribute_table_new (object, len, labels, attrs); - gtk_widget_show (t); - gtk_container_add (GTK_CONTAINER (w), t); - - g_signal_connect ( G_OBJECT (w), "destroy", - G_CALLBACK (window_destroyed), object ); - - sigc::connection *release_connection = new sigc::connection(); - *release_connection = object->connectRelease(sigc::bind<1>(sigc::ptr_fun(&object_released), w)); - g_object_set_data(G_OBJECT(w), "release_connection", release_connection); - - gtk_widget_show (w); - + len = 0; + while (desc[len].label) + { + labels.push_back(desc[len].label); + attrs.push_back (desc[len].attribute); + len += 1; + } + + window = Inkscape::UI::window_new (title.c_str(), true); + t = new SPAttributeTable (object, labels, attrs, (GtkWidget*)window->gobj()); + t->show(); + window->show(); } // end of sp_object_attr_show_dialog() - -void -sp_object_attributes_dialog (SPObject *object, const gchar *tag) +void sp_object_attributes_dialog (SPObject *object, const gchar *tag) { g_return_if_fail (object != NULL); g_return_if_fail (SP_IS_OBJECT (object)); diff --git a/src/dialogs/object-attributes.h b/src/dialogs/object-attributes.h index ef84708c0..53b3ee37f 100644 --- a/src/dialogs/object-attributes.h +++ b/src/dialogs/object-attributes.h @@ -13,8 +13,8 @@ #define SEEN_DIALOGS_OBJECT_ATTRIBUTES_H #include <glib.h> -#include <gtk/gtkwidget.h> -#include "../forward.h" + +class SPObject; void sp_object_attributes_dialog (SPObject *object, const gchar *tag); diff --git a/src/dialogs/spellcheck.cpp b/src/dialogs/spellcheck.cpp index f72612420..847f5b877 100644 --- a/src/dialogs/spellcheck.cpp +++ b/src/dialogs/spellcheck.cpp @@ -1,5 +1,6 @@ -/** @file - * @brief Spellcheck dialog +/** + * @file + * Spellcheck dialog. */ /* Authors: * bulia byak <bulia@users.sf.net> @@ -40,6 +41,7 @@ #include "display/canvas-bpath.h" #include "display/curve.h" #include "document-undo.h" +#include "sp-root.h" #ifdef HAVE_ASPELL #include <aspell.h> @@ -184,13 +186,13 @@ static gboolean sp_spellcheck_dialog_delete(GtkObject *, GdkEvent *, gpointer /* } void -sp_spellcheck_new_button (GtkWidget *dlg, GtkWidget *hb, const gchar *label, GtkTooltips *tt, const gchar *tip, void (*function) (GObject *, GObject *), const gchar *cookie) +sp_spellcheck_new_button (GtkWidget *dlg, GtkWidget *hb, const gchar *label, const gchar *tip, void (*function) (GObject *, GObject *), const gchar *cookie) { GtkWidget *b = gtk_button_new_with_mnemonic (label); - gtk_tooltips_set_tip (tt, b, tip, NULL); + gtk_widget_set_tooltip_text (b, tip); gtk_box_pack_start (GTK_BOX (hb), b, TRUE, TRUE, 0); g_signal_connect ( G_OBJECT (b), "clicked", G_CALLBACK (function), dlg ); - gtk_object_set_data (GTK_OBJECT (dlg), cookie, b); + g_object_set_data (G_OBJECT (dlg), cookie, b); gtk_widget_show (b); } @@ -242,8 +244,8 @@ gint compare_text_bboxes (gconstpointer a, gconstpointer b) SPItem *i1 = SP_ITEM(a); SPItem *i2 = SP_ITEM(b); - Geom::OptRect bbox1 = i1->getBounds(i1->i2d_affine()); - Geom::OptRect bbox2 = i2->getBounds(i2->i2d_affine()); + Geom::OptRect bbox1 = i1->desktopVisualBounds(); + Geom::OptRect bbox2 = i2->desktopVisualBounds(); if (!bbox1 || !bbox2) { return 0; } @@ -286,7 +288,7 @@ SPItem *spellcheck_get_text (SPObject *root) void spellcheck_sensitive (const gchar *cookie, gboolean gray) { - GtkWidget *l = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (dlg), cookie)); + GtkWidget *l = GTK_WIDGET(g_object_get_data(G_OBJECT (dlg), cookie)); gtk_widget_set_sensitive(l, gray); } @@ -444,7 +446,7 @@ spellcheck_finished () spellcheck_sensitive("b_start", TRUE); { - GtkWidget *l = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (dlg), "banner")); + GtkWidget *l = GTK_WIDGET(g_object_get_data(G_OBJECT (dlg), "banner")); gchar *label; if (_stops) label = g_strdup_printf(_("<b>Finished</b>, <b>%d</b> words added to dictionary"), _adds); @@ -556,7 +558,7 @@ spellcheck_next_word() // display it in window { - GtkWidget *l = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (dlg), "banner")); + GtkWidget *l = GTK_WIDGET(g_object_get_data(G_OBJECT (dlg), "banner")); Glib::ustring langs = _lang; if (_lang2) langs = langs + ", " + _lang2; @@ -576,7 +578,7 @@ spellcheck_next_word() // draw rect std::vector<Geom::Point> points = - _layout->createSelectionShape(_begin_w, _end_w, _text->i2d_affine()); + _layout->createSelectionShape(_begin_w, _end_w, _text->i2dt_affine()); Geom::Point tl, br; tl = br = points.front(); for (unsigned i = 0 ; i < points.size() ; i ++) { @@ -640,7 +642,7 @@ spellcheck_next_word() // get suggestions { GtkTreeView *tree_view = - GTK_TREE_VIEW(gtk_object_get_data (GTK_OBJECT (dlg), "suggestions")); + GTK_TREE_VIEW(g_object_get_data(G_OBJECT (dlg), "suggestions")); GtkListStore *model = gtk_list_store_new (1, G_TYPE_STRING); gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model)); @@ -713,7 +715,7 @@ spellcheck_delete_last_rect () void do_spellcheck () { - GtkWidget *l = GTK_WIDGET(gtk_object_get_data (GTK_OBJECT (dlg), "banner")); + GtkWidget *l = GTK_WIDGET(g_object_get_data(G_OBJECT (dlg), "banner")); gtk_label_set_markup (GTK_LABEL(l), _("<i>Checking...</i>")); gtk_widget_queue_draw(GTK_WIDGET(dlg)); gdk_window_process_updates(GTK_WIDGET(dlg)->window, TRUE); @@ -769,7 +771,7 @@ sp_spellcheck_accept (GObject *, GObject *dlg) { // insert chosen suggestion GtkTreeView *tv = - GTK_TREE_VIEW(gtk_object_get_data (GTK_OBJECT (dlg), "suggestions")); + GTK_TREE_VIEW(g_object_get_data(G_OBJECT (dlg), "suggestions")); GtkTreeSelection *ts = gtk_tree_view_get_selection(tv); GtkTreeModel *model = 0; GtkTreeIter iter; @@ -819,7 +821,7 @@ sp_spellcheck_add (GObject */*obj*/, GObject */*dlg*/) { _adds++; GtkComboBox *cbox = - GTK_COMBO_BOX(gtk_object_get_data (GTK_OBJECT (dlg), "addto_langs")); + GTK_COMBO_BOX(g_object_get_data(G_OBJECT (dlg), "addto_langs")); gint num = gtk_combo_box_get_active(cbox); switch (num) { case 0: @@ -916,17 +918,15 @@ sp_spellcheck_dialog (void) g_signal_connect( G_OBJECT(INKSCAPE), "deactivate_desktop", G_CALLBACK( spellcheck_desktop_deactivated ), NULL); - gtk_signal_connect ( GTK_OBJECT (dlg), "event", GTK_SIGNAL_FUNC (sp_dialog_event_handler), dlg); + g_signal_connect ( G_OBJECT (dlg), "event", G_CALLBACK (sp_dialog_event_handler), dlg); - gtk_signal_connect ( GTK_OBJECT (dlg), "destroy", G_CALLBACK (sp_spellcheck_dialog_destroy), NULL ); - gtk_signal_connect ( GTK_OBJECT (dlg), "delete_event", G_CALLBACK (sp_spellcheck_dialog_delete), dlg); + g_signal_connect ( G_OBJECT (dlg), "destroy", G_CALLBACK (sp_spellcheck_dialog_destroy), NULL ); + g_signal_connect ( G_OBJECT (dlg), "delete_event", G_CALLBACK (sp_spellcheck_dialog_delete), dlg); g_signal_connect ( G_OBJECT (INKSCAPE), "shut_down", G_CALLBACK (sp_spellcheck_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); - GtkTooltips *tt = gtk_tooltips_new (); - gtk_container_set_border_width (GTK_CONTAINER (dlg), 4); /* Toplevel vbox */ @@ -936,7 +936,7 @@ sp_spellcheck_dialog (void) { GtkWidget *hb = gtk_hbox_new (FALSE, 0); GtkWidget *l = gtk_label_new (NULL); - gtk_object_set_data (GTK_OBJECT (dlg), "banner", l); + g_object_set_data (G_OBJECT (dlg), "banner", l); gtk_box_pack_start (GTK_BOX (hb), l, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vb), hb, FALSE, FALSE, 0); } @@ -949,7 +949,7 @@ sp_spellcheck_dialog (void) GtkListStore *model = gtk_list_store_new (1, G_TYPE_STRING); GtkWidget *tree_view = gtk_tree_view_new (); - gtk_object_set_data (GTK_OBJECT (dlg), "suggestions", tree_view); + g_object_set_data (G_OBJECT (dlg), "suggestions", tree_view); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), tree_view); gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model)); @@ -970,18 +970,18 @@ sp_spellcheck_dialog (void) { GtkWidget *hb = gtk_hbox_new (FALSE, 0); - sp_spellcheck_new_button (dlg, hb, _("_Accept"), tt, _("Accept the chosen suggestion"), + sp_spellcheck_new_button (dlg, hb, _("_Accept"), _("Accept the chosen suggestion"), sp_spellcheck_accept, "b_accept"); - sp_spellcheck_new_button (dlg, hb, _("_Ignore once"), tt, _("Ignore this word only once"), + sp_spellcheck_new_button (dlg, hb, _("_Ignore once"), _("Ignore this word only once"), sp_spellcheck_ignore_once, "b_ignore_once"); - sp_spellcheck_new_button (dlg, hb, _("_Ignore"), tt, _("Ignore this word in this session"), + sp_spellcheck_new_button (dlg, hb, _("_Ignore"), _("Ignore this word in this session"), sp_spellcheck_ignore, "b_ignore"); gtk_box_pack_start (GTK_BOX (vb), hb, FALSE, FALSE, 0); } { GtkWidget *hb = gtk_hbox_new (FALSE, 0); - sp_spellcheck_new_button (dlg, hb, _("A_dd to dictionary:"), tt, _("Add this word to the chosen dictionary"), + sp_spellcheck_new_button (dlg, hb, _("A_dd to dictionary:"), _("Add this word to the chosen dictionary"), sp_spellcheck_add, "b_add"); GtkComboBox *cbox = GTK_COMBO_BOX (gtk_combo_box_new_text()); gtk_combo_box_append_text (cbox, _lang); @@ -1005,9 +1005,9 @@ sp_spellcheck_dialog (void) { GtkWidget *hb = gtk_hbox_new (FALSE, 0); - sp_spellcheck_new_button (dlg, hb, _("_Stop"), tt, _("Stop the check"), + sp_spellcheck_new_button (dlg, hb, _("_Stop"), _("Stop the check"), sp_spellcheck_stop, "b_stop"); - sp_spellcheck_new_button (dlg, hb, _("_Start"), tt, _("Start the check"), + sp_spellcheck_new_button (dlg, hb, _("_Start"), _("Start the check"), sp_spellcheck_start, "b_start"); gtk_box_pack_start (GTK_BOX (vb), hb, FALSE, FALSE, 0); } diff --git a/src/dialogs/spellcheck.h b/src/dialogs/spellcheck.h index b941788ca..fe80be2cb 100644 --- a/src/dialogs/spellcheck.h +++ b/src/dialogs/spellcheck.h @@ -12,7 +12,7 @@ #ifndef SEEN_SPELLCHECK_H #define SEEN_SPELLCHECK_H -#include <gtk/gtkstyle.h> +#include <gtk/gtk.h> void sp_spellcheck_dialog(); diff --git a/src/dialogs/text-edit.cpp b/src/dialogs/text-edit.cpp index d741e2de0..ae34fe4b1 100644 --- a/src/dialogs/text-edit.cpp +++ b/src/dialogs/text-edit.cpp @@ -1,5 +1,6 @@ -/** @file - * @brief Text editing dialog +/** + * @file + * Text editing dialog. */ /* Authors: * Lauris Kaplinski <lauris@ximian.com> @@ -177,19 +178,15 @@ sp_text_edit_dialog (void) 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 ); + g_signal_connect ( G_OBJECT (dlg), "event", G_CALLBACK (sp_dialog_event_handler), dlg ); - gtk_signal_connect ( GTK_OBJECT (dlg), "destroy", G_CALLBACK (sp_text_edit_dialog_destroy), dlg ); - gtk_signal_connect ( GTK_OBJECT (dlg), "delete_event", G_CALLBACK (sp_text_edit_dialog_delete), dlg ); + g_signal_connect ( G_OBJECT (dlg), "destroy", G_CALLBACK (sp_text_edit_dialog_destroy), dlg ); + g_signal_connect ( G_OBJECT (dlg), "delete_event", G_CALLBACK (sp_text_edit_dialog_delete), dlg ); g_signal_connect ( G_OBJECT (INKSCAPE), "shut_down", G_CALLBACK (sp_text_edit_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 ); - gtk_window_set_policy (GTK_WINDOW (dlg), TRUE, TRUE, FALSE); - - GtkTooltips *tt = gtk_tooltips_new(); - // box containing the notebook and the bottom buttons GtkWidget *mainvb = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (dlg), mainvb); @@ -203,7 +200,7 @@ sp_text_edit_dialog (void) // Font tab { - GtkWidget *l = gtk_label_new (_("Font")); + GtkWidget *l = gtk_label_new_with_mnemonic (_("_Font")); GtkWidget *vb = gtk_vbox_new (FALSE, VB_MARGIN); gtk_container_set_border_width (GTK_CONTAINER (vb), VB_MARGIN); gtk_notebook_append_page (GTK_NOTEBOOK (nb), vb, l); @@ -240,7 +237,7 @@ sp_text_edit_dialog (void) // TODO - replace with Inkscape-specific call GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_LEFT, GTK_ICON_SIZE_LARGE_TOOLBAR ); GtkWidget *b = group = gtk_radio_button_new (NULL); - gtk_tooltips_set_tip (tt, b, _("Align lines left"), NULL); + gtk_widget_set_tooltip_text (b, _("Align lines left")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); g_signal_connect ( G_OBJECT (b), "toggled", G_CALLBACK (sp_text_edit_dialog_any_toggled), dlg); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (b), FALSE ); @@ -253,9 +250,9 @@ sp_text_edit_dialog (void) { // TODO - replace with Inkscape-specific call GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_CENTER, GTK_ICON_SIZE_LARGE_TOOLBAR ); - GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group))); + GtkWidget *b = gtk_radio_button_new (gtk_radio_button_get_group (GTK_RADIO_BUTTON (group))); /* TRANSLATORS: `Center' here is a verb. */ - gtk_tooltips_set_tip (tt, b, _("Center lines"), NULL); + gtk_widget_set_tooltip_text (b, _("Center lines")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); g_signal_connect ( G_OBJECT (b), "toggled", G_CALLBACK (sp_text_edit_dialog_any_toggled), dlg ); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (b), FALSE); @@ -268,8 +265,8 @@ sp_text_edit_dialog (void) { // TODO - replace with Inkscape-specific call GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_RIGHT, GTK_ICON_SIZE_LARGE_TOOLBAR ); - GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group))); - gtk_tooltips_set_tip (tt, b, _("Align lines right"), NULL); + GtkWidget *b = gtk_radio_button_new (gtk_radio_button_get_group (GTK_RADIO_BUTTON (group))); + gtk_widget_set_tooltip_text (b, _("Align lines right")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); g_signal_connect ( G_OBJECT (b), "toggled", G_CALLBACK (sp_text_edit_dialog_any_toggled), dlg ); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (b), FALSE); @@ -282,8 +279,8 @@ sp_text_edit_dialog (void) { // TODO - replace with Inkscape-specific call GtkWidget *px = gtk_image_new_from_stock ( GTK_STOCK_JUSTIFY_FILL, GTK_ICON_SIZE_LARGE_TOOLBAR ); - GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group))); - gtk_tooltips_set_tip (tt, b, _("Justify lines"), NULL); + GtkWidget *b = gtk_radio_button_new (gtk_radio_button_get_group (GTK_RADIO_BUTTON (group))); + gtk_widget_set_tooltip_text (b, _("Justify lines")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); g_signal_connect ( G_OBJECT (b), "toggled", G_CALLBACK (sp_text_edit_dialog_any_toggled), dlg ); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (b), FALSE); @@ -303,29 +300,29 @@ sp_text_edit_dialog (void) // horizontal { GtkWidget *px = sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR, - INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_HORIZONTAL ); + INKSCAPE_ICON("format-text-direction-horizontal") ); GtkWidget *b = group = gtk_radio_button_new (NULL); - gtk_tooltips_set_tip (tt, b, _("Horizontal text"), NULL); + gtk_widget_set_tooltip_text (b, _("Horizontal text")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); g_signal_connect ( G_OBJECT (b), "toggled", G_CALLBACK (sp_text_edit_dialog_any_toggled), dlg ); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (b), FALSE); gtk_container_add (GTK_CONTAINER (b), px); gtk_box_pack_start (GTK_BOX (row), b, FALSE, FALSE, 0); - g_object_set_data (G_OBJECT (dlg), INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_HORIZONTAL, b); + g_object_set_data (G_OBJECT (dlg), INKSCAPE_ICON("format-text-direction-horizontal"), b); } // vertical { GtkWidget *px = sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR, - INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_VERTICAL ); - GtkWidget *b = gtk_radio_button_new (gtk_radio_button_group (GTK_RADIO_BUTTON (group))); - gtk_tooltips_set_tip (tt, b, _("Vertical text"), NULL); + INKSCAPE_ICON("format-text-direction-vertical") ); + GtkWidget *b = gtk_radio_button_new (gtk_radio_button_get_group (GTK_RADIO_BUTTON (group))); + gtk_widget_set_tooltip_text (b, _("Vertical text")); gtk_button_set_relief (GTK_BUTTON (b), GTK_RELIEF_NONE); g_signal_connect ( G_OBJECT (b), "toggled", G_CALLBACK (sp_text_edit_dialog_any_toggled), dlg ); gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (b), FALSE); gtk_container_add (GTK_CONTAINER (b), px); gtk_box_pack_start (GTK_BOX (row), b, FALSE, FALSE, 0); - g_object_set_data (G_OBJECT (dlg), INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_VERTICAL, b); + g_object_set_data (G_OBJECT (dlg), INKSCAPE_ICON("format-text-direction-vertical"), b); } gtk_box_pack_start (GTK_BOX (l_vb), row, FALSE, FALSE, 0); @@ -344,23 +341,30 @@ sp_text_edit_dialog (void) { GtkWidget *row = gtk_hbox_new (FALSE, VB_MARGIN); - GtkWidget *c = gtk_combo_new (); - gtk_combo_set_value_in_list ((GtkCombo *) c, FALSE, FALSE); - gtk_combo_set_use_arrows ((GtkCombo *) c, TRUE); - gtk_combo_set_use_arrows_always ((GtkCombo *) c, TRUE); +//This would introduce dependency on gtk version 2.24 which is currently not available in +// Trisquel GNU/Linux 4.5.1 (released on May 25th, 2011) +//This conditional and its #else block can be deleted in the future. +#if GTK_CHECK_VERSION(2, 24,0) + GtkWidget *c = gtk_combo_box_text_new_with_entry (); +#else + GtkWidget *c = gtk_combo_box_entry_new_text (); +#endif gtk_widget_set_size_request (c, 90, -1); { /* Setup strings */ - GList *sl = NULL; for (int i = 0; spacings[i]; i++) { - sl = g_list_prepend (sl, (void *) spacings[i]); +//This would introduce dependency on gtk version 2.24 which is currently not available in +// Trisquel GNU/Linux 4.5.1 (released on May 25th, 2011) +//This conditional and its #else block can be deleted in the future. +#if GTK_CHECK_VERSION(2, 24,0) + gtk_combo_box_text_append_text((GtkComboBoxText *) c, spacings[i]); +#else + gtk_combo_box_append_text((GtkComboBox *) c, spacings[i]); +#endif } - sl = g_list_reverse (sl); - gtk_combo_set_popdown_strings ((GtkCombo *) c, sl); - g_list_free (sl); } - g_signal_connect ( (GObject *) ((GtkCombo *) c)->entry, + g_signal_connect ( (GObject *) c, "changed", (GCallback) sp_text_edit_dialog_line_spacing_changed, dlg ); @@ -372,15 +376,18 @@ sp_text_edit_dialog (void) } /* Font preview */ - GtkWidget *preview = sp_font_preview_new (); - gtk_box_pack_start (GTK_BOX (vb), preview, TRUE, TRUE, 4); + GtkLabel *preview = (GtkLabel*) gtk_label_new(NULL); + gtk_label_set_ellipsize(preview, PANGO_ELLIPSIZE_END); + gtk_label_set_justify(preview, GTK_JUSTIFY_CENTER); + gtk_label_set_line_wrap(preview, FALSE); + gtk_box_pack_start (GTK_BOX (vb), (GtkWidget*) preview, TRUE, TRUE, 4); g_object_set_data (G_OBJECT (dlg), "preview", preview); } // Text tab { - GtkWidget *l = gtk_label_new (_("Text")); + GtkWidget *l = gtk_label_new_with_mnemonic (_("_Text")); GtkWidget *vb = gtk_vbox_new (FALSE, VB_MARGIN); gtk_container_set_border_width (GTK_CONTAINER (vb), VB_MARGIN); gtk_notebook_append_page (GTK_NOTEBOOK (nb), vb, l); @@ -427,7 +434,7 @@ sp_text_edit_dialog (void) gtk_box_pack_start (GTK_BOX (mainvb), hb, FALSE, FALSE, 0); { - GtkWidget *b = gtk_button_new_with_label (_("Set as default")); + GtkWidget *b = gtk_button_new_with_mnemonic (_("Set as _default")); g_signal_connect ( G_OBJECT (b), "clicked", G_CALLBACK (sp_text_edit_dialog_set_default), dlg ); @@ -444,10 +451,11 @@ sp_text_edit_dialog (void) { GtkWidget *b = gtk_button_new_from_stock (GTK_STOCK_APPLY); - GTK_WIDGET_SET_FLAGS (b, GTK_CAN_DEFAULT | GTK_HAS_DEFAULT); g_signal_connect ( G_OBJECT (b), "clicked", G_CALLBACK (sp_text_edit_dialog_apply), dlg ); gtk_box_pack_end ( GTK_BOX (hb), b, FALSE, FALSE, 0 ); + gtk_widget_set_can_default (b, TRUE); + gtk_widget_grab_default (b); g_object_set_data (G_OBJECT (dlg), "apply", b); } @@ -597,7 +605,7 @@ sp_get_text_dialog_style () } } - b = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_HORIZONTAL ); + b = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), INKSCAPE_ICON("format-text-direction-horizontal") ); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (b))) { sp_repr_css_set_property (css, "writing-mode", "lr"); @@ -608,7 +616,15 @@ sp_get_text_dialog_style () // Note that CSS 1.1 does not support line-height; we set it for consistency, but also set // sodipodi:linespacing for backwards compatibility; in 1.2 we use line-height for flowtext GtkWidget *combo = (GtkWidget*)g_object_get_data ((GObject *) dlg, "line_spacing"); - const char *sstr = gtk_entry_get_text ((GtkEntry *) ((GtkCombo *) (combo))->entry); + +//This would introduce dependency on gtk version 2.24 which is currently not available in +// Trisquel GNU/Linux 4.5.1 (released on May 25th, 2011) +//This conditional and its #else block can be deleted in the future. +#if GTK_CHECK_VERSION(2, 24,0) + const gchar *sstr = gtk_combo_box_text_get_active_text ((GtkComboBoxText *) combo); +#else + const gchar *sstr = gtk_entry_get_text ((GtkEntry *) (gtk_bin_get_child (GTK_BIN (combo)))); +#endif sp_repr_css_set_property (css, "line-height", sstr); return css; @@ -699,7 +715,7 @@ sp_text_edit_dialog_read_selection ( GtkWidget *dlg, g_object_set_data (G_OBJECT (dlg), "blocked", GINT_TO_POINTER (TRUE)); - GtkWidget *notebook = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "notebook"); + //GtkWidget *notebook = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "notebook"); GtkWidget *textw = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "textw"); GtkWidget *fontsel = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "fontsel"); GtkWidget *preview = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "preview"); @@ -710,6 +726,12 @@ sp_text_edit_dialog_read_selection ( GtkWidget *dlg, SPItem *text = sp_ted_get_selected_text_item (); + /* 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. */ + gchar *phrase = g_strdup(_("AaBbCcIiPpQq12369$\342\202\254\302\242?.;/()")); + Inkscape::XML::Node *repr; if (text) { @@ -727,19 +749,15 @@ sp_text_edit_dialog_read_selection ( GtkWidget *dlg, str = sp_te_get_string_multiline (text); if (str) { - int pos; - pos = 0; - if (items == 1) { gtk_text_buffer_set_text (tb, str, strlen (str)); gtk_text_buffer_set_modified (tb, FALSE); } - sp_font_preview_set_phrase (SP_FONT_PREVIEW (preview), str); - g_free (str); + g_free(phrase); + phrase = str; } else { gtk_text_buffer_set_text (tb, "", 0); - sp_font_preview_set_phrase (SP_FONT_PREVIEW (preview), NULL); } } // end of if (docontent) repr = text->getRepr(); @@ -776,7 +794,13 @@ sp_text_edit_dialog_read_selection ( GtkWidget *dlg, if (font) { // the font is oversized, so we need to pass the true size separately sp_font_selector_set_font (SP_FONT_SELECTOR (fontsel), font, query->font_size.computed); - sp_font_preview_set_font (SP_FONT_PREVIEW (preview), font, SP_FONT_SELECTOR(fontsel)); + char *desc = pango_font_description_to_string(font->descr); + double size = sp_font_selector_get_size(SP_FONT_SELECTOR(fontsel)); + gchar *markup = g_strdup_printf("<span font=\"%s\" size=\"%d\">%s</span>", + desc, (int) size * PANGO_SCALE, phrase); + gtk_label_set_markup(GTK_LABEL(preview), markup); + g_free(desc); + g_free(markup); font->Unref(); font=NULL; } @@ -796,9 +820,9 @@ sp_text_edit_dialog_read_selection ( GtkWidget *dlg, gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b), TRUE); if (query->writing_mode.computed == SP_CSS_WRITING_MODE_LR_TB) { - b = (GtkWidget*)g_object_get_data ( G_OBJECT (dlg), INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_HORIZONTAL ); + b = (GtkWidget*)g_object_get_data ( G_OBJECT (dlg), INKSCAPE_ICON("format-text-direction-horizontal") ); } else { - b = (GtkWidget*)g_object_get_data ( G_OBJECT (dlg), INKSCAPE_ICON_FORMAT_TEXT_DIRECTION_VERTICAL ); + b = (GtkWidget*)g_object_get_data ( G_OBJECT (dlg), INKSCAPE_ICON("format-text-direction-vertical") ); } gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (b), TRUE); @@ -809,12 +833,13 @@ sp_text_edit_dialog_read_selection ( GtkWidget *dlg, height = query->line_height.value; else height = query->line_height.computed; gchar *sstr = g_strdup_printf ("%d%%", (int) floor(height * 100 + 0.5)); - gtk_entry_set_text ((GtkEntry *) ((GtkCombo *) (combo))->entry, sstr); + + gtk_entry_set_text ((GtkEntry *) gtk_bin_get_child ((GtkBin *) (combo)), sstr); g_free(sstr); sp_style_unref(query); } - + g_free(phrase); g_object_set_data (G_OBJECT (dlg), "blocked", NULL); } @@ -822,7 +847,7 @@ sp_text_edit_dialog_read_selection ( GtkWidget *dlg, static void sp_text_edit_dialog_text_changed (GtkTextBuffer *tb, GtkWidget *dlg) { - GtkWidget *textw, *preview, *apply, *def; + GtkWidget *textw, *preview, *apply, *def, *fontsel; GtkTextIter start, end; gchar *str; @@ -835,14 +860,23 @@ sp_text_edit_dialog_text_changed (GtkTextBuffer *tb, GtkWidget *dlg) preview = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "preview"); apply = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "apply"); def = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "default"); + fontsel = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "fontsel"); gtk_text_buffer_get_bounds (tb, &start, &end); str = gtk_text_buffer_get_text (tb, &start, &end, TRUE); - - if (str && *str) { - sp_font_preview_set_phrase (SP_FONT_PREVIEW (preview), str); + font_instance *font = sp_font_selector_get_font(SP_FONT_SELECTOR(fontsel)); + + if (font) { + gchar *phrase = str && *str ? str : _("AaBbCcIiPpQq12369$\342\202\254\302\242?.;/()"); + char *desc = pango_font_description_to_string(font->descr); + double size = sp_font_selector_get_size(SP_FONT_SELECTOR(fontsel)); + gchar *markup = g_strdup_printf("<span font=\"%s\" size=\"%d\">%s</span>", + desc, (int) size * PANGO_SCALE, phrase); + gtk_label_set_markup(GTK_LABEL(preview), markup); + g_free(desc); + g_free(markup); } else { - sp_font_preview_set_phrase (SP_FONT_PREVIEW (preview), NULL); + gtk_label_set_markup(GTK_LABEL(preview), NULL); } g_free (str); @@ -863,11 +897,13 @@ sp_text_edit_dialog_default_set_insensitive () } static void -sp_text_edit_dialog_font_changed ( SPFontSelector *fsel, +sp_text_edit_dialog_font_changed ( SPFontSelector * /*fsel*/, font_instance *font, GtkWidget *dlg ) { - GtkWidget *preview, *apply, *def; + GtkWidget *preview, *apply, *def, *fontsel; + GtkTextIter start, end; + gchar *str; if (g_object_get_data (G_OBJECT (dlg), "blocked")) return; @@ -877,11 +913,27 @@ sp_text_edit_dialog_font_changed ( SPFontSelector *fsel, preview = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "preview"); apply = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "apply"); def = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "default"); + fontsel = (GtkWidget*)g_object_get_data (G_OBJECT (dlg), "fontsel"); - sp_font_preview_set_font (SP_FONT_PREVIEW (preview), font, SP_FONT_SELECTOR(fsel)); + GtkTextBuffer *tb = (GtkTextBuffer*)g_object_get_data (G_OBJECT (dlg), "text"); + gtk_text_buffer_get_bounds (tb, &start, &end); + str = gtk_text_buffer_get_text (tb, &start, &end, TRUE); - if (text) - { + if (font) { + gchar *phrase = str && *str ? str : _("AaBbCcIiPpQq12369$\342\202\254\302\242?.;/()"); + char *desc = pango_font_description_to_string(font->descr); + double size = sp_font_selector_get_size(SP_FONT_SELECTOR(fontsel)); + gchar *markup = g_strdup_printf("<span font=\"%s\" size=\"%d\">%s</span>", + desc, (int) size * PANGO_SCALE, phrase); + gtk_label_set_markup(GTK_LABEL(preview), markup); + g_free(desc); + g_free(markup); + } else { + gtk_label_set_markup(GTK_LABEL(preview), NULL); + } + g_free(str); + + if (text) { gtk_widget_set_sensitive (apply, TRUE); } gtk_widget_set_sensitive (def, TRUE); diff --git a/src/dialogs/xml-tree.cpp b/src/dialogs/xml-tree.cpp index ddb419dcd..5e0766ded 100644 --- a/src/dialogs/xml-tree.cpp +++ b/src/dialogs/xml-tree.cpp @@ -1,5 +1,6 @@ -/** @file - * @brief XML editor +/** + * @file + * XML editor. */ /* Authors: * Lauris Kaplinski <lauris@kaplinski.com> @@ -66,7 +67,6 @@ static Inkscape::MessageStack *_message_stack = NULL; static Inkscape::MessageContext *_message_context = NULL; static sigc::connection _message_changed_connection; -static GtkTooltips *tooltips = NULL; static GtkEditable *attr_name = NULL; static GtkTextView *attr_value = NULL; static SPXMLViewTree *tree = NULL; @@ -149,8 +149,8 @@ static gboolean sp_xml_tree_key_press(GtkWidget *widget, GdkEventKey *event); static bool in_dt_coordsys(SPObject const &item); -/* - * \brief Sets the XML status bar when the tree is selected. +/** + * Sets the XML status bar when the tree is selected. */ void tree_reset_context() { @@ -159,8 +159,8 @@ void tree_reset_context() } -/* - * \brief Sets the XML status bar, depending on which attr is selected. +/** + * Sets the XML status bar, depending on which attr is selected. */ void attr_reset_context(gint attr) { @@ -190,13 +190,10 @@ void sp_xml_tree_dialog() if (dlg == NULL) { // very long block - GtkWidget *box, *sw, *paned, *toolbar, *button; + GtkWidget *box, *sw, *paned, *toolbar; GtkWidget *text_container, *attr_container, *attr_subpaned_container, *box2; GtkWidget *set_attr; - tooltips = gtk_tooltips_new(); - gtk_tooltips_enable(tooltips); - dlg = sp_window_new("", TRUE); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (x == -1000 || y == -1000) { @@ -225,10 +222,10 @@ void sp_xml_tree_dialog() 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 ); + g_signal_connect( G_OBJECT(dlg), "event", G_CALLBACK(sp_dialog_event_handler), dlg ); - gtk_signal_connect( GTK_OBJECT(dlg), "destroy", G_CALLBACK(on_destroy), dlg); - gtk_signal_connect( GTK_OBJECT(dlg), "delete_event", G_CALLBACK(on_delete), dlg); + g_signal_connect( G_OBJECT(dlg), "destroy", G_CALLBACK(on_destroy), dlg); + g_signal_connect( G_OBJECT(dlg), "delete_event", G_CALLBACK(on_delete), dlg); g_signal_connect ( G_OBJECT(INKSCAPE), "shut_down", G_CALLBACK(on_delete), dlg); g_signal_connect ( G_OBJECT(INKSCAPE), "dialogs_hide", G_CALLBACK(sp_dialog_hide), dlg); @@ -267,8 +264,8 @@ void sp_xml_tree_dialog() gtk_paned_pack1(GTK_PANED(paned), box, FALSE, FALSE); tree = SP_XMLVIEW_TREE(sp_xmlview_tree_new(NULL, NULL, NULL)); - gtk_tooltips_set_tip( tooltips, GTK_WIDGET(tree), - _("Drag to reorder nodes"), NULL ); + gtk_widget_set_tooltip_text( GTK_WIDGET(tree), + _("Drag to reorder nodes") ); g_signal_connect( G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row), NULL ); @@ -279,144 +276,226 @@ void sp_xml_tree_dialog() g_signal_connect_after( G_OBJECT(tree), "tree_move", G_CALLBACK(after_tree_move), NULL); - /* TODO: replace gtk_signal_connect_while_alive() with something - * else... - */ toolbar = gtk_toolbar_new(); gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS); gtk_container_set_border_width(GTK_CONTAINER(toolbar), 0); - button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), - NULL, - _("New element node"), - NULL, - sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR, - INKSCAPE_ICON_XML_ELEMENT_NEW ), - G_CALLBACK(cmd_new_element_node), - NULL); + GtkToolItem *xml_element_new_button = gtk_tool_button_new ( + sp_icon_new (Inkscape::ICON_SIZE_LARGE_TOOLBAR, + INKSCAPE_ICON("xml-element-new")), + NULL); + + g_signal_connect (G_OBJECT(xml_element_new_button), + "clicked", + G_CALLBACK(cmd_new_element_node), + NULL); - gtk_signal_connect_while_alive( GTK_OBJECT(tree), + gtk_widget_set_tooltip_text (GTK_WIDGET(xml_element_new_button), + _("New element node")); + + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), xml_element_new_button, -1); + + g_signal_connect_object (G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_element), - button, - GTK_OBJECT(button)); + xml_element_new_button, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), + g_signal_connect_object (G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, - GTK_OBJECT(button)); + xml_element_new_button, + (GConnectFlags)0); + + gtk_widget_set_sensitive(GTK_WIDGET(xml_element_new_button), FALSE); + + GtkToolItem *xml_text_new_button = gtk_tool_button_new ( + sp_icon_new (Inkscape::ICON_SIZE_LARGE_TOOLBAR, + INKSCAPE_ICON("xml-text-new")), + NULL); - gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); + g_signal_connect (G_OBJECT(xml_text_new_button), + "clicked", + G_CALLBACK(cmd_new_text_node), + NULL); + + gtk_widget_set_tooltip_text (GTK_WIDGET(xml_text_new_button), + _("New text node")); - button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), - NULL, _("New text node"), NULL, - sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR, - INKSCAPE_ICON_XML_TEXT_NEW ), - G_CALLBACK(cmd_new_text_node), - NULL); + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), xml_text_new_button, -1); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_element), - button, - GTK_OBJECT(button)); + xml_text_new_button, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, - GTK_OBJECT(button)); + xml_text_new_button, + (GConnectFlags)0); - gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); + gtk_widget_set_sensitive(GTK_WIDGET(xml_text_new_button), FALSE); - button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), - NULL, _("Duplicate node"), NULL, - sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR, - INKSCAPE_ICON_XML_NODE_DUPLICATE ), - G_CALLBACK(cmd_duplicate_node), - NULL); + GtkToolItem *xml_node_duplicate_button = gtk_tool_button_new ( + sp_icon_new (Inkscape::ICON_SIZE_LARGE_TOOLBAR, + INKSCAPE_ICON("xml-node-duplicate")), + NULL); + + g_signal_connect (G_OBJECT(xml_node_duplicate_button), + "clicked", + G_CALLBACK(cmd_duplicate_node), + NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), + gtk_widget_set_tooltip_text (GTK_WIDGET(xml_node_duplicate_button), + _("Duplicate node")); + + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), xml_node_duplicate_button, -1); + + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_mutable), - button, - GTK_OBJECT(button)); + xml_node_duplicate_button, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); + xml_node_duplicate_button, + (GConnectFlags)0); + + gtk_widget_set_sensitive(GTK_WIDGET(xml_node_duplicate_button), FALSE); + + GtkToolItem *separator = gtk_separator_tool_item_new (); + gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM(separator), FALSE); + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), separator, -1); - gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); + GtkToolItem *xml_node_delete_button = gtk_tool_button_new ( + sp_icon_new (Inkscape::ICON_SIZE_LARGE_TOOLBAR, + INKSCAPE_ICON ("xml-node-delete")), + NULL); + + g_signal_connect (G_OBJECT(xml_node_delete_button), + "clicked", + G_CALLBACK(cmd_delete_node), + NULL); - gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); + gtk_widget_set_tooltip_text (GTK_WIDGET(xml_node_delete_button), + Q_("nodeAsInXMLdialogTooltip|Delete node")); - button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), - NULL, Q_("nodeAsInXMLdialogTooltip|Delete node"), NULL, - sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR, - INKSCAPE_ICON_XML_NODE_DELETE ), - G_CALLBACK(cmd_delete_node), NULL ); + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), xml_node_delete_button, -1); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_mutable), - button, GTK_OBJECT(button)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + xml_node_delete_button, + (GConnectFlags)0); + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); - gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); + xml_node_delete_button, + (GConnectFlags)0); + gtk_widget_set_sensitive(GTK_WIDGET(xml_node_delete_button), FALSE); - gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); + GtkToolItem *separator2 = gtk_separator_tool_item_new (); + gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM(separator2), FALSE); + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), separator2, -1); - button = gtk_toolbar_append_item( GTK_TOOLBAR(toolbar), "<", - _("Unindent node"), NULL, - gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_IN), - G_CALLBACK(cmd_unindent_node), NULL); + GtkToolItem *unindent_node_button = gtk_tool_button_new ( + gtk_arrow_new (GTK_ARROW_LEFT, GTK_SHADOW_IN), + "<"); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect (G_OBJECT(unindent_node_button), + "clicked", + G_CALLBACK(cmd_unindent_node), + NULL); + + gtk_widget_set_tooltip_text (GTK_WIDGET(unindent_node_button), + _("Unindent node")); + + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), unindent_node_button, -1); + + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_has_grandparent), - button, GTK_OBJECT(button)); + unindent_node_button, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); + unindent_node_button, + (GConnectFlags)0); + + gtk_widget_set_sensitive(GTK_WIDGET(unindent_node_button), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); + GtkToolItem *indent_node_button = gtk_tool_button_new ( + gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_IN), + ">"); - button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), ">", - _("Indent node"), NULL, - gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_IN), - G_CALLBACK(cmd_indent_node), NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect (G_OBJECT(indent_node_button), + "clicked", + G_CALLBACK(cmd_indent_node), + NULL); + + gtk_widget_set_tooltip_text (GTK_WIDGET(indent_node_button), + _("Indent node")); + + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), indent_node_button, -1); + + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_indentable), - button, GTK_OBJECT(button)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + indent_node_button, + (GConnectFlags)0); + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", (GCallback) on_tree_unselect_row_disable, - button, GTK_OBJECT(button)); - gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); - - button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "^", - _("Raise node"), NULL, - gtk_arrow_new(GTK_ARROW_UP, GTK_SHADOW_IN), - G_CALLBACK(cmd_raise_node), NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + indent_node_button, + (GConnectFlags)0); + gtk_widget_set_sensitive(GTK_WIDGET(indent_node_button), FALSE); + + GtkToolItem *raise_node_button = gtk_tool_button_new ( + gtk_arrow_new (GTK_ARROW_UP, GTK_SHADOW_IN), + "^"); + + g_signal_connect (G_OBJECT(raise_node_button), + "clicked", + G_CALLBACK(cmd_raise_node), + NULL); + + gtk_widget_set_tooltip_text (GTK_WIDGET (raise_node_button), + _("Raise node")); + + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), raise_node_button, -1); + + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_not_first_child), - button, GTK_OBJECT(button)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + raise_node_button, + (GConnectFlags)0); + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); - gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); - - button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "v", - _("Lower node"), NULL, - gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_IN), - G_CALLBACK(cmd_lower_node), NULL); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + raise_node_button, + (GConnectFlags)0); + gtk_widget_set_sensitive(GTK_WIDGET(raise_node_button), FALSE); + + GtkToolItem *lower_node_button = gtk_tool_button_new ( + gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_IN), + "v"); + + g_signal_connect (G_OBJECT(lower_node_button), + "clicked", + G_CALLBACK(cmd_lower_node), + NULL); + + gtk_widget_set_tooltip_text (GTK_WIDGET (lower_node_button), + _("Lower node")); + + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), lower_node_button, -1); + + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row_enable_if_not_last_child), - button, GTK_OBJECT(button)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + lower_node_button, + (GConnectFlags)0); + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row_disable), - button, GTK_OBJECT(button)); - gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); + lower_node_button, + (GConnectFlags)0); + gtk_widget_set_sensitive(GTK_WIDGET(lower_node_button), FALSE); gtk_box_pack_start(GTK_BOX(box), toolbar, FALSE, TRUE, 0); @@ -424,7 +503,7 @@ void sp_xml_tree_dialog() gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); - gtk_box_pack_start(GTK_BOX(box), sw, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(box), sw, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(sw), GTK_WIDGET(tree)); @@ -451,25 +530,37 @@ void sp_xml_tree_dialog() gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_ICONS); gtk_container_set_border_width(GTK_CONTAINER(toolbar), 0); - button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), - NULL, _("Delete attribute"), NULL, - sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR, - INKSCAPE_ICON_XML_ATTRIBUTE_DELETE ), - (GCallback) cmd_delete_attr, NULL); + GtkToolItem* xml_attribute_delete_button = gtk_tool_button_new ( + sp_icon_new (Inkscape::ICON_SIZE_LARGE_TOOLBAR, + INKSCAPE_ICON ("xml-attribute-delete")), + NULL); + + g_signal_connect (G_OBJECT(xml_attribute_delete_button), + "clicked", + G_CALLBACK(cmd_delete_attr), + NULL); + + gtk_widget_set_tooltip_text (GTK_WIDGET(xml_attribute_delete_button), + _("Delete attribute")); - gtk_signal_connect_while_alive(GTK_OBJECT(attributes), "select_row", - (GCallback) on_attr_select_row_enable, button, - GTK_OBJECT(button)); + gtk_toolbar_insert (GTK_TOOLBAR(toolbar), xml_attribute_delete_button, -1); - gtk_signal_connect_while_alive(GTK_OBJECT(attributes), "unselect_row", - (GCallback) on_attr_unselect_row_disable, button, - GTK_OBJECT(button)); + g_signal_connect_object(G_OBJECT(attributes), "select_row", + (GCallback) on_attr_select_row_enable, + xml_attribute_delete_button, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", - (GCallback) on_tree_unselect_row_disable, button, - GTK_OBJECT(button)); + g_signal_connect_object(G_OBJECT(attributes), "unselect_row", + (GCallback) on_attr_unselect_row_disable, + xml_attribute_delete_button, + (GConnectFlags)0); - gtk_widget_set_sensitive(GTK_WIDGET(button), FALSE); + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", + (GCallback) on_tree_unselect_row_disable, + xml_attribute_delete_button, + (GConnectFlags)0); + + gtk_widget_set_sensitive(GTK_WIDGET(xml_attribute_delete_button), FALSE); gtk_box_pack_start( GTK_BOX(attr_container), GTK_WIDGET(toolbar), FALSE, TRUE, 0 ); @@ -495,19 +586,19 @@ void sp_xml_tree_dialog() FALSE, TRUE, 0); attr_name = GTK_EDITABLE(gtk_entry_new()); - gtk_tooltips_set_tip( tooltips, GTK_WIDGET(attr_name), + gtk_widget_set_tooltip_text( GTK_WIDGET(attr_name), // TRANSLATORS: "Attribute" is a noun here - _("Attribute name"), NULL ); + _("Attribute name") ); - gtk_signal_connect( GTK_OBJECT(attributes), "select_row", + g_signal_connect( G_OBJECT(attributes), "select_row", (GCallback) on_attr_select_row_set_name_content, attr_name); - gtk_signal_connect( GTK_OBJECT(attributes), "unselect_row", + g_signal_connect( G_OBJECT(attributes), "unselect_row", (GCallback) on_attr_unselect_row_clear_text, attr_name); - gtk_signal_connect( GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect( G_OBJECT(tree), "tree_unselect_row", (GCallback) on_tree_unselect_row_clear_text, attr_name); @@ -515,16 +606,16 @@ void sp_xml_tree_dialog() TRUE, TRUE, 0); set_attr = gtk_button_new(); - gtk_tooltips_set_tip( tooltips, GTK_WIDGET(set_attr), + gtk_widget_set_tooltip_text( GTK_WIDGET(set_attr), // TRANSLATORS: "Set" is a verb here - _("Set attribute"), NULL ); + _("Set attribute") ); // TRANSLATORS: "Set" is a verb here GtkWidget *set_label = gtk_label_new(_("Set")); gtk_container_add(GTK_CONTAINER(set_attr), set_label); - gtk_signal_connect( GTK_OBJECT(set_attr), "clicked", + g_signal_connect( G_OBJECT(set_attr), "clicked", (GCallback) cmd_set_attr, NULL); - gtk_signal_connect( GTK_OBJECT(attr_name), "changed", + g_signal_connect( G_OBJECT(attr_name), "changed", (GCallback) on_editable_changed_enable_if_valid_xml_name, set_attr ); gtk_widget_set_sensitive(GTK_WIDGET(set_attr), FALSE); @@ -540,16 +631,16 @@ void sp_xml_tree_dialog() attr_value =(GtkTextView *) gtk_text_view_new(); gtk_text_view_set_wrap_mode((GtkTextView *) attr_value, GTK_WRAP_CHAR); - gtk_tooltips_set_tip( tooltips, GTK_WIDGET(attr_value), + gtk_widget_set_tooltip_text( GTK_WIDGET(attr_value), // TRANSLATORS: "Attribute" is a noun here - _("Attribute value"), NULL ); - gtk_signal_connect( GTK_OBJECT(attributes), "select_row", + _("Attribute value") ); + g_signal_connect( G_OBJECT(attributes), "select_row", (GCallback) on_attr_select_row_set_value_content, attr_value ); - gtk_signal_connect( GTK_OBJECT(attributes), "unselect_row", + g_signal_connect( G_OBJECT(attributes), "unselect_row", (GCallback) on_attr_unselect_row_clear_text, attr_value ); - gtk_signal_connect( GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect( G_OBJECT(tree), "tree_unselect_row", (GCallback) on_tree_unselect_row_clear_text, attr_value ); gtk_text_view_set_editable(attr_value, TRUE); @@ -577,23 +668,27 @@ void sp_xml_tree_dialog() gtk_widget_show_all(GTK_WIDGET(dlg)); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", (GCallback) on_tree_select_row_show_if_element, - attr_container, GTK_OBJECT(attr_container)); + attr_container, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", (GCallback) on_tree_unselect_row_hide, - attr_container, GTK_OBJECT(attr_container)); + attr_container, + (GConnectFlags)0); gtk_widget_hide(attr_container); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_select_row", + g_signal_connect_object(G_OBJECT(tree), "tree_select_row", (GCallback) on_tree_select_row_show_if_text, - text_container, GTK_OBJECT(text_container)); + text_container, + (GConnectFlags)0); - gtk_signal_connect_while_alive(GTK_OBJECT(tree), "tree_unselect_row", + g_signal_connect_object(G_OBJECT(tree), "tree_unselect_row", (GCallback) on_tree_unselect_row_hide, - text_container, GTK_OBJECT(text_container)); + text_container, + (GConnectFlags)0); gtk_widget_hide(text_container); @@ -895,8 +990,6 @@ void after_tree_move(GtkCTree */*tree*/, static void on_destroy(GtkObject */*object*/, gpointer /*data*/) { set_tree_desktop(NULL); - gtk_object_destroy(GTK_OBJECT(tooltips)); - tooltips = NULL; sp_signal_disconnect_by_data(INKSCAPE, dlg); wd.win = dlg = NULL; wd.stop = 0; @@ -1323,12 +1416,12 @@ void cmd_new_element_node(GtkObject */*object*/, gpointer /*data*/) window = sp_window_new(NULL, TRUE); gtk_container_set_border_width(GTK_CONTAINER(window), 4); gtk_window_set_title(GTK_WINDOW(window), _("New element node...")); - gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE); + gtk_window_set_resizable(GTK_WINDOW(window), FALSE); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(dlg)); gtk_window_set_modal(GTK_WINDOW(window), TRUE); - gtk_signal_connect(GTK_OBJECT(window), "destroy", gtk_main_quit, NULL); - gtk_signal_connect(GTK_OBJECT(window), "key-press-event", G_CALLBACK(quit_on_esc), window); + g_signal_connect(G_OBJECT(window), "destroy", gtk_main_quit, NULL); + g_signal_connect(G_OBJECT(window), "key-press-event", G_CALLBACK(quit_on_esc), window); vbox = gtk_vbox_new(FALSE, 4); gtk_container_add(GTK_CONTAINER(window), vbox); @@ -1345,25 +1438,24 @@ void cmd_new_element_node(GtkObject */*object*/, gpointer /*data*/) gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, TRUE, 0); cancel = gtk_button_new_with_label(_("Cancel")); - GTK_WIDGET_SET_FLAGS( GTK_WIDGET(cancel), - GTK_CAN_DEFAULT ); - gtk_signal_connect_object( GTK_OBJECT(cancel), "clicked", + gtk_widget_set_can_default( GTK_WIDGET(cancel), TRUE ); + g_signal_connect_swapped( G_OBJECT(cancel), "clicked", G_CALLBACK(gtk_widget_destroy), - GTK_OBJECT(window) ); + G_OBJECT(window) ); gtk_container_add(GTK_CONTAINER(bbox), cancel); create = gtk_button_new_with_label(_("Create")); gtk_widget_set_sensitive(GTK_WIDGET(create), FALSE); - gtk_signal_connect( GTK_OBJECT(entry), "changed", + g_signal_connect( G_OBJECT(entry), "changed", G_CALLBACK(on_editable_changed_enable_if_valid_xml_name), create ); - gtk_signal_connect( GTK_OBJECT(create), "clicked", + g_signal_connect( G_OBJECT(create), "clicked", G_CALLBACK(on_clicked_get_editable_text), &name ); - gtk_signal_connect_object( GTK_OBJECT(create), "clicked", + g_signal_connect_swapped( G_OBJECT(create), "clicked", G_CALLBACK(gtk_widget_destroy), - GTK_OBJECT(window) ); - GTK_WIDGET_SET_FLAGS( GTK_WIDGET(create), - GTK_CAN_DEFAULT | GTK_RECEIVES_DEFAULT ); + G_OBJECT(window) ); + gtk_widget_set_can_default( GTK_WIDGET(create), TRUE ); + gtk_widget_set_receives_default( GTK_WIDGET(create), TRUE ); gtk_container_add(GTK_CONTAINER(bbox), create); gtk_widget_show_all(GTK_WIDGET(window)); |
