Code

Menu item to toggle CMS adjustment on and off
[inkscape.git] / src / desktop.h
index 4c255ecbbb140f9c935c43ec9afe5e423e7534ff..4c9d1ece8cfcaed5ebdd4d0987ddce8f642ef4c4 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef __SP_DESKTOP_H__
-#define __SP_DESKTOP_H__
+#ifndef SEEN_SP_DESKTOP_H
+#define SEEN_SP_DESKTOP_H
 
 /** \file
  * SPDesktop: an editable view.
 #include "config.h"
 #endif
 
+#include <gdk/gdkevents.h>
 #include <gtk/gtktypeutils.h>
 #include <sigc++/sigc++.h>
+
 #include "libnr/nr-matrix.h"
 #include "libnr/nr-matrix-fns.h"
 #include "libnr/nr-rect.h"
@@ -48,18 +50,25 @@ struct SPObject;
 struct SPStyle;
 struct SPViewWidget;
 
+namespace Gtk
+{
+  class Window;
+}
+
 typedef int sp_verb_t;
 
-namespace Inkscape { 
+
+
+namespace Inkscape {
   class Application;
   class MessageContext;
-  class Selection; 
+  class Selection;
   class ObjectHierarchy;
   class LayerManager;
   class EventLog;
-  namespace UI { 
-      namespace Dialog { 
-          class DialogManager; 
+  namespace UI {
+      namespace Dialog {
+          class DialogManager;
       }
   }
   namespace Whiteboard {
@@ -106,13 +115,13 @@ struct SPDesktop : public Inkscape::UI::View::View
     /// \todo fixme: This has to be implemented in different way */
     guint guides_active : 1;
 
-    // storage for selected dragger used by GrDrag as it's 
+    // storage for selected dragger used by GrDrag as it's
     // created and deleted by tools
     SPItem *gr_item;
     guint  gr_point_type;
     guint  gr_point_i;
-    bool   gr_fill_or_stroke;   
-    
+    bool   gr_fill_or_stroke;
+
 
     Inkscape::ObjectHierarchy *_layer_hierarchy;
     gchar * _reconstruction_old_layer_id;
@@ -125,45 +134,45 @@ struct SPDesktop : public Inkscape::UI::View::View
     {
         return _document_replaced_signal.connect (slot);
     }
-    
-    sigc::connection connectEventContextChanged (const sigc::slot<void,SPDesktop*,SPEventContext*> & slot) 
+
+    sigc::connection connectEventContextChanged (const sigc::slot<void,SPDesktop*,SPEventContext*> & slot)
     {
         return _event_context_changed_signal.connect (slot);
     }
-    sigc::connection connectSetStyle (const sigc::slot<bool, const SPCSSAttr *> & slot) 
+    sigc::connection connectSetStyle (const sigc::slot<bool, const SPCSSAttr *> & slot)
     {
-       return _set_style_signal.connect (slot);
+        return _set_style_signal.connect (slot);
     }
-    sigc::connection connectQueryStyle (const sigc::slot<int, SPStyle *, int> & slot) 
+    sigc::connection connectQueryStyle (const sigc::slot<int, SPStyle *, int> & slot)
     {
-       return _query_style_signal.connect (slot);
+        return _query_style_signal.connect (slot);
     }
      // subselection is some sort of selection which is specific to the tool, such as a handle in gradient tool, or a text selection
     sigc::connection connectToolSubselectionChanged(const sigc::slot<void, gpointer> & slot) {
-       return _tool_subselection_changed.connect(slot);
+        return _tool_subselection_changed.connect(slot);
     }
-    void emitToolSubselectionChanged(gpointer data); 
+    void emitToolSubselectionChanged(gpointer data);
     sigc::connection connectCurrentLayerChanged(const sigc::slot<void, SPObject *> & slot) {
-       return _layer_changed_signal.connect(slot);
+        return _layer_changed_signal.connect(slot);
     }
-    
-       // Whiteboard changes
+
+    // Whiteboard changes
 
 #ifdef WITH_INKBOARD
-       Inkscape::Whiteboard::SessionManager* whiteboard_session_manager() {
-       return _whiteboard_session_manager;
-       }
+    Inkscape::Whiteboard::SessionManager* whiteboard_session_manager() {
+        return _whiteboard_session_manager;
+    }
 
-       Inkscape::Whiteboard::SessionManager* _whiteboard_session_manager;
+    Inkscape::Whiteboard::SessionManager* _whiteboard_session_manager;
 #endif
-   
+
     SPDesktop();
     void init (SPNamedView* nv, SPCanvas* canvas);
-    ~SPDesktop();
+    virtual ~SPDesktop();
     void destroy();
 
     Inkscape::MessageContext *guidesMessageContext() const {
-       return _guides_message_context;
+        return _guides_message_context;
     }
 
     void setDisplayModeNormal();
@@ -172,6 +181,8 @@ struct SPDesktop : public Inkscape::UI::View::View
     int displayMode;
     int getMode() const { return displayMode; }
 
+    Inkscape::UI::Widget::Dock* getDock() { return _widget->getDock(); }
+
     void set_active (bool new_active);
     SPObject *currentRoot() const;
     SPObject *currentLayer() const;
@@ -180,7 +191,7 @@ struct SPDesktop : public Inkscape::UI::View::View
     bool isLayer(SPObject *object) const;
     bool isWithinViewport(SPItem *item) const;
     bool itemIsHidden(SPItem const *item) const;
-    
+
     void activate_guides (bool activate);
     void change_document (SPDocument *document);
 
@@ -229,7 +240,7 @@ struct SPDesktop : public Inkscape::UI::View::View
     void setWindowPosition (NR::Point p);
     void setWindowSize (gint w, gint h);
     void setWindowTransient (void* p, int transient_policy=1);
-    void getToplevel( GtkWidget*& toplevel );
+    Gtk::Window* getToplevel();
     void presentWindow();
     bool warnDialog (gchar *text);
     void toggleRulers();
@@ -238,19 +249,23 @@ struct SPDesktop : public Inkscape::UI::View::View
     void destroyWidget();
     void setToolboxFocusTo (gchar const* label);
     void setToolboxAdjustmentValue (gchar const* id, double val);
+    void setToolboxSelectOneValue (gchar const* id, gint val);
     bool isToolboxButtonActive (gchar const *id);
     void updateNow();
     void updateCanvasNow();
-    
+
     void enableInteraction();
     void disableInteraction();
 
     void setWaitingCursor();
     void clearWaitingCursor();
-    
-    void toggleGrid();
+
+    void toggleColorProfAdjust();
+
+    void toggleGrids();
     bool gridsEnabled() { return grids_visible; }
-    
+    void showGrids(bool show, bool dirty_document = true);
+
     bool is_iconified();
     bool is_maximized();
     bool is_fullscreen();
@@ -274,6 +289,9 @@ struct SPDesktop : public Inkscape::UI::View::View
     virtual void mouseover() {}
     virtual void mouseout() {}
 
+    virtual bool onDeleteUI (GdkEventAny*);
+    virtual bool onWindowStateEvent (GdkEventWindowState* event);
+
 private:
     Inkscape::UI::View::EditWidgetInterface       *_widget;
     Inkscape::Application     *_inkscape;
@@ -282,9 +300,10 @@ private:
     NR::Matrix _w2d;
     NR::Matrix _d2w;
     NR::Matrix _doc2dt;
-    
-    bool grids_visible;
-    
+
+    bool grids_visible; /* don't set this variable directly, use the method below */
+    void set_grids_visible(bool visible);
+
     void push_current_zoom (GList**);
 
     sigc::signal<void,SPDesktop*,SPDocument*>     _document_replaced_signal;
@@ -292,7 +311,7 @@ private:
     sigc::signal<void>                 _deactivate_signal;
     sigc::signal<void,SPDesktop*,SPEventContext*> _event_context_changed_signal;
     sigc::signal<void, gpointer>       _tool_subselection_changed;
-  
+
     sigc::connection _activate_connection;
     sigc::connection _deactivate_connection;
     sigc::connection _sel_modified_connection;
@@ -301,7 +320,7 @@ private:
     sigc::connection _reconstruction_finish_connection;
     sigc::connection _commit_connection;
     sigc::connection _modified_connection;
-    
+
     virtual void onPositionSet (double, double);
     virtual void onResized (double, double);
     virtual void onRedrawRequested();
@@ -314,7 +333,7 @@ private:
     static void _onSelectionModified (Inkscape::Selection *selection, guint flags, SPDesktop *dt);
 };
 
-#endif
+#endif // SEEN_SP_DESKTOP_H
 
 /*
   Local Variables: