// SPDX-License-Identifier: GPL-2.0-or-later /** @file * @brief New From Template main dialog - implementation */ /* Authors: * Jan Darowski , supervised by Krzysztof KosiƄski * * Copyright (C) 2013 Authors * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ #include "new-from-template.h" #include #include "desktop.h" #include "file.h" #include "inkscape-application.h" #include "inkscape-window.h" #include "inkscape.h" #include "object/sp-namedview.h" #include "ui/widget/template-list.h" namespace Inkscape { namespace UI { NewFromTemplate::NewFromTemplate() : _create_template_button(_("Create from template")) { set_title(_("New From Template")); resize(750, 500); templates = Gtk::manage(new Inkscape::UI::Widget::TemplateList()); get_content_area()->pack_start(*templates); templates->init(Inkscape::Extension::TEMPLATE_NEW_FROM); _create_template_button.set_halign(Gtk::ALIGN_END); _create_template_button.set_valign(Gtk::ALIGN_END); _create_template_button.set_margin_end(15); get_content_area()->pack_end(_create_template_button, Gtk::PACK_SHRINK); _create_template_button.signal_clicked().connect( sigc::mem_fun(*this, &NewFromTemplate::_createFromTemplate)); _create_template_button.set_sensitive(false); templates->connectItemSelected([=]() { _create_template_button.set_sensitive(true); }); templates->connectItemActivated(sigc::mem_fun(*this, &NewFromTemplate::_createFromTemplate)); templates->signal_switch_page().connect([=](Gtk::Widget *const widget, int num) { _create_template_button.set_sensitive(templates->has_selected_preset()); }); show_all(); } void NewFromTemplate::_createFromTemplate() { SPDesktop *old_desktop = SP_ACTIVE_DESKTOP; auto doc = templates->new_document(); // Cancel button was pressed. if (!doc) return; auto app = InkscapeApplication::instance(); InkscapeWindow *win = app->window_open(doc); SPDesktop *new_desktop = win->get_desktop(); sp_namedview_window_from_document(new_desktop); if (old_desktop) old_desktop->clearWaitingCursor(); _onClose(); } void NewFromTemplate::_onClose() { response(0); } void NewFromTemplate::load_new_from_template() { NewFromTemplate dl; dl.run(); } } }