index 1ffbf1fd09f095dc3e33a4a62e482f776c8cc895..c544d1999491ad4b599803618baca6d241e9d11a 100644 (file)
--- a/src/ui/context-menu.cpp
+++ b/src/ui/context-menu.cpp
-#define __CONTEXT_MENU_C__
-
/*
* Unser-interface related object extension
*
* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
+ * Jon A. Cruz <jon@joncruz.org>
+ * Abhishek Sharma
*
* This code is in public domain
*/
#include "preferences.h"
#include "ui/dialog/dialog-manager.h"
+using Inkscape::DocumentUndo;
+
static void sp_object_type_menu(GType type, SPObject *object, SPDesktop *desktop, GtkMenu *menu);
/* Append object-specific part to context menu */
#include "sp-anchor.h"
#include "sp-image.h"
+#include "sp-text.h"
#include "document.h"
#include "desktop-handles.h"
#include "selection-chemistry.h"
#include "dialogs/item-properties.h"
#include "dialogs/object-attributes.h"
+#include "dialogs/text-edit.h"
+#include "dialogs/spellcheck.h"
#include "sp-path.h"
#include "sp-clippath.h"
static void sp_anchor_menu(SPObject *object, SPDesktop *desktop, GtkMenu *menu);
static void sp_image_menu(SPObject *object, SPDesktop *desktop, GtkMenu *menu);
static void sp_shape_menu(SPObject *object, SPDesktop *desktop, GtkMenu *menu);
+static void sp_text_menu(SPObject *object, SPDesktop *desktop, GtkMenu *menu);
static void
sp_object_type_menu(GType type, SPObject *object, SPDesktop *desktop, GtkMenu *menu)
g_hash_table_insert(t2m, GUINT_TO_POINTER(SP_TYPE_ANCHOR), (void*)sp_anchor_menu);
g_hash_table_insert(t2m, GUINT_TO_POINTER(SP_TYPE_IMAGE), (void*)sp_image_menu);
g_hash_table_insert(t2m, GUINT_TO_POINTER(SP_TYPE_SHAPE), (void*)sp_shape_menu);
+ g_hash_table_insert(t2m, GUINT_TO_POINTER(SP_TYPE_TEXT), (void*)sp_text_menu);
}
handler = (void (*)(SPObject*, SPDesktop*, GtkMenu*))g_hash_table_lookup(t2m, GUINT_TO_POINTER(type));
if (handler) handler(object, desktop, menu);
item = (SPItem *) object;
/* Item dialog */
- w = gtk_menu_item_new_with_mnemonic(_("Object _Properties"));
+ w = gtk_menu_item_new_with_mnemonic(_("_Object Properties..."));
gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop);
gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_item_properties), item);
gtk_widget_show(w);
gtk_widget_show(w);
gtk_menu_append(GTK_MENU(m), w);
/* Set Clip */
- w = gtk_menu_item_new_with_mnemonic(_("Set Clip"));
+ w = gtk_menu_item_new_with_mnemonic(_("Set _Clip"));
gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop);
gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_set_clip), item);
if ((item && item->mask_ref && item->mask_ref->getObject()) || (item->clip_ref && item->clip_ref->getObject())) {
gtk_widget_show(w);
gtk_menu_append(GTK_MENU(m), w);
/* Release Clip */
- w = gtk_menu_item_new_with_mnemonic(_("Release Clip"));
+ w = gtk_menu_item_new_with_mnemonic(_("Release C_lip"));
gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop);
gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_release_clip), item);
if (item && item->clip_ref && item->clip_ref->getObject()) {
SPDesktop *desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop");
g_return_if_fail(desktop != NULL);
- Inkscape::XML::Document *xml_doc = sp_document_repr_doc(desktop->doc());
+ Inkscape::XML::Document *xml_doc = desktop->doc()->getReprDoc();
Inkscape::XML::Node *repr = xml_doc->createElement("svg:a");
SP_OBJECT_REPR(SP_OBJECT_PARENT(item))->addChild(repr, SP_OBJECT_REPR(item));
SPObject *object = SP_OBJECT_DOCUMENT(item)->getObjectByRepr(repr);
Inkscape::GC::release(repr);
Inkscape::GC::release(child);
- SPDocumentUndo::done(SP_OBJECT_DOCUMENT(object), SP_VERB_NONE,
- _("Create link"));
+ DocumentUndo::done(SP_OBJECT_DOCUMENT(object), SP_VERB_NONE,
+ _("Create link"));
sp_object_attributes_dialog(object, "SPAnchor");
item = (SPItem *) object;
/* Link dialog */
- w = gtk_menu_item_new_with_mnemonic(_("Link _Properties"));
+ w = gtk_menu_item_new_with_mnemonic(_("Link _Properties..."));
gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop);
gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_anchor_link_properties), item);
gtk_widget_show(w);
GtkWidget *w;
/* Link dialog */
- w = gtk_menu_item_new_with_mnemonic(_("Image _Properties"));
+ w = gtk_menu_item_new_with_mnemonic(_("Image _Properties..."));
gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop);
gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_image_image_properties), item);
gtk_widget_show(w);
g_free(editorBin);
}
-/* SPShape */
+/* Fill and Stroke entry */
static void
-sp_shape_fill_settings(GtkMenuItem *menuitem, SPItem *item)
+sp_fill_settings(GtkMenuItem *menuitem, SPItem *item)
{
SPDesktop *desktop;
desktop->_dlg_mgr->showDialog("FillAndStroke");
}
+/* SPShape */
+
static void
sp_shape_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m)
{
item = (SPItem *) object;
/* Item dialog */
- w = gtk_menu_item_new_with_mnemonic(_("_Fill and Stroke"));
+ w = gtk_menu_item_new_with_mnemonic(_("_Fill and Stroke..."));
gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop);
- gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_shape_fill_settings), item);
+ gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_fill_settings), item);
gtk_widget_show(w);
gtk_menu_append(GTK_MENU(m), w);
}
+/* Edit Text entry */
+
+static void
+sp_text_settings(GtkMenuItem *menuitem, SPItem *item)
+{
+ SPDesktop *desktop;
+
+ g_assert(SP_IS_ITEM(item));
+
+ desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop");
+ g_return_if_fail(desktop != NULL);
+
+ if (sp_desktop_selection(desktop)->isEmpty()) {
+ sp_desktop_selection(desktop)->set(item);
+ }
+
+ sp_text_edit_dialog();
+}
+
+/* Spellcheck entry */
+static void
+sp_spellcheck_settings(GtkMenuItem *menuitem, SPItem *item)
+{
+ SPDesktop *desktop;
+
+ g_assert(SP_IS_ITEM(item));
+
+ desktop = (SPDesktop*)gtk_object_get_data(GTK_OBJECT(menuitem), "desktop");
+ g_return_if_fail(desktop != NULL);
+
+ if (sp_desktop_selection(desktop)->isEmpty()) {
+ sp_desktop_selection(desktop)->set(item);
+ }
+
+ sp_spellcheck_dialog();
+}
+
+/* SPText */
+
+static void
+sp_text_menu(SPObject *object, SPDesktop *desktop, GtkMenu *m)
+{
+ SPItem *item;
+ GtkWidget *w;
+
+ item = (SPItem *) object;
+
+ /* Fill and Stroke dialog */
+ w = gtk_menu_item_new_with_mnemonic(_("_Fill and Stroke..."));
+ gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop);
+ gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_fill_settings), item);
+ gtk_widget_show(w);
+ gtk_menu_append(GTK_MENU(m), w);
+
+ /* Edit Text dialog */
+ w = gtk_menu_item_new_with_mnemonic(_("_Text and Font..."));
+ gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop);
+ gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_text_settings), item);
+ gtk_widget_show(w);
+ gtk_menu_append(GTK_MENU(m), w);
+
+ /* Spellcheck dialog */
+ w = gtk_menu_item_new_with_mnemonic(_("Check Spellin_g..."));
+ gtk_object_set_data(GTK_OBJECT(w), "desktop", desktop);
+ gtk_signal_connect(GTK_OBJECT(w), "activate", GTK_SIGNAL_FUNC(sp_spellcheck_settings), item);
+ gtk_widget_show(w);
+ gtk_menu_append(GTK_MENU(m), w);
+}
/*
Local Variables:
mode:c++
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :