Code

Warning cleanup.
[inkscape.git] / src / widgets / layer-selector.h
1 /*
2  * Inkscape::Widgets::LayerSelector - layer selector widget
3  *
4  * Authors:
5  *   MenTaLguY <mental@rydia.net>
6  *
7  * Copyright (C) 2004 MenTaLguY
8  *
9  * Released under GNU GPL, read the file 'COPYING' for more information
10  */
12 #ifndef SEEN_INKSCAPE_WIDGETS_LAYER_SELECTOR
13 #define SEEN_INKSCAPE_WIDGETS_LAYER_SELECTOR
15 #include <gtkmm/box.h>
16 #include <gtkmm/combobox.h>
17 #include <gtkmm/togglebutton.h>
18 #include <gtkmm/tooltips.h>
19 #include <gtkmm/cellrenderertext.h>
20 #include <gtkmm/treemodel.h>
21 #include <gtkmm/liststore.h>
22 #include <sigc++/slot.h>
23 #include "util/list.h"
25 class SPDesktop;
26 class SPDocument;
27 class SPObject;
28 namespace Inkscape {
29 namespace XML {
30 class Node;
31 }
32 }
35 namespace Inkscape {
36 namespace Widgets {
38 class DocumentTreeModel;
40 class LayerSelector : public Gtk::HBox {
41 public:
42     LayerSelector(SPDesktop *desktop = NULL);
43     ~LayerSelector();
45     SPDesktop *desktop() { return _desktop; }
46     void setDesktop(SPDesktop *desktop);
48 private:
49     class LayerModelColumns : public Gtk::TreeModel::ColumnRecord {
50     public:
51         Gtk::TreeModelColumn<unsigned> depth;
52         Gtk::TreeModelColumn<SPObject *> object;
53         Gtk::TreeModelColumn<Inkscape::XML::Node *> repr;
54         Gtk::TreeModelColumn<void *> callbacks;
56         LayerModelColumns() {
57             add(depth); add(object); add(repr); add(callbacks);
58         }
59     };
61     SPDesktop *_desktop;
63     Gtk::Tooltips _tooltips;
64     Gtk::ComboBox _selector;
65     Gtk::ToggleButton _visibility_toggle;
66     Gtk::ToggleButton _lock_toggle;
68     LayerModelColumns _model_columns;
69     Gtk::CellRendererText _label_renderer;
70     Glib::RefPtr<Gtk::ListStore> _layer_model;
72 //    sigc::connection _desktop_shutdown_connection;
73     sigc::connection _layer_changed_connection;
74     sigc::connection _selection_changed_connection;
75     sigc::connection _visibility_toggled_connection;
76     sigc::connection _lock_toggled_connection;
78     SPObject *_layer;
80     void _selectLayer(SPObject *layer);
81     void _setDesktopLayer();
83     void _buildEntry(unsigned depth, SPObject &object);
84     void _buildEntries(unsigned depth,
85                        Inkscape::Util::List<SPObject &> hierarchy);
86     void _buildSiblingEntries(unsigned depth,
87                               SPObject &parent,
88                               Inkscape::Util::List<SPObject &> hierarchy);
89     void _protectUpdate(sigc::slot<void> slot);
90     void _destroyEntry(Gtk::ListStore::iterator const &row);
91     void _hideLayer(bool hide);
92     void _lockLayer(bool lock);
94     void _prepareLabelRenderer(Gtk::TreeModel::const_iterator const &row);
95 };
97 }
98 }
100 #endif
101 /*
102   Local Variables:
103   mode:c++
104   c-file-style:"stroustrup"
105   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
106   indent-tabs-mode:nil
107   fill-column:99
108   End:
109 */
110 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :