bool ImageIcon::showSvgDocument(const SPDocument *docArg) { if (document) document->doUnref(); SPDocument *doc = const_cast<SPDocument *>(docArg); doc->doRef(); document = doc; //This should remove it from the box, and free resources //if (viewerGtkmm) // viewerGtkmm->destroy(); GtkWidget *viewerGtk = sp_svg_view_widget_new(doc); viewerGtkmm = Glib::wrap(viewerGtk); viewerGtkmm->show(); pack_start(*viewerGtkmm, TRUE, TRUE, 0); //GtkWidget *vbox = GTK_WIDGET(gobj()); //gtk_box_pack_start(GTK_BOX(vbox), viewerGtk, TRUE, TRUE, 0); return true; }
void sp_help_about (void) { SPDocument *doc; SPObject *title; GtkWidget *v; gint width, height; if (!w) { doc = sp_document_new (INKSCAPE_PIXMAPDIR "/about.svg", FALSE, TRUE); g_return_if_fail (doc != NULL); title = sp_document_lookup_id (doc, "title"); if (title && SP_IS_TEXT (title)) { gchar *t; t = g_strdup_printf ("Inkscape %s", INKSCAPE_VERSION); sp_text_set_repr_text_multiline (SP_TEXT (title), t); g_free (t); } sp_document_ensure_up_to_date (doc); w = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (w), _("About Inkscape")); width = INK_STATIC_CAST( gint, CLAMP( sp_document_width(doc), WINDOW_MIN, WINDOW_MAX ) ); height = INK_STATIC_CAST( gint, CLAMP( sp_document_height(doc), WINDOW_MIN, WINDOW_MAX ) ); gtk_window_set_default_size (GTK_WINDOW (w), width, height ); gtk_window_set_position(GTK_WINDOW(w), GTK_WIN_POS_CENTER); #if 1 gtk_window_set_policy (GTK_WINDOW (w), TRUE, TRUE, FALSE); #endif gtk_signal_connect (GTK_OBJECT (w), "delete_event", GTK_SIGNAL_FUNC (sp_help_about_delete), NULL); v = sp_svg_view_widget_new (doc); sp_svg_view_widget_set_resize (SP_SVG_VIEW_WIDGET (v), FALSE, sp_document_width (doc), sp_document_height (doc)); sp_document_unref (doc); gtk_widget_show (v); gtk_container_add (GTK_CONTAINER (w), v); } gtk_window_present ((GtkWindow *) w); }
Gtk::Widget *build_splash_widget() { /* TRANSLATORS: This is the filename of the `About Inkscape' picture in the `screens' directory. Thus the translation of "about.svg" should be the filename of its translated version, e.g. about.zh.svg for Chinese. N.B. about.svg changes once per release. (We should probably rename the original to about-0.40.svg etc. as soon as we have a translation. If we do so, then add an item to release-checklist saying that the string here should be changed.) */ // FIXME? INKSCAPE_SCREENSDIR and "about.svg" are in UTF-8, not the // native filename encoding... and the filename passed to sp_document_new // should be in UTF-*8.. char *about=g_build_filename(INKSCAPE_SCREENSDIR, _("about.svg"), NULL); SPDocument *doc=SPDocument::createNewDoc (about, TRUE); g_free(about); g_return_val_if_fail(doc != NULL, NULL); SPObject *version = doc->getObjectById("version"); if ( version && SP_IS_TEXT(version) ) { sp_te_set_repr_text_multiline (SP_TEXT (version), Inkscape::version_string); } doc->ensureUpToDate(); GtkWidget *v=sp_svg_view_widget_new(doc); double width=doc->getWidth().value("px"); double height=doc->getHeight().value("px"); doc->doUnref(); SP_SVG_VIEW_WIDGET(v)->setResize(false, static_cast<int>(width), static_cast<int>(height)); Gtk::AspectFrame *frame=new Gtk::AspectFrame(); frame->unset_label(); frame->set_shadow_type(Gtk::SHADOW_NONE); frame->property_ratio() = width / height; frame->add(*manage(Glib::wrap(v))); return frame; }