Code

Mnemonics in "Fill and stroke", "Align and distribute", and "Transform" dialogs ...
[inkscape.git] / src / ui / widget / scalar-unit.h
1 /**
2  * \brief Scalar Unit Widget - A labelled text box, with spin buttons and
3  *        optional icon or suffix, for entering the values of various unit
4  *        types.
5  *
6  * Authors:
7  *   Bryce Harrington <bryce@bryceharrington.org>
8  *   Derek P. Moore <derekm@hackunix.org>
9  *   buliabyak@gmail.com
10  *
11  * Copyright (C) 2004-2005 Authors
12  *
13  * Released under GNU GPL.  Read the file 'COPYING' for more information.
14  */
16 #ifndef INKSCAPE_UI_WIDGET_SCALAR_UNIT_H
17 #define INKSCAPE_UI_WIDGET_SCALAR_UNIT_H
19 #include "scalar.h"
20 #include "unit-menu.h"
22 namespace Inkscape {
23 namespace UI {
24 namespace Widget {
26 class ScalarUnit : public Scalar
27 {
28 public:
29     ScalarUnit(Glib::ustring const &label, Glib::ustring const &tooltip,
30                UnitType unit_type = UNIT_TYPE_LINEAR,
31                Glib::ustring const &suffix = "",
32                Glib::ustring const &icon = "",
33                UnitMenu *unit_menu = NULL,
34                bool mnemonic = true);
36     void      initScalar(double min_value, double max_value);
38     Unit      getUnit() const;
39     UnitType  getUnitType() const;
40     double    getValue(Glib::ustring const &units) const;
42     bool      setUnit(Glib::ustring const &units);
43     void      setValue(double number, Glib::ustring const &units);
44     void      setValue(double number);
46     void      setHundredPercent(double number);
47     void      setAbsoluteIsIncrement(bool value);
48     void      setPercentageIsIncrement(bool value);
50     double PercentageToAbsolute(double value);
51     double AbsoluteToPercentage(double value);
53     double getAsPercentage();
54     void setFromPercentage(double value);
56     void on_unit_changed();
58 protected:
59     UnitMenu  *_unit_menu;
61     double _hundred_percent; // the length that corresponds to 100%, in px, for %-to/from-absolute conversions
63     bool _absolute_is_increment; // if true, 120% with _hundred_percent=100px gets converted to/from 20px; otherwise, to/from 120px
64     bool _percentage_is_increment; // if true, 120px with _hundred_percent=100px gets converted to/from 20%; otherwise, to/from 120%
65                                             // if both are true, 20px is converted to/from 20% if _hundred_percent=100px
67     Glib::ustring lastUnits; // previously selected unit, for conversions
68 };
70 } // namespace Widget
71 } // namespace UI
72 } // namespace Inkscape
74 #endif // INKSCAPE_UI_WIDGET_SCALAR_UNIT_H
76 /*
77   Local Variables:
78   mode:c++
79   c-file-style:"stroustrup"
80   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
81   indent-tabs-mode:nil
82   fill-column:99
83   End:
84 */
85 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :