diff --git a/src/interface.cpp b/src/interface.cpp
index d66a14dbf43176ab18584cb8eff72a843ba408b8..551e2bf9147dc8a6acaeb36cfbe33769c831142d 100644 (file)
--- a/src/interface.cpp
+++ b/src/interface.cpp
-#define __SP_INTERFACE_C__
-
/** @file
* @brief Main UI stuff
*/
* Lauris Kaplinski <lauris@kaplinski.com>
* Frank Felfe <innerspace@iname.com>
* bulia byak <buliabyak@users.sf.net>
+ * Jon A. Cruz <jon@joncruz.org>
+ * Abhishek Sharma
*
+ * Copyright (C) 2010 authors
* Copyright (C) 1999-2005 authors
* Copyright (C) 2001-2002 Ximian, Inc.
* Copyright (C) 2004 David Turner
#include "ige-mac-menu.h"
#endif
+using Inkscape::DocumentUndo;
+
/* Drag and Drop */
typedef enum {
URI_LIST,
void *data);
static void sp_recent_open(GtkRecentChooser *, gpointer);
+static void injectRenamedIcons();
+
SPActionEventVector menu_item_event_vector = {
{NULL},
NULL,
win->show();
// needed because the first ACTIVATE_DESKTOP was sent when there was no window yet
- inkscape_reactivate_desktop(SP_DESKTOP_WIDGET(vw)->desktop);
+ if ( SP_IS_DESKTOP_WIDGET(vw) ) {
+ inkscape_reactivate_desktop(SP_DESKTOP_WIDGET(vw)->desktop);
+ }
}
void
/* TODO: not yet working */
/* To be re-enabled (by adding to menu) once it works. */
-void
-sp_ui_new_view_preview()
+void sp_ui_new_view_preview()
{
- SPDocument *document;
- SPViewWidget *dtw;
-
- document = SP_ACTIVE_DOCUMENT;
- if (!document) return;
-
- dtw = (SPViewWidget *) sp_svg_view_widget_new(document);
- g_return_if_fail(dtw != NULL);
- sp_svg_view_widget_set_resize(SP_SVG_VIEW_WIDGET(dtw), TRUE, 400.0, 400.0);
+ SPDocument *document = SP_ACTIVE_DOCUMENT;
+ if ( document ) {
+ SPViewWidget *dtw = reinterpret_cast<SPViewWidget *>(sp_svg_view_widget_new(document));
+ g_return_if_fail(dtw != NULL);
+ SP_SVG_VIEW_WIDGET(dtw)->setResize(true, 400.0, 400.0);
- sp_create_window(dtw, FALSE);
+ sp_create_window(dtw, FALSE);
+ }
}
/**
void
sp_ui_menuitem_add_icon( GtkWidget *item, gchar *icon_name )
{
+ static bool iconsInjected = false;
+ if ( !iconsInjected ) {
+ iconsInjected = true;
+ injectRenamedIcons();
+ }
GtkWidget *icon;
icon = sp_icon_new( Inkscape::ICON_SIZE_MENU, icon_name );
gtk_widget_translate_coordinates( widget, &(desktop->canvas->widget), x, y, &destX, &destY );
Geom::Point where( sp_canvas_window_to_world( desktop->canvas, Geom::Point( destX, destY ) ) );
- SPItem *item = desktop->item_at_point( where, true );
+ SPItem *item = desktop->getItemAtPoint( where, true );
if ( item )
{
bool fillnotstroke = (drag_context->action != GDK_ACTION_MOVE);
g_free(str);
str = 0;
- sp_object_setAttribute( SP_OBJECT(item),
+ SP_OBJECT(item)->setAttribute(
fillnotstroke ? "inkscape:x-fill-tag":"inkscape:x-stroke-tag",
palName.c_str(),
false );
sp_desktop_apply_css_recursive( item, css, true );
item->updateRepr();
- sp_document_done( doc , SP_VERB_NONE,
+ SPDocumentUndo::done( doc , SP_VERB_NONE,
_("Drop color"));
if ( srgbProf ) {
//0x0ff & (data->data[3] >> 8),
));
- SPItem *item = desktop->item_at_point( where, true );
+ SPItem *item = desktop->getItemAtPoint( where, true );
bool consumed = false;
if (desktop->event_context && desktop->event_context->get_drag()) {
consumed = desktop->event_context->get_drag()->dropColor(item, colorspec, button_dt);
if (consumed) {
- sp_document_done( doc , SP_VERB_NONE, _("Drop color on gradient"));
+ DocumentUndo::done( doc , SP_VERB_NONE, _("Drop color on gradient") );
desktop->event_context->get_drag()->updateDraggers();
}
}
//if (!consumed && tools_active(desktop, TOOLS_TEXT)) {
// consumed = sp_text_context_drop_color(c, button_doc);
// if (consumed) {
- // sp_document_done( doc , SP_VERB_NONE, _("Drop color on gradient stop"));
+ // SPDocumentUndo::done( doc , SP_VERB_NONE, _("Drop color on gradient stop"));
// }
//}
( !SP_OBJECT_STYLE(item)->stroke.isNone() ?
desktop->current_zoom() *
SP_OBJECT_STYLE (item)->stroke_width.computed *
- to_2geom(sp_item_i2d_affine(item)).descrim() * 0.5
+ to_2geom(item->i2d_affine()).descrim() * 0.5
: 0.0)
+ prefs->getIntLimited("/options/dragtolerance/value", 0, 0, 100);
sp_desktop_apply_css_recursive( item, css, true );
item->updateRepr();
- sp_document_done( doc , SP_VERB_NONE,
- _("Drop color"));
+ DocumentUndo::done( doc , SP_VERB_NONE,
+ _("Drop color") );
}
}
}
unsigned int b = color.getB();
SPGradient* matches = 0;
- const GSList *gradients = sp_document_get_resource_list(doc, "gradient");
+ const GSList *gradients = doc->getResourceList("gradient");
for (const GSList *item = gradients; item; item = item->next) {
SPGradient* grad = SP_GRADIENT(item->data);
if ( color.descr == grad->getId() ) {
Geom::Point const button_dt(desktop->w2d(where));
Geom::Point const button_doc(desktop->dt2doc(button_dt));
- SPItem *item = desktop->item_at_point( where, true );
+ SPItem *item = desktop->getItemAtPoint( where, true );
bool consumed = false;
if (desktop->event_context && desktop->event_context->get_drag()) {
consumed = desktop->event_context->get_drag()->dropColor(item, colorspec.c_str(), button_dt);
if (consumed) {
- sp_document_done( doc , SP_VERB_NONE, _("Drop color on gradient"));
+ DocumentUndo::done( doc , SP_VERB_NONE, _("Drop color on gradient") );
desktop->event_context->get_drag()->updateDraggers();
}
}
( !SP_OBJECT_STYLE(item)->stroke.isNone() ?
desktop->current_zoom() *
SP_OBJECT_STYLE (item)->stroke_width.computed *
- to_2geom(sp_item_i2d_affine(item)).descrim() * 0.5
+ to_2geom(item->i2d_affine()).descrim() * 0.5
: 0.0)
+ prefs->getIntLimited("/options/dragtolerance/value", 0, 0, 100);
sp_desktop_apply_css_recursive( item, css, true );
item->updateRepr();
- sp_document_done( doc , SP_VERB_NONE,
- _("Drop color"));
+ DocumentUndo::done( doc , SP_VERB_NONE,
+ _("Drop color") );
}
}
}
Inkscape::XML::Node *newgroup = rnewdoc->createElement("svg:g");
newgroup->setAttribute("style", style);
- Inkscape::XML::Document * xml_doc = sp_document_repr_doc(doc);
+ Inkscape::XML::Document * xml_doc = doc->getReprDoc();
for (Inkscape::XML::Node *child = repr->firstChild(); child != NULL; child = child->next()) {
Inkscape::XML::Node *newchild = child->duplicate(xml_doc);
newgroup->appendChild(newchild);
// move to mouse pointer
{
- sp_document_ensure_up_to_date(sp_desktop_document(desktop));
+ sp_desktop_document(desktop)->ensureUpToDate();
Geom::OptRect sel_bbox = selection->bounds();
if (sel_bbox) {
Geom::Point m( desktop->point() - sel_bbox->midpoint() );
}
Inkscape::GC::release(newgroup);
- sp_document_done(doc, SP_VERB_NONE,
- _("Drop SVG"));
+ DocumentUndo::done( doc, SP_VERB_NONE,
+ _("Drop SVG") );
break;
}
ext->set_param_optiongroup("link", save ? "embed" : "link");
ext->set_gui(true);
- sp_document_done( doc , SP_VERB_NONE,
- _("Drop bitmap image"));
+ DocumentUndo::done( doc , SP_VERB_NONE,
+ _("Drop bitmap image") );
break;
}
}
@@ -1595,6 +1603,32 @@ sp_ui_menu_item_set_name(SPAction */*action*/, Glib::ustring name, void *data)
//a menu item in yet another way...
}
+void injectRenamedIcons()
+{
+ Glib::RefPtr<Gtk::IconTheme> iconTheme = Gtk::IconTheme::get_default();
+
+ std::vector< std::pair<Glib::ustring, Glib::ustring> > renamed;
+ renamed.push_back(std::make_pair("gtk-file", "document-x-generic"));
+ renamed.push_back(std::make_pair("gtk-directory", "folder"));
+
+ for ( std::vector< std::pair<Glib::ustring, Glib::ustring> >::iterator it = renamed.begin(); it < renamed.end(); ++it ) {
+ bool hasIcon = iconTheme->has_icon(it->first);
+ bool hasSecondIcon = iconTheme->has_icon(it->second);
+
+ if ( !hasIcon && hasSecondIcon ) {
+ Glib::ArrayHandle<int> sizes = iconTheme->get_icon_sizes(it->second);
+ for ( Glib::ArrayHandle<int>::iterator it2 = sizes.begin(); it2 < sizes.end(); ++it2 ) {
+ Glib::RefPtr<Gdk::Pixbuf> pb = iconTheme->load_icon( it->second, *it2 );
+ if ( pb ) {
+ // install a private copy of the pixbuf to avoid pinning a theme
+ Glib::RefPtr<Gdk::Pixbuf> pbCopy = pb->copy();
+ Gtk::IconTheme::add_builtin_icon( it->first, *it2, pbCopy );
+ }
+ }
+ }
+ }
+}
+
/*
Local Variables:
@@ -1605,4 +1639,4 @@ sp_ui_menu_item_set_name(SPAction */*action*/, Glib::ustring name, void *data)
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 :