2
* \brief Widget for specifying page size; part of Document Preferences dialog.
5
* Ralf Stephan <ralf@ark.in-berlin.de>
7
* Copyright (C) 2005-2006 Authors
9
* Released under GNU GPL. Read the file 'COPYING' for more information.
12
#ifndef INKSCAPE_UI_WIDGET_PAGE_SIZER__H
13
#define INKSCAPE_UI_WIDGET_PAGE_SIZER__H
16
#include <sigc++/sigc++.h>
17
#include "ui/widget/registry.h"
18
#include "ui/widget/registered-widget.h"
19
#include "helper/units.h"
27
* Data class used to store common paper dimensions. Used to make
28
* PageSizer's _paperSizeTable.
41
* Main constructor. Use this one.
43
PaperSize(const Glib::ustring &nameArg,
57
PaperSize(const PaperSize &other)
63
PaperSize &operator=(const PaperSize &other)
64
{ assign(other); return *this; }
73
* Name of this paper specification
78
* The lesser of the two dimensions
83
* The greater of the two dimensions
88
* The units (px, pt, mm, etc) of this specification
102
void assign(const PaperSize &other)
105
smaller = other.smaller;
106
larger = other.larger;
117
* A compound widget that allows the user to select the desired
118
* page size. This widget is used in DocumentPreferences
120
class PageSizer : public Gtk::VBox
127
PageSizer(Registry & _wr);
132
virtual ~PageSizer();
135
* Set up or reset this widget
140
* Set the page size to the given dimensions. If 'changeList' is
141
* true, then reset the paper size list to the closest match
143
void setDim (double w, double h, bool changeList=true);
148
* Our handy table of all 'standard' paper sizes.
150
std::map<Glib::ustring, PaperSize> _paperSizeTable;
153
* Find the closest standard paper size in the table, to the
155
Gtk::ListStore::iterator find_paper_size (double w, double h) const;
157
void fire_fit_canvas_to_selection_or_drawing();
161
//### The Paper Size selection list
162
Gtk::HBox _paperSizeListBox;
163
Gtk::Label _paperSizeListLabel;
164
class PaperSizeColumns : public Gtk::TreeModel::ColumnRecord
168
{ add(nameColumn); add(descColumn); }
169
Gtk::TreeModelColumn<Glib::ustring> nameColumn;
170
Gtk::TreeModelColumn<Glib::ustring> descColumn;
173
PaperSizeColumns _paperSizeListColumns;
174
Glib::RefPtr<Gtk::ListStore> _paperSizeListStore;
175
Gtk::TreeView _paperSizeList;
176
Glib::RefPtr<Gtk::TreeSelection> _paperSizeListSelection;
177
Gtk::ScrolledWindow _paperSizeListScroller;
179
void on_paper_size_list_changed();
180
sigc::connection _paper_size_list_connection;
182
//### Portrait or landscape orientation
183
Gtk::HBox _orientationBox;
184
Gtk::Label _orientationLabel;
185
Gtk::RadioButton _portraitButton;
186
Gtk::RadioButton _landscapeButton;
190
sigc::connection _portrait_connection;
191
sigc::connection _landscape_connection;
193
//### Custom size frame
194
Gtk::Frame _customFrame;
195
Gtk::Table _customTable;
196
RegisteredUnitMenu _dimensionUnits;
197
RegisteredScalarUnit _dimensionWidth;
198
RegisteredScalarUnit _dimensionHeight;
199
Gtk::Button _fitPageButton;
201
void on_value_changed();
202
sigc::connection _changedw_connection;
203
sigc::connection _changedh_connection;
205
Registry *_widgetRegistry;
207
//### state - whether we are currently landscape or portrait
212
} // namespace Widget
214
} // namespace Inkscape
217
#endif /* INKSCAPE_UI_WIDGET_PAGE_SIZER__H */
222
c-file-style:"stroustrup"
223
c-file-offsets:((innamespace . 0)(inline-open . 0))
228
// vim: filetype=c++:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :