Inkscape
Vector Graphics Editor
layer-selector.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Inkscape::UI::Widget::LayerSelector - layer selector widget
4 *
5 * Authors:
6 * MenTaLguY <mental@rydia.net>
7 *
8 * Copyright (C) 2004 MenTaLguY
9 *
10 * Released under GNU GPL v2+, read the file 'COPYING' for more information.
11 */
12
13#ifndef SEEN_INKSCAPE_WIDGETS_LAYER_SELECTOR
14#define SEEN_INKSCAPE_WIDGETS_LAYER_SELECTOR
15
16#include <memory>
17#include <glibmm/refptr.h>
18#include <gtkmm/box.h>
19#include <gtkmm/button.h>
20#include <gtkmm/label.h>
21#include <gtkmm/togglebutton.h>
22
24#include "xml/helper-observer.h"
25
26namespace Glib {
27class ustring;
28} // namespace Glib
29
30namespace Gtk {
31class CssProvider;
32} // namespace Gtk
33
34class SPDesktop;
35class SPDocument;
36class SPGroup;
37
38namespace Inkscape::UI::Widget {
39
40class AlternateIcons;
41
42class LayerSelector final : public Gtk::Box {
43public:
44 LayerSelector(SPDesktop *desktop = nullptr);
45 ~LayerSelector() final;
46
47 void setDesktop(SPDesktop *desktop);
48
49private:
50 SPDesktop *_desktop = nullptr;
51 SPGroup *_layer = nullptr;
52
53 Gtk::ToggleButton _eye_toggle;
54 Gtk::ToggleButton _lock_toggle;
56 Gtk::Label _layer_label;
57 Glib::RefPtr<Gtk::CssProvider> _label_style;
58
59 AlternateIcons *_eye_label = nullptr;
60 AlternateIcons *_lock_label = nullptr;
61
65 std::unique_ptr<Inkscape::XML::SignalObserver> _observer;
66
67 void _layerChanged(SPGroup *layer);
68 void _layerModified();
70 void _hideLayer();
71 void _lockLayer();
72 void _layerChoose();
73 Glib::ustring getThisCssClass() const;
74};
75
76} // namespace Inkscape::UI::Widget
77
78#endif // SEEN_INKSCAPE_WIDGETS_LAYER_SELECTOR
79
80/*
81 Local Variables:
82 mode:c++
83 c-file-style:"stroustrup"
84 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
85 indent-tabs-mode:nil
86 fill-column:99
87 End:
88*/
89// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
std::unique_ptr< Inkscape::XML::SignalObserver > _observer
void _layerModified()
If anything happens to the layer, refresh it.
Glib::RefPtr< Gtk::CssProvider > _label_style
void setDesktop(SPDesktop *desktop)
void _layerChanged(SPGroup *layer)
Selects the given layer in the widget.
LayerSelector(SPDesktop *desktop=nullptr)
To do: update description of desktop.
Definition: desktop.h:150
Typed SVG document implementation.
Definition: document.h:106
TODO: insert short description here.
Definition: desktop.h:51
Button
helper to stop accidents on int vs gtkmm3's weak=typed enums, & looks nicer!
Definition: controller.h:70
Custom widgets.
Definition: desktop.h:127