object-composite-settings.cpp revision 43a1d19c56879f438d64ab52860a1385fdad7e14
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * A widget for controlling object compositing (filter, opacity, etc.)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Bryce W. Harrington <bryce@bryceharrington.org>
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Gustav Broberg <broberg@kth.se>
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright (C) 2004--2007 Authors
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Released under GNU GPL, read the file 'COPYING' for more information
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#include "ui/widget/object-composite-settings.h"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisvoid ObjectCompositeSettings::_on_desktop_switch(
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr JasiukajtisObjectCompositeSettings::ObjectCompositeSettings(unsigned int verb_code, char const *history_prefix, int flags)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _blur_tag(Glib::ustring(history_prefix) + ":blur"),
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_tag(Glib::ustring(history_prefix) + ":opacity"),
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_label(_("Opacity, %"), 0.0, 1.0, true),
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_adjustment(100.0, 0.0, 100.0, 1.0, 1.0, 0.0),
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_spin_button(_opacity_adjustment, 0.01, 1),
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis // Filter Effects
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _fe_vbox.pack_start(_fe_alignment, false, false, 0);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _fe_cb.signal_blend_blur_changed().connect(sigc::mem_fun(*this, &ObjectCompositeSettings::_blendBlurValueChanged));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis pack_start(_opacity_vbox, false, false, 2);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_label_box.pack_start(_opacity_label, false, false, 4);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_vbox.pack_start(_opacity_label_box, false, false, 0);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_vbox.pack_start(_opacity_hbox, false, false, 0);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_hbox.pack_start(_opacity_hscale, true, true, 4);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_hbox.pack_start(_opacity_spin_button, false, false, 0);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _opacity_adjustment.signal_value_changed().connect(sigc::mem_fun(*this, &ObjectCompositeSettings::_opacityValueChanged));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _desktop_activated = g_signal_connect ( G_OBJECT (INKSCAPE), "activate_desktop", G_CALLBACK (&ObjectCompositeSettings::_on_desktop_switch), this );
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr JasiukajtisObjectCompositeSettings::~ObjectCompositeSettings() {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis g_signal_handler_disconnect(G_OBJECT(INKSCAPE), _desktop_activated);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisvoid ObjectCompositeSettings::setSubject(StyleSubject *subject) {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis _subject_changed = _subject->connectChanged(sigc::mem_fun(*this, &ObjectCompositeSettings::_subjectChanged));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr JasiukajtisObjectCompositeSettings::_blendBlurValueChanged()
if (!desktop) {
if (_blocked)
_blocked = true;
// FIXME: fix for GTK breakage, see comment in SelectedStyle::on_opacity_changed; here it results in crash 1580903
double radius;
if (bbox) {
radius = 0;
const bool remfilter = (blendmode == "normal" && radius == 0) || (blendmode == "filter" && !filter);
if (!SP_IS_ITEM(*i)) {
if(remfilter) {
sp_document_maybe_done (sp_desktop_document (desktop), _blur_tag.c_str(), _verb_code, _("Change blur"));
_blocked = false;
if (!_subject) {
if (!desktop) {
if (_blocked)
_blocked = true;
// FIXME: fix for GTK breakage, see comment in SelectedStyle::on_opacity_changed; here it results in crash 1580903
_blocked = false;
if (!_subject) {
if (!desktop) {
if (_blocked)
_blocked = true;
switch (result) {
case QUERY_STYLE_NOTHING:
case QUERY_STYLE_SINGLE:
switch(blend_result) {
case QUERY_STYLE_NOTHING:
case QUERY_STYLE_SINGLE:
switch (blur_result) {
case QUERY_STYLE_SINGLE:
if (bbox) {
_blocked = false;