diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-01-26 17:18:58 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-02-18 21:18:27 +0000 |
| commit | 106cd424af0fec559422a6443944ed09e537d930 (patch) | |
| tree | 182275be6ce6f9860aa4fb4c341574311796cc0a /src/ui | |
| parent | Adding styling refactoring, moving after to other branch the CSS part (diff) | |
| download | inkscape-106cd424af0fec559422a6443944ed09e537d930.tar.gz inkscape-106cd424af0fec559422a6443944ed09e537d930.zip | |
fixing coding style and translation and merge from master
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 40 | ||||
| -rw-r--r-- | src/ui/dialog/livepatheffect-add.cpp | 99 | ||||
| -rw-r--r-- | src/ui/dialog/livepatheffect-add.h | 59 | ||||
| -rw-r--r-- | src/ui/dialog/lpe-selector.cpp | 71 | ||||
| -rw-r--r-- | src/ui/dialog/lpe-selector.h | 36 |
5 files changed, 215 insertions, 90 deletions
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 86529fbbb..1f094abbf 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -44,7 +44,6 @@ #include "selection.h" #include "shortcuts.h" #include "verbs.h" -#include "inkscape-window.h" #include "display/canvas-grid.h" #include "display/nr-filter-gaussian.h" @@ -728,24 +727,23 @@ void InkscapePreferences::symbolicAddClass() // is more understandable than record previously applied Glib::ustring style = get_filename(UIS, "style.css"); if (!style.empty()) { - auto provider = Gtk::CssProvider::create(); - - // From 3.16, throws an error which we must catch. - try { - provider->load_from_path (style); - } -#if GTK_CHECK_VERSION(3,16,0) - // Gtk::CssProviderError not defined until 3.16. - catch (const Gtk::CssProviderError& ex) - { - g_critical("CSSProviderError::load_from_path(): failed to load '%s'\n(%s)", - style.c_str(), ex.what().c_str()); - } + auto provider = Gtk::CssProvider::create(); + + // From 3.16, throws an error which we must catch. + try { + provider->load_from_path(style); + } +#if GTK_CHECK_VERSION(3, 16, 0) + // Gtk::CssProviderError not defined until 3.16. + catch (const Gtk::CssProviderError &ex) { + g_critical("CSSProviderError::load_from_path(): failed to load '%s'\n(%s)", style.c_str(), + ex.what().c_str()); + } #else - catch (...) - {} + catch (...) { + } #endif - Gtk::StyleContext::add_provider_for_screen (screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + Gtk::StyleContext::add_provider_for_screen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); } } void InkscapePreferences::themeChange() @@ -757,15 +755,15 @@ void InkscapePreferences::themeChange() gchar *gtkThemeName; gboolean gtkApplicationPreferDarkTheme; Gtk::Window *window = SP_ACTIVE_DESKTOP->getToplevel(); - GtkSettings *settings = gtk_settings_get_default(); + GtkSettings *settings = gtk_settings_get_default(); if (window && settings) { g_object_get(settings, "gtk-theme-name", >kThemeName, NULL); g_object_get(settings, "gtk-application-prefer-dark-theme", >kApplicationPreferDarkTheme, NULL); bool dark = gtkApplicationPreferDarkTheme || Glib::ustring(gtkThemeName).find(":dark") != -1; if (!dark) { - Glib::RefPtr<Gtk::StyleContext> stylecontext = window->get_style_context(); - Gdk::RGBA rgba; - bool background_set = stylecontext->lookup_color("theme_bg_color", rgba); + Glib::RefPtr<Gtk::StyleContext> stylecontext = window->get_style_context(); + Gdk::RGBA rgba; + bool background_set = stylecontext->lookup_color("theme_bg_color", rgba); if (background_set && rgba.get_red() + rgba.get_green() + rgba.get_blue() < 1.0) { dark = true; } diff --git a/src/ui/dialog/livepatheffect-add.cpp b/src/ui/dialog/livepatheffect-add.cpp index 630008606..b11ee66b7 100644 --- a/src/ui/dialog/livepatheffect-add.cpp +++ b/src/ui/dialog/livepatheffect-add.cpp @@ -13,31 +13,32 @@ # include "config.h" // only include where actually required! #endif +#include "desktop.h" +#include "io/resource.h" +#include "live_effects/effect.h" #include "livepatheffect-add.h" #include <glibmm/i18n.h> -#include "desktop.h" - namespace Inkscape { namespace UI { namespace Dialog { -LivePathEffectAdd::LivePathEffectAdd() : - converter(Inkscape::LivePathEffect::LPETypeConverter) +LivePathEffectAdd::LivePathEffectAdd() + : converter(Inkscape::LivePathEffect::LPETypeConverter) { - const std::string req_widgets[] = {"LPEDialogSelector", "LPESelector", "LPESelectorFlowBox"}; + const std::string req_widgets[] = { "LPEDialogSelector", "LPESelector", "LPESelectorFlowBox" }; Glib::ustring gladefile = get_filename(Inkscape::IO::Resource::UIS, "dialog-livepatheffect-add.ui"); try { _builder = Gtk::Builder::create_from_file(gladefile); - } catch(const Glib::Error& ex) { + } catch (const Glib::Error &ex) { g_warning("Glade file loading failed for filter effect dialog"); return; } - Gtk::Object* test; - for(std::string w:req_widgets) { - _builder->get_widget(w,test); - if(!test){ + Gtk::Object *test; + for (std::string w : req_widgets) { + _builder->get_widget(w, test); + if (!test) { g_warning("Required widget %s does not exist", w.c_str()); return; } @@ -50,43 +51,42 @@ LivePathEffectAdd::LivePathEffectAdd() : _builder->get_widget("LPEFilter", _LPEFilter); _builder->get_widget("LPEInfo", _LPEInfo); _LPEFilter->signal_search_changed().connect(sigc::mem_fun(*this, &LivePathEffectAdd::on_search)); - const std::string le_widgets[] = {"LPESelectorEffect", "LPEName","LPEDescription"}; + const std::string le_widgets[] = { "LPESelectorEffect", "LPEName", "LPEDescription" }; Glib::ustring le_gladefile = get_filename(Inkscape::IO::Resource::UIS, "dialog-livepatheffect-add-effect.ui"); - for(int i = 0; i < static_cast<int>(converter._length); ++i) { - + for (int i = 0; i < static_cast<int>(converter._length); ++i) { + try { _builder = Gtk::Builder::create_from_file(le_gladefile); - } catch(const Glib::Error& ex) { + } catch (const Glib::Error &ex) { g_warning("Glade file loading failed for filter effect dialog"); return; } - for(int i = 0; i < static_cast<int>(converter._length); ++i) { - Gtk::TreeModel::Row row = *(effectlist_store->append()); - const Util::EnumData<LivePathEffect::EffectType>* data = &converter.data(i); - row[_columns.name] = _( converter.get_label(data->id).c_str() ); - row[_columns.data] = data; - if (i == show) { - Glib::RefPtr<Gtk::TreeSelection> select = effectlist_treeview.get_selection(); - select->select(row); + Gtk::Object *test; + for (std::string w : le_widgets) { + _builder->get_widget(w, test); + if (!test) { + g_warning("Required widget %s does not exist", w.c_str()); + return; + } } - const LivePathEffect::EnumEffectData<LivePathEffect::EffectType>* data = &converter.data(i); - Gtk::Label * LPEName; + const LivePathEffect::EnumEffectData<LivePathEffect::EffectType> *data = &converter.data(i); + Gtk::Label *LPEName; _builder->get_widget("LPEName", LPEName); Glib::ustring newid = "LPEName_" + Glib::ustring::format(i); (*LPEName).set_name(newid); (*LPEName).set_text(converter.get_label(data->id).c_str()); - Gtk::Label * LPEDescription; + Gtk::Label *LPEDescription; _builder->get_widget("LPEDescription", LPEDescription); newid = "LPEDescription_" + Glib::ustring::format(i); (*LPEDescription).set_name(newid); (*LPEDescription).set_text(converter.get_description(data->id)); - Gtk::Image * LPEIcon; + Gtk::Image *LPEIcon; _builder->get_widget("LPEIcon", LPEIcon); newid = "LPEIcon_" + Glib::ustring::format(i); (*LPEIcon).set_name(newid); - (*LPEIcon).set_from_icon_name(converter.get_icon(data->id),Gtk::BuiltinIconSize(Gtk::ICON_SIZE_DIALOG)); - Gtk::Box * LPESelectorEffect; + (*LPEIcon).set_from_icon_name(converter.get_icon(data->id), Gtk::BuiltinIconSize(Gtk::ICON_SIZE_DIALOG)); + Gtk::Box *LPESelectorEffect; _builder->get_widget("LPESelectorEffect", LPESelectorEffect); newid = "LPESelectorEffect" + Glib::ustring::format(i); (*LPESelectorEffect).set_name(newid); @@ -99,15 +99,16 @@ LivePathEffectAdd::LivePathEffectAdd() : _LPEInfo->set_visible(false); } -void LivePathEffectAdd::on_activate(Gtk::FlowBoxChild *child){ - for (auto i:_LPESelectorFlowBox->get_children()) { - Gtk::FlowBoxChild * leitem = dynamic_cast<Gtk::FlowBoxChild *>(i); +void LivePathEffectAdd::on_activate(Gtk::FlowBoxChild *child) +{ + for (auto i : _LPESelectorFlowBox->get_children()) { + Gtk::FlowBoxChild *leitem = dynamic_cast<Gtk::FlowBoxChild *>(i); leitem->get_style_context()->remove_class("lpeactive"); leitem->get_style_context()->remove_class("colorinverse"); leitem->get_style_context()->remove_class("backgroundinverse"); Gtk::Box *box = dynamic_cast<Gtk::Box *>(leitem->get_child()); if (box) { - std::vector<Gtk::Widget*> contents = box->get_children(); + std::vector<Gtk::Widget *> contents = box->get_children(); Gtk::Box *actions = dynamic_cast<Gtk::Box *>(contents[3]); if (actions) { actions->set_visible(false); @@ -120,7 +121,34 @@ void LivePathEffectAdd::on_activate(Gtk::FlowBoxChild *child){ child->show_all_children(); } - auto mainVBox = get_content_area(); +bool LivePathEffectAdd::on_filter(Gtk::FlowBoxChild *child) +{ + if (_LPEFilter->get_text().length() < 4) { + _visiblelpe = _LPESelectorFlowBox->get_children().size(); + return true; + } + Gtk::Box *box = dynamic_cast<Gtk::Box *>(child->get_child()); + if (box) { + std::vector<Gtk::Widget *> contents = box->get_children(); + Gtk::Label *lpename = dynamic_cast<Gtk::Label *>(contents[1]); + if (lpename) { + size_t s = lpename->get_text().uppercase().find(_LPEFilter->get_text().uppercase(), 0); + if (s != -1) { + _visiblelpe++; + return true; + } + } + Gtk::Label *lpedesc = dynamic_cast<Gtk::Label *>(contents[2]); + if (lpedesc) { + size_t s = lpedesc->get_text().uppercase().find(_LPEFilter->get_text().uppercase(), 0); + if (s != -1) { + _visiblelpe++; + return true; + } + } + } + return false; +} mainVBox->pack_start(scrolled_window, true, true); add_action_widget(close_button, Gtk::RESPONSE_CLOSE); @@ -147,10 +175,7 @@ void LivePathEffectAdd::onAdd() onClose(); } -void LivePathEffectAdd::onClose() -{ - _LPEDialogSelector->hide(); -} +void LivePathEffectAdd::onClose() { _LPEDialogSelector->hide(); } void LivePathEffectAdd::onKeyEvent(GdkEventKey* evt) { diff --git a/src/ui/dialog/livepatheffect-add.h b/src/ui/dialog/livepatheffect-add.h index 671751ed2..003c9c127 100644 --- a/src/ui/dialog/livepatheffect-add.h +++ b/src/ui/dialog/livepatheffect-add.h @@ -12,11 +12,15 @@ #ifndef INKSCAPE_DIALOG_LIVEPATHEFFECT_ADD_H #define INKSCAPE_DIALOG_LIVEPATHEFFECT_ADD_H -#include <gtkmm/dialog.h> -#include <gtkmm/liststore.h> -#include <gtkmm/treeview.h> -#include <gtkmm/scrolledwindow.h> #include "live_effects/effect-enum.h" +#include <gtkmm/box.h> +#include <gtkmm/builder.h> +#include <gtkmm/dialog.h> +#include <gtkmm/flowbox.h> +#include <gtkmm/flowboxchild.h> +#include <gtkmm/label.h> +#include <gtkmm/searchentry.h> +#include <gtkmm/stylecontext.h> class SPDesktop; @@ -37,21 +41,11 @@ public: * Show the dialog */ static void show(SPDesktop *desktop); + static bool isApplied() { return false; } - /** - * Returns true is the "Add" button was pressed - */ - static bool isApplied() { - return instance().applied; - } - - /** - * Return the data associated with the currently selected item - */ - static const Util::EnumData<LivePathEffect::EffectType>* getActiveData(); - -protected: + static const Util::EnumData<LivePathEffect::EffectType> *getActiveData() { return NULL; }; + protected: /** * Close button was clicked */ @@ -72,21 +66,22 @@ protected: */ void onKeyEvent(GdkEventKey* evt); private: - Gtk::Button _add_button; - Gtk::Button _close_button; - Gtk::Dialog *_LPEDialogSelector; - Glib::RefPtr<Gtk::Builder> _builder; - Gtk::FlowBox *_LPESelectorFlowBox; - Gtk::SearchEntry *_LPEFilter; - Gtk::Label *_LPEInfo; - Gtk::Box *_LPESelector; - guint _visiblelpe; - class Effect; - const LivePathEffect::EnumEffectDataConverter<LivePathEffect::EffectType>& converter; - static LivePathEffectAdd &instance() { - static LivePathEffectAdd instance_; - return instance_; - } + Gtk::Button _add_button; + Gtk::Button _close_button; + Gtk::Dialog *_LPEDialogSelector; + Glib::RefPtr<Gtk::Builder> _builder; + Gtk::FlowBox *_LPESelectorFlowBox; + Gtk::SearchEntry *_LPEFilter; + Gtk::Label *_LPEInfo; + Gtk::Box *_LPESelector; + guint _visiblelpe; + class Effect; + const LivePathEffect::EnumEffectDataConverter<LivePathEffect::EffectType> &converter; + static LivePathEffectAdd &instance() + { + static LivePathEffectAdd instance_; + return instance_; + } LivePathEffectAdd(LivePathEffectAdd const &) = delete; // no copy LivePathEffectAdd &operator=(LivePathEffectAdd const &) = delete; // no assign }; diff --git a/src/ui/dialog/lpe-selector.cpp b/src/ui/dialog/lpe-selector.cpp new file mode 100644 index 000000000..9c4cfb4b1 --- /dev/null +++ b/src/ui/dialog/lpe-selector.cpp @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** + * @file + * Filter Effects dialog. + */ +/* Authors: + * Marc Jeanmougin + * + * Copyright (C) 2017 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include "io/resource.h" +#include "io/sys.h" +#include <glibmm/convert.h> +#include <glibmm/error.h> +#include <glibmm/i18n.h> +#include <glibmm/main.h> +#include <glibmm/stringutils.h> + +namespace Inkscape { +namespace UI { + +LPESelector::LPESelector() + : Gtk::Box() +{ + + const std::string req_widgets[] = { "LPESelector", "FilterList", + "FilterFERX", "FilterFERY", + "FilterFERH", "FilterFERW", + "FilterPreview", "FilterPrimitiveDescImage", + "FilterPrimitiveList", "FilterPrimitiveDescText", + "FilterPrimitiveAdd" }; + Glib::ustring gladefile = get_filename(UIS, "lpe-selector.glade"); + try { + builder = Gtk::Builder::create_from_file(gladefile); + } catch (const Glib::Error &ex) { + g_warning("Glade file loading failed for filter effect dialog"); + return; + } + + Gtk::Object *test; + for (std::string w : req_widgets) { + builder->get_widget(w, test); + if (!test) { + g_warning("Required widget %s does not exist", w.c_str()); + return; + } + } + + builder->get_widget("LPESelector", LPESelector); + _getContents()->add(*LPESelector); +} +LPESelector::~LPESelector() = default; + + + +} // namespace UI +} // 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:fileencoding=utf-8:textwidth=99 : diff --git a/src/ui/dialog/lpe-selector.h b/src/ui/dialog/lpe-selector.h new file mode 100644 index 000000000..53ec21df2 --- /dev/null +++ b/src/ui/dialog/lpe-selector.h @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/** @file + * @brief Filter Editor dialog + */ +/* Authors: + * Marc Jeanmougin + * + * Copyright (C) 2017 Authors + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#ifndef INKSCAPE_UI_LPE_SELECTOR_H +#define INKSCAPE_UI_LPE_SELECTOR_H + +#include <gtkmm/gtkmm.h> + +namespace Inkscape { +namespace UI { + +class LPESelector : public Gtk::Box { + public: + LPESelector(); + ~LPESelector() override; + + static LPESelector &getInstance() { return *new LPESelector(); } + + // void set_attrs_locked(const bool); + private: + Glib::RefPtr<Gtk::Builder> builder; + Glib::RefPtr<Glib::Object> FilterStore; + Gtk::Box *LPESelector; +}; +} // namespace UI +} // namespace Inkscape +#endif |
