index 64583b9f2acc0befc36b10dff2feb9f85e44464b..048635bb97cca014489778b7cc5aa2e08f3ebacc 100644 (file)
// impossible original values to make sure they are read from prefs
static gint x = -1000, y = -1000, w = 0, h = 0;
-static gchar *prefs_path = "dialogs.clonetiler";
+static gchar const *prefs_path = "dialogs.clonetiler";
#define SB_MARGIN 1
#define VB_MARGIN 4
return;
}
+ // set "busy" cursor
+ desktop->setWaitingCursor();
+
+ // set statusbar text
+ GtkWidget *status = (GtkWidget *) g_object_get_data (G_OBJECT(dlg), "status");
+ gtk_label_set_markup (GTK_LABEL(status), _("<small>Creating tiled clones...</small>"));
+ gtk_widget_queue_draw(GTK_WIDGET(status));
+ gdk_window_process_all_updates();
+
SPObject *obj = SP_OBJECT(selection->singleItem());
Inkscape::XML::Node *obj_repr = SP_OBJECT_REPR(obj);
const char *id_href = g_strdup_printf("#%s", obj_repr->attribute("id"));
clonetiler_remove (NULL, NULL, false);
- double shiftx_per_i = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shiftx_per_i", 0, -100, 1000);
- double shifty_per_i = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shifty_per_i", 0, -100, 1000);
- double shiftx_per_j = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shiftx_per_j", 0, -100, 1000);
- double shifty_per_j = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shifty_per_j", 0, -100, 1000);
+ double shiftx_per_i = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shiftx_per_i", 0, -10000, 10000);
+ double shifty_per_i = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shifty_per_i", 0, -10000, 10000);
+ double shiftx_per_j = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shiftx_per_j", 0, -10000, 10000);
+ double shifty_per_j = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shifty_per_j", 0, -10000, 10000);
double shiftx_rand = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shiftx_rand", 0, 0, 1000);
double shifty_rand = 0.01 * prefs_get_double_attribute_limited (prefs_path, "shifty_rand", 0, 0, 1000);
double shiftx_exp = prefs_get_double_attribute_limited (prefs_path, "shiftx_exp", 1, 0, 10);
x0 = sp_repr_get_double_attribute (obj_repr, "inkscape:tile-x0", 0);
y0 = sp_repr_get_double_attribute (obj_repr, "inkscape:tile-y0", 0);
} else {
- NR::Maybe<NR::Rect> r = SP_ITEM(obj)->getBounds(sp_item_i2doc_affine(SP_ITEM(obj)),
- SPItem::GEOMETRIC_BBOX);
- /* impl: Use of GEOMETRIC_BBOX is so that the stroke of rectangles will be shared
- * (overlapped) rather than effectively doubled in width.
- *
- * (If you wish to change this, then please consider discussing at bug #1722238.) */
-
+ int prefs_bbox = prefs_get_int_attribute("tools", "bounding_box", 0);
+ SPItem::BBoxType bbox_type = (prefs_bbox ==0)?
+ SPItem::APPROXIMATE_BBOX : SPItem::GEOMETRIC_BBOX;
+ boost::optional<NR::Rect> r = SP_ITEM(obj)->getBounds(sp_item_i2doc_affine(SP_ITEM(obj)),
+ bbox_type);
if (r) {
w = r->dimensions()[NR::X];
h = r->dimensions()[NR::Y];
clonetiler_change_selection (NULL, selection, dlg);
+ desktop->clearWaitingCursor();
+
sp_document_done(sp_desktop_document(desktop), SP_VERB_DIALOG_CLONETILER,
_("Create tiled clones"));
}
GtkWidget *l = clonetiler_spinbox (tt,
// xgettext:no-c-format
_("Horizontal shift per row (in % of tile width)"), "shiftx_per_j",
- -100, 1000, "%");
+ -10000, 10000, "%");
clonetiler_table_attach (table, l, 0, 2, 2);
}
GtkWidget *l = clonetiler_spinbox (tt,
// xgettext:no-c-format
_("Horizontal shift per column (in % of tile width)"), "shiftx_per_i",
- -100, 1000, "%");
+ -10000, 10000, "%");
clonetiler_table_attach (table, l, 0, 2, 3);
}
GtkWidget *l = clonetiler_spinbox (tt,
// xgettext:no-c-format
_("Vertical shift per row (in % of tile height)"), "shifty_per_j",
- -100, 1000, "%");
+ -10000, 10000, "%");
clonetiler_table_attach (table, l, 0, 3, 2);
}
GtkWidget *l = clonetiler_spinbox (tt,
// xgettext:no-c-format
_("Vertical shift per column (in % of tile height)"), "shifty_per_i",
- -100, 1000, "%");
+ -10000, 10000, "%");
clonetiler_table_attach (table, l, 0, 3, 3);
}