]> Shamusworld >> Repos - architektonas/blob - src/forms/dlgrotate.cpp
6c7ea60917148ca59188bddce5db5d057232a982
[architektonas] / src / forms / dlgrotate.cpp
1 // dlgrotate.cpp
2 //
3 // Part of the Architektonas Project
4 // Originally part of QCad Community Edition by Andrew Mustun
5 // Extensively rewritten and refactored by James L. Hammons
6 // Portions copyright (C) 2001-2003 RibbonSoft
7 // Copyright (C) 2010 Underground Software
8 // See the README and GPLv2 files for licensing and warranty information
9 //
10 // JLH = James L. Hammons <jlhamm@acm.org>
11 //
12 // Who  When        What
13 // ---  ----------  -----------------------------------------------------------
14 // JLH  06/12/2010  Created this file. :-)
15 //
16
17 #include "dlgrotate.h"
18
19 #include "rs_modification.h"
20 #include "settings.h"
21
22 DlgRotate::DlgRotate(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
23         QDialog(parent, flags)
24 {
25         ui.setupUi(this);
26
27         settings.beginGroup("Modify");
28         copies = settings.value("RotateCopies", "10").toString();
29         numberMode = settings.value("RotateMode", 0).toInt();
30         angle = settings.value("RotateAngle", "90.0").toString();
31         useCurrentLayer = settings.value("RotateUseCurrentLayer", false).toBool();
32         useCurrentAttributes = settings.value("RotateUseCurrentAttributes", false).toBool();
33         settings.endGroup();
34
35         switch (numberMode)
36         {
37         case 0:
38                 ui.rbMove->setChecked(true);
39                 break;
40
41         case 1:
42                 ui.rbCopy->setChecked(true);
43                 break;
44
45         case 2:
46                 ui.rbMultiCopy->setChecked(true);
47                 break;
48
49         default:
50                 break;
51         }
52
53         ui.leNumber->setText(copies);
54         ui.leAngle->setText(angle);
55         ui.cbCurrentAttributes->setChecked(useCurrentAttributes);
56         ui.cbCurrentLayer->setChecked(useCurrentLayer);
57 }
58
59 DlgRotate::~DlgRotate()
60 {
61         settings.beginGroup("Modify");
62         settings.setValue("RotateCopies", ui.leNumber->text());
63
64         if (ui.rbMove->isChecked())
65                 numberMode = 0;
66         else if (ui.rbCopy->isChecked())
67                 numberMode = 1;
68         else
69                 numberMode = 2;
70
71         settings.setValue("RotateMode", numberMode);
72         settings.setValue("RotateAngle", ui.leAngle->text());
73         settings.setValue("RotateUseCurrentLayer", ui.cbCurrentLayer->isChecked());
74         settings.setValue("RotateUseCurrentAttributes", ui.cbCurrentAttributes->isChecked());
75         settings.endGroup();
76 }
77
78 void DlgRotate::setData(RS_RotateData * d)
79 {
80         data = d;
81 }
82
83 void DlgRotate::updateData()
84 {
85         if (ui.rbMove->isChecked())
86                 data->number = 0;
87         else if (ui.rbCopy->isChecked())
88                 data->number = 1;
89         else
90                 data->number = ui.leNumber->text().toInt();
91
92         data->angle = RS_Math::deg2rad(RS_Math::eval(ui.leAngle->text()));
93         data->useCurrentAttributes = ui.cbCurrentAttributes->isChecked();
94         data->useCurrentLayer = ui.cbCurrentLayer->isChecked();
95 }