Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
unit.cpp
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright (C) Maximilian Albert 2008 <maximilian.albert@gmail.com>
4 *
5 * Released under GNU GPL v2+, read the file 'COPYING' for more information.
6 */
7
8#include "unit.h"
9
10#include <glibmm/i18n.h>
11
12#include "live_effects/effect.h"
13#include "ui/icon-names.h"
15#include "util/units.h"
16
18
19UnitParam::UnitParam(const Glib::ustring& label, const Glib::ustring& tip,
20 const Glib::ustring& key, Inkscape::UI::Widget::Registry* wr,
21 Effect* effect, Glib::ustring default_unit)
22 : Parameter(label, tip, key, wr, effect)
23 , defunit{default_unit}
24{
25 unit = std::make_unique<Inkscape::Util::Unit const>(*Util::UnitTable::get().getUnit(default_unit));
26}
27
28UnitParam::~UnitParam() = default;
29
30bool
31UnitParam::param_readSVGValue(const gchar * strvalue)
32{
33 if (strvalue) {
34 param_set_value(strvalue);
35 return true;
36 }
37 return false;
38}
39
40Glib::ustring
42{
43 return unit.get()->abbr;
44}
45
46Glib::ustring
51
52void
57
58void
59UnitParam::param_update_default(const gchar * default_unit)
60{
61 defunit = "px"; // fallback to px
62 if (default_unit) {
63 defunit = default_unit;
64 }
65}
66
67void
68UnitParam::param_set_value(const gchar * strvalue)
69{
70 if (strvalue) {
72 unit = std::make_unique<Inkscape::Util::Unit const>(*Util::UnitTable::get().getUnit(strvalue));
73 }
74}
75
76const gchar *
78{
79 return unit.get()->abbr.c_str();
80}
81
82Gtk::Widget *
84{
85 auto const unit_menu = Gtk::make_managed<UI::Widget::RegisteredUnitMenu>( param_label,
87 *param_wr,
90
91 unit_menu->setUnit(unit.get()->abbr);
92 unit_menu->set_undo_parameters(_("Change unit parameter"), INKSCAPE_ICON("dialog-path-effects"));
93 return unit_menu;
94}
95
96
97} // Inkscape::LivePathEffect
98
99/*
100 Local Variables:
101 mode:c++
102 c-file-style:"stroustrup"
103 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
104 indent-tabs-mode:nil
105 fill-column:99
106 End:
107*/
108// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :
Inkscape::XML::Node * getRepr()
Definition effect.cpp:1928
Inkscape::UI::Widget::Registry * param_wr
Definition parameter.h:99
Glib::ustring param_getSVGValue() const override
Definition unit.cpp:41
Glib::ustring param_getDefaultSVGValue() const override
Definition unit.cpp:47
void param_set_default() override
Definition unit.cpp:53
UnitParam(const Glib::ustring &label, const Glib::ustring &tip, const Glib::ustring &key, Inkscape::UI::Widget::Registry *wr, Effect *effect, Glib::ustring default_unit="px")
Definition unit.cpp:19
bool param_readSVGValue(const gchar *strvalue) override
Definition unit.cpp:31
void param_update_default(const gchar *default_unit) override
Definition unit.cpp:59
Gtk::Widget * param_newWidget() override
Definition unit.cpp:83
std::unique_ptr< Inkscape::Util::Unit const > unit
Definition unit.h:49
const gchar * get_abbreviation() const
Definition unit.cpp:77
void param_set_value(const gchar *unit)
Definition unit.cpp:68
static UnitTable & get()
Definition units.cpp:441
Macro for icon names used in Inkscape.
Glib::ustring label
Live Path Effects code.
static cairo_user_data_key_t key