1 // SPDX-License-Identifier: GPL-2.0-or-later
2 #ifndef SEEN_CALLIGRAPHY_TOOLBAR_H
3 #define SEEN_CALLIGRAPHY_TOOLBAR_H
4 
5 /**
6  * @file
7  * Calligraphy aux toolbar
8  */
9 /* Authors:
10  *   MenTaLguY <mental@rydia.net>
11  *   Lauris Kaplinski <lauris@kaplinski.com>
12  *   bulia byak <buliabyak@users.sf.net>
13  *   Frank Felfe <innerspace@iname.com>
14  *   John Cliff <simarilius@yahoo.com>
15  *   David Turner <novalis@gnu.org>
16  *   Josh Andler <scislac@scislac.com>
17  *   Jon A. Cruz <jon@joncruz.org>
18  *   Maximilian Albert <maximilian.albert@gmail.com>
19  *   Tavmjong Bah <tavmjong@free.fr>
20  *   Abhishek Sharma
21  *   Kris De Gussem <Kris.DeGussem@gmail.com>
22  *
23  * Copyright (C) 2004 David Turner
24  * Copyright (C) 2003 MenTaLguY
25  * Copyright (C) 1999-2011 authors
26  * Copyright (C) 2001-2002 Ximian, Inc.
27  *
28  * Released under GNU GPL v2+, read the file 'COPYING' for more information.
29  */
30 
31 #include "toolbar.h"
32 #include <gtkmm/adjustment.h>
33 
34 class SPDesktop;
35 
36 namespace Gtk {
37 class ComboBoxText;
38 }
39 
40 namespace Inkscape {
41 namespace UI {
42 class SimplePrefPusher;
43 
44 namespace Widget {
45 class SpinButtonToolItem;
46 class UnitTracker;
47 }
48 
49 namespace Toolbar {
50 class CalligraphyToolbar : public Toolbar {
51 private:
52     UI::Widget::UnitTracker *_tracker;
53     bool _presets_blocked;
54 
55     UI::Widget::SpinButtonToolItem *_angle_item;
56     Gtk::ComboBoxText *_profile_selector_combo;
57 
58     std::map<Glib::ustring, GObject *> _widget_map;
59 
60     Glib::RefPtr<Gtk::Adjustment> _width_adj;
61     Glib::RefPtr<Gtk::Adjustment> _mass_adj;
62     Glib::RefPtr<Gtk::Adjustment> _wiggle_adj;
63     Glib::RefPtr<Gtk::Adjustment> _angle_adj;
64     Glib::RefPtr<Gtk::Adjustment> _thinning_adj;
65     Glib::RefPtr<Gtk::Adjustment> _tremor_adj;
66     Glib::RefPtr<Gtk::Adjustment> _fixation_adj;
67     Glib::RefPtr<Gtk::Adjustment> _cap_rounding_adj;
68     Gtk::ToggleToolButton *_usepressure;
69     Gtk::ToggleToolButton *_tracebackground;
70     Gtk::ToggleToolButton *_usetilt;
71 
72     std::unique_ptr<SimplePrefPusher> _tracebackground_pusher;
73     std::unique_ptr<SimplePrefPusher> _usepressure_pusher;
74     std::unique_ptr<SimplePrefPusher> _usetilt_pusher;
75 
76     void width_value_changed();
77     void velthin_value_changed();
78     void angle_value_changed();
79     void flatness_value_changed();
80     void cap_rounding_value_changed();
81     void tremor_value_changed();
82     void wiggle_value_changed();
83     void mass_value_changed();
84     void build_presets_list();
85     void change_profile();
86     void save_profile(GtkWidget *widget);
87     void edit_profile();
88     void update_presets_list();
89     void tilt_state_changed();
90     void unit_changed(int not_used);
91     void on_pref_toggled(Gtk::ToggleToolButton *item,
92                          const Glib::ustring&   path);
93 
94 protected:
95     CalligraphyToolbar(SPDesktop *desktop);
96 
97 public:
98     static GtkWidget * create(SPDesktop *desktop);
99 };
100 
101 }
102 }
103 }
104 
105 #endif /* !SEEN_CALLIGRAPHY_TOOLBAR_H */
106