Engauge Digitizer 2
Loading...
Searching...
No Matches
ChecklistGuidePageCurves.cpp
Go to the documentation of this file.
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
8#include "ChecklistLineEdit.h"
9#include "Curve.h"
10#include "Logger.h"
11#include <QHeaderView>
12#include <QRadioButton>
13#include <QTableWidget>
14#include "SettingsForGraph.h"
15
17 ChecklistGuidePage (title)
18{
19 LOG4CPP_INFO_S ((*mainCat)) << "ChecklistGuidePageCurves::ChecklistGuidePageCurves";
20
21 const QString WHATS_THIS_CURVE (tr ("Curve name. Empty if unused."));
22 const QString WHATS_THIS_LINES (tr ("Draw lines between points in each curve."));
23 const QString WHATS_THIS_POINTS (tr ("Draw points in each curve, without lines between the points."));
24
25 addHtml (QString ("<p>%1</p>")
26 .arg (tr ("What are the names of the curves that are to be digitized? At least one entry is required.")));
27
28 m_edit = new ChecklistLineEdit* [unsigned (NUM_CURVE_NAMES())];
29
30 for (int i = 0; i < NUM_CURVE_NAMES(); i++) {
31 m_edit [i] = new ChecklistLineEdit;
32 connect (m_edit [i], SIGNAL (signalKeyRelease()), this, SLOT (slotTableChanged()));
33 addLineEdit (m_edit [i],
34 WHATS_THIS_CURVE);
35 }
36
37 SettingsForGraph settingsForGraph;
38 QString curveName = settingsForGraph.defaultCurveName (1,
40
41 m_edit [0]->setText (curveName);
42
43 addHtml ("<p>&nbsp;</p>");
44
45 addHtml (QString ("<p>%1</p>")
46 .arg (tr ("How are those curves drawn?")));
47
48 m_btnLines = addLabelAndRadioButton (tr ("With lines (with or without points)"),
49 WHATS_THIS_LINES);
50 m_btnPoints = addLabelAndRadioButton (tr ("With points only (no lines between points)"),
51 WHATS_THIS_POINTS);
52
53 m_btnLines->setChecked (true); // Default encourages digitizing using the lines, since that is easier
54}
55
57{
58 QStringList curveNames;
59
60 for (int i = 0; i < NUM_CURVE_NAMES(); i++) {
61 const QLineEdit *edit = m_edit [i];
62 QString text = edit->text();
63 if (!text.isEmpty()) {
64 curveNames << text;
65 }
66 }
67
68 return curveNames;
69}
70
71bool ChecklistGuidePageCurves::curveNamesAreAllUnique() const
72{
73 LOG4CPP_INFO_S ((*mainCat)) << "ChecklistGuidePageCurves::curveNamesAreAllUnique";
74
75 QStringList names = curveNames();
76
77 int numberDuplicatesRemoved = names.removeDuplicates();
78
79 return (numberDuplicatesRemoved == 0);
80}
81
83{
84 LOG4CPP_INFO_S ((*mainCat)) << "ChecklistGuidePageCurves::isComplete";
85
86 return !curveNames().isEmpty () &&
87 curveNamesAreAllUnique ();
88}
89
91{
92 LOG4CPP_INFO_S ((*mainCat)) << "ChecklistGuidePageCurves::slotTableChanged";
93
94 emit completeChanged();
95}
96
98{
99 return m_btnLines->isChecked();
100}
const QString DEFAULT_GRAPH_CURVE_NAME
log4cpp::Category * mainCat
Definition Logger.cpp:14
void slotTableChanged()
Update after curve table update.
virtual bool isComplete() const
Validate the contents of this page.
QStringList curveNames() const
Wizard selection for curve names.
ChecklistGuidePageCurves(const QString &title)
Single constructor.
bool withLines() const
Drawn with lines, else points.
QRadioButton * addLabelAndRadioButton(const QString &label, const QString &whatsThis)
Insert radio button and corresponding label.
void addLineEdit(ChecklistLineEdit *edit, const QString &whatsThis)
Insert line edit.
ChecklistGuidePage(const QString &title)
Single constructor.
void addHtml(const QString &html)
Insert html for display.
Adds key event handling to QLineEdit.
Manage storage and retrieval of the settings for the curves.
QString defaultCurveName(int indexOneBased, const QString &defaultName) const
Default graph name for the specified curve index.
#define LOG4CPP_INFO_S(logger)
Definition convenience.h:18