index b2c867e1e01ed2023c57453c565727ddbf283d87..f0115ee913cd6dae305a329fd1c0dda49c8ea6fd 100644 (file)
-#define __GUIDELINE_CPP__
-
-/*
- * simple guideline dialog
- *
- * Authors:
+/** @file
+ * @brief Simple guideline dialog
+ */
+/* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
* Andrius R. <knutux@gmail.com>
* Johan Engelen
GuidelinePropertiesDialog::GuidelinePropertiesDialog(SPGuide *guide, SPDesktop *desktop)
: _desktop(desktop), _guide(guide),
- _relative_toggle(_("Rela_tive move"), _("Move guide relative to current position")),
- _adjustment_x(0.0, -SP_DESKTOP_SCROLL_LIMIT, SP_DESKTOP_SCROLL_LIMIT, 1.0, 10.0, 10.0),
- _adjustment_y(0.0, -SP_DESKTOP_SCROLL_LIMIT, SP_DESKTOP_SCROLL_LIMIT, 1.0, 10.0, 10.0),
- _adj_angle(0.0, -SP_DESKTOP_SCROLL_LIMIT, SP_DESKTOP_SCROLL_LIMIT, 1.0, 10.0, 10.0),
+ _label_units(_("Unit:")),
+ _label_X(_("X:")),
+ _label_Y(_("Y:")),
+ _label_degrees(_("Angle (degrees):")),
+ _relative_toggle(_("Rela_tive change"), _("Move and/or rotate the guide relative to current settings")),
+ _adjustment_x(0.0, -1e6, 1e6, 1.0, 10.0, 10.0),
+ _adjustment_y(0.0, -1e6, 1e6, 1.0, 10.0, 10.0),
+ _adj_angle(0.0, -360, 360, 1.0, 10.0, 10.0),
_unit_selector(NULL), _mode(true), _oldpos(0.,0.), _oldangle(0.0)
{
}
{
_mode = !_relative_toggle.get_active();
if (!_mode) {
- _label_move.set_label(_("Move by:"));
- _label_angle.set_label(_("Increase angle by:"));
+ // relative
+ _spin_angle.set_value(0);
+
+ _spin_button_y.set_value(0);
+ _spin_button_x.set_value(0);
} else {
- _label_move.set_label(_("Move to:"));
- _label_angle.set_label(_("Set angle to:"));
+ // absolute
+ _spin_angle.set_value(_oldangle);
+
+ SPUnit const &unit = *sp_unit_selector_get_unit(SP_UNIT_SELECTOR(_unit_selector->gobj()));
+ gdouble const val_y = sp_pixels_get_units(_oldpos[Geom::Y], unit);
+ _spin_button_y.set_value(val_y);
+ gdouble const val_x = sp_pixels_get_units(_oldpos[Geom::X], unit);
+ _spin_button_x.set_value(val_x);
}
}
void GuidelinePropertiesDialog::_onApply()
{
- double const deg_angle = _spin_angle.get_value();
+ double deg_angle = _spin_angle.get_value();
+ if (!_mode)
+ deg_angle += _oldangle;
Geom::Point normal;
if ( deg_angle == 90. || deg_angle == 270. || deg_angle == -90. || deg_angle == -270.) {
normal = Geom::Point(1.,0.);
case -12:
_onDelete();
break;
- case Gtk::RESPONSE_CLOSE:
+ case Gtk::RESPONSE_CANCEL:
break;
case Gtk::RESPONSE_DELETE_EVENT:
break;
set_title(_("Guideline"));
add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
add_button(Gtk::Stock::DELETE, -12);
- add_button(Gtk::Stock::CLOSE, Gtk::RESPONSE_CLOSE);
+ add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
Gtk::VBox *mainVBox = get_vbox();
mainVBox->pack_start(_layout_table, false, false, 0);
+ _label_name.set_label("foo0");
+ _layout_table.attach(_label_name,
+ 0, 3, 0, 1, Gtk::FILL, Gtk::FILL);
+ _label_name.set_alignment(0, 0.5);
+
_label_descr.set_label("foo1");
_layout_table.attach(_label_descr,
- 0, 3, 0, 1, Gtk::FILL, Gtk::FILL);
+ 0, 3, 1, 2, Gtk::FILL, Gtk::FILL);
_label_descr.set_alignment(0, 0.5);
- _layout_table.attach(_label_move,
- 0, 2, 1, 2, Gtk::FILL, Gtk::FILL);
- _label_move.set_alignment(0, 0.5);
-
- _layout_table.attach(_label_angle,
- 0, 2, 5, 6, Gtk::FILL, Gtk::FILL);
- _label_angle.set_alignment(0, 0.5);
-
- _modeChanged();
-
// indent
_layout_table.attach(*manage(new Gtk::Label(" ")),
0, 1, 2, 3, Gtk::FILL, Gtk::FILL, 10);
// mode radio button
_layout_table.attach(_relative_toggle,
- 1, 3, 7, 8, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
+ 1, 3, 9, 10, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
_relative_toggle.signal_toggled().connect(sigc::mem_fun(*this, &GuidelinePropertiesDialog::_modeChanged));
// unitmenu
_spin_button_x.set_numeric();
_spin_button_y.configure(_adjustment_y, 1.0 , 3);
_spin_button_y.set_numeric();
+ _layout_table.attach(_label_X,
+ 1, 2, 4, 5, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
_layout_table.attach(_spin_button_x,
- 1, 2, 3, 4, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
+ 2, 3, 4, 5, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
+ _layout_table.attach(_label_Y,
+ 1, 2, 5, 6, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
_layout_table.attach(_spin_button_y,
- 1, 2, 4, 5, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
+ 2, 3, 5, 6, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
gtk_signal_connect_object(GTK_OBJECT(_spin_button_x.gobj()), "activate",
GTK_SIGNAL_FUNC(gtk_window_activate_default),
gobj());
+ _layout_table.attach(_label_units,
+ 1, 2, 6, 7, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
_layout_table.attach(*_unit_selector,
- 1, 2, 2, 3, Gtk::FILL, Gtk::FILL);
+ 2, 3, 6, 7, Gtk::FILL, Gtk::FILL);
// angle spinbutton
_spin_angle.configure(_adj_angle, 5.0 , 3);
_spin_angle.set_numeric();
_spin_angle.show();
+ _layout_table.attach(_label_degrees,
+ 1, 2, 8, 9, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
_layout_table.attach(_spin_angle,
- 1, 2, 6, 7, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
+ 2, 3, 8, 9, Gtk::EXPAND | Gtk::FILL, Gtk::FILL);
// dialog
} else {
_oldangle = Geom::rad_to_deg( std::atan2( - _guide->normal_to_line[Geom::X], _guide->normal_to_line[Geom::Y] ) );
}
+
{
- gchar *guide_description = sp_guide_description(_guide);
Inkscape::XML::Node *repr = SP_OBJECT_REPR (_guide);
const gchar *guide_id = repr->attribute("id");
- gchar *label = g_strdup_printf(_("Moving %s %s"), guide_description, guide_id);
+ gchar *label = g_strdup_printf(_("Guideline ID: %s"), guide_id);
+ _label_name.set_label(label);
+ g_free(label);
+ }
+ {
+ gchar *guide_description = sp_guide_description(_guide);
+ gchar *label = g_strdup_printf(_("Current: %s"), guide_description);
g_free(guide_description);
- _label_descr.set_label(label);
+ _label_descr.set_markup(label);
g_free(label);
}
- _spin_angle.set_value(_oldangle);
+ _modeChanged(); // sets values of spinboxes.
+
+ if ( _oldangle == 90. || _oldangle == 270. || _oldangle == -90. || _oldangle == -270.) {
+ _spin_button_x.grab_focus();
+ _spin_button_x.select_region(0, 20);
+ } else if ( _oldangle == 0. || _oldangle == 180. || _oldangle == -180.) {
+ _spin_button_y.grab_focus();
+ _spin_button_y.select_region(0, 20);
+ } else {
+ _spin_angle.grab_focus();
+ _spin_angle.select_region(0, 20);
+ }
- SPUnit const &unit = *sp_unit_selector_get_unit(SP_UNIT_SELECTOR(unit_selector));
- gdouble const val_y = sp_pixels_get_units(_oldpos[Geom::Y], unit);
- _spin_button_y.set_value(val_y);
- gdouble const val_x = sp_pixels_get_units(_oldpos[Geom::X], unit);
- _spin_button_x.set_value(val_x);
- _spin_button_x.grab_focus();
- _spin_button_x.select_region(0, 20);
set_position(Gtk::WIN_POS_MOUSE);
show_all_children();
End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
-