1 /**
2 * \brief This class implements the functionality of the window layout, menus,
3 * and signals.
4 *
5 * Authors:
6 * Bryce W. Harrington <bryce@bryceharrington.org>
7 * Derek P. Moore <derekm@hackunix.org>
8 * Ralf Stephan <ralf@ark.in-berlin.de>
9 * John Bintz <jcoswell@coswellproductions.org>
10 *
11 * Copyright (C) 2006 John Bintz
12 * Copyright (C) 2004 Bryce Harrington
13 *
14 * Released under GNU GPL. Read the file 'COPYING' for more information.
15 */
17 #ifndef INKSCAPE_UI_VIEW_EDIT_WIDGET_H
18 #define INKSCAPE_UI_VIEW_EDIT_WIDGET_H
20 #include <gtkmm/box.h>
21 #include <gtkmm/table.h>
22 #include <gtkmm/entry.h>
23 #include <gtkmm/scrollbar.h>
24 #include <gtkmm/actiongroup.h>
25 #include <gtkmm/uimanager.h>
26 #include <gtkmm/togglebutton.h>
28 #include "ui/dialog/dialog-manager.h"
29 #include "ui/view/edit-widget-interface.h"
30 #include "ui/widget/dock.h"
31 #include "ui/widget/selected-style.h"
32 #include "ui/widget/ruler.h"
33 #include "ui/widget/toolbox.h"
34 #include "ui/widget/svg-canvas.h"
35 #include "ui/widget/zoom-status.h"
36 #include "widgets/layer-selector.h"
38 struct SPDesktop;
39 struct SPDocument;
40 struct SPNamedView;
42 namespace Inkscape {
43 namespace UI {
44 namespace View {
46 class EditWidget : public Gtk::Window,
47 public EditWidgetInterface {
48 public:
49 EditWidget (SPDocument*);
50 ~EditWidget();
52 // Initialization
53 void initActions();
54 void initUIManager();
55 void initLayout();
56 void initEdit (SPDocument*);
57 void destroyEdit();
59 // Actions
60 void onActionFileNew();
61 void onActionFileOpen();
62 void onActionFilePrint();
63 void onActionFileQuit();
64 void onToolbarItem();
65 void onSelectTool();
66 void onNodeTool();
68 // Menus
69 void onMenuItem();
71 void onDialogAbout();
72 void onDialogAlignAndDistribute();
73 void onDialogInkscapePreferences();
74 void onDialogDialog();
75 void onDialogDocumentProperties();
76 void onDialogExport();
77 void onDialogExtensionEditor();
78 void onDialogFillAndStroke();
79 void onDialogFind();
80 void onDialogLayerEditor();
81 void onDialogMessages();
82 void onDialogObjectProperties();
83 void onDialogTextProperties();
84 void onDialogTransform();
85 void onDialogTransformation();
86 void onDialogTrace();
87 void onDialogXmlEditor();
89 // Whiteboard (Inkboard)
90 #ifdef WITH_INKBOARD
91 void onDialogWhiteboardConnect();
92 void onDialogWhiteboardShareWithUser();
93 void onDialogWhiteboardShareWithChat();
94 void onDialogOpenSessionFile();
95 void onDumpXMLTracker();
96 #endif
98 void onUriChanged();
100 // from EditWidgetInterface
101 virtual Gtk::Window* getWindow();
102 virtual void setTitle (gchar const*);
103 virtual void layout();
104 virtual void present();
105 virtual void getGeometry (gint &x, gint &y, gint &w, gint &h);
106 virtual void setSize (gint w, gint h);
107 virtual void setPosition (Geom::Point p);
108 virtual void setTransient (void*, int);
109 virtual Geom::Point getPointer();
110 virtual void setIconified();
111 virtual void setMaximized();
112 virtual void setFullscreen();
113 virtual bool shutdown();
114 virtual void destroy();
115 virtual void requestCanvasUpdate();
116 virtual void requestCanvasUpdateAndWait();
117 virtual void enableInteraction();
118 virtual void disableInteraction();
119 virtual void activateDesktop();
120 virtual void deactivateDesktop();
121 virtual void viewSetPosition (Geom::Point p);
122 virtual void updateRulers();
123 virtual void updateScrollbars (double scale);
124 virtual void toggleRulers();
125 virtual void toggleScrollbars();
126 virtual void toggleColorProfAdjust();
127 virtual void updateZoom();
128 virtual void letZoomGrabFocus();
129 virtual void setToolboxFocusTo (const gchar *);
130 virtual void setToolboxAdjustmentValue (const gchar *, double);
131 virtual void setToolboxSelectOneValue (const gchar *, gint);
132 virtual bool isToolboxButtonActive (gchar const*);
133 virtual void setCoordinateStatus (Geom::Point p);
134 virtual void setMessage (Inkscape::MessageType type, gchar const* msg);
135 virtual bool warnDialog (gchar*);
137 virtual Inkscape::UI::Widget::Dock* getDock ();
139 protected:
140 void _namedview_modified(SPObject *namedview, guint);
142 Gtk::Tooltips _tooltips;
144 // Child widgets:
145 Gtk::Table _main_window_table;
146 Gtk::VBox _toolbars_vbox;
147 Gtk::HBox _sub_window_hbox;
148 Gtk::Table _viewport_table;
150 UI::Widget::Toolbox *_tool_ctrl;
151 Gtk::Toolbar *_select_ctrl;
152 Gtk::Toolbar *_uri_ctrl;
153 Gtk::Label _uri_label;
154 Gtk::Entry _uri_entry;
155 Gtk::Toolbar *_node_ctrl;
157 UI::Widget::HRuler _top_ruler;
158 UI::Widget::VRuler _left_ruler;
159 Gtk::HScrollbar _bottom_scrollbar;
160 Gtk::VScrollbar _right_scrollbar;
161 Gtk::ToggleButton _sticky_zoom;
162 UI::Widget::SVGCanvas _svg_canvas;
163 Gtk::HBox _statusbar;
164 UI::Widget::Dock _dock;
165 UI::Widget::SelectedStyle _selected_style_status;
166 UI::Widget::ZoomStatus _zoom_status;
167 Inkscape::Widgets::LayerSelector _layer_selector;
168 Gtk::EventBox _coord_eventbox;
169 Gtk::Table _coord_status;
170 Gtk::Label _coord_status_x, _coord_status_y;
171 Gtk::Label _select_status;
173 SPDesktop* _desktop;
174 SPNamedView* _namedview;
175 double _dt2r;
177 Glib::RefPtr<Gtk::ActionGroup> _act_grp;
178 Glib::RefPtr<Gtk::UIManager> _ui_mgr;
179 UI::Dialog::DialogManager _dlg_mgr;
181 void initMenuActions();
182 void initToolbarActions();
183 void initAccelMap();
184 void initMenuBar();
185 void initCommandsBar();
186 void initToolControlsBar();
187 void initUriBar();
188 void initToolsBar();
189 void initBottomScrollbar();
190 void initRightScrollbar();
191 void initLeftRuler();
192 void initTopRuler();
193 void initStickyZoom();
194 void initStatusbar();
196 virtual bool on_key_press_event (GdkEventKey*);
197 virtual bool on_delete_event (GdkEventAny*);
198 virtual bool on_focus_in_event (GdkEventFocus*);
200 private:
201 bool onEntryFocusIn (GdkEventFocus*);
202 bool onEntryFocusOut (GdkEventFocus*);
203 void onWindowSizeAllocate (Gtk::Allocation&);
204 void onWindowRealize();
205 void onAdjValueChanged();
207 bool _update_s_f, _update_a_f;
208 unsigned int _interaction_disabled_counter;
210 sigc::connection _namedview_modified_connection;
211 };
212 } // namespace View
213 } // namespace UI
214 } // namespace Inkscape
216 #endif // INKSCAPE_UI_VIEW_EDIT_WIDGET_H
218 /*
219 Local Variables:
220 mode:c++
221 c-file-style:"stroustrup"
222 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
223 indent-tabs-mode:nil
224 fill-column:99
225 End:
226 */
227 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :