blob: 3cc4349e6692ce1cfe7954eabaffc2353e5e2d29 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
/** @file
* @brief A dialog for CSS selectors
*/
/* Authors:
* Kamalpreet Kaur Grewal
*
* Copyright (C) Kamalpreet Kaur Grewal 2016 <grewalkamal005@gmail.com>
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#ifndef STYLEDIALOG_H
#define STYLEDIALOG_H
#include <ui/widget/panel.h>
#include <gtkmm/treeview.h>
#include <gtkmm/treestore.h>
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/dialog.h>
#include <gtkmm/treeselection.h>
#include <gtkmm/paned.h>
#include "desktop.h"
#include "document.h"
#include "ui/dialog/cssdialog.h"
namespace Inkscape {
namespace UI {
namespace Dialog {
/**
* @brief The StyleDialog class
* A list of CSS selectors will show up in this dialog. This dialog allows one to
* add and delete selectors. Elements can be added to and removed from the selectors
* in the dialog. Selection of any selector row selects the matching objects in
* the drawing and vice-versa.
*/
typedef std::pair<std::pair<std::string, std::vector<SPObject *> >, std::string>
_selectorVecType;
class StyleDialog : public Widget::Panel {
public:
StyleDialog();
~StyleDialog();
static StyleDialog &getInstance() { return *new StyleDialog(); }
void setDesktop(SPDesktop* desktop);
private:
void _styleButton(Gtk::Button& btn, char const* iconName, char const* tooltip);
std::string _setClassAttribute(std::vector<SPObject *>);
class InkSelector {
public:
std::string _selector;
std::vector<SPObject *> _matchingObjs;
std::string _xmlContent;
};
InkSelector inkSelector;
std::vector<InkSelector> _selectorVec;
std::vector<InkSelector> _getSelectorVec();
std::string _populateTree(std::vector<InkSelector>);
bool _handleButtonEvent(GdkEventButton *event);
void _buttonEventsSelectObjs(GdkEventButton *event);
void _selectObjects(int, int);
void _checkAllChildren(Gtk::TreeModel::Children& children);
Inkscape::XML::Node *_styleElementNode();
void _updateStyleContent();
void _selectRow(Selection *);
class ModelColumns : public Gtk::TreeModel::ColumnRecord
{
public:
ModelColumns() {
add(_selectorLabel);
add(_colAddRemove);
add(_colObj);
}
Gtk::TreeModelColumn<Glib::ustring> _selectorLabel;
Gtk::TreeModelColumn<bool> _colAddRemove;
Gtk::TreeModelColumn<std::vector<SPObject *> > _colObj;
};
SPDesktop* _desktop;
SPDesktop* _targetDesktop;
ModelColumns _mColumns;
Gtk::VPaned _paned;
Gtk::VBox _mainBox;
Gtk::HBox _buttonBox;
Gtk::TreeView _treeView;
Glib::RefPtr<Gtk::TreeStore> _store;
Gtk::ScrolledWindow _scrolledWindow;
Gtk::Button* del;
Gtk::Button* create;
SPDocument* _document;
bool _styleExists;
Inkscape::XML::Node *_styleChild;
std::string _selectorName;
std::string _selectorValue;
bool _newDrawing;
CssDialog *_cssPane;
void _selAdd(Gtk::TreeModel::Row row);
// Signal handlers
void _addSelector();
void _delSelector();
void _selChanged();
// Signal handler for CssDialog
void _handleEdited(const Glib::ustring& path, const Glib::ustring& new_text);
bool _delProperty(GdkEventButton *event);
};
} // namespace Dialog
} // namespace UI
} // namespace Inkscape
#endif // STYLEDIALOG_H
/*
Local Variables:
mode:c++
c-file-style:"stroustrup"
c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
indent-tabs-mode:nil
fill-column:99
End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
|