Code

Move files from the src/dialogs/ directory to the places where they
[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/dock.h"
31 #include "ui/widget/layer-selector.h"
32 #include "ui/widget/ruler.h"
33 #include "ui/widget/selected-style.h"
34 #include "ui/widget/svg-canvas.h"
35 #include "ui/widget/toolbox.h"
36 #include "ui/widget/zoom-status.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 :