1 /** @file
2 * @brief Dialog for creating grid type arrangements of selected objects
3 */
4 /* Authors:
5 * Bob Jamison ( based off trace dialog)
6 * John Cliff
7 * Other dudes from The Inkscape Organization
8 *
9 * Copyright (C) 2004 Bob Jamison
10 * Copyright (C) 2004 John Cliff
11 *
12 * Released under GNU GPL, read the file 'COPYING' for more information
13 */
15 #ifndef SEEN_UI_DIALOG_TILE_H
16 #define SEEN_UI_DIALOG_TILE_H
18 #include <gtkmm/box.h>
19 #include <gtkmm/notebook.h>
20 #include <gtkmm/tooltips.h>
21 #include <gtkmm/button.h>
22 #include <gtkmm/spinbutton.h>
23 #include <gtkmm/checkbutton.h>
24 #include <gtkmm/radiobutton.h>
26 #include "ui/widget/panel.h"
28 namespace Inkscape {
29 namespace UI {
30 namespace Dialog {
33 /**
34 * Dialog for tiling an object
35 */
36 class TileDialog : public UI::Widget::Panel {
37 public:
38 TileDialog() ;
39 virtual ~TileDialog() {};
41 /**
42 * Do the actual work
43 */
44 void Grid_Arrange();
46 /**
47 * Respond to selection change
48 */
49 void updateSelection();
51 /**
52 * Callback from Apply
53 */
54 virtual void _apply();
56 // Callbacks from spinbuttons
57 void on_row_spinbutton_changed();
58 void on_col_spinbutton_changed();
59 void on_xpad_spinbutton_changed();
60 void on_ypad_spinbutton_changed();
61 void on_RowSize_checkbutton_changed();
62 void on_ColSize_checkbutton_changed();
63 void on_rowSize_spinbutton_changed();
64 void on_colSize_spinbutton_changed();
65 void Spacing_button_changed();
66 void VertAlign_changed();
67 void HorizAlign_changed();
69 static TileDialog& getInstance() {
70 static TileDialog instance;
71 return instance;
72 }
74 private:
75 TileDialog(TileDialog const &d); // no copy
76 void operator=(TileDialog const &d); // no assign
78 bool userHidden;
79 bool updating;
81 Gtk::Notebook notebook;
82 Gtk::Tooltips tips;
84 Gtk::VBox TileBox;
85 Gtk::Button *TileOkButton;
86 Gtk::Button *TileCancelButton;
88 // Number selected label
89 Gtk::Label SelectionContentsLabel;
92 Gtk::HBox AlignHBox;
93 Gtk::HBox SpinsHBox;
94 Gtk::HBox SizesHBox;
96 // Number per Row
97 Gtk::VBox NoOfColsBox;
98 Gtk::Label NoOfColsLabel;
99 Gtk::SpinButton NoOfColsSpinner;
100 bool AutoRowSize;
101 Gtk::CheckButton RowHeightButton;
103 Gtk::VBox XByYLabelVBox;
104 Gtk::Label padXByYLabel;
105 Gtk::Label XByYLabel;
107 // Number per Column
108 Gtk::VBox NoOfRowsBox;
109 Gtk::Label NoOfRowsLabel;
110 Gtk::SpinButton NoOfRowsSpinner;
111 bool AutoColSize;
112 Gtk::CheckButton ColumnWidthButton;
114 // Vertical align
115 Gtk::Label VertAlignLabel;
116 Gtk::HBox VertAlignHBox;
117 Gtk::VBox VertAlignVBox;
118 Gtk::RadioButtonGroup VertAlignGroup;
119 Gtk::RadioButton VertCentreRadioButton;
120 Gtk::RadioButton VertTopRadioButton;
121 Gtk::RadioButton VertBotRadioButton;
122 double VertAlign;
124 // Horizontal align
125 Gtk::Label HorizAlignLabel;
126 Gtk::VBox HorizAlignVBox;
127 Gtk::HBox HorizAlignHBox;
128 Gtk::RadioButtonGroup HorizAlignGroup;
129 Gtk::RadioButton HorizCentreRadioButton;
130 Gtk::RadioButton HorizLeftRadioButton;
131 Gtk::RadioButton HorizRightRadioButton;
132 double HorizAlign;
134 // padding in x
135 Gtk::VBox XPadBox;
136 Gtk::Label XPadLabel;
137 Gtk::SpinButton XPadSpinner;
139 // padding in y
140 Gtk::VBox YPadBox;
141 Gtk::Label YPadLabel;
142 Gtk::SpinButton YPadSpinner;
144 // BBox or manual spacing
145 Gtk::VBox SpacingVBox;
146 Gtk::RadioButtonGroup SpacingGroup;
147 Gtk::RadioButton SpaceByBBoxRadioButton;
148 Gtk::RadioButton SpaceManualRadioButton;
149 bool ManualSpacing;
153 // Row height
154 Gtk::VBox RowHeightVBox;
155 Gtk::HBox RowHeightBox;
156 Gtk::Label RowHeightLabel;
157 Gtk::SpinButton RowHeightSpinner;
159 // Column width
160 Gtk::VBox ColumnWidthVBox;
161 Gtk::HBox ColumnWidthBox;
162 Gtk::Label ColumnWidthLabel;
163 Gtk::SpinButton ColumnWidthSpinner;
164 };
167 } //namespace Dialog
168 } //namespace UI
169 } //namespace Inkscape
172 #endif /* __TILEDIALOG_H__ */
174 /*
175 Local Variables:
176 mode:c++
177 c-file-style:"stroustrup"
178 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
179 indent-tabs-mode:nil
180 fill-column:99
181 End:
182 */
183 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :