Code

Filter effects dialog:
[inkscape.git] / src / desktop.h
index 5e0b1f3a80c69a65a21391e6a56a8a1fb8fe3a7f..4c255ecbbb140f9c935c43ec9afe5e423e7534ff 100644 (file)
@@ -9,7 +9,11 @@
  *   Frank Felfe <innerspace@iname.com>
  *   bulia byak <buliabyak@users.sf.net>
  *   Ralf Stephan <ralf@ark.in-berlin.de>
+ *   John Bintz <jcoswell@coswellproductions.org>
+ *   Johan Engelen <j.b.c.engelen@ewi.utwente.nl>
  *
+ * Copyright (C) 2007 Johan Engelen
+ * Copyright (C) 2006 John Bintz
  * Copyright (C) 1999-2005 authors
  * Copyright (C) 2000-2001 Ximian, Inc.
  *
@@ -31,6 +35,8 @@
 
 class NRRect;
 class SPCSSAttr;
+struct _GtkWidget;
+typedef struct _GtkWidget GtkWidget;
 struct SPCanvas;
 struct SPCanvasItem;
 struct SPCanvasGroup;
@@ -50,6 +56,7 @@ namespace Inkscape {
   class Selection; 
   class ObjectHierarchy;
   class LayerManager;
+  class EventLog;
   namespace UI { 
       namespace Dialog { 
           class DialogManager; 
@@ -74,10 +81,11 @@ struct SPDesktop : public Inkscape::UI::View::View
     Inkscape::Selection       *selection;
     SPEventContext            *event_context;
     Inkscape::LayerManager    *layer_manager;
+    Inkscape::EventLog        *event_log;
 
     SPCanvasItem  *acetate;
     SPCanvasGroup *main;
-    SPCanvasGroup *grid;
+    SPCanvasGroup *gridgroup;
     SPCanvasGroup *guides;
     SPCanvasItem  *drawing;
     SPCanvasGroup *sketch;
@@ -91,7 +99,9 @@ struct SPDesktop : public Inkscape::UI::View::View
     GList *zooms_future;
     unsigned int dkey;
     unsigned int number;
-    bool is_fullscreen;
+    guint window_state;
+    unsigned int interaction_disabled_counter;
+    bool waiting_cursor;
 
     /// \todo fixme: This has to be implemented in different way */
     guint guides_active : 1;
@@ -99,8 +109,10 @@ struct SPDesktop : public Inkscape::UI::View::View
     // storage for selected dragger used by GrDrag as it's 
     // created and deleted by tools
     SPItem *gr_item;
-    guint  gr_point_num;
+    guint  gr_point_type;
+    guint  gr_point_i;
     bool   gr_fill_or_stroke;   
+    
 
     Inkscape::ObjectHierarchy *_layer_hierarchy;
     gchar * _reconstruction_old_layer_id;
@@ -156,6 +168,9 @@ struct SPDesktop : public Inkscape::UI::View::View
 
     void setDisplayModeNormal();
     void setDisplayModeOutline();
+    void displayModeToggle();
+    int displayMode;
+    int getMode() const { return displayMode; }
 
     void set_active (bool new_active);
     SPObject *currentRoot() const;
@@ -202,18 +217,19 @@ struct SPDesktop : public Inkscape::UI::View::View
     void next_zoom();
 
     bool scroll_to_point (NR::Point const *s_dt, gdouble autoscrollspeed = 0);
-    void scroll_world (double dx, double dy);
-    void scroll_world (NR::Point const scroll)
+    void scroll_world (double dx, double dy, bool is_scrolling = false);
+    void scroll_world (NR::Point const scroll, bool is_scrolling = false)
     {
         using NR::X;
-       using NR::Y;
-       scroll_world(scroll[X], scroll[Y]);
+        using NR::Y;
+        scroll_world(scroll[X], scroll[Y], is_scrolling);
     }
 
     void getWindowGeometry (gint &x, gint &y, gint &w, gint &h);
     void setWindowPosition (NR::Point p);
     void setWindowSize (gint w, gint h);
     void setWindowTransient (void* p, int transient_policy=1);
+    void getToplevel( GtkWidget*& toplevel );
     void presentWindow();
     bool warnDialog (gchar *text);
     void toggleRulers();
@@ -226,12 +242,27 @@ struct SPDesktop : public Inkscape::UI::View::View
     void updateNow();
     void updateCanvasNow();
     
+    void enableInteraction();
+    void disableInteraction();
+
+    void setWaitingCursor();
+    void clearWaitingCursor();
+    
+    void toggleGrid();
+    bool gridsEnabled() { return grids_visible; }
+    
+    bool is_iconified();
+    bool is_maximized();
+    bool is_fullscreen();
+
+    void iconify();
+    void maximize();
     void fullscreen();
 
     void registerEditWidget (Inkscape::UI::View::EditWidgetInterface *widget)
     { _widget = widget; }
 
-    NR::Matrix w2d() const;
+    NR::Matrix w2d() const; //transformation from window to desktop coordinates (used for zooming)
     NR::Point w2d(NR::Point const &p) const;
     NR::Point d2w(NR::Point const &p) const;
     NR::Matrix doc2dt() const;
@@ -252,6 +283,8 @@ private:
     NR::Matrix _d2w;
     NR::Matrix _doc2dt;
     
+    bool grids_visible;
+    
     void push_current_zoom (GList**);
 
     sigc::signal<void,SPDesktop*,SPDocument*>     _document_replaced_signal;