X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fui%2Fwidget%2Fselected-style.cpp;h=9cf5aa32b39606a9d866f567275f29f83ed6ed05;hb=41d5edd305122148718ea6dcfce4f92150215f8e;hp=ad4c7a9cd6908409389570dc8e4ab72f305ff9c0;hpb=4ec52515516e3a6bf2fbc3ed01a7e179bde16d20;p=inkscape.git diff --git a/src/ui/widget/selected-style.cpp b/src/ui/widget/selected-style.cpp index ad4c7a9cd..9cf5aa32b 100644 --- a/src/ui/widget/selected-style.cpp +++ b/src/ui/widget/selected-style.cpp @@ -36,6 +36,7 @@ #include "svg/css-ostringstream.h" #include "helper/units.h" #include "verbs.h" +#include static gdouble const _sw_presets[] = { 32 , 16 , 10 , 8 , 6 , 4 , 3 , 2 , 1.5 , 1 , 0.75 , 0.5 , 0.25 , 0.1 }; static gchar* const _sw_presets_str[] = {"32", "16", "10", "8", "6", "4", "3", "2", "1.5", "1", "0.75", "0.5", "0.25", "0.1"}; @@ -96,8 +97,8 @@ SelectedStyle::SelectedStyle(bool layout) _stroke_flag_place (), _opacity_place (), - _opacity_adjustment (1.0, 0.0, 1.0, 0.01, 0.1), - _opacity_sb (0.02, 2), + _opacity_adjustment (100, 0.0, 100, 1.0, 10.0), + _opacity_sb (0.02, 0), _stroke (), _stroke_width (""), @@ -427,7 +428,7 @@ void SelectedStyle::dragDataReceived( GtkWidget *widget, sp_desktop_set_style( tracker->parent->_desktop, css ); sp_repr_css_attr_unref( css ); sp_document_done( sp_desktop_document(tracker->parent->_desktop) , SP_VERB_NONE, - /* TODO: annotate */ "selected-style.cpp:429"); + _("Drop color")); } } break; @@ -440,7 +441,7 @@ void SelectedStyle::on_fill_remove() { sp_desktop_set_style (_desktop, css, true, true); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:442"); + _("Remove fill")); } void SelectedStyle::on_stroke_remove() { @@ -449,7 +450,7 @@ void SelectedStyle::on_stroke_remove() { sp_desktop_set_style (_desktop, css, true, true); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:451"); + _("Remove stroke")); } void SelectedStyle::on_fill_unset() { @@ -458,7 +459,7 @@ void SelectedStyle::on_fill_unset() { sp_desktop_set_style (_desktop, css, true, true); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:460"); + _("Unset fill")); } void SelectedStyle::on_stroke_unset() { @@ -467,7 +468,7 @@ void SelectedStyle::on_stroke_unset() { sp_desktop_set_style (_desktop, css, true, true); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:469"); + _("Unset stroke")); } void SelectedStyle::on_fill_opaque() { @@ -476,7 +477,7 @@ void SelectedStyle::on_fill_opaque() { sp_desktop_set_style (_desktop, css, true); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:478"); + _("Make fill opaque")); } void SelectedStyle::on_stroke_opaque() { @@ -485,7 +486,7 @@ void SelectedStyle::on_stroke_opaque() { sp_desktop_set_style (_desktop, css, true); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:487"); + _("Make fill opaque")); } void SelectedStyle::on_fill_lastused() { @@ -497,7 +498,7 @@ void SelectedStyle::on_fill_lastused() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:499"); + _("Apply last set color to fill")); } void SelectedStyle::on_stroke_lastused() { @@ -509,7 +510,7 @@ void SelectedStyle::on_stroke_lastused() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:511"); + _("Apply last set color to stroke")); } void SelectedStyle::on_fill_lastselected() { @@ -520,7 +521,7 @@ void SelectedStyle::on_fill_lastselected() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:522"); + _("Apply last selected color to fill")); } void SelectedStyle::on_stroke_lastselected() { @@ -531,7 +532,7 @@ void SelectedStyle::on_stroke_lastselected() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:533"); + _("Apply last selected color to stroke")); } void SelectedStyle::on_fill_invert() { @@ -551,7 +552,7 @@ void SelectedStyle::on_fill_invert() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:553"); + _("Invert fill")); } void SelectedStyle::on_stroke_invert() { @@ -571,7 +572,7 @@ void SelectedStyle::on_stroke_invert() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:573"); + _("Invert stroke")); } void SelectedStyle::on_fill_white() { @@ -583,7 +584,7 @@ void SelectedStyle::on_fill_white() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:585"); + _("White fill")); } void SelectedStyle::on_stroke_white() { @@ -595,7 +596,7 @@ void SelectedStyle::on_stroke_white() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:597"); + _("White stroke")); } void SelectedStyle::on_fill_black() { @@ -607,7 +608,7 @@ void SelectedStyle::on_fill_black() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:609"); + _("Black fill")); } void SelectedStyle::on_stroke_black() { @@ -619,7 +620,7 @@ void SelectedStyle::on_stroke_black() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:621"); + _("Black stroke")); } void SelectedStyle::on_fill_copy() { @@ -662,7 +663,7 @@ void SelectedStyle::on_fill_paste() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:664"); + _("Paste fill")); } } @@ -680,15 +681,13 @@ void SelectedStyle::on_stroke_paste() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:682"); + _("Paste stroke")); } } void SelectedStyle::on_fillstroke_swap() { SPCSSAttr *css = sp_repr_css_attr_new (); - g_message("on_fillstroke_swap()"); - switch (_mode[SS_FILL]) { case SS_NA: case SS_MANY: @@ -736,7 +735,7 @@ void SelectedStyle::on_fillstroke_swap() { sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:738"); + _("Swap fill and stroke")); } void SelectedStyle::on_fill_edit() { @@ -798,13 +797,13 @@ bool SelectedStyle::on_opacity_click(GdkEventButton *event) { if (event->button == 2) { // middle click - const char* opacity = _opacity_sb.get_value() < 0.5? "0.5" : (_opacity_sb.get_value() == 1? "0" : "1"); + const char* opacity = _opacity_sb.get_value() < 50? "0.5" : (_opacity_sb.get_value() == 100? "0" : "1"); SPCSSAttr *css = sp_repr_css_attr_new (); sp_repr_css_set_property (css, "opacity", opacity); sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document (_desktop), SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:806"); + _("Change opacity")); return true; } @@ -835,10 +834,11 @@ void SelectedStyle::on_popup_preset(int i) { Inkscape::CSSOStringStream os; os << w; sp_repr_css_set_property (css, "stroke-width", os.str().c_str()); + // FIXME: update dash patterns! sp_desktop_set_style (_desktop, css, true); sp_repr_css_attr_unref (css); sp_document_done (sp_desktop_document(_desktop), SP_VERB_DIALOG_SWATCHES, - /* TODO: annotate */ "selected-style.cpp:840"); + _("Change stroke width")); } void @@ -963,21 +963,25 @@ SelectedStyle::update() // Now query opacity _tooltips.unset_tip(_opacity_place); + _tooltips.unset_tip(_opacity_sb); int result = sp_desktop_query_style (_desktop, query, QUERY_STYLE_PROPERTY_MASTEROPACITY); switch (result) { case QUERY_STYLE_NOTHING: _tooltips.set_tip(_opacity_place, _("Nothing selected")); + _tooltips.set_tip(_opacity_sb, _("Nothing selected")); _opacity_sb.set_sensitive(false); break; case QUERY_STYLE_SINGLE: case QUERY_STYLE_MULTIPLE_AVERAGED: case QUERY_STYLE_MULTIPLE_SAME: - _tooltips.set_tip(_opacity_place, _("Master opacity")); + _tooltips.set_tip(_opacity_place, _("Master opacity, %")); + _tooltips.set_tip(_opacity_sb, _("Master opacity, %")); + if (_opacity_blocked) break; _opacity_blocked = true; _opacity_sb.set_sensitive(true); - _opacity_adjustment.set_value(SP_SCALE24_TO_FLOAT(query->opacity.value)); + _opacity_adjustment.set_value(SP_SCALE24_TO_FLOAT(query->opacity.value) * 100); _opacity_blocked = false; break; } @@ -1022,10 +1026,10 @@ SelectedStyle::update() } void SelectedStyle::opacity_0(void) {_opacity_sb.set_value(0);} -void SelectedStyle::opacity_025(void) {_opacity_sb.set_value(0.25);} -void SelectedStyle::opacity_05(void) {_opacity_sb.set_value(0.5);} -void SelectedStyle::opacity_075(void) {_opacity_sb.set_value(0.75);} -void SelectedStyle::opacity_1(void) {_opacity_sb.set_value(1.0);} +void SelectedStyle::opacity_025(void) {_opacity_sb.set_value(25);} +void SelectedStyle::opacity_05(void) {_opacity_sb.set_value(50);} +void SelectedStyle::opacity_075(void) {_opacity_sb.set_value(75);} +void SelectedStyle::opacity_1(void) {_opacity_sb.set_value(100);} void SelectedStyle::on_opacity_menu (Gtk::Menu *menu) { @@ -1042,25 +1046,25 @@ void SelectedStyle::on_opacity_menu (Gtk::Menu *menu) { } { Gtk::MenuItem *item = new Gtk::MenuItem; - item->add(*(new Gtk::Label("0.25", 0, 0))); + item->add(*(new Gtk::Label("25%", 0, 0))); item->signal_activate().connect(sigc::mem_fun(*this, &SelectedStyle::opacity_025 )); menu->add(*item); } { Gtk::MenuItem *item = new Gtk::MenuItem; - item->add(*(new Gtk::Label("0.5", 0, 0))); + item->add(*(new Gtk::Label("50%", 0, 0))); item->signal_activate().connect(sigc::mem_fun(*this, &SelectedStyle::opacity_05 )); menu->add(*item); } { Gtk::MenuItem *item = new Gtk::MenuItem; - item->add(*(new Gtk::Label("0.75", 0, 0))); + item->add(*(new Gtk::Label("75%", 0, 0))); item->signal_activate().connect(sigc::mem_fun(*this, &SelectedStyle::opacity_075 )); menu->add(*item); } { Gtk::MenuItem *item = new Gtk::MenuItem; - item->add(*(new Gtk::Label(_("1.0 (opaque)"), 0, 0))); + item->add(*(new Gtk::Label(_("100% (opaque)"), 0, 0))); item->signal_activate().connect(sigc::mem_fun(*this, &SelectedStyle::opacity_1 )); menu->add(*item); } @@ -1074,12 +1078,22 @@ void SelectedStyle::on_opacity_changed () { _opacity_blocked = true; SPCSSAttr *css = sp_repr_css_attr_new (); Inkscape::CSSOStringStream os; - os << CLAMP (_opacity_adjustment.get_value(), 0.0, 1.0); + os << CLAMP ((_opacity_adjustment.get_value() / 100), 0.0, 1.0); sp_repr_css_set_property (css, "opacity", os.str().c_str()); + // FIXME: workaround for GTK breakage: display interruptibility sometimes results in GTK + // sending multiple value-changed events. As if when Inkscape interrupts redraw for main loop + // iterations, GTK discovers that this callback hasn't finished yet, and for some weird reason + // decides to add yet another value-changed event to the queue. Totally braindead if you ask + // me. As a result, scrolling the spinbutton once results in runaway change until it hits 1.0 + // or 0.0. (And no, this is not a race with ::update, I checked that.) + // Sigh. So we disable interruptibility while we're setting the new value. + sp_canvas_force_full_redraw_after_interruptions(sp_desktop_canvas(_desktop), 0); sp_desktop_set_style (_desktop, css); sp_repr_css_attr_unref (css); sp_document_maybe_done (sp_desktop_document (_desktop), "fillstroke:opacity", SP_VERB_DIALOG_FILL_STROKE, - /* TODO: annotate */ "selected-style.cpp:1082"); + _("Change opacity")); + // resume interruptibility + sp_canvas_end_forced_full_redraws(sp_desktop_canvas(_desktop)); spinbutton_defocus(GTK_OBJECT(_opacity_sb.gobj())); _opacity_blocked = false; }