summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2013-04-20 21:21:33 +0000
committerMarkus Engel <markus.engel@tum.de>2013-04-20 21:21:33 +0000
commit39580f4b417374ccba9d504f028388b2a2932506 (patch)
treea4337231a1b27403dceb49810ea618297ed0b659 /src/ui
parentMerging of EventContext classes complete. (diff)
parentGroup bbox update (Bug 1168979) (diff)
downloadinkscape-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.cpp1
-rw-r--r--src/ui/dialog/symbols.cpp8
-rw-r--r--src/ui/dialog/text-edit.cpp50
-rw-r--r--src/ui/dialog/text-edit.h10
-rw-r--r--src/ui/dialog/xml-tree.cpp1
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"));
}