Seamly2D
Code documentation
dialoginternalpath.h
Go to the documentation of this file.
1 /***************************************************************************
2  * *
3  * Copyright (C) 2017 Seamly, LLC *
4  * *
5  * https://github.com/fashionfreedom/seamly2d *
6  * *
7  ***************************************************************************
8  **
9  ** Seamly2D is free software: you can redistribute it and/or modify
10  ** it under the terms of the GNU General Public License as published by
11  ** the Free Software Foundation, either version 3 of the License, or
12  ** (at your option) any later version.
13  **
14  ** Seamly2D is distributed in the hope that it will be useful,
15  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  ** GNU General Public License for more details.
18  **
19  ** You should have received a copy of the GNU General Public License
20  ** along with Seamly2D. If not, see <http://www.gnu.org/licenses/>.
21  **
22  **************************************************************************
23 
24  ************************************************************************
25  **
26  ** @file dialoginternalpath.h
27  ** @author Roman Telezhynskyi <dismine(at)gmail.com>
28  ** @date 22 11, 2016
29  **
30  ** @brief
31  ** @copyright
32  ** This source code is part of the Valentine project, a pattern making
33  ** program, whose allow create and modeling patterns of clothing.
34  ** Copyright (C) 2016 Seamly2D project
35  ** <https://github.com/fashionfreedom/seamly2d> All Rights Reserved.
36  **
37  ** Seamly2D is free software: you can redistribute it and/or modify
38  ** it under the terms of the GNU General Public License as published by
39  ** the Free Software Foundation, either version 3 of the License, or
40  ** (at your option) any later version.
41  **
42  ** Seamly2D is distributed in the hope that it will be useful,
43  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
44  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45  ** GNU General Public License for more details.
46  **
47  ** You should have received a copy of the GNU General Public License
48  ** along with Seamly2D. If not, see <http://www.gnu.org/licenses/>.
49  **
50  *************************************************************************/
51 
52 #ifndef DIALOGINTERNALPATH_H
53 #define DIALOGINTERNALPATH_H
54 
55 #include "../dialogtool.h"
56 
57 namespace Ui
58 {
59  class DialogInternalPath;
60 }
61 
63 {
64  Q_OBJECT
65 public:
66  explicit DialogInternalPath(const VContainer *data, quint32 toolId, QWidget *parent = nullptr);
67  virtual ~DialogInternalPath();
68 
69  void EnbleShowMode(bool disable);
70 
71  VPiecePath GetPiecePath() const;
72  void SetPiecePath(const VPiecePath &path);
73 
74  quint32 GetPieceId() const;
75  void SetPieceId(quint32 id);
76 
77  QString getSeamAllowanceWidthFormula() const;
78  void setSeamAllowanceWidthFormula(const QString &formula);
79 
80  virtual void SetPiecesList(const QVector<quint32> &list) Q_DECL_OVERRIDE;
81 
82 public slots:
83  virtual void ChosenObject(quint32 id, const SceneObject &type) Q_DECL_OVERRIDE;
84  virtual void ShowDialog(bool click) Q_DECL_OVERRIDE;
85 
86 protected:
87  virtual void CheckState() Q_DECL_FINAL;
88  virtual void ShowVisualization() Q_DECL_OVERRIDE;
89  virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
90 
91 private slots:
92  void ShowContextMenu(const QPoint &pos);
93  void ListChanged();
94  void NameChanged();
95  void nodeChanged(int index);
96  void notchChanged(int index);
99  void notchTypeChanged(int id);
100  void notchSubTypeChanged(int id);
101 
102  void evaluateDefaultWidth();
103  void evaluateBeforeWidth();
104  void evaluateAfterWidth();
105 
109 
110  void defaultWidthChanged();
111  void beforeWidthChanged();
112  void afterWidthChanged();
113 
117 
118 private:
119  Q_DISABLE_COPY(DialogInternalPath)
122  qreal m_saWidth;
123 
124  QTimer *m_timerWidth;
127 
131 
132  void InitPathTab();
133  void InitSeamAllowanceTab();
134  void InitNotchesTab();
135  void InitPathTypes();
136  void initializeNodesList();
137  void initializeNotchesList();
138  void nodeAngleChanged(int index);
139 
140  VPiecePath CreatePath() const;
141 
142  bool PathIsValid() const;
143  void ValidObjects(bool value);
144  void NewItem(const VPieceNode &node);
145 
146  PiecePathType GetType() const;
147  void SetType(PiecePathType type);
148 
149  Qt::PenStyle GetPenType() const;
150  void SetPenType(const Qt::PenStyle &type);
151 
152  bool IsCutPath() const;
153  void SetCutPath(bool value);
154 
155  QListWidgetItem *getItemById(quint32 id);
156 
157  quint32 GetLastId() const;
158 
159  void SetCurrentSABefore(const QString &formula);
160  void setCurrentAfterSeamAllowance(const QString &formula);
161 
162  void updateNodeBeforeSeamAllowance(const QString &formula);
163  void updateNodeAfterSeamAllowance(const QString &formula);
164 
165  QString getSeamAllowanceWidthFormulaBefore() const;
166  QString getSeamAllowanceWidthFormulaAfter() const;
167 
168  void setMoveExclusions();
169 };
170 
171 #endif // DIALOGINTERNALPATH_H
void SetPiecePath(const VPiecePath &path)
void ValidObjects(bool value)
virtual void CheckState() Q_DECL_FINAL
CheckState enable, when all is correct, or disable, when something wrong, button ok.
virtual void ChosenObject(quint32 id, const SceneObject &type) Q_DECL_OVERRIDE
void notchSubTypeChanged(int id)
virtual void ShowDialog(bool click) Q_DECL_OVERRIDE
void SetCurrentSABefore(const QString &formula)
quint32 GetPieceId() const
VPiecePath CreatePath() const
void nodeChanged(int index)
Ui::DialogInternalPath * ui
void notchChanged(int index)
virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE
closeEvent handle when dialog cloded
void updateNodeBeforeSeamAllowance(const QString &formula)
void setCurrentAfterSeamAllowance(const QString &formula)
void EnbleShowMode(bool disable)
void NewItem(const VPieceNode &node)
virtual void ShowVisualization() Q_DECL_OVERRIDE
void setSeamAllowanceWidthFormula(const QString &formula)
void SetCutPath(bool value)
QString getSeamAllowanceWidthFormulaBefore() const
void SetType(PiecePathType type)
void nodeAngleChanged(int index)
VPiecePath GetPiecePath() const
void updateNodeAfterSeamAllowance(const QString &formula)
void ShowContextMenu(const QPoint &pos)
Qt::PenStyle GetPenType() const
QListWidgetItem * getItemById(quint32 id)
PiecePathType GetType() const
DialogInternalPath(const VContainer *data, quint32 toolId, QWidget *parent=nullptr)
void SetPieceId(quint32 id)
QString getSeamAllowanceWidthFormulaAfter() const
void SetPenType(const Qt::PenStyle &type)
QString getSeamAllowanceWidthFormula() const
virtual void SetPiecesList(const QVector< quint32 > &list) Q_DECL_OVERRIDE
The DialogTool class parent for all dialog of tools.
Definition: dialogtool.h:107
quint32 toolId
Definition: dialogtool.h:225
const VContainer * data
data container with data
Definition: dialogtool.h:177
The VContainer class container of all variables.
Definition: vcontainer.h:141
SceneObject
Definition: def.h:103
PiecePathType
Definition: def.h:157