diff options
| author | Tavmjong Bah <tavmjong@free.fr> | 2016-03-18 10:23:29 +0000 |
|---|---|---|
| committer | tavmjong-free <tavmjong@free.fr> | 2016-03-18 10:23:29 +0000 |
| commit | a714c688d60a3a62114591984f57f26cd41dbed9 (patch) | |
| tree | 3ad1c84aaf1097272b8ee2d4fca5db70f9c4edd3 /src/widgets | |
| parent | Revert 14707 (diff) | |
| download | inkscape-a714c688d60a3a62114591984f57f26cd41dbed9.tar.gz inkscape-a714c688d60a3a62114591984f57f26cd41dbed9.zip | |
Reverting 14701.
(bzr r14716.1.2)
Diffstat (limited to 'src/widgets')
| -rw-r--r-- | src/widgets/select-toolbar.cpp | 159 | ||||
| -rw-r--r-- | src/widgets/text-toolbar.cpp | 81 | ||||
| -rw-r--r-- | src/widgets/toolbox.cpp | 6 |
3 files changed, 98 insertions, 148 deletions
diff --git a/src/widgets/select-toolbar.cpp b/src/widgets/select-toolbar.cpp index 3cd6c0e28..e49c4c00a 100644 --- a/src/widgets/select-toolbar.cpp +++ b/src/widgets/select-toolbar.cpp @@ -136,13 +136,13 @@ sp_selection_layout_widget_change_selection(SPWidget *spw, Inkscape::Selection * } static void -sp_object_layout_any_value_changed(GtkAdjustment *adj, GObject *tbl) +sp_object_layout_any_value_changed(GtkAdjustment *adj, SPWidget *spw) { - if (g_object_get_data(tbl, "update")) { + if (g_object_get_data(G_OBJECT(spw), "update")) { return; } - UnitTracker *tracker = reinterpret_cast<UnitTracker*>(g_object_get_data(tbl, "tracker")); + UnitTracker *tracker = reinterpret_cast<UnitTracker*>(g_object_get_data(G_OBJECT(spw), "tracker")); if ( !tracker || tracker->isUpdating() ) { /* * When only units are being changed, don't treat changes @@ -150,7 +150,7 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, GObject *tbl) */ return; } - g_object_set_data(tbl, "update", GINT_TO_POINTER(TRUE)); + g_object_set_data(G_OBJECT(spw), "update", GINT_TO_POINTER(TRUE)); SPDesktop *desktop = SP_ACTIVE_DESKTOP; Inkscape::Selection *selection = desktop->getSelection(); @@ -168,7 +168,7 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, GObject *tbl) Geom::OptRect bbox_user = selection->bounds(bbox_type); if ( !bbox_user ) { - g_object_set_data(tbl, "update", GINT_TO_POINTER(FALSE)); + g_object_set_data(G_OBJECT(spw), "update", GINT_TO_POINTER(FALSE)); return; } @@ -181,10 +181,10 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, GObject *tbl) Unit const *unit = tracker->getActiveUnit(); g_return_if_fail(unit != NULL); - GtkAdjustment* a_x = GTK_ADJUSTMENT( g_object_get_data( tbl, "X" ) ); - GtkAdjustment* a_y = GTK_ADJUSTMENT( g_object_get_data( tbl, "Y" ) ); - GtkAdjustment* a_w = GTK_ADJUSTMENT( g_object_get_data( tbl, "width" ) ); - GtkAdjustment* a_h = GTK_ADJUSTMENT( g_object_get_data( tbl, "height" ) ); + GtkAdjustment* a_x = GTK_ADJUSTMENT( g_object_get_data( G_OBJECT(spw), "X" ) ); + GtkAdjustment* a_y = GTK_ADJUSTMENT( g_object_get_data( G_OBJECT(spw), "Y" ) ); + GtkAdjustment* a_w = GTK_ADJUSTMENT( g_object_get_data( G_OBJECT(spw), "width" ) ); + GtkAdjustment* a_h = GTK_ADJUSTMENT( g_object_get_data( G_OBJECT(spw), "height" ) ); if (unit->type == Inkscape::Util::UNIT_TYPE_LINEAR) { x0 = Quantity::convert(gtk_adjustment_get_value(a_x), unit, "px"); @@ -205,7 +205,7 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, GObject *tbl) } // Keep proportions if lock is on - GtkToggleAction *lock = GTK_TOGGLE_ACTION( g_object_get_data(tbl, "lock") ); + GtkToggleAction *lock = GTK_TOGGLE_ACTION( g_object_get_data(G_OBJECT(spw), "lock") ); if ( gtk_toggle_action_get_active(lock) ) { if (adj == a_h) { x1 = x0 + yrel * bbox_user->dimensions()[Geom::X]; @@ -265,7 +265,68 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, GObject *tbl) desktop->getCanvas()->endForcedFullRedraws(); } - g_object_set_data(tbl, "update", GINT_TO_POINTER(FALSE)); + g_object_set_data(G_OBJECT(spw), "update", GINT_TO_POINTER(FALSE)); +} + +static GtkWidget* createCustomSlider( GtkAdjustment *adjustment, gdouble climbRate, guint digits, Inkscape::UI::Widget::UnitTracker *unit_tracker ) +{ +#if WITH_GTKMM_3_0 + Glib::RefPtr<Gtk::Adjustment> adj = Glib::wrap(adjustment, true); + Inkscape::UI::Widget::SpinButton *inkSpinner = new Inkscape::UI::Widget::SpinButton(adj, climbRate, digits); +#else + Inkscape::UI::Widget::SpinButton *inkSpinner = new Inkscape::UI::Widget::SpinButton(*Glib::wrap(adjustment, true), climbRate, digits); +#endif + inkSpinner->addUnitTracker(unit_tracker); + inkSpinner = Gtk::manage( inkSpinner ); + GtkWidget *widget = GTK_WIDGET( inkSpinner->gobj() ); + return widget; +} + +// TODO create_adjustment_action appears to be a rogue tile copy from toolbox.cpp. Resolve it to be unified: + +static EgeAdjustmentAction * create_adjustment_action( gchar const *name, + gchar const *label, + gchar const *shortLabel, + gchar const *data, + gdouble lower, + GtkWidget* focusTarget, + UnitTracker* tracker, + GtkWidget* spw, + gchar const *tooltip, + gboolean altx ) +{ + static bool init = false; + if ( !init ) { + init = true; + ege_adjustment_action_set_compact_tool_factory( createCustomSlider ); + } + + GtkAdjustment* adj = GTK_ADJUSTMENT( gtk_adjustment_new( 0.0, lower, 1e6, SPIN_STEP, SPIN_PAGE_STEP, 0 ) ); + if (tracker) { + tracker->addAdjustment(adj); + } + if ( spw ) { + g_object_set_data( G_OBJECT(spw), data, adj ); + } + + EgeAdjustmentAction* act = ege_adjustment_action_new( adj, name, Q_(label), tooltip, 0, SPIN_STEP, 3, tracker ); + if ( shortLabel ) { + g_object_set( act, "short_label", Q_(shortLabel), NULL ); + } + + g_signal_connect( G_OBJECT(adj), "value_changed", G_CALLBACK(sp_object_layout_any_value_changed), spw ); + if ( focusTarget ) { + ege_adjustment_action_set_focuswidget( act, focusTarget ); + } + + if ( altx ) { // this spinbutton will be activated by alt-x + g_object_set( G_OBJECT(act), "self-id", "altx", NULL ); + } + + // Using a cast just to make sure we pass in the right kind of function pointer + g_object_set( G_OBJECT(act), "tool-post", static_cast<EgeWidgetFixup>(sp_set_font_size_smaller), NULL ); + + return act; } // toggle button callbacks and updaters @@ -436,60 +497,21 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb // four spinbuttons - eact = create_adjustment_action( - /* name= */ "XAction", - /* label= */ C_("Select toolbar", "X position"), - /* shortLabel= */ C_("Select toolbar", "X:"), - /* tooltip= */ C_("Select toolbar", "Horizontal coordinate of selection"), - /* path= */ "/tools/select/X", - /* def(default) */ 0.0, - /* focusTarget= */ GTK_WIDGET(desktop->canvas), - /* dataKludge= */ G_OBJECT(spw), - /* altx, altx_mark */ TRUE, "altx", - /* lower, uppper, step, page */ -1e6, 1e6, SPIN_STEP, SPIN_PAGE_STEP, - /* descrLabels, descrValues, descrCount */ 0, 0, 0, - /* callback= */ sp_object_layout_any_value_changed, - /* unit_tracker= */ tracker, - /* climb, digits, factor */ SPIN_STEP, 3, 1); - + eact = create_adjustment_action( "XAction", C_("Select toolbar", "X position"), C_("Select toolbar", "X:"), "X", + -1e6, GTK_WIDGET(desktop->canvas), tracker, spw, + _("Horizontal coordinate of selection"), TRUE ); gtk_action_group_add_action( selectionActions, GTK_ACTION(eact) ); contextActions->push_back( GTK_ACTION(eact) ); - eact = create_adjustment_action( - /* name= */ "YAction", - /* label= */ C_("Select toolbar", "Y position"), - /* shortLabel= */ C_("Select toolbar", "Y:"), - /* tooltip= */ C_("Select toolbar", "Vertical coordinate of selection"), - /* path= */ "/tools/select/Y", - /* def(default) */ 0.0, - /* focusTarget= */ GTK_WIDGET(desktop->canvas), - /* dataKludge= */ G_OBJECT(spw), - /* altx, altx_mark */ TRUE, "altx", - /* lower, uppper, step, page */ -1e6, 1e6, SPIN_STEP, SPIN_PAGE_STEP, - /* descrLabels, descrValues, descrCount */ 0, 0, 0, - /* callback= */ sp_object_layout_any_value_changed, - /* unit_tracker= */ tracker, - /* climb, digits, factor */ SPIN_STEP, 3, 1); - + eact = create_adjustment_action( "YAction", C_("Select toolbar", "Y position"), C_("Select toolbar", "Y:"), "Y", + -1e6, GTK_WIDGET(desktop->canvas), tracker, spw, + _("Vertical coordinate of selection"), FALSE ); gtk_action_group_add_action( selectionActions, GTK_ACTION(eact) ); contextActions->push_back( GTK_ACTION(eact) ); - eact = create_adjustment_action( - /* name= */ "WidthAction", - /* label= */ C_("Select toolbar", "Width"), - /* shortLabel= */ C_("Select toolbar", "W:"), - /* tooltip= */ C_("Select toolbar", "Width of selection"), - /* path= */ "/tools/select/width", - /* def(default) */ 0.0, - /* focusTarget= */ GTK_WIDGET(desktop->canvas), - /* dataKludge= */ G_OBJECT(spw), - /* altx, altx_mark */ TRUE, "altx", - /* lower, uppper, step, page */ 0.0, 1e6, SPIN_STEP, SPIN_PAGE_STEP, - /* descrLabels, descrValues, descrCount */ 0, 0, 0, - /* callback= */ sp_object_layout_any_value_changed, - /* unit_tracker= */ tracker, - /* climb, digits, factor */ SPIN_STEP, 3, 1); - + eact = create_adjustment_action( "WidthAction", C_("Select toolbar", "Width"), C_("Select toolbar", "W:"), "width", + 0.0, GTK_WIDGET(desktop->canvas), tracker, spw, + _("Width of selection"), FALSE ); gtk_action_group_add_action( selectionActions, GTK_ACTION(eact) ); contextActions->push_back( GTK_ACTION(eact) ); @@ -506,22 +528,9 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb gtk_action_group_add_action( mainActions, GTK_ACTION(itact) ); } - eact = create_adjustment_action( - /* name= */ "HeightAction", - /* label= */ C_("Select toolbar", "Height"), - /* shortLabel= */ C_("Select toolbar", "H:"), - /* tooltip= */ C_("Select toolbar", "Height of selection"), - /* path= */ "/tools/select/height", - /* def(default) */ 0.0, - /* focusTarget= */ GTK_WIDGET(desktop->canvas), - /* dataKludge= */ G_OBJECT(spw), - /* altx, altx_mark */ TRUE, "altx", - /* lower, uppper, step, page */ 0.0, 1e6, SPIN_STEP, SPIN_PAGE_STEP, - /* descrLabels, descrValues, descrCount */ 0, 0, 0, - /* callback= */ sp_object_layout_any_value_changed, - /* unit_tracker= */ tracker, - /* climb, digits, factor */ SPIN_STEP, 3, 1); - + eact = create_adjustment_action( "HeightAction", C_("Select toolbar", "Height"), C_("Select toolbar", "H:"), "height", + 0.0, GTK_WIDGET(desktop->canvas), tracker, spw, + _("Height of selection"), FALSE ); gtk_action_group_add_action( selectionActions, GTK_ACTION(eact) ); contextActions->push_back( GTK_ACTION(eact) ); diff --git a/src/widgets/text-toolbar.cpp b/src/widgets/text-toolbar.cpp index c49f0bc05..5ca92b4c0 100644 --- a/src/widgets/text-toolbar.cpp +++ b/src/widgets/text-toolbar.cpp @@ -54,17 +54,12 @@ #include "ui/icon-names.h" #include "ui/tools/text-tool.h" #include "ui/tools/tool-base.h" -#include "ui/widget/unit-tracker.h" -#include "util/units.h" #include "verbs.h" #include "xml/repr.h" using Inkscape::DocumentUndo; using Inkscape::UI::ToolboxFactory; using Inkscape::UI::PrefPusher; -using Inkscape::UI::Widget::UnitTracker; -using Inkscape::Util::Unit; -using Inkscape::Util::unit_table; //#define DEBUG_TEXT @@ -509,14 +504,8 @@ static void sp_text_align_mode_changed( EgeSelectOneAction *act, GObject *tbl ) static void sp_text_lineheight_value_changed( GtkAdjustment *adj, GObject *tbl ) { - UnitTracker *tracker = reinterpret_cast<UnitTracker*>(g_object_get_data(tbl, "tracker")); - - if ( !tracker || tracker->isUpdating() || g_object_get_data(tbl, "freeze")) { - /* - * When only units are being changed, don't treat changes - * to adjuster values as object changes. - * or quit if run by the _changed callbacks - */ + // quit if run by the _changed callbacks + if (g_object_get_data(G_OBJECT(tbl), "freeze")) { return; } g_object_set_data( tbl, "freeze", GINT_TO_POINTER(TRUE) ); @@ -525,18 +514,7 @@ static void sp_text_lineheight_value_changed( GtkAdjustment *adj, GObject *tbl ) // Set css line height. SPCSSAttr *css = sp_repr_css_attr_new (); Inkscape::CSSOStringStream osfs; - - gdouble value = gtk_adjustment_get_value(adj); - - Unit const *unit = tracker->getActiveUnit(); - - // Value can only be in px or percent or naked pc (e.g. 0.7 for 70%) - if (unit->abbr != "%") { - value = unit->convert(value, "px"); - unit = unit_table.getUnit("px"); - } - - osfs << value << unit->abbr; + osfs << gtk_adjustment_get_value(adj)*100 << "%"; sp_repr_css_set_property (css, "line-height", osfs.str().c_str()); // Apply line-height to selected objects. @@ -1095,31 +1073,21 @@ static void sp_text_toolbox_selection_changed(Inkscape::Selection */*selection*/ // Line height (spacing) double height; - - Unit const *lh_unit; - UnitTracker* tracker = reinterpret_cast<UnitTracker*>( g_object_get_data( tbl, "tracker" ) ); - if (query.line_height.normal) { - lh_unit = unit_table.getUnit("%"); - height = Inkscape::Text::Layout::LINE_HEIGHT_NORMAL * 100; - } else if (query.line_height.unit == SP_CSS_UNIT_PERCENT) { - lh_unit = unit_table.getUnit("%"); - height = query.line_height.value * 100; + height = Inkscape::Text::Layout::LINE_HEIGHT_NORMAL; } else { - lh_unit = tracker->getActiveUnit(); - // Can get unit like this: unit_table.getUnit(query.line_height.unit); - height = Inkscape::Util::Quantity::convert(query.line_height.computed, "px", lh_unit); + if (query.line_height.unit == SP_CSS_UNIT_PERCENT) { + height = query.line_height.value; + } else { + height = query.line_height.computed; + } } - // Set before value is set - tracker->setActiveUnit(lh_unit); - GtkAction* lineHeightAction = GTK_ACTION( g_object_get_data( tbl, "TextLineHeightAction" ) ); GtkAdjustment *lineHeightAdjustment = ege_adjustment_action_get_adjustment(EGE_ADJUSTMENT_ACTION( lineHeightAction )); gtk_adjustment_set_value( lineHeightAdjustment, height ); - height = gtk_adjustment_get_value( lineHeightAdjustment ); // Word spacing double wordSpacing; @@ -1322,15 +1290,6 @@ static void sp_text_toolbox_select_cb( GtkEntry* entry, GtkEntryIconPosition /*p static void text_toolbox_watch_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder); -static void destroy_tracker( GObject* obj, gpointer /*user_data*/ ) -{ - UnitTracker *tracker = reinterpret_cast<UnitTracker*>(g_object_get_data(obj, "tracker")); - if ( tracker ) { - delete tracker; - g_object_set_data( obj, "tracker", 0 ); - } -} - // Define all the "widgets" in the toolbar. void sp_text_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder) { @@ -1629,29 +1588,22 @@ void sp_text_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObje gchar const* labels[] = {_("Smaller spacing"), 0, 0, 0, 0, C_("Text tool", "Normal"), 0, 0, 0, 0, 0, _("Larger spacing")}; gdouble values[] = { 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1,2, 1.3, 1.4, 1.5, 2.0}; - // Add the units menu. - UnitTracker* tracker = new UnitTracker(Inkscape::Util::UNIT_TYPE_LINEAR); - tracker->prependUnit(unit_table.getUnit("%")); - - g_object_set_data( holder, "tracker", tracker ); - g_signal_connect( holder, "destroy", G_CALLBACK(destroy_tracker), holder ); - EgeAdjustmentAction *eact = create_adjustment_action( "TextLineHeightAction", /* name */ _("Line Height"), /* label */ _("Line:"), /* short label */ - _("Spacing between baselines"), /* tooltip */ + _("Spacing between baselines (times font size)"), /* tooltip */ "/tools/text/lineheight", /* preferences path */ - 125, /* default */ + 0.0, /* default */ GTK_WIDGET(desktop->canvas), /* focusTarget */ holder, /* dataKludge */ FALSE, /* set alt-x keyboard shortcut? */ NULL, /* altx_mark */ - 0.0, 1e6, 1.0, 10.0, /* lower, upper, step (arrow up/down), page up/down */ + 0.0, 10.0, 0.01, 0.10, /* lower, upper, step (arrow up/down), page up/down */ labels, values, G_N_ELEMENTS(labels), /* drop down menu */ sp_text_lineheight_value_changed, /* callback */ - tracker, /* unit tracker */ - 1.0, /* step (used?) */ + NULL, /* unit tracker */ + 0.1, /* step (used?) */ 2, /* digits to show */ 1.0 /* factor (multiplies default) */ ); @@ -1659,11 +1611,6 @@ void sp_text_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObje gtk_action_set_sensitive( GTK_ACTION(eact), TRUE ); g_object_set_data( holder, "TextLineHeightAction", eact ); g_object_set( G_OBJECT(eact), "iconId", "text_line_spacing", NULL ); - - GtkAction* act = tracker->createAction( "TextLineHeightUnitAction", _("Units"), ("") ); - gtk_action_group_add_action( mainActions, act ); - g_object_set_data( holder, "TextLineHeightUnitAction", act ); - } /* Word spacing */ diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index f4d7ebf25..72537f727 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -55,7 +55,6 @@ #include "ui/tools-switch.h" #include "../ui/icon-names.h" #include "../ui/widget/style-swatch.h" -#include "../ui/widget/unit-tracker.h" #include "../verbs.h" #include "../widgets/button.h" #include "../widgets/spinbutton-events.h" @@ -516,7 +515,6 @@ static gchar const * ui_descr = " <toolitem action='TextSubscriptAction' />" " <separator />" " <toolitem action='TextLineHeightAction' />" - " <toolitem action='TextLineHeightUnitAction' />" " <toolitem action='TextLetterSpacingAction' />" " <toolitem action='TextWordSpacingAction' />" " <toolitem action='TextDxAction' />" @@ -1124,10 +1122,6 @@ EgeAdjustmentAction * create_adjustment_action( gchar const *name, g_object_set_data( dataKludge, prefs->getEntry(path).getEntryName().data(), adj ); } - if (unit_tracker) { - unit_tracker->addAdjustment(adj); - } - // Using a cast just to make sure we pass in the right kind of function pointer g_object_set( G_OBJECT(act), "tool-post", static_cast<EgeWidgetFixup>(sp_set_font_size_smaller), NULL ); |
