From 7311f3ac5161a4d53cf2ed7e0a5a97993f646321 Mon Sep 17 00:00:00 2001 From: Patrick Storz Date: Sun, 21 Jul 2019 15:24:05 +0200 Subject: Move prefdialog to own directory --- src/extension/param/description.cpp | 134 ------------------------------------ 1 file changed, 134 deletions(-) delete mode 100644 src/extension/param/description.cpp (limited to 'src/extension/param/description.cpp') diff --git a/src/extension/param/description.cpp b/src/extension/param/description.cpp deleted file mode 100644 index 60e2d02c8..000000000 --- a/src/extension/param/description.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * Copyright (C) 2005-2007 Authors: - * Ted Gould - * Johan Engelen * - * Released under GNU GPL v2+, read the file 'COPYING' for more information. - */ - -#ifdef linux // does the dollar sign need escaping when passed as string parameter? -# define ESCAPE_DOLLAR_COMMANDLINE -#endif - -#include -#include -#include -#include -#include - -#include "xml/node.h" -#include "extension/extension.h" -#include "description.h" - -namespace Inkscape { -namespace Extension { - - -/** \brief Initialize the object, to do that, copy the data. */ -ParamDescription::ParamDescription(const gchar * name, - const gchar * text, - const gchar * description, - bool hidden, - int indent, - Inkscape::Extension::Extension * ext, - Inkscape::XML::Node * xml, - AppearanceMode mode) - : Parameter(name, text, description, hidden, indent, ext) - , _value(nullptr) - , _mode(mode) -{ - // construct the text content by concatenating all (non-empty) text nodes, - // removing all other nodes (e.g. comment nodes) and replacing elements with "
" - Glib::ustring value; - Inkscape::XML::Node * cur_child = xml->firstChild(); - while (cur_child != nullptr) { - if (cur_child->type() == XML::TEXT_NODE && cur_child->content() != nullptr) { - value += cur_child->content(); - } else if (cur_child->type() == XML::ELEMENT_NODE && !g_strcmp0(cur_child->name(), "extension:br")) { - value += "
"; - } - cur_child = cur_child->next(); - } - - // if there is no text content we can return immediately (the description will be invisible) - if (value == Glib::ustring("")) { - return; - } - - // do replacements in the source string to account for the attribute xml:space="preserve" - // (those should match replacements potentially performed by xgettext to allow for proper translation) - if (g_strcmp0(xml->attribute("xml:space"), "preserve") == 0) { - // xgettext copies the source string verbatim in this case, so no changes needed - } else { - // remove all whitespace from start/end of string and replace intermediate whitespace with a single space - value = Glib::Regex::create("^\\s+|\\s+$")->replace_literal(value, 0, "", (Glib::RegexMatchFlags)0); - value = Glib::Regex::create("\\s+")->replace_literal(value, 0, " ", (Glib::RegexMatchFlags)0); - } - - // translate if underscored version (_param) was used - if (g_str_has_prefix(xml->name(), "extension:_")) { - const gchar * context = xml->attribute("msgctxt"); - if (context != nullptr) { - value = g_dpgettext2(nullptr, context, value.c_str()); - } else { - value = _(value.c_str()); - } - } - - // finally replace all remaining
with a real newline character - value = Glib::Regex::create("
")->replace_literal(value, 0, "\n", (Glib::RegexMatchFlags)0); - - _value = g_strdup(value.c_str()); - - return; -} - -/** \brief Create a label for the description */ -Gtk::Widget * -ParamDescription::get_widget (SPDocument * /*doc*/, Inkscape::XML::Node * /*node*/, sigc::signal * /*changeSignal*/) -{ - if (_hidden) { - return nullptr; - } - if (_value == nullptr) { - return nullptr; - } - - Glib::ustring newtext = _value; - - Gtk::Label * label = Gtk::manage(new Gtk::Label()); - if (_mode == HEADER) { - label->set_markup(Glib::ustring("") + Glib::Markup::escape_text(newtext) + Glib::ustring("")); - label->set_margin_top(5); - label->set_margin_bottom(5); - } else if (_mode == URL) { - Glib::ustring escaped_url = Glib::Markup::escape_text(newtext); - label->set_markup(Glib::ustring::compose("%1", escaped_url)); - } else { - label->set_text(newtext); - } - label->set_line_wrap(); - label->set_xalign(0); - - // TODO: Ugly "fix" for gtk3 width/height calculation of labels. - // - If not applying any limits long labels will make the window grow horizontally until it uses up - // most of the available space (i.e. most of the screen area) which is ridicously wide - // - By using "set_default_size(0,0)" in prefidalog.cpp we tell the window to shrink as much as possible, - // however this can result in a much to narrow dialog instead and much unnecessary wrapping - // - Here we set a lower limit of GUI_MAX_LINE_LENGTH characters per line that long texts will always use - // This means texts can not shrink anymore (they can still grow, though) and it's also necessary - // to prevent https://bugzilla.gnome.org/show_bug.cgi?id=773572 - int len = newtext.length(); - label->set_width_chars(len > Parameter::GUI_MAX_LINE_LENGTH ? Parameter::GUI_MAX_LINE_LENGTH : len); - - label->show(); - - Gtk::HBox * hbox = Gtk::manage(new Gtk::HBox()); - hbox->pack_start(*label, true, true); - hbox->show(); - - return hbox; -} - -} /* namespace Extension */ -} /* namespace Inkscape */ -- cgit v1.2.3