diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2009-02-21 01:59:56 +0000 |
|---|---|---|
| committer | tweenk <tweenk@users.sourceforge.net> | 2009-02-21 01:59:56 +0000 |
| commit | 154165799998cb2cb7491bbd97b0511943a0228e (patch) | |
| tree | 878507e5e42b4651f1bb0805a42c0837528eb314 /src/dialogs/guidelinedialog.cpp | |
| parent | Only build static libraries for subdirs than actually contain libraries, (diff) | |
| download | inkscape-154165799998cb2cb7491bbd97b0511943a0228e.tar.gz inkscape-154165799998cb2cb7491bbd97b0511943a0228e.zip | |
Move files from the src/dialogs/ directory to the places where they
should be. Build libinkscape.a - should reduce link time.
(bzr r7337)
Diffstat (limited to 'src/dialogs/guidelinedialog.cpp')
| -rw-r--r-- | src/dialogs/guidelinedialog.cpp | 285 |
1 files changed, 0 insertions, 285 deletions
diff --git a/src/dialogs/guidelinedialog.cpp b/src/dialogs/guidelinedialog.cpp deleted file mode 100644 index f0115ee91..000000000 --- a/src/dialogs/guidelinedialog.cpp +++ /dev/null @@ -1,285 +0,0 @@ -/** @file - * @brief Simple guideline dialog - */ -/* Authors: - * Lauris Kaplinski <lauris@kaplinski.com> - * Andrius R. <knutux@gmail.com> - * Johan Engelen - * - * Copyright (C) 1999-2007 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif -#include "display/guideline.h" -#include "helper/unit-menu.h" -#include "helper/units.h" -#include "desktop.h" -#include "document.h" -#include "sp-guide.h" -#include "sp-namedview.h" -#include "desktop-handles.h" -#include "event-context.h" -#include "widgets/desktop-widget.h" -#include "sp-metrics.h" -#include <glibmm/i18n.h> -#include "dialogs/dialog-events.h" -#include "message-context.h" -#include "xml/repr.h" -#include <2geom/point.h> -#include <2geom/angle.h> -#include "guidelinedialog.h" - -namespace Inkscape { -namespace UI { -namespace Dialogs { - -GuidelinePropertiesDialog::GuidelinePropertiesDialog(SPGuide *guide, SPDesktop *desktop) -: _desktop(desktop), _guide(guide), - _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) -{ -} - -GuidelinePropertiesDialog::~GuidelinePropertiesDialog() { -} - -void GuidelinePropertiesDialog::showDialog(SPGuide *guide, SPDesktop *desktop) { - GuidelinePropertiesDialog dialog(guide, desktop); - dialog._setup(); - dialog.run(); -} - -void GuidelinePropertiesDialog::_modeChanged() -{ - _mode = !_relative_toggle.get_active(); - if (!_mode) { - // relative - _spin_angle.set_value(0); - - _spin_button_y.set_value(0); - _spin_button_x.set_value(0); - } else { - // 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 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.); - } else if ( deg_angle == 0. || deg_angle == 180. || deg_angle == -180.) { - normal = Geom::Point(0.,1.); - } else { - double rad_angle = Geom::deg_to_rad( deg_angle ); - normal = Geom::rot90(Geom::Point::polar(rad_angle, 1.0)); - } - sp_guide_set_normal(*_guide, normal, true); - - SPUnit const &unit = *sp_unit_selector_get_unit(SP_UNIT_SELECTOR(_unit_selector->gobj())); - gdouble const raw_dist_x = _spin_button_x.get_value(); - gdouble const points_x = sp_units_get_pixels(raw_dist_x, unit); - gdouble const raw_dist_y = _spin_button_y.get_value(); - gdouble const points_y = sp_units_get_pixels(raw_dist_y, unit); - Geom::Point newpos(points_x, points_y); - if (!_mode) - newpos += _oldpos; - - sp_guide_moveto(*_guide, newpos, true); - - sp_document_done(SP_OBJECT_DOCUMENT(_guide), SP_VERB_NONE, - _("Set guide properties")); -} - -void GuidelinePropertiesDialog::_onOK() -{ - _onApply(); -} - -void GuidelinePropertiesDialog::_onDelete() -{ - SPDocument *doc = SP_OBJECT_DOCUMENT(_guide); - sp_guide_remove(_guide); - sp_document_done(doc, SP_VERB_NONE, - _("Delete guide")); -} - -void GuidelinePropertiesDialog::_response(gint response) -{ - switch (response) { - case Gtk::RESPONSE_OK: - _onOK(); - break; - case -12: - _onDelete(); - break; - case Gtk::RESPONSE_CANCEL: - break; - case Gtk::RESPONSE_DELETE_EVENT: - break; -/* case GTK_RESPONSE_APPLY: - _onApply(); - break; -*/ - default: - g_assert_not_reached(); - } -} - -void GuidelinePropertiesDialog::_setup() { - set_title(_("Guideline")); - add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK); - add_button(Gtk::Stock::DELETE, -12); - add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); - - Gtk::VBox *mainVBox = get_vbox(); - - _layout_table.set_spacings(4); - _layout_table.resize (3, 4); - - 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, 1, 2, Gtk::FILL, Gtk::FILL); - _label_descr.set_alignment(0, 0.5); - - // 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, 9, 10, Gtk::EXPAND | Gtk::FILL, Gtk::FILL); - _relative_toggle.signal_toggled().connect(sigc::mem_fun(*this, &GuidelinePropertiesDialog::_modeChanged)); - - // unitmenu - /* fixme: We should allow percents here too, as percents of the canvas size */ - GtkWidget *unit_selector = sp_unit_selector_new(SP_UNIT_ABSOLUTE | SP_UNIT_DEVICE); - sp_unit_selector_set_unit(SP_UNIT_SELECTOR(unit_selector), _desktop->namedview->doc_units); - _unit_selector = Gtk::manage(Glib::wrap(unit_selector)); - - // position spinbuttons - sp_unit_selector_add_adjustment(SP_UNIT_SELECTOR(unit_selector), GTK_ADJUSTMENT(_adjustment_x.gobj())); - sp_unit_selector_add_adjustment(SP_UNIT_SELECTOR(unit_selector), GTK_ADJUSTMENT(_adjustment_y.gobj())); - _spin_button_x.configure(_adjustment_x, 1.0 , 3); - _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, - 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, - 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, - 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, - 2, 3, 8, 9, Gtk::EXPAND | Gtk::FILL, Gtk::FILL); - - - // dialog - set_default_response(Gtk::RESPONSE_OK); - signal_response().connect(sigc::mem_fun(*this, &GuidelinePropertiesDialog::_response)); - - // initialize dialog - _oldpos = _guide->point_on_line; - if (_guide->is_vertical()) { - _oldangle = 90; - } else if (_guide->is_horizontal()) { - _oldangle = 0; - } else { - _oldangle = Geom::rad_to_deg( std::atan2( - _guide->normal_to_line[Geom::X], _guide->normal_to_line[Geom::Y] ) ); - } - - { - Inkscape::XML::Node *repr = SP_OBJECT_REPR (_guide); - const gchar *guide_id = repr->attribute("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_markup(label); - g_free(label); - } - - _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); - } - - set_position(Gtk::WIN_POS_MOUSE); - - show_all_children(); - set_modal(true); - _desktop->setWindowTransient (gobj()); - property_destroy_with_parent() = true; -} - -} -} -} - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : |
