Engauge Digitizer 2
Loading...
Searching...
No Matches
DlgSettingsGuideline.h
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
7#ifndef DLG_SETTINGS_GUIDELINE_H
8#define DLG_SETTINGS_GUIDELINE_H
9
11#include <QString>
12#include <QStringList>
13
14class ButtonWhatsThis;
15class CentipedeDebugPolarData;
17class QComboBox;
18class QGraphicsEllipseItem;
19class QGraphicsItem;
20class QGraphicsLineItem;
21class QGraphicsScene;
22class QGridLayout;
23class QPushButton;
24class QSpinBox;
25class ViewPreview;
26
29{
30 Q_OBJECT;
31
32public:
35 virtual ~DlgSettingsGuideline();
36
37 virtual void createOptionalSaveDefault (QHBoxLayout *layout);
38 virtual QWidget *createSubPanel ();
39 virtual void load (CmdMediator &cmdMediator);
40 virtual void setSmallDialogs (bool smallDialogs);
41
42private slots:
43 void slotCreationCircleRadius (int radius);
44 void slotLineColor (const QString &);
45 void slotLineWidthActive (int lineWidth);
46 void slotLineWidthInactive (int lineWidth);
47 void slotWhatsThis();
48
49protected:
50 virtual void handleOk ();
51
52private:
53
54 void createCircle ();
55 void createControls (QGridLayout *layout,
56 int &row);
57 void createLines();
58 void createLinesCartesian();
59 void createLinesPolar();
60 void createPreview (QGridLayout *layout, int &row);
61 void displayDebugPolarData (const CentipedeDebugPolarData &debugPolarData);
62 void killCentipede ();
63 void loadImages (CmdMediator &cmdMediator);
64 double radiusOfClosestSide (const QPointF &posLeft,
65 const QPointF &posRight,
66 const QPointF &posTop,
67 const QPointF &posBottom) const;
68 void removeOldWidgetsActive();
69 void removeOldWidgetsInactive();
70 void safeSetEllipseGeometry (QGraphicsEllipseItem *ellipse,
71 const QRectF &rectBounding,
72 double angleRotation,
73 double angleLow,
74 double angleHigh);
75 void safeSetEllipseStyle (QGraphicsEllipseItem *ellipse,
76 double width);
77 void safeSetLine (QGraphicsLineItem *item,
78 const QPointF &posStart,
79 const QPointF &posStop) const;
80 void safeSetLineStyle (QGraphicsLineItem *line,
81 double width);
82 void safeSetPos (QGraphicsEllipseItem *ellipse,
83 const QPointF &pos);
84 void safeSetRect (QGraphicsEllipseItem *ellipse,
85 const QRectF &rect);
86 void safeSetRotation (QGraphicsEllipseItem *ellipse,
87 double angle);
88 void updateControls();
89 void updatePreview();
90 void updatePreviewGeometry();
91 void updatePreviewGeometryCentipedeCartesian (const QPointF &posClickScreen,
92 double xMin,
93 double xMax,
94 double yMin,
95 double yMax);
96 void updatePreviewGeometryCentipedePolar (const QPointF &posOriginScreen,
97 const QPointF &posClickScreen);
98 void updatePreviewGeometryCirclePolar (const QPointF &posClickScreen);
99 void updatePreviewGeometryGuidelineCartesian (double width,
100 double height,
101 QPointF &posClickScreen,
102 double xMin,
103 double xMax,
104 double yMin,
105 double yMax);
106 QPointF updatePreviewGeometryGuidelinePolar (double width,
107 double height,
108 QPointF &posClickScreen);
109 void updatePreviewStyle();
110
111 ButtonWhatsThis *m_btnWhatsThis;
112
113 QSpinBox *m_spinCreationCircleRadius;
114 QComboBox *m_lineColor;
115 QSpinBox *m_spinLineWidthActive;
116 QSpinBox *m_spinLineWidthInactive;
117
118 QGraphicsScene *m_scenePreviewActive;
119 ViewPreview *m_viewPreviewActive;
120
121 QGraphicsScene *m_scenePreviewInactive;
122 ViewPreview *m_viewPreviewInactive;
123
124 // Drawn widgets for active
125 QGraphicsLineItem *m_itemGuidelineXTActive;
126 QGraphicsLineItem *m_itemGuidelineYActive;
127 QGraphicsEllipseItem *m_itemGuidelineRActive;
128 QGraphicsLineItem *m_itemCentipedeXTActive;
129 QGraphicsLineItem *m_itemCentipedeYActive;
130 QGraphicsEllipseItem *m_itemCentipedeRActive;
131 QGraphicsEllipseItem *m_itemCentipedeCircleActive;
132
133 // Drawn widgets for inactive. Note that a centipede can never be inactive
134 QGraphicsLineItem *m_itemGuidelineXTInactive;
135 QGraphicsLineItem *m_itemGuidelineYInactive;
136 QGraphicsEllipseItem *m_itemGuidelineRInactive;
137 DocumentModelGuideline *m_modelGuidelineBefore;
138 DocumentModelGuideline *m_modelGuidelineAfter;
139};
140
141#endif // DLG_SETTINGS_GUIDELINE_H
Unobtrusive button to trigger QWhatsThis since some operating systems (Linux Mint) do not show WhatsT...
Command queue stack.
Definition CmdMediator.h:24
DlgSettingsAbstractBase(const QString &title, const QString &dialogName, MainWindow &mainWindow)
Single constructor.
CmdMediator & cmdMediator()
Provide access to Document information wrapped inside CmdMediator.
MainWindow & mainWindow()
Get method for MainWindow.
virtual void setSmallDialogs(bool smallDialogs)
If false then dialogs have a minimum size so all controls are visible.
DlgSettingsGuideline(MainWindow &mainWindow)
Single constructor.
virtual QWidget * createSubPanel()
Create dialog-specific panel to which base class will add Ok and Cancel buttons.
virtual void createOptionalSaveDefault(QHBoxLayout *layout)
Let subclass define an optional Save As Default button.
virtual void load(CmdMediator &cmdMediator)
Load settings from Document.
virtual void handleOk()
Process slotOk.
Model for managing the coordinate values corresponding Guidelines.
Main window consisting of menu, graphics scene, status bar and optional toolbars as a Single Document...
Definition MainWindow.h:95
Class that modifies QGraphicsView to automatically expand/shrink the view to fit the window,...
Definition ViewPreview.h:15