Code

bedb94f9804a3504bedd13c17b770fad55320f2f
[inkscape.git] / src / ui / view / edit-widget.h
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/selected-style.h"
31 #include "ui/widget/ruler.h"
32 #include "ui/widget/toolbox.h"
33 #include "ui/widget/svg-canvas.h"
34 #include "ui/widget/zoom-status.h"
35 #include "widgets/layer-selector.h"
37 struct SPDesktop;
38 struct SPDocument;
39 struct SPNamedView;
41 namespace Inkscape {
42 namespace UI {
43 namespace View {
45 class EditWidget : public Gtk::Window, 
46                    public EditWidgetInterface {
47 public:
48     EditWidget (SPDocument*);
49     ~EditWidget();
51     // Initialization
52     void initActions();
53     void initUIManager();
54     void initLayout();
55     void initEdit (SPDocument*);
56     void destroyEdit();
58     // Actions
59     void onActionFileNew();
60     void onActionFileOpen();
61     void onActionFilePrint();
62     void onActionFileQuit();
63     void onToolbarItem();
64     void onSelectTool();
65     void onNodeTool();
67     // Menus
68     void onMenuItem();
70     void onDialogAbout();
71     void onDialogAlignAndDistribute();
72     void onDialogInkscapePreferences();
73     void onDialogDialog();
74     void onDialogDocumentProperties();
75     void onDialogExport();
76     void onDialogExtensionEditor();
77     void onDialogFillAndStroke();
78     void onDialogFind();
79     void onDialogLayerEditor();
80     void onDialogMessages();
81     void onDialogObjectProperties();
82     void onDialogTextProperties();
83     void onDialogTransform();
84     void onDialogTransformation();
85     void onDialogTrace();
86     void onDialogXmlEditor();
88         // Whiteboard (Inkboard)
89 #ifdef WITH_INKBOARD
90         void onDialogWhiteboardConnect();
91         void onDialogWhiteboardShareWithUser();
92         void onDialogWhiteboardShareWithChat();
93         void onDialogOpenSessionFile();
94         void onDumpXMLTracker();
95 #endif
97     void onUriChanged();
99     // from EditWidgetInterface
100     virtual void *getWindow();
101     virtual void setTitle (gchar const*);
102     virtual void layout();
103     virtual void present();
104     virtual void getGeometry (gint &x, gint &y, gint &w, gint &h);
105     virtual void setSize (gint w, gint h);
106     virtual void setPosition (NR::Point p);
107     virtual void setTransient (void*, int);
108     virtual NR::Point getPointer();
109     virtual void setIconified();
110     virtual void setMaximized();
111     virtual void setFullscreen();
112     virtual bool shutdown();
113     virtual void destroy();
114     virtual void requestCanvasUpdate();
115     virtual void requestCanvasUpdateAndWait();
116     virtual void enableInteraction();
117     virtual void disableInteraction();
118     virtual void activateDesktop();
119     virtual void deactivateDesktop();
120     virtual void viewSetPosition (NR::Point p);
121     virtual void updateRulers();
122     virtual void updateScrollbars (double scale);
123     virtual void toggleRulers();
124     virtual void toggleScrollbars();
125     virtual void updateZoom();
126     virtual void letZoomGrabFocus();
127     virtual void setToolboxFocusTo (const gchar *);
128     virtual void setToolboxAdjustmentValue (const gchar *, double);
129     virtual bool isToolboxButtonActive (gchar const*);
130     virtual void setCoordinateStatus (NR::Point p);
131     virtual void setMessage (Inkscape::MessageType type, gchar const* msg);
132     virtual bool warnDialog (gchar*);
134 protected:
135     void _namedview_modified(SPObject *namedview, guint);
137     Gtk::Tooltips        _tooltips;
138     
139     // Child widgets:
140     Gtk::Table           _main_window_table;
141     Gtk::VBox            _toolbars_vbox;
142     Gtk::HBox            _sub_window_hbox;
143     Gtk::Table           _viewport_table;
145     UI::Widget::Toolbox  *_tool_ctrl;
146     Gtk::Toolbar         *_select_ctrl;
147     Gtk::Toolbar         *_uri_ctrl;
148     Gtk::Label           _uri_label;
149     Gtk::Entry           _uri_entry;
150     Gtk::Toolbar         *_node_ctrl;
152     UI::Widget::HRuler   _top_ruler;
153     UI::Widget::VRuler   _left_ruler;
154     Gtk::HScrollbar      _bottom_scrollbar;
155     Gtk::VScrollbar      _right_scrollbar;
156     Gtk::ToggleButton    _sticky_zoom;
157     UI::Widget::SVGCanvas _svg_canvas;
158     Gtk::HBox            _statusbar;
159     UI::Widget::SelectedStyle _selected_style_status;
160     UI::Widget::ZoomStatus _zoom_status;
161     Inkscape::Widgets::LayerSelector _layer_selector;
162     Gtk::EventBox        _coord_eventbox;
163     Gtk::Table           _coord_status;
164     Gtk::Label           _coord_status_x, _coord_status_y;
165     Gtk::Label           _select_status;
166     
167     SPDesktop*           _desktop;
168     SPNamedView*         _namedview;
169     double               _dt2r;
171     Glib::RefPtr<Gtk::ActionGroup>  _act_grp;
172     Glib::RefPtr<Gtk::UIManager>    _ui_mgr;
173     UI::Dialog::DialogManager       _dlg_mgr;
175     void initMenuActions();
176     void initToolbarActions();
177     void initAccelMap();
178     void initMenuBar();
179     void initCommandsBar();
180     void initToolControlsBar();
181     void initUriBar();
182     void initToolsBar();
183     void initBottomScrollbar();
184     void initRightScrollbar();
185     void initLeftRuler();
186     void initTopRuler();
187     void initStickyZoom();
188     void initStatusbar();
190     virtual bool on_key_press_event (GdkEventKey*);
191     virtual bool on_delete_event (GdkEventAny*);
192     virtual bool on_focus_in_event (GdkEventFocus*);
194 private:
195     bool onEntryFocusIn (GdkEventFocus*);
196     bool onEntryFocusOut (GdkEventFocus*);
197     void onWindowSizeAllocate (Gtk::Allocation&);
198     void onWindowRealize();
199     void onAdjValueChanged();
201     bool _update_s_f, _update_a_f;
202     unsigned int _interaction_disabled_counter;
204     sigc::connection _namedview_modified_connection;
205 };
206 } // namespace View
207 } // namespace UI
208 } // namespace Inkscape
210 #endif // INKSCAPE_UI_VIEW_EDIT_WIDGET_H
212 /*
213   Local Variables:
214   mode:c++
215   c-file-style:"stroustrup"
216   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
217   indent-tabs-mode:nil
218   fill-column:99
219   End:
220 */
221 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :