diff options
| author | Tavmjong Bah <tavmjong@free.fr> | 2015-05-20 08:53:59 +0000 |
|---|---|---|
| committer | tavmjong-free <tavmjong@free.fr> | 2015-05-20 08:53:59 +0000 |
| commit | 421d13903f4ae30d1b536788e9b48b69398bf139 (patch) | |
| tree | 97d7b0792f345525de24134ee5e14ac9e0d10567 /src | |
| parent | Enable setting of 'font-variant-ligatures' (rendering waits on new Pango libr... (diff) | |
| download | inkscape-421d13903f4ae30d1b536788e9b48b69398bf139.tar.gz inkscape-421d13903f4ae30d1b536788e9b48b69398bf139.zip | |
Font-variants widget: Enable 'Apply' button. Add more tooltips.
(bzr r14163)
Diffstat (limited to 'src')
| -rw-r--r-- | src/ui/dialog/text-edit.cpp | 15 | ||||
| -rw-r--r-- | src/ui/dialog/text-edit.h | 13 | ||||
| -rw-r--r-- | src/ui/widget/font-variants.cpp | 114 | ||||
| -rw-r--r-- | src/ui/widget/font-variants.h | 19 |
4 files changed, 132 insertions, 29 deletions
diff --git a/src/ui/dialog/text-edit.cpp b/src/ui/dialog/text-edit.cpp index 4fd227f01..1a696c820 100644 --- a/src/ui/dialog/text-edit.cpp +++ b/src/ui/dialog/text-edit.cpp @@ -218,6 +218,7 @@ TextEdit::TextEdit() setasdefault_button.signal_clicked().connect(sigc::mem_fun(*this, &TextEdit::onSetDefault)); apply_button.signal_clicked().connect(sigc::mem_fun(*this, &TextEdit::onApply)); close_button.signal_clicked().connect(sigc::bind(_signal_response.make_slot(), GTK_RESPONSE_CLOSE)); + fontVariantChangedConn = vari_vbox.connectChanged(sigc::bind(sigc::ptr_fun(&onFontVariantChange), this)); desktopChangeConn = deskTrack.connectDesktopChanged( sigc::mem_fun(*this, &TextEdit::setTargetDesktop) ); deskTrack.connect(GTK_WIDGET(gobj())); @@ -232,6 +233,7 @@ TextEdit::~TextEdit() selectChangedConn.disconnect(); desktopChangeConn.disconnect(); deskTrack.disconnect(); + fontVariantChangedConn.disconnect(); } void TextEdit::styleButton(Gtk::RadioButton *button, gchar const *tooltip, gchar const *icon_name, Gtk::RadioButton *group_button ) @@ -656,6 +658,19 @@ void TextEdit::onFontChange(SPFontSelector * /*fontsel*/, gchar* fontspec, TextE } +void TextEdit::onFontVariantChange(TextEdit *self) +{ + if( self->blocked ) + return; + + SPItem *text = self->getSelectedTextItem (); + + if (text) { + self->apply_button.set_sensitive ( true ); + } + self->setasdefault_button.set_sensitive ( true ); +} + void TextEdit::onStartOffsetChange(GtkTextBuffer * /*text_buffer*/, TextEdit *self) { SPItem *text = self->getSelectedTextItem(); diff --git a/src/ui/dialog/text-edit.h b/src/ui/dialog/text-edit.h index f088fd337..41f89b3e7 100644 --- a/src/ui/dialog/text-edit.h +++ b/src/ui/dialog/text-edit.h @@ -36,6 +36,7 @@ class SPItem; struct SPFontSelector; +class FontVariants; class font_instance; class SPCSSAttr; @@ -112,6 +113,17 @@ protected: static void onFontChange (SPFontSelector *fontsel, gchar* fontspec, TextEdit *self); /** + * Callback invoked when the user modifies the font variant through the dialog. + * + * onFontChange updates the dialog UI. The subfunction setPreviewText updates the preview label. + * + * @param fontsel pointer to FontVariant (currently not used). + * @param fontspec for the text to be previewed. + * @param self pointer to the current instance of the dialog. + */ + static void onFontVariantChange (TextEdit *self); + + /** * Callback invoked when the user modifies the startOffset of text on a path. * * @param text_buffer pointer to the GtkTextBuffer with the text of the selected text object. @@ -228,6 +240,7 @@ private: sigc::connection selectChangedConn; sigc::connection subselChangedConn; sigc::connection selectModifiedConn; + sigc::connection fontVariantChangedConn; bool blocked; const Glib::ustring samplephrase; diff --git a/src/ui/widget/font-variants.cpp b/src/ui/widget/font-variants.cpp index 56c24ea6f..637631fda 100644 --- a/src/ui/widget/font-variants.cpp +++ b/src/ui/widget/font-variants.cpp @@ -76,6 +76,8 @@ namespace Widget { { // Ligatures -------------------------- + + // Add tooltips _ligatures_common.set_tooltip_text( _("Common ligatures. On by default. OpenType tables: 'liga', 'clig'")); _ligatures_discretionary.set_tooltip_text( @@ -85,11 +87,13 @@ namespace Widget { _ligatures_contextual.set_tooltip_text( _("Contextual forms. On by default. OpenType table: 'calt'")); - + // Add signals _ligatures_common.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::ligatures_callback) ); _ligatures_discretionary.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::ligatures_callback) ); _ligatures_historical.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::ligatures_callback) ); _ligatures_contextual.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::ligatures_callback) ); + + // Add to frame _ligatures_vbox.add( _ligatures_common ); _ligatures_vbox.add( _ligatures_discretionary ); _ligatures_vbox.add( _ligatures_historical ); @@ -100,32 +104,41 @@ namespace Widget { ligatures_init(); // Position ---------------------------------- - _position_vbox.add( _position_normal ); - _position_vbox.add( _position_sub ); - _position_vbox.add( _position_super ); - _position_frame.add( _position_vbox ); - add( _position_frame ); + + // Add tooltips + _position_normal.set_tooltip_text( _("Normal position.")); + _position_sub.set_tooltip_text( _("Subscript. OpenType table: 'subs'") ); + _position_super.set_tooltip_text( _("Superscript. OpenType table: 'sups'") ); // Group buttons Gtk::RadioButton::Group position_group = _position_normal.get_group(); _position_sub.set_group(position_group); _position_super.set_group(position_group); + + // Add signals _position_normal.signal_pressed().connect ( sigc::mem_fun(*this, &FontVariants::position_callback) ); _position_sub.signal_pressed().connect ( sigc::mem_fun(*this, &FontVariants::position_callback) ); _position_super.signal_pressed().connect ( sigc::mem_fun(*this, &FontVariants::position_callback) ); + // Add to frame + _position_vbox.add( _position_normal ); + _position_vbox.add( _position_sub ); + _position_vbox.add( _position_super ); + _position_frame.add( _position_vbox ); + add( _position_frame ); + position_init(); // Caps ---------------------------------- - _caps_vbox.add( _caps_normal ); - _caps_vbox.add( _caps_small ); - _caps_vbox.add( _caps_all_small ); - _caps_vbox.add( _caps_petite ); - _caps_vbox.add( _caps_all_petite ); - _caps_vbox.add( _caps_unicase ); - _caps_vbox.add( _caps_titling ); - _caps_frame.add( _caps_vbox ); - add( _caps_frame ); + + // Add tooltips + _caps_normal.set_tooltip_text( _("Normal capitalization.")); + _caps_small.set_tooltip_text( _("Small-caps (lowercase). OpenType table: 'smcp'")); + _caps_all_small.set_tooltip_text( _("All small-caps (uppercase and lowercase). OpenType tables: 'c2sc' and 'smcp'")); + _caps_petite.set_tooltip_text( _("Petite-caps (lowercase). OpenType table: 'pcap'")); + _caps_all_petite.set_tooltip_text( _("All petite-caps (uppercase and lowercase). OpenType tables: 'c2sc' and 'pcap'")); + _caps_unicase.set_tooltip_text( _("Unicase (small caps for uppercase, normal for lowercase). OpenType table: 'unic'")); + _caps_titling.set_tooltip_text( _("Titling caps (lighter-weight uppercase for use in titles). OpenType table: 'titl'")); // Group buttons Gtk::RadioButton::Group caps_group = _caps_normal.get_group(); @@ -135,6 +148,8 @@ namespace Widget { _caps_all_petite.set_group(caps_group); _caps_unicase.set_group(caps_group); _caps_titling.set_group(caps_group); + + // Add signals _caps_normal.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::caps_callback) ); _caps_small.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::caps_callback) ); _caps_all_small.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::caps_callback) ); @@ -143,9 +158,61 @@ namespace Widget { _caps_unicase.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::caps_callback) ); _caps_titling.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::caps_callback) ); + // Add to frame + _caps_vbox.add( _caps_normal ); + _caps_vbox.add( _caps_small ); + _caps_vbox.add( _caps_all_small ); + _caps_vbox.add( _caps_petite ); + _caps_vbox.add( _caps_all_petite ); + _caps_vbox.add( _caps_unicase ); + _caps_vbox.add( _caps_titling ); + _caps_frame.add( _caps_vbox ); + add( _caps_frame ); + caps_init(); // Numeric ------------------------------ + + // Add tooltips + _numeric_default_style.set_tooltip_text( _("Normal style.")); + _numeric_lining.set_tooltip_text( _("Lining numerals. OpenType table: 'lnum'")); + _numeric_old_style.set_tooltip_text( _("Old style numerals. OpenType table: 'onum'")); + _numeric_default_width.set_tooltip_text( _("Normal widths.")); + _numeric_proportional.set_tooltip_text( _("Proportional width numerals. OpenType table: 'pnum'")); + _numeric_tabular.set_tooltip_text( _("Same width numerals. OpenType table: 'tnum'")); + _numeric_default_fractions.set_tooltip_text( _("Normal fractions.")); + _numeric_diagonal.set_tooltip_text( _("Diagonal fractions. OpenType table: 'frac'")); + _numeric_stacked.set_tooltip_text( _("Stacked fractions. OpenType table: 'afrc'")); + _numeric_ordinal.set_tooltip_text( _("Ordinals (raised 'th', etc.). OpenType table: 'ordn'")); + _numeric_slashed_zero.set_tooltip_text( _("Slashed zeros. OpenType table: 'zero'")); + + // Group buttons + Gtk::RadioButton::Group style_group = _numeric_default_style.get_group(); + _numeric_lining.set_group(style_group); + _numeric_old_style.set_group(style_group); + + Gtk::RadioButton::Group width_group = _numeric_default_width.get_group(); + _numeric_proportional.set_group(width_group); + _numeric_tabular.set_group(width_group); + + Gtk::RadioButton::Group fraction_group = _numeric_default_fractions.get_group(); + _numeric_diagonal.set_group(fraction_group); + _numeric_stacked.set_group(fraction_group); + + // Add signals + _numeric_default_style.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_lining.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_old_style.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_default_width.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_proportional.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_tabular.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_default_fractions.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_diagonal.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_stacked.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_ordinal.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + _numeric_slashed_zero.signal_clicked().connect ( sigc::mem_fun(*this, &FontVariants::numeric_callback) ); + + // Add to frame _numeric_stylebox.add( _numeric_default_style ); _numeric_stylebox.add( _numeric_lining ); _numeric_stylebox.add( _numeric_old_style ); @@ -163,20 +230,9 @@ namespace Widget { _numeric_frame.add( _numeric_vbox ); add( _numeric_frame ); - // Group buttons - Gtk::RadioButton::Group style_group = _numeric_default_style.get_group(); - _numeric_lining.set_group(style_group); - _numeric_old_style.set_group(style_group); - - Gtk::RadioButton::Group width_group = _numeric_default_width.get_group(); - _numeric_proportional.set_group(width_group); - _numeric_tabular.set_group(width_group); - - Gtk::RadioButton::Group fraction_group = _numeric_default_fractions.get_group(); - _numeric_diagonal.set_group(fraction_group); - _numeric_stacked.set_group(fraction_group); show_all_children(); + } void @@ -188,6 +244,7 @@ namespace Widget { FontVariants::ligatures_callback() { // std::cout << "FontVariants::ligatures_callback()" << std::endl; _ligatures_changed = true; + _changed_signal.emit(); } void @@ -199,6 +256,7 @@ namespace Widget { FontVariants::position_callback() { // std::cout << "FontVariants::position_callback()" << std::endl; _position_changed = true; + _changed_signal.emit(); } void @@ -210,6 +268,7 @@ namespace Widget { FontVariants::caps_callback() { // std::cout << "FontVariants::caps_callback()" << std::endl; _caps_changed = true; + _changed_signal.emit(); } void @@ -221,6 +280,7 @@ namespace Widget { FontVariants::numeric_callback() { // std::cout << "FontVariants::numeric_callback()" << std::endl; _numeric_changed = true; + _changed_signal.emit(); } // Update GUI based on query. diff --git a/src/ui/widget/font-variants.h b/src/ui/widget/font-variants.h index 04c05d3c6..e6a9dd68b 100644 --- a/src/ui/widget/font-variants.h +++ b/src/ui/widget/font-variants.h @@ -10,8 +10,6 @@ #ifndef INKSCAPE_UI_WIDGET_FONT_VARIANT_H #define INKSCAPE_UI_WIDGET_FONT_VARIANT_H -// Temp: both frame and expander -#include <gtkmm/frame.h> #include <gtkmm/expander.h> #include <gtkmm/checkbutton.h> #include <gtkmm/radiobutton.h> @@ -112,10 +110,27 @@ private: bool _caps_changed; bool _numeric_changed; + sigc::signal<void> _changed_signal; + public: + + /** + * Update GUI based on query results. + */ void update( SPStyle const *query ); + /** + * Fill SPCSSAttr based on settings of buttons. + */ void fill_css( SPCSSAttr* css ); + + /** + * Let others know that user has changed GUI settings. + * (Used to enable 'Apply' and 'Default' buttons.) + */ + sigc::connection connectChanged(sigc::slot<void> slot) { + return _changed_signal.connect(slot); + } }; |
