From 05a1d5fa057f4f45bc1f9903f1bdc0be2f10e3bf Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Mon, 14 Jun 2010 04:01:45 +0000 Subject: [PATCH] Final round of dialogs/forms needing to be converted from Qt3 to 4 --- architektonas.pro | 95 ++--- src/base/rs.h | 209 ++++++----- src/base/rs_math.cpp | 23 +- src/base/rs_math.h | 17 - src/base/vector.cpp | 1 + src/base/vectorsolutions.cpp | 1 + src/forms/dimensionlabeleditor.cpp | 92 +++++ src/forms/dimensionlabeleditor.h | 24 ++ src/forms/dimensionlabeleditor.ui | 209 +++++++++++ src/forms/dlgarc.cpp | 72 ++++ src/forms/dlgarc.h | 27 ++ src/forms/dlgarc.ui | 321 +++++++++++++++++ src/forms/dlgcircle.cpp | 63 ++++ src/forms/dlgcircle.h | 27 ++ src/forms/dlgcircle.ui | 271 ++++++++++++++ src/forms/dlgdimension.cpp | 50 +++ src/forms/dlgdimension.h | 27 ++ src/forms/dlgdimension.ui | 180 ++++++++++ src/forms/dlgdimlinear.cpp | 53 +++ src/forms/dlgdimlinear.h | 27 ++ src/forms/dlgdimlinear.ui | 240 +++++++++++++ src/forms/dlgellipse.cpp | 83 +++++ src/forms/dlgellipse.h | 27 ++ src/forms/dlgellipse.ui | 363 +++++++++++++++++++ src/forms/dlghatch.cpp | 183 ++++++++++ src/forms/dlghatch.h | 38 ++ src/forms/dlghatch.ui | 342 ++++++++++++++++++ src/forms/dlginsert.cpp | 78 ++++ src/forms/dlginsert.h | 27 ++ src/forms/dlginsert.ui | 373 +++++++++++++++++++ src/forms/dlgline.cpp | 65 ++++ src/forms/dlgline.h | 27 ++ src/forms/dlgline.ui | 289 +++++++++++++++ src/forms/dlgmirror.cpp | 80 +++++ src/forms/dlgmirror.h | 33 ++ src/forms/dlgmirror.ui | 202 +++++++++++ src/forms/dlgmove.cpp | 89 +++++ src/forms/dlgmove.h | 31 ++ src/forms/dlgmove.ui | 275 ++++++++++++++ src/forms/dlgmoverotate.cpp | 94 +++++ src/forms/dlgmoverotate.h | 32 ++ src/forms/dlgmoverotate.ui | 323 +++++++++++++++++ src/forms/dlgpoint.cpp | 59 +++ src/forms/dlgpoint.h | 29 ++ src/forms/dlgpoint.ui | 247 +++++++++++++ src/forms/dlgrotate.cpp | 93 +++++ src/forms/dlgrotate.h | 32 ++ src/forms/dlgrotate.ui | 331 +++++++++++++++++ src/forms/dlgrotate2.cpp | 100 ++++++ src/forms/dlgrotate2.h | 36 ++ src/forms/dlgrotate2.ui | 348 ++++++++++++++++++ src/forms/dlgscale.cpp | 93 +++++ src/forms/dlgscale.h | 32 ++ src/forms/dlgscale.ui | 319 +++++++++++++++++ src/forms/dlgspline.cpp | 59 +++ src/forms/dlgspline.h | 27 ++ src/forms/insertoptions.cpp | 140 ++++++++ src/forms/insertoptions.h | 38 ++ src/forms/libraryinsertoptions.cpp | 95 +++++ src/forms/libraryinsertoptions.h | 31 ++ src/forms/lineoptions.cpp | 16 +- src/forms/lineoptions.h | 12 +- src/widgets/qg_dialogfactory.cpp | 556 ++++++++--------------------- 63 files changed, 7170 insertions(+), 606 deletions(-) create mode 100644 src/forms/dimensionlabeleditor.cpp create mode 100644 src/forms/dimensionlabeleditor.h create mode 100644 src/forms/dimensionlabeleditor.ui create mode 100644 src/forms/dlgarc.cpp create mode 100644 src/forms/dlgarc.h create mode 100644 src/forms/dlgarc.ui create mode 100644 src/forms/dlgcircle.cpp create mode 100644 src/forms/dlgcircle.h create mode 100644 src/forms/dlgcircle.ui create mode 100644 src/forms/dlgdimension.cpp create mode 100644 src/forms/dlgdimension.h create mode 100644 src/forms/dlgdimension.ui create mode 100644 src/forms/dlgdimlinear.cpp create mode 100644 src/forms/dlgdimlinear.h create mode 100644 src/forms/dlgdimlinear.ui create mode 100644 src/forms/dlgellipse.cpp create mode 100644 src/forms/dlgellipse.h create mode 100644 src/forms/dlgellipse.ui create mode 100644 src/forms/dlghatch.cpp create mode 100644 src/forms/dlghatch.h create mode 100644 src/forms/dlghatch.ui create mode 100644 src/forms/dlginsert.cpp create mode 100644 src/forms/dlginsert.h create mode 100644 src/forms/dlginsert.ui create mode 100644 src/forms/dlgline.cpp create mode 100644 src/forms/dlgline.h create mode 100644 src/forms/dlgline.ui create mode 100644 src/forms/dlgmirror.cpp create mode 100644 src/forms/dlgmirror.h create mode 100644 src/forms/dlgmirror.ui create mode 100644 src/forms/dlgmove.cpp create mode 100644 src/forms/dlgmove.h create mode 100644 src/forms/dlgmove.ui create mode 100644 src/forms/dlgmoverotate.cpp create mode 100644 src/forms/dlgmoverotate.h create mode 100644 src/forms/dlgmoverotate.ui create mode 100644 src/forms/dlgpoint.cpp create mode 100644 src/forms/dlgpoint.h create mode 100644 src/forms/dlgpoint.ui create mode 100644 src/forms/dlgrotate.cpp create mode 100644 src/forms/dlgrotate.h create mode 100644 src/forms/dlgrotate.ui create mode 100644 src/forms/dlgrotate2.cpp create mode 100644 src/forms/dlgrotate2.h create mode 100644 src/forms/dlgrotate2.ui create mode 100644 src/forms/dlgscale.cpp create mode 100644 src/forms/dlgscale.h create mode 100644 src/forms/dlgscale.ui create mode 100644 src/forms/dlgspline.cpp create mode 100644 src/forms/dlgspline.h create mode 100644 src/forms/insertoptions.cpp create mode 100644 src/forms/insertoptions.h create mode 100644 src/forms/libraryinsertoptions.cpp create mode 100644 src/forms/libraryinsertoptions.h diff --git a/architektonas.pro b/architektonas.pro index 3eaaef6..0c03be4 100644 --- a/architektonas.pro +++ b/architektonas.pro @@ -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 \ diff --git a/src/base/rs.h b/src/base/rs.h index 9ba69d9..6d7424a 100644 --- a/src/base/rs.h +++ b/src/base/rs.h @@ -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; diff --git a/src/base/rs_math.cpp b/src/base/rs_math.cpp index 6bad02f..fe3ba33 100644 --- a/src/base/rs_math.cpp +++ b/src/base/rs_math.cpp @@ -14,6 +14,10 @@ #include "rs_math.h" +#include // For test() +#include +#include +#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; diff --git a/src/base/rs_math.h b/src/base/rs_math.h index b225d69..4f8f874 100644 --- a/src/base/rs_math.h +++ b/src/base/rs_math.h @@ -7,22 +7,12 @@ //#define _MT //#endif -#include -#include #include -#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); diff --git a/src/base/vector.cpp b/src/base/vector.cpp index a9213b6..c8e4dd1 100644 --- a/src/base/vector.cpp +++ b/src/base/vector.cpp @@ -14,6 +14,7 @@ #include "vector.h" +#include "rs.h" // For RS_MIN/MAXDOUBLE (!) #include "rs_debug.h" #include "rs_math.h" diff --git a/src/base/vectorsolutions.cpp b/src/base/vectorsolutions.cpp index b640005..29601e3 100644 --- a/src/base/vectorsolutions.cpp +++ b/src/base/vectorsolutions.cpp @@ -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 index 0000000..15724c1 --- /dev/null +++ b/src/forms/dimensionlabeleditor.cpp @@ -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 +// +// 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 index 0000000..423ac42 --- /dev/null +++ b/src/forms/dimensionlabeleditor.h @@ -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 index 0000000..d03d623 --- /dev/null +++ b/src/forms/dimensionlabeleditor.ui @@ -0,0 +1,209 @@ + + + DimensionLabelEditor + + + + 0 + 0 + 220 + 118 + + + + + 220 + 0 + + + + Dimension Label Editor + + + + 0 + + + 0 + + + + + Dimension Label: + + + + 0 + + + + + + + + + + 0 + 0 + + + + QFrame::NoFrame + + + QFrame::Plain + + + Label: + + + false + + + + + + + + 0 + 0 + + + + + + + + :/res/qg_dimdia.xpm:/res/qg_dimdia.xpm + + + true + + + + + + + + 0 + 0 + + + + + + + + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + Insert: + + + false + + + + + + + + 0 + 0 + + + + + ø (Diameter) + + + + + ° (Degree) + + + + + ± (Plus / Minus) + + + + + ¶ (Pi) + + + + + × (Times) + + + + + ÷ (Division) + + + + + + + + + + + + + + + + + + cbSymbol + activated(QString) + DimensionLabelEditor + insertSign(QString) + + + 20 + 20 + + + 20 + 20 + + + + + diff --git a/src/forms/dlgarc.cpp b/src/forms/dlgarc.cpp new file mode 100644 index 0000000..b79bbae --- /dev/null +++ b/src/forms/dlgarc.cpp @@ -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 +// +// 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 index 0000000..adfa018 --- /dev/null +++ b/src/forms/dlgarc.h @@ -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 index 0000000..f3d0928 --- /dev/null +++ b/src/forms/dlgarc.ui @@ -0,0 +1,321 @@ + + + DlgArc + + + + 0 + 0 + 380 + 251 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Arc + + + + + + + + + + + + + 0 + 0 + + + + Layer: + + + false + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + Geometry + + + + + + Radius: + + + false + + + + + + + + 64 + 0 + + + + + + + + Center (y): + + + false + + + + + + + + 64 + 0 + + + + + + + + Center (x): + + + false + + + + + + + + 64 + 0 + + + + + + + + Start Angle: + + + false + + + + + + + + 64 + 0 + + + + + + + + + 64 + 0 + + + + + + + + End Angle: + + + false + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + Reversed + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + Alt+O + + + true + + + + + + + Cancel + + + Esc + + + + + + + + + + + QG_LayerBox + QWidget +
qg_layerbox.h
+
+ + WidgetPen + QWidget +
widgetpen.h
+
+
+ + leCenterX + leCenterY + leRadius + leAngle1 + leAngle2 + cbReversed + bOk + bCancel + + + + + bOk + clicked() + DlgArc + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgArc + reject() + + + 20 + 20 + + + 20 + 20 + + + + +
diff --git a/src/forms/dlgcircle.cpp b/src/forms/dlgcircle.cpp new file mode 100644 index 0000000..72fc3fc --- /dev/null +++ b/src/forms/dlgcircle.cpp @@ -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 +// +// 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 index 0000000..f722991 --- /dev/null +++ b/src/forms/dlgcircle.h @@ -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 index 0000000..7e4d626 --- /dev/null +++ b/src/forms/dlgcircle.ui @@ -0,0 +1,271 @@ + + + DlgCircle + + + + 0 + 0 + 380 + 192 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Circle + + + + + + + + + + + + + 0 + 0 + + + + Layer: + + + false + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + Geometry + + + + + + Radius: + + + false + + + + + + + + 64 + 0 + + + + + + + + Center (y): + + + false + + + + + + + + 64 + 0 + + + + + + + + Center (x): + + + false + + + + + + + + 64 + 0 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + Alt+O + + + true + + + + + + + Cancel + + + Esc + + + + + + + + + + + QG_LayerBox + QWidget +
qg_layerbox.h
+
+ + WidgetPen + QWidget +
widgetpen.h
+
+
+ + leCenterX + leCenterY + leRadius + bOk + bCancel + + + + + bOk + clicked() + DlgCircle + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgCircle + reject() + + + 20 + 20 + + + 20 + 20 + + + + +
diff --git a/src/forms/dlgdimension.cpp b/src/forms/dlgdimension.cpp new file mode 100644 index 0000000..a31d4b3 --- /dev/null +++ b/src/forms/dlgdimension.cpp @@ -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 +// +// 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 index 0000000..f4bdaa2 --- /dev/null +++ b/src/forms/dlgdimension.h @@ -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 index 0000000..37336e9 --- /dev/null +++ b/src/forms/dlgdimension.ui @@ -0,0 +1,180 @@ + + + DlgDimension + + + + 0 + 0 + 424 + 218 + + + + + 0 + 0 + + + + Dimension + + + false + + + + 6 + + + 11 + + + + + + + + + + + + 0 + 0 + + + + Layer: + + + false + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 79 + 20 + + + + + + + + &OK + + + Alt+O + + + true + + + true + + + + + + + Cancel + + + Esc + + + true + + + + + + + + + + + QG_LayerBox + QWidget +
qg_layerbox.h
+
+ + WidgetPen + QWidget +
widgetpen.h
+
+ + DimensionLabelEditor + QWidget +
dimensionlabeleditor.h
+
+
+ + + + bCancel + clicked() + DlgDimension + reject() + + + 20 + 20 + + + 20 + 20 + + + + + bOk + clicked() + DlgDimension + accept() + + + 20 + 20 + + + 20 + 20 + + + + +
diff --git a/src/forms/dlgdimlinear.cpp b/src/forms/dlgdimlinear.cpp new file mode 100644 index 0000000..e4cfea0 --- /dev/null +++ b/src/forms/dlgdimlinear.cpp @@ -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 +// +// 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 index 0000000..a6371e0 --- /dev/null +++ b/src/forms/dlgdimlinear.h @@ -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 index 0000000..1aeed2c --- /dev/null +++ b/src/forms/dlgdimlinear.ui @@ -0,0 +1,240 @@ + + + DlgDimLinear + + + + 0 + 0 + 424 + 218 + + + + + 0 + 0 + + + + Linear Dimension + + + false + + + + 6 + + + 11 + + + + + + + + + + + + 0 + 0 + + + + Layer: + + + false + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + Geometry + + + + + + + 0 + 0 + + + + + 0 + 19 + + + + QFrame::NoFrame + + + QFrame::Plain + + + Angle: + + + false + + + + + + + + 0 + 0 + + + + + 0 + 19 + + + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 79 + 20 + + + + + + + + &OK + + + Alt+O + + + true + + + true + + + + + + + Cancel + + + Esc + + + true + + + + + + + + + + + QG_LayerBox + QWidget +
qg_layerbox.h
+
+ + WidgetPen + QWidget +
widgetpen.h
+
+ + DimensionLabelEditor + QWidget +
dimensionlabeleditor.h
+
+
+ + + + bCancel + clicked() + DlgDimLinear + reject() + + + 20 + 20 + + + 20 + 20 + + + + + bOk + clicked() + DlgDimLinear + accept() + + + 20 + 20 + + + 20 + 20 + + + + +
diff --git a/src/forms/dlgellipse.cpp b/src/forms/dlgellipse.cpp new file mode 100644 index 0000000..d81f11f --- /dev/null +++ b/src/forms/dlgellipse.cpp @@ -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 +// +// 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 index 0000000..3af14c1 --- /dev/null +++ b/src/forms/dlgellipse.h @@ -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 index 0000000..6f8df07 --- /dev/null +++ b/src/forms/dlgellipse.ui @@ -0,0 +1,363 @@ + + + DlgEllipse + + + + 0 + 0 + 394 + 307 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Ellipse + + + + + + + + + + + + + 0 + 0 + + + + Layer: + + + false + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + Geometry + + + + + + Center (y): + + + false + + + + + + + + 64 + 0 + + + + + + + + Center (x): + + + false + + + + + + + + 64 + 0 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + End Angle: + + + false + + + + + + + + 64 + 0 + + + + + + + + + 64 + 0 + + + + + + + + Start Angle: + + + false + + + + + + + Rotation: + + + false + + + + + + + + 64 + 0 + + + + + + + + + 64 + 0 + + + + + + + + Minor: + + + false + + + + + + + Major: + + + false + + + + + + + + 64 + 0 + + + + + + + + Reversed + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + Alt+O + + + true + + + + + + + Cancel + + + Esc + + + + + + + + + + + QG_LayerBox + QWidget +
qg_layerbox.h
+
+ + WidgetPen + QWidget +
widgetpen.h
+
+
+ + leCenterX + leCenterY + leMajor + leMinor + leRotation + leAngle1 + leAngle2 + cbReversed + bOk + bCancel + + + + + bOk + clicked() + DlgEllipse + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgEllipse + reject() + + + 20 + 20 + + + 20 + 20 + + + + +
diff --git a/src/forms/dlghatch.cpp b/src/forms/dlghatch.cpp new file mode 100644 index 0000000..1b5d578 --- /dev/null +++ b/src/forms/dlghatch.cpp @@ -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 +// +// 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 index 0000000..a654d30 --- /dev/null +++ b/src/forms/dlghatch.h @@ -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 index 0000000..556c86d --- /dev/null +++ b/src/forms/dlghatch.ui @@ -0,0 +1,342 @@ + + + DlgHatch + + + + 0 + 0 + 438 + 294 + + + + Choose Hatch Attributes + + + + + + + + Pattern + + + + + + + + + + + + Angle: + + + false + + + + + + + Scale: + + + false + + + + + + + + + + Solid Fill + + + + + + + + + + Preview + + + + + + Enable Preview + + + + + + + + + + + + + + + 6 + + + 0 + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + &OK + + + Alt+O + + + true + + + true + + + + + + + Cancel + + + + + + true + + + + + + + + + + + QG_PatternBox + QWidget +
qg_patternbox.h
+
+ + QG_GraphicView + QWidget +
qg_graphicview.h
+
+
+ + cbSolid + leScale + leAngle + cbEnablePreview + buttonOk + buttonCancel + + + + + buttonOk + clicked() + DlgHatch + accept() + + + 20 + 20 + + + 20 + 20 + + + + + buttonCancel + clicked() + DlgHatch + reject() + + + 20 + 20 + + + 20 + 20 + + + + + cbSolid + toggled(bool) + cbPattern + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + cbSolid + toggled(bool) + leScale + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + cbSolid + toggled(bool) + lScale + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + cbSolid + toggled(bool) + leAngle + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + cbSolid + toggled(bool) + lAngle + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + cbPattern + patternChanged(RS_Pattern*) + DlgHatch + updatePreview(RS_Pattern*) + + + 20 + 20 + + + 20 + 20 + + + + + cbSolid + toggled(bool) + DlgHatch + updatePreview() + + + 20 + 20 + + + 20 + 20 + + + + + leAngle + textChanged(QString) + DlgHatch + updatePreview() + + + 20 + 20 + + + 20 + 20 + + + + + cbEnablePreview + toggled(bool) + DlgHatch + updatePreview() + + + 20 + 20 + + + 20 + 20 + + + + +
diff --git a/src/forms/dlginsert.cpp b/src/forms/dlginsert.cpp new file mode 100644 index 0000000..591f8c9 --- /dev/null +++ b/src/forms/dlginsert.cpp @@ -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 +// +// 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 index 0000000..2255402 --- /dev/null +++ b/src/forms/dlginsert.h @@ -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 index 0000000..60ef49f --- /dev/null +++ b/src/forms/dlginsert.ui @@ -0,0 +1,373 @@ + + + DlgInsert + + + + 0 + 0 + 457 + 310 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Insert + + + + + + + + + + + + + 0 + 0 + + + + Layer: + + + false + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + Geometry + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + + 64 + 0 + + + + + + + + + 64 + 0 + + + + + + + + Insertion point (x): + + + false + + + + + + + Insertion point (y): + + + false + + + + + + + + 64 + 0 + + + + + + + + Scale: + + + false + + + + + + + Angle: + + + false + + + + + + + + 64 + 0 + + + + + + + + Rows: + + + false + + + + + + + + 64 + 0 + + + + + + + + + 64 + 0 + + + + + + + + Columns: + + + false + + + + + + + Row Spacing: + + + false + + + + + + + + 64 + 0 + + + + + + + + + 64 + 0 + + + + + + + + Column Spacing: + + + false + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + true + + + + + + + Cancel + + + Esc + + + + + + + + + + + QG_LayerBox + QWidget +
qg_layerbox.h
+
+ + WidgetPen + QWidget +
widgetpen.h
+
+
+ + leInsertionPointX + leInsertionPointY + leScale + leAngle + leRows + leCols + leRowSpacing + leColSpacing + bOk + bCancel + + + + + bOk + clicked() + DlgInsert + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgInsert + reject() + + + 20 + 20 + + + 20 + 20 + + + + +
diff --git a/src/forms/dlgline.cpp b/src/forms/dlgline.cpp new file mode 100644 index 0000000..8607538 --- /dev/null +++ b/src/forms/dlgline.cpp @@ -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 +// +// 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 index 0000000..72d15ab --- /dev/null +++ b/src/forms/dlgline.h @@ -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 index 0000000..b5140d0 --- /dev/null +++ b/src/forms/dlgline.ui @@ -0,0 +1,289 @@ + + + DlgLine + + + + 0 + 0 + 457 + 195 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Line + + + + + + + + + + + + + 0 + 0 + + + + Layer: + + + false + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + Geometry + + + + + + End point (x): + + + false + + + + + + + + 64 + 0 + + + + + + + + + 64 + 0 + + + + + + + + End point (y): + + + false + + + + + + + Start point (y): + + + false + + + + + + + + 64 + 0 + + + + + + + + Start point (x): + + + false + + + + + + + + 64 + 0 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 1 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 1 + + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + true + + + + + + + Cancel + + + Esc + + + + + + + + + + + QG_LayerBox + QWidget +
qg_layerbox.h
+
+ + WidgetPen + QWidget +
widgetpen.h
+
+
+ + leStartX + leStartY + leEndX + leEndY + bOk + bCancel + + + + + bOk + clicked() + DlgLine + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgLine + reject() + + + 20 + 20 + + + 20 + 20 + + + + +
diff --git a/src/forms/dlgmirror.cpp b/src/forms/dlgmirror.cpp new file mode 100644 index 0000000..b370633 --- /dev/null +++ b/src/forms/dlgmirror.cpp @@ -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 +// +// 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 index 0000000..4c4f038 --- /dev/null +++ b/src/forms/dlgmirror.h @@ -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 index 0000000..85961dc --- /dev/null +++ b/src/forms/dlgmirror.ui @@ -0,0 +1,202 @@ + + + DlgMirror + + + + 0 + 0 + 342 + 192 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Mirroring Options + + + + + + + + + :/res/qg_dlgmodifymirror.xpm + + + Qt::AlignCenter + + + false + + + + + + + Number of copies + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Delete Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Keep Original + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 21 + + + + + + + + + + + Use current &attributes + + + + + + + Use current &layer + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + true + + + + + + + Cancel + + + Esc + + + + + + + + + + + + + + bOk + clicked() + DlgMirror + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgMirror + reject() + + + 20 + 20 + + + 20 + 20 + + + + + diff --git a/src/forms/dlgmove.cpp b/src/forms/dlgmove.cpp new file mode 100644 index 0000000..7e750b0 --- /dev/null +++ b/src/forms/dlgmove.cpp @@ -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 +// +// 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 index 0000000..39d47f7 --- /dev/null +++ b/src/forms/dlgmove.h @@ -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 index 0000000..17f8870 --- /dev/null +++ b/src/forms/dlgmove.ui @@ -0,0 +1,275 @@ + + + DlgMove + + + + 0 + 0 + 326 + 192 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Moving Options + + + + + + + + + :/res/qg_dlgmodifymove.xpm + + + Qt::AlignCenter + + + false + + + + + + + Number of copies + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Delete Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Keep Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Multiple Copies + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 130 + + + + + + + + + + + Use current &attributes + + + + + + + Use current &layer + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + Alt+O + + + true + + + + + + + Cancel + + + Esc + + + + + + + + + + + + + + rbMove + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbCopy + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbMultiCopy + toggled(bool) + leNumber + setEnabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + bOk + clicked() + DlgMove + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgMove + reject() + + + 20 + 20 + + + 20 + 20 + + + + + diff --git a/src/forms/dlgmoverotate.cpp b/src/forms/dlgmoverotate.cpp new file mode 100644 index 0000000..a064544 --- /dev/null +++ b/src/forms/dlgmoverotate.cpp @@ -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 +// +// 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 index 0000000..d54e4ac --- /dev/null +++ b/src/forms/dlgmoverotate.h @@ -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 index 0000000..8ea67cd --- /dev/null +++ b/src/forms/dlgmoverotate.ui @@ -0,0 +1,323 @@ + + + DlgMoveRotate + + + + 0 + 0 + 338 + 219 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Move/Rotate Options + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + true + + + + + + + Cancel + + + Esc + + + + + + + + + + + + + + :/res/qg_dlgmodifymoverotate.xpm + + + Qt::AlignCenter + + + false + + + + + + + + + &Angle (a): + + + false + + + leAngle + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 41 + 20 + + + + + + + + + + + + + Use current &attributes + + + + + + + Use current &layer + + + + + + + + + Number of copies + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Delete Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Keep Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Multiple Copies + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 21 + + + + + + + + + + + + rbMove + rbCopy + rbMultiCopy + leNumber + leAngle + cbCurrentAttributes + cbCurrentLayer + bOk + bCancel + + + + + + + rbMove + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbCopy + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbMultiCopy + toggled(bool) + leNumber + setEnabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + bOk + clicked() + DlgMoveRotate + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgMoveRotate + reject() + + + 20 + 20 + + + 20 + 20 + + + + + diff --git a/src/forms/dlgpoint.cpp b/src/forms/dlgpoint.cpp new file mode 100644 index 0000000..4762698 --- /dev/null +++ b/src/forms/dlgpoint.cpp @@ -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 +// +// 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 index 0000000..46c624a --- /dev/null +++ b/src/forms/dlgpoint.h @@ -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 index 0000000..1a670d7 --- /dev/null +++ b/src/forms/dlgpoint.ui @@ -0,0 +1,247 @@ + + + DlgPoint + + + + 0 + 0 + 457 + 192 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Point + + + + + + + + + + + + + 0 + 0 + + + + Layer: + + + false + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + Geometry + + + + + + Position (y): + + + false + + + + + + + + 64 + 0 + + + + + + + + Position (x): + + + false + + + + + + + + 64 + 0 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 1 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 1 + + + + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + true + + + + + + + Cancel + + + Esc + + + + + + + + + + + QG_LayerBox + QWidget +
qg_layerbox.h
+
+ + WidgetPen + QWidget +
widgetpen.h
+
+
+ + lePosX + lePosY + bOk + bCancel + + + + + bOk + clicked() + DlgPoint + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgPoint + reject() + + + 20 + 20 + + + 20 + 20 + + + + +
diff --git a/src/forms/dlgrotate.cpp b/src/forms/dlgrotate.cpp new file mode 100644 index 0000000..30f32d1 --- /dev/null +++ b/src/forms/dlgrotate.cpp @@ -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 +// +// 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 index 0000000..ebc7468 --- /dev/null +++ b/src/forms/dlgrotate.h @@ -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 index 0000000..93c4f7a --- /dev/null +++ b/src/forms/dlgrotate.ui @@ -0,0 +1,331 @@ + + + DlgRotate + + + + 0 + 0 + 338 + 192 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Rotation Options + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + true + + + + + + + &Cancel + + + Esc + + + + + + + + + Number of copies + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Delete Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Keep Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Multiple Copies: + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 146 + + + + + + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + :/res/qg_dlgmodifyrotate.xpm + + + Qt::AlignCenter + + + false + + + + + + + + + &Angle (a): + + + false + + + leAngle + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 31 + 20 + + + + + + + + + 0 + 0 + + + + + + + + + + Use current &attributes + + + + + + + Use current &layer + + + + + + + + + + + + + + rbMove + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbCopy + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbMultiCopy + toggled(bool) + leNumber + setEnabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + bOk + clicked() + DlgRotate + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgRotate + reject() + + + 20 + 20 + + + 20 + 20 + + + + + diff --git a/src/forms/dlgrotate2.cpp b/src/forms/dlgrotate2.cpp new file mode 100644 index 0000000..824b7a7 --- /dev/null +++ b/src/forms/dlgrotate2.cpp @@ -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 +// +// 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 index 0000000..c951990 --- /dev/null +++ b/src/forms/dlgrotate2.h @@ -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 index 0000000..4e0aab0 --- /dev/null +++ b/src/forms/dlgrotate2.ui @@ -0,0 +1,348 @@ + + + DlgRotate2 + + + + 0 + 0 + 364 + 222 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Rotate Two Options + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + true + + + + + + + Cancel + + + + + + + + + + + + Number of copies + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Delete Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Keep Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Multiple Copies + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 21 + + + + + + + + + + + + + + + + :/res/qg_dlgmodifyrotate2.xpm + + + Qt::AlignCenter + + + false + + + + + + + + + Angle (&a): + + + false + + + leAngle1 + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 41 + 20 + + + + + + + + + + + + + + + Angle (&b): + + + false + + + leAngle2 + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 41 + 20 + + + + + + + + + + + + + Use current &attributes + + + + + + + Use current &layer + + + + + + + + + + + + + + rbMove + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbCopy + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbMultiCopy + toggled(bool) + leNumber + setEnabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + bOk + clicked() + DlgRotate2 + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgRotate2 + reject() + + + 20 + 20 + + + 20 + 20 + + + + + diff --git a/src/forms/dlgscale.cpp b/src/forms/dlgscale.cpp new file mode 100644 index 0000000..95078ee --- /dev/null +++ b/src/forms/dlgscale.cpp @@ -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 +// +// 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 index 0000000..fb2bce6 --- /dev/null +++ b/src/forms/dlgscale.h @@ -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 index 0000000..3ebf0fd --- /dev/null +++ b/src/forms/dlgscale.ui @@ -0,0 +1,319 @@ + + + DlgScale + + + + 0 + 0 + 339 + 196 + + + + + 0 + 0 + + + + + 300 + 190 + + + + Scaling Options + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + &OK + + + true + + + + + + + &Cancel + + + Esc + + + + + + + + + + + + + + :/res/qg_dlgmodifyscale.xpm + + + Qt::AlignCenter + + + false + + + + + + + + + &Factor (f): + + + false + + + leFactor + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 31 + 20 + + + + + + + + + 0 + 0 + + + + + + + + + + Use current &attributes + + + + + + + Use current &layer + + + + + + + + + Number of copies + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Delete Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Keep Original + + + + + + + + 0 + 0 + + + + + 0 + 18 + + + + &Multiple Copies + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 16 + + + + + + + + + + + + + + + + rbMove + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbCopy + toggled(bool) + leNumber + setDisabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + rbMultiCopy + toggled(bool) + leNumber + setEnabled(bool) + + + 20 + 20 + + + 20 + 20 + + + + + bOk + clicked() + DlgScale + accept() + + + 20 + 20 + + + 20 + 20 + + + + + bCancel + clicked() + DlgScale + reject() + + + 20 + 20 + + + 20 + 20 + + + + + diff --git a/src/forms/dlgspline.cpp b/src/forms/dlgspline.cpp new file mode 100644 index 0000000..0437cc4 --- /dev/null +++ b/src/forms/dlgspline.cpp @@ -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 +// +// 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 index 0000000..caf8852 --- /dev/null +++ b/src/forms/dlgspline.h @@ -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 index 0000000..f1f6172 --- /dev/null +++ b/src/forms/insertoptions.cpp @@ -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 +// +// 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 index 0000000..522046a --- /dev/null +++ b/src/forms/insertoptions.h @@ -0,0 +1,38 @@ +#ifndef __INSERTOPTIONS_H__ +#define __INSERTOPTIONS_H__ + +#include + +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 index 0000000..e19a7d9 --- /dev/null +++ b/src/forms/libraryinsertoptions.cpp @@ -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 +// +// 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 index 0000000..2cbe83c --- /dev/null +++ b/src/forms/libraryinsertoptions.h @@ -0,0 +1,31 @@ +#ifndef __LIBRARYINSERTOPTIONS_H__ +#define __LIBRARYINSERTOPTIONS_H__ + +#include + +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__ diff --git a/src/forms/lineoptions.cpp b/src/forms/lineoptions.cpp index 289d85a..0cca77d 100644 --- a/src/forms/lineoptions.cpp +++ b/src/forms/lineoptions.cpp @@ -19,9 +19,21 @@ #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. :-) diff --git a/src/forms/lineoptions.h b/src/forms/lineoptions.h index 59ae119..a1fab0c 100644 --- a/src/forms/lineoptions.h +++ b/src/forms/lineoptions.h @@ -1,11 +1,10 @@ #ifndef __LINEOPTIONS_H__ #define __LINEOPTIONS_H__ -#include "ui_lineoptions.h" +#include 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__ diff --git a/src/widgets/qg_dialogfactory.cpp b/src/widgets/qg_dialogfactory.cpp index 97b28e9..b30b5de 100644 --- a/src/widgets/qg_dialogfactory.cpp +++ b/src/widgets/qg_dialogfactory.cpp @@ -19,64 +19,12 @@ #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" @@ -87,11 +35,29 @@ #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 /** -- 2.37.2