edit-widget.h revision e59ade72d43f975a967823362ce085d6b72dda7e
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix/**
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix * \brief This class implements the functionality of the window layout, menus,
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix * and signals.
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix *
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix * Authors:
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix * Bryce W. Harrington <bryce@bryceharrington.org>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix * Derek P. Moore <derekm@hackunix.org>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix * Ralf Stephan <ralf@ark.in-berlin.de>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix *
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix * Copyright (C) 2004 Bryce Harrington
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix *
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix * Released under GNU GPL. Read the file 'COPYING' for more information.
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix */
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#ifndef INKSCAPE_UI_VIEW_EDIT_WIDGET_H
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#define INKSCAPE_UI_VIEW_EDIT_WIDGET_H
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include <gtkmm/box.h>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include <gtkmm/table.h>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include <gtkmm/entry.h>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include <gtkmm/scrollbar.h>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include <gtkmm/actiongroup.h>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include <gtkmm/uimanager.h>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include <gtkmm/togglebutton.h>
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include "ui/dialog/dialog-manager.h"
25ad3718fb4b96b39930af8e043c8ee1e624fd10cilix#include "ui/view/edit-widget-interface.h"
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include "ui/widget/selected-style.h"
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include "ui/widget/ruler.h"
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen#include "ui/widget/toolbox.h"
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen#include "ui/widget/svg-canvas.h"
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include "ui/widget/zoom-status.h"
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#include "widgets/layer-selector.h"
25ad3718fb4b96b39930af8e043c8ee1e624fd10cilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixstruct SPDesktop;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixstruct SPDocument;
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelenstruct SPNamedView;
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixnamespace Inkscape {
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixnamespace UI {
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixnamespace View {
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixclass EditWidget : public Gtk::Window,
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix public EditWidgetInterface {
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixpublic:
79d46cc367c4181803d9a7a327b163643f23e8a7cilix EditWidget (SPDocument*);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix ~EditWidget();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix // Initialization
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void initActions();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void initUIManager();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void initLayout();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void initEdit (SPDocument*);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void destroyEdit();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix // Actions
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onActionFileNew();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onActionFileOpen();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onActionFilePrint();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onActionFileQuit();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onToolbarItem();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onSelectTool();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onNodeTool();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix // Menus
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onMenuItem();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
620d9f76e90641a5a91f0c45fcb9a2f07b3881dbJohan Engelen void onDialogAbout();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogAlignAndDistribute();
99fae8b11f74e464ad0f55a7bfcc02933c4c1747johanengelen void onDialogInkscapePreferences();
99fae8b11f74e464ad0f55a7bfcc02933c4c1747johanengelen void onDialogDialog();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogDocumentProperties();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogExport();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogExtensionEditor();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogFillAndStroke();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogFind();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogLayerEditor();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogMessages();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogObjectProperties();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogTextProperties();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogTransform();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogTransformation();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogTrace();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogXmlEditor();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix // Whiteboard (Inkboard)
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#ifdef WITH_INKBOARD
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogWhiteboardConnect();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogWhiteboardShareWithUser();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogWhiteboardShareWithChat();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDialogOpenSessionFile();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onDumpXMLTracker();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix#endif
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void onUriChanged();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix // from EditWidgetInterface
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void *getWindow();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void setTitle (gchar const*);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void layout();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void present();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void getGeometry (gint &x, gint &y, gint &w, gint &h);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void setSize (gint w, gint h);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void setPosition (NR::Point p);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void setTransient (void*, int);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual NR::Point getPointer();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void setFullscreen();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual bool shutdown();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void destroy();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void requestCanvasUpdate();
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen virtual void requestCanvasUpdateAndWait();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void activateDesktop();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void deactivateDesktop();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void viewSetPosition (NR::Point p);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void updateRulers();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void updateScrollbars (double scale);
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen virtual void toggleRulers();
947fb2f89245c19c5bad9dbefb9fd44c2aaed2eccilix virtual void toggleScrollbars();
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen virtual void updateZoom();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void letZoomGrabFocus();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void setToolboxFocusTo (const gchar *);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void setToolboxAdjustmentValue (const gchar *, double);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual bool isToolboxButtonActive (gchar const*);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void setCoordinateStatus (NR::Point p);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix virtual void setMessage (Inkscape::MessageType type, gchar const* msg);
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen virtual bool warnDialog (gchar*);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilixprotected:
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void _namedview_modified(SPObject *namedview, guint);
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::Tooltips _tooltips;
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen
947fb2f89245c19c5bad9dbefb9fd44c2aaed2eccilix // Child widgets:
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen Gtk::Table _main_window_table;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::VBox _toolbars_vbox;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::HBox _sub_window_hbox;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::Table _viewport_table;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix UI::Widget::Toolbox *_tool_ctrl;
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen Gtk::Toolbar *_select_ctrl;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::Toolbar *_uri_ctrl;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::Label _uri_label;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::Entry _uri_entry;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::Toolbar *_node_ctrl;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix UI::Widget::HRuler _top_ruler;
5b20351508dc029f37f23fb7add6d0b43bf47f20johanengelen UI::Widget::VRuler _left_ruler;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::HScrollbar _bottom_scrollbar;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::VScrollbar _right_scrollbar;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::ToggleButton _sticky_zoom;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix UI::Widget::SVGCanvas _svg_canvas;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::HBox _statusbar;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix UI::Widget::SelectedStyle _selected_style_status;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix UI::Widget::ZoomStatus _zoom_status;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Inkscape::Widgets::LayerSelector _layer_selector;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::EventBox _coord_eventbox;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::Table _coord_status;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::Label _coord_status_x, _coord_status_y;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Gtk::Label _select_status;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix SPDesktop* _desktop;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix SPNamedView* _namedview;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix double _dt2r;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Glib::RefPtr<Gtk::ActionGroup> _act_grp;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix Glib::RefPtr<Gtk::UIManager> _ui_mgr;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix UI::Dialog::DialogManager _dlg_mgr;
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void initMenuActions();
b320a8d186114a5122ddc3afbe95110eb6cb10cecilix void initToolbarActions();
void initAccelMap();
void initMenuBar();
void initCommandsBar();
void initToolControlsBar();
void initUriBar();
void initToolsBar();
void initBottomScrollbar();
void initRightScrollbar();
void initLeftRuler();
void initTopRuler();
void initStickyZoom();
void initStatusbar();
virtual bool on_key_press_event (GdkEventKey*);
virtual bool on_delete_event (GdkEventAny*);
virtual bool on_focus_in_event (GdkEventFocus*);
private:
bool onEntryFocusIn (GdkEventFocus*);
bool onEntryFocusOut (GdkEventFocus*);
void onWindowSizeAllocate (Gtk::Allocation&);
void onWindowRealize();
void onAdjValueChanged();
bool _update_s_f, _update_a_f;
sigc::connection _namedview_modified_connection;
};
} // namespace View
} // namespace UI
} // namespace Inkscape
#endif // INKSCAPE_UI_VIEW_EDIT_WIDGET_H
/*
Local Variables:
mode:c++
c-file-style:"stroustrup"
c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
indent-tabs-mode:nil
fill-column:99
End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :