1 /******************************************************************************************************
2 * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3 * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4 * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5 ******************************************************************************************************/
6
7 #include "DlgImportAdvanced.h"
8 #include "Logger.h"
9 #include "MainWindow.h"
10 #include <QGridLayout>
11 #include <QLabel>
12 #include <QRadioButton>
13 #include <QSpinBox>
14
15 const int MINIMUM_DIALOG_WIDTH_COORDS = 800;
16
DlgImportAdvanced(MainWindow & mainWindow)17 DlgImportAdvanced::DlgImportAdvanced(MainWindow &mainWindow) :
18 DlgSettingsAbstractBase (tr ("Import Advanced"),
19 "DlgImportAdvanced",
20 mainWindow)
21 {
22 LOG4CPP_INFO_S ((*mainCat)) << "DlgImportAdvanced::DlgImportAdvanced";
23
24 QWidget *subPanel = createSubPanel ();
25 finishPanel (subPanel,
26 MINIMUM_DIALOG_WIDTH_COORDS);
27
28 // Accept even the default value without any additional actions, rather than delay the Ok button to after a change
29 enableOk (true);
30 setDisableOkAtStartup (false);
31 }
32
createOptionalSaveDefault(QHBoxLayout *)33 void DlgImportAdvanced::createOptionalSaveDefault (QHBoxLayout * /* layout */)
34 {
35 LOG4CPP_INFO_S ((*mainCat)) << "DlgImportAdvanced::createOptionalSaveDefault";
36 }
37
createSubPanel()38 QWidget *DlgImportAdvanced::createSubPanel ()
39 {
40 LOG4CPP_INFO_S ((*mainCat)) << "DlgImportAdvanced::createSubPanel";
41
42 QWidget *subPanel = new QWidget ();
43 QGridLayout *layout = new QGridLayout (subPanel);
44 subPanel->setLayout (layout);
45
46 int row = 0;
47
48 // Coordinate system count
49 QLabel *labelCoordCount = new QLabel (QString ("%1:").arg (tr ("Coordinate System Count")));
50 layout->addWidget (labelCoordCount, row, 1);
51
52 m_spinCoordSystemCount = new QSpinBox;
53 m_spinCoordSystemCount->setMinimum (1);
54 m_spinCoordSystemCount->setValue (1);
55 m_spinCoordSystemCount->setWhatsThis (tr ("Coordinate System Count\n\n"
56 "Specifies the total number of coordinate systems that will be used in the imported image. "
57 "There can be one or more graphs in the image, and each graph can have one or more "
58 "coordinate systems. Each coordinate system is defined by a pair of coordinate axes."));
59 connect (m_spinCoordSystemCount, SIGNAL (valueChanged (const QString &)), this, SLOT (slotCoordSystemCount (const QString &)));
60 layout->addWidget (m_spinCoordSystemCount, row++, 2);
61
62 // Axes point count
63 QLabel *labelPointCount = new QLabel (QString ("%1:").arg (tr ("Graph Coordinates Definition")));
64 layout->addWidget (labelPointCount, row, 1);
65
66 m_btnAxesPointCount2 = new QRadioButton (tr ("1 scale bar - Used for maps with a scale bar defining the map scale"));
67 m_btnAxesPointCount2->setWhatsThis (tr ("The two endpoints of the scale bar will define the scale of a map. The scale bar can "
68 "edited to set its length.\n\n"
69 "This setting is used when importing a map that has only a scale bar "
70 "to define distance, rather than a graph with axes that define two coordinates."));
71 connect (m_btnAxesPointCount2, SIGNAL (toggled (bool)), this, SLOT (slotAxesPointCount (bool)));
72 layout->addWidget (m_btnAxesPointCount2, row++, 2);
73
74 m_btnAxesPointCount3 = new QRadioButton (tr ("3 axis points - Used for graphs with both coordinates defined on each axis"));
75 m_btnAxesPointCount3->setChecked (true); // This is the traditional setting, and so is used as the default
76 m_btnAxesPointCount3->setWhatsThis (tr ("Three axes points will define the coordinate system. Each will have both "
77 "x and y coordinates.\n\n"
78 "This setting is always used when importing images in non-advanced mode.\n\n"
79 "In total, there will be three points as (x1,y1), (x2,y2) "
80 "and (x3,y3)."));
81 connect (m_btnAxesPointCount3, SIGNAL (toggled (bool)), this, SLOT (slotAxesPointCount (bool)));
82 layout->addWidget (m_btnAxesPointCount3, row++, 2);
83
84 m_btnAxesPointCount4 = new QRadioButton (tr ("4 axis points - Used for graphs with only one coordinate defined on each axis"));
85 m_btnAxesPointCount4->setWhatsThis (tr ("Four axes points will define the coordinate system. Each will have a single "
86 "x or y coordinate.\n\n"
87 "This setting is required when the x coordinate of the y axis is unknown, and/or "
88 "the y coordinate of the x axis is unknown.\n\n"
89 "In total, there will be two points on the x axis as (x1) and "
90 "(x2), and two points on the y axis as (y1) and (y2)."));
91 connect (m_btnAxesPointCount4, SIGNAL (toggled (bool)), this, SLOT (slotAxesPointCount (bool)));
92 layout->addWidget (m_btnAxesPointCount4, row++, 2);
93
94 return subPanel;
95 }
96
documentAxesPointsRequired() const97 DocumentAxesPointsRequired DlgImportAdvanced::documentAxesPointsRequired () const
98 {
99 if (m_btnAxesPointCount2->isChecked ()) {
100 return DOCUMENT_AXES_POINTS_REQUIRED_2;
101 } else if (m_btnAxesPointCount3->isChecked ()) {
102 return DOCUMENT_AXES_POINTS_REQUIRED_3;
103 } else {
104 return DOCUMENT_AXES_POINTS_REQUIRED_4;
105 }
106 }
107
handleOk()108 void DlgImportAdvanced::handleOk()
109 {
110 LOG4CPP_INFO_S ((*mainCat)) << "DlgImportAdvanced::handleOk";
111
112 setResult (QDialog::Accepted); // Set return value so Ok button is not handled like the Cancel button
113
114 hide ();
115 }
116
load(CmdMediator &)117 void DlgImportAdvanced::load(CmdMediator & /* cmdMediator */)
118 {
119 LOG4CPP_INFO_S ((*mainCat)) << "DlgImportAdvanced::load";
120 }
121
numberCoordSystem() const122 unsigned int DlgImportAdvanced::numberCoordSystem () const
123 {
124 return unsigned (m_spinCoordSystemCount->value ());
125 }
126
setSmallDialogs(bool)127 void DlgImportAdvanced::setSmallDialogs(bool /* smallDialogs */)
128 {
129 }
130
slotAxesPointCount(bool)131 void DlgImportAdvanced::slotAxesPointCount (bool)
132 {
133 LOG4CPP_INFO_S ((*mainCat)) << "DlgCoordSystem::slotAxesPointCount";
134 }
135
slotCoordSystemCount(const QString &)136 void DlgImportAdvanced::slotCoordSystemCount (const QString &)
137 {
138 LOG4CPP_INFO_S ((*mainCat)) << "DlgCoordSystem::slotImportAdvanced";
139 }
140
141