]> Shamusworld >> Repos - architektonas/commitdiff
Final round of dialogs/forms needing to be converted from Qt3 to 4
authorShamus Hammons <jlhamm@acm.org>
Mon, 14 Jun 2010 04:01:45 +0000 (04:01 +0000)
committerShamus Hammons <jlhamm@acm.org>
Mon, 14 Jun 2010 04:01:45 +0000 (04:01 +0000)
63 files changed:
architektonas.pro
src/base/rs.h
src/base/rs_math.cpp
src/base/rs_math.h
src/base/vector.cpp
src/base/vectorsolutions.cpp
src/forms/dimensionlabeleditor.cpp [new file with mode: 0644]
src/forms/dimensionlabeleditor.h [new file with mode: 0644]
src/forms/dimensionlabeleditor.ui [new file with mode: 0644]
src/forms/dlgarc.cpp [new file with mode: 0644]
src/forms/dlgarc.h [new file with mode: 0644]
src/forms/dlgarc.ui [new file with mode: 0644]
src/forms/dlgcircle.cpp [new file with mode: 0644]
src/forms/dlgcircle.h [new file with mode: 0644]
src/forms/dlgcircle.ui [new file with mode: 0644]
src/forms/dlgdimension.cpp [new file with mode: 0644]
src/forms/dlgdimension.h [new file with mode: 0644]
src/forms/dlgdimension.ui [new file with mode: 0644]
src/forms/dlgdimlinear.cpp [new file with mode: 0644]
src/forms/dlgdimlinear.h [new file with mode: 0644]
src/forms/dlgdimlinear.ui [new file with mode: 0644]
src/forms/dlgellipse.cpp [new file with mode: 0644]
src/forms/dlgellipse.h [new file with mode: 0644]
src/forms/dlgellipse.ui [new file with mode: 0644]
src/forms/dlghatch.cpp [new file with mode: 0644]
src/forms/dlghatch.h [new file with mode: 0644]
src/forms/dlghatch.ui [new file with mode: 0644]
src/forms/dlginsert.cpp [new file with mode: 0644]
src/forms/dlginsert.h [new file with mode: 0644]
src/forms/dlginsert.ui [new file with mode: 0644]
src/forms/dlgline.cpp [new file with mode: 0644]
src/forms/dlgline.h [new file with mode: 0644]
src/forms/dlgline.ui [new file with mode: 0644]
src/forms/dlgmirror.cpp [new file with mode: 0644]
src/forms/dlgmirror.h [new file with mode: 0644]
src/forms/dlgmirror.ui [new file with mode: 0644]
src/forms/dlgmove.cpp [new file with mode: 0644]
src/forms/dlgmove.h [new file with mode: 0644]
src/forms/dlgmove.ui [new file with mode: 0644]
src/forms/dlgmoverotate.cpp [new file with mode: 0644]
src/forms/dlgmoverotate.h [new file with mode: 0644]
src/forms/dlgmoverotate.ui [new file with mode: 0644]
src/forms/dlgpoint.cpp [new file with mode: 0644]
src/forms/dlgpoint.h [new file with mode: 0644]
src/forms/dlgpoint.ui [new file with mode: 0644]
src/forms/dlgrotate.cpp [new file with mode: 0644]
src/forms/dlgrotate.h [new file with mode: 0644]
src/forms/dlgrotate.ui [new file with mode: 0644]
src/forms/dlgrotate2.cpp [new file with mode: 0644]
src/forms/dlgrotate2.h [new file with mode: 0644]
src/forms/dlgrotate2.ui [new file with mode: 0644]
src/forms/dlgscale.cpp [new file with mode: 0644]
src/forms/dlgscale.h [new file with mode: 0644]
src/forms/dlgscale.ui [new file with mode: 0644]
src/forms/dlgspline.cpp [new file with mode: 0644]
src/forms/dlgspline.h [new file with mode: 0644]
src/forms/insertoptions.cpp [new file with mode: 0644]
src/forms/insertoptions.h [new file with mode: 0644]
src/forms/libraryinsertoptions.cpp [new file with mode: 0644]
src/forms/libraryinsertoptions.h [new file with mode: 0644]
src/forms/lineoptions.cpp
src/forms/lineoptions.h
src/widgets/qg_dialogfactory.cpp

index 3eaaef6733a2d1acfc6b966d0f8a3249fe517e15..0c03be41fef09f21c5ffefed8a909776e75c1921 100644 (file)
@@ -425,16 +425,35 @@ HEADERS += \
        src/forms/circleoptions.h \
        src/forms/commandwidget.h \
        src/forms/coordinatewidget.h \
+       src/forms/dimensionlabeleditor.h \
        src/forms/dimlinearoptions.h \
        src/forms/dimoptions.h \
+       src/forms/dlgarc.h \
        src/forms/dlgattributes.h \
+       src/forms/dlgcircle.h \
+       src/forms/dlgdimension.h \
+       src/forms/dlgdimlinear.h \
+       src/forms/dlgellipse.h \
+       src/forms/dlghatch.h \
        src/forms/dlgimageoptions.h \
        src/forms/dlginitial.h \
+       src/forms/dlginsert.h \
+       src/forms/dlgline.h \
+       src/forms/dlgmirror.h \
+       src/forms/dlgmove.h \
+       src/forms/dlgmoverotate.h \
        src/forms/dlgoptionsdrawing.h \
        src/forms/dlgoptionsgeneral.h \
+       src/forms/dlgpoint.h \
+       src/forms/dlgrotate.h \
+       src/forms/dlgrotate2.h \
+       src/forms/dlgscale.h \
+       src/forms/dlgspline.h \
        src/forms/dlgtext.h \
        src/forms/exitdialog.h \
        src/forms/imageoptions.h \
+       src/forms/insertoptions.h \
+       src/forms/libraryinsertoptions.h \
        src/forms/layerdialog.h \
        src/forms/librarywidget.h \
        src/forms/lineangleoptions.h \
@@ -497,16 +516,35 @@ SOURCES += \
        src/forms/circleoptions.cpp \
        src/forms/commandwidget.cpp \
        src/forms/coordinatewidget.cpp \
+       src/forms/dimensionlabeleditor.cpp \
        src/forms/dimlinearoptions.cpp \
        src/forms/dimoptions.cpp \
+       src/forms/dlgarc.cpp \
        src/forms/dlgattributes.cpp \
+       src/forms/dlgcircle.cpp \
+       src/forms/dlgdimension.cpp \
+       src/forms/dlgdimlinear.cpp \
+       src/forms/dlgellipse.cpp \
+       src/forms/dlghatch.cpp \
        src/forms/dlgimageoptions.cpp \
        src/forms/dlginitial.cpp \
+       src/forms/dlginsert.cpp \
+       src/forms/dlgline.cpp \
+       src/forms/dlgmirror.cpp \
+       src/forms/dlgmove.cpp \
+       src/forms/dlgmoverotate.cpp \
        src/forms/dlgoptionsdrawing.cpp \
        src/forms/dlgoptionsgeneral.cpp \
+       src/forms/dlgpoint.cpp \
+       src/forms/dlgrotate.cpp \
+       src/forms/dlgrotate2.cpp \
+       src/forms/dlgscale.cpp \
+       src/forms/dlgspline.cpp \
        src/forms/dlgtext.cpp \
        src/forms/exitdialog.cpp \
        src/forms/imageoptions.cpp \
+       src/forms/insertoptions.cpp \
+       src/forms/libraryinsertoptions.cpp \
        src/forms/layerdialog.cpp \
        src/forms/librarywidget.cpp \
        src/forms/lineangleoptions.cpp \
@@ -545,45 +583,6 @@ SOURCES += \
        src/widgets/qg_scrollbar.cpp \
        src/widgets/qg_widthbox.cpp
 
-#The following line was changed from FORMS to FORMS3 by qt3to4
-#FORMS3 = \
-#      ui/qg_dimensionlabeleditor.ui \
-#      ui/qg_dlghatch.ui \
-#      ui/qg_dlginsert.ui \
-#      ui/qg_dlgarc.ui \
-#      ui/qg_dlgcircle.ui \
-#      ui/qg_dlgdimension.ui \
-#      ui/qg_dlgdimlinear.ui \
-#      ui/qg_dlgline.ui \
-#      ui/qg_dlgellipse.ui \
-#      ui/qg_dlgmirror.ui \
-#      ui/qg_dlgmove.ui \
-#      ui/qg_dlgmoverotate.ui \
-#      ui/qg_dlgpoint.ui \
-#      ui/qg_dlgrotate.ui \
-#      ui/qg_dlgrotate2.ui \
-#      ui/qg_dlgscale.ui \
-#      ui/qg_dlgspline.ui \
-#      ui/qg_insertoptions.ui \
-#      ui/qg_libraryinsertoptions.ui \
-
-#      src/forms/lineangleoptions.ui \
-#      src/forms/linebisectoroptions.ui \
-#      src/forms/lineparalleloptions.ui \
-#      src/forms/lineparallelthroughoptions.ui \
-#      src/forms/linepolygon2options.ui \
-#      src/forms/linepolygonoptions.ui \
-#      src/forms/linerelangleoptions.ui \
-#      src/forms/moverotateoptions.ui \
-#      src/forms/arcoptions.ui \
-#      src/forms/arctangentialoptions.ui \
-#      src/forms/dimlinearoptions.ui \
-#      src/forms/dimoptions.ui \
-#      src/forms/roundoptions.ui \
-#      src/forms/snapdistoptions.ui \
-#      src/forms/splineoptions.ui \
-#      src/forms/trimamountoptions.ui
-#
 FORMS = \
        src/forms/blockdialog.ui \
        src/forms/cadtoolbar.ui \
@@ -602,17 +601,33 @@ FORMS = \
        src/forms/cadtoolbarsplines.ui \
        src/forms/commandwidget.ui \
        src/forms/coordinatewidget.ui \
+       src/forms/dimensionlabeleditor.ui \
+       src/forms/dlgarc.ui \
        src/forms/dlgattributes.ui \
+       src/forms/dlgcircle.ui \
+       src/forms/dlgdimension.ui \
+       src/forms/dlgdimlinear.ui \
+       src/forms/dlgellipse.ui \
+       src/forms/dlghatch.ui \
        src/forms/dlgimageoptions.ui \
        src/forms/dlginitial.ui \
+       src/forms/dlginsert.ui \
+       src/forms/dlgline.ui \
+       src/forms/dlgmirror.ui \
+       src/forms/dlgmove.ui \
+       src/forms/dlgmoverotate.ui \
        src/forms/dlgoptionsdrawing.ui \
        src/forms/dlgoptionsgeneral.ui \
+       src/forms/dlgpoint.ui \
+       src/forms/dlgrotate.ui \
+       src/forms/dlgrotate2.ui \
+       src/forms/dlgscale.ui \
+       src/forms/dlgspline.ui \
        src/forms/dlgtext.ui \
        src/forms/exitdialog.ui \
        src/forms/imageoptions.ui \
        src/forms/layerdialog.ui \
        src/forms/librarywidget.ui \
-       src/forms/lineoptions.ui \
        src/forms/mousewidget.ui \
        src/forms/printpreviewoptions.ui \
        src/forms/selectionwidget.ui \
index 9ba69d97fe433222d14ad33c4abfd78a9fa8f890..6d7424af77e0df9d4563121fda643c66b3a748b4 100644 (file)
@@ -568,7 +568,6 @@ Qt::AltButton               Qt::AltModifier
 Qt::MetaButton         Qt::MetaModifier
 Qt::Keypad                     Qt::KeypadModifier
 Qt::KeyButtonMask      Qt::KeyboardModifierMask
-#endif
        /**
         * Mouse button and keyboard state for mouse events.
         */
@@ -585,6 +584,7 @@ Qt::KeyButtonMask   Qt::KeyboardModifierMask
                KeyButtonMask   = Qt::KeyboardModifierMask,
                Keypad          = Qt::KeypadModifier
        };
+#endif
 
 //get rid of unnecessary shiaut like this:
 #if 0
@@ -693,8 +693,10 @@ Qt::KeyButtonMask  Qt::KeyboardModifierMask
     /**
      * Wrapper for Qt.
      */
-    static RS2::LineType qtToRsPenStyle(Qt::PenStyle s) {
-        switch (s) {
+    static RS2::LineType qtToRsPenStyle(Qt::PenStyle s)
+    {
+        switch (s)
+               {
         case Qt::NoPen:
             return NoPen;
         case Qt::SolidLine:
@@ -716,14 +718,16 @@ Qt::KeyButtonMask Qt::KeyboardModifierMask
             return SolidLine;
             break;
         }
-        return SolidLine;
+
+               return SolidLine;
     }
 
     /**
      * \brief Struct that stores a line type pattern (e.g. dash dot dot).
      */
-    struct LineTypePatternStruct {
-        double* pattern;
+    struct LineTypePatternStruct
+    {
+        double * pattern;
         int num;
     }
     LineTypePattern;
@@ -764,128 +768,114 @@ Qt::KeyButtonMask       Qt::KeyboardModifierMask
     /**
      * Wrapper for Qt
      */
-    /*
-       static int qw(RS2::LineWidth w) {
-           switch (w) {
-           case Width00:
-               return 1;  // 0 is more accurate but quite slow
-               break;
-           case WidthByLayer:
-           case WidthByBlock:
-           case WidthDefault:
-               return 1;
-               break;
-           case Width01:
-           case Width02:
-           case Width03:
-           case Width04:
-           case Width05:
-           case Width06:
-           case Width07:
-           case Width08:
-               return 1;
-               break;
-           case Width09:
-           case Width10:
-               return 3;
-               break;
-           case Width11:
-               return 4;
-               break;
-           case Width12:
-           case Width13:
-               return 5;
-               break;
-           case Width14:
-               return 6;
-               break;
-           case Width15:
-               return 7;
-               break;
-           case Width16:
-               return 8;
-               break;
-           case Width17:
-               return 9;
-               break;
-           case Width18:
-           case Width19:
-               return 10;
-               break;
-           case Width20:
-               return 12;
-               break;
-           case Width21:
-           case Width22:
-           case Width23:
-           //case Width24:
-               return 14;
-               break;
-           default:
-               return (int)w;
-               break;
-           }
-           return (int)w;
-       }
-    */
-
-    /**
-     * Wrapper for Qt
-     */
-    static LineWidth intToLineWidth(int w) {
-               if (w==-3) {
+    static LineWidth intToLineWidth(int w)
+    {
+               if (w == -3)
+               {
                        return WidthDefault;
-               } else if (w==-2) {
+               }
+               else if (w == -2)
+               {
                        return WidthByBlock;
-               } else if (w==-1) {
+               }
+               else if (w == -1)
+               {
                        return WidthByLayer;
-               } else if (w<3) {
+               }
+               else if (w < 3)
+               {
                        return Width00;
-               } else if (w<8) {
+               }
+               else if (w < 8)
+               {
                        return Width01;
-               } else if (w<12) {
+               }
+               else if (w < 12)
+               {
                        return Width02;
-               } else if (w<14) {
+               }
+               else if (w < 14)
+               {
                        return Width03;
-               } else if (w<17) {
+               }
+               else if (w < 17)
+               {
                        return Width04;
-               } else if (w<19) {
+               }
+               else if (w < 19)
+               {
                        return Width05;
-               } else if (w<23) {
+               }
+               else if (w < 23)
+               {
                        return Width06;
-               } else if (w<28) {
+               }
+               else if (w < 28)
+               {
                        return Width07;
-               } else if (w<33) {
+               }
+               else if (w < 33)
+               {
                        return Width08;
-               } else if (w<38) {
+               }
+               else if (w < 38)
+               {
                        return Width09;
-               } else if (w<46) {
+               }
+               else if (w < 46)
+               {
                        return Width10;
-               } else if (w<52) {
+               }
+               else if (w < 52)
+               {
                        return Width11;
-               } else if (w<57) {
+               }
+               else if (w < 57)
+               {
                        return Width12;
-               } else if (w<66) {
+               }
+               else if (w < 66)
+               {
                        return Width13;
-               } else if (w<76) {
+               }
+               else if (w < 76)
+               {
                        return Width14;
-               } else if (w<86) {
+               }
+               else if (w < 86)
+               {
                        return Width15;
-               } else if (w<96) {
+               }
+               else if (w < 96)
+               {
                        return Width16;
-               } else if (w<104) {
+               }
+               else if (w < 104)
+               {
                        return Width17;
-               } else if (w<114) {
+               }
+               else if (w < 114)
+               {
                        return Width18;
-               } else if (w<131) {
+               }
+               else if (w < 131)
+               {
                        return Width19;
-               } else if (w<150) {
+               }
+               else if (w < 150)
+               {
                        return Width20;
-               } else if (w<180) {
+               }
+               else if (w < 180)
+               {
                        return Width21;
-               } else if (w<206) {
+               }
+               else if (w < 206)
+               {
                        return Width22;
-               } else {
+               }
+               else
+               {
                        return Width23;
                }
     }
@@ -920,8 +910,10 @@ Qt::KeyButtonMask  Qt::KeyboardModifierMask
     /**
      * Wrapper for Qt.
      */
-    static Qt::CursorShape rsToQtCursorType(RS2::CursorType t) {
-        switch (t) {
+    static Qt::CursorShape rsToQtCursorType(RS2::CursorType t)
+    {
+        switch (t)
+               {
         case ArrowCursor:
             return Qt::ArrowCursor;
             break;
@@ -974,7 +966,8 @@ Qt::KeyButtonMask   Qt::KeyboardModifierMask
             return Qt::ArrowCursor;
             break;
         }
-        return Qt::ArrowCursor;
+
+               return Qt::ArrowCursor;
     }
 
     /**
@@ -1018,10 +1011,12 @@ Qt::KeyButtonMask       Qt::KeyboardModifierMask
     /**
      * Wrapper for Qt.
      */
-    static QPrinter::PageSize rsToQtPaperFormat(RS2::PaperFormat f) {
+    static QPrinter::PageSize rsToQtPaperFormat(RS2::PaperFormat f)
+    {
                QPrinter::PageSize ret;
 
-               switch (f) {
+               switch (f)
+               {
         case Custom:
                        ret = QPrinter::Custom;
                        break;
index 6bad02f3c0a999b56763c28d3d07a1e4778e1f75..fe3ba33676475f62a94abf84516308f8636d818d 100644 (file)
 
 #include "rs_math.h"
 
+#include <assert.h>                                                            // For test()
+#include <math.h>
+#include <errno.h>
+#include "fparser.h"
 #include "rs_debug.h"
 
 /**
@@ -245,19 +249,12 @@ double RS_Math::eval(const QString & expr, double def)
        return res;
 }
 
-/**
- * Evaluates a mathematical expression and returns the result.
- * If an error occured, ok will be set to false (if ok isn't NULL).
- */
-//double RS_Math::eval(const QString& expr, bool* ok);
-
 /**
  * Evaluates a mathematical expression and returns the result.
  * If an error occured, ok will be set to false (if ok isn't NULL).
  */
 double RS_Math::eval(const QString & expr, bool * ok)
 {
-#ifndef RS_NO_FPARSER
        if (expr.isEmpty())
        {
                if (ok != NULL)
@@ -297,20 +294,16 @@ double RS_Math::eval(const QString & expr, bool * ok)
 
        if (ret >= 0)
        {
-               if (ok != NULL)
+               if (ok)
                        *ok = false;
 
                return 0.0;
        }
 
-       if (ok != NULL)
+       if (ok)
                *ok = true;
 
        return fp.Eval(NULL);
-#else
-       //std::cerr << "RS_Math::eval: No FParser support compiled in.\n";
-       return expr.toDouble();
-#endif
 }
 
 /**
@@ -364,14 +357,10 @@ QString RS_Math::doubleToString(double value, int prec)
        {
                // Remove zeros at the end:
                while (valStr.at(valStr.length() - 1) == '0')
-               {
                        valStr.truncate(valStr.length() - 1);
-               }
 
                if (valStr.at(valStr.length() - 1) == '.')
-               {
                        valStr.truncate(valStr.length() - 1);
-               }
        }
 
        return valStr;
index b225d691ab8e381ba7f8d507073e43e50dabcd08..4f8f87483ce2f47d39c5fe2bd1ce1e4dc444407d 100644 (file)
@@ -7,22 +7,12 @@
 //#define _MT
 //#endif
 
-#include <math.h>
-#include <errno.h>
 #include <QtCore>
 
-#ifndef RS_NO_FPARSER
-#include "fparser.h"
-#endif
-
-#include "rs.h"
-
 #define ARAD                           57.29577951308232
 #define RS_TOLERANCE           1.0e-10
 #define RS_TOLERANCE_ANGLE     1.0e-8
 
-//typedef unsigned int uint;
-
 /**
  * Math functions.
  */
@@ -31,9 +21,6 @@ class RS_Math
 public:
        static int round(double v);
        static double pow(double x, double y);
-
-       //static double abs(double v);
-       //static int abs(int v);
        static double rad2deg(double a);
        static double deg2rad(double a);
        static double rad2gra(double a);
@@ -46,11 +33,7 @@ public:
        static bool isSameDirection(double dir1, double dir2, double tol);
        static double eval(const QString & expr, double def = 0.0);
        static bool cmpDouble(double v1, double v2, double tol = 0.001);
-
-       // Keep that in the header file for dynamic inclusion/exclusion.
-       // (JLH: What kind of boneheaded crappy justification is that??!!??!!?)
        static double eval(const QString & expr, bool * ok);
-
        static QString doubleToString(double value, double prec);
        static QString doubleToString(double value, int prec);
 
index a9213b6cf6c38833e7db492580cb2fd57018c09c..c8e4dd1c01a73172652eb6a0ac0c9282e1440660 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "vector.h"
 
+#include "rs.h"                                                                        // For RS_MIN/MAXDOUBLE (!)
 #include "rs_debug.h"
 #include "rs_math.h"
 
index b640005d61f4576fc6a17659e2b4e3b5e9bf7d3f..29601e35b7e14120c31e9d183b87ceb6bed4ec22 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "vectorsolutions.h"
 
+#include "rs.h"                                                                        // For RS_MIN/MAXDOUBLE (!)
 #include "rs_math.h"
 
 /**
diff --git a/src/forms/dimensionlabeleditor.cpp b/src/forms/dimensionlabeleditor.cpp
new file mode 100644 (file)
index 0000000..15724c1
--- /dev/null
@@ -0,0 +1,92 @@
+// dimensionlabeleditor.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dimensionlabeleditor.h"
+
+//#include "rs_arc.h"
+//#include "drawing.h"
+//#include "rs_math.h"
+
+DimensionLabelEditor::DimensionLabelEditor(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QWidget(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DimensionLabelEditor::~DimensionLabelEditor()
+{
+}
+
+void DimensionLabelEditor::setLabel(const QString & l)
+{
+       int i0, i1a, i1b, i2;
+       QString label, tol1, tol2;
+       bool hasDiameter = false;
+
+       label = l;
+
+       if (label.at(0) == QChar(0x2205) || label.at(0) == QChar(0xF8))
+       {
+               hasDiameter = true;
+               ui.bDiameter->setChecked(true);
+       }
+
+       i0 = l.indexOf("\\S");
+
+       if (i0 >= 0)
+       {
+               i1a = l.indexOf("^ ", i0);
+               i1b = i1a + 1;
+
+               if (i1a < 0)
+                       i1a = i1b = l.indexOf('^', i0);
+
+
+               if (i1a >= 0)
+               {
+                       i2 = l.indexOf(';', i1b);
+                       label = l.mid(0, i0);
+                       tol1 = l.mid(i0 + 2, i1a - i0 - 2);
+                       tol2 = l.mid(i1b + 1, i2 - i1b - 1);
+               }
+       }
+
+       ui.leLabel->setText(label.mid(hasDiameter));
+       ui.leTol1->setText(tol1);
+       ui.leTol2->setText(tol2);
+}
+
+QString DimensionLabelEditor::getLabel()
+{
+       QString l = ui.leLabel->text();
+
+       // diameter:
+       if (ui.bDiameter->isChecked())
+       {
+               if (l.isEmpty())
+                       l = QString("%1<>").arg(QChar(0x2205));
+               else
+                       l = QChar(0x2205) + l;
+       }
+
+       if (ui.leTol1->text().isEmpty() && ui.leTol2->text().isEmpty())
+               return l;
+       else
+               return l + "\\S" + ui.leTol1->text() + "^ " + ui.leTol2->text() + ";";
+}
+
+void DimensionLabelEditor::insertSign(const QString & s)
+{
+       ui.leLabel->insert(s.left(1));
+}
diff --git a/src/forms/dimensionlabeleditor.h b/src/forms/dimensionlabeleditor.h
new file mode 100644 (file)
index 0000000..423ac42
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef __DIMENSIONLABELEDITOR_H__
+#define __DIMENSIONLABELEDITOR_H__
+
+#include "ui_dimensionlabeleditor.h"
+
+class DimensionLabelEditor: public QWidget
+{
+       Q_OBJECT
+
+       public:
+               DimensionLabelEditor(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DimensionLabelEditor();
+
+               QString getLabel();
+
+       public slots:
+               void setLabel(const QString & l);
+               void insertSign(const QString & s);
+
+       private:
+               Ui::DimensionLabelEditor ui;
+};
+
+#endif // __DIMENSIONLABELEDITOR_H__
diff --git a/src/forms/dimensionlabeleditor.ui b/src/forms/dimensionlabeleditor.ui
new file mode 100644 (file)
index 0000000..d03d623
--- /dev/null
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DimensionLabelEditor</class>
+ <widget class="QWidget" name="DimensionLabelEditor">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>220</width>
+    <height>118</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>220</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Dimension Label Editor</string>
+  </property>
+  <layout class="QVBoxLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="margin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="bgLabel">
+     <property name="title">
+      <string>Dimension Label:</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <item>
+       <layout class="QHBoxLayout">
+        <item>
+         <layout class="QHBoxLayout">
+          <item>
+           <widget class="QLabel" name="lLabel">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="frameShape">
+             <enum>QFrame::NoFrame</enum>
+            </property>
+            <property name="frameShadow">
+             <enum>QFrame::Plain</enum>
+            </property>
+            <property name="text">
+             <string>Label:</string>
+            </property>
+            <property name="wordWrap">
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QToolButton" name="bDiameter">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+            <property name="icon">
+             <iconset resource="res/architektonas.qrc">
+              <normaloff>:/res/qg_dimdia.xpm</normaloff>:/res/qg_dimdia.xpm</iconset>
+            </property>
+            <property name="checkable">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="leLabel">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QVBoxLayout">
+          <property name="spacing">
+           <number>0</number>
+          </property>
+          <property name="margin">
+           <number>0</number>
+          </property>
+          <item>
+           <widget class="QLineEdit" name="leTol1">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="leTol2">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QHBoxLayout">
+        <item>
+         <widget class="QLabel" name="textLabel1">
+          <property name="text">
+           <string>Insert:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="cbSymbol">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <item>
+           <property name="text">
+            <string>ø (Diameter)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>° (Degree)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>± (Plus / Minus)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>¶ (Pi)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>× (Times)</string>
+           </property>
+          </item>
+          <item>
+           <property name="text">
+            <string>÷ (Division)</string>
+           </property>
+          </item>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+  <include location="res/architektonas.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>cbSymbol</sender>
+   <signal>activated(QString)</signal>
+   <receiver>DimensionLabelEditor</receiver>
+   <slot>insertSign(QString)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgarc.cpp b/src/forms/dlgarc.cpp
new file mode 100644 (file)
index 0000000..b79bbae
--- /dev/null
@@ -0,0 +1,72 @@
+// dlgarc.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlgarc.h"
+
+#include "rs_arc.h"
+#include "drawing.h"
+#include "rs_math.h"
+
+DlgArc::DlgArc(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DlgArc::~DlgArc()
+{
+}
+
+void DlgArc::setArc(RS_Arc & a)
+{
+       arc = &a;
+       //pen = arc->getPen();
+       ui.wPen->setPen(arc->getPen(false), true, false, "Pen");
+       Drawing * graphic = arc->getGraphic();
+
+       if (graphic != NULL)
+               ui.cbLayer->init(*(graphic->getLayerList()), false, false);
+
+       RS_Layer * lay = arc->getLayer(false);
+
+       if (lay != NULL)
+               ui.cbLayer->setLayer(*lay);
+
+       QString s;
+       s.setNum(arc->getCenter().x);
+       ui.leCenterX->setText(s);
+       s.setNum(arc->getCenter().y);
+       ui.leCenterY->setText(s);
+       s.setNum(arc->getRadius());
+       ui.leRadius->setText(s);
+       s.setNum(RS_Math::rad2deg(arc->getAngle1()));
+       ui.leAngle1->setText(s);
+       s.setNum(RS_Math::rad2deg(arc->getAngle2()));
+       ui.leAngle2->setText(s);
+       ui.cbReversed->setChecked(arc->isReversed());
+}
+
+void DlgArc::updateArc()
+{
+       arc->setCenter(Vector(RS_Math::eval(ui.leCenterX->text()),
+               RS_Math::eval(ui.leCenterY->text())));
+       arc->setRadius(RS_Math::eval(ui.leRadius->text()));
+       arc->setAngle1(RS_Math::deg2rad(RS_Math::eval(ui.leAngle1->text())));
+       arc->setAngle2(RS_Math::deg2rad(RS_Math::eval(ui.leAngle2->text())));
+       arc->setReversed(ui.cbReversed->isChecked());
+       arc->setPen(ui.wPen->getPen());
+       arc->setLayer(ui.cbLayer->currentText());
+       arc->calculateEndpoints();
+       arc->calculateBorders();
+}
diff --git a/src/forms/dlgarc.h b/src/forms/dlgarc.h
new file mode 100644 (file)
index 0000000..adfa018
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __DLGARC_H__
+#define __DLGARC_H__
+
+#include "ui_dlgarc.h"
+
+class RS_Arc;
+
+class DlgArc: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgArc(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgArc();
+
+       public slots:
+               void setArc(RS_Arc & a);
+               void updateArc();
+
+       private:
+               RS_Arc * arc;
+
+       private:
+               Ui::DlgArc ui;
+};
+
+#endif // __DLGARC_H__
diff --git a/src/forms/dlgarc.ui b/src/forms/dlgarc.ui
new file mode 100644 (file)
index 0000000..f3d0928
--- /dev/null
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgArc</class>
+ <widget class="QDialog" name="DlgArc">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>380</width>
+    <height>251</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Arc</string>
+  </property>
+  <layout class="QVBoxLayout">
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <layout class="QVBoxLayout">
+       <item>
+        <layout class="QHBoxLayout">
+         <item>
+          <widget class="QLabel" name="lLayer">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>Layer:</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QG_LayerBox" name="cbLayer" native="true"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="WidgetPen" name="wPen" native="true">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="buttonGroup8">
+       <property name="title">
+        <string>Geometry</string>
+       </property>
+       <layout class="QGridLayout">
+        <item row="2" column="0">
+         <widget class="QLabel" name="lEndX">
+          <property name="text">
+           <string>Radius:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="1">
+         <widget class="QLineEdit" name="leRadius">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="lCenterY">
+          <property name="text">
+           <string>Center (y):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QLineEdit" name="leCenterY">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0">
+         <widget class="QLabel" name="lCenterX">
+          <property name="text">
+           <string>Center (x):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="QLineEdit" name="leCenterX">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="0">
+         <widget class="QLabel" name="lAngle1">
+          <property name="text">
+           <string>Start Angle:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1">
+         <widget class="QLineEdit" name="leAngle1">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="1">
+         <widget class="QLineEdit" name="leAngle2">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="0">
+         <widget class="QLabel" name="lAngle2">
+          <property name="text">
+           <string>End Angle:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="6" column="0">
+         <spacer name="spacer58">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="6" column="1">
+         <spacer name="spacer61">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="5" column="0" colspan="2">
+         <widget class="QCheckBox" name="cbReversed">
+          <property name="text">
+           <string>Reversed</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+O</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>QG_LayerBox</class>
+   <extends>QWidget</extends>
+   <header>qg_layerbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>WidgetPen</class>
+   <extends>QWidget</extends>
+   <header>widgetpen.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>leCenterX</tabstop>
+  <tabstop>leCenterY</tabstop>
+  <tabstop>leRadius</tabstop>
+  <tabstop>leAngle1</tabstop>
+  <tabstop>leAngle2</tabstop>
+  <tabstop>cbReversed</tabstop>
+  <tabstop>bOk</tabstop>
+  <tabstop>bCancel</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgArc</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgArc</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgcircle.cpp b/src/forms/dlgcircle.cpp
new file mode 100644 (file)
index 0000000..72fc3fc
--- /dev/null
@@ -0,0 +1,63 @@
+// dlgcircle.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlgcircle.h"
+
+#include "rs_circle.h"
+#include "drawing.h"
+#include "rs_math.h"
+
+DlgCircle::DlgCircle(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DlgCircle::~DlgCircle()
+{
+}
+
+void DlgCircle::setCircle(RS_Circle & c)
+{
+       circle = &c;
+       //pen = circle->getPen();
+       ui.wPen->setPen(circle->getPen(false), true, false, "Pen");
+       Drawing * graphic = circle->getGraphic();
+
+       if (graphic != NULL)
+               ui.cbLayer->init(*(graphic->getLayerList()), false, false);
+
+       RS_Layer * lay = circle->getLayer(false);
+
+       if (lay != NULL)
+               ui.cbLayer->setLayer(*lay);
+
+       QString s;
+       s.setNum(circle->getCenter().x);
+       ui.leCenterX->setText(s);
+       s.setNum(circle->getCenter().y);
+       ui.leCenterY->setText(s);
+       s.setNum(circle->getRadius());
+       ui.leRadius->setText(s);
+}
+
+void DlgCircle::updateCircle()
+{
+       circle->setCenter(Vector(RS_Math::eval(ui.leCenterX->text()),
+               RS_Math::eval(ui.leCenterY->text())));
+       circle->setRadius(RS_Math::eval(ui.leRadius->text()));
+       circle->setPen(ui.wPen->getPen());
+       circle->setLayer(ui.cbLayer->currentText());
+       circle->calculateBorders();
+}
diff --git a/src/forms/dlgcircle.h b/src/forms/dlgcircle.h
new file mode 100644 (file)
index 0000000..f722991
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __DLGCIRCLE_H__
+#define __DLGCIRCLE_H__
+
+#include "ui_dlgcircle.h"
+
+class RS_Circle;
+
+class DlgCircle: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgCircle(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgCircle();
+
+       public slots:
+               void setCircle(RS_Circle & c);
+               void updateCircle();
+
+       private:
+               RS_Circle * circle;
+
+       private:
+               Ui::DlgCircle ui;
+};
+
+#endif // __DLGCIRCLE_H__
diff --git a/src/forms/dlgcircle.ui b/src/forms/dlgcircle.ui
new file mode 100644 (file)
index 0000000..7e4d626
--- /dev/null
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgCircle</class>
+ <widget class="QDialog" name="DlgCircle">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>380</width>
+    <height>192</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Circle</string>
+  </property>
+  <layout class="QVBoxLayout">
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <layout class="QVBoxLayout">
+       <item>
+        <layout class="QHBoxLayout">
+         <item>
+          <widget class="QLabel" name="lLayer">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>Layer:</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QG_LayerBox" name="cbLayer" native="true"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="WidgetPen" name="wPen" native="true">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="buttonGroup8">
+       <property name="title">
+        <string>Geometry</string>
+       </property>
+       <layout class="QGridLayout">
+        <item row="2" column="0">
+         <widget class="QLabel" name="lEndX">
+          <property name="text">
+           <string>Radius:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="1">
+         <widget class="QLineEdit" name="leRadius">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="lCenterY">
+          <property name="text">
+           <string>Center (y):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QLineEdit" name="leCenterY">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0">
+         <widget class="QLabel" name="lCenterX">
+          <property name="text">
+           <string>Center (x):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="QLineEdit" name="leCenterX">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="0">
+         <spacer name="spacer58">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="3" column="1">
+         <spacer name="spacer61">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+O</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>QG_LayerBox</class>
+   <extends>QWidget</extends>
+   <header>qg_layerbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>WidgetPen</class>
+   <extends>QWidget</extends>
+   <header>widgetpen.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>leCenterX</tabstop>
+  <tabstop>leCenterY</tabstop>
+  <tabstop>leRadius</tabstop>
+  <tabstop>bOk</tabstop>
+  <tabstop>bCancel</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgCircle</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgCircle</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgdimension.cpp b/src/forms/dlgdimension.cpp
new file mode 100644 (file)
index 0000000..a31d4b3
--- /dev/null
@@ -0,0 +1,50 @@
+// dlgdimension.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlgdimension.h"
+
+#include "rs_dimension.h"
+#include "drawing.h"
+
+DlgDimension::DlgDimension(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DlgDimension::~DlgDimension()
+{
+}
+
+void DlgDimension::setDim(RS_Dimension & d)
+{
+       dim = &d;
+       ui.wPen->setPen(dim->getPen(false), true, false, "Pen");
+       Drawing * graphic = dim->getGraphic();
+
+       if (graphic)
+               ui.cbLayer->init(*(graphic->getLayerList()), false, false);
+
+       RS_Layer * lay = dim->getLayer(false);
+
+       if (lay)
+               ui.cbLayer->setLayer(*lay);
+
+       ui.wLabel->setLabel(dim->getLabel(false));
+}
+
+void DlgDimension::updateDim()
+{
+       dim->setLabel(ui.wLabel->getLabel());
+}
diff --git a/src/forms/dlgdimension.h b/src/forms/dlgdimension.h
new file mode 100644 (file)
index 0000000..f4bdaa2
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __DLGDIMENSION_H__
+#define __DLGDIMENSION_H__
+
+#include "ui_dlgdimension.h"
+
+class RS_Dimension;
+
+class DlgDimension: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgDimension(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgDimension();
+
+       public slots:
+               void setDim(RS_Dimension & d);
+               void updateDim();
+
+       private:
+               RS_Dimension * dim;
+
+       private:
+               Ui::DlgDimension ui;
+};
+
+#endif // __DLGDIMENSION_H__
diff --git a/src/forms/dlgdimension.ui b/src/forms/dlgdimension.ui
new file mode 100644 (file)
index 0000000..37336e9
--- /dev/null
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgDimension</class>
+ <widget class="QDialog" name="DlgDimension">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>424</width>
+    <height>218</height>
+   </rect>
+  </property>
+  <property name="baseSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Dimension</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>false</bool>
+  </property>
+  <layout class="QVBoxLayout">
+   <property name="spacing">
+    <number>6</number>
+   </property>
+   <property name="margin">
+    <number>11</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <layout class="QVBoxLayout">
+       <item>
+        <layout class="QHBoxLayout">
+         <item>
+          <widget class="QLabel" name="lLayer">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>Layer:</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QG_LayerBox" name="cbLayer" native="true"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="WidgetPen" name="wPen" native="true">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="DimensionLabelEditor" name="wLabel" native="true"/>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer1">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>79</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+O</string>
+       </property>
+       <property name="autoDefault">
+        <bool>true</bool>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+       <property name="autoDefault">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>QG_LayerBox</class>
+   <extends>QWidget</extends>
+   <header>qg_layerbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>WidgetPen</class>
+   <extends>QWidget</extends>
+   <header>widgetpen.h</header>
+  </customwidget>
+  <customwidget>
+   <class>DimensionLabelEditor</class>
+   <extends>QWidget</extends>
+   <header>dimensionlabeleditor.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgDimension</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgDimension</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgdimlinear.cpp b/src/forms/dlgdimlinear.cpp
new file mode 100644 (file)
index 0000000..e4cfea0
--- /dev/null
@@ -0,0 +1,53 @@
+// dlgdimlinear.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlgdimlinear.h"
+
+#include "rs_dimlinear.h"
+#include "drawing.h"
+#include "rs_math.h"
+
+DlgDimLinear::DlgDimLinear(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DlgDimLinear::~DlgDimLinear()
+{
+}
+
+void DlgDimLinear::setDim(RS_DimLinear & d)
+{
+       dim = &d;
+       ui.wPen->setPen(dim->getPen(false), true, false, "Pen");
+       Drawing * graphic = dim->getGraphic();
+
+       if (graphic)
+               ui.cbLayer->init(*(graphic->getLayerList()), false, false);
+
+       RS_Layer * lay = dim->getLayer(false);
+
+       if (lay)
+               ui.cbLayer->setLayer(*lay);
+
+       ui.wLabel->setLabel(dim->getLabel(false));
+       ui.leAngle->setText(QString("%1").arg(RS_Math::rad2deg(dim->getAngle())));
+}
+
+void DlgDimLinear::updateDim()
+{
+       dim->setLabel(ui.wLabel->getLabel());
+       dim->setAngle(RS_Math::deg2rad(RS_Math::eval(ui.leAngle->text(), 0.0)));
+}
diff --git a/src/forms/dlgdimlinear.h b/src/forms/dlgdimlinear.h
new file mode 100644 (file)
index 0000000..a6371e0
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __DLGDIMLINEAR_H__
+#define __DLGDIMLINEAR_H__
+
+#include "ui_dlgdimlinear.h"
+
+class RS_DimLinear;
+
+class DlgDimLinear: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgDimLinear(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgDimLinear();
+
+       public slots:
+               void setDim(RS_DimLinear & d);
+               void updateDim();
+
+       private:
+               RS_DimLinear * dim;
+
+       private:
+               Ui::DlgDimLinear ui;
+};
+
+#endif // __DLGDIMLINEAR_H__
diff --git a/src/forms/dlgdimlinear.ui b/src/forms/dlgdimlinear.ui
new file mode 100644 (file)
index 0000000..1aeed2c
--- /dev/null
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgDimLinear</class>
+ <widget class="QDialog" name="DlgDimLinear">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>424</width>
+    <height>218</height>
+   </rect>
+  </property>
+  <property name="baseSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Linear Dimension</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>false</bool>
+  </property>
+  <layout class="QVBoxLayout">
+   <property name="spacing">
+    <number>6</number>
+   </property>
+   <property name="margin">
+    <number>11</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <layout class="QVBoxLayout">
+       <item>
+        <layout class="QHBoxLayout">
+         <item>
+          <widget class="QLabel" name="lLayer">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>Layer:</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QG_LayerBox" name="cbLayer" native="true"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="WidgetPen" name="wPen" native="true">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QVBoxLayout">
+       <item>
+        <widget class="DimensionLabelEditor" name="wLabel" native="true"/>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="bgGeometry">
+         <property name="title">
+          <string>Geometry</string>
+         </property>
+         <layout class="QHBoxLayout">
+          <item>
+           <widget class="QLabel" name="lAngle">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>19</height>
+             </size>
+            </property>
+            <property name="frameShape">
+             <enum>QFrame::NoFrame</enum>
+            </property>
+            <property name="frameShadow">
+             <enum>QFrame::Plain</enum>
+            </property>
+            <property name="text">
+             <string>Angle:</string>
+            </property>
+            <property name="wordWrap">
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="leAngle">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>19</height>
+             </size>
+            </property>
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer1">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>79</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+O</string>
+       </property>
+       <property name="autoDefault">
+        <bool>true</bool>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+       <property name="autoDefault">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>QG_LayerBox</class>
+   <extends>QWidget</extends>
+   <header>qg_layerbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>WidgetPen</class>
+   <extends>QWidget</extends>
+   <header>widgetpen.h</header>
+  </customwidget>
+  <customwidget>
+   <class>DimensionLabelEditor</class>
+   <extends>QWidget</extends>
+   <header>dimensionlabeleditor.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgDimLinear</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgDimLinear</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgellipse.cpp b/src/forms/dlgellipse.cpp
new file mode 100644 (file)
index 0000000..d81f11f
--- /dev/null
@@ -0,0 +1,83 @@
+// dlgellipse.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlgellipse.h"
+
+#include "rs_ellipse.h"
+#include "drawing.h"
+#include "rs_math.h"
+
+DlgEllipse::DlgEllipse(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DlgEllipse::~DlgEllipse()
+{
+}
+
+void DlgEllipse::setEllipse(RS_Ellipse & e)
+{
+       ellipse = &e;
+       //pen = ellipse->getPen();
+       ui.wPen->setPen(ellipse->getPen(false), true, false, "Pen");
+       Drawing * graphic = ellipse->getGraphic();
+
+       if (graphic != NULL)
+               ui.cbLayer->init(*(graphic->getLayerList()), false, false);
+
+       RS_Layer * lay = ellipse->getLayer(false);
+
+       if (lay != NULL)
+               ui.cbLayer->setLayer(*lay);
+
+       QString s;
+       s.setNum(ellipse->getCenter().x);
+       ui.leCenterX->setText(s);
+       s.setNum(ellipse->getCenter().y);
+       ui.leCenterY->setText(s);
+       s.setNum(ellipse->getMajorP().magnitude());
+       ui.leMajor->setText(s);
+       s.setNum(ellipse->getMajorP().magnitude() * ellipse->getRatio());
+       ui.leMinor->setText(s);
+       s.setNum(RS_Math::rad2deg(ellipse->getMajorP().angle()));
+       ui.leRotation->setText(s);
+       s.setNum(RS_Math::rad2deg(ellipse->getAngle1()));
+       ui.leAngle1->setText(s);
+       s.setNum(RS_Math::rad2deg(ellipse->getAngle2()));
+       ui.leAngle2->setText(s);
+       ui.cbReversed->setChecked(ellipse->isReversed());
+}
+
+void DlgEllipse::updateEllipse()
+{
+       ellipse->setCenter(Vector(RS_Math::eval(ui.leCenterX->text()),
+               RS_Math::eval(ui.leCenterY->text())));
+       Vector v;
+       v.setPolar(RS_Math::eval(ui.leMajor->text()),
+               RS_Math::deg2rad(RS_Math::eval(ui.leRotation->text())));
+       ellipse->setMajorP(v);
+
+       if (RS_Math::eval(ui.leMajor->text()) > 1.0e-6)
+               ellipse->setRatio(RS_Math::eval(ui.leMinor->text()) / RS_Math::eval(ui.leMajor->text()));
+       else
+               ellipse->setRatio(1.0);
+
+       ellipse->setAngle1(RS_Math::deg2rad(RS_Math::eval(ui.leAngle1->text())));
+       ellipse->setAngle2(RS_Math::deg2rad(RS_Math::eval(ui.leAngle2->text())));
+       ellipse->setReversed(ui.cbReversed->isChecked());
+       ellipse->setPen(ui.wPen->getPen());
+       ellipse->setLayer(ui.cbLayer->currentText());
+}
diff --git a/src/forms/dlgellipse.h b/src/forms/dlgellipse.h
new file mode 100644 (file)
index 0000000..3af14c1
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __DLGELLIPSE_H__
+#define __DLGELLIPSE_H__
+
+#include "ui_dlgellipse.h"
+
+class RS_Ellipse;
+
+class DlgEllipse: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgEllipse(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgEllipse();
+
+       public slots:
+               void setEllipse(RS_Ellipse & e);
+               void updateEllipse();
+
+       private:
+               RS_Ellipse * ellipse;
+
+       private:
+               Ui::DlgEllipse ui;
+};
+
+#endif // __DLGELLIPSE_H__
diff --git a/src/forms/dlgellipse.ui b/src/forms/dlgellipse.ui
new file mode 100644 (file)
index 0000000..6f8df07
--- /dev/null
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgEllipse</class>
+ <widget class="QDialog" name="DlgEllipse">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>394</width>
+    <height>307</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Ellipse</string>
+  </property>
+  <layout class="QVBoxLayout">
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <layout class="QVBoxLayout">
+       <item>
+        <layout class="QHBoxLayout">
+         <item>
+          <widget class="QLabel" name="lLayer">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>Layer:</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QG_LayerBox" name="cbLayer" native="true"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="WidgetPen" name="wPen" native="true">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="buttonGroup8">
+       <property name="title">
+        <string>Geometry</string>
+       </property>
+       <layout class="QGridLayout">
+        <item row="1" column="0">
+         <widget class="QLabel" name="lCenterY">
+          <property name="text">
+           <string>Center (y):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QLineEdit" name="leCenterY">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0">
+         <widget class="QLabel" name="lCenterX">
+          <property name="text">
+           <string>Center (x):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="QLineEdit" name="leCenterX">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="8" column="0">
+         <spacer name="spacer58">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="8" column="1">
+         <spacer name="spacer61">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="6" column="0">
+         <widget class="QLabel" name="lAngle2">
+          <property name="text">
+           <string>End Angle:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="6" column="1">
+         <widget class="QLineEdit" name="leAngle2">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="5" column="1">
+         <widget class="QLineEdit" name="leAngle1">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="5" column="0">
+         <widget class="QLabel" name="lAngle1">
+          <property name="text">
+           <string>Start Angle:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="0">
+         <widget class="QLabel" name="lRotation">
+          <property name="text">
+           <string>Rotation:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="1">
+         <widget class="QLineEdit" name="leRotation">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1">
+         <widget class="QLineEdit" name="leMinor">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="0">
+         <widget class="QLabel" name="lMinor">
+          <property name="text">
+           <string>Minor:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="0">
+         <widget class="QLabel" name="lMajor">
+          <property name="text">
+           <string>Major:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="1">
+         <widget class="QLineEdit" name="leMajor">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="7" column="0" colspan="2">
+         <widget class="QCheckBox" name="cbReversed">
+          <property name="text">
+           <string>Reversed</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+O</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>QG_LayerBox</class>
+   <extends>QWidget</extends>
+   <header>qg_layerbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>WidgetPen</class>
+   <extends>QWidget</extends>
+   <header>widgetpen.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>leCenterX</tabstop>
+  <tabstop>leCenterY</tabstop>
+  <tabstop>leMajor</tabstop>
+  <tabstop>leMinor</tabstop>
+  <tabstop>leRotation</tabstop>
+  <tabstop>leAngle1</tabstop>
+  <tabstop>leAngle2</tabstop>
+  <tabstop>cbReversed</tabstop>
+  <tabstop>bOk</tabstop>
+  <tabstop>bCancel</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgEllipse</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgEllipse</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlghatch.cpp b/src/forms/dlghatch.cpp
new file mode 100644 (file)
index 0000000..1b5d578
--- /dev/null
@@ -0,0 +1,183 @@
+// dlghatch.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlghatch.h"
+
+//#include "rs_ellipse.h"
+//#include "drawing.h"
+//#include "rs_math.h"
+#include "rs_entitycontainer.h"
+#include "rs_hatch.h"
+#include "rs_pattern.h"
+#include "rs_patternlist.h"
+#include "settings.h"
+
+DlgHatch::DlgHatch(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+
+       pattern = NULL;
+       hatch = NULL;
+       isNew = false;
+
+       preview = new RS_EntityContainer();
+       ui.gvPreview->setContainer(preview);
+       ui.gvPreview->setBorders(15, 15, 15, 15);
+
+       ui.cbPattern->init();
+}
+
+DlgHatch::~DlgHatch()
+{
+       if (isNew)
+       {
+               settings.beginGroup("Draw");
+               settings.setValue("HatchSolid", ui.cbSolid->isChecked());
+               settings.setValue("HatchPattern", ui.cbPattern->currentText());
+               settings.setValue("HatchScale", ui.leScale->text());
+               settings.setValue("HatchAngle", ui.leAngle->text());
+               settings.setValue("HatchPreview", ui.cbEnablePreview->isChecked());
+               settings.endGroup();
+       }
+
+       delete preview;
+}
+
+void DlgHatch::polish()
+{
+//WTF is this supposed to be for???
+//     QDialog::polish();
+       ui.gvPreview->zoomAuto();
+}
+
+void DlgHatch::showEvent(QShowEvent * e)
+{
+       QDialog::showEvent(e);
+       ui.gvPreview->zoomAuto();
+}
+
+void DlgHatch::setHatch(RS_Hatch & h, bool isNew)
+{
+       hatch = &h;
+       this->isNew = isNew;
+
+       settings.beginGroup("Draw");
+       bool enablePrev = settings.value("HatchPreview", false).toBool();
+       settings.endGroup();
+
+       ui.cbEnablePreview->setChecked(enablePrev);
+
+       // read defaults from config file:
+       if (isNew)
+       {
+               settings.beginGroup("Draw");
+               bool solid = settings.value("HatchSolid", false).toBool();
+               QString pat = settings.value("HatchPattern", "ANSI31").toString();
+               QString scale = settings.value("HatchScale", "1.0").toString();
+               QString angle = settings.value("HatchAngle", "0.0").toString();
+               settings.endGroup();
+
+               ui.cbSolid->setChecked(solid);
+               setPattern(pat);
+               ui.leScale->setText(scale);
+               ui.leAngle->setText(angle);
+       }
+       // initialize dialog based on given hatch:
+       else
+       {
+               ui.cbSolid->setChecked(hatch->isSolid());
+               setPattern(hatch->getPattern());
+               QString s;
+               s.setNum(hatch->getScale());
+               ui.leScale->setText(s);
+               s.setNum(RS_Math::rad2deg(hatch->getAngle()));
+               ui.leAngle->setText(s);
+       }
+}
+
+void DlgHatch::updateHatch()
+{
+       if (!hatch)
+               return;
+
+       hatch->setSolid(ui.cbSolid->isChecked());
+       hatch->setPattern(ui.cbPattern->currentText());
+       hatch->setScale(RS_Math::eval(ui.leScale->text()));
+       hatch->setAngle(RS_Math::deg2rad(RS_Math::eval(ui.leAngle->text())));
+}
+
+void DlgHatch::setPattern(const QString & p)
+{
+       if (!RS_PATTERNLIST->contains(p))
+//             ui.cbPattern->insertItem(p);
+               ui.cbPattern->addItem(p);
+
+//     ui.cbPattern->setCurrentText(p);
+       ui.cbPattern->setCurrentIndex(ui.cbPattern->findText(p));
+       pattern = ui.cbPattern->getPattern();
+}
+
+void DlgHatch::resizeEvent(QResizeEvent *)
+{
+       updatePreview(NULL);
+}
+
+void DlgHatch::updatePreview()
+{
+       updatePreview(NULL);
+}
+
+void DlgHatch::updatePreview(RS_Pattern *)
+{
+       if (!preview)
+               return;
+
+       if (!hatch || !ui.cbEnablePreview->isChecked())
+       {
+               preview->clear();
+               ui.gvPreview->zoomAuto();
+               return;
+       }
+
+       QString patName = ui.cbPattern->currentText();
+       bool isSolid = ui.cbSolid->isChecked();
+       double prevSize;
+       //double scale = RS_Math::eval(leScale->text(), 1.0);
+       double angle = RS_Math::deg2rad(RS_Math::eval(ui.leAngle->text(), 0.0));
+
+       if (pattern != NULL)
+               prevSize = pattern->getSize().x * 10;
+       else
+               prevSize = 10.0;
+
+       preview->clear();
+
+       RS_Hatch * prevHatch = new RS_Hatch(preview, RS_HatchData(isSolid, 0.2, angle, patName));
+       prevHatch->setPen(hatch->getPen());
+
+       RS_EntityContainer * loop = new RS_EntityContainer(prevHatch);
+       loop->setPen(RS_Pen(RS2::FlagInvalid));
+       loop->addEntity(new RS_Line(loop, RS_LineData(Vector(0.0, 0.0), Vector(10.0, 0.0))));
+       loop->addEntity(new RS_Line(loop, RS_LineData(Vector(10.0, 0.0), Vector(10.0, 10.0))));
+       loop->addEntity(new RS_Line(loop, RS_LineData(Vector(10.0, 10.0), Vector(0.0, 10.0))));
+       loop->addEntity(new RS_Line(loop, RS_LineData(Vector(0.0, 10.0), Vector(0.0, 0.0))));
+       prevHatch->addEntity(loop);
+       preview->addEntity(prevHatch);
+
+       if (!isSolid)
+               prevHatch->update();
+
+       ui.gvPreview->zoomAuto();
+}
diff --git a/src/forms/dlghatch.h b/src/forms/dlghatch.h
new file mode 100644 (file)
index 0000000..a654d30
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef __DLGHATCH_H__
+#define __DLGHATCH_H__
+
+#include "ui_dlghatch.h"
+
+class RS_EntityContainer;
+class RS_Pattern;
+class RS_Hatch;
+
+class DlgHatch: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgHatch(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgHatch();
+
+       public slots:
+               void polish();
+               void showEvent(QShowEvent * e);
+               void setHatch(RS_Hatch & h, bool isNew);
+               void updateHatch();
+               void setPattern(const QString & p);
+               void resizeEvent(QResizeEvent *);
+               void updatePreview();
+               void updatePreview(RS_Pattern *);
+
+       private:
+               RS_EntityContainer * preview;
+               bool isNew;
+               RS_Pattern * pattern;
+               RS_Hatch * hatch;
+
+       private:
+               Ui::DlgHatch ui;
+};
+
+#endif // __DLGHATCH_H__
diff --git a/src/forms/dlghatch.ui b/src/forms/dlghatch.ui
new file mode 100644 (file)
index 0000000..556c86d
--- /dev/null
@@ -0,0 +1,342 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgHatch</class>
+ <widget class="QDialog" name="DlgHatch">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>438</width>
+    <height>294</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Choose Hatch Attributes</string>
+  </property>
+  <layout class="QVBoxLayout">
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <widget class="QGroupBox" name="bgParameter">
+       <property name="title">
+        <string>Pattern</string>
+       </property>
+       <layout class="QGridLayout">
+        <item row="2" column="1">
+         <widget class="QLineEdit" name="leScale"/>
+        </item>
+        <item row="3" column="1">
+         <widget class="QLineEdit" name="leAngle"/>
+        </item>
+        <item row="3" column="0">
+         <widget class="QLabel" name="lAngle">
+          <property name="text">
+           <string>Angle:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="0">
+         <widget class="QLabel" name="lScale">
+          <property name="text">
+           <string>Scale:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0" colspan="2">
+         <widget class="QG_PatternBox" name="cbPattern" native="true"/>
+        </item>
+        <item row="0" column="0" colspan="2">
+         <widget class="QCheckBox" name="cbSolid">
+          <property name="text">
+           <string>Solid Fill</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="bgPreview">
+       <property name="title">
+        <string>Preview</string>
+       </property>
+       <layout class="QVBoxLayout">
+        <item>
+         <widget class="QCheckBox" name="cbEnablePreview">
+          <property name="text">
+           <string>Enable Preview</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QG_GraphicView" name="gvPreview" native="true"/>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout">
+     <property name="spacing">
+      <number>6</number>
+     </property>
+     <property name="margin">
+      <number>0</number>
+     </property>
+     <item>
+      <spacer name="Horizontal Spacing2">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="buttonOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+O</string>
+       </property>
+       <property name="autoDefault">
+        <bool>true</bool>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="buttonCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string/>
+       </property>
+       <property name="autoDefault">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>QG_PatternBox</class>
+   <extends>QWidget</extends>
+   <header>qg_patternbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>QG_GraphicView</class>
+   <extends>QWidget</extends>
+   <header>qg_graphicview.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>cbSolid</tabstop>
+  <tabstop>leScale</tabstop>
+  <tabstop>leAngle</tabstop>
+  <tabstop>cbEnablePreview</tabstop>
+  <tabstop>buttonOk</tabstop>
+  <tabstop>buttonCancel</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgHatch</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgHatch</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cbSolid</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>cbPattern</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cbSolid</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leScale</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cbSolid</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>lScale</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cbSolid</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leAngle</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cbSolid</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>lAngle</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cbPattern</sender>
+   <signal>patternChanged(RS_Pattern*)</signal>
+   <receiver>DlgHatch</receiver>
+   <slot>updatePreview(RS_Pattern*)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cbSolid</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>DlgHatch</receiver>
+   <slot>updatePreview()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>leAngle</sender>
+   <signal>textChanged(QString)</signal>
+   <receiver>DlgHatch</receiver>
+   <slot>updatePreview()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cbEnablePreview</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>DlgHatch</receiver>
+   <slot>updatePreview()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlginsert.cpp b/src/forms/dlginsert.cpp
new file mode 100644 (file)
index 0000000..591f8c9
--- /dev/null
@@ -0,0 +1,78 @@
+// dlginsert.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlginsert.h"
+
+#include "rs_insert.h"
+#include "drawing.h"
+#include "rs_math.h"
+
+DlgInsert::DlgInsert(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DlgInsert::~DlgInsert()
+{
+}
+
+void DlgInsert::setInsert(RS_Insert & i)
+{
+       insert = &i;
+       //pen = insert->getPen();
+       ui.wPen->setPen(insert->getPen(false), true, false, "Pen");
+       Drawing * graphic = insert->getGraphic();
+
+       if (graphic)
+               ui.cbLayer->init(*(graphic->getLayerList()), false, false);
+
+       RS_Layer * lay = insert->getLayer(false);
+
+       if (lay)
+               ui.cbLayer->setLayer(*lay);
+
+       QString s;
+       s.setNum(insert->getInsertionPoint().x);
+       ui.leInsertionPointX->setText(s);
+       s.setNum(insert->getInsertionPoint().y);
+       ui.leInsertionPointY->setText(s);
+       s.setNum(insert->getScale().x);
+       ui.leScale->setText(s);
+       s.setNum(RS_Math::rad2deg(insert->getAngle()));
+       ui.leAngle->setText(s);
+       s.setNum(insert->getRows());
+       ui.leRows->setText(s);
+       s.setNum(insert->getCols());
+       ui.leCols->setText(s);
+       s.setNum(insert->getSpacing().x);
+       ui.leRowSpacing->setText(s);
+       s.setNum(insert->getSpacing().y);
+       ui.leColSpacing->setText(s);
+}
+
+void DlgInsert::updateInsert()
+{
+       insert->setInsertionPoint(Vector(RS_Math::eval(ui.leInsertionPointX->text()),
+               RS_Math::eval(ui.leInsertionPointY->text())));
+       insert->setScale(Vector(RS_Math::eval(ui.leScale->text()),
+               RS_Math::eval(ui.leScale->text())));
+       insert->setAngle(RS_Math::deg2rad(RS_Math::eval(ui.leAngle->text())));
+       insert->setRows(RS_Math::round(RS_Math::eval(ui.leRows->text())));
+       insert->setCols(RS_Math::round(RS_Math::eval(ui.leCols->text())));
+       insert->setSpacing(Vector(RS_Math::eval(ui.leRowSpacing->text()),
+               RS_Math::eval(ui.leColSpacing->text())));
+       insert->setPen(ui.wPen->getPen());
+       insert->setLayer(ui.cbLayer->currentText());
+}
diff --git a/src/forms/dlginsert.h b/src/forms/dlginsert.h
new file mode 100644 (file)
index 0000000..2255402
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __DLGINSERT_H__
+#define __DLGINSERT_H__
+
+#include "ui_dlginsert.h"
+
+class RS_Insert;
+
+class DlgInsert: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgInsert(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgInsert();
+
+       public slots:
+               void setInsert(RS_Insert & i);
+               void updateInsert();
+
+       private:
+               RS_Insert * insert;
+
+       private:
+               Ui::DlgInsert ui;
+};
+
+#endif // __DLGINSERT_H__
diff --git a/src/forms/dlginsert.ui b/src/forms/dlginsert.ui
new file mode 100644 (file)
index 0000000..60ef49f
--- /dev/null
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgInsert</class>
+ <widget class="QDialog" name="DlgInsert">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>457</width>
+    <height>310</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Insert</string>
+  </property>
+  <layout class="QVBoxLayout">
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <layout class="QVBoxLayout">
+       <item>
+        <layout class="QHBoxLayout">
+         <item>
+          <widget class="QLabel" name="lLayer">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>Layer:</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QG_LayerBox" name="cbLayer" native="true"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="WidgetPen" name="wPen" native="true">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="buttonGroup8">
+       <property name="title">
+        <string>Geometry</string>
+       </property>
+       <layout class="QGridLayout">
+        <item row="8" column="1">
+         <spacer name="spacer61">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="8" column="0">
+         <spacer name="spacer58">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="1" column="1">
+         <widget class="QLineEdit" name="leInsertionPointY">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="QLineEdit" name="leInsertionPointX">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0">
+         <widget class="QLabel" name="lInsertionPointX">
+          <property name="text">
+           <string>Insertion point (x):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="lInsertionPointY">
+          <property name="text">
+           <string>Insertion point (y):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="1">
+         <widget class="QLineEdit" name="leScale">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="0">
+         <widget class="QLabel" name="lFactor">
+          <property name="text">
+           <string>Scale:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="0">
+         <widget class="QLabel" name="lAngle">
+          <property name="text">
+           <string>Angle:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1">
+         <widget class="QLineEdit" name="leAngle">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="0">
+         <widget class="QLabel" name="lRows">
+          <property name="text">
+           <string>Rows:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="1">
+         <widget class="QLineEdit" name="leRows">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="5" column="1">
+         <widget class="QLineEdit" name="leCols">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="5" column="0">
+         <widget class="QLabel" name="lCols">
+          <property name="text">
+           <string>Columns:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="6" column="0">
+         <widget class="QLabel" name="lRowSpacing">
+          <property name="text">
+           <string>Row Spacing:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="6" column="1">
+         <widget class="QLineEdit" name="leRowSpacing">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="7" column="1">
+         <widget class="QLineEdit" name="leColSpacing">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="7" column="0">
+         <widget class="QLabel" name="lColSpacing">
+          <property name="text">
+           <string>Column Spacing:</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>QG_LayerBox</class>
+   <extends>QWidget</extends>
+   <header>qg_layerbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>WidgetPen</class>
+   <extends>QWidget</extends>
+   <header>widgetpen.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>leInsertionPointX</tabstop>
+  <tabstop>leInsertionPointY</tabstop>
+  <tabstop>leScale</tabstop>
+  <tabstop>leAngle</tabstop>
+  <tabstop>leRows</tabstop>
+  <tabstop>leCols</tabstop>
+  <tabstop>leRowSpacing</tabstop>
+  <tabstop>leColSpacing</tabstop>
+  <tabstop>bOk</tabstop>
+  <tabstop>bCancel</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgInsert</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgInsert</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgline.cpp b/src/forms/dlgline.cpp
new file mode 100644 (file)
index 0000000..8607538
--- /dev/null
@@ -0,0 +1,65 @@
+// dlgline.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlgline.h"
+
+#include "rs_insert.h"
+#include "drawing.h"
+#include "rs_math.h"
+
+DlgLine::DlgLine(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DlgLine::~DlgLine()
+{
+}
+
+void DlgLine::setLine(RS_Line & l)
+{
+       line = &l;
+       //pen = line->getPen();
+       ui.wPen->setPen(line->getPen(false), true, false, "Pen");
+       Drawing * graphic = line->getGraphic();
+
+       if (graphic)
+               ui.cbLayer->init(*(graphic->getLayerList()), false, false);
+
+       RS_Layer * lay = line->getLayer(false);
+
+       if (lay)
+               ui.cbLayer->setLayer(*lay);
+
+       QString s;
+       s.setNum(line->getStartpoint().x);
+       ui.leStartX->setText(s);
+       s.setNum(line->getStartpoint().y);
+       ui.leStartY->setText(s);
+       s.setNum(line->getEndpoint().x);
+       ui.leEndX->setText(s);
+       s.setNum(line->getEndpoint().y);
+       ui.leEndY->setText(s);
+}
+
+void DlgLine::updateLine()
+{
+       line->setStartpoint(Vector(RS_Math::eval(ui.leStartX->text()),
+               RS_Math::eval(ui.leStartY->text())));
+       line->setEndpoint(Vector(RS_Math::eval(ui.leEndX->text()),
+               RS_Math::eval(ui.leEndY->text())));
+       line->setPen(ui.wPen->getPen());
+       line->setLayer(ui.cbLayer->currentText());
+}
diff --git a/src/forms/dlgline.h b/src/forms/dlgline.h
new file mode 100644 (file)
index 0000000..72d15ab
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __DLGLINE_H__
+#define __DLGLINE_H__
+
+#include "ui_dlgline.h"
+
+class RS_Line;
+
+class DlgLine: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgLine(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgLine();
+
+       public slots:
+               void setLine(RS_Line & l);
+               void updateLine();
+
+       private:
+               RS_Line * line;
+
+       private:
+               Ui::DlgLine ui;
+};
+
+#endif // __DLGLINE_H__
diff --git a/src/forms/dlgline.ui b/src/forms/dlgline.ui
new file mode 100644 (file)
index 0000000..b5140d0
--- /dev/null
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgLine</class>
+ <widget class="QDialog" name="DlgLine">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>457</width>
+    <height>195</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Line</string>
+  </property>
+  <layout class="QVBoxLayout">
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <layout class="QVBoxLayout">
+       <item>
+        <layout class="QHBoxLayout">
+         <item>
+          <widget class="QLabel" name="lLayer">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>Layer:</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QG_LayerBox" name="cbLayer" native="true"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="WidgetPen" name="wPen" native="true">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="buttonGroup8">
+       <property name="title">
+        <string>Geometry</string>
+       </property>
+       <layout class="QGridLayout">
+        <item row="5" column="0">
+         <widget class="QLabel" name="lEndX">
+          <property name="text">
+           <string>End point (x):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="5" column="1">
+         <widget class="QLineEdit" name="leEndX">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="7" column="1">
+         <widget class="QLineEdit" name="leEndY">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="7" column="0">
+         <widget class="QLabel" name="lEndY">
+          <property name="text">
+           <string>End point (y):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="0">
+         <widget class="QLabel" name="lStartY">
+          <property name="text">
+           <string>Start point (y):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1">
+         <widget class="QLineEdit" name="leStartY">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="lStartX">
+          <property name="text">
+           <string>Start point (x):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QLineEdit" name="leStartX">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="8" column="1">
+         <spacer name="spacer61">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>1</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="8" column="0">
+         <spacer name="spacer58">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>1</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>QG_LayerBox</class>
+   <extends>QWidget</extends>
+   <header>qg_layerbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>WidgetPen</class>
+   <extends>QWidget</extends>
+   <header>widgetpen.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>leStartX</tabstop>
+  <tabstop>leStartY</tabstop>
+  <tabstop>leEndX</tabstop>
+  <tabstop>leEndY</tabstop>
+  <tabstop>bOk</tabstop>
+  <tabstop>bCancel</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgLine</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgLine</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgmirror.cpp b/src/forms/dlgmirror.cpp
new file mode 100644 (file)
index 0000000..b370633
--- /dev/null
@@ -0,0 +1,80 @@
+// dlgmirror.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlgmirror.h"
+
+#include "rs_modification.h"
+#include "settings.h"
+
+DlgMirror::DlgMirror(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+
+       settings.beginGroup("Modify");
+       numberMode = settings.value("MirrorMode", 0).toInt();
+       useCurrentLayer = settings.value("MirrorUseCurrentLayer", false).toBool();
+       useCurrentAttributes = settings.value("MirrorUseCurrentAttributes", false).toBool();
+       settings.endGroup();
+
+       switch (numberMode)
+       {
+       case 0:
+               ui.rbMove->setChecked(true);
+               break;
+
+       case 1:
+               ui.rbCopy->setChecked(true);
+               break;
+
+       default:
+               break;
+       }
+
+       ui.cbCurrentAttributes->setChecked(useCurrentAttributes);
+       ui.cbCurrentLayer->setChecked(useCurrentLayer);
+}
+
+DlgMirror::~DlgMirror()
+{
+       settings.beginGroup("Modify");
+
+       if (ui.rbMove->isChecked())
+               numberMode = 0;
+       else if (ui.rbCopy->isChecked())
+               numberMode = 1;
+       else
+               numberMode = 2;
+
+       settings.setValue("MirrorMode", numberMode);
+       settings.setValue("MirrorUseCurrentLayer", ui.cbCurrentLayer->isChecked());
+       settings.setValue("MirrorUseCurrentAttributes", ui.cbCurrentAttributes->isChecked());
+       settings.endGroup();
+}
+
+void DlgMirror::setData(RS_MirrorData * d)
+{
+       data = d;
+}
+
+void DlgMirror::updateData()
+{
+       if (ui.rbMove->isChecked())
+               data->copy = false;
+       else if (ui.rbCopy->isChecked())
+               data->copy = true;
+
+       data->useCurrentAttributes = ui.cbCurrentAttributes->isChecked();
+       data->useCurrentLayer = ui.cbCurrentLayer->isChecked();
+}
diff --git a/src/forms/dlgmirror.h b/src/forms/dlgmirror.h
new file mode 100644 (file)
index 0000000..4c4f038
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef __DLGMIRROR_H__
+#define __DLGMIRROR_H__
+
+#include "ui_dlgmirror.h"
+
+class RS_MirrorData;
+
+class DlgMirror: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgMirror(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgMirror();
+
+       public slots:
+               void setData(RS_MirrorData * d);
+               void updateData();
+
+       private:
+               RS_MirrorData * data;
+               QString copies;
+               int numberMode;
+               bool useCurrentLayer;
+               bool useCurrentAttributes;
+
+       private:
+               Ui::DlgMirror ui;
+//             void init();
+//             void destroy();
+};
+
+#endif // __DLGMIRROR_H__
diff --git a/src/forms/dlgmirror.ui b/src/forms/dlgmirror.ui
new file mode 100644 (file)
index 0000000..85961dc
--- /dev/null
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgMirror</class>
+ <widget class="QDialog" name="DlgMirror">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>342</width>
+    <height>192</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Mirroring Options</string>
+  </property>
+  <layout class="QGridLayout">
+   <item row="0" column="1">
+    <widget class="QLabel" name="lHelp">
+     <property name="text">
+      <string/>
+     </property>
+     <property name="pixmap">
+      <pixmap resource="res/architektonas.qrc">:/res/qg_dlgmodifymirror.xpm</pixmap>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="wordWrap">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" rowspan="3">
+    <widget class="QGroupBox" name="bgNumber">
+     <property name="title">
+      <string>Number of copies</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <item>
+       <widget class="QRadioButton" name="rbMove">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Delete Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Keep Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="spacer7">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Expanding</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>21</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QCheckBox" name="cbCurrentAttributes">
+     <property name="text">
+      <string>Use current &amp;attributes</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="QCheckBox" name="cbCurrentLayer">
+     <property name="text">
+      <string>Use current &amp;layer</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" colspan="2">
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+  <include location="res/architektonas.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgMirror</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgMirror</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgmove.cpp b/src/forms/dlgmove.cpp
new file mode 100644 (file)
index 0000000..7e750b0
--- /dev/null
@@ -0,0 +1,89 @@
+// dlgmove.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlgmove.h"
+
+#include "rs_modification.h"
+#include "settings.h"
+
+DlgMove::DlgMove(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+
+       settings.beginGroup("Modify");
+       copies = settings.value("MoveCopies", "10").toString();
+       numberMode = settings.value("MoveMode", 0).toInt();
+       useCurrentLayer = settings.value("MoveUseCurrentLayer", false).toBool();
+       useCurrentAttributes = settings.value("MoveUseCurrentAttributes", false).toBool();
+       settings.endGroup();
+
+       switch (numberMode)
+       {
+       case 0:
+               ui.rbMove->setChecked(true);
+               break;
+
+       case 1:
+               ui.rbCopy->setChecked(true);
+               break;
+
+       case 2:
+               ui.rbMultiCopy->setChecked(true);
+               break;
+
+       default:
+               break;
+       }
+
+       ui.leNumber->setText(copies);
+       ui.cbCurrentAttributes->setChecked(useCurrentAttributes);
+       ui.cbCurrentLayer->setChecked(useCurrentLayer);
+}
+
+DlgMove::~DlgMove()
+{
+       settings.beginGroup("Modify");
+       settings.setValue("MoveCopies", ui.leNumber->text());
+
+       if (ui.rbMove->isChecked())
+               numberMode = 0;
+       else if (ui.rbCopy->isChecked())
+               numberMode = 1;
+       else
+               numberMode = 2;
+
+       settings.setValue("MoveMode", numberMode);
+       settings.setValue("MoveUseCurrentLayer", ui.cbCurrentLayer->isChecked());
+       settings.setValue("MoveUseCurrentAttributes", ui.cbCurrentAttributes->isChecked());
+       settings.endGroup();
+}
+
+void DlgMove::setData(RS_MoveData * d)
+{
+       data = d;
+}
+
+void DlgMove::updateData()
+{
+       if (ui.rbMove->isChecked())
+               data->number = 0;
+       else if (ui.rbCopy->isChecked())
+               data->number = 1;
+       else
+               data->number = ui.leNumber->text().toInt();
+
+       data->useCurrentAttributes = ui.cbCurrentAttributes->isChecked();
+       data->useCurrentLayer = ui.cbCurrentLayer->isChecked();
+}
diff --git a/src/forms/dlgmove.h b/src/forms/dlgmove.h
new file mode 100644 (file)
index 0000000..39d47f7
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef __DLGMOVE_H__
+#define __DLGMOVE_H__
+
+#include "ui_dlgmove.h"
+
+class RS_MoveData;
+
+class DlgMove: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgMove(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgMove();
+
+       public slots:
+               void setData(RS_MoveData * d);
+               void updateData();
+
+       private:
+               bool useCurrentAttributes;
+               bool useCurrentLayer;
+               int numberMode;
+               QString copies;
+               RS_MoveData * data;
+
+       private:
+               Ui::DlgMove ui;
+};
+
+#endif // __DLGMOVE_H__
diff --git a/src/forms/dlgmove.ui b/src/forms/dlgmove.ui
new file mode 100644 (file)
index 0000000..17f8870
--- /dev/null
@@ -0,0 +1,275 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgMove</class>
+ <widget class="QDialog" name="DlgMove">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>326</width>
+    <height>192</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Moving Options</string>
+  </property>
+  <layout class="QGridLayout">
+   <item row="0" column="1">
+    <widget class="QLabel" name="lHelp">
+     <property name="text">
+      <string/>
+     </property>
+     <property name="pixmap">
+      <pixmap resource="res/architektonas.qrc">:/res/qg_dlgmodifymove.xpm</pixmap>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="wordWrap">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" rowspan="3">
+    <widget class="QGroupBox" name="bgNumber">
+     <property name="title">
+      <string>Number of copies</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <item>
+       <widget class="QRadioButton" name="rbMove">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Delete Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Keep Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbMultiCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Multiple Copies</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="leNumber"/>
+      </item>
+      <item>
+       <spacer name="spacer7">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Expanding</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>130</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QCheckBox" name="cbCurrentAttributes">
+     <property name="text">
+      <string>Use current &amp;attributes</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="1">
+    <widget class="QCheckBox" name="cbCurrentLayer">
+     <property name="text">
+      <string>Use current &amp;layer</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0" colspan="2">
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="shortcut">
+        <string>Alt+O</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+  <include location="res/architektonas.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>rbMove</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbMultiCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgMove</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgMove</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgmoverotate.cpp b/src/forms/dlgmoverotate.cpp
new file mode 100644 (file)
index 0000000..a064544
--- /dev/null
@@ -0,0 +1,94 @@
+// dlgmoverotate.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/11/2010  Created this file. :-)
+//
+
+#include "dlgmoverotate.h"
+
+#include "rs_modification.h"
+#include "settings.h"
+
+DlgMoveRotate::DlgMoveRotate(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+
+       settings.beginGroup("Modify");
+       copies = settings.value("MoveRotateCopies", "10").toString();
+       numberMode = settings.value("MoveRotateMode", 0).toInt();
+       useCurrentLayer = settings.value("MoveRotateUseCurrentLayer", false).toBool();
+       useCurrentAttributes = settings.value("MoveRotateUseCurrentAttributes", false).toBool();
+       angle = settings.value("MoveRotateAngle", "0.0").toString();
+       settings.endGroup();
+
+       switch (numberMode)
+       {
+       case 0:
+               ui.rbMove->setChecked(true);
+               break;
+
+       case 1:
+               ui.rbCopy->setChecked(true);
+               break;
+
+       case 2:
+               ui.rbMultiCopy->setChecked(true);
+               break;
+
+       default:
+               break;
+       }
+
+       ui.leNumber->setText(copies);
+       ui.leAngle->setText(angle);
+       ui.cbCurrentAttributes->setChecked(useCurrentAttributes);
+       ui.cbCurrentLayer->setChecked(useCurrentLayer);
+}
+
+DlgMoveRotate::~DlgMoveRotate()
+{
+       settings.beginGroup("Modify");
+       settings.setValue("MoveRotateCopies", ui.leNumber->text());
+
+       if (ui.rbMove->isChecked())
+               numberMode = 0;
+       else if (ui.rbCopy->isChecked())
+               numberMode = 1;
+       else
+               numberMode = 2;
+
+       settings.setValue("MoveRotateMode", numberMode);
+       settings.setValue("MoveRotateAngle", ui.leAngle->text());
+       settings.setValue("MoveRotateUseCurrentLayer", ui.cbCurrentLayer->isChecked());
+       settings.setValue("MoveRotateUseCurrentAttributes", ui.cbCurrentAttributes->isChecked());
+       settings.endGroup();
+}
+
+void DlgMoveRotate::setData(RS_MoveRotateData * d)
+{
+       data = d;
+       ui.leAngle->setText(QString("%1").arg(RS_Math::rad2deg(data->angle)));
+}
+
+void DlgMoveRotate::updateData()
+{
+       if (ui.rbMove->isChecked())
+               data->number = 0;
+       else if (ui.rbCopy->isChecked())
+               data->number = 1;
+       else
+               data->number = ui.leNumber->text().toInt();
+
+       data->angle = RS_Math::deg2rad(RS_Math::eval(ui.leAngle->text()));
+       data->useCurrentAttributes = ui.cbCurrentAttributes->isChecked();
+       data->useCurrentLayer = ui.cbCurrentLayer->isChecked();
+}
diff --git a/src/forms/dlgmoverotate.h b/src/forms/dlgmoverotate.h
new file mode 100644 (file)
index 0000000..d54e4ac
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef __DLGMOVEROTATE_H__
+#define __DLGMOVEROTATE_H__
+
+#include "ui_dlgmoverotate.h"
+
+class RS_MoveRotateData;
+
+class DlgMoveRotate: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgMoveRotate(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgMoveRotate();
+
+       public slots:
+               void setData(RS_MoveRotateData * d);
+               void updateData();
+
+       private:
+               bool useCurrentAttributes;
+               bool useCurrentLayer;
+               int numberMode;
+               QString copies;
+               RS_MoveRotateData * data;
+               QString angle;
+
+       private:
+               Ui::DlgMoveRotate ui;
+};
+
+#endif // __DLGMOVEROTATE_H__
diff --git a/src/forms/dlgmoverotate.ui b/src/forms/dlgmoverotate.ui
new file mode 100644 (file)
index 0000000..8ea67cd
--- /dev/null
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgMoveRotate</class>
+ <widget class="QDialog" name="DlgMoveRotate">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>338</width>
+    <height>219</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Move/Rotate Options</string>
+  </property>
+  <layout class="QGridLayout">
+   <item row="1" column="0" colspan="2">
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="0" column="1">
+    <layout class="QVBoxLayout">
+     <item>
+      <widget class="QLabel" name="lHelp">
+       <property name="text">
+        <string/>
+       </property>
+       <property name="pixmap">
+        <pixmap resource="res/architektonas.qrc">:/res/qg_dlgmodifymoverotate.xpm</pixmap>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignCenter</set>
+       </property>
+       <property name="wordWrap">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout">
+       <item>
+        <widget class="QLabel" name="lAngle">
+         <property name="text">
+          <string>&amp;Angle (a):</string>
+         </property>
+         <property name="wordWrap">
+          <bool>false</bool>
+         </property>
+         <property name="buddy">
+          <cstring>leAngle</cstring>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="spacer13">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>41</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="leAngle"/>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="cbCurrentAttributes">
+       <property name="text">
+        <string>Use current &amp;attributes</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="cbCurrentLayer">
+       <property name="text">
+        <string>Use current &amp;layer</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="bgNumber">
+     <property name="title">
+      <string>Number of copies</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <item>
+       <widget class="QRadioButton" name="rbMove">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Delete Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Keep Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbMultiCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Multiple Copies</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="leNumber"/>
+      </item>
+      <item>
+       <spacer name="spacer7">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Expanding</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>21</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <tabstops>
+  <tabstop>rbMove</tabstop>
+  <tabstop>rbCopy</tabstop>
+  <tabstop>rbMultiCopy</tabstop>
+  <tabstop>leNumber</tabstop>
+  <tabstop>leAngle</tabstop>
+  <tabstop>cbCurrentAttributes</tabstop>
+  <tabstop>cbCurrentLayer</tabstop>
+  <tabstop>bOk</tabstop>
+  <tabstop>bCancel</tabstop>
+ </tabstops>
+ <resources>
+  <include location="res/architektonas.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>rbMove</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbMultiCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgMoveRotate</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgMoveRotate</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgpoint.cpp b/src/forms/dlgpoint.cpp
new file mode 100644 (file)
index 0000000..4762698
--- /dev/null
@@ -0,0 +1,59 @@
+// dlgpoint.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/12/2010  Created this file. :-)
+//
+
+#include "dlgpoint.h"
+
+#include "rs_point.h"
+#include "drawing.h"
+#include "rs_math.h"
+
+DlgPoint::DlgPoint(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DlgPoint::~DlgPoint()
+{
+}
+
+void DlgPoint::setPoint(RS_Point & p)
+{
+       point = &p;
+
+       ui.wPen->setPen(point->getPen(false), true, false, "Pen");
+       Drawing * graphic = point->getGraphic();
+
+       if (graphic)
+               ui.cbLayer->init(*(graphic->getLayerList()), false, false);
+
+       RS_Layer * lay = point->getLayer(false);
+
+       if (lay)
+               ui.cbLayer->setLayer(*lay);
+
+       QString s;
+       s.setNum(point->getPos().x);
+       ui.lePosX->setText(s);
+       s.setNum(point->getPos().y);
+       ui.lePosY->setText(s);
+}
+
+void DlgPoint::updatePoint()
+{
+       point->setPos(Vector(RS_Math::eval(ui.lePosX->text()),
+               RS_Math::eval(ui.lePosY->text())));
+       point->setPen(ui.wPen->getPen());
+       point->setLayer(ui.cbLayer->currentText());
+}
diff --git a/src/forms/dlgpoint.h b/src/forms/dlgpoint.h
new file mode 100644 (file)
index 0000000..46c624a
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef __DLGPOINT_H__
+#define __DLGPOINT_H__
+
+#include "ui_dlgpoint.h"
+#include "rs_pen.h"
+
+class RS_Point;
+
+class DlgPoint: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgPoint(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgPoint();
+
+       public slots:
+               void setPoint(RS_Point & p);
+               void updatePoint();
+
+       private:
+               RS_Pen pen;
+               RS_Point * point;
+
+       private:
+               Ui::DlgPoint ui;
+};
+
+#endif // __DLGPOINT_H__
diff --git a/src/forms/dlgpoint.ui b/src/forms/dlgpoint.ui
new file mode 100644 (file)
index 0000000..1a670d7
--- /dev/null
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgPoint</class>
+ <widget class="QDialog" name="DlgPoint">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>457</width>
+    <height>192</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Point</string>
+  </property>
+  <layout class="QVBoxLayout">
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <layout class="QVBoxLayout">
+       <item>
+        <layout class="QHBoxLayout">
+         <item>
+          <widget class="QLabel" name="lLayer">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>Layer:</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QG_LayerBox" name="cbLayer" native="true"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="WidgetPen" name="wPen" native="true">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="buttonGroup8">
+       <property name="title">
+        <string>Geometry</string>
+       </property>
+       <layout class="QGridLayout">
+        <item row="3" column="0">
+         <widget class="QLabel" name="lPosY">
+          <property name="text">
+           <string>Position (y):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1">
+         <widget class="QLineEdit" name="lePosY">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="lPosX">
+          <property name="text">
+           <string>Position (x):</string>
+          </property>
+          <property name="wordWrap">
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QLineEdit" name="lePosX">
+          <property name="minimumSize">
+           <size>
+            <width>64</width>
+            <height>0</height>
+           </size>
+          </property>
+         </widget>
+        </item>
+        <item row="8" column="1">
+         <spacer name="spacer61">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>1</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="8" column="0">
+         <spacer name="spacer58">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Expanding</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>1</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>QG_LayerBox</class>
+   <extends>QWidget</extends>
+   <header>qg_layerbox.h</header>
+  </customwidget>
+  <customwidget>
+   <class>WidgetPen</class>
+   <extends>QWidget</extends>
+   <header>widgetpen.h</header>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>lePosX</tabstop>
+  <tabstop>lePosY</tabstop>
+  <tabstop>bOk</tabstop>
+  <tabstop>bCancel</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgPoint</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgPoint</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgrotate.cpp b/src/forms/dlgrotate.cpp
new file mode 100644 (file)
index 0000000..30f32d1
--- /dev/null
@@ -0,0 +1,93 @@
+// dlgrotate.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/12/2010  Created this file. :-)
+//
+
+#include "dlgrotate.h"
+
+#include "rs_modification.h"
+#include "settings.h"
+
+DlgRotate::DlgRotate(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+
+       settings.beginGroup("Modify");
+       copies = settings.value("RotateCopies", "10").toString();
+       numberMode = settings.value("RotateMode", 0).toInt();
+       angle = settings.value("RotateAngle", "90.0").toString();
+       useCurrentLayer = settings.value("RotateUseCurrentLayer", false).toBool();
+       useCurrentAttributes = settings.value("RotateUseCurrentAttributes", false).toBool();
+       settings.endGroup();
+
+       switch (numberMode)
+       {
+       case 0:
+               ui.rbMove->setChecked(true);
+               break;
+
+       case 1:
+               ui.rbCopy->setChecked(true);
+               break;
+
+       case 2:
+               ui.rbMultiCopy->setChecked(true);
+               break;
+
+       default:
+               break;
+       }
+
+       ui.leNumber->setText(copies);
+       ui.leAngle->setText(angle);
+       ui.cbCurrentAttributes->setChecked(useCurrentAttributes);
+       ui.cbCurrentLayer->setChecked(useCurrentLayer);
+}
+
+DlgRotate::~DlgRotate()
+{
+       settings.beginGroup("Modify");
+       settings.setValue("RotateCopies", ui.leNumber->text());
+
+       if (ui.rbMove->isChecked())
+               numberMode = 0;
+       else if (ui.rbCopy->isChecked())
+               numberMode = 1;
+       else
+               numberMode = 2;
+
+       settings.setValue("RotateMode", numberMode);
+       settings.setValue("RotateAngle", ui.leAngle->text());
+       settings.setValue("RotateUseCurrentLayer", ui.cbCurrentLayer->isChecked());
+       settings.setValue("RotateUseCurrentAttributes", ui.cbCurrentAttributes->isChecked());
+       settings.endGroup();
+}
+
+void DlgRotate::setData(RS_RotateData * d)
+{
+       data = d;
+}
+
+void DlgRotate::updateData()
+{
+       if (ui.rbMove->isChecked())
+               data->number = 0;
+       else if (ui.rbCopy->isChecked())
+               data->number = 1;
+       else
+               data->number = ui.leNumber->text().toInt();
+
+       data->angle = RS_Math::deg2rad(RS_Math::eval(ui.leAngle->text()));
+       data->useCurrentAttributes = ui.cbCurrentAttributes->isChecked();
+       data->useCurrentLayer = ui.cbCurrentLayer->isChecked();
+}
diff --git a/src/forms/dlgrotate.h b/src/forms/dlgrotate.h
new file mode 100644 (file)
index 0000000..ebc7468
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef __DLGROTATE_H__
+#define __DLGROTATE_H__
+
+#include "ui_dlgrotate.h"
+
+class RS_RotateData;
+
+class DlgRotate: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgRotate(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgRotate();
+
+       public slots:
+               void setData(RS_RotateData * d);
+               void updateData();
+
+       private:
+               bool useCurrentAttributes;
+               bool useCurrentLayer;
+               int numberMode;
+               QString copies;
+               RS_RotateData * data;
+               QString angle;
+
+       private:
+               Ui::DlgRotate ui;
+};
+
+#endif // __DLGROTATE_H__
diff --git a/src/forms/dlgrotate.ui b/src/forms/dlgrotate.ui
new file mode 100644 (file)
index 0000000..93c4f7a
--- /dev/null
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgRotate</class>
+ <widget class="QDialog" name="DlgRotate">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>338</width>
+    <height>192</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Rotation Options</string>
+  </property>
+  <layout class="QGridLayout">
+   <item row="1" column="0" colspan="2">
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>&amp;Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="bgNumber">
+     <property name="title">
+      <string>Number of copies</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <item>
+       <widget class="QRadioButton" name="rbMove">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Delete Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Keep Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbMultiCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Multiple Copies:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="leNumber"/>
+      </item>
+      <item>
+       <spacer name="spacer7">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Expanding</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>146</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <layout class="QVBoxLayout">
+     <item>
+      <widget class="QLabel" name="lHelp">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+       <property name="pixmap">
+        <pixmap resource="res/architektonas.qrc">:/res/qg_dlgmodifyrotate.xpm</pixmap>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignCenter</set>
+       </property>
+       <property name="wordWrap">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout">
+       <item>
+        <widget class="QLabel" name="lAngle">
+         <property name="text">
+          <string>&amp;Angle (a):</string>
+         </property>
+         <property name="wordWrap">
+          <bool>false</bool>
+         </property>
+         <property name="buddy">
+          <cstring>leAngle</cstring>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="spacer12">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>31</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="leAngle">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="cbCurrentAttributes">
+       <property name="text">
+        <string>Use current &amp;attributes</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="cbCurrentLayer">
+       <property name="text">
+        <string>Use current &amp;layer</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+  <include location="res/architektonas.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>rbMove</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbMultiCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgRotate</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgRotate</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgrotate2.cpp b/src/forms/dlgrotate2.cpp
new file mode 100644 (file)
index 0000000..824b7a7
--- /dev/null
@@ -0,0 +1,100 @@
+// dlgrotate2.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/12/2010  Created this file. :-)
+//
+
+#include "dlgrotate2.h"
+
+#include "rs_modification.h"
+#include "settings.h"
+
+DlgRotate2::DlgRotate2(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+
+       settings.beginGroup("Modify");
+       copies = settings.value("Rotate2Copies", "10").toString();
+       numberMode = settings.value("Rotate2Mode", 0).toInt();
+       useCurrentLayer = settings.value("Rotate2UseCurrentLayer", false).toBool();
+       useCurrentAttributes = settings.value("MoveRotate2UseCurrentAttributes", false).toBool();
+       angle1 = settings.value("Rotate2Angle1", "30.0").toString();
+       angle2 = settings.value("Rotate2Angle2", "-30.0").toString();
+       settings.endGroup();
+
+       switch (numberMode)
+       {
+       case 0:
+               ui.rbMove->setChecked(true);
+               break;
+
+       case 1:
+               ui.rbCopy->setChecked(true);
+               break;
+
+       case 2:
+               ui.rbMultiCopy->setChecked(true);
+               break;
+
+       default:
+               break;
+       }
+
+       ui.leNumber->setText(copies);
+       ui.leAngle1->setText(angle1);
+       ui.leAngle2->setText(angle2);
+       ui.cbCurrentAttributes->setChecked(useCurrentAttributes);
+       ui.cbCurrentLayer->setChecked(useCurrentLayer);
+}
+
+DlgRotate2::~DlgRotate2()
+{
+       settings.beginGroup("Modify");
+       settings.setValue("Rotate2Copies", ui.leNumber->text());
+
+       if (ui.rbMove->isChecked())
+               numberMode = 0;
+       else if (ui.rbCopy->isChecked())
+               numberMode = 1;
+       else
+               numberMode = 2;
+
+       settings.setValue("Rotate2Mode", numberMode);
+       settings.setValue("Rotate2Angle1", ui.leAngle1->text());
+       settings.setValue("Rotate2Angle2", ui.leAngle2->text());
+       settings.setValue("Rotate2UseCurrentLayer", ui.cbCurrentLayer->isChecked());
+       settings.setValue("Rotate2UseCurrentAttributes", ui.cbCurrentAttributes->isChecked());
+       settings.endGroup();
+}
+
+void DlgRotate2::setData(RS_Rotate2Data * d)
+{
+       data = d;
+
+       //leAngle1->setText(QString("%1").arg(RS_Math::rad2deg(data->angle1)));
+       //leAngle2->setText(QString("%1").arg(RS_Math::rad2deg(data->angle2)));
+}
+
+void DlgRotate2::updateData()
+{
+       if (ui.rbMove->isChecked())
+               data->number = 0;
+       else if (ui.rbCopy->isChecked())
+               data->number = 1;
+       else
+               data->number = ui.leNumber->text().toInt();
+
+       data->angle1 = RS_Math::deg2rad(RS_Math::eval(ui.leAngle1->text()));
+       data->angle2 = RS_Math::deg2rad(RS_Math::eval(ui.leAngle2->text()));
+       data->useCurrentAttributes = ui.cbCurrentAttributes->isChecked();
+       data->useCurrentLayer = ui.cbCurrentLayer->isChecked();
+}
diff --git a/src/forms/dlgrotate2.h b/src/forms/dlgrotate2.h
new file mode 100644 (file)
index 0000000..c951990
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef __DLGROTATE2_H__
+#define __DLGROTATE2_H__
+
+#include "ui_dlgrotate2.h"
+
+class RS_Rotate2Data;
+
+class DlgRotate2: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgRotate2(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgRotate2();
+
+       public slots:
+               void setData(RS_Rotate2Data * d);
+               void updateData();
+
+       protected:
+               int newVariable;
+
+       private:
+               QString angle2;
+               bool useCurrentAttributes;
+               bool useCurrentLayer;
+               int numberMode;
+               QString copies;
+               RS_Rotate2Data * data;
+               QString angle1;
+
+       private:
+               Ui::DlgRotate2 ui;
+};
+
+#endif // __DLGROTATE2_H__
diff --git a/src/forms/dlgrotate2.ui b/src/forms/dlgrotate2.ui
new file mode 100644 (file)
index 0000000..4e0aab0
--- /dev/null
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgRotate2</class>
+ <widget class="QDialog" name="DlgRotate2">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>364</width>
+    <height>222</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Rotate Two Options</string>
+  </property>
+  <layout class="QGridLayout">
+   <item row="1" column="0" colspan="2">
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string/>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="bgNumber">
+     <property name="title">
+      <string>Number of copies</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <item>
+       <widget class="QRadioButton" name="rbMove">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Delete Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Keep Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbMultiCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Multiple Copies</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="leNumber"/>
+      </item>
+      <item>
+       <spacer name="spacer7">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Expanding</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>21</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <layout class="QVBoxLayout">
+     <item>
+      <widget class="QLabel" name="lHelp">
+       <property name="text">
+        <string/>
+       </property>
+       <property name="pixmap">
+        <pixmap resource="res/architektonas.qrc">:/res/qg_dlgmodifyrotate2.xpm</pixmap>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignCenter</set>
+       </property>
+       <property name="wordWrap">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout">
+       <item>
+        <widget class="QLabel" name="lAngle1">
+         <property name="text">
+          <string>Angle (&amp;a):</string>
+         </property>
+         <property name="wordWrap">
+          <bool>false</bool>
+         </property>
+         <property name="buddy">
+          <cstring>leAngle1</cstring>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="spacer13_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>41</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="leAngle1"/>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QHBoxLayout">
+       <item>
+        <widget class="QLabel" name="lAngle2">
+         <property name="text">
+          <string>Angle (&amp;b):</string>
+         </property>
+         <property name="wordWrap">
+          <bool>false</bool>
+         </property>
+         <property name="buddy">
+          <cstring>leAngle2</cstring>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="spacer13">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>41</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="leAngle2"/>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="cbCurrentAttributes">
+       <property name="text">
+        <string>Use current &amp;attributes</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="cbCurrentLayer">
+       <property name="text">
+        <string>Use current &amp;layer</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+  <include location="res/architektonas.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>rbMove</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbMultiCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgRotate2</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgRotate2</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgscale.cpp b/src/forms/dlgscale.cpp
new file mode 100644 (file)
index 0000000..95078ee
--- /dev/null
@@ -0,0 +1,93 @@
+// dlgscale.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/12/2010  Created this file. :-)
+//
+
+#include "dlgscale.h"
+
+#include "rs_modification.h"
+#include "settings.h"
+
+DlgScale::DlgScale(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+
+       settings.beginGroup("Modify");
+       copies = settings.value("ScaleCopies", "10").toString();
+       numberMode = settings.value("ScaleMode", 0).toInt();
+       factor = settings.value("ScaleFactor", "0.5").toString();
+       useCurrentLayer = settings.value("ScaleUseCurrentLayer", false).toBool();
+       useCurrentAttributes = settings.value("ScaleUseCurrentAttributes", false).toBool();
+       settings.endGroup();
+
+       switch (numberMode)
+       {
+       case 0:
+               ui.rbMove->setChecked(true);
+               break;
+
+       case 1:
+               ui.rbCopy->setChecked(true);
+               break;
+
+       case 2:
+               ui.rbMultiCopy->setChecked(true);
+               break;
+
+       default:
+               break;
+       }
+
+       ui.leNumber->setText(copies);
+       ui.leFactor->setText(factor);
+       ui.cbCurrentAttributes->setChecked(useCurrentAttributes);
+       ui.cbCurrentLayer->setChecked(useCurrentLayer);
+}
+
+DlgScale::~DlgScale()
+{
+       settings.beginGroup("Modify");
+       settings.setValue("ScaleCopies", ui.leNumber->text());
+       settings.setValue("ScaleFactor", ui.leFactor->text());
+
+       if (ui.rbMove->isChecked())
+               numberMode = 0;
+       else if (ui.rbCopy->isChecked())
+               numberMode = 1;
+       else
+               numberMode = 2;
+
+       settings.setValue("ScaleMode", numberMode);
+       settings.setValue("ScaleUseCurrentLayer", ui.cbCurrentLayer->isChecked());
+       settings.setValue("ScaleUseCurrentAttributes", ui.cbCurrentAttributes->isChecked());
+       settings.endGroup();
+}
+
+void DlgScale::setData(RS_ScaleData * d)
+{
+       data = d;
+}
+
+void DlgScale::updateData()
+{
+       if (ui.rbMove->isChecked())
+               data->number = 0;
+       else if (ui.rbCopy->isChecked())
+               data->number = 1;
+       else
+               data->number = ui.leNumber->text().toInt();
+
+       data->factor = RS_Math::eval(ui.leFactor->text());
+       data->useCurrentAttributes = ui.cbCurrentAttributes->isChecked();
+       data->useCurrentLayer = ui.cbCurrentLayer->isChecked();
+}
diff --git a/src/forms/dlgscale.h b/src/forms/dlgscale.h
new file mode 100644 (file)
index 0000000..fb2bce6
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef __DLGSCALE_H__
+#define __DLGSCALE_H__
+
+#include "ui_dlgscale.h"
+
+class RS_ScaleData;
+
+class DlgScale: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgScale(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgScale();
+
+       public slots:
+               void setData(RS_ScaleData * d);
+               void updateData();
+
+       private:
+               QString factor;
+               RS_ScaleData * data;
+               QString copies;
+               int numberMode;
+               bool useCurrentLayer;
+               bool useCurrentAttributes;
+
+       private:
+               Ui::DlgScale ui;
+};
+
+#endif // __DLGSCALE_H__
diff --git a/src/forms/dlgscale.ui b/src/forms/dlgscale.ui
new file mode 100644 (file)
index 0000000..3ebf0fd
--- /dev/null
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgScale</class>
+ <widget class="QDialog" name="DlgScale">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>339</width>
+    <height>196</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>300</width>
+    <height>190</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Scaling Options</string>
+  </property>
+  <layout class="QGridLayout">
+   <item row="1" column="0" colspan="2">
+    <layout class="QHBoxLayout">
+     <item>
+      <spacer name="spacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bOk">
+       <property name="text">
+        <string>&amp;OK</string>
+       </property>
+       <property name="default">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="bCancel">
+       <property name="text">
+        <string>&amp;Cancel</string>
+       </property>
+       <property name="shortcut">
+        <string>Esc</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="0" column="1">
+    <layout class="QVBoxLayout">
+     <item>
+      <widget class="QLabel" name="lHelp">
+       <property name="text">
+        <string/>
+       </property>
+       <property name="pixmap">
+        <pixmap resource="res/architektonas.qrc">:/res/qg_dlgmodifyscale.xpm</pixmap>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignCenter</set>
+       </property>
+       <property name="wordWrap">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout">
+       <item>
+        <widget class="QLabel" name="lFactor">
+         <property name="text">
+          <string>&amp;Factor (f):</string>
+         </property>
+         <property name="wordWrap">
+          <bool>false</bool>
+         </property>
+         <property name="buddy">
+          <cstring>leFactor</cstring>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="spacer12">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Expanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>31</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="leFactor">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="cbCurrentAttributes">
+       <property name="text">
+        <string>Use current &amp;attributes</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="cbCurrentLayer">
+       <property name="text">
+        <string>Use current &amp;layer</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="0" column="0">
+    <widget class="QGroupBox" name="bgNumber">
+     <property name="title">
+      <string>Number of copies</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <item>
+       <widget class="QRadioButton" name="rbMove">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Delete Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Keep Original</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="rbMultiCopy">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>18</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>&amp;Multiple Copies</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="leNumber"/>
+      </item>
+      <item>
+       <spacer name="spacer7">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Expanding</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>20</width>
+          <height>16</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+  <include location="res/architektonas.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>rbMove</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>rbMultiCopy</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>leNumber</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bOk</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgScale</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>bCancel</sender>
+   <signal>clicked()</signal>
+   <receiver>DlgScale</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>20</x>
+     <y>20</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/forms/dlgspline.cpp b/src/forms/dlgspline.cpp
new file mode 100644 (file)
index 0000000..0437cc4
--- /dev/null
@@ -0,0 +1,59 @@
+// dlgspline.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/10/2010  Added this file. :-)
+//
+
+#include "dlgspline.h"
+
+#include "drawing.h"
+#include "rs_spline.h"
+
+DlgSpline::DlgSpline(QWidget * parent/*= 0*/, Qt::WindowFlags flags/*= 0*/):
+       QDialog(parent, flags)
+{
+       ui.setupUi(this);
+}
+
+DlgSpline::~DlgSpline()
+{
+}
+
+void DlgSpline::setSpline(RS_Spline & e)
+{
+       spline = &e;
+       //pen = spline->getPen();
+       ui.wPen->setPen(spline->getPen(false), true, false, "Pen");
+       Drawing * graphic = spline->getGraphic();
+       RS_Layer * lay = spline->getLayer(false);
+
+       if (graphic)
+               ui.cbLayer->init(*(graphic->getLayerList()), false, false);
+
+       if (lay)
+               ui.cbLayer->setLayer(*lay);
+
+       QString s;
+       s.setNum(spline->getDegree());
+       ui.cbDegree->setCurrentIndex(ui.cbDegree->findText(s));
+//     cbDegree->setCurrentIndex(cbDegree->findText(QString("%1").arg(degree)));
+
+       ui.cbClosed->setChecked(spline->isClosed());
+}
+
+void DlgSpline::updateSpline()
+{
+       spline->setDegree(RS_Math::round(RS_Math::eval(ui.cbDegree->currentText())));
+       spline->setClosed(ui.cbClosed->isChecked());
+       spline->setPen(ui.wPen->getPen());
+       spline->setLayer(ui.cbLayer->currentText());
+       spline->update();
+}
diff --git a/src/forms/dlgspline.h b/src/forms/dlgspline.h
new file mode 100644 (file)
index 0000000..caf8852
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __DLGSPLINE_H__
+#define __DLGSPLINE_H__
+
+#include "ui_dlgspline.h"
+
+class RS_Spline;
+
+class DlgSpline: public QDialog
+{
+       Q_OBJECT
+
+       public:
+               DlgSpline(QWidget * parent = 0, Qt::WindowFlags flags = 0);
+               ~DlgSpline();
+
+       public slots:
+               void setSpline(RS_Spline & e);
+               void updateSpline();
+
+       private:
+               RS_Spline * spline;
+
+       private:
+               Ui::DlgSpline ui;
+};
+
+#endif // __DLGSPLINE_H__
diff --git a/src/forms/insertoptions.cpp b/src/forms/insertoptions.cpp
new file mode 100644 (file)
index 0000000..f1f6172
--- /dev/null
@@ -0,0 +1,140 @@
+// insertoptions.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/10/2010  Created this file. :-)
+//
+
+#include "insertoptions.h"
+
+#include "rs_actionblocksinsert.h"
+#include "settings.h"
+
+InsertOptions::InsertOptions(QToolBar * parent/*= 0*/, Qt::WindowFlags flags/*= 0*/):
+       QWidget(parent, flags),
+       lAngle(new QLabel(tr("Angle:"))),
+       leAngle(new QLineEdit(this)),
+       lFactor(new QLabel(tr("Factor:"))),
+       leFactor(new QLineEdit(this)),
+       sep1(new QFrame(this)),
+       lArray(new QLabel(tr("Array:"))),
+       sbColumns(new QSpinBox(this)),
+       sbRows(new QSpinBox(this)),
+       lSpacing(new QLabel(tr("Spacing:"))),
+       leColumnSpacing(new QLineEdit(this)),
+       leRowSpacing(new QLineEdit(this))
+{
+       QHBoxLayout * layout = new QHBoxLayout(this);
+       layout->setContentsMargins(0, 0, 0, 0);
+
+       leAngle->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Ignored));
+       leFactor->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Ignored));
+       leColumnSpacing->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Ignored));
+       leRowSpacing->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Ignored));
+       sep1->setFrameShape(QFrame::VLine);
+       sep1->setFrameShadow(QFrame::Sunken);
+
+       layout->addWidget(lAngle);
+       layout->addWidget(leAngle);
+       layout->addWidget(lFactor);
+       layout->addWidget(leFactor);
+       layout->addWidget(sep1);
+       layout->addWidget(lArray);
+       layout->addWidget(sbColumns);
+       layout->addWidget(sbRows);
+       layout->addWidget(lSpacing);
+       layout->addWidget(leColumnSpacing);
+       layout->addWidget(leRowSpacing);
+
+       connect(leAngle, SIGNAL(textChanged(QString)), this, SLOT(updateData()));
+       connect(leFactor, SIGNAL(textChanged(QString)), this, SLOT(updateData()));
+       connect(sbColumns, SIGNAL(valueChanged(int)), this, SLOT(updateData()));
+       connect(sbRows, SIGNAL(valueChanged(int)), this, SLOT(updateData()));
+       connect(leColumnSpacing, SIGNAL(textChanged(QString)), this, SLOT(updateData()));
+       connect(leRowSpacing, SIGNAL(textChanged(QString)), this, SLOT(updateData()));
+
+       // We need to add the widget (this thing) to the toolbar passed in. Otherwise,
+       // nothing will show up on the screen. :-)
+       if (parent)
+               parent->addWidget(this);
+}
+
+InsertOptions::~InsertOptions()
+{
+       settings.beginGroup("Insert");
+       settings.setValue("InsertAngle", leAngle->text());
+       settings.setValue("InsertFactor", leFactor->text());
+       settings.setValue("InsertColumns", sbColumns->text());
+       settings.setValue("InsertRows", sbRows->text());
+       settings.setValue("InsertColumnSpacing", leColumnSpacing->text());
+       settings.setValue("InsertRowSpacing", leRowSpacing->text());
+       settings.endGroup();
+}
+
+void InsertOptions::setAction(RS_ActionInterface * a, bool update)
+{
+       if (a != NULL && a->rtti() == RS2::ActionBlocksInsert)
+       {
+               action = (RS_ActionBlocksInsert *)a;
+
+               QString sAngle;
+               QString sFactor;
+               QString sColumns;
+               QString sRows;
+               QString sColumnSpacing;
+               QString sRowSpacing;
+
+               if (update)
+               {
+                       sAngle = QString("%1").arg(RS_Math::rad2deg(action->getAngle()));
+                       sFactor = QString("%1").arg(action->getFactor());
+                       sColumns = QString("%1").arg(action->getColumns());
+                       sRows = QString("%1").arg(action->getRows());
+                       sColumnSpacing = QString("%1").arg(action->getColumnSpacing());
+                       sRowSpacing = QString("%1").arg(action->getRowSpacing());
+               }
+               else
+               {
+                       settings.beginGroup("Insert");
+                       sAngle = settings.value("InsertAngle", "0.0").toString();
+                       sFactor = settings.value("InsertFactor", "1.0").toString();
+                       sColumns = settings.value("InsertColumns", "1").toString();
+                       sRows = settings.value("InsertRows", "1").toString();
+                       sColumnSpacing = settings.value("InsertColumnSpacing", "1.0").toString();
+                       sRowSpacing = settings.value("InsertRowSpacing", "1.0").toString();
+                       settings.endGroup();
+               }
+
+               leAngle->setText(sAngle);
+               leFactor->setText(sFactor);
+               sbColumns->setValue(sColumns.toInt());
+               sbRows->setValue(sRows.toInt());
+               leColumnSpacing->setText(sColumnSpacing);
+               leRowSpacing->setText(sRowSpacing);
+       }
+       else
+       {
+               RS_DEBUG->print(RS_Debug::D_ERROR, "InsertOptions::setAction: wrong action type");
+               action = NULL;
+       }
+}
+
+void InsertOptions::updateData()
+{
+       if (action != NULL)
+       {
+               action->setAngle(RS_Math::deg2rad(RS_Math::eval(leAngle->text())));
+               action->setFactor(RS_Math::eval(leFactor->text()));
+               action->setColumns(sbColumns->value());
+               action->setRows(sbRows->value());
+               action->setColumnSpacing(RS_Math::eval(leColumnSpacing->text()));
+               action->setRowSpacing(RS_Math::eval(leRowSpacing->text()));
+       }
+}
diff --git a/src/forms/insertoptions.h b/src/forms/insertoptions.h
new file mode 100644 (file)
index 0000000..522046a
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef __INSERTOPTIONS_H__
+#define __INSERTOPTIONS_H__
+
+#include <QtGui>
+
+class RS_ActionBlocksInsert;
+class RS_ActionInterface;
+
+class InsertOptions: public QWidget
+{
+       Q_OBJECT
+
+       public:
+               InsertOptions(QToolBar * parent = 0, Qt::WindowFlags flags = 0);
+               ~InsertOptions();
+
+       public slots:
+               void setAction(RS_ActionInterface * a, bool update);
+               void updateData();
+
+       protected:
+               RS_ActionBlocksInsert * action;
+
+       private:
+               QLabel * lAngle;
+               QLineEdit * leAngle;
+               QLabel * lFactor;
+               QLineEdit * leFactor;
+               QFrame * sep1;
+               QLabel * lArray;
+               QSpinBox * sbColumns;
+               QSpinBox * sbRows;
+               QLabel * lSpacing;
+               QLineEdit * leColumnSpacing;
+               QLineEdit * leRowSpacing;
+};
+
+#endif // __INSERTOPTIONS_H__
diff --git a/src/forms/libraryinsertoptions.cpp b/src/forms/libraryinsertoptions.cpp
new file mode 100644 (file)
index 0000000..e19a7d9
--- /dev/null
@@ -0,0 +1,95 @@
+// libraryinsertoptions.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/10/2010  Created this file. :-)
+//
+
+#include "libraryinsertoptions.h"
+
+#include "rs_actionlibraryinsert.h"
+#include "settings.h"
+
+LibraryInsertOptions::LibraryInsertOptions(QToolBar * parent/*= 0*/, Qt::WindowFlags flags/*= 0*/):
+       QWidget(parent, flags),
+       lAngle(new QLabel(tr("Angle:"))),
+       leAngle(new QLineEdit(this)),
+       lFactor(new QLabel(tr("Factor:"))),
+       leFactor(new QLineEdit(this))
+{
+       QHBoxLayout * layout = new QHBoxLayout(this);
+       layout->setContentsMargins(0, 0, 0, 0);
+
+       leAngle->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Ignored));
+       leFactor->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Ignored));
+
+       layout->addWidget(lAngle);
+       layout->addWidget(leAngle);
+       layout->addWidget(lFactor);
+       layout->addWidget(leFactor);
+
+       connect(leAngle, SIGNAL(textChanged(QString)), this, SLOT(updateData()));
+       connect(leFactor, SIGNAL(textChanged(QString)), this, SLOT(updateData()));
+
+       // We need to add the widget (this thing) to the toolbar passed in. Otherwise,
+       // nothing will show up on the screen. :-)
+       if (parent)
+               parent->addWidget(this);
+}
+
+LibraryInsertOptions::~LibraryInsertOptions()
+{
+       settings.beginGroup("LibraryInsert");
+       settings.setValue("LibraryInsertAngle", leAngle->text());
+       settings.setValue("LibraryInsertFactor", leFactor->text());
+       settings.endGroup();
+}
+
+void LibraryInsertOptions::setAction(RS_ActionInterface * a, bool update)
+{
+       if (a != NULL && a->rtti() == RS2::ActionLibraryInsert)
+       {
+               action = (RS_ActionLibraryInsert *)a;
+
+               QString sAngle;
+               QString sFactor;
+
+               if (update)
+               {
+                       sAngle = QString("%1").arg(RS_Math::rad2deg(action->getAngle()));
+                       sFactor = QString("%1").arg(action->getFactor());
+               }
+               else
+               {
+                       settings.beginGroup("LibraryInsert");
+                       sAngle = settings.value("LibraryInsertAngle", "0.0").toString();
+                       sFactor = settings.value("LibraryInsertFactor", "1.0").toString();
+                       settings.endGroup();
+               }
+
+               leAngle->setText(sAngle);
+               leFactor->setText(sFactor);
+       }
+       else
+       {
+               RS_DEBUG->print(RS_Debug::D_ERROR, "LibraryInsertOptions::setAction: wrong action type");
+               action = NULL;
+       }
+}
+
+void LibraryInsertOptions::updateData()
+{
+       if (action != NULL)
+       {
+               action->setAngle(RS_Math::deg2rad(RS_Math::eval(leAngle->text())));
+               action->setFactor(RS_Math::eval(leFactor->text()));
+       }
+}
+
diff --git a/src/forms/libraryinsertoptions.h b/src/forms/libraryinsertoptions.h
new file mode 100644 (file)
index 0000000..2cbe83c
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef __LIBRARYINSERTOPTIONS_H__
+#define __LIBRARYINSERTOPTIONS_H__
+
+#include <QtGui>
+
+class RS_ActionInterface;
+class RS_ActionLibraryInsert;
+
+class LibraryInsertOptions: public QWidget
+{
+       Q_OBJECT
+
+       public:
+               LibraryInsertOptions(QToolBar * parent = 0, Qt::WindowFlags flags = 0);
+               ~LibraryInsertOptions();
+
+       public slots:
+               void setAction(RS_ActionInterface * a, bool update);
+               void updateData();
+
+       protected:
+               RS_ActionLibraryInsert * action;
+
+       private:
+               QLabel * lAngle;
+               QLineEdit * leAngle;
+               QLabel * lFactor;
+               QLineEdit * leFactor;
+};
+
+#endif // __LIBRARYINSERTOPTIONS_H__
index 289d85a9870c40101f0c2090edbe3c969c552b63..0cca77d1bd2f93c3be3bc0f41d8365d8f48bb925 100644 (file)
 #include "rs_actioninterface.h"
 
 LineOptions::LineOptions(QToolBar * parent/*= 0*/, Qt::WindowFlags flags/*= 0*/):
-       QWidget(parent, flags), action(NULL)
+       QWidget(parent, flags), action(NULL),
+       bClose(new QToolButton(this)),
+       bUndo(new QToolButton(this))
 {
-       ui.setupUi(this);
+       QHBoxLayout * layout = new QHBoxLayout(this);
+       layout->setContentsMargins(0, 0, 0, 0);
+
+       bClose->setText(tr("Close"));
+       bUndo->setText(tr("Undo"));
+
+       layout->addWidget(bClose);
+       layout->addWidget(bUndo);
+
+       connect(bClose, SIGNAL(clicked()), this, SLOT(close()));
+       connect(bUndo, SIGNAL(clicked()), this, SLOT(undo()));
 
        // We need to add the widget (this thing) to the toolbar passed in. Otherwise,
        // nothing will show up on the screen. :-)
index 59ae1196f4c530ce5ab9fa307776572fb9a8e894..a1fab0c73c7be2d15cddab9e504395a9f615751e 100644 (file)
@@ -1,11 +1,10 @@
 #ifndef __LINEOPTIONS_H__
 #define __LINEOPTIONS_H__
 
-#include "ui_lineoptions.h"
+#include <QtGui>
 
 class RS_ActionDrawLine;
 class RS_ActionInterface;
-class QToolBar;
 
 class LineOptions: public QWidget
 {
@@ -16,15 +15,16 @@ class LineOptions: public QWidget
                ~LineOptions();
 
        public slots:
-               virtual void setAction(RS_ActionInterface * a);
-               virtual void close();
-               virtual void undo();
+               void setAction(RS_ActionInterface * a);
+               void close();
+               void undo();
 
        protected:
                RS_ActionDrawLine * action;
 
        private:
-               Ui::LineOptions ui;
+               QToolButton * bClose;
+               QToolButton * bUndo;
 };
 
 #endif // __LINEOPTIONS_H__
index 97b28e976ab8dc48a6dbd4c0c22d5a56b2cabd84..b30b5dec48d54b1e713984588fa31cb36d0297e7 100644 (file)
 #include "rs_actiondimlinear.h"
 #include "rs_actioninterface.h"
 #include "rs_document.h"
+#include "rs_hatch.h"
 #include "rs_patternlist.h"
 #include "settings.h"
 #include "rs_system.h"
 #include "rs_text.h"
 
-#if 0
-       #include "ui/qg_arcoptions.h"
-       #include "ui/qg_arctangentialoptions.h"
-       #include "ui/qg_beveloptions.h"
-       #include "ui/qg_blockdialog.h"
-       #include "ui/qg_cadtoolbar.h"
-       #include "ui/qg_circleoptions.h"
-       #include "ui/qg_commandwidget.h"
-       #include "ui/qg_coordinatewidget.h"
-       #include "ui/qg_dimlinearoptions.h"
-       #include "ui/qg_dimoptions.h"
-#include "ui/qg_dlgarc.h"
-       #include "ui/qg_dlgattributes.h"
-#include "ui/qg_dlgcircle.h"
-#include "ui/qg_dlgdimension.h"
-#include "ui/qg_dlgdimlinear.h"
-#include "ui/qg_dlgellipse.h"
-#include "ui/qg_dlghatch.h"
-#include "ui/qg_dlginsert.h"
-#include "ui/qg_dlgline.h"
-#include "ui/qg_dlgmirror.h"
-#include "ui/qg_dlgmove.h"
-#include "ui/qg_dlgmoverotate.h"
-       #include "ui/qg_dlgoptionsdrawing.h"
-       #include "ui/qg_dlgoptionsgeneral.h"
-#include "ui/qg_dlgpoint.h"
-#include "ui/qg_dlgrotate.h"
-#include "ui/qg_dlgrotate2.h"
-#include "ui/qg_dlgscale.h"
-#include "ui/qg_dlgspline.h"
-       #include "ui/qg_dlgtext.h"
-       #include "ui/qg_imageoptions.h"
-#include "ui/qg_insertoptions.h"
-       #include "ui/qg_layerdialog.h"
-#include "ui/qg_libraryinsertoptions.h"
-       #include "ui/qg_lineangleoptions.h"
-       #include "ui/qg_linebisectoroptions.h"
-       #include "ui/qg_lineoptions.h"
-       #include "ui/qg_lineparalleloptions.h"
-       #include "ui/qg_lineparallelthroughoptions.h"
-       #include "ui/qg_linepolygon2options.h"
-       #include "ui/qg_linepolygonoptions.h"
-       #include "ui/qg_linerelangleoptions.h"
-       #include "ui/qg_mousewidget.h"
-       #include "ui/qg_moverotateoptions.h"
-       #include "ui/qg_printpreviewoptions.h"
-       #include "ui/qg_roundoptions.h"
-       #include "ui/qg_selectionwidget.h"
-       #include "ui/qg_snapdistoptions.h"
-       #include "ui/qg_splineoptions.h"
-       #include "ui/qg_textoptions.h"
-       #include "ui/qg_trimamountoptions.h"
-#endif
 #include "arcoptions.h"
 #include "arctangentialoptions.h"
 #include "beveloptions.h"
 #include "coordinatewidget.h"
 #include "dimlinearoptions.h"
 #include "dimoptions.h"
+#include "dlgarc.h"
 #include "dlgattributes.h"
+#include "dlgcircle.h"
+#include "dlgdimension.h"
+#include "dlgdimlinear.h"
+#include "dlgellipse.h"
+#include "dlghatch.h"
+#include "dlginsert.h"
+#include "dlgline.h"
+#include "dlgmirror.h"
+#include "dlgmove.h"
+#include "dlgmoverotate.h"
 #include "dlgoptionsdrawing.h"
 #include "dlgoptionsgeneral.h"
+#include "dlgpoint.h"
+#include "dlgrotate.h"
+#include "dlgrotate2.h"
+#include "dlgscale.h"
+#include "dlgspline.h"
 #include "dlgtext.h"
+#include "libraryinsertoptions.h"
 #include "imageoptions.h"
+#include "insertoptions.h"
 #include "layerdialog.h"
 #include "lineangleoptions.h"
 #include "linebisectoroptions.h"
@@ -936,83 +902,23 @@ void QG_DialogFactory::requestPolylineOptions(RS_ActionInterface * action, bool
 #ifdef RS_PROF
        static PolylineOptions * toolWidget = NULL;
 
-       if (optionWidget != NULL)
+       if (!optionWidget)
+               return;
+
+       if (toolWidget)
        {
-               if (toolWidget != NULL)
-               {
-                       delete toolWidget;
-                       toolWidget = NULL;
-               }
-               if (on && toolWidget == NULL)
-               {
-                       toolWidget = new PolylineOptions(optionWidget);
-                       toolWidget->setAction(action, update);
-               }
+               delete toolWidget;
+               toolWidget = NULL;
        }
-#endif
-}
-
-#if 0
-/**
- * Shows a widget for insert options.
- */
-void QG_DialogFactory::requestInsertOptions(RS_ActionInterface* action,
-        bool on, bool update)
-{
-    static QG_InsertOptions* toolWidget = NULL;
 
-    if (optionWidget!=NULL) {
-        if (toolWidget!=NULL) {
-            delete toolWidget;
-            toolWidget = NULL;
-        }
-        if (on==true && toolWidget==NULL) {
-            toolWidget = new QG_InsertOptions(optionWidget);
-            toolWidget->setAction(action, update);
-        }
-    }
-}
-
-/**
- * Shows a widget for image options.
- */
-void QG_DialogFactory::requestImageOptions(RS_ActionInterface* action,
-        bool on, bool update)
-{
-    static QG_ImageOptions* toolWidget = NULL;
-
-    if (optionWidget!=NULL) {
-        if (toolWidget!=NULL) {
-            delete toolWidget;
-            toolWidget = NULL;
-        }
-        if (on==true && toolWidget==NULL) {
-            toolWidget = new QG_ImageOptions(optionWidget);
-            toolWidget->setAction(action, update);
-        }
-    }
+       if (on)
+       {
+               toolWidget = new PolylineOptions(optionWidget);
+               toolWidget->setAction(action, update);
+       }
+#endif
 }
 
-/**
- * Shows a widget for library insert options.
- */
-void QG_DialogFactory::requestLibraryInsertOptions(RS_ActionInterface* action,
-        bool on, bool update)
-{
-    static QG_LibraryInsertOptions* toolWidget = NULL;
-
-    if (optionWidget!=NULL) {
-        if (toolWidget!=NULL) {
-            delete toolWidget;
-            toolWidget = NULL;
-        }
-        if (on==true && toolWidget==NULL) {
-            toolWidget = new QG_LibraryInsertOptions(optionWidget);
-            toolWidget->setAction(action, update);
-        }
-    }
-}
-#else
 /**
  * Shows a widget for options for the action: "draw line parallel"
  */
@@ -1270,12 +1176,42 @@ void QG_DialogFactory::requestTextOptions(RS_ActionInterface * action, bool on,
        }
 }
 
-void QG_DialogFactory::requestInsertOptions(RS_ActionInterface* action, bool on, bool update)
+/**
+ * Shows a widget for insert options.
+ */
+void QG_DialogFactory::requestInsertOptions(RS_ActionInterface * action, bool on, bool update)
 {
+    static InsertOptions * toolWidget = NULL;
+
+    if (optionWidget!=NULL) {
+        if (toolWidget!=NULL) {
+            delete toolWidget;
+            toolWidget = NULL;
+        }
+        if (on==true && toolWidget==NULL) {
+            toolWidget = new InsertOptions(optionWidget);
+            toolWidget->setAction(action, update);
+        }
+    }
 }
 
-void QG_DialogFactory::requestImageOptions(RS_ActionInterface* action, bool on, bool update)
+/**
+ * Shows a widget for image options.
+ */
+void QG_DialogFactory::requestImageOptions(RS_ActionInterface * action, bool on, bool update)
 {
+    static ImageOptions * toolWidget = NULL;
+
+    if (optionWidget!=NULL) {
+        if (toolWidget!=NULL) {
+            delete toolWidget;
+            toolWidget = NULL;
+        }
+        if (on==true && toolWidget==NULL) {
+            toolWidget = new ImageOptions(optionWidget);
+            toolWidget->setAction(action, update);
+        }
+    }
 }
 
 /**
@@ -1435,10 +1371,28 @@ void QG_DialogFactory::requestRoundOptions(RS_ActionInterface * action, bool on,
        }
 }
 
-void QG_DialogFactory::requestLibraryInsertOptions(RS_ActionInterface* action, bool on, bool update)
+/**
+ * Shows a widget for library insert options.
+ */
+void QG_DialogFactory::requestLibraryInsertOptions(RS_ActionInterface * action, bool on, bool update)
 {
+       static LibraryInsertOptions * toolWidget = NULL;
+
+       if (!optionWidget)
+               return;
+
+       if (toolWidget)
+       {
+               delete toolWidget;
+               toolWidget = NULL;
+       }
+
+       if (on)
+       {
+               toolWidget = new LibraryInsertOptions(optionWidget);
+               toolWidget->setAction(action, update);
+       }
 }
-#endif
 
 /**
  * Shows the given toolbar.
@@ -1459,13 +1413,49 @@ void QG_DialogFactory::requestToolBarSelect(RS_ActionInterface * selectAction,
                cadToolBar->showToolBarSelect(selectAction, nextAction);
 }
 
-#if 0
+/**
+ * Shows a dialog to edit the attributes of the given dimension entity.
+ */
+ /*
+bool QG_DialogFactory::requestDimAlignedDialog(RS_DimAligned* dim) {
+    if (dim==NULL) {
+        return false;
+    }
+
+    QG_DlgDimAligned dlg(parent);
+    dlg.setDim(*dim, true);
+    if (dlg.exec()) {
+        dlg.updateDim();
+        return true;
+    }
+
+    return false;
+}
+*/
+
+/**
+ * Shows attributes options dialog presenting the given data.
+ */
+bool QG_DialogFactory::requestAttributesDialog(RS_AttributesData & data, RS_LayerList & layerList)
+{
+       DlgAttributes dlg(parent);
+       dlg.setData(&data, layerList);
+
+       if (dlg.exec())
+       {
+               dlg.updateData();
+               return true;
+       }
+
+       return false;
+}
+
 /**
  * Shows move options dialog presenting the given data.
  */
 bool QG_DialogFactory::requestMoveDialog(RS_MoveData & data)
 {
-       QG_DlgMove dlg(parent);
+       DlgMove dlg(parent);
        dlg.setData(&data);
 
        if (dlg.exec())
@@ -1482,7 +1472,7 @@ bool QG_DialogFactory::requestMoveDialog(RS_MoveData & data)
  */
 bool QG_DialogFactory::requestRotateDialog(RS_RotateData & data)
 {
-       QG_DlgRotate dlg(parent);
+       DlgRotate dlg(parent);
        dlg.setData(&data);
 
        if (dlg.exec())
@@ -1499,7 +1489,7 @@ bool QG_DialogFactory::requestRotateDialog(RS_RotateData & data)
  */
 bool QG_DialogFactory::requestScaleDialog(RS_ScaleData & data)
 {
-       QG_DlgScale dlg(parent);
+       DlgScale dlg(parent);
        dlg.setData(&data);
 
        if (dlg.exec())
@@ -1516,7 +1506,7 @@ bool QG_DialogFactory::requestScaleDialog(RS_ScaleData & data)
  */
 bool QG_DialogFactory::requestMirrorDialog(RS_MirrorData & data)
 {
-       QG_DlgMirror dlg(parent);
+       DlgMirror dlg(parent);
        dlg.setData(&data);
 
        if (dlg.exec())
@@ -1533,7 +1523,7 @@ bool QG_DialogFactory::requestMirrorDialog(RS_MirrorData & data)
  */
 bool QG_DialogFactory::requestMoveRotateDialog(RS_MoveRotateData & data)
 {
-       QG_DlgMoveRotate dlg(parent);
+       DlgMoveRotate dlg(parent);
        dlg.setData(&data);
 
        if (dlg.exec())
@@ -1550,7 +1540,7 @@ bool QG_DialogFactory::requestMoveRotateDialog(RS_MoveRotateData & data)
  */
 bool QG_DialogFactory::requestRotate2Dialog(RS_Rotate2Data & data)
 {
-       QG_DlgRotate2 dlg(parent);
+       DlgRotate2 dlg(parent);
        dlg.setData(&data);
 
        if (dlg.exec())
@@ -1576,7 +1566,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
        {
        case RS2::EntityPoint:
        {
-               QG_DlgPoint dlg(parent);
+               DlgPoint dlg(parent);
                dlg.setPoint(*((RS_Point *)entity));
 
                if (dlg.exec())
@@ -1589,7 +1579,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
 
        case RS2::EntityLine:
        {
-               QG_DlgLine dlg(parent);
+               DlgLine dlg(parent);
                dlg.setLine(*((RS_Line *)entity));
 
                if (dlg.exec())
@@ -1602,7 +1592,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
 
        case RS2::EntityArc:
        {
-               QG_DlgArc dlg(parent);
+               DlgArc dlg(parent);
                dlg.setArc(*((RS_Arc *)entity));
 
                if (dlg.exec())
@@ -1615,7 +1605,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
 
        case RS2::EntityCircle:
        {
-               QG_DlgCircle dlg(parent);
+               DlgCircle dlg(parent);
                dlg.setCircle(*((RS_Circle *)entity));
 
                if (dlg.exec())
@@ -1628,7 +1618,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
 
        case RS2::EntityEllipse:
        {
-               QG_DlgEllipse dlg(parent);
+               DlgEllipse dlg(parent);
                dlg.setEllipse(*((RS_Ellipse *)entity));
 
                if (dlg.exec())
@@ -1641,7 +1631,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
 
        case RS2::EntitySpline:
        {
-               QG_DlgSpline dlg(parent);
+               DlgSpline dlg(parent);
                dlg.setSpline(*((RS_Spline *)entity));
 
                if (dlg.exec())
@@ -1654,7 +1644,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
 
        case RS2::EntityInsert:
        {
-               QG_DlgInsert dlg(parent);
+               DlgInsert dlg(parent);
                dlg.setInsert(*((RS_Insert *)entity));
 
                if (dlg.exec())
@@ -1671,7 +1661,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
        case RS2::EntityDimDiametric:
        case RS2::EntityDimRadial:
        {
-               QG_DlgDimension dlg(parent);
+               DlgDimension dlg(parent);
                dlg.setDim(*((RS_Dimension *)entity));
 
                if (dlg.exec())
@@ -1685,7 +1675,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
 
        case RS2::EntityDimLinear:
        {
-               QG_DlgDimLinear dlg(parent);
+               DlgDimLinear dlg(parent);
                dlg.setDim(*((RS_DimLinear *)entity));
 
                if (dlg.exec())
@@ -1699,7 +1689,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
 
        case RS2::EntityText:
        {
-               QG_DlgText dlg(parent);
+               DlgText dlg(parent);
                dlg.setText(*((RS_Text *)entity), false);
 
                if (dlg.exec())
@@ -1713,7 +1703,7 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
 
        case RS2::EntityHatch:
        {
-               QG_DlgHatch dlg(parent);
+               DlgHatch dlg(parent);
                dlg.setHatch(*((RS_Hatch *)entity), false);
 
                if (dlg.exec())
@@ -1732,22 +1722,8 @@ bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
        return ret;
 }
 
-/**
- * Shows a dialog to edit the attributes of the given dimension entity.
- */
  /*
 bool QG_DialogFactory::requestDimAlignedDialog(RS_DimAligned* dim) {
-    if (dim==NULL) {
-        return false;
-    }
-
-    QG_DlgDimAligned dlg(parent);
-    dlg.setDim(*dim, true);
-    if (dlg.exec()) {
-        dlg.updateDim();
-        return true;
-    }
-
     return false;
 }
 */
@@ -1760,7 +1736,7 @@ bool QG_DialogFactory::requestTextDialog(RS_Text * text)
        if (text == NULL)
                return false;
 
-       QG_DlgText dlg(parent);
+       DlgText dlg(parent);
        dlg.setText(*text, true);
 
        if (dlg.exec())
@@ -1782,7 +1758,7 @@ bool QG_DialogFactory::requestHatchDialog(RS_Hatch * hatch)
 
        RS_PATTERNLIST->init();
 
-       QG_DlgHatch dlg(parent);
+       DlgHatch dlg(parent);
        dlg.setHatch(*hatch, true);
 
        if (dlg.exec())
@@ -1793,260 +1769,6 @@ bool QG_DialogFactory::requestHatchDialog(RS_Hatch * hatch)
 
        return false;
 }
-#else
-/**
- * Shows attributes options dialog presenting the given data.
- */
-bool QG_DialogFactory::requestAttributesDialog(RS_AttributesData & data, RS_LayerList & layerList)
-{
-       DlgAttributes dlg(parent);
-       dlg.setData(&data, layerList);
-
-       if (dlg.exec())
-       {
-               dlg.updateData();
-               return true;
-       }
-
-       return false;
-}
-
-bool QG_DialogFactory::requestMoveDialog(RS_MoveData & data)
-{
-       return false;
-}
-
-bool QG_DialogFactory::requestRotateDialog(RS_RotateData & data)
-{
-       return false;
-}
-
-bool QG_DialogFactory::requestScaleDialog(RS_ScaleData & data)
-{
-       return false;
-}
-
-bool QG_DialogFactory::requestMirrorDialog(RS_MirrorData & data)
-{
-       return false;
-}
-
-bool QG_DialogFactory::requestMoveRotateDialog(RS_MoveRotateData & data)
-{
-       return false;
-}
-
-bool QG_DialogFactory::requestRotate2Dialog(RS_Rotate2Data & data)
-{
-       return false;
-}
-
-/**
- * Shows a dialog to edit the given entity.
- */
-bool QG_DialogFactory::requestModifyEntityDialog(RS_Entity * entity)
-{
-       if (entity == NULL)
-               return false;
-
-       bool ret = false;
-
-       switch (entity->rtti())
-       {
-//NOTE: These #if 0's are put here until these missing dialogs can be ported to Qt4.
-#if 0
-       case RS2::EntityPoint:
-       {
-               QG_DlgPoint dlg(parent);
-               dlg.setPoint(*((RS_Point *)entity));
-
-               if (dlg.exec())
-               {
-                       dlg.updatePoint();
-                       ret = true;
-               }
-       }
-               break;
-
-       case RS2::EntityLine:
-       {
-               QG_DlgLine dlg(parent);
-               dlg.setLine(*((RS_Line *)entity));
-
-               if (dlg.exec())
-               {
-                       dlg.updateLine();
-                       ret = true;
-               }
-       }
-               break;
-
-       case RS2::EntityArc:
-       {
-               QG_DlgArc dlg(parent);
-               dlg.setArc(*((RS_Arc *)entity));
-
-               if (dlg.exec())
-               {
-                       dlg.updateArc();
-                       ret = true;
-               }
-       }
-               break;
-
-       case RS2::EntityCircle:
-       {
-               QG_DlgCircle dlg(parent);
-               dlg.setCircle(*((RS_Circle *)entity));
-
-               if (dlg.exec())
-               {
-                       dlg.updateCircle();
-                       ret = true;
-               }
-       }
-               break;
-
-       case RS2::EntityEllipse:
-       {
-               QG_DlgEllipse dlg(parent);
-               dlg.setEllipse(*((RS_Ellipse *)entity));
-
-               if (dlg.exec())
-               {
-                       dlg.updateEllipse();
-                       ret = true;
-               }
-       }
-               break;
-
-       case RS2::EntitySpline:
-       {
-               QG_DlgSpline dlg(parent);
-               dlg.setSpline(*((RS_Spline *)entity));
-
-               if (dlg.exec())
-               {
-                       dlg.updateSpline();
-                       ret = true;
-               }
-       }
-               break;
-
-       case RS2::EntityInsert:
-       {
-               QG_DlgInsert dlg(parent);
-               dlg.setInsert(*((RS_Insert *)entity));
-
-               if (dlg.exec())
-               {
-                       dlg.updateInsert();
-                       ret = true;
-                       entity->update();
-               }
-       }
-               break;
-
-       case RS2::EntityDimAligned:
-       case RS2::EntityDimAngular:
-       case RS2::EntityDimDiametric:
-       case RS2::EntityDimRadial:
-       {
-               QG_DlgDimension dlg(parent);
-               dlg.setDim(*((RS_Dimension *)entity));
-
-               if (dlg.exec())
-               {
-                       dlg.updateDim();
-                       ret = true;
-                       ((RS_Dimension *)entity)->update(true);
-               }
-       }
-               break;
-
-       case RS2::EntityDimLinear:
-       {
-               QG_DlgDimLinear dlg(parent);
-               dlg.setDim(*((RS_DimLinear *)entity));
-
-               if (dlg.exec())
-               {
-                       dlg.updateDim();
-                       ret = true;
-                       ((RS_DimLinear *)entity)->update(true);
-               }
-       }
-               break;
-#endif
-
-       case RS2::EntityText:
-       {
-               DlgText dlg(parent);
-               dlg.setText(*((RS_Text *)entity), false);
-
-               if (dlg.exec())
-               {
-                       dlg.updateText();
-                       ret = true;
-                       ((RS_Text *)entity)->update();
-               }
-       }
-               break;
-
-#if 0
-       case RS2::EntityHatch:
-       {
-               QG_DlgHatch dlg(parent);
-               dlg.setHatch(*((RS_Hatch *)entity), false);
-
-               if (dlg.exec())
-               {
-                       dlg.updateHatch();
-                       ret = true;
-                       ((RS_Hatch *)entity)->update();
-               }
-       }
-               break;
-#endif
-
-       default:
-               break;
-       }
-
-       return ret;
-}
-
- /*
-bool QG_DialogFactory::requestDimAlignedDialog(RS_DimAligned* dim) {
-    return false;
-}
-*/
-
-/**
- * Shows a dialog to edit the attributes of the given text entity.
- */
-bool QG_DialogFactory::requestTextDialog(RS_Text * text)
-{
-       if (text == NULL)
-               return false;
-
-       DlgText dlg(parent);
-       dlg.setText(*text, true);
-
-       if (dlg.exec())
-       {
-               dlg.updateText();
-               return true;
-       }
-
-       return false;
-}
-
-bool QG_DialogFactory::requestHatchDialog(RS_Hatch * hatch)
-{
-       return false;
-}
-#endif
 
 #ifdef RS_CAM
 /**