X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Ftext-chemistry.cpp;h=21c74d1a77e238b0c94cb46f60279441fa265975;hb=2d5f45472d142796f87b8b737cc0b56fc9de3bf7;hp=a61bbdf737a6314e78aa7a4f96dc017e8a9c85ea;hpb=6b15695578f07a3f72c4c9475c1a261a3021472a;p=inkscape.git
diff --git a/src/text-chemistry.cpp b/src/text-chemistry.cpp
index a61bbdf73..21c74d1a7 100644
--- a/src/text-chemistry.cpp
+++ b/src/text-chemistry.cpp
@@ -54,6 +54,18 @@ flowtext_in_selection(Inkscape::Selection *selection)
return NULL;
}
+SPItem *
+text_or_flowtext_in_selection(Inkscape::Selection *selection)
+{
+ for (GSList *items = (GSList *) selection->itemList();
+ items != NULL;
+ items = items->next) {
+ if (SP_IS_TEXT(items->data) || SP_IS_FLOWTEXT(items->data))
+ return ((SPItem *) items->data);
+ }
+ return NULL;
+}
+
SPItem *
shape_in_selection(Inkscape::Selection *selection)
{
@@ -73,24 +85,29 @@ text_put_on_path()
if (!desktop)
return;
- Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
+ Inkscape::Selection *selection = sp_desktop_selection(desktop);
- SPItem *text = text_in_selection(selection);
+ SPItem *text = text_or_flowtext_in_selection(selection);
SPItem *shape = shape_in_selection(selection);
if (!text || !shape || g_slist_length((GSList *) selection->itemList()) != 2) {
- SP_DT_MSGSTACK(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select a text and a path to put text on path."));
+ sp_desktop_message_stack(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select a text and a path to put text on path."));
return;
}
if (SP_IS_TEXT_TEXTPATH(text)) {
- SP_DT_MSGSTACK(desktop)->flash(Inkscape::ERROR_MESSAGE, _("This text object is already put to a path. Remove it from the path first. Use Shift+D to look up its path."));
+ sp_desktop_message_stack(desktop)->flash(Inkscape::ERROR_MESSAGE, _("This text object is already put on a path. Remove it from the path first. Use Shift+D to look up its path."));
+ return;
+ }
+
+ if (SP_IS_FLOWTEXT(text)) {
+ sp_desktop_message_stack(desktop)->flash(Inkscape::ERROR_MESSAGE, _("You cannot put flowtext on a path. Convert flowtext to text first."));
return;
}
if (SP_IS_RECT(shape)) {
// rect is the only SPShape which is not yet, and thus SVG forbids us from putting text on it
- SP_DT_MSGSTACK(desktop)->flash(Inkscape::ERROR_MESSAGE, _("You cannot put text on a rectangle in this version. Convert rectangle to path first."));
+ sp_desktop_message_stack(desktop)->flash(Inkscape::ERROR_MESSAGE, _("You cannot put text on a rectangle in this version. Convert rectangle to path first."));
return;
}
@@ -136,7 +153,7 @@ text_put_on_path()
SP_OBJECT_REPR(text)->setAttribute("x", NULL);
SP_OBJECT_REPR(text)->setAttribute("y", NULL);
- sp_document_done(SP_DT_DOCUMENT(desktop));
+ sp_document_done(sp_desktop_document(desktop));
g_slist_free(text_reprs);
}
@@ -145,10 +162,10 @@ text_remove_from_path()
{
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
- Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
+ Inkscape::Selection *selection = sp_desktop_selection(desktop);
if (selection->isEmpty()) {
- SP_DT_MSGSTACK(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select a text on path to remove it from path."));
+ sp_desktop_message_stack(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select a text on path to remove it from path."));
return;
}
@@ -170,10 +187,10 @@ text_remove_from_path()
}
if (!did) {
- SP_DT_MSGSTACK(desktop)->flash(Inkscape::ERROR_MESSAGE, _("No texts-on-paths in the selection."));
+ sp_desktop_message_stack(desktop)->flash(Inkscape::ERROR_MESSAGE, _("No texts-on-paths in the selection."));
} else {
selection->setList(g_slist_copy((GSList *) selection->itemList())); // reselect to update statusbar description
- sp_document_done(SP_DT_DOCUMENT(desktop));
+ sp_document_done(sp_desktop_document(desktop));
}
}
@@ -195,10 +212,10 @@ text_remove_all_kerns()
{
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
- Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
+ Inkscape::Selection *selection = sp_desktop_selection(desktop);
if (selection->isEmpty()) {
- SP_DT_MSGSTACK(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select text(s) to remove kerns from."));
+ sp_desktop_message_stack(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select text(s) to remove kerns from."));
return;
}
@@ -218,9 +235,9 @@ text_remove_all_kerns()
}
if (!did) {
- SP_DT_MSGSTACK(desktop)->flash(Inkscape::ERROR_MESSAGE, _("Select text(s) to remove kerns from."));
+ sp_desktop_message_stack(desktop)->flash(Inkscape::ERROR_MESSAGE, _("Select text(s) to remove kerns from."));
} else {
- sp_document_done(SP_DT_DOCUMENT(desktop));
+ sp_document_done(sp_desktop_document(desktop));
}
}
@@ -231,15 +248,15 @@ text_flow_into_shape()
if (!desktop)
return;
- SPDocument *doc = SP_DT_DOCUMENT (desktop);
+ SPDocument *doc = sp_desktop_document (desktop);
- Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
+ Inkscape::Selection *selection = sp_desktop_selection(desktop);
SPItem *text = text_in_selection(selection);
SPItem *shape = shape_in_selection(selection);
if (!text || !shape || g_slist_length((GSList *) selection->itemList()) < 2) {
- SP_DT_MSGSTACK(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select a text and one or more paths or shapes to flow text into frame."));
+ sp_desktop_message_stack(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select a text and one or more paths or shapes to flow text into frame."));
return;
}
@@ -290,7 +307,7 @@ text_flow_into_shape()
sp_document_done(doc);
- SP_DT_SELECTION(desktop)->set(SP_ITEM(root_object));
+ sp_desktop_selection(desktop)->set(SP_ITEM(root_object));
Inkscape::GC::release(root_repr);
Inkscape::GC::release(region_repr);
@@ -305,13 +322,13 @@ text_unflow ()
if (!desktop)
return;
- SPDocument *doc = SP_DT_DOCUMENT (desktop);
+ SPDocument *doc = sp_desktop_document (desktop);
- Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
+ Inkscape::Selection *selection = sp_desktop_selection(desktop);
if (!flowtext_in_selection(selection) || g_slist_length((GSList *) selection->itemList()) < 1) {
- SP_DT_MSGSTACK(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select a flowed text to unflow it."));
+ sp_desktop_message_stack(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select a flowed text to unflow it."));
return;
}