X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fwidgets%2Fdesktop-widget.h;h=1bb10fc51a77cdf6ace982595592e0440460a5df;hb=0dc33d4ce43e0bb49c63aa53b826ec4a1ff68e28;hp=0514dd39389a1207186adb109756e5b7aacfabec;hpb=b58f3eed4fef68c0394cd01627818247664640e9;p=inkscape.git diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h index 0514dd393..1bb10fc51 100644 --- a/src/widgets/desktop-widget.h +++ b/src/widgets/desktop-widget.h @@ -5,45 +5,52 @@ * SPDesktopWidget: handling Gtk events on a desktop. * * Authors: + * Jon A. Cruz (c) 2010 * John Bintz (c) 2006 * Ralf Stephan (c) 2005, distrib. under GPL2 + * Abhishek Sharma * ? -2004 */ #include #include -#include "display/display-forward.h" #include "libnr/nr-point.h" #include "forward.h" +#include "sp-object.h" #include "message.h" #include "ui/view/view-widget.h" #include "ui/view/edit-widget-interface.h" #include -#define SP_TYPE_DESKTOP_WIDGET (sp_desktop_widget_get_type ()) +// forward declaration +typedef struct _EgeColorProfTracker EgeColorProfTracker; +struct SPCanvas; + + +#define SP_TYPE_DESKTOP_WIDGET SPDesktopWidget::getType() #define SP_DESKTOP_WIDGET(o) (GTK_CHECK_CAST ((o), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidget)) #define SP_DESKTOP_WIDGET_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_DESKTOP_WIDGET, SPDesktopWidgetClass)) #define SP_IS_DESKTOP_WIDGET(o) (GTK_CHECK_TYPE ((o), SP_TYPE_DESKTOP_WIDGET)) #define SP_IS_DESKTOP_WIDGET_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_DESKTOP_WIDGET)) -GtkType sp_desktop_widget_get_type(); - void sp_desktop_widget_destroy (SPDesktopWidget* dtw); -gint sp_desktop_widget_set_focus(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw); - void sp_desktop_widget_show_decorations(SPDesktopWidget *dtw, gboolean show); +void sp_desktop_widget_iconify(SPDesktopWidget *dtw); +void sp_desktop_widget_maximize(SPDesktopWidget *dtw); void sp_desktop_widget_fullscreen(SPDesktopWidget *dtw); -void sp_desktop_widget_layout(SPDesktopWidget *dtw); void sp_desktop_widget_update_zoom(SPDesktopWidget *dtw); void sp_desktop_widget_update_rulers (SPDesktopWidget *dtw); +void sp_desktop_widget_update_hruler (SPDesktopWidget *dtw); +void sp_desktop_widget_update_vruler (SPDesktopWidget *dtw); /* Show/hide rulers & scrollbars */ void sp_desktop_widget_toggle_rulers (SPDesktopWidget *dtw); void sp_desktop_widget_toggle_scrollbars (SPDesktopWidget *dtw); void sp_desktop_widget_update_scrollbars (SPDesktopWidget *dtw, double scale); +void sp_desktop_widget_toggle_color_prof_adj( SPDesktopWidget *dtw ); void sp_dtw_desktop_activate (SPDesktopWidget *dtw); void sp_dtw_desktop_deactivate (SPDesktopWidget *dtw); @@ -52,6 +59,8 @@ namespace Inkscape { namespace Widgets { class LayerSelector; } } namespace Inkscape { namespace UI { namespace Widget { class SelectedStyle; } } } +namespace Inkscape { namespace UI { namespace Dialogs { class SwatchesPanel; } } } + /// A GtkEventBox on an SPDesktop. struct SPDesktopWidget { SPViewWidget viewwidget; @@ -64,24 +73,25 @@ struct SPDesktopWidget { SPDesktop *desktop; - GtkWindow *window; - + Gtk::Window *window; + // The root vbox of the window layout. GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *menubar, *statusbar; - GtkWidget *panels; + Inkscape::UI::Dialogs::SwatchesPanel *panels; GtkWidget *hscrollbar, *vscrollbar, *vscrollbar_box; - GtkWidget *tool_toolbox, *aux_toolbox, *commands_toolbox; - /* Rulers */ GtkWidget *hruler, *vruler; GtkWidget *hruler_box, *vruler_box; // eventboxes for setting tooltips GtkWidget *sticky_zoom; + GtkWidget *cms_adjust; GtkWidget *coord_status; GtkWidget *coord_status_x; GtkWidget *coord_status_y; @@ -90,20 +100,24 @@ struct SPDesktopWidget { GtkWidget *zoom_status; gulong zoom_update; + Inkscape::UI::Widget::Dock *dock; + Inkscape::UI::Widget::SelectedStyle *selected_style; gint coord_status_id, select_status_id; - + unsigned int _interaction_disabled_counter; SPCanvas *canvas; - NR::Point ruler_origin; + Geom::Point ruler_origin; double dt2r; GtkAdjustment *hadj, *vadj; Inkscape::Widgets::LayerSelector *layer_selector; + EgeColorProfTracker* _tracker; + struct WidgetStub : public Inkscape::UI::View::EditWidgetInterface { SPDesktopWidget *_dtw; SPDesktop *_dt; @@ -111,29 +125,40 @@ struct SPDesktopWidget { virtual void setTitle (gchar const *uri) { _dtw->updateTitle (uri); } - virtual void* getWindow() + virtual Gtk::Window* getWindow() { return _dtw->window; } - virtual void layout() - { sp_desktop_widget_layout (_dtw); } - virtual void present() + + virtual void layout() { + _dtw->layoutWidgets(); + } + + virtual void present() { _dtw->presentWindow(); } virtual void getGeometry (gint &x, gint &y, gint &w, gint &h) { _dtw->getWindowGeometry (x, y, w, h); } virtual void setSize (gint w, gint h) { _dtw->setWindowSize (w, h); } - virtual void setPosition (NR::Point p) + virtual void setPosition (Geom::Point p) { _dtw->setWindowPosition (p); } virtual void setTransient (void* p, int transient_policy) { _dtw->setWindowTransient (p, transient_policy); } - virtual NR::Point getPointer() + virtual Geom::Point getPointer() { return _dtw->window_get_pointer(); } + virtual void setIconified() + { sp_desktop_widget_iconify (_dtw); } + virtual void setMaximized() + { sp_desktop_widget_maximize (_dtw); } virtual void setFullscreen() { sp_desktop_widget_fullscreen (_dtw); } virtual bool shutdown() { return _dtw->shutdown(); } virtual void destroy() - { gtk_widget_destroy (static_cast((void*)(_dtw->window)));} - + { + if(_dtw->window != NULL) + delete _dtw->window; + _dtw->window = NULL; + } + virtual void requestCanvasUpdate() { _dtw->requestCanvasUpdate(); } virtual void requestCanvasUpdateAndWait() @@ -146,7 +171,7 @@ struct SPDesktopWidget { { sp_dtw_desktop_activate (_dtw); } virtual void deactivateDesktop() { sp_dtw_desktop_deactivate (_dtw); } - virtual void viewSetPosition (NR::Point p) + virtual void viewSetPosition (Geom::Point p) { _dtw->viewSetPosition (p); } virtual void updateRulers() { sp_desktop_widget_update_rulers (_dtw); } @@ -156,6 +181,8 @@ struct SPDesktopWidget { { sp_desktop_widget_toggle_rulers (_dtw); } virtual void toggleScrollbars() { sp_desktop_widget_toggle_scrollbars (_dtw); } + virtual void toggleColorProfAdjust() + { sp_desktop_widget_toggle_color_prof_adj(_dtw); } virtual void updateZoom() { sp_desktop_widget_update_zoom (_dtw); } virtual void letZoomGrabFocus() @@ -164,38 +191,64 @@ struct SPDesktopWidget { { _dtw->setToolboxFocusTo (id); } virtual void setToolboxAdjustmentValue (const gchar *id, double val) { _dtw->setToolboxAdjustmentValue (id, val); } + virtual void setToolboxSelectOneValue (gchar const *id, int val) + { _dtw->setToolboxSelectOneValue (id, val); } virtual bool isToolboxButtonActive (gchar const* id) { return _dtw->isToolboxButtonActive (id); } - virtual void setCoordinateStatus (NR::Point p) + virtual void setCoordinateStatus (Geom::Point p) { _dtw->setCoordinateStatus (p); } virtual void setMessage (Inkscape::MessageType type, gchar const* msg) { _dtw->setMessage (type, msg); } virtual bool warnDialog (gchar* text) { return _dtw->warnDialog (text); } + virtual Inkscape::UI::Widget::Dock* getDock () + { return _dtw->getDock(); } }; WidgetStub *stub; - + void setMessage(Inkscape::MessageType type, gchar const *message); - NR::Point window_get_pointer(); + Geom::Point window_get_pointer(); bool shutdown(); - void viewSetPosition (NR::Point p); + void viewSetPosition (Geom::Point p); void letZoomGrabFocus(); void getWindowGeometry (gint &x, gint &y, gint &w, gint &h); - void setWindowPosition (NR::Point p); + void setWindowPosition (Geom::Point p); void setWindowSize (gint w, gint h); void setWindowTransient (void *p, int transient_policy); void presentWindow(); bool warnDialog (gchar *text); void setToolboxFocusTo (gchar const *); void setToolboxAdjustmentValue (gchar const * id, double value); + void setToolboxSelectOneValue (gchar const * id, gint value); bool isToolboxButtonActive (gchar const *id); - void setCoordinateStatus(NR::Point p); + void setToolboxPosition(Glib::ustring const& id, GtkPositionType pos); + void setCoordinateStatus(Geom::Point p); void requestCanvasUpdate(); void requestCanvasUpdateAndWait(); void enableInteraction(); void disableInteraction(); void updateTitle(gchar const *uri); + bool onFocusInEvent(GdkEventFocus*); + + Inkscape::UI::Widget::Dock* getDock(); + + static GtkType getType(); + static SPDesktopWidget* createInstance(SPNamedView *namedview); + + void updateNamedview(); + +private: + GtkWidget *tool_toolbox; + GtkWidget *aux_toolbox; + GtkWidget *commands_toolbox,; + GtkWidget *snap_toolbox; + + static void init(SPDesktopWidget *widget); + void layoutWidgets(); + + void namedviewModified(SPObject *obj, guint flags); + }; /// The SPDesktopWidget vtable