Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
enum.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Inkscape::LivePathEffectParameters
4 *
5 * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>
6 *
7 * Released under GNU GPL v2+, read the file 'COPYING' for more information.
8 */
9
10#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_ENUM_H
11#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_ENUM_H
12
13#include <glibmm/ustring.h>
14
15#include "live_effects/effect.h"
17#include "ui/icon-names.h"
19
21
22template<typename E> class EnumParam : public Parameter {
23public:
24 EnumParam( const Glib::ustring& label,
25 const Glib::ustring& tip,
26 const Glib::ustring& key,
29 Effect* effect,
30 E default_value,
31 bool sort = true)
32 : Parameter(label, tip, key, wr, effect)
33 {
34 enumdataconv = &c;
35 defvalue = default_value;
37 sorted = sort;
38 };
39
40 EnumParam(const EnumParam&) = delete;
41 EnumParam& operator=(const EnumParam&) = delete;
42
43 Gtk::Widget * param_newWidget() override {
44 auto const regenum = Gtk::make_managed<Inkscape::UI::Widget::RegisteredEnum<E>>(param_label, param_tooltip,
46 regenum->set_active_by_id(value);
47 regenum->combobox()->setProgrammatically = false;
48 regenum->combobox()->signal_changed().connect(sigc::mem_fun (*this, &EnumParam::_on_change_combo));
49 regenum->set_undo_parameters(_("Change enumeration parameter"), INKSCAPE_ICON("dialog-path-effects"));
50 return regenum;
51 };
52
54
55 bool param_readSVGValue(const gchar * strvalue) override {
56 if (!strvalue) {
58 return true;
59 }
60
61 param_set_value( enumdataconv->get_id_from_key(Glib::ustring(strvalue)) );
62
63 return true;
64 };
65 Glib::ustring param_getSVGValue() const override {
66 return enumdataconv->get_key(value);
67 };
68
69 Glib::ustring param_getDefaultSVGValue() const override {
70 return enumdataconv->get_key(defvalue).c_str();
71 };
72
73 E get_value() const {
74 return value;
75 }
76
77 inline operator E() const {
78 return value;
79 };
80
81 void param_set_default() override {
83 }
84
85 void param_update_default(E default_value) {
86 defvalue = default_value;
87 }
88
89 void param_update_default(const gchar * default_value) override {
90 param_update_default(enumdataconv->get_id_from_key(Glib::ustring(default_value)));
91 }
92
93 void param_set_value(E val) {
94 value = val;
95 }
96 ParamType paramType() const override { return ParamType::ENUM; };
97private:
100 bool sorted;
101
103};
104
105}; // namespace Inkscape::LivePathEffect
106
107#endif // INKSCAPE_LIVEPATHEFFECT_PARAMETER_ENUM_H
108
109/*
110 Local Variables:
111 mode:c++
112 c-file-style:"stroustrup"
113 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
114 indent-tabs-mode:nil
115 fill-column:99
116 End:
117*/
118// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
Inkscape::XML::Node * getRepr()
Definition effect.cpp:1928
void param_update_default(E default_value)
Definition enum.h:85
const Util::EnumDataConverter< E > * enumdataconv
Definition enum.h:102
ParamType paramType() const override
Definition enum.h:96
void param_update_default(const gchar *default_value) override
Definition enum.h:89
bool param_readSVGValue(const gchar *strvalue) override
Definition enum.h:55
EnumParam & operator=(const EnumParam &)=delete
EnumParam(const EnumParam &)=delete
void param_set_default() override
Definition enum.h:81
Glib::ustring param_getSVGValue() const override
Definition enum.h:65
Gtk::Widget * param_newWidget() override
Definition enum.h:43
Glib::ustring param_getDefaultSVGValue() const override
Definition enum.h:69
EnumParam(const Glib::ustring &label, const Glib::ustring &tip, const Glib::ustring &key, const Util::EnumDataConverter< E > &c, Inkscape::UI::Widget::Registry *wr, Effect *effect, E default_value, bool sort=true)
Definition enum.h:24
Inkscape::UI::Widget::Registry * param_wr
Definition parameter.h:99
Simplified management of enumerations of svg items with UI labels.
Definition enums.h:42
double c[8][4]
Macro for icon names used in Inkscape.
Glib::ustring label
Live Path Effects code.
static cairo_user_data_key_t key