Code

Split SPCanvasItem and SPCanvasGroup to individual .h files. Removed forward header.
[inkscape.git] / src / ui / widget / ruler.cpp
index fbed6c84515835fa2eacf5efce3e6425c8be180c..1a6455ca0a37492dc36f7bc64721e3fb6c989bfd 100644 (file)
@@ -6,15 +6,17 @@
  * Authors:
  *   Ralf Stephan <ralf@ark.in-berlin.de>
  *   Lauris Kaplinski
+ *   Jon A. Cruz <jon@joncruz.org>
+ *   Abhishek Sharma
  *
  * Copyright (C) 2005 Ralf Stephan
  *
  * Released under GNU GPL, read the file 'COPYING' for more information
  */
 
-extern "C" {           // glib-2.4 needs this
-#include <libintl.h>
-}
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
 #include <glibmm/i18n.h>
 
@@ -24,11 +26,13 @@ extern "C" {           // glib-2.4 needs this
 #include "ui/widget/ruler.h"
 
 #include "xml/repr.h"
+#include "display/sp-canvas.h"
 #include "display/guideline.h"
 #include "desktop.h"
 #include "desktop-handles.h"
 #include "document.h"
 #include "sp-namedview.h"
+#include "verbs.h"
 
 namespace Inkscape {
 namespace UI {
@@ -83,13 +87,13 @@ Ruler::canvas_get_pointer(int &x, int &y)
     (void) _canvas_widget->get_window()->get_pointer(x, y, mask);
 }
 
-NR::Point
+Geom::Point
 Ruler::get_event_dt()
 {
     int wx, wy;
     canvas_get_pointer(wx, wy);
-    NR::Point const event_win(wx, wy);
-    NR::Point const event_w(sp_canvas_window_to_world(_dt->canvas, event_win));
+    Geom::Point const event_win(wx, wy);
+    Geom::Point const event_w(sp_canvas_window_to_world(_dt->canvas, event_win));
     return _dt->w2d(event_w);
 }
 
@@ -97,15 +101,14 @@ bool
 Ruler::on_button_press_event(GdkEventButton *evb)
 {
     g_assert(_dt);
-    NR::Point const &event_dt = get_event_dt();
+    Geom::Point const &event_dt = get_event_dt();
     Inkscape::XML::Node *repr = SP_OBJECT_REPR(_dt->namedview);
 
     if (evb->button == 1) {
         _dragging = true;
         sp_repr_set_boolean(repr, "showguides", TRUE);
         sp_repr_set_boolean(repr, "inkscape:guide-bbox", TRUE);
-        double const guide_pos_dt = event_dt[ _horiz_f ? NR::Y : NR::X ];
-        _guide = sp_guideline_new(_dt->guides, guide_pos_dt, !_horiz_f);
+        _guide = sp_guideline_new(_dt->guides, event_dt, _horiz_f ? Geom::Point(0.,1.) : Geom::Point(1.,0.));
         sp_guideline_set_color(SP_GUIDELINE(_guide), _dt->namedview->guidehicolor);
         (void) get_window()->pointer_grab(false,
                         Gdk::BUTTON_RELEASE_MASK |
@@ -120,11 +123,10 @@ bool
 Ruler::on_motion_notify_event(GdkEventMotion *)
 {
     g_assert(_dt);
-    NR::Point const &event_dt = get_event_dt();
+    Geom::Point const &event_dt = get_event_dt();
 
     if (_dragging) {
-        double const guide_pos_dt = event_dt[ _horiz_f ? NR::Y : NR::X ];
-        sp_guideline_set_position(SP_GUIDELINE(_guide), guide_pos_dt);
+        sp_guideline_set_position(SP_GUIDELINE(_guide), event_dt);
         _dt->set_coordinate_status(event_dt);
         _dt->setPosition(event_dt);
     }
@@ -137,7 +139,7 @@ Ruler::on_button_release_event(GdkEventButton *evb)
     g_assert(_dt);
     int wx, wy;
     canvas_get_pointer(wx, wy);
-    NR::Point const &event_dt = get_event_dt();
+    Geom::Point const &event_dt = get_event_dt();
 
     if (_dragging && evb->button == 1) {
         Gdk::Window::pointer_ungrab(evb->time);
@@ -146,13 +148,15 @@ Ruler::on_button_release_event(GdkEventButton *evb)
         _dragging = false;
 
         if ( (_horiz_f ? wy : wx ) >= 0 ) {
-            Inkscape::XML::Node *repr = sp_repr_new("sodipodi:guide");
+            Inkscape::XML::Document *xml_doc = _dt->doc()->getReprDoc();
+            Inkscape::XML::Node *repr = xml_doc->createElement("sodipodi:guide");
             repr->setAttribute("orientation", _horiz_f ? "horizontal" : "vertical");
-            double const guide_pos_dt = event_dt[ _horiz_f ? NR::Y : NR::X ];
+            double const guide_pos_dt = event_dt[ _horiz_f ? Geom::Y : Geom::X ];
             sp_repr_set_svg_double(repr, "position", guide_pos_dt);
             SP_OBJECT_REPR(_dt->namedview)->appendChild(repr);
             Inkscape::GC::release(repr);
-            sp_document_done(sp_desktop_document(_dt));
+            DocumentUndo::done(sp_desktop_document(_dt), SP_VERB_NONE, 
+                               /* TODO: annotate */ "ruler.cpp:157");
         }
         _dt->set_coordinate_status(event_dt);
     }
@@ -196,4 +200,4 @@ VRuler::~VRuler()
   fill-column:99
   End:
 */
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :