rect-toolbar.cpp revision 0b78b3f935d2de75ef952f2bafd0030aca9a077c
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński/**
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * @file
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Rect aux toolbar
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński/* Authors:
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * MenTaLguY <mental@rydia.net>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Lauris Kaplinski <lauris@kaplinski.com>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * bulia byak <buliabyak@users.sf.net>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Frank Felfe <innerspace@iname.com>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * John Cliff <simarilius@yahoo.com>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * David Turner <novalis@gnu.org>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Josh Andler <scislac@scislac.com>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Jon A. Cruz <jon@joncruz.org>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Maximilian Albert <maximilian.albert@gmail.com>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Tavmjong Bah <tavmjong@free.fr>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Abhishek Sharma
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Kris De Gussem <Kris.DeGussem@gmail.com>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński *
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Copyright (C) 2004 David Turner
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Copyright (C) 2003 MenTaLguY
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Copyright (C) 1999-2011 authors
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Copyright (C) 2001-2002 Ximian, Inc.
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński *
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * Released under GNU GPL, read the file 'COPYING' for more information
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#ifdef HAVE_CONFIG_H
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński# include "config.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#endif
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "ui/widget/spinbutton.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include <glibmm/i18n.h>
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "toolbox.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "rect-toolbar.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../desktop.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../desktop-handles.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "document-undo.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../verbs.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../inkscape.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../selection-chemistry.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../selection.h"
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński#include "../ege-adjustment-action.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../ege-output-action.h"
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński#include "../ege-select-one-action.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../ink-action.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../ink-comboboxentry-action.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../widgets/button.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../widgets/spinbutton-events.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../widgets/spw-utilities.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../widgets/widget-sizes.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../xml/node-event-vector.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../xml/repr.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "ui/uxmanager.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../ui/icon-names.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../helper/unit-menu.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "util/units.h"
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński#include "ui/widget/unit-tracker.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../pen-context.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../sp-namedview.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński#include "../sp-rect.h"
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskiusing Inkscape::UI::Widget::UnitTracker;
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskiusing Inkscape::UI::UXManager;
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskiusing Inkscape::DocumentUndo;
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskiusing Inkscape::UI::ToolboxFactory;
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosińskiusing Inkscape::UI::PrefPusher;
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosińskiusing Inkscape::Util::Unit;
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosińskiusing Inkscape::Util::Quantity;
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński//########################
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński//## Rect ##
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński//########################
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskistatic void sp_rtb_sensitivize( GObject *tbl )
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński{
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GtkAdjustment *adj1 = GTK_ADJUSTMENT( g_object_get_data(tbl, "rx") );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GtkAdjustment *adj2 = GTK_ADJUSTMENT( g_object_get_data(tbl, "ry") );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GtkAction* not_rounded = GTK_ACTION( g_object_get_data(tbl, "not_rounded") );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
827bc501341bcc5c344c0422f13422bc368151b4Krzysztof Kosiński if (gtk_adjustment_get_value(adj1) == 0 && gtk_adjustment_get_value(adj2) == 0 && g_object_get_data(tbl, "single")) { // only for a single selected rect (for now)
827bc501341bcc5c344c0422f13422bc368151b4Krzysztof Kosiński gtk_action_set_sensitive( not_rounded, FALSE );
827bc501341bcc5c344c0422f13422bc368151b4Krzysztof Kosiński } else {
827bc501341bcc5c344c0422f13422bc368151b4Krzysztof Kosiński gtk_action_set_sensitive( not_rounded, TRUE );
827bc501341bcc5c344c0422f13422bc368151b4Krzysztof Kosiński }
827bc501341bcc5c344c0422f13422bc368151b4Krzysztof Kosiński}
827bc501341bcc5c344c0422f13422bc368151b4Krzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskistatic void sp_rtb_value_changed(GtkAdjustment *adj, GObject *tbl, gchar const *value_name,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński void (*setter)(SPRect *, gdouble))
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński{
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński SPDesktop *desktop = static_cast<SPDesktop *>(g_object_get_data( tbl, "desktop" ));
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński UnitTracker* tracker = reinterpret_cast<UnitTracker*>(g_object_get_data( tbl, "tracker" ));
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński Unit const unit = tracker->getActiveUnit();
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński Inkscape::Util::UnitTable unit_table;
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński Unit const px = unit_table.getUnit("px");
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński if (DocumentUndo::getUndoSensitive(sp_desktop_document(desktop))) {
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński Inkscape::Preferences *prefs = Inkscape::Preferences::get();
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński prefs->setDouble(Glib::ustring("/tools/shapes/rect/") + value_name,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński Quantity::convert(gtk_adjustment_get_value(adj), &unit, &px));
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński }
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński // quit if run by the attr_changed listener
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński if (g_object_get_data( tbl, "freeze" )) {
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński return;
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński }
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński // in turn, prevent listener from responding
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński g_object_set_data( tbl, "freeze", GINT_TO_POINTER(TRUE));
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński bool modmade = false;
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński Inkscape::Selection *selection = sp_desktop_selection(desktop);
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński for (GSList const *items = selection->itemList(); items != NULL; items = items->next) {
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński if (SP_IS_RECT(items->data)) {
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński if (gtk_adjustment_get_value(adj) != 0) {
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński setter(SP_RECT(items->data),
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński Quantity::convert(gtk_adjustment_get_value(adj), &unit, &px));
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński } else {
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński SP_OBJECT(items->data)->getRepr()->setAttribute(value_name, NULL);
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński }
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński modmade = true;
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński }
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński }
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński sp_rtb_sensitivize( tbl );
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński if (modmade) {
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński DocumentUndo::done(sp_desktop_document(desktop), SP_VERB_CONTEXT_RECT,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński _("Change rectangle"));
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński }
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński g_object_set_data( tbl, "freeze", GINT_TO_POINTER(FALSE) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński}
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosińskistatic void sp_rtb_rx_value_changed(GtkAdjustment *adj, GObject *tbl)
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński{
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński sp_rtb_value_changed(adj, tbl, "rx", sp_rect_set_visible_rx);
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński}
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosińskistatic void sp_rtb_ry_value_changed(GtkAdjustment *adj, GObject *tbl)
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński{
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski sp_rtb_value_changed(adj, tbl, "ry", sp_rect_set_visible_ry);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński}
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosińskistatic void sp_rtb_width_value_changed(GtkAdjustment *adj, GObject *tbl)
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński{
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński sp_rtb_value_changed(adj, tbl, "width", sp_rect_set_visible_width);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński}
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskistatic void sp_rtb_height_value_changed(GtkAdjustment *adj, GObject *tbl)
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński{
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński sp_rtb_value_changed(adj, tbl, "height", sp_rect_set_visible_height);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński}
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskistatic void sp_rtb_defaults( GtkWidget * /*widget*/, GObject *obj)
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński{
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GtkAdjustment *adj = 0;
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński adj = GTK_ADJUSTMENT( g_object_get_data(obj, "rx") );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_adjustment_set_value(adj, 0.0);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński // this is necessary if the previous value was 0, but we still need to run the callback to change all selected objects
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_adjustment_value_changed(adj);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński adj = GTK_ADJUSTMENT( g_object_get_data(obj, "ry") );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_adjustment_set_value(adj, 0.0);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_adjustment_value_changed(adj);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński sp_rtb_sensitivize( obj );
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński}
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskistatic void rect_tb_event_attr_changed(Inkscape::XML::Node * /*repr*/, gchar const * /*name*/,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gchar const * /*old_value*/, gchar const * /*new_value*/,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński bool /*is_interactive*/, gpointer data)
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński{
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GObject *tbl = G_OBJECT(data);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński // quit if run by the _changed callbacks
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński if (g_object_get_data( tbl, "freeze" )) {
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński return;
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński }
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński // in turn, prevent callbacks from responding
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński g_object_set_data( tbl, "freeze", GINT_TO_POINTER(TRUE) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński UnitTracker* tracker = reinterpret_cast<UnitTracker*>( g_object_get_data( tbl, "tracker" ) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński Unit const unit = tracker->getActiveUnit();
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński Inkscape::Util::UnitTable unit_table;
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński Unit const px = unit_table.getUnit("px");
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński gpointer item = g_object_get_data( tbl, "item" );
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński if (item && SP_IS_RECT(item)) {
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński {
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński GtkAdjustment *adj = GTK_ADJUSTMENT( g_object_get_data( tbl, "rx" ) );
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński gdouble rx = sp_rect_get_visible_rx(SP_RECT(item));
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński gtk_adjustment_set_value(adj, Quantity::convert(rx, &px, &unit));
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński }
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński {
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński GtkAdjustment *adj = GTK_ADJUSTMENT( g_object_get_data( tbl, "ry" ) );
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński gdouble ry = sp_rect_get_visible_ry(SP_RECT(item));
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński gtk_adjustment_set_value(adj, Quantity::convert(ry, &px, &unit));
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński }
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński {
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński GtkAdjustment *adj = GTK_ADJUSTMENT( g_object_get_data( tbl, "width" ) );
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński gdouble width = sp_rect_get_visible_width (SP_RECT(item));
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński gtk_adjustment_set_value(adj, Quantity::convert(width, &px, &unit));
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński }
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński {
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GtkAdjustment *adj = GTK_ADJUSTMENT( g_object_get_data( tbl, "height" ) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gdouble height = sp_rect_get_visible_height (SP_RECT(item));
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_adjustment_set_value(adj, Quantity::convert(height, &px, &unit));
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński }
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński }
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński sp_rtb_sensitivize( tbl );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński g_object_set_data( tbl, "freeze", GINT_TO_POINTER(FALSE) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński}
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskistatic Inkscape::XML::NodeEventVector rect_tb_repr_events = {
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński NULL, /* child_added */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński NULL, /* child_removed */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński rect_tb_event_attr_changed,
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński NULL, /* content_changed */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński NULL /* order_changed */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński};
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński/**
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński * \param selection should not be NULL.
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskistatic void sp_rect_toolbox_selection_changed(Inkscape::Selection *selection, GObject *tbl)
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński{
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński int n_selected = 0;
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński Inkscape::XML::Node *repr = NULL;
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen SPItem *item = NULL;
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen if ( g_object_get_data( tbl, "repr" ) ) {
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen g_object_set_data( tbl, "item", NULL );
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen }
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen purge_repr_listener( tbl, tbl );
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen for (GSList const *items = selection->itemList();
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen items != NULL;
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen items = items->next) {
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen if (SP_IS_RECT(reinterpret_cast<SPItem *>(items->data))) {
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen n_selected++;
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen item = reinterpret_cast<SPItem *>(items->data);
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen repr = item->getRepr();
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen }
07bda0b13ae048815f53f21ad1edbe3cc1b7e4e8Johan Engelen }
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński EgeOutputAction* act = EGE_OUTPUT_ACTION( g_object_get_data( tbl, "mode_action" ) );
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński g_object_set_data( tbl, "single", GINT_TO_POINTER(FALSE) );
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński if (n_selected == 0) {
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński g_object_set( G_OBJECT(act), "label", _("<b>New:</b>"), NULL );
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński GtkAction* w = GTK_ACTION( g_object_get_data( tbl, "width_action" ) );
ef494f75ca77f36881ad59e94263a07c146c3649Krzysztof Kosiński gtk_action_set_sensitive(w, FALSE);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GtkAction* h = GTK_ACTION( g_object_get_data( tbl, "height_action" ) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_action_set_sensitive(h, FALSE);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński } else if (n_selected == 1) {
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński g_object_set( G_OBJECT(act), "label", _("<b>Change:</b>"), NULL );
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński g_object_set_data( tbl, "single", GINT_TO_POINTER(TRUE) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GtkAction* w = GTK_ACTION( g_object_get_data( tbl, "width_action" ) );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński gtk_action_set_sensitive(w, TRUE);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GtkAction* h = GTK_ACTION( g_object_get_data( tbl, "height_action" ) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_action_set_sensitive(h, TRUE);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński if (repr) {
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński g_object_set_data( tbl, "repr", repr );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński g_object_set_data( tbl, "item", item );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński Inkscape::GC::anchor(repr);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński sp_repr_add_listener(repr, &rect_tb_repr_events, tbl);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński sp_repr_synthesize_events(repr, &rect_tb_repr_events, tbl);
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski }
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski } else {
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski // FIXME: implement averaging of all parameters for multiple selected
c8589a6c7367d09fa756755cef0dd448c7328a71Johan B. C. Engelen //gtk_label_set_markup(GTK_LABEL(l), _("<b>Average:</b>"));
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski g_object_set( G_OBJECT(act), "label", _("<b>Change:</b>"), NULL );
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski sp_rtb_sensitivize( tbl );
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski }
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski}
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosińskivoid sp_rect_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder)
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński{
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński EgeAdjustmentAction* eact = 0;
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński Inkscape::IconSize secondarySize = ToolboxFactory::prefToSize("/toolbox/secondary", 1);
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński {
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski EgeOutputAction* act = ege_output_action_new( "RectStateAction", _("<b>New:</b>"), "", 0 );
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski ege_output_action_set_use_markup( act, TRUE );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_action_group_add_action( mainActions, GTK_ACTION( act ) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński g_object_set_data( holder, "mode_action", act );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński }
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński // rx/ry units menu: create
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński UnitTracker* tracker = new UnitTracker(Inkscape::Util::UNIT_TYPE_LINEAR);
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński //tracker->addUnit( SP_UNIT_PERCENT, 0 );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński // fixme: add % meaning per cent of the width/height
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński tracker->setActiveUnit( sp_desktop_namedview(desktop)->doc_units );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński g_object_set_data( holder, "tracker", tracker );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński /* W */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński {
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gchar const* labels[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gdouble values[] = {1, 2, 3, 5, 10, 20, 50, 100, 200, 500};
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński eact = create_adjustment_action( "RectWidthAction",
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński _("Width"), _("W:"), _("Width of rectangle"),
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński "/tools/shapes/rect/width", 0,
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński GTK_WIDGET(desktop->canvas), NULL/*us*/, holder, TRUE, "altx-rect",
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński 0, 1e6, SPIN_STEP, SPIN_PAGE_STEP,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński labels, values, G_N_ELEMENTS(labels),
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński sp_rtb_width_value_changed );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński tracker->addAdjustment( ege_adjustment_action_get_adjustment(eact) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński g_object_set_data( holder, "width_action", eact );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_action_set_sensitive( GTK_ACTION(eact), FALSE );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_action_group_add_action( mainActions, GTK_ACTION(eact) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński }
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński /* H */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński {
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gchar const* labels[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gdouble values[] = {1, 2, 3, 5, 10, 20, 50, 100, 200, 500};
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński eact = create_adjustment_action( "RectHeightAction",
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński _("Height"), _("H:"), _("Height of rectangle"),
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński "/tools/shapes/rect/height", 0,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GTK_WIDGET(desktop->canvas), NULL/*us*/, holder, FALSE, NULL,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński 0, 1e6, SPIN_STEP, SPIN_PAGE_STEP,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński labels, values, G_N_ELEMENTS(labels),
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski sp_rtb_height_value_changed );
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski tracker->addAdjustment( ege_adjustment_action_get_adjustment(eact) );
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński g_object_set_data( holder, "height_action", eact );
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński gtk_action_set_sensitive( GTK_ACTION(eact), FALSE );
d6519bf53baba32bd74436ad9c85f1fa2c6b6ae9Krzysztof Kosiński gtk_action_group_add_action( mainActions, GTK_ACTION(eact) );
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski }
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński /* rx */
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński {
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gchar const* labels[] = {_("not rounded"), 0, 0, 0, 0, 0, 0, 0, 0};
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gdouble values[] = {0.5, 1, 2, 3, 5, 10, 20, 50, 100};
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński eact = create_adjustment_action( "RadiusXAction",
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński _("Horizontal radius"), _("Rx:"), _("Horizontal radius of rounded corners"),
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński "/tools/shapes/rect/rx", 0,
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński GTK_WIDGET(desktop->canvas), NULL/*us*/, holder, FALSE, NULL,
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński 0, 1e6, SPIN_STEP, SPIN_PAGE_STEP,
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński labels, values, G_N_ELEMENTS(labels),
76addc201c409e81eaaa73fe27cc0f79c4db097cKrzysztof Kosiński sp_rtb_rx_value_changed);
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński tracker->addAdjustment( ege_adjustment_action_get_adjustment(eact) );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński gtk_action_group_add_action( mainActions, GTK_ACTION(eact) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński }
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński /* ry */
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski {
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński gchar const* labels[] = {_("not rounded"), 0, 0, 0, 0, 0, 0, 0, 0};
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gdouble values[] = {0.5, 1, 2, 3, 5, 10, 20, 50, 100};
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński eact = create_adjustment_action( "RadiusYAction",
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński _("Vertical radius"), _("Ry:"), _("Vertical radius of rounded corners"),
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński "/tools/shapes/rect/ry", 0,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński GTK_WIDGET(desktop->canvas), NULL/*us*/, holder, FALSE, NULL,
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński 0, 1e6, SPIN_STEP, SPIN_PAGE_STEP,
7bda77e763c0af49270427593108b66455dfd125Krzysztof Kosinski labels, values, G_N_ELEMENTS(labels),
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński sp_rtb_ry_value_changed);
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński tracker->addAdjustment( ege_adjustment_action_get_adjustment(eact) );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński gtk_action_group_add_action( mainActions, GTK_ACTION(eact) );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński }
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński // add the units menu
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński {
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński GtkAction* act = tracker->createAction( "RectUnitsAction", _("Units"), ("") );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński gtk_action_group_add_action( mainActions, act );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński }
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński /* Reset */
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński {
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński InkAction* inky = ink_action_new( "RectResetAction",
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński _("Not rounded"),
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński _("Make corners sharp"),
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński INKSCAPE_ICON("rectangle-make-corners-sharp"),
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński secondarySize );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_rtb_defaults), holder );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński gtk_action_set_sensitive( GTK_ACTION(inky), TRUE );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński g_object_set_data( holder, "not_rounded", inky );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński }
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński g_object_set_data( holder, "single", GINT_TO_POINTER(TRUE) );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński sp_rtb_sensitivize( holder );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński sigc::connection *connection = new sigc::connection(
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_rect_toolbox_selection_changed), holder))
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński g_signal_connect( holder, "destroy", G_CALLBACK(delete_connection), connection );
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński g_signal_connect( holder, "destroy", G_CALLBACK(purge_repr_listener), holder );
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński}
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński/*
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński Local Variables:
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński mode:c++
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński c-file-style:"stroustrup"
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński indent-tabs-mode:nil
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński fill-column:99
40742313779ee5e43be93a9191f1c86412cf183bKrzysztof Kosiński End:
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński*/
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
d1bde559850436556ebee2e70e10f1cfc8aff636Krzysztof Kosiński