Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
gradient-selector.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-or-later
5/* Authors:
6 * Lauris Kaplinski <lauris@kaplinski.com>
7 * bulia byak <buliabyak@users.sf.net>
8 * Jon A. Cruz <jon@joncruz.org>
9 *
10 * Copyright (C) 2001-2002 Lauris Kaplinski
11 * Copyright (C) 2001 Ximian, Inc.
12 * Copyright (C) 2010 Jon A. Cruz
13 *
14 * Released under GNU GPL v2+, read the file 'COPYING' for more information.
15 */
16
17#ifndef SEEN_GRADIENT_SELECTOR_H
18#define SEEN_GRADIENT_SELECTOR_H
19
20#include <vector>
21#include <gdkmm/pixbuf.h>
22#include <glibmm/refptr.h>
23#include <gtkmm/box.h>
24#include <gtkmm/treemodel.h>
25#include <sigc++/signal.h>
26
30
31class SPDocument;
32class SPGradient;
33
34namespace Gtk {
35class Button;
36class CellRendererPixbuf;
37class CellRendererText;
38class ListStore;
39class ScrolledWindow;
40class TreeView;
41} // namespace Gtk
42
43namespace Inkscape::UI::Widget {
44
45class GradientVectorSelector;
46
48 : public Gtk::Box
50{
51public:
52 class ModelColumns final : public Gtk::TreeModel::ColumnRecord {
53 public:
55 {
56 add(name);
57 add(refcount);
58 add(color);
59 add(data);
60 add(pixbuf);
61 }
62 ~ModelColumns() override = default;
63
64 Gtk::TreeModelColumn<Glib::ustring> name;
65 Gtk::TreeModelColumn<unsigned long> color;
66 Gtk::TreeModelColumn<gint> refcount;
67 Gtk::TreeModelColumn<SPGradient *> data;
68 Gtk::TreeModelColumn<Glib::RefPtr<Gdk::Pixbuf>> pixbuf;
69 };
70
71private:
72 sigc::signal<void ()> _signal_grabbed;
73 sigc::signal<void ()> _signal_dragged;
74 sigc::signal<void ()> _signal_released;
75 sigc::signal<void (SPGradient *)> _signal_changed;
77
80
81 /* Vector selector */
83
84 /* Tree */
85 bool _checkForSelected(const Gtk::TreePath &path, const Gtk::TreeModel::iterator &iter, SPGradient *vector);
86 bool onKeyPressed(unsigned keyval, unsigned keycode, Gdk::ModifierType state);
87 void onTreeSelection();
88 void onGradientRename(const Glib::ustring &path_string, const Glib::ustring &new_text);
89 void onTreeNameColClick();
92
93 Gtk::TreeView *_treeview;
94 Gtk::ScrolledWindow *_scrolled_window;
96 Glib::RefPtr<Gtk::ListStore> _store;
97 Gtk::CellRendererPixbuf *_icon_renderer;
98 Gtk::CellRendererText *_text_renderer;
99
100 /* Editing buttons */
101 Gtk::Button *_edit;
102 Gtk::Button *_add;
103 Gtk::Button *_del;
104 Gtk::Button *_del2;
105
107
108 std::vector<Gtk::Widget *> _nonsolid;
109 std::vector<Gtk::Widget *> _swatch_widgets;
110
111 void selectGradientInTree(SPGradient *vector);
112 void moveSelection(int amount, bool down = true, bool toEnd = false);
113
114 void style_button(Gtk::Button *btn, char const *iconName);
115 void check_del_button();
116
117 // Signal handlers
118 void add_vector_clicked();
119 void edit_vector_clicked();
122 void vector_set(SPGradient *gr);
123
124public:
127
128 void show_edit_button(bool show);
129 void set_name_col_size(int min_width);
130 void set_gradient_size(int width, int height);
131
132 inline decltype(_signal_changed) signal_changed() const { return _signal_changed; }
133 inline decltype(_signal_grabbed) signal_grabbed() const { return _signal_grabbed; }
134 inline decltype(_signal_dragged) signal_dragged() const { return _signal_dragged; }
135 inline decltype(_signal_released) signal_released() const { return _signal_released; }
136
137 void setGradient(SPGradient* gradient) override { /* no op */ }
138 SPGradient *getVector() override;
139 void setVector(SPDocument *doc, SPGradient *vector) override;
140 void setMode(SelectorMode mode) override;
141 void setUnits(SPGradientUnits units) override;
142 SPGradientUnits getUnits() override;
143 void setSpread(SPGradientSpread spread) override;
144 SPGradientSpread getSpread() override;
145};
146
147} // namespace Inkscape::UI::Widget
148
149#endif // SEEN_GRADIENT_SELECTOR_H
150
151/*
152 Local Variables:
153 mode:c++
154 c-file-style:"stroustrup"
155 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
156 indent-tabs-mode:nil
157 fill-column:99
158 End:
159*/
160// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :
Gtk::TreeModelColumn< unsigned long > color
Gtk::TreeModelColumn< Glib::RefPtr< Gdk::Pixbuf > > pixbuf
decltype(_signal_grabbed) signal_grabbed() const
void onGradientRename(const Glib::ustring &path_string, const Glib::ustring &new_text)
Gtk::CellRendererPixbuf * _icon_renderer
void setSpread(SPGradientSpread spread) override
decltype(_signal_released) signal_released() const
void setVector(SPDocument *doc, SPGradient *vector) override
bool onKeyPressed(unsigned keyval, unsigned keycode, Gdk::ModifierType state)
bool _checkForSelected(const Gtk::TreePath &path, const Gtk::TreeModel::iterator &iter, SPGradient *vector)
void setUnits(SPGradientUnits units) override
void set_gradient_size(int width, int height)
void moveSelection(int amount, bool down=true, bool toEnd=false)
std::vector< Gtk::Widget * > _nonsolid
std::vector< Gtk::Widget * > _swatch_widgets
void setMode(SelectorMode mode) override
void setGradient(SPGradient *gradient) override
decltype(_signal_changed) signal_changed() const
Glib::RefPtr< Gtk::ListStore > _store
sigc::signal< void(SPGradient *)> _signal_changed
void style_button(Gtk::Button *btn, char const *iconName)
decltype(_signal_dragged) signal_dragged() const
Typed SVG document implementation.
Definition document.h:101
Gradient.
Definition sp-gradient.h:86
Definition desktop.h:50
Custom widgets.
Definition desktop.h:126
static constexpr int height
int mode
TODO: insert short description here.
SPGradientSpread
TODO: insert short description here.
SPGradientUnits
double width