diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2017-01-24 09:36:22 +0000 |
|---|---|---|
| committer | jabiertxof <info@marker.es> | 2017-01-24 09:36:22 +0000 |
| commit | 6b7e98c233c557f13ac0f6c57ab547b4d3dc0801 (patch) | |
| tree | 240e0bb6e1312a355689e415e04a2e120bb33167 /src/live_effects/parameter/item.cpp | |
| parent | update to trunk (diff) | |
| parent | [Bug #1658650] New Russian translation for Tracing Pixel Art. (diff) | |
| download | inkscape-6b7e98c233c557f13ac0f6c57ab547b4d3dc0801.tar.gz inkscape-6b7e98c233c557f13ac0f6c57ab547b4d3dc0801.zip | |
update to trunk
(bzr r15356.1.19)
Diffstat (limited to 'src/live_effects/parameter/item.cpp')
| -rw-r--r-- | src/live_effects/parameter/item.cpp | 246 |
1 files changed, 0 insertions, 246 deletions
diff --git a/src/live_effects/parameter/item.cpp b/src/live_effects/parameter/item.cpp deleted file mode 100644 index 8caea4e26..000000000 --- a/src/live_effects/parameter/item.cpp +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl> - * Abhishek Sharma - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include "ui/widget/point.h" -#include <glibmm/i18n.h> - -#include "live_effects/parameter/item.h" -#include "live_effects/effect.h" -#include "svg/svg.h" - -#include "widgets/icon.h" -#include <gtk/gtk.h> -#include "selection-chemistry.h" -#include "xml/repr.h" -#include "desktop.h" -#include "inkscape.h" -#include "message-stack.h" - -// clipboard support -#include "ui/clipboard.h" -// required for linking to other paths -#include "uri.h" - -#include <gtkmm/button.h> -#include <gtkmm/label.h> -#include "ui/icon-names.h" - -namespace Inkscape { - -namespace LivePathEffect { - -ItemParam::ItemParam( const Glib::ustring& label, const Glib::ustring& tip, - const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr, - Effect* effect, const gchar * default_value) - : Parameter(label, tip, key, wr, effect), - changed(true), - href(NULL), - ref( (SPObject*)effect->getLPEObj() ) -{ - defvalue = g_strdup(default_value); - ref_changed_connection = ref.changedSignal().connect(sigc::mem_fun(*this, &ItemParam::ref_changed)); -} - -ItemParam::~ItemParam() -{ - remove_link(); - g_free(defvalue); -} - -void -ItemParam::param_set_default() -{ - param_readSVGValue(defvalue); -} - - -void -ItemParam::param_set_and_write_default() -{ - param_write_to_repr(defvalue); -} - -bool -ItemParam::param_readSVGValue(const gchar * strvalue) -{ - if (strvalue) { - remove_link(); - if (strvalue[0] == '#') { - if (href) - g_free(href); - href = g_strdup(strvalue); - try { - ref.attach(Inkscape::URI(href)); - //lp:1299948 - SPItem* i = ref.getObject(); - if (i) { - linked_modified_callback(i, SP_OBJECT_MODIFIED_FLAG); - } // else: document still processing new events. Repr of the linked object not created yet. - } catch (Inkscape::BadURIException &e) { - g_warning("%s", e.what()); - ref.detach(); - } - } - emit_changed(); - return true; - } - - return false; -} - -gchar * -ItemParam::param_getSVGValue() const -{ - return g_strdup(href); -} - -Gtk::Widget * -ItemParam::param_newWidget() -{ - Gtk::HBox * _widget = Gtk::manage(new Gtk::HBox()); - Gtk::Widget* pIcon = Gtk::manage( sp_icon_get_icon( INKSCAPE_ICON("edit-clone"), Inkscape::ICON_SIZE_BUTTON) ); - Gtk::Button * pButton = Gtk::manage(new Gtk::Button()); - Gtk::Label* pLabel = Gtk::manage(new Gtk::Label(param_label)); - static_cast<Gtk::HBox*>(_widget)->pack_start(*pLabel, true, true); - pLabel->set_tooltip_text(param_tooltip); - pButton->set_relief(Gtk::RELIEF_NONE); - pIcon->show(); - pButton->add(*pIcon); - pButton->show(); - pButton->signal_clicked().connect(sigc::mem_fun(*this, &ItemParam::on_link_button_click)); - static_cast<Gtk::HBox*>(_widget)->pack_start(*pButton, true, true); - pButton->set_tooltip_text(_("Link to item on clipboard")); - - static_cast<Gtk::HBox*>(_widget)->show_all_children(); - - return dynamic_cast<Gtk::Widget *> (_widget); -} - -void -ItemParam::emit_changed() -{ - changed = true; - signal_item_changed.emit(); -} - - -void -ItemParam::addCanvasIndicators(SPLPEItem const*/*lpeitem*/, std::vector<Geom::PathVector> &hp_vec) -{ -} - - -void -ItemParam::start_listening(SPObject * to) -{ - if ( to == NULL ) { - return; - } - linked_delete_connection = to->connectDelete(sigc::mem_fun(*this, &ItemParam::linked_delete)); - linked_modified_connection = to->connectModified(sigc::mem_fun(*this, &ItemParam::linked_modified)); - if (SP_IS_ITEM(to)) { - linked_transformed_connection = SP_ITEM(to)->connectTransformed(sigc::mem_fun(*this, &ItemParam::linked_transformed)); - } - linked_modified(to, SP_OBJECT_MODIFIED_FLAG); // simulate linked_modified signal, so that path data is updated -} - -void -ItemParam::quit_listening(void) -{ - linked_modified_connection.disconnect(); - linked_delete_connection.disconnect(); - linked_transformed_connection.disconnect(); -} - -void -ItemParam::ref_changed(SPObject */*old_ref*/, SPObject *new_ref) -{ - quit_listening(); - if ( new_ref ) { - start_listening(new_ref); - } -} - -void -ItemParam::remove_link() -{ - if (href) { - ref.detach(); - g_free(href); - href = NULL; - } -} - -void -ItemParam::linked_delete(SPObject */*deleted*/) -{ - quit_listening(); - remove_link(); -} - -void ItemParam::linked_modified(SPObject *linked_obj, guint flags) -{ - linked_modified_callback(linked_obj, flags); -} - -void ItemParam::linked_transformed(Geom::Affine const *rel_transf, SPItem *moved_item) -{ - linked_transformed_callback(rel_transf, moved_item); -} - -void -ItemParam::linked_modified_callback(SPObject *linked_obj, guint /*flags*/) -{ - emit_changed(); - SP_OBJECT(param_effect->getLPEObj())->requestModified(SP_OBJECT_MODIFIED_FLAG); -} - -void -ItemParam::on_link_button_click() -{ - Inkscape::UI::ClipboardManager *cm = Inkscape::UI::ClipboardManager::get(); - const gchar * iid = cm->getFirstObjectID(); - if (!iid) { - return; - } - - Glib::ustring itemid(iid); - - if (itemid.empty()) { - return; - } - - // add '#' at start to make it an uri. - itemid.insert(itemid.begin(), '#'); - if ( href && strcmp(itemid.c_str(), href) == 0 ) { - // no change, do nothing - return; - } else { - // TODO: - // check if id really exists in document, or only in clipboard document: if only in clipboard then invalid - // check if linking to object to which LPE is applied (maybe delegated to PathReference - - param_write_to_repr(itemid.c_str()); - DocumentUndo::done(param_effect->getSPDoc(), SP_VERB_DIALOG_LIVE_PATH_EFFECT, - _("Link item parameter to path")); - } -} - -} /* namespace LivePathEffect */ - -} /* namespace Inkscape */ - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : |
