diff options
| author | Markus Engel <markus.engel@tum.de> | 2013-04-20 21:21:33 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2013-04-20 21:21:33 +0000 |
| commit | 39580f4b417374ccba9d504f028388b2a2932506 (patch) | |
| tree | a4337231a1b27403dceb49810ea618297ed0b659 /src/ui | |
| parent | Merging of EventContext classes complete. (diff) | |
| parent | Group bbox update (Bug 1168979) (diff) | |
| download | inkscape-39580f4b417374ccba9d504f028388b2a2932506.tar.gz inkscape-39580f4b417374ccba9d504f028388b2a2932506.zip | |
merged from trunk (r12287)
(bzr r11608.1.99)
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/dialog/font-substitution.cpp | 1 | ||||
| -rw-r--r-- | src/ui/dialog/symbols.cpp | 8 | ||||
| -rw-r--r-- | src/ui/dialog/text-edit.cpp | 50 | ||||
| -rw-r--r-- | src/ui/dialog/text-edit.h | 10 | ||||
| -rw-r--r-- | src/ui/dialog/xml-tree.cpp | 1 |
5 files changed, 66 insertions, 4 deletions
diff --git a/src/ui/dialog/font-substitution.cpp b/src/ui/dialog/font-substitution.cpp index 8df3ee5c8..9fa94ca8f 100644 --- a/src/ui/dialog/font-substitution.cpp +++ b/src/ui/dialog/font-substitution.cpp @@ -11,6 +11,7 @@ #endif #include <gtkmm/messagedialog.h> +#include <gtkmm/checkbutton.h> #include <gtkmm/scrolledwindow.h> #include <gtkmm/textview.h> diff --git a/src/ui/dialog/symbols.cpp b/src/ui/dialog/symbols.cpp index dfc92774c..4eeb1b5f0 100644 --- a/src/ui/dialog/symbols.cpp +++ b/src/ui/dialog/symbols.cpp @@ -148,6 +148,9 @@ SymbolsDialog::SymbolsDialog( gchar const* prefsPath ) : //iconView->set_text_column( columns->symbol_id ); iconView->set_tooltip_column( 1 ); iconView->set_pixbuf_column( columns->symbol_image ); + // Giving the iconview a small minimum size will help users understand + // What the dialog does. + iconView->set_size_request( 100, 200 ); std::vector< Gtk::TargetEntry > targets; targets.push_back(Gtk::TargetEntry( "application/x-inkscape-paste")); @@ -466,8 +469,9 @@ void SymbolsDialog::get_symbols() { symbol_doc = SPDocument::createNewDoc( fullname, FALSE ); if( symbol_doc ) { - symbolSets[Glib::ustring(filename)]= symbol_doc; - symbolSet->append(filename); + gchar *title = symbol_doc->getRoot()->title(); + symbolSets[Glib::ustring(title)] = symbol_doc; + symbolSet->append(title); } } diff --git a/src/ui/dialog/text-edit.cpp b/src/ui/dialog/text-edit.cpp index c87e94fc6..9f3294275 100644 --- a/src/ui/dialog/text-edit.cpp +++ b/src/ui/dialog/text-edit.cpp @@ -59,7 +59,7 @@ extern "C" { #include <glibmm/i18n.h> #include <glibmm/markup.h> #include "unit-constants.h" - +#include "sp-textpath.h" namespace Inkscape { namespace UI { @@ -133,6 +133,30 @@ TextEdit::TextEdit() layout_frame.set_padding(4,4,4,4); layout_frame.add(layout_hbox); + // Text start Offset + { + startOffset = gtk_combo_box_text_new_with_entry (); + gtk_widget_set_size_request(startOffset, 90, -1); + + const gchar *spacings[] = {"0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%", NULL}; + for (int i = 0; spacings[i]; i++) { + gtk_combo_box_text_append_text(reinterpret_cast<GtkComboBoxText *>(startOffset), spacings[i]); + } + gtk_entry_set_text(reinterpret_cast<GtkEntry *>(gtk_bin_get_child(reinterpret_cast<GtkBin *>(startOffset))), "0%"); + + gtk_widget_set_tooltip_text(startOffset, _("Text path offset")); + +#if WITH_GTKMM_3_0 + Gtk::Separator *sep = Gtk::manage(new Gtk::Separator()); + sep->set_orientation(Gtk::ORIENTATION_VERTICAL); +#else + Gtk::VSeparator *sep = Gtk::manage(new Gtk::VSeparator); +#endif + layout_hbox.pack_start(*sep, false, false, 10); + + layout_hbox.pack_start(*Gtk::manage(Glib::wrap(startOffset)), false, false); + } + /* Font preview */ preview_label.set_ellipsize(Pango::ELLIPSIZE_END); preview_label.set_justify(Gtk::JUSTIFY_CENTER); @@ -189,6 +213,7 @@ TextEdit::TextEdit() g_signal_connect ( G_OBJECT (fontsel), "font_set", G_CALLBACK (onFontChange), this ); g_signal_connect ( G_OBJECT (spacing_combo), "changed", G_CALLBACK (onLineSpacingChange), this ); g_signal_connect ( G_OBJECT (text_buffer), "changed", G_CALLBACK (onTextChange), this ); + g_signal_connect(startOffset, "changed", G_CALLBACK(onStartOffsetChange), this); 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)); @@ -263,8 +288,16 @@ void TextEdit::onReadSelection ( gboolean dostyle, gboolean /*docontent*/ ) guint items = getSelectedTextCount (); if (items == 1) { gtk_widget_set_sensitive (text_view, TRUE); + gtk_widget_set_sensitive( startOffset, SP_IS_TEXT_TEXTPATH(text) ); + if (SP_IS_TEXT_TEXTPATH(text)) { + SPTextPath *tp = SP_TEXTPATH(text->firstChild()); + if (tp->getAttribute("startOffset")) { + gtk_entry_set_text(reinterpret_cast<GtkEntry *>(gtk_bin_get_child(reinterpret_cast<GtkBin *>(startOffset))), tp->getAttribute("startOffset")); + } + } } else { gtk_widget_set_sensitive (text_view, FALSE); + gtk_widget_set_sensitive( startOffset, FALSE ); } apply_button.set_sensitive ( false ); setasdefault_button.set_sensitive ( true ); @@ -286,6 +319,7 @@ void TextEdit::onReadSelection ( gboolean dostyle, gboolean /*docontent*/ ) text->getRepr(); // was being called but result ignored. Check this. } else { gtk_widget_set_sensitive (text_view, FALSE); + gtk_widget_set_sensitive( startOffset, FALSE ); apply_button.set_sensitive ( false ); setasdefault_button.set_sensitive ( false ); } @@ -616,6 +650,19 @@ void TextEdit::onFontChange(SPFontSelector * /*fontsel*/, gchar* fontspec, TextE } +void TextEdit::onStartOffsetChange(GtkTextBuffer *text_buffer, TextEdit *self) +{ + SPItem *text = self->getSelectedTextItem(); + if (text && SP_IS_TEXT_TEXTPATH(text)) + { + SPTextPath *tp = SP_TEXTPATH(text->firstChild()); + const gchar *sstr = gtk_combo_box_text_get_active_text(reinterpret_cast<GtkComboBoxText *>(self->startOffset)); + tp->setAttribute("startOffset", sstr); + + DocumentUndo::maybeDone(sp_desktop_document(SP_ACTIVE_DESKTOP), "startOffset", SP_VERB_CONTEXT_TEXT, _("Set text style")); + } +} + void TextEdit::onToggle() { if (blocked) @@ -628,7 +675,6 @@ void TextEdit::onToggle() //onApply(); } setasdefault_button.set_sensitive ( true ); - } diff --git a/src/ui/dialog/text-edit.h b/src/ui/dialog/text-edit.h index f27fdfc87..0e3ebafa7 100644 --- a/src/ui/dialog/text-edit.h +++ b/src/ui/dialog/text-edit.h @@ -107,6 +107,14 @@ protected: static void onFontChange (SPFontSelector *fontsel, gchar* fontspec, 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. + * @param self pointer to the current instance of the dialog. + */ + static void onStartOffsetChange(GtkTextBuffer *text_buffer, TextEdit *self); + + /** * Get the selected text off the main canvas. * * @return SPItem pointer to the selected text object @@ -191,6 +199,8 @@ private: GtkWidget *spacing_combo; + GtkWidget *startOffset; + Gtk::Label preview_label; Gtk::Label text_label; diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index 29dbc4b93..a537b7fca 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -986,6 +986,7 @@ void XmlTree::cmd_delete_node() g_assert(selected_repr != NULL); sp_repr_unparent(selected_repr); + reinterpret_cast<SPObject *>(current_desktop->currentLayer())->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); DocumentUndo::done(current_document, SP_VERB_DIALOG_XML_EDITOR, Q_("nodeAsInXMLinHistoryDialog|Delete node")); } |
