Merge with develop

--HG--
branch : feature
This commit is contained in:
dismine 2014-06-10 14:53:40 +03:00
commit 8ca765b14e
124 changed files with 4056 additions and 608 deletions

View File

@ -6,3 +6,6 @@ Our Team:
(*) Christine Neupert <enaisoc@googlemail.com>
Testing, translation.
(*) Patrick Proy <patrick@proy.org>
Developing.

View File

@ -93,7 +93,7 @@ void VContainer::setData(const VContainer &data)
qDeleteAll(gObjects);
gObjects.clear();
const QHash<quint32, VGObject*> *obj = data.DataGObjects();
Q_CHECK_PTR(obj);
SCASSERT(obj != nullptr);
QHashIterator<quint32, VGObject*> i(*obj);
while (i.hasNext())
{
@ -331,7 +331,7 @@ template <typename val>
void VContainer::UpdateObject(QHash<quint32, val> &obj, const quint32 &id, val point)
{
Q_ASSERT_X(id > 0, Q_FUNC_INFO, "id <= 0");
Q_CHECK_PTR(point);
SCASSERT(point != nullptr);
point->setId(id);
if (gObjects.contains(id))
{
@ -542,7 +542,7 @@ void VContainer::AddLine(const quint32 &firstPointId, const quint32 &secondPoint
template <typename key, typename val>
quint32 VContainer::AddObject(QHash<key, val> &obj, val value)
{
Q_CHECK_PTR(value);
SCASSERT(value != nullptr);
quint32 id = getNextId();
value->setId(id);
obj[id] = value;

View File

@ -70,7 +70,7 @@ public:
try
{
T obj = dynamic_cast<T>(gObj);
Q_CHECK_PTR(obj);
SCASSERT(obj != nullptr);
return obj;
}
catch (const std::bad_alloc &)

View File

@ -65,7 +65,7 @@ DialogAboutApp::~DialogAboutApp()
*/
void DialogAboutApp::webButtonClicked()
{
if ( ! QDesktopServices::openUrl(QUrl(VER_COMPANYDOMAIN_STR)))
if ( QDesktopServices::openUrl(QUrl(VER_COMPANYDOMAIN_STR)) == false)
{
QMessageBox::warning(this, tr("Warning"), tr("Cannot open your default browser"));
}

View File

@ -31,8 +31,9 @@
#include <QDialog>
namespace Ui {
class DialogAboutApp;
namespace Ui
{
class DialogAboutApp;
}
class DialogAboutApp : public QDialog

View File

@ -152,7 +152,7 @@ void DialogHistory::FillTable()
{
ui->tableWidget->clear();
const QVector<VToolRecord> *history = doc->getHistory();
Q_CHECK_PTR(history);
SCASSERT(history != nullptr);
qint32 currentRow = -1;
qint32 count = 0;
ui->tableWidget->setRowCount(history->size());
@ -187,7 +187,7 @@ void DialogHistory::FillTable()
{
cursorRow = currentRow;
QTableWidgetItem *item = ui->tableWidget->item(cursorRow, 0);
Q_CHECK_PTR(item);
SCASSERT(item != nullptr);
item->setIcon(QIcon("://icon/32x32/put_after.png"));
}
ui->tableWidget->resizeColumnsToContents();
@ -289,7 +289,7 @@ QString DialogHistory::Record(const VToolRecord &tool)
case Valentina::SplineTool:
{
const VSpline *spl = data->GeometricObject<const VSpline *>(tool.getId());
Q_CHECK_PTR(spl);
SCASSERT(spl != nullptr);
const QString splP1Name = data->GeometricObject<const VPointF *>(spl->GetP1().id())->name();
const QString splP4Name = data->GeometricObject<const VPointF *>(spl->GetP4().id())->name();
return QString(tr("Curve %1_%2")).arg(splP1Name, splP4Name);
@ -297,14 +297,14 @@ QString DialogHistory::Record(const VToolRecord &tool)
case Valentina::ArcTool:
{
const VArc *arc = data->GeometricObject<const VArc *>(tool.getId());
Q_CHECK_PTR(arc);
SCASSERT(arc != nullptr);
const QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name();
return QString(tr("Arc with center in point %1")).arg(arcCenterName);
}
case Valentina::SplinePathTool:
{
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(tool.getId());
Q_CHECK_PTR(splPath);
SCASSERT(splPath != nullptr);
const QVector<VSplinePoint> points = splPath->GetSplinePath();
QString record;
if (points.size() != 0 )
@ -375,7 +375,7 @@ QString DialogHistory::Record(const VToolRecord &tool)
{
const quint32 arcId = doc->GetParametrUInt(domElement, VToolCutArc::AttrArc, "0");
const VArc *arc = data->GeometricObject<const VArc *>(arcId);
Q_CHECK_PTR(arc);
SCASSERT(arc != nullptr);
const QString arcCenterName = data->GeometricObject<const VArc *>(arc->GetCenter().id())->name();
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
return QString(tr("%1 - cut arc with center %2")).arg(toolIdName, arcCenterName);
@ -384,7 +384,7 @@ QString DialogHistory::Record(const VToolRecord &tool)
{
const quint32 splineId = doc->GetParametrUInt(domElement, VToolCutSpline::AttrSpline, "0");
const VSpline *spl = data->GeometricObject<const VSpline *>(splineId);
Q_CHECK_PTR(spl);
SCASSERT(spl != nullptr);
const QString toolIdName = data->GeometricObject<const VPointF *>(tool.getId())->name();
const QString splP1Name = data->GeometricObject<const VPointF *>(spl->GetP1().id())->name();
const QString splP4Name = data->GeometricObject<const VPointF *>(spl->GetP4().id())->name();
@ -394,7 +394,7 @@ QString DialogHistory::Record(const VToolRecord &tool)
{
const quint32 splinePathId = doc->GetParametrUInt(domElement, VToolCutSplinePath::AttrSplinePath, "0");
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(splinePathId);
Q_CHECK_PTR(splPath);
SCASSERT(splPath != nullptr);
const QVector<VSplinePoint> points = splPath->GetSplinePath();
QString record;
if (points.size() != 0 )

View File

@ -50,6 +50,10 @@ public:
virtual ~DialogHistory();
public slots:
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void cellClicked(int row, int column);
void ChangedCursor(quint32 id);
void UpdateHistory();

View File

@ -49,6 +49,10 @@ public:
DialogIncrements(VContainer *data, VPattern *doc, QWidget *parent = nullptr);
~DialogIncrements();
public slots:
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void clickedToolButtonAdd();
void clickedToolButtonRemove();
void IncrementChanged ( qint32 row, qint32 column );

View File

@ -44,12 +44,12 @@ DialogIndividualMeasurements::DialogIndividualMeasurements(VContainer *data, con
{
const QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogIndividualMeasurements::DialogAccepted);
}
{
const QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogIndividualMeasurements::DialogRejected);
}
@ -174,7 +174,7 @@ void DialogIndividualMeasurements::CheckState()
QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
bOk->setEnabled(flagName && flagPath);
}

View File

@ -37,7 +37,7 @@ DialogPatternProperties::DialogPatternProperties(VPattern *doc, QWidget *parent)
{
ui->setupUi(this);
Q_CHECK_PTR(doc);
SCASSERT(doc != nullptr);
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(),
QApplication::applicationName());
@ -52,11 +52,11 @@ DialogPatternProperties::DialogPatternProperties(VPattern *doc, QWidget *parent)
ui->plainTextEditTechNotes->setPlainText(this->doc->UniqueTagText("notes"));
QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogPatternProperties::Apply);
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogPatternProperties::close);
connect(this, &DialogPatternProperties::haveChange, this->doc, &VPattern::haveLiteChange);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,388 @@
/************************************************************************
**
** @file dialogpatternxmledit.h
** @author Patrick Proy <patrick(at)proy.org>
** @date 14 5, 2014
**
** @brief Include file for the XML editor dialog
** @copyright
** This source code is part of the Valentine project, a pattern making
** program, whose allow create and modeling patterns of clothing.
** Copyright (C) 2013 Valentina project
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
**
** Valentina is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** Valentina is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
#ifndef DIALOGPATTERNXMLEDIT_H
#define DIALOGPATTERNXMLEDIT_H
#include <QDialog>
#include <QStandardItemModel>
#include "../../xml/vpattern.h"
//********************************************************************************************
/**
* @brief The vXMLTreeElement class : node/attribute of xml pattern. Used by vXMLTreeView
*
*/
#define BACKGROUND_COLOR_ATTRIBUTE QBrush(Qt::GlobalColor::cyan)
#define BACKGROUND_COLOR_INACTIVE_NODE QBrush(Qt::GlobalColor::gray)
class VXMLTreeElement : public QStandardItem
{
public:
/**
* @brief vXMLTreeElement
* @param name : display name
* @param nodetype : node type (node, attribute, root)
* @param source : the source dom node
*/
explicit VXMLTreeElement (QString name, short int nodetype, QDomNode source, bool editor);
explicit VXMLTreeElement (QString name, int nodetype);
~VXMLTreeElement ();
static const short int TypeNode;
static const short int TypeAttr;
static const short int TypeRoot;
/**
* @brief setNodeValue : set value of node (content or attribute)
* @param value : the value
*/
void SetTreeNodeValue(QString value);
/**
* @brief displayText : text to display
* @return text to display
*/
QString DisplayText();
/**
* @brief getDocNode
* @return current document node
*/
QDomNode GetDocNode();
/**
* @brief SetDocNode set tree element DomNode
* @param node
*/
inline void SetDocNode(QDomNode node)
{
this->DocNode=node;
}
inline void SetAddedNode(bool state) {this->addedNode=state;}
inline bool GetAddedNode() {return this->addedNode;}
QString GettreeNodeName();
QString GettreeNodeValue();
/**
* @brief GettreeNodeValueSet check if value has been set
* @return true if value is set
*/
bool GettreeNodeValueSet();
void SetTreeNodeName(QString value);
/**
* @brief getelementType
* @return elementType value
*/
short int GetelementType();
bool IsSelectable();
void SetSetlectable(bool value);
inline void SetFatherElement(VXMLTreeElement* parent)
{
this->parentnode=parent;
}
inline VXMLTreeElement* GetFatherElement()
{
return this->parentnode;
}
private:
/**
* @brief DocNode : link to current document node
*/
QDomNode DocNode;
/**
* @brief parentnode parent node of this element. If null then the DocNode must be valid
*/
VXMLTreeElement* parentnode;
/**
* @brief addedNode : true if node is added by editor (implies empty DocNode)
*/
bool addedNode;
/**
* @brief type : element type (node, attribute, text value of node)
*/
short int elementType;
/**
* @brief nodeValue : Attribute or node value
*/
QString treeNodeValue;
/**
* @brief treeNodeValueSet : true if value has been set
*/
bool treeNodeValueSet;
/**
* @brief nodeValue : Attribute or node value
*/
QString treeNodeName;
/**
* @brief selectable : can item be selected to be changed (ex : false if father deleted).
*/
bool selectable;
Q_DISABLE_COPY(VXMLTreeElement)
};
inline bool VXMLTreeElement::IsSelectable()
{
return this->selectable;
}
inline void VXMLTreeElement::SetSetlectable(bool value)
{
this->selectable=value;
}
inline short int VXMLTreeElement::GetelementType()
{
return this->elementType;
}
inline QDomNode VXMLTreeElement::GetDocNode()
{
return this->DocNode;
}
inline QString VXMLTreeElement::GettreeNodeName()
{
return this->treeNodeName;
}
inline bool VXMLTreeElement::GettreeNodeValueSet()
{
return this->treeNodeValueSet;
}
//********************************************************************************************
/**
* @brief The vXMLTreeView class : container to display/edit xml pattern
*/
class VXMLTreeView : public QStandardItemModel
{
public:
explicit VXMLTreeView (QObject *parent = 0);
void appendchain(VXMLTreeElement* elmt);
/**
* @brief The TreeElement struct : chained list of vXMLTreeElement
*/
typedef struct TreeElementchain
{
VXMLTreeElement* elmt;
TreeElementchain* next;
} TreeElementchain;
TreeElementchain * getCurrent();
void SetCurrent(TreeElementchain * value);
TreeElementchain * GetLast();
TreeElementchain * GetItems();
/**
* @brief clearTree : clear tree elements and listed items.
*/
void ClearTree();
~VXMLTreeView ();
private:
Q_DISABLE_COPY(VXMLTreeView)
/**
* @brief items : root of chained list of vXMLTreeElement
*/
TreeElementchain * items;
/**
* @brief current : used to parse in iteration.
*/
TreeElementchain * current;
/**
* @brief last : used to parse in iteration.
*/
TreeElementchain * last;
};
inline VXMLTreeView::TreeElementchain * VXMLTreeView::getCurrent()
{
return this->current;
}
inline void VXMLTreeView::SetCurrent(VXMLTreeView::TreeElementchain * value)
{
this->current=value;
}
inline VXMLTreeView::TreeElementchain * VXMLTreeView::GetLast()
{
return this->last;
}
inline VXMLTreeView::TreeElementchain * VXMLTreeView::GetItems()
{
return this->items;
}
//********************************************************************************************
namespace Ui
{
class DialogPatternXmlEdit;
}
/**
* @brief The DialogPatternXmlEdit class : ui dialog for XML editing of pattern
*/
class DialogPatternXmlEdit : public QDialog
{
Q_OBJECT
public:
explicit DialogPatternXmlEdit(QWidget *parent = 0, VPattern *xmldoc = 0);
~DialogPatternXmlEdit();
/**
* @brief clear_edit_data : clear input boxes and disables buttons.
*/
void ClearEditData();
void NameTextEdited(QString newtext);
void ValueTextEdited(QString newtext);
void ButtonSetClicked();
void ButtonCancelClicked();
void ButtonDeleteAttributeClicked();
void ButtonAddSonClicked();
void ButtonAddAttributeClicked();
void ButtonApplyChangesClicked();
void ButtonUndoLastChange();
void ButtonDeleteNode();
// Stack of changes definition
typedef struct ChangesStackElement
{
short int type;
VXMLTreeElement *element;
QString *newText;
QString *oldText;
bool changedText;
QString *newValue;
QString *oldValue;
bool changedValue;
ChangesStackElement* next;
} ChangesStackElement;
// Change stack functions
ChangesStackElement* CreateStackElement(short int typechange);
void RemoveChangeStackElement(ChangesStackElement* elmt);
void ClearStack();
bool treeChange;
VXMLTreeElement* currentNodeEdited;
short int currentNodeEditedStatus;
ChangesStackElement* currentNodeEditedStack;
/**
* @brief UndoChange : undo change in change stack element
* @param current : change to undo
* @return true if undo has been done, false on error
*/
bool UndoChange(ChangesStackElement* current);
/**
* @brief DeleteNodeAndSons : delete node and all it's attribute and sons below
* @param currentNode : node to delete
* @param onlydeactivate : if true, dont delete just deactivate sons and attributes
* @return false if changes couldn't be done
*/
bool DeleteNodeAndSons(VXMLTreeElement *currentNode, bool onlydeactivate);
/**
* @brief ApplyAttributeChange change or add attribute for node
* @param domElement : node containing attribute
* @param name
* @param value
* @return true on success
*/
bool ApplyAttributeChange(QDomNode domElement, QString name, QString value);
/**
* @brief ApplyNodeChange Change name or text content of node
* @param domElement node
* @param name
* @param value text content of node
* @return true on success
*/
bool ApplyNodeChange(QDomNode domElement, QString name, QString value);
/**
* @brief ApplyNodeAdd add node as child of domElement and set DocNode of treeElement
* @param domElement
* @param treeElement the XMLTreeElement of added node
* @param name
* @param value
* @return true on success
*/
bool ApplyNodeAdd(QDomNode domElement, VXMLTreeElement* treeElement, QString name, QString value);
/**
* @brief ApplyAttributeDelete delete attribute for node
* @param domElement
* @param name attribute name
* @return true on success
*/
bool ApplyAttributeDelete(QDomNode domElement, QString name);
/**
* @brief ApplyNodeDelete delete node domElement
* @param domElement
* @return true on success
*/
bool ApplyNodeDelete(QDomNode domElement);
/**
* @brief CheckChanges Check if changes made are OK
* @param message error message returned if false
* @param testRoot root of DOM to test
* @return true if validated, false otherwise
*/
bool CheckChanges(QString &message, QDomNode testRoot);
private slots:
void BaseSelectionChanged(int value);
void ElementClicked ( const QModelIndex & index );
private:
Q_DISABLE_COPY(DialogPatternXmlEdit)
Ui::DialogPatternXmlEdit *ui;
VPattern *doc;
QDomElement root;
QStandardItem *rootNode;
//typedef struct rootbases { vXMLTreeElement * root; QString name; } rootbases;
VXMLTreeElement ** rootBases;
qint16 rootBasesNum;
void ReadNodes(QDomNode dNode, VXMLTreeElement* root, VXMLTreeView *xmlmodel, bool refresh);
VXMLTreeView* xmlmodel;
// Stack of changes
static const short int ChangeTypeDelete;
static const short int ChangeTypeAdd;
static const short int ChangeTypeModify;
// Stack of changes
ChangesStackElement* changeStackRoot;
ChangesStackElement* changeStackLast;
};
#endif // DIALOGPATTERNXMLEDIT_H

View File

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DialogPatternXmlEdit</class>
<widget class="QDialog" name="DialogPatternXmlEdit">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>664</width>
<height>459</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>300</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="windowTitle">
<string>XML Editor</string>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout" stretch="1,0">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="3,1">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTreeView" name="treeView_main">
<property name="tabKeyNavigation">
<bool>false</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="headerHidden">
<bool>true</bool>
</property>
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout" columnstretch="0" columnminimumwidth="0">
<property name="sizeConstraint">
<enum>QLayout::SetMinimumSize</enum>
</property>
<property name="leftMargin">
<number>9</number>
</property>
<item row="9" column="0">
<widget class="QLabel" name="label_Value">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Value :</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLineEdit" name="lineEdit_Value">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLineEdit" name="lineEdit_Name">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_Name">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Name :</string>
</property>
</widget>
</item>
<item row="5" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item row="0" column="1">
<widget class="QLabel" name="label_type_value">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;No selection&gt;</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_type_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Type : </string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_Add_attribute">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Add attribute</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_Add_son">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Add son</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="11" column="0">
<layout class="QFormLayout" name="formLayout">
<property name="sizeConstraint">
<enum>QLayout::SetNoConstraint</enum>
</property>
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<item row="0" column="0">
<widget class="QPushButton" name="pushButton_Remove_attribute">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Remove attibute</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton_Remove_Node">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Remove node</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_Set_Values">
<property name="enabled">
<bool>false</bool>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Set</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_Cancel_Values">
<property name="enabled">
<bool>false</bool>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item row="2" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="pushButton_Apply_Changes">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Apply changes</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="pushButton_Undo_Last_Change">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Undo last</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkBox_Apply_Changes">
<property name="text">
<string>Immediate apply</string>
</property>
<property name="tristate">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_Base_Selection">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Base selection</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QComboBox" name="comboBox_Base_Selection"/>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>5</height>
</size>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>DialogPatternXmlEdit</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -42,12 +42,12 @@ DialogStandardMeasurements::DialogStandardMeasurements(VContainer *data, const Q
{
const QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogStandardMeasurements::DialogAccepted);
}
{
const QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogStandardMeasurements::DialogRejected);
}
@ -121,7 +121,7 @@ void DialogStandardMeasurements::CheckState()
bool flagTable = false;
{
const QComboBox *box = ui->comboBoxTables;
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
if (box->count() > 0 && box->currentIndex() != -1)
{
flagTable = true;
@ -129,7 +129,7 @@ void DialogStandardMeasurements::CheckState()
}
QPushButton *bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
bOk->setEnabled(flagTable && flagName);
}

View File

@ -58,5 +58,6 @@
#include "app/dialogindividualmeasurements.h"
#include "app/dialogstandardmeasurements.h"
#include "app/dialogaboutapp.h"
#include "app/dialogpatternxmledit.h"
#endif // DIALOGS_H

View File

@ -29,8 +29,9 @@ HEADERS += \
dialogs/app/dialogmeasurements.h \
dialogs/app/dialogstandardmeasurements.h \
dialogs/app/dialogindividualmeasurements.h \
dialogs/app/dialogaboutapp.h \
dialogs/tools/dialogeditwrongformula.h
dialogs/app/dialogaboutapp.h \
dialogs/tools/dialogeditwrongformula.h \
dialogs/app/dialogpatternxmledit.h
SOURCES += \
dialogs/tools/dialogtriangle.cpp \
@ -62,8 +63,9 @@ SOURCES += \
dialogs/app/dialogmeasurements.cpp \
dialogs/app/dialogstandardmeasurements.cpp \
dialogs/app/dialogindividualmeasurements.cpp \
dialogs/app/dialogaboutapp.cpp \
dialogs/tools/dialogeditwrongformula.cpp
dialogs/app/dialogaboutapp.cpp \
dialogs/app/dialogpatternxmledit.cpp \
dialogs/tools/dialogeditwrongformula.cpp
FORMS += \
dialogs/tools/dialogtriangle.ui \
@ -92,5 +94,6 @@ FORMS += \
dialogs/app/dialogmeasurements.ui \
dialogs/app/dialogstandardmeasurements.ui \
dialogs/app/dialogindividualmeasurements.ui \
dialogs/app/dialogaboutapp.ui \
dialogs/tools/dialogeditwrongformula.ui
dialogs/app/dialogaboutapp.ui \
dialogs/app/dialogpatternxmledit.ui \
dialogs/tools/dialogeditwrongformula.ui

View File

@ -38,17 +38,19 @@
* @param parent parent widget
*/
DialogAlongLine::DialogAlongLine(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogAlongLine), number(0), pointName(QString()),
typeLine(QString()), formula(QString()), firstPointId(0), secondPointId(0)
:DialogTool(data, parent), ui(new Ui::DialogAlongLine), number(0), pointName(QString()), typeLine(QString()),
formula(QString()), firstPointId(0), secondPointId(0), formulaBaseHeight(0)
{
ui->setupUi(this);
labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula;
plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula;
this->formulaBaseHeight=ui->plainTextEditFormula->height();
flagFormula = false;
flagName = false;
InitOkCansel(ui);
InitOkCancelApply(ui);
CheckState();
FillComboBoxTypeLine(ui->comboBoxLineType);
@ -60,9 +62,38 @@ DialogAlongLine::DialogAlongLine(const VContainer *data, QWidget *parent)
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogAlongLine::PutHere);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogAlongLine::NamePointChanged);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogAlongLine::EvalFormula);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogAlongLine::FormulaChanged);
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogAlongLine::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogAlongLine::DeployFormulaTextEdit);
InitVariables(ui);
connect(listWidget, &QListWidget::itemDoubleClicked, this, &DialogTool::PutVal);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogAlongLine::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogAlongLine::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGALONLINE_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGALONLINE_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
}
//---------------------------------------------------------------------------------------------------------------------
@ -108,13 +139,26 @@ void DialogAlongLine::ChoosedObject(quint32 id, const Valentina::Scenes &type)
* @brief DialogAccepted save data and emit signal about closed dialog.
*/
void DialogAlongLine::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogAlongLine::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogAlongLine::SaveData()
{
pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text();
formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint);
secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint);
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
@ -147,7 +191,12 @@ void DialogAlongLine::setFirstPointId(const quint32 &value, const quint32 &id)
void DialogAlongLine::setFormula(const QString &value)
{
formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula);
// increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -31,6 +31,7 @@
#include "dialogtool.h"
#define DIALOGALONLINE_MAX_FORMULA_HEIGHT 64
namespace Ui
{
class DialogAlongLine;
@ -62,6 +63,18 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private:
Q_DISABLE_COPY(DialogAlongLine)
@ -85,6 +98,14 @@ private:
/** @brief secondPointId id second point of line */
quint32 secondPointId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
};
//---------------------------------------------------------------------------------------------------------------------

View File

@ -74,11 +74,17 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFormula">
<property name="toolTip">
<string>Formula for the calculation of length of line</string>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QToolButton" name="toolButtonPutHere">
@ -150,6 +156,55 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<property name="maximumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../share/resources/theme.qrc">
<normaloff>:/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png</normaloff>:/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png</iconset>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
@ -390,14 +445,13 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>toolButtonEqual</tabstop>
<tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxFirstPoint</tabstop>
@ -414,6 +468,7 @@
</tabstops>
<resources>
<include location="../../share/resources/icon.qrc"/>
<include location="../../share/resources/theme.qrc"/>
</resources>
<connections>
<connection>

View File

@ -42,7 +42,8 @@
*/
DialogArc::DialogArc(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogArc), flagRadius(false), flagF1(false), flagF2(false),
timerRadius(nullptr), timerF1(nullptr), timerF2(nullptr), center(0), radius(QString()), f1(QString()), f2(QString())
timerRadius(nullptr), timerF1(nullptr), timerF2(nullptr), center(0), radius(QString()), f1(QString()),
f2(QString()), formulaBaseHeight(0)
{
ui->setupUi(this);
@ -55,7 +56,9 @@ DialogArc::DialogArc(const VContainer *data, QWidget *parent)
timerF2 = new QTimer(this);
connect(timerF2, &QTimer::timeout, this, &DialogArc::EvalF2);
InitOkCansel(ui);
InitOkCancelApply(ui);
this->formulaBaseHeight=ui->plainTextEditFormula->height();
FillComboBoxPoints(ui->comboBoxBasePoint);
@ -71,9 +74,32 @@ DialogArc::DialogArc(const VContainer *data, QWidget *parent)
connect(ui->toolButtonEqualF1, &QPushButton::clicked, this, &DialogArc::EvalF1);
connect(ui->toolButtonEqualF2, &QPushButton::clicked, this, &DialogArc::EvalF2);
connect(ui->lineEditRadius, &QLineEdit::textChanged, this, &DialogArc::RadiusChanged);
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogArc::RadiusChanged);
connect(ui->lineEditF1, &QLineEdit::textChanged, this, &DialogArc::F1Changed);
connect(ui->lineEditF2, &QLineEdit::textChanged, this, &DialogArc::F2Changed);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogArc::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogArc::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGARC_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGARC_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
}
//---------------------------------------------------------------------------------------------------------------------
@ -123,7 +149,12 @@ void DialogArc::SetF1(const QString &value)
void DialogArc::SetRadius(const QString &value)
{
radius = value;
ui->lineEditRadius->setText(radius);
// increase height if needed.
if (radius.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(radius);
}
//---------------------------------------------------------------------------------------------------------------------
@ -150,11 +181,24 @@ void DialogArc::ChoosedObject(quint32 id, const Valentina::Scenes &type)
*/
void DialogArc::DialogAccepted()
{
radius = ui->lineEditRadius->text();
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogArc::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogArc::SaveData()
{
radius = ui->plainTextEditFormula->toPlainText();
radius.replace("\n"," ");
f1 = ui->lineEditF1->text();
f2 = ui->lineEditF2->text();
center = getCurrentObjectId(ui->comboBoxBasePoint);
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
@ -185,7 +229,7 @@ void DialogArc::ValChenged(int row)
*/
void DialogArc::PutRadius()
{
PutValHere(ui->lineEditRadius, ui->listWidget);
PutValHere(ui->plainTextEditFormula, ui->listWidget);
}
//---------------------------------------------------------------------------------------------------------------------
@ -223,7 +267,7 @@ void DialogArc::LineAngles()
void DialogArc::RadiusChanged()
{
labelEditFormula = ui->labelEditRadius;
ValFormulaChanged(flagRadius, ui->lineEditRadius, timerRadius);
ValFormulaChanged(flagRadius, ui->plainTextEditFormula, timerRadius);
}
//---------------------------------------------------------------------------------------------------------------------
@ -252,8 +296,10 @@ void DialogArc::F2Changed()
*/
void DialogArc::CheckState()
{
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
bOk->setEnabled(flagRadius && flagF1 && flagF2);
SCASSERT(bApply != nullptr);
bApply->setEnabled(flagRadius && flagF1 && flagF2);
}
//---------------------------------------------------------------------------------------------------------------------
@ -263,7 +309,7 @@ void DialogArc::CheckState()
void DialogArc::EvalRadius()
{
labelEditFormula = ui->labelEditRadius;
Eval(ui->lineEditRadius, flagRadius, timerRadius, ui->labelResultRadius);
Eval(ui->plainTextEditFormula, flagRadius, timerRadius, ui->labelResultRadius);
}
//---------------------------------------------------------------------------------------------------------------------
@ -296,7 +342,7 @@ void DialogArc::ShowLineAngles()
ui->listWidget->clear();
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogArc::ValChenged);
const QHash<QString, qreal> *lineAnglesTable = data->DataLineAngles();
Q_CHECK_PTR(lineAnglesTable);
SCASSERT(lineAnglesTable != nullptr);
QHashIterator<QString, qreal> i(*lineAnglesTable);
while (i.hasNext())
{

View File

@ -31,6 +31,7 @@
#include "dialogtool.h"
#define DIALOGARC_MAX_FORMULA_HEIGHT 64
namespace Ui
{
class DialogArc;
@ -60,6 +61,14 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
virtual void ValChenged(int row);
void PutRadius();
void PutF1();
@ -107,10 +116,17 @@ private:
/** @brief f2 formula of second angle */
QString f2;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
void EvalRadius();
void EvalF1();
void EvalF2();
void ShowLineAngles();
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
};
//---------------------------------------------------------------------------------------------------------------------

View File

@ -23,6 +23,9 @@
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QLabel" name="labelEditRadius">
<property name="sizePolicy">
@ -74,15 +77,48 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditRadius">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<property name="maximumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Formula for the calculation of radius of arc</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png">
<normaloff/>
</iconset>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
@ -580,14 +616,13 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>lineEditRadius</tabstop>
<tabstop>lineEditF1</tabstop>
<tabstop>lineEditF2</tabstop>
<tabstop>comboBoxBasePoint</tabstop>

View File

@ -39,16 +39,19 @@
* @param parent parent widget
*/
DialogBisector::DialogBisector(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogBisector), number(0), pointName(QString()),
typeLine(QString()), formula(QString()), firstPointId(0), secondPointId(0), thirdPointId(0)
:DialogTool(data, parent), ui(new Ui::DialogBisector), number(0), pointName(QString()), typeLine(QString()),
formula(QString()), firstPointId(0), secondPointId(0), thirdPointId(0), formulaBaseHeight(0)
{
ui->setupUi(this);
InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula;
plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
this->formulaBaseHeight=ui->plainTextEditFormula->height();
InitOkCancelApply(ui);
flagFormula = false;
flagName = false;
CheckState();
@ -63,7 +66,36 @@ DialogBisector::DialogBisector(const VContainer *data, QWidget *parent)
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogBisector::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogBisector::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogBisector::FormulaChanged);
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogBisector::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogBisector::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogBisector::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogBisector::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGBISECTOR_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGBISECTOR_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
}
//---------------------------------------------------------------------------------------------------------------------
@ -152,7 +184,12 @@ void DialogBisector::setTypeLine(const QString &value)
void DialogBisector::setFormula(const QString &value)
{
formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula);
// increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
}
//---------------------------------------------------------------------------------------------------------------------
@ -193,12 +230,25 @@ void DialogBisector::setThirdPointId(const quint32 &value, const quint32 &id)
* @brief DialogAccepted save data and emit signal about closed dialog.
*/
void DialogBisector::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogBisector::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogBisector::SaveData()
{
pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text();
formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint);
secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint);
thirdPointId = getCurrentObjectId(ui->comboBoxThirdPoint);
emit DialogClosed(QDialog::Accepted);
}

View File

@ -31,6 +31,7 @@
#include "dialogtool.h"
#define DIALOGBISECTOR_MAX_FORMULA_HEIGHT 64
namespace Ui
{
class DialogBisector;
@ -67,6 +68,18 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private:
Q_DISABLE_COPY(DialogBisector)
@ -93,6 +106,14 @@ private:
/** @brief thirdPointId id of third point */
quint32 thirdPointId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
};
//---------------------------------------------------------------------------------------------------------------------

View File

@ -71,17 +71,17 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFormula">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="toolTip">
<string>Calculation of length of bisector by using the formula</string>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</widget>
</spacer>
</item>
<item>
<widget class="QToolButton" name="toolButtonPutHere">
@ -147,6 +147,54 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<property name="maximumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png"/>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
@ -429,14 +477,13 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxFirstPoint</tabstop>
<tabstop>comboBoxSecondPoint</tabstop>

View File

@ -38,20 +38,22 @@
* @param data container with data
* @param parent parent widget
*/
DialogCutArc::DialogCutArc(const VContainer *data, QWidget *parent) :
DialogTool(data, parent), ui(new Ui::DialogCutArc), pointName(QString()), formula(QString()), arcId(0)
DialogCutArc::DialogCutArc(const VContainer *data, QWidget *parent)
: DialogTool(data, parent), ui(new Ui::DialogCutArc), pointName(QString()), formula(QString()), arcId(0),
formulaBaseHeight(0)
{
ui->setupUi(this);
InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula;
plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
InitOkCancelApply(ui);
flagFormula = false;
flagName = false;
CheckState();
this->formulaBaseHeight=ui->plainTextEditFormula->height();
FillComboBoxArcs(ui->comboBoxArc);
@ -60,7 +62,36 @@ DialogCutArc::DialogCutArc(const VContainer *data, QWidget *parent) :
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogCutArc::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogCutArc::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogCutArc::FormulaChanged);
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogCutArc::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogCutArc::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogCutArc::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogCutArc::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGCUTARC_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGCUTARC_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
}
//---------------------------------------------------------------------------------------------------------------------
@ -92,12 +123,25 @@ void DialogCutArc::ChoosedObject(quint32 id, const Valentina::Scenes &type)
*/
void DialogCutArc::DialogAccepted()
{
pointName = ui->lineEditNamePoint->text();
formula = ui->lineEditFormula->text();
arcId = getCurrentObjectId(ui->comboBoxArc);
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogCutArc::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogCutArc::SaveData()
{
pointName = ui->lineEditNamePoint->text();
formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
arcId = getCurrentObjectId(ui->comboBoxArc);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief setArcId set id of arc
@ -117,7 +161,12 @@ void DialogCutArc::setArcId(const quint32 &value, const quint32 &id)
void DialogCutArc::setFormula(const QString &value)
{
formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula);
// increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -31,6 +31,7 @@
#include "dialogtool.h"
#define DIALOGCUTARC_MAX_FORMULA_HEIGHT 64
namespace Ui
{
class DialogCutArc;
@ -43,6 +44,7 @@ class DialogCutArc : public DialogTool
{
Q_OBJECT
public:
DialogCutArc(const VContainer *data, QWidget *parent = nullptr);
~DialogCutArc();
@ -57,6 +59,18 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private:
Q_DISABLE_COPY(DialogCutArc)
/** @brief ui keeps information about user interface */
@ -70,6 +84,13 @@ private:
/** @brief arcId keep id of arc */
quint32 arcId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
};
//---------------------------------------------------------------------------------------------------------------------

View File

@ -67,17 +67,17 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFormula">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="toolTip">
<string>Formula for the calculation of the spline</string>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</widget>
</spacer>
</item>
<item>
<widget class="QToolButton" name="toolButtonPutHere">
@ -140,6 +140,56 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<property name="maximumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png">
<normaloff/>
</iconset>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
@ -353,7 +403,7 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>

View File

@ -47,7 +47,7 @@ DialogCutSpline::DialogCutSpline(const VContainer *data, QWidget *parent)
lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
InitOkCancel(ui);
flagFormula = false;
flagName = false;

View File

@ -57,6 +57,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private:
Q_DISABLE_COPY(DialogCutSpline)

View File

@ -49,7 +49,7 @@ DialogCutSplinePath::DialogCutSplinePath(const VContainer *data, QWidget *parent
labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
InitOkCancel(ui);
flagFormula = false;
flagName = false;
CheckState();

View File

@ -57,6 +57,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private:
Q_DISABLE_COPY(DialogCutSplinePath)

View File

@ -48,10 +48,10 @@ DialogDetail::DialogDetail(const VContainer *data, QWidget *parent)
labelEditNamePoint = ui.labelEditNameDetail;
bOk = ui.buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted);
QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected);
flagName = true;//We have default name of detail.
@ -221,7 +221,7 @@ void DialogDetail::BiasXChanged(qreal d)
{
qint32 row = ui.listWidget->currentRow();
QListWidgetItem *item = ui.listWidget->item( row );
Q_CHECK_PTR(item);
SCASSERT(item != nullptr);
VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole));
node.setMx(qApp->toPixel(d));
item->setData(Qt::UserRole, QVariant::fromValue(node));
@ -236,7 +236,7 @@ void DialogDetail::BiasYChanged(qreal d)
{
qint32 row = ui.listWidget->currentRow();
QListWidgetItem *item = ui.listWidget->item( row );
Q_CHECK_PTR(item);
SCASSERT(item != nullptr);
VNodeDetail node = qvariant_cast<VNodeDetail>(item->data(Qt::UserRole));
node.setMy(qApp->toPixel(d));
item->setData(Qt::UserRole, QVariant::fromValue(node));

View File

@ -47,6 +47,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void BiasXChanged(qreal d);
void BiasYChanged(qreal d);
void ClickedSeams(bool checked);

View File

@ -39,7 +39,7 @@ DialogEditWrongFormula::DialogEditWrongFormula(const VContainer *data, QWidget *
lineEditFormula = ui->lineEditFormula;
labelEditFormula = ui->labelFormula;
InitOkCansel(ui);
InitOkCancel(ui);
flagFormula = false;
CheckState();
@ -83,7 +83,7 @@ void DialogEditWrongFormula::DialogRejected()
//---------------------------------------------------------------------------------------------------------------------
void DialogEditWrongFormula::CheckState()
{
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
bOk->setEnabled(flagFormula);
}

View File

@ -39,17 +39,19 @@
* @param parent parent widget
*/
DialogEndLine::DialogEndLine(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogEndLine), pointName(QString()), typeLine(QString()),
formula(QString()), angle(0), basePointId(0)
:DialogTool(data, parent), ui(new Ui::DialogEndLine), pointName(QString()), typeLine(QString()), formula(QString()),
angle(0), basePointId(0), formulaBaseHeight(0)
{
ui->setupUi(this);
InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula;
plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
this->formulaBaseHeight=ui->plainTextEditFormula->height();
InitOkCancelApply(ui);
flagFormula = false;
flagName = false;
CheckState();
@ -63,7 +65,37 @@ DialogEndLine::DialogEndLine(const VContainer *data, QWidget *parent)
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogEndLine::PutVal);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogEndLine::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogEndLine::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogEndLine::FormulaChanged);
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogEndLine::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogEndLine::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogEndLine::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogEndLine::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGENDLINE_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGENDLINE_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
}
//---------------------------------------------------------------------------------------------------------------------
@ -113,7 +145,16 @@ void DialogEndLine::setTypeLine(const QString &value)
void DialogEndLine::setFormula(const QString &value)
{
formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula);
// increase height if needed. TODO : see if I can get the max number of caracters in one line
// of this PlainTextEdit to change 80 to this value
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
//QTextCursor cursor = ui->plainTextEditFormula->textCursor();
//cursor.insertText(value);
//ui->plainTextEditFormula->setCursor(cursor);
}
//---------------------------------------------------------------------------------------------------------------------
@ -143,13 +184,26 @@ void DialogEndLine::setBasePointId(const quint32 &value, const quint32 &id)
* @brief DialogAccepted save data and emit signal about closed dialog.
*/
void DialogEndLine::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogEndLine::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogEndLine::SaveData()
{
pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text();
formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
angle = ui->doubleSpinBoxAngle->value();
basePointId = getCurrentObjectId(ui->comboBoxBasePoint);
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -31,6 +31,8 @@
#include "dialogtool.h"
#define DIALOGENDLINE_MAX_FORMULA_HEIGHT 64
namespace Ui
{
class DialogEndLine;
@ -63,6 +65,18 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private:
Q_DISABLE_COPY(DialogEndLine)
@ -83,6 +97,13 @@ private:
/** @brief basePointId id base point of line */
quint32 basePointId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
};
//---------------------------------------------------------------------------------------------------------------------

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>584</width>
<height>718</height>
<width>486</width>
<height>586</height>
</rect>
</property>
<property name="sizePolicy">
@ -80,17 +80,17 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFormula">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="toolTip">
<string>Formula for calculation of length of line</string>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</widget>
</spacer>
</item>
<item>
<widget class="QToolButton" name="toolButtonPutHere">
@ -153,6 +153,58 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
<property name="baseSize">
<size>
<width>4</width>
<height>0</height>
</size>
</property>
<property name="lineWrapMode">
<enum>QPlainTextEdit::NoWrap</enum>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<property name="maximumSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../share/resources/theme.qrc">
<normaloff>:/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png</normaloff>:/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png</iconset>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
@ -594,14 +646,13 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>comboBoxBasePoint</tabstop>
<tabstop>lineEditNamePoint</tabstop>
<tabstop>doubleSpinBoxAngle</tabstop>
@ -626,6 +677,7 @@
</tabstops>
<resources>
<include location="../../share/resources/icon.qrc"/>
<include location="../../share/resources/theme.qrc"/>
</resources>
<connections>
<connection>

View File

@ -44,7 +44,7 @@ DialogHeight::DialogHeight(const VContainer *data, QWidget *parent)
{
ui->setupUi(this);
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
InitOkCancel(ui);
flagName = false;
CheckState();

View File

@ -63,6 +63,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private:
Q_DISABLE_COPY(DialogHeight)

View File

@ -42,7 +42,7 @@ DialogLine::DialogLine(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogLine), number(0), firstPoint(0), secondPoint(0), typeLine(QString())
{
ui->setupUi(this);
InitOkCansel(ui);
InitOkCancel(ui);
FillComboBoxPoints(ui->comboBoxFirstPoint);
FillComboBoxPoints(ui->comboBoxSecondPoint);

View File

@ -57,6 +57,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private:
Q_DISABLE_COPY(DialogLine)

View File

@ -44,7 +44,7 @@ DialogLineIntersect::DialogLineIntersect(const VContainer *data, QWidget *parent
{
ui->setupUi(this);
number = 0;
InitOkCansel(ui);
InitOkCancel(ui);
labelEditNamePoint = ui->labelEditNamePoint;
flagName = false;
@ -209,7 +209,7 @@ void DialogLineIntersect::P2Line2Changed(int index)
*/
void DialogLineIntersect::CheckState()
{
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
bOk->setEnabled(flagName && flagPoint);
}

View File

@ -63,6 +63,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void P1Line1Changed( int index);
void P2Line1Changed( int index);
void P1Line2Changed( int index);

View File

@ -36,16 +36,18 @@
* @param parent parent widget
*/
DialogNormal::DialogNormal(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogNormal), number(0), pointName(QString()),
typeLine(QString()), formula(QString()), angle(0), firstPointId(0), secondPointId(0)
:DialogTool(data, parent), ui(new Ui::DialogNormal), number(0), pointName(QString()), typeLine(QString()),
formula(QString()), angle(0), firstPointId(0), secondPointId(0), formulaBaseHeight(0)
{
ui->setupUi(this);
InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula;
plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
InitOkCancelApply(ui);
this->formulaBaseHeight=ui->plainTextEditFormula->height();
flagFormula = false;
flagName = false;
@ -61,7 +63,34 @@ DialogNormal::DialogNormal(const VContainer *data, QWidget *parent)
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogNormal::PutVal);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogNormal::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogNormal::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogNormal::FormulaChanged);
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogNormal::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogNormal::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogNormal::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogNormal::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGNORMAL_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGNORMAL_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next"));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down"));
}
}
//---------------------------------------------------------------------------------------------------------------------
@ -107,14 +136,27 @@ void DialogNormal::ChoosedObject(quint32 id, const Valentina::Scenes &type)
* @brief DialogAccepted save data and emit signal about closed dialog.
*/
void DialogNormal::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogNormal::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogNormal::SaveData()
{
pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text();
formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
angle = ui->doubleSpinBoxAngle->value();
firstPointId = getCurrentObjectId(ui->comboBoxFirstPoint);
secondPointId = getCurrentObjectId(ui->comboBoxSecondPoint);
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
@ -158,7 +200,12 @@ void DialogNormal::setAngle(const qreal &value)
void DialogNormal::setFormula(const QString &value)
{
formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula);
// increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -31,6 +31,7 @@
#include "dialogtool.h"
#define DIALOGNORMAL_MAX_FORMULA_HEIGHT 64
namespace Ui
{
class DialogNormal;
@ -66,6 +67,18 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private:
Q_DISABLE_COPY(DialogNormal)
@ -92,6 +105,14 @@ private:
/** @brief secondPointId id second point of line */
quint32 secondPointId;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
};
//---------------------------------------------------------------------------------------------------------------------

View File

@ -74,17 +74,17 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFormula">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="toolTip">
<string>Formula for calculation of length of normal</string>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</widget>
</spacer>
</item>
<item>
<widget class="QToolButton" name="toolButtonPutHere">
@ -150,6 +150,56 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<property name="maximumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png">
<normaloff/>
</iconset>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
@ -601,14 +651,13 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxFirstPoint</tabstop>
<tabstop>comboBoxSecondPoint</tabstop>

View File

@ -38,60 +38,93 @@
* @param parent parent widget
*/
DialogPointOfContact::DialogPointOfContact(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(), number(0), pointName(QString()), radius(QString()), center(0),
firstPoint(0), secondPoint(0)
:DialogTool(data, parent), ui(new Ui::DialogPointOfContact), number(0), pointName(QString()), radius(QString()),
center(0), firstPoint(0), secondPoint(0), formulaBaseHeight(0)
{
ui.setupUi(this);
listWidget = ui.listWidget;
labelResultCalculation = ui.labelResultCalculation;
labelDescription = ui.labelDescription;
radioButtonSizeGrowth = ui.radioButtonSizeGrowth;
radioButtonStandardTable = ui.radioButtonStandardTable;
radioButtonIncrements = ui.radioButtonIncrements;
radioButtonLengthLine = ui.radioButtonLengthLine;
radioButtonLengthArc = ui.radioButtonLengthArc;
radioButtonLengthCurve = ui.radioButtonLengthSpline;
lineEditFormula = ui.lineEditFormula;
labelEditFormula = ui.labelEditFormula;
labelEditNamePoint = ui.labelEditNamePoint;
ui->setupUi(this);
InitVariables(ui);
listWidget = ui->listWidget;
labelResultCalculation = ui->labelResultCalculation;
labelDescription = ui->labelDescription;
radioButtonSizeGrowth = ui->radioButtonSizeGrowth;
radioButtonStandardTable = ui->radioButtonStandardTable;
radioButtonIncrements = ui->radioButtonIncrements;
radioButtonLengthLine = ui->radioButtonLengthLine;
radioButtonLengthArc = ui->radioButtonLengthArc;
radioButtonLengthCurve = ui->radioButtonLengthSpline;
plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
bOk = ui.buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
this->formulaBaseHeight=ui->plainTextEditFormula->height();
InitOkCancelApply(ui);
/* bOk = ui.buttonBox->button(QDialogButtonBox::Ok);
SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted);
QPushButton *bCansel = ui.buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
SCASSERT(bCansel != nullptr);
connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected);
*/
flagFormula = false;
flagName = false;
CheckState();
FillComboBoxPoints(ui.comboBoxCenter);
FillComboBoxPoints(ui.comboBoxFirstPoint);
FillComboBoxPoints(ui.comboBoxSecondPoint);
FillComboBoxPoints(ui->comboBoxCenter);
FillComboBoxPoints(ui->comboBoxFirstPoint);
FillComboBoxPoints(ui->comboBoxSecondPoint);
connect(ui.toolButtonPutHere, &QPushButton::clicked, this, &DialogPointOfContact::PutHere);
connect(ui.listWidget, &QListWidget::itemDoubleClicked, this, &DialogPointOfContact::PutVal);
connect(ui.listWidget, &QListWidget::currentRowChanged, this, &DialogPointOfContact::ValChenged);
connect(ui->toolButtonPutHere, &QPushButton::clicked, this, &DialogPointOfContact::PutHere);
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogPointOfContact::PutVal);
connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogPointOfContact::ValChenged);
if (qApp->patternType() == Pattern::Standard)
{
SizeHeight();
connect(ui.radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogTool::SizeHeight);
connect(ui->radioButtonSizeGrowth, &QRadioButton::clicked, this, &DialogTool::SizeHeight);
}
else
{
radioButtonSizeGrowth->setVisible(false);
Measurements();
}
connect(ui.radioButtonStandardTable, &QRadioButton::clicked, this, &DialogPointOfContact::Measurements);
connect(ui.radioButtonIncrements, &QRadioButton::clicked, this, &DialogPointOfContact::Increments);
connect(ui.radioButtonLengthLine, &QRadioButton::clicked, this, &DialogPointOfContact::LengthLines);
connect(ui.radioButtonLengthArc, &QRadioButton::clicked, this, &DialogPointOfContact::LengthArcs);
connect(ui.radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogPointOfContact::LengthCurves);
connect(ui.toolButtonEqual, &QPushButton::clicked, this, &DialogPointOfContact::EvalFormula);
connect(ui.lineEditNamePoint, &QLineEdit::textChanged, this, &DialogPointOfContact::NamePointChanged);
connect(ui.lineEditFormula, &QLineEdit::textChanged, this, &DialogPointOfContact::FormulaChanged);
connect(ui->radioButtonStandardTable, &QRadioButton::clicked, this, &DialogPointOfContact::Measurements);
connect(ui->radioButtonIncrements, &QRadioButton::clicked, this, &DialogPointOfContact::Increments);
connect(ui->radioButtonLengthLine, &QRadioButton::clicked, this, &DialogPointOfContact::LengthLines);
connect(ui->radioButtonLengthArc, &QRadioButton::clicked, this, &DialogPointOfContact::LengthArcs);
connect(ui->radioButtonLengthSpline, &QRadioButton::clicked, this, &DialogPointOfContact::LengthCurves);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogPointOfContact::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogPointOfContact::NamePointChanged);
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogPointOfContact::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogPointOfContact::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogPointOfContact::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogPointOfContact::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGPOINTOFCONTACT_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGPOINTOFCONTACT_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
}
//---------------------------------------------------------------------------------------------------------------------
@ -107,10 +140,10 @@ void DialogPointOfContact::ChoosedObject(quint32 id, const Valentina::Scenes &ty
const VPointF *point = data->GeometricObject<const VPointF *>(id);
if (number == 0)
{
qint32 index = ui.comboBoxFirstPoint->findText(point->name());
qint32 index = ui->comboBoxFirstPoint->findText(point->name());
if ( index != -1 )
{ // -1 for not found
ui.comboBoxFirstPoint->setCurrentIndex(index);
ui->comboBoxFirstPoint->setCurrentIndex(index);
number++;
emit ToolTip(tr("Select second point of line"));
return;
@ -118,10 +151,10 @@ void DialogPointOfContact::ChoosedObject(quint32 id, const Valentina::Scenes &ty
}
if (number == 1)
{
qint32 index = ui.comboBoxSecondPoint->findText(point->name());
qint32 index = ui->comboBoxSecondPoint->findText(point->name());
if ( index != -1 )
{ // -1 for not found
ui.comboBoxSecondPoint->setCurrentIndex(index);
ui->comboBoxSecondPoint->setCurrentIndex(index);
number++;
emit ToolTip(tr("Select point of center of arc"));
return;
@ -129,10 +162,10 @@ void DialogPointOfContact::ChoosedObject(quint32 id, const Valentina::Scenes &ty
}
if (number == 2)
{
qint32 index = ui.comboBoxCenter->findText(point->name());
qint32 index = ui->comboBoxCenter->findText(point->name());
if ( index != -1 )
{ // -1 for not found
ui.comboBoxCenter->setCurrentIndex(index);
ui->comboBoxCenter->setCurrentIndex(index);
number = 0;
emit ToolTip("");
}
@ -150,14 +183,27 @@ void DialogPointOfContact::ChoosedObject(quint32 id, const Valentina::Scenes &ty
*/
void DialogPointOfContact::DialogAccepted()
{
pointName = ui.lineEditNamePoint->text();
radius = ui.lineEditFormula->text();
center = getCurrentObjectId(ui.comboBoxCenter);
firstPoint = getCurrentObjectId(ui.comboBoxFirstPoint);
secondPoint = getCurrentObjectId(ui.comboBoxSecondPoint);
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogPointOfContact::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogPointOfContact::SaveData()
{
pointName = ui->lineEditNamePoint->text();
radius = ui->plainTextEditFormula->toPlainText();
radius.replace("\n"," ");
center = getCurrentObjectId(ui->comboBoxCenter);
firstPoint = getCurrentObjectId(ui->comboBoxFirstPoint);
secondPoint = getCurrentObjectId(ui->comboBoxSecondPoint);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief setSecondPoint set id second point
@ -166,7 +212,7 @@ void DialogPointOfContact::DialogAccepted()
*/
void DialogPointOfContact::setSecondPoint(const quint32 &value, const quint32 &id)
{
setCurrentPointId(ui.comboBoxSecondPoint, secondPoint, value, id);
setCurrentPointId(ui->comboBoxSecondPoint, secondPoint, value, id);
}
//---------------------------------------------------------------------------------------------------------------------
@ -177,7 +223,7 @@ void DialogPointOfContact::setSecondPoint(const quint32 &value, const quint32 &i
*/
void DialogPointOfContact::setFirstPoint(const quint32 &value, const quint32 &id)
{
setCurrentPointId(ui.comboBoxFirstPoint, firstPoint, value, id);
setCurrentPointId(ui->comboBoxFirstPoint, firstPoint, value, id);
}
//---------------------------------------------------------------------------------------------------------------------
@ -188,7 +234,7 @@ void DialogPointOfContact::setFirstPoint(const quint32 &value, const quint32 &id
*/
void DialogPointOfContact::setCenter(const quint32 &value, const quint32 &id)
{
setCurrentPointId(ui.comboBoxCenter, center, value, id);
setCurrentPointId(ui->comboBoxCenter, center, value, id);
center = value;
}
@ -200,7 +246,12 @@ void DialogPointOfContact::setCenter(const quint32 &value, const quint32 &id)
void DialogPointOfContact::setRadius(const QString &value)
{
radius = value;
ui.lineEditFormula->setText(radius);
// increase height if needed.
if (radius.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(radius);
}
//---------------------------------------------------------------------------------------------------------------------
@ -211,5 +262,5 @@ void DialogPointOfContact::setRadius(const QString &value)
void DialogPointOfContact::setPointName(const QString &value)
{
pointName = value;
ui.lineEditNamePoint->setText(pointName);
ui->lineEditNamePoint->setText(pointName);
}

View File

@ -32,6 +32,11 @@
#include "ui_dialogpointofcontact.h"
#include "dialogtool.h"
#define DIALOGPOINTOFCONTACT_MAX_FORMULA_HEIGHT 64
namespace Ui
{
class DialogPointOfContact;
}
/**
* @brief The DialogPointOfContact class dialog for ToolPointOfContact. Help create point and edit option.
*/
@ -58,11 +63,23 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private:
Q_DISABLE_COPY(DialogPointOfContact)
/** @brief ui keeps information about user interface */
Ui::DialogPointOfContact ui;
Ui::DialogPointOfContact *ui;
/** @brief number number of handled objects */
qint32 number;
@ -81,6 +98,14 @@ private:
/** @brief secondPoint id second point of line */
quint32 secondPoint;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
};
//---------------------------------------------------------------------------------------------------------------------

View File

@ -74,17 +74,17 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFormula">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="toolTip">
<string>Formula for calculation of radius of arc</string>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</widget>
</spacer>
</item>
<item>
<widget class="QToolButton" name="toolButtonPutHere">
@ -150,6 +150,56 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<property name="maximumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png">
<normaloff/>
</iconset>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
@ -441,14 +491,13 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxCenter</tabstop>
<tabstop>comboBoxFirstPoint</tabstop>

View File

@ -44,7 +44,7 @@ DialogPointOfIntersection::DialogPointOfIntersection(const VContainer *data, QWi
{
ui->setupUi(this);
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
InitOkCancel(ui);
flagName = false;
CheckState();

View File

@ -57,6 +57,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private:
Q_DISABLE_COPY(DialogPointOfIntersection)

View File

@ -40,16 +40,18 @@
*/
DialogShoulderPoint::DialogShoulderPoint(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogShoulderPoint), number(0), pointName(QString()),
typeLine(QString()), formula(QString()), p1Line(0), p2Line(0), pShoulder(0)
typeLine(QString()), formula(QString()), p1Line(0), p2Line(0), pShoulder(0), formulaBaseHeight(0)
{
ui->setupUi(this);
number = 0;
InitVariables(ui);
labelResultCalculation = ui->labelResultCalculation;
lineEditFormula = ui->lineEditFormula;
plainTextEditFormula = ui->plainTextEditFormula;
labelEditFormula = ui->labelEditFormula;
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
InitOkCancelApply(ui);
this->formulaBaseHeight=ui->plainTextEditFormula->height();
flagFormula = false;
flagName = false;
@ -64,7 +66,36 @@ DialogShoulderPoint::DialogShoulderPoint(const VContainer *data, QWidget *parent
connect(ui->listWidget, &QListWidget::itemDoubleClicked, this, &DialogShoulderPoint::PutVal);
connect(ui->toolButtonEqual, &QPushButton::clicked, this, &DialogShoulderPoint::EvalFormula);
connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogShoulderPoint::NamePointChanged);
connect(ui->lineEditFormula, &QLineEdit::textChanged, this, &DialogShoulderPoint::FormulaChanged);
connect(ui->plainTextEditFormula, &QPlainTextEdit::textChanged, this, &DialogShoulderPoint::FormulaTextChanged);
connect(ui->pushButtonGrowLength, &QPushButton::clicked, this, &DialogShoulderPoint::DeployFormulaTextEdit);
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
//---------------------------------------------------------------------------------------------------------------------
void DialogShoulderPoint::FormulaTextChanged()
{
this->FormulaChangedPlainText();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogShoulderPoint::DeployFormulaTextEdit()
{
if (ui->plainTextEditFormula->height() < DIALOGSHOULDERPOINT_MAX_FORMULA_HEIGHT)
{
ui->plainTextEditFormula->setFixedHeight(DIALOGSHOULDERPOINT_MAX_FORMULA_HEIGHT);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-next",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-next.png")));
}
else
{
ui->plainTextEditFormula->setFixedHeight(this->formulaBaseHeight);
//Set icon from theme (internal for Windows system)
ui->pushButtonGrowLength->setIcon(QIcon::fromTheme("go-down",
QIcon(":/icons/win.icon.theme/icons/win.icon.theme/16x16/actions/go-down.png")));
}
}
//---------------------------------------------------------------------------------------------------------------------
@ -128,14 +159,27 @@ void DialogShoulderPoint::ChoosedObject(quint32 id, const Valentina::Scenes &typ
* @brief DialogAccepted save data and emit signal about closed dialog.
*/
void DialogShoulderPoint::DialogAccepted()
{
this->SaveData();
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogShoulderPoint::DialogApply()
{
this->SaveData();
emit DialogApplied();
}
//---------------------------------------------------------------------------------------------------------------------
void DialogShoulderPoint::SaveData()
{
pointName = ui->lineEditNamePoint->text();
typeLine = GetTypeLine(ui->comboBoxLineType);
formula = ui->lineEditFormula->text();
formula = ui->plainTextEditFormula->toPlainText();
formula.replace("\n"," ");
p1Line = getCurrentObjectId(ui->comboBoxP1Line);
p2Line = getCurrentObjectId(ui->comboBoxP2Line);
pShoulder = getCurrentObjectId(ui->comboBoxPShoulder);
emit DialogClosed(QDialog::Accepted);
}
//---------------------------------------------------------------------------------------------------------------------
@ -179,7 +223,12 @@ void DialogShoulderPoint::setP1Line(const quint32 &value, const quint32 &id)
void DialogShoulderPoint::setFormula(const QString &value)
{
formula = qApp->FormulaToUser(value);
ui->lineEditFormula->setText(formula);
// increase height if needed.
if (formula.length() > 80)
{
this->DeployFormulaTextEdit();
}
ui->plainTextEditFormula->setPlainText(formula);
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -31,6 +31,7 @@
#include "dialogtool.h"
#define DIALOGSHOULDERPOINT_MAX_FORMULA_HEIGHT 64
namespace Ui
{
class DialogShoulderPoint;
@ -66,6 +67,18 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/**
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply();
/**
* @brief DeployFormulaTextEdit grow or shrink formula input
*/
void DeployFormulaTextEdit();
/**
* @brief FormulaTextChanged when formula text changes for validation and calc
*/
void FormulaTextChanged();
private:
Q_DISABLE_COPY(DialogShoulderPoint)
@ -92,6 +105,14 @@ private:
/** @brief pShoulder id shoulder point */
quint32 pShoulder;
/** @brief formulaBaseHeight base height defined by dialogui */
int formulaBaseHeight;
/**
* @brief SaveData Put dialog data in local variables
*/
void SaveData();
};
//---------------------------------------------------------------------------------------------------------------------

View File

@ -74,17 +74,17 @@
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditFormula">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="toolTip">
<string>Formula for calculation of length of line</string>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</widget>
</spacer>
</item>
<item>
<widget class="QToolButton" name="toolButtonPutHere">
@ -150,6 +150,56 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_formula">
<item>
<widget class="QPlainTextEdit" name="plainTextEditFormula">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>24</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButtonGrowLength">
<property name="maximumSize">
<size>
<width>18</width>
<height>18</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show full calculation in message box&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset theme="go-down.png">
<normaloff/>
</iconset>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
@ -462,14 +512,13 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>lineEditFormula</tabstop>
<tabstop>lineEditNamePoint</tabstop>
<tabstop>comboBoxP1Line</tabstop>
<tabstop>comboBoxP2Line</tabstop>

View File

@ -43,7 +43,7 @@ DialogSinglePoint::DialogSinglePoint(const VContainer *data, QWidget *parent)
ui->doubleSpinBoxX->setRange(0, qApp->fromPixel(SceneSize));
ui->doubleSpinBoxY->setRange(0, qApp->fromPixel(SceneSize));
labelEditNamePoint = ui->labelEditName;
InitOkCansel(ui);
InitOkCancel(ui);
flagName = false;
CheckState();

View File

@ -51,6 +51,10 @@ public:
public slots:
void mousePress(const QPointF &scenePos);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private:
Q_DISABLE_COPY(DialogSinglePoint)

View File

@ -43,7 +43,7 @@ DialogSpline::DialogSpline(const VContainer *data, QWidget *parent)
kAsm1(1), kAsm2(1), kCurve(1)
{
ui->setupUi(this);
InitOkCansel(ui);
InitOkCancel(ui);
FillComboBoxPoints(ui->comboBoxP1);
FillComboBoxPoints(ui->comboBoxP4);

View File

@ -69,6 +69,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private:
Q_DISABLE_COPY(DialogSpline)

View File

@ -41,7 +41,7 @@ DialogSplinePath::DialogSplinePath(const VContainer *data, QWidget *parent)
:DialogTool(data, parent), ui(new Ui::DialogSplinePath), path(VSplinePath())
{
ui->setupUi(this);
InitOkCansel(ui);
InitOkCancel(ui);
bOk->setEnabled(false);
FillComboBoxPoints(ui->comboBoxPoint);
@ -159,7 +159,7 @@ void DialogSplinePath::Angle1Changed(qreal index)
{
qint32 row = ui->listWidget->currentRow();
QListWidgetItem *item = ui->listWidget->item( row );
Q_CHECK_PTR(item);
SCASSERT(item != nullptr);
VSplinePoint p = qvariant_cast<VSplinePoint>(item->data(Qt::UserRole));
p.SetAngle1(index);
DataPoint(p.P().id(), p.KAsm1(), p.Angle1(), p.KAsm2(), p.Angle2());
@ -175,7 +175,7 @@ void DialogSplinePath::Angle2Changed(qreal index)
{
qint32 row = ui->listWidget->currentRow();
QListWidgetItem *item = ui->listWidget->item( row );
Q_CHECK_PTR(item);
SCASSERT(item != nullptr);
VSplinePoint p = qvariant_cast<VSplinePoint>(item->data(Qt::UserRole));
p.SetAngle2(index);
DataPoint(p.P().id(), p.KAsm1(), p.Angle1(), p.KAsm2(), p.Angle2());

View File

@ -52,6 +52,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
void PointChanged(int row);
void currentPointChanged( int index );
void Angle1Changed(qreal index );

View File

@ -43,13 +43,13 @@
*/
DialogTool::DialogTool(const VContainer *data, QWidget *parent)
:QDialog(parent), data(data), isInitialized(false), flagName(true), flagFormula(true), timerFormula(nullptr),
bOk(nullptr), spinBoxAngle(nullptr), lineEditFormula(nullptr), listWidget(nullptr),
labelResultCalculation(nullptr), labelDescription(nullptr), labelEditNamePoint(nullptr),
bOk(nullptr), bApply(nullptr), spinBoxAngle(nullptr), lineEditFormula(nullptr), plainTextEditFormula(nullptr),
listWidget(nullptr), labelResultCalculation(nullptr), labelDescription(nullptr), labelEditNamePoint(nullptr),
labelEditFormula(nullptr), radioButtonSizeGrowth(nullptr), radioButtonStandardTable(nullptr),
radioButtonIncrements(nullptr), radioButtonLengthLine(nullptr), radioButtonLengthArc(nullptr),
radioButtonLengthCurve(nullptr), lineStyles(QStringList())
radioButtonLengthCurve(nullptr), lineStyles(QStringList()), associatedTool(nullptr)
{
Q_CHECK_PTR(data);
SCASSERT(data != nullptr);
timerFormula = new QTimer(this);
connect(timerFormula, &QTimer::timeout, this, &DialogTool::EvalFormula);
//Keep synchronize with VAbstractTool styles list!!!
@ -97,7 +97,7 @@ void DialogTool::showEvent(QShowEvent *event)
*/
void DialogTool::FillComboBoxPoints(QComboBox *box, const quint32 &id) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
const QHash<quint32, VGObject*> *objs = data->DataGObjects();
QHashIterator<quint32, VGObject*> i(*objs);
QMap<QString, quint32> list;
@ -120,7 +120,7 @@ void DialogTool::FillComboBoxPoints(QComboBox *box, const quint32 &id) const
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::FillComboBoxArcs(QComboBox *box, const quint32 &id, ComboMode::ComboBoxCutArc cut) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
const QHash<quint32, VGObject *> *objs = data->DataGObjects();
QHashIterator<quint32, VGObject*> i(*objs);
QMap<QString, quint32> list;
@ -164,7 +164,7 @@ void DialogTool::FillComboBoxArcs(QComboBox *box, const quint32 &id, ComboMode::
*/
void DialogTool::FillComboBoxSplines(QComboBox *box, const quint32 &id, ComboMode::ComboBoxCutSpline cut) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
const QHash<quint32, VGObject *> *objs = data->DataGObjects();
QHashIterator<quint32, VGObject*> i(*objs);
QMap<QString, quint32> list;
@ -208,7 +208,7 @@ void DialogTool::FillComboBoxSplines(QComboBox *box, const quint32 &id, ComboMod
*/
void DialogTool::FillComboBoxSplinesPath(QComboBox *box, const quint32 &id, ComboMode::ComboBoxCutSpline cut) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
const QHash<quint32, VGObject *> *objs = data->DataGObjects();
QHashIterator<quint32, VGObject *> i(*objs);
QMap<QString, quint32> list;
@ -250,7 +250,7 @@ void DialogTool::FillComboBoxSplinesPath(QComboBox *box, const quint32 &id, Comb
*/
void DialogTool::FillComboBoxTypeLine(QComboBox *box) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
box->addItems(lineStyles);
box->setCurrentIndex(1);
}
@ -347,16 +347,36 @@ void DialogTool::ChangeCurrentData(QComboBox *box, const quint32 &value) const
*/
void DialogTool::PutValHere(QLineEdit *lineEdit, QListWidget *listWidget)
{
Q_CHECK_PTR(lineEdit);
Q_CHECK_PTR(listWidget);
SCASSERT(lineEdit != nullptr);
SCASSERT(listWidget != nullptr);
QListWidgetItem *item = listWidget->currentItem();
Q_CHECK_PTR(item);
SCASSERT(item != nullptr);
int pos = lineEdit->cursorPosition();
lineEdit->setText(lineEdit->text().insert(lineEdit->cursorPosition(), item->text()));
lineEdit->setFocus();
lineEdit->setCursorPosition(pos + item->text().size());
}
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::PutValHere(QPlainTextEdit *plainTextEdit, QListWidget *listWidget)
{
SCASSERT(plainTextEdit != nullptr);
SCASSERT(listWidget != nullptr);
QListWidgetItem *item = listWidget->currentItem();
SCASSERT(item != nullptr);
QTextCursor cursor = plainTextEdit->textCursor();
cursor.insertText(item->text());
plainTextEdit->setTextCursor(cursor);
/*
int pos = lineEdit->cursorPosition();
lineEdit->setText(lineEdit->text().insert(lineEdit->cursorPosition(), item->text()));
lineEdit->setFocus();
lineEdit->setCursorPosition(pos + item->text().size());
*/
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ValFormulaChanged handle change formula
@ -366,9 +386,9 @@ void DialogTool::PutValHere(QLineEdit *lineEdit, QListWidget *listWidget)
*/
void DialogTool::ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer *timer)
{
Q_CHECK_PTR(edit);
Q_CHECK_PTR(timer);
Q_CHECK_PTR(labelEditFormula);
SCASSERT(edit != nullptr);
SCASSERT(timer != nullptr);
SCASSERT(labelEditFormula != nullptr);
if (edit->text().isEmpty())
{
flag = false;
@ -380,6 +400,23 @@ void DialogTool::ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer *timer)
}
timer->start(1000);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer *timer)
{
SCASSERT(edit != nullptr);
SCASSERT(timer != nullptr);
SCASSERT(labelEditFormula != nullptr);
if (edit->toPlainText().isEmpty())
{
flag = false;
CheckState();
QPalette palette = labelEditFormula->palette();
palette.setColor(labelEditFormula->foregroundRole(), Qt::red);
labelEditFormula->setPalette(palette);
return;
}
timer->start(1000);
}
//---------------------------------------------------------------------------------------------------------------------
/**
@ -391,10 +428,10 @@ void DialogTool::ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer *timer)
*/
void DialogTool::Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label)
{
Q_CHECK_PTR(edit);
Q_CHECK_PTR(timer);
Q_CHECK_PTR(label);
Q_CHECK_PTR(labelEditFormula);
SCASSERT(edit != nullptr);
SCASSERT(timer != nullptr);
SCASSERT(label != nullptr);
SCASSERT(labelEditFormula != nullptr);
QPalette palette = labelEditFormula->palette();
if (edit->text().isEmpty())
{
@ -447,16 +484,70 @@ void DialogTool::Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label)
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief setCurrentPointId set current point id in combobox
* @param box combobox
* @param pointId save current point id
* @param value point id
* @param id don't show this id in list
*/
void DialogTool::Eval(QPlainTextEdit *edit, bool &flag, QTimer *timer, QLabel *label)
{
SCASSERT(edit != nullptr);
SCASSERT(timer != nullptr);
SCASSERT(label != nullptr);
SCASSERT(labelEditFormula != nullptr);
QPalette palette = labelEditFormula->palette();
if (edit->toPlainText().isEmpty())
{
flag = false;
palette.setColor(labelEditFormula->foregroundRole(), Qt::red);
}
else
{
try
{
// Replace line return with spaces for calc
QString formula = edit->toPlainText();
formula.replace("\n"," ");
formula = qApp->FormulaFromUser(formula);
Calculator *cal = new Calculator(data);
const qreal result = cal->EvalFormula(formula);
delete cal;
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(),
QApplication::applicationName());
bool osSeparatorValue = settings.value("configuration/osSeparator", 1).toBool();
if (osSeparatorValue)
{
QLocale loc = QLocale::system();
label->setText(loc.toString(result));
}
else
{
QLocale loc = QLocale(QLocale::C);
label->setText(loc.toString(result));
}
flag = true;
palette.setColor(labelEditFormula->foregroundRole(), QColor(76, 76, 76));
emit ToolTip("");
}
catch(qmu::QmuParserError &e)
{
label->setText(tr("Error"));
flag = false;
palette.setColor(labelEditFormula->foregroundRole(), Qt::red);
emit ToolTip("Parser error: "+e.GetMsg());
qDebug() << "\nMath parser error:\n"
<< "--------------------------------------\n"
<< "Message: " << e.GetMsg() << "\n"
<< "Expression: " << e.GetExpr() << "\n"
<< "--------------------------------------";
}
}
CheckState();
timer->stop();
labelEditFormula->setPalette(palette);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::setCurrentPointId(QComboBox *box, quint32 &pointId, const quint32 &value, const quint32 &id) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
FillComboBoxPoints(box, id);
pointId = value;
ChangeCurrentData(box, value);
@ -474,7 +565,7 @@ void DialogTool::setCurrentPointId(QComboBox *box, quint32 &pointId, const quint
void DialogTool::setCurrentSplineId(QComboBox *box, quint32 &splineId, const quint32 &value, const quint32 &id,
ComboMode::ComboBoxCutSpline cut) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
FillComboBoxSplines(box, id, cut);
splineId = value;
ChangeCurrentData(box, value);
@ -492,7 +583,7 @@ void DialogTool::setCurrentSplineId(QComboBox *box, quint32 &splineId, const qui
void DialogTool::setCurrentArcId(QComboBox *box, quint32 &arcId, const quint32 &value, const quint32 &id,
ComboMode::ComboBoxCutArc cut) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
FillComboBoxArcs(box, id, cut);
arcId = value;
ChangeCurrentData(box, value);
@ -510,7 +601,7 @@ void DialogTool::setCurrentArcId(QComboBox *box, quint32 &arcId, const quint32 &
void DialogTool::setCurrentSplinePathId(QComboBox *box, quint32 &splinePathId, const quint32 &value,
const quint32 &id, ComboMode::ComboBoxCutSpline cut) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
FillComboBoxSplinesPath(box, id, cut);
splinePathId = value;
ChangeCurrentData(box, value);
@ -524,7 +615,7 @@ void DialogTool::setCurrentSplinePathId(QComboBox *box, quint32 &splinePathId, c
*/
quint32 DialogTool::getCurrentObjectId(QComboBox *box) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
qint32 index = box->currentIndex();
Q_ASSERT(index != -1);
if (index != -1)
@ -540,9 +631,9 @@ quint32 DialogTool::getCurrentObjectId(QComboBox *box) const
//---------------------------------------------------------------------------------------------------------------------
bool DialogTool::ChoosedPoint(const quint32 &id, QComboBox *box, const QString &toolTip)
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
const VPointF *point = data->GeometricObject<const VPointF *>(id);
Q_CHECK_PTR(point);
SCASSERT(point != nullptr);
const qint32 index = box->findText(point->name());
if ( index != -1 )
{ // -1 for not found
@ -561,7 +652,7 @@ bool DialogTool::ChoosedPoint(const quint32 &id, QComboBox *box, const QString &
*/
void DialogTool::FillList(QComboBox *box, const QMap<QString, quint32> &list) const
{
Q_CHECK_PTR(box);
SCASSERT(box != nullptr);
box->clear();
QMapIterator<QString, quint32> iter(list);
@ -578,8 +669,13 @@ void DialogTool::FillList(QComboBox *box, const QMap<QString, quint32> &list) co
*/
void DialogTool::CheckState()
{
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
bOk->setEnabled(flagFormula && flagName);
// In case dialog hasn't apply button
if ( bApply != nullptr)
{
bApply->setEnabled(flagFormula && flagName);
}
}
//---------------------------------------------------------------------------------------------------------------------
@ -600,7 +696,7 @@ void DialogTool::ChoosedObject(quint32 id, const Valentina::Scenes &type)
*/
void DialogTool::NamePointChanged()
{
Q_CHECK_PTR(labelEditNamePoint);
SCASSERT(labelEditNamePoint != nullptr);
QLineEdit* edit = qobject_cast<QLineEdit*>(sender());
if (edit)
{
@ -653,6 +749,15 @@ void DialogTool::FormulaChanged()
ValFormulaChanged(flagFormula, edit, timerFormula);
}
}
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::FormulaChangedPlainText()
{
QPlainTextEdit* edit = qobject_cast<QPlainTextEdit*>(sender());
if (edit)
{
ValFormulaChanged(flagFormula, edit, timerFormula);
}
}
//---------------------------------------------------------------------------------------------------------------------
/**
@ -660,7 +765,7 @@ void DialogTool::FormulaChanged()
*/
void DialogTool::ArrowUp()
{
Q_CHECK_PTR(spinBoxAngle);
SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(90);
}
@ -670,7 +775,7 @@ void DialogTool::ArrowUp()
*/
void DialogTool::ArrowDown()
{
Q_CHECK_PTR(spinBoxAngle);
SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(270);
}
@ -680,7 +785,7 @@ void DialogTool::ArrowDown()
*/
void DialogTool::ArrowLeft()
{
Q_CHECK_PTR(spinBoxAngle);
SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(180);
}
@ -690,7 +795,7 @@ void DialogTool::ArrowLeft()
*/
void DialogTool::ArrowRight()
{
Q_CHECK_PTR(spinBoxAngle);
SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(0);
}
@ -700,7 +805,7 @@ void DialogTool::ArrowRight()
*/
void DialogTool::ArrowLeftUp()
{
Q_CHECK_PTR(spinBoxAngle);
SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(135);
}
@ -710,7 +815,7 @@ void DialogTool::ArrowLeftUp()
*/
void DialogTool::ArrowLeftDown()
{
Q_CHECK_PTR(spinBoxAngle);
SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(225);
}
@ -720,7 +825,7 @@ void DialogTool::ArrowLeftDown()
*/
void DialogTool::ArrowRightUp()
{
Q_CHECK_PTR(spinBoxAngle);
SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(45);
}
@ -730,7 +835,7 @@ void DialogTool::ArrowRightUp()
*/
void DialogTool::ArrowRightDown()
{
Q_CHECK_PTR(spinBoxAngle);
SCASSERT(spinBoxAngle != nullptr);
spinBoxAngle->setValue(315);
}
@ -740,9 +845,9 @@ void DialogTool::ArrowRightDown()
*/
void DialogTool::EvalFormula()
{
Q_CHECK_PTR(lineEditFormula);
Q_CHECK_PTR(labelResultCalculation);
Eval(lineEditFormula, flagFormula, timerFormula, labelResultCalculation);
SCASSERT(plainTextEditFormula != nullptr);
SCASSERT(labelResultCalculation != nullptr);
Eval(plainTextEditFormula, flagFormula, timerFormula, labelResultCalculation);
}
//---------------------------------------------------------------------------------------------------------------------
@ -751,7 +856,7 @@ void DialogTool::EvalFormula()
*/
void DialogTool::SizeHeight()
{
Q_CHECK_PTR(listWidget);
SCASSERT(listWidget != nullptr);
disconnect(listWidget, &QListWidget::currentRowChanged, this, &DialogTool::ValChenged);
listWidget->clear();
@ -820,7 +925,7 @@ void DialogTool::Increments()
*/
void DialogTool::PutHere()
{
PutValHere(lineEditFormula, listWidget);
PutValHere(plainTextEditFormula, listWidget);
}
//---------------------------------------------------------------------------------------------------------------------
@ -830,13 +935,17 @@ void DialogTool::PutHere()
*/
void DialogTool::PutVal(QListWidgetItem *item)
{
Q_CHECK_PTR(lineEditFormula);
Q_CHECK_PTR(item);
int pos = lineEditFormula->cursorPosition();
SCASSERT(plainTextEditFormula != nullptr);
SCASSERT(item != nullptr);
QTextCursor cursor = plainTextEditFormula->textCursor();
cursor.insertText(item->text());
plainTextEditFormula->setTextCursor(cursor);
/*int pos = plainTextEditFormula->cursorPosition();
lineEditFormula->setText(lineEditFormula->text().insert(lineEditFormula->cursorPosition(),
item->text()));
lineEditFormula->setFocus();
lineEditFormula->setCursorPosition(pos + item->text().size());
*/
}
//---------------------------------------------------------------------------------------------------------------------
@ -846,14 +955,14 @@ void DialogTool::PutVal(QListWidgetItem *item)
*/
void DialogTool::ValChenged(int row)
{
Q_CHECK_PTR(listWidget);
Q_CHECK_PTR(labelDescription);
Q_CHECK_PTR(radioButtonSizeGrowth);
Q_CHECK_PTR(radioButtonStandardTable);
Q_CHECK_PTR(radioButtonIncrements);
Q_CHECK_PTR(radioButtonLengthLine);
Q_CHECK_PTR(radioButtonLengthArc);
Q_CHECK_PTR(radioButtonLengthCurve);
SCASSERT(listWidget != nullptr);
SCASSERT(labelDescription != nullptr);
SCASSERT(radioButtonSizeGrowth != nullptr);
SCASSERT(radioButtonStandardTable != nullptr);
SCASSERT(radioButtonIncrements != nullptr);
SCASSERT(radioButtonLengthLine != nullptr);
SCASSERT(radioButtonLengthArc != nullptr);
SCASSERT(radioButtonLengthCurve != nullptr);
if (listWidget->count() == 0)
{
return;
@ -919,12 +1028,12 @@ void DialogTool::ValChenged(int row)
*/
void DialogTool::UpdateList()
{
Q_CHECK_PTR(radioButtonSizeGrowth);
Q_CHECK_PTR(radioButtonStandardTable);
Q_CHECK_PTR(radioButtonIncrements);
Q_CHECK_PTR(radioButtonLengthLine);
Q_CHECK_PTR(radioButtonLengthArc);
Q_CHECK_PTR(radioButtonLengthCurve);
SCASSERT(radioButtonSizeGrowth != nullptr);
SCASSERT(radioButtonStandardTable != nullptr);
SCASSERT(radioButtonIncrements != nullptr);
SCASSERT(radioButtonLengthLine != nullptr);
SCASSERT(radioButtonLengthArc != nullptr);
SCASSERT(radioButtonLengthCurve != nullptr);
if (radioButtonSizeGrowth->isChecked())
{
@ -960,7 +1069,7 @@ void DialogTool::UpdateList()
template <class key, class val>
void DialogTool::ShowVariable(const QHash<key, val> *var)
{
Q_CHECK_PTR(listWidget);
SCASSERT(listWidget != nullptr);
disconnect(listWidget, &QListWidget::currentRowChanged, this, &DialogTool::ValChenged);
listWidget->clear();
@ -983,3 +1092,9 @@ void DialogTool::ShowVariable(const QHash<key, val> *var)
connect(listWidget, &QListWidget::currentRowChanged, this, &DialogTool::ValChenged);
listWidget->setCurrentRow (0);
}
//---------------------------------------------------------------------------------------------------------------------
void DialogTool::DialogApply()
{
}

View File

@ -41,6 +41,8 @@ class QListWidgetItem;
class QLineEdit;
class QListWidget;
class VContainer;
class QPlainTextEdit;
class VAbstractTool;
namespace ComboMode
{
@ -65,12 +67,18 @@ class DialogTool : public QDialog
public:
DialogTool(const VContainer *data, QWidget *parent = nullptr);
virtual ~DialogTool() {}
VAbstractTool* GetAssociatedTool();
void SetAssociatedTool(VAbstractTool* tool);
signals:
/**
* @brief DialogClosed signal dialog closed
* @param result keep result
*/
void DialogClosed(int result);
/**
* @brief DialogApplied emit signal dialog apply changes
*/
void DialogApplied();
/**
* @brief ToolTip emit tooltipe for tool
* @param toolTip text tooltipe
@ -80,8 +88,16 @@ public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
void NamePointChanged();
virtual void DialogAccepted();
/**
* @brief DialogApply save data and emit signal DialogApplied.
*/
virtual void DialogApply();
virtual void DialogRejected();
void FormulaChanged();
/**
* @brief FormulaChangedPlainText check formula (plain text editor editor)
*/
void FormulaChangedPlainText();
void ArrowUp();
void ArrowDown();
void ArrowLeft();
@ -122,12 +138,15 @@ protected:
/** @brief bOk button ok */
QPushButton *bOk;
/** @brief bApply button apply */
QPushButton *bApply;
/** @brief spinBoxAngle spinbox for angle */
QDoubleSpinBox *spinBoxAngle;
/** @brief lineEditFormula linEdit for formula */
QLineEdit *lineEditFormula;
QPlainTextEdit *plainTextEditFormula;
/** @brief listWidget listWidget with variables */
QListWidget *listWidget;
@ -182,7 +201,10 @@ protected:
void ChangeCurrentText(QComboBox *box, const QString &value);
void ChangeCurrentData(QComboBox *box, const quint32 &value) const;
void PutValHere(QLineEdit *lineEdit, QListWidget *listWidget);
void PutValHere(QPlainTextEdit *plainTextEdit, QListWidget *listWidget);
void ValFormulaChanged(bool &flag, QLineEdit *edit, QTimer * timer);
void ValFormulaChanged(bool &flag, QPlainTextEdit *edit, QTimer * timer);
void Eval(QPlainTextEdit *edit, bool &flag, QTimer *timer, QLabel *label);
void Eval(QLineEdit *edit, bool &flag, QTimer *timer, QLabel *label);
void setCurrentPointId(QComboBox *box, quint32 &pointId, const quint32 &value, const quint32 &id) const;
void setCurrentSplineId(QComboBox *box, quint32 &splineId, const quint32 &value, const quint32 &id,
@ -197,7 +219,7 @@ protected:
template <typename T>
void InitArrow(T *ui)
{
Q_CHECK_PTR(ui);
SCASSERT(ui != nullptr);
spinBoxAngle = ui->doubleSpinBoxAngle;
connect(ui->toolButtonArrowDown, &QPushButton::clicked, this, &DialogTool::ArrowDown);
connect(ui->toolButtonArrowUp, &QPushButton::clicked, this, &DialogTool::ArrowUp);
@ -240,18 +262,50 @@ protected:
connect(radioButtonLengthCurve, &QRadioButton::clicked, this, &DialogTool::LengthCurves);
}
template <typename T>
void InitOkCansel(T *ui)
/**
* @brief InitOkCancelApply initialise OK / Cancel and Apply buttons
* @param ui Dialog container
*/
void InitOkCancelApply(T *ui)
{
InitOkCancel(ui);
bApply = ui->buttonBox->button(QDialogButtonBox::Apply);
SCASSERT(bApply != nullptr);
connect(bApply, &QPushButton::clicked, this, &DialogTool::DialogApply);
}
template <typename T>
/**
* @brief InitOkCancel initialise OK and Cancel buttons
* @param ui Dialog container
*/
void InitOkCancel(T *ui)
{
bOk = ui->buttonBox->button(QDialogButtonBox::Ok);
Q_CHECK_PTR(bOk);
SCASSERT(bOk != nullptr);
connect(bOk, &QPushButton::clicked, this, &DialogTool::DialogAccepted);
QPushButton *bCansel = ui->buttonBox->button(QDialogButtonBox::Cancel);
Q_CHECK_PTR(bCansel);
connect(bCansel, &QPushButton::clicked, this, &DialogTool::DialogRejected);
QPushButton *bCancel = ui->buttonBox->button(QDialogButtonBox::Cancel);
SCASSERT(bCancel != nullptr);
connect(bCancel, &QPushButton::clicked, this, &DialogTool::DialogRejected);
}
/**
* @brief associatedTool vdrawtool associated with opened dialog.
*/
VAbstractTool* associatedTool;
private:
void FillList(QComboBox *box, const QMap<QString, quint32> &list)const;
};
//---------------------------------------------------------------------------------------------------------------------
inline VAbstractTool *DialogTool::GetAssociatedTool()
{
return this->associatedTool;
}
//---------------------------------------------------------------------------------------------------------------------
inline void DialogTool::SetAssociatedTool(VAbstractTool *tool)
{
this->associatedTool=tool;
}
#endif // DIALOGTOOL_H

View File

@ -43,7 +43,7 @@ DialogTriangle::DialogTriangle(const VContainer *data, QWidget *parent)
{
ui->setupUi(this);
labelEditNamePoint = ui->labelEditNamePoint;
InitOkCansel(ui);
InitOkCancel(ui);
flagName = false;
CheckState();

View File

@ -63,6 +63,10 @@ public:
public slots:
virtual void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private:
Q_DISABLE_COPY(DialogTriangle)

View File

@ -42,7 +42,7 @@ DialogUnionDetails::DialogUnionDetails(const VContainer *data, QWidget *parent)
numberP(0), p1(0), p2(0)
{
ui->setupUi(this);
InitOkCansel(ui);
InitOkCancel(ui);
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -53,6 +53,10 @@ public:
public slots:
void ChoosedObject(quint32 id, const Valentina::Scenes &type);
virtual void DialogAccepted();
/** TODO ISSUE 79 : create real function
* @brief DialogApply apply data and emit signal about applied dialog.
*/
virtual void DialogApply(){}
private:
Q_DISABLE_COPY(DialogUnionDetails)

View File

@ -39,7 +39,7 @@
//---------------------------------------------------------------------------------------------------------------------
QPainterPath VEquidistant::ContourPath(const quint32 &idDetail, const VContainer *data) const
{
Q_CHECK_PTR(data);
SCASSERT(data != nullptr);
VDetail detail = data->GetDetail(idDetail);
QVector<QPointF> points;
QVector<QPointF> pointsEkv;

View File

@ -185,7 +185,7 @@ void MainWindow::ActionNewPP()
connect(spoint, &VToolPoint::ChoosedTool, sceneDraw, &VMainGraphicsScene::ChoosedItem);
connect(sceneDraw, &VMainGraphicsScene::NewFactor, spoint, &VToolSinglePoint::SetFactor);
QHash<quint32, VDataTool*>* tools = doc->getTools();
Q_CHECK_PTR(tools);
SCASSERT(tools != nullptr);
tools->insert(id, spoint);
VDrawTool::AddRecord(id, Valentina::SinglePointTool, doc);
SetEnableTool(true);
@ -254,12 +254,50 @@ void MainWindow::SetToolButton(bool checked, Valentina::Tools t, const QString &
{
if (QToolButton *tButton = qobject_cast< QToolButton * >(this->sender()))
{
Q_CHECK_PTR(tButton);
SCASSERT(tButton != nullptr);
tButton->setChecked(true);
}
}
}
//---------------------------------------------------------------------------------------------------------------------
template <typename Dialog, typename Func, typename Func2>
/**
* @brief SetToolButtonWithApply set tool and show dialog.
* @param checked true if tool button checked.
* @param t tool type.
* @param cursor path tool cursor icon.
* @param toolTip first tooltipe.
* @param closeDialogSlot function to handle close of dialog.
* @param applyDialogSlot function to handle apply in dialog.
*/
void MainWindow::SetToolButtonWithApply(bool checked, Valentina::Tools t, const QString &cursor, const QString &toolTip,
Func closeDialogSlot, Func2 applyDialogSlot)
{
if (checked)
{
CancelTool();
tool = t;
QPixmap pixmap(cursor);
QCursor cur(pixmap, 2, 3);
view->setCursor(cur);
helpLabel->setText(toolTip);
dialogTool = new Dialog(pattern, this);
connect(currentScene, &VMainGraphicsScene::ChoosedObject, dialogTool, &DialogTool::ChoosedObject);
connect(dialogTool, &DialogTool::DialogClosed, this, closeDialogSlot);
connect(dialogTool, &DialogTool::DialogApplied, this, applyDialogSlot);
connect(dialogTool, &DialogTool::ToolTip, this, &MainWindow::ShowToolTip);
connect(doc, &VPattern::FullUpdateFromFile, dialogTool, &DialogTool::UpdateList);
}
else
{
if (QToolButton *tButton = qobject_cast< QToolButton * >(this->sender()))
{
SCASSERT(tButton != nullptr);
tButton->setChecked(true);
}
}
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ClosedDialog handle close dialog
@ -268,7 +306,7 @@ void MainWindow::SetToolButton(bool checked, Valentina::Tools t, const QString &
template <typename DrawTool>
void MainWindow::ClosedDialog(int result)
{
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
if (result == QDialog::Accepted)
{
DrawTool::Create(dialogTool, currentScene, doc, pattern);
@ -276,6 +314,59 @@ void MainWindow::ClosedDialog(int result)
ArrowTool();
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ClosedDialogWithApply handle close dialog that has apply button
* @param result result working dialog.
*/
template <typename DrawTool>
void MainWindow::ClosedDialogWithApply(int result)
{
SCASSERT(dialogTool != nullptr);
if (result == QDialog::Accepted)
{
// Only create tool if not already created with apply
if (dialogTool->GetAssociatedTool() == nullptr)
{
dialogTool->SetAssociatedTool(
dynamic_cast<VAbstractTool * > (DrawTool::Create(dialogTool, currentScene, doc, pattern)));
}
else
{ // Or update associated tool with data
VDrawTool * vtool= static_cast<VDrawTool *>(dialogTool->GetAssociatedTool());
vtool->FullUpdateFromGuiApply();
}
}
if (dialogTool->GetAssociatedTool() != nullptr)
{
VDrawTool * vtool= static_cast<VDrawTool *>(dialogTool->GetAssociatedTool());
vtool->DialogLinkDestroy();
}
ArrowTool();
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialog handle apply in dialog
*/
template <typename DrawTool>
void MainWindow::ApplyDialog()
{
SCASSERT(dialogTool != nullptr);
// Only create tool if not already created with apply
if (dialogTool->GetAssociatedTool() == nullptr)
{
dialogTool->SetAssociatedTool(
static_cast<VAbstractTool * > (DrawTool::Create(dialogTool, currentScene, doc, pattern)));
}
else
{ // Or update associated tool with data
VDrawTool * vtool= static_cast<VDrawTool *>(dialogTool->GetAssociatedTool());
vtool->FullUpdateFromGuiApply();
}
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ToolEndLine handler tool endLine.
@ -283,8 +374,17 @@ void MainWindow::ClosedDialog(int result)
*/
void MainWindow::ToolEndLine(bool checked)
{
SetToolButton<DialogEndLine>(checked, Valentina::EndLineTool, ":/cursor/endline_cursor.png", tr("Select point"),
&MainWindow::ClosedDialogEndLine);
SetToolButtonWithApply<DialogEndLine>(checked, Valentina::EndLineTool, ":/cursor/endline_cursor.png", tr("Select point"),
&MainWindow::ClosedDialogEndLine,&MainWindow::ApplyDialogEndLine);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogEndLine actions after apply in DialogEndLine.
*/
void MainWindow::ApplyDialogEndLine()
{
ApplyDialog<VToolEndLine>();
}
//---------------------------------------------------------------------------------------------------------------------
@ -294,7 +394,7 @@ void MainWindow::ToolEndLine(bool checked)
*/
void MainWindow::ClosedDialogEndLine(int result)
{
ClosedDialog<VToolEndLine>(result);
ClosedDialogWithApply<VToolEndLine>(result);
}
//---------------------------------------------------------------------------------------------------------------------
@ -325,8 +425,17 @@ void MainWindow::ClosedDialogLine(int result)
*/
void MainWindow::ToolAlongLine(bool checked)
{
SetToolButton<DialogAlongLine>(checked, Valentina::AlongLineTool, ":/cursor/alongline_cursor.png",
tr("Select point"), &MainWindow::ClosedDialogAlongLine);
SetToolButtonWithApply<DialogAlongLine>(checked, Valentina::AlongLineTool, ":/cursor/alongline_cursor.png",
tr("Select point"), &MainWindow::ClosedDialogAlongLine, &MainWindow::ApplyDialogAlongLine);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogAlongLine actions after apply in DialogAlongLine.
*/
void MainWindow::ApplyDialogAlongLine()
{
ApplyDialog<VToolAlongLine>();
}
//---------------------------------------------------------------------------------------------------------------------
@ -336,7 +445,7 @@ void MainWindow::ToolAlongLine(bool checked)
*/
void MainWindow::ClosedDialogAlongLine(int result)
{
ClosedDialog<VToolAlongLine>(result);
ClosedDialogWithApply<VToolAlongLine>(result);
}
//---------------------------------------------------------------------------------------------------------------------
@ -346,8 +455,18 @@ void MainWindow::ClosedDialogAlongLine(int result)
*/
void MainWindow::ToolShoulderPoint(bool checked)
{
SetToolButton<DialogShoulderPoint>(checked, Valentina::ShoulderPointTool, ":/cursor/shoulder_cursor.png",
tr("Select first point of line"), &MainWindow::ClosedDialogShoulderPoint);
SetToolButtonWithApply<DialogShoulderPoint>(checked, Valentina::ShoulderPointTool, ":/cursor/shoulder_cursor.png",
tr("Select first point of line"), &MainWindow::ClosedDialogShoulderPoint,
&MainWindow::ApplyDialogShoulderPoint);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogShoulderPoint actions after apply in DialogShoulderPoint.
*/
void MainWindow::ApplyDialogShoulderPoint()
{
ApplyDialog<VToolShoulderPoint>();
}
//---------------------------------------------------------------------------------------------------------------------
@ -357,7 +476,7 @@ void MainWindow::ToolShoulderPoint(bool checked)
*/
void MainWindow::ClosedDialogShoulderPoint(int result)
{
ClosedDialog<VToolShoulderPoint>(result);
ClosedDialogWithApply<VToolShoulderPoint>(result);
}
//---------------------------------------------------------------------------------------------------------------------
@ -367,8 +486,18 @@ void MainWindow::ClosedDialogShoulderPoint(int result)
*/
void MainWindow::ToolNormal(bool checked)
{
SetToolButton<DialogNormal>(checked, Valentina::NormalTool, ":/cursor/normal_cursor.png",
tr("Select first point of line"), &MainWindow::ClosedDialogNormal);
SetToolButtonWithApply<DialogNormal>(checked, Valentina::NormalTool, ":/cursor/normal_cursor.png",
tr("Select first point of line"), &MainWindow::ClosedDialogNormal,
&MainWindow::ApplyDialogNormal);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogNormal actions after apply in DialogNormal.
*/
void MainWindow::ApplyDialogNormal()
{
ApplyDialog<VToolNormal>();
}
//---------------------------------------------------------------------------------------------------------------------
@ -378,7 +507,7 @@ void MainWindow::ToolNormal(bool checked)
*/
void MainWindow::ClosedDialogNormal(int result)
{
ClosedDialog<VToolNormal>(result);
ClosedDialogWithApply<VToolNormal>(result);
}
//---------------------------------------------------------------------------------------------------------------------
@ -388,8 +517,18 @@ void MainWindow::ClosedDialogNormal(int result)
*/
void MainWindow::ToolBisector(bool checked)
{
SetToolButton<DialogBisector>(checked, Valentina::BisectorTool, ":/cursor/bisector_cursor.png",
tr("Select first point of angle"), &MainWindow::ClosedDialogBisector);
SetToolButtonWithApply<DialogBisector>(checked, Valentina::BisectorTool, ":/cursor/bisector_cursor.png",
tr("Select first point of angle"), &MainWindow::ClosedDialogBisector,
&MainWindow::ApplyDialogBisector);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogBisector actions after apply in DialogBisector.
*/
void MainWindow::ApplyDialogBisector()
{
ApplyDialog<VToolBisector>();
}
//---------------------------------------------------------------------------------------------------------------------
@ -399,7 +538,7 @@ void MainWindow::ToolBisector(bool checked)
*/
void MainWindow::ClosedDialogBisector(int result)
{
ClosedDialog<VToolBisector>(result);
ClosedDialogWithApply<VToolBisector>(result);
}
//---------------------------------------------------------------------------------------------------------------------
@ -472,8 +611,18 @@ void MainWindow::ClosedDialogCutSpline(int result)
*/
void MainWindow::ToolArc(bool checked)
{
SetToolButton<DialogArc>(checked, Valentina::ArcTool, ":/cursor/arc_cursor.png",
tr("Select point of center of arc"), &MainWindow::ClosedDialogArc);
SetToolButtonWithApply<DialogArc>(checked, Valentina::ArcTool, ":/cursor/arc_cursor.png",
tr("Select point of center of arc"), &MainWindow::ClosedDialogArc,
&MainWindow::ApplyDialogArc);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogArc actions after apply in DialogArc.
*/
void MainWindow::ApplyDialogArc()
{
ApplyDialog<VToolArc>();
}
//---------------------------------------------------------------------------------------------------------------------
@ -483,7 +632,7 @@ void MainWindow::ToolArc(bool checked)
*/
void MainWindow::ClosedDialogArc(int result)
{
ClosedDialog<VToolArc>(result);
ClosedDialogWithApply<VToolArc>(result);
}
//---------------------------------------------------------------------------------------------------------------------
@ -536,8 +685,18 @@ void MainWindow::ClosedDialogCutSplinePath(int result)
*/
void MainWindow::ToolPointOfContact(bool checked)
{
SetToolButton<DialogPointOfContact>(checked, Valentina::PointOfContact, ":/cursor/pointcontact_cursor.png",
tr("Select first point of line"), &MainWindow::ClosedDialogPointOfContact);
SetToolButtonWithApply<DialogPointOfContact>(checked, Valentina::PointOfContact, ":/cursor/pointcontact_cursor.png",
tr("Select first point of line"), &MainWindow::ClosedDialogPointOfContact,
&MainWindow::ApplyDialogPointOfContact);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogPointOfContact actions after apply in DialogPointOfContact.
*/
void MainWindow::ApplyDialogPointOfContact()
{
ApplyDialog<VToolPointOfContact>();
}
//---------------------------------------------------------------------------------------------------------------------
@ -547,7 +706,7 @@ void MainWindow::ToolPointOfContact(bool checked)
*/
void MainWindow::ClosedDialogPointOfContact(int result)
{
ClosedDialog<VToolPointOfContact>(result);
ClosedDialogWithApply<VToolPointOfContact>(result);
}
//---------------------------------------------------------------------------------------------------------------------
@ -671,8 +830,17 @@ void MainWindow::ClosedDialogUnionDetails(int result)
*/
void MainWindow::ToolCutArc(bool checked)
{
SetToolButton<DialogCutArc>(checked, Valentina::CutArcTool, ":/cursor/arc_cut_cursor.png", tr("Select arc"),
&MainWindow::ClosedDialogCutArc);
SetToolButtonWithApply<DialogCutArc>(checked, Valentina::CutArcTool, ":/cursor/arc_cut_cursor.png",
tr("Select arc"), &MainWindow::ClosedDialogCutArc, &MainWindow::ApplyDialogCutArc);
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief ApplyDialogCutArc actions after apply in DialogCutArc.
*/
void MainWindow::ApplyDialogCutArc()
{
ApplyDialog<VToolCutArc>();
}
//---------------------------------------------------------------------------------------------------------------------
@ -682,7 +850,7 @@ void MainWindow::ToolCutArc(bool checked)
*/
void MainWindow::ClosedDialogCutArc(int result)
{
ClosedDialog<VToolCutArc>(result);
ClosedDialogWithApply<VToolCutArc>(result);
}
//---------------------------------------------------------------------------------------------------------------------
@ -692,7 +860,7 @@ void MainWindow::ClosedDialogCutArc(int result)
void MainWindow::About()
{
DialogAboutApp * about_dialog = new DialogAboutApp(this);
about_dialog->setAttribute(Qt::WA_DeleteOnClose,true);
about_dialog->setAttribute(Qt::WA_DeleteOnClose, true);
about_dialog->show();
}
@ -742,6 +910,14 @@ void MainWindow::PatternProperties()
proper.exec();
}
//---------------------------------------------------------------------------------------------------------------------
void MainWindow::EditPatternCode()
{
DialogPatternXmlEdit *Pattern = new DialogPatternXmlEdit (this, doc);
Pattern->setAttribute(Qt::WA_DeleteOnClose, true);
Pattern->show();
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief showEvent handle after show window.
@ -1488,7 +1664,9 @@ void MainWindow::SetEnableWidgets(bool enable)
}
ui->actionTable->setEnabled(enable);
ui->actionHistory->setEnabled(enable);
ui->actionZoomIn->setEnabled(enable);
ui->actionPattern_properties->setEnabled(enable);
ui->actionEdit_pattern_code->setEnabled(enable);
ui->actionZoomIn->setEnabled(enable);
ui->actionZoomOut->setEnabled(enable);
}
@ -1851,6 +2029,8 @@ void MainWindow::CreateActions()
connect(ui->actionPreferences, &QAction::triggered, this, &MainWindow::Preferences);
connect(ui->actionPattern_properties, &QAction::triggered, this, &MainWindow::PatternProperties);
ui->actionPattern_properties->setEnabled(false);
connect(ui->actionEdit_pattern_code, &QAction::triggered, this, &MainWindow::EditPatternCode);
ui->actionEdit_pattern_code->setEnabled(false);
//Actions for recent files loaded by a main window application.
for (int i = 0; i < MaxRecentFiles; ++i)

View File

@ -103,17 +103,24 @@ public slots:
void ToolCutArc(bool checked);
void ClosedDialogEndLine(int result);
void ApplyDialogEndLine();
void ClosedDialogLine(int result);
void ClosedDialogAlongLine(int result);
void ApplyDialogAlongLine();
void ClosedDialogShoulderPoint(int result);
void ApplyDialogShoulderPoint();
void ClosedDialogNormal(int result);
void ApplyDialogNormal();
void ClosedDialogBisector(int result);
void ApplyDialogBisector();
void ClosedDialogLineIntersect(int result);
void ClosedDialogSpline(int result);
void ClosedDialogArc(int result);
void ApplyDialogArc();
void ClosedDialogSplinePath(int result);
void ClosedDialogCutSplinePath(int result);
void ClosedDialogPointOfContact(int result);
void ApplyDialogPointOfContact();
void ClosedDialogDetail(int result);
void ClosedDialogHeight(int result);
void ClosedDialogTriangle(int result);
@ -121,6 +128,7 @@ public slots:
void ClosedDialogUnionDetails(int result);
void ClosedDialogCutSpline(int result);
void ClosedDialogCutArc(int result);
void ApplyDialogCutArc();
void About();
void AboutQt();
@ -129,6 +137,10 @@ public slots:
void ShowToolTip(const QString &toolTip);
void OpenRecentFile();
void Clear();
/**
* @brief Edit XML code of pattern
*/
void EditPatternCode();
void FullParseFile();
signals:
/**
@ -217,10 +229,15 @@ private:
template <typename Dialog, typename Func>
void SetToolButton(bool checked, Valentina::Tools t, const QString &cursor, const QString &toolTip,
Func closeDialogSlot);
template <typename Dialog, typename Func, typename Func2>
void SetToolButtonWithApply(bool checked, Valentina::Tools t, const QString &cursor, const QString &toolTip,
Func closeDialogSlot, Func2 applyDialogSlot);
template <typename DrawTool>
void ClosedDialog(int result);
template <typename DrawTool>
void ClosedDialogWithApply(int result);
template <typename DrawTool>
void ApplyDialog();
bool SavePattern(const QString &curFile);
void AutoSavePattern();
void setCurrentFile(const QString &fileName);

View File

@ -699,6 +699,7 @@
<addaction name="actionZoomOut"/>
<addaction name="separator"/>
<addaction name="actionPattern_properties"/>
<addaction name="actionEdit_pattern_code"/>
</widget>
<widget class="QMenu" name="menuMeasurements">
<property name="title">
@ -1056,6 +1057,11 @@
<string>Zoom out</string>
</property>
</action>
<action name="actionEdit_pattern_code">
<property name="text">
<string>Edit pattern XML code</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<tabstops>

View File

@ -340,6 +340,8 @@ extern const QString in_Oprt;
} \
#endif /* Q_OS_WIN32 */
#else // define but disable this function if debugging is not set
#define SCASSERT(cond) qt_noop();
#endif /* QT_NO_DEBUG */
#endif // OPTIONS_H

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -39,9 +39,6 @@
#if defined __cplusplus
/* Add C++ includes here */
#ifdef Q_CC_MSVC
#define _USE_MATH_DEFINES
#endif
#ifdef QT_CORE_LIB
# include <QtCore>

View File

@ -97,7 +97,7 @@ void TableWindow::AddDetail()
{
tableScene->clearSelection();
VItem* Detail = listDetails[indexDetail];
Q_CHECK_PTR(Detail);
SCASSERT(Detail != nullptr);
connect(Detail, &VItem::itemOut, this, &TableWindow::itemOut);
connect(Detail, &VItem::itemColliding, this, &TableWindow::itemColliding);
connect(this, &TableWindow::LengthChanged, Detail, &VItem::LengthChanged);
@ -329,7 +329,7 @@ void TableWindow::itemColliding(QList<QGraphicsItem *> list, int number)
if (lis.size()-2 <= 0)
{
VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(i) );
Q_CHECK_PTR(bitem);
SCASSERT(bitem != nullptr);
bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
listCollidingItems.removeAt(i);
}
@ -338,7 +338,7 @@ void TableWindow::itemColliding(QList<QGraphicsItem *> list, int number)
else if (listCollidingItems.size()==1)
{
VItem * bitem = qgraphicsitem_cast<VItem *> ( listCollidingItems.at(0) );
Q_CHECK_PTR(bitem);
SCASSERT(bitem != nullptr);
bitem->setPen(QPen(Qt::black, qApp->toPixel(qApp->widthMainLine())));
listCollidingItems.clear();
collidingItems = true;

View File

@ -124,6 +124,25 @@ void VDrawTool::FullUpdateFromGui(int result)
dialog = nullptr;
}
//---------------------------------------------------------------------------------------------------------------------
void VDrawTool::FullUpdateFromGuiApply()
{
QDomElement domElement = doc->elementById(QString().setNum(id));
if (domElement.isElement())
{
SaveDialog(domElement);
emit FullUpdateTree();
emit toolhaveChange();
}
}
//---------------------------------------------------------------------------------------------------------------------
void VDrawTool::DialogLinkDestroy()
{
this->dialog=nullptr;
}
//---------------------------------------------------------------------------------------------------------------------
/**
* @brief SetFactor set current scale factor of scene.
@ -170,9 +189,9 @@ qreal VDrawTool::CheckFormula(QString &formula, VContainer *data)
//Need delete dialog here because parser in dialog don't allow use correct separator for parsing here.
//Don't know why.
delete dialog;
Calculator *cal = new Calculator(data);
result = cal->EvalFormula(formula);
delete cal;//Here can be memory leak, but dialog already check this formula and probability very low.
Calculator *cal1 = new Calculator(data);
result = cal1->EvalFormula(formula);
delete cal1;//Here can be memory leak, but dialog already check this formula and probability very low.
}
else
{

View File

@ -30,7 +30,6 @@
#define VDRAWTOOL_H
#include "../vabstracttool.h"
#include <QMenu>
#include <QGraphicsSceneContextMenuEvent>
#include <QGraphicsView>
@ -51,6 +50,10 @@ public:
/** @brief setDialog set dialog when user want change tool option. */
virtual void setDialog() {}
/**
* @brief DialogLinkDestroy removes dialog pointer
*/
virtual void DialogLinkDestroy();
void ignoreContextMenu(bool enable);
static qreal CheckFormula(QString &formula, VContainer *data);
@ -59,6 +62,10 @@ public slots:
virtual void ChangedActivDraw(const QString &newName);
void ChangedNameDraw(const QString &oldName, const QString &newName);
virtual void FullUpdateFromGui(int result);
/**
* @brief FullUpdateFromGuiApply refresh tool data after change in options but do not delete dialog
*/
virtual void FullUpdateFromGuiApply();
virtual void SetFactor(qreal factor);
protected:
/** @brief ignoreContextMenuEvent ignore or not context menu events. */
@ -119,6 +126,7 @@ protected:
connect(qobject_cast< VMainGraphicsScene * >(tool->scene()),
&VMainGraphicsScene::ChoosedObject, dialog, &DialogTool::ChoosedObject);
connect(dialog, &DialogTool::DialogClosed, tool, &Tool::FullUpdateFromGui);
connect(dialog, &DialogTool::DialogApplied, tool, &Tool::FullUpdateFromGuiApply);
if (ignoreFullUpdate == false)
{
connect(doc, &VPattern::FullUpdateFromFile, dialog, &DialogTool::UpdateList);

View File

@ -133,9 +133,9 @@ void VToolAlongLine::RemoveReferens()
//---------------------------------------------------------------------------------------------------------------------
void VToolAlongLine::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogAlongLine *dialogTool = qobject_cast<DialogAlongLine*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());
@ -146,9 +146,9 @@ void VToolAlongLine::SaveDialog(QDomElement &domElement)
//---------------------------------------------------------------------------------------------------------------------
void VToolAlongLine::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogAlongLine *dialogTool = qobject_cast<DialogAlongLine*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine);
dialogTool->setFormula(formula);
@ -158,22 +158,28 @@ void VToolAlongLine::setDialog()
}
//---------------------------------------------------------------------------------------------------------------------
void VToolAlongLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
VToolAlongLine* VToolAlongLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogAlongLine *dialogTool = qobject_cast<DialogAlongLine*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
QString formula = dialogTool->getFormula();
const quint32 firstPointId = dialogTool->getFirstPointId();
const quint32 secondPointId = dialogTool->getSecondPointId();
const QString typeLine = dialogTool->getTypeLine();
const QString pointName = dialogTool->getPointName();
Create(0, pointName, typeLine, formula, firstPointId, secondPointId, 5, 10, scene, doc, data,
VToolAlongLine *point=nullptr;
point = Create(0, pointName, typeLine, formula, firstPointId, secondPointId, 5, 10, scene, doc, data,
Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
}
//---------------------------------------------------------------------------------------------------------------------
void VToolAlongLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine, QString &formula,
VToolAlongLine* VToolAlongLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine, QString &formula,
const quint32 &firstPointId, const quint32 &secondPointId, const qreal &mx, const qreal &my,
VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation)
@ -212,5 +218,7 @@ void VToolAlongLine::Create(const quint32 _id, const QString &pointName, const Q
doc->AddTool(id, point);
doc->IncrementReferens(firstPointId);
doc->IncrementReferens(secondPointId);
return point;
}
return nullptr;
}

View File

@ -64,7 +64,7 @@ public:
* @param doc dom document container.
* @param data container with variables.
*/
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
static VToolAlongLine* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/**
* @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet.
@ -81,7 +81,7 @@ public:
* @param parse parser file mode.
* @param typeCreation way we create this tool.
*/
static void Create(const quint32 _id, const QString &pointName, const QString &typeLine, QString &formula,
static VToolAlongLine* Create(const quint32 _id, const QString &pointName, const QString &typeLine, QString &formula,
const quint32 &firstPointId, const quint32 &secondPointId, const qreal &mx, const qreal &my,
VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation);

View File

@ -63,9 +63,9 @@ VToolArc::VToolArc(VPattern *doc, VContainer *data, quint32 id, const Valentina:
//---------------------------------------------------------------------------------------------------------------------
void VToolArc::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogArc *dialogTool = qobject_cast<DialogArc*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VArc *arc = VAbstractTool::data.GeometricObject<const VArc *>(id);
dialogTool->SetCenter(arc->GetCenter().id());
dialogTool->SetF1(arc->GetFormulaF1());
@ -74,20 +74,26 @@ void VToolArc::setDialog()
}
//---------------------------------------------------------------------------------------------------------------------
void VToolArc::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
VToolArc* VToolArc::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogArc *dialogTool = qobject_cast<DialogArc*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const quint32 center = dialogTool->GetCenter();
QString radius = dialogTool->GetRadius();
QString f1 = dialogTool->GetF1();
QString f2 = dialogTool->GetF2();
Create(0, center, radius, f1, f2, scene, doc, data, Document::FullParse, Valentina::FromGui);
VToolArc* point = nullptr;
point=Create(0, center, radius, f1, f2, scene, doc, data, Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
}
//---------------------------------------------------------------------------------------------------------------------
void VToolArc::Create(const quint32 _id, const quint32 &center, QString &radius, QString &f1, QString &f2,
VToolArc* VToolArc::Create(const quint32 _id, const quint32 &center, QString &radius, QString &f1, QString &f2,
VMainGraphicsScene *scene, VPattern *doc, VContainer *data, const Document::Documents &parse,
const Valentina::Sources &typeCreation)
{
@ -122,7 +128,9 @@ void VToolArc::Create(const quint32 _id, const quint32 &center, QString &radius,
connect(toolArc, &VToolArc::ChoosedTool, scene, &VMainGraphicsScene::ChoosedItem);
doc->AddTool(id, toolArc);
doc->IncrementReferens(center);
return toolArc;
}
return nullptr;
}
//---------------------------------------------------------------------------------------------------------------------
@ -269,9 +277,9 @@ void VToolArc::keyReleaseEvent(QKeyEvent *event)
//---------------------------------------------------------------------------------------------------------------------
void VToolArc::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogArc *dialogTool = qobject_cast<DialogArc*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetCenter()));
doc->SetAttribute(domElement, AttrRadius, dialogTool->GetRadius());
doc->SetAttribute(domElement, AttrAngle1, dialogTool->GetF1());

View File

@ -61,7 +61,7 @@ public:
* @param doc dom document container
* @param data container with variables
*/
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
static VToolArc* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/**
* @brief Create help create tool form GUI.
* @param _id tool id, 0 if tool doesn't exist yet.
@ -75,7 +75,7 @@ public:
* @param parse parser file mode.
* @param typeCreation way we create this tool.
*/
static void Create(const quint32 _id, const quint32 &center, QString &radius, QString &f1, QString &f2,
static VToolArc* Create(const quint32 _id, const quint32 &center, QString &radius, QString &f1, QString &f2,
VMainGraphicsScene *scene, VPattern *doc, VContainer *data, const Document::Documents &parse,
const Valentina::Sources &typeCreation);
static const QString TagName;

View File

@ -75,9 +75,9 @@ QPointF VToolBisector::FindPoint(const QPointF &firstPoint, const QPointF &secon
//---------------------------------------------------------------------------------------------------------------------
void VToolBisector::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogBisector *dialogTool = qobject_cast<DialogBisector*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine);
dialogTool->setFormula(formula);
@ -88,24 +88,30 @@ void VToolBisector::setDialog()
}
//---------------------------------------------------------------------------------------------------------------------
void VToolBisector::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VToolBisector* VToolBisector::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogBisector *dialogTool = qobject_cast<DialogBisector*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
QString formula = dialogTool->getFormula();
const quint32 firstPointId = dialogTool->getFirstPointId();
const quint32 secondPointId = dialogTool->getSecondPointId();
const quint32 thirdPointId = dialogTool->getThirdPointId();
const QString typeLine = dialogTool->getTypeLine();
const QString pointName = dialogTool->getPointName();
Create(0, formula, firstPointId, secondPointId, thirdPointId, typeLine, pointName, 5, 10, scene, doc, data,
VToolBisector *point = nullptr;
point=Create(0, formula, firstPointId, secondPointId, thirdPointId, typeLine, pointName, 5, 10, scene, doc, data,
Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
}
//---------------------------------------------------------------------------------------------------------------------
void VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
VToolBisector* VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine,
const QString &pointName, const qreal &mx, const qreal &my,
VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
@ -146,7 +152,9 @@ void VToolBisector::Create(const quint32 _id, QString &formula, const quint32 &f
doc->IncrementReferens(firstPointId);
doc->IncrementReferens(secondPointId);
doc->IncrementReferens(thirdPointId);
return point;
}
return nullptr;
}
//---------------------------------------------------------------------------------------------------------------------
@ -233,9 +241,9 @@ void VToolBisector::RemoveReferens()
//---------------------------------------------------------------------------------------------------------------------
void VToolBisector::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogBisector *dialogTool = qobject_cast<DialogBisector*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());

View File

@ -75,7 +75,7 @@ public:
* @param doc dom document container.
* @param data container with variables.
*/
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
static VToolBisector* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/**
* @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet.
@ -93,7 +93,7 @@ public:
* @param parse parser file mode.
* @param typeCreation way we create this tool.
*/
static void Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
static VToolBisector* Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
const quint32 &secondPointId, const quint32 &thirdPointId, const QString &typeLine,
const QString &pointName, const qreal &mx, const qreal &my, VMainGraphicsScene *scene,
VPattern *doc, VContainer *data, const Document::Documents &parse,

View File

@ -69,9 +69,9 @@ VToolCutArc::VToolCutArc(VPattern *doc, VContainer *data, const quint32 &id, con
//---------------------------------------------------------------------------------------------------------------------
void VToolCutArc::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogCutArc *dialogTool = qobject_cast<DialogCutArc*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *point = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setFormula(formula);
dialogTool->setArcId(arcId, id);
@ -79,20 +79,26 @@ void VToolCutArc::setDialog()
}
//---------------------------------------------------------------------------------------------------------------------
void VToolCutArc::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VToolCutArc* VToolCutArc::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogCutArc *dialogTool = qobject_cast<DialogCutArc*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const QString pointName = dialogTool->getPointName();
QString formula = dialogTool->getFormula();
const quint32 arcId = dialogTool->getArcId();
Create(0, pointName, formula, arcId, 5, 10, scene, doc, data, Document::FullParse, Valentina::FromGui);
VToolCutArc* point = nullptr;
point=Create(0, pointName, formula, arcId, 5, 10, scene, doc, data, Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
}
//---------------------------------------------------------------------------------------------------------------------
void VToolCutArc::Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId,
VToolCutArc* VToolCutArc::Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId,
const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation)
{
@ -151,7 +157,9 @@ void VToolCutArc::Create(const quint32 _id, const QString &pointName, QString &f
doc->AddTool(arc1id, point);
doc->AddTool(arc2id, point);
doc->IncrementReferens(arcId);
return point;
}
return nullptr;
}
//---------------------------------------------------------------------------------------------------------------------
@ -252,9 +260,9 @@ void VToolCutArc::RefreshGeometry()
//---------------------------------------------------------------------------------------------------------------------
void VToolCutArc::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogCutArc *dialogTool = qobject_cast<DialogCutArc*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());
doc->SetAttribute(domElement, AttrArc, QString().setNum(dialogTool->getArcId()));

View File

@ -65,7 +65,7 @@ public:
* @param doc dom document container.
* @param data container with variables.
*/
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
static VToolCutArc* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/**
* @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet.
@ -80,7 +80,7 @@ public:
* @param parse parser file mode.
* @param typeCreation way we create this tool.
*/
static void Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId,
static VToolCutArc* Create(const quint32 _id, const QString &pointName, QString &formula, const quint32 &arcId,
const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation);
static const QString ToolType;

View File

@ -70,9 +70,9 @@ VToolCutSpline::VToolCutSpline(VPattern *doc, VContainer *data, const quint32 &i
//---------------------------------------------------------------------------------------------------------------------
void VToolCutSpline::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogCutSpline *dialogTool = qobject_cast<DialogCutSpline*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *point = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setFormula(formula);
dialogTool->setSplineId(splineId, id);
@ -83,9 +83,9 @@ void VToolCutSpline::setDialog()
void VToolCutSpline::Create(DialogTool *dialog, VMainGraphicsScene *scene,
VPattern *doc, VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogCutSpline *dialogTool = qobject_cast<DialogCutSpline*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const QString pointName = dialogTool->getPointName();
QString formula = dialogTool->getFormula();
const quint32 splineId = dialogTool->getSplineId();
@ -254,9 +254,9 @@ void VToolCutSpline::RemoveReferens()
//---------------------------------------------------------------------------------------------------------------------
void VToolCutSpline::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogCutSpline *dialogTool = qobject_cast<DialogCutSpline*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());
doc->SetAttribute(domElement, AttrSpline, QString().setNum(dialogTool->getSplineId()));

View File

@ -71,9 +71,9 @@ VToolCutSplinePath::VToolCutSplinePath(VPattern *doc, VContainer *data, const qu
//---------------------------------------------------------------------------------------------------------------------
void VToolCutSplinePath::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogCutSplinePath *dialogTool = qobject_cast<DialogCutSplinePath*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *point = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setFormula(formula);
dialogTool->setSplinePathId(splinePathId, id);
@ -83,9 +83,9 @@ void VToolCutSplinePath::setDialog()
//---------------------------------------------------------------------------------------------------------------------
void VToolCutSplinePath::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogCutSplinePath *dialogTool = qobject_cast<DialogCutSplinePath*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const QString pointName = dialogTool->getPointName();
QString formula = dialogTool->getFormula();
const quint32 splinePathId = dialogTool->getSplinePathId();
@ -99,7 +99,7 @@ void VToolCutSplinePath::Create(const quint32 _id, const QString &pointName, QSt
const Document::Documents &parse, const Valentina::Sources &typeCreation)
{
const VSplinePath *splPath = data->GeometricObject<const VSplinePath *>(splinePathId);
Q_CHECK_PTR(splPath);
SCASSERT(splPath != nullptr);
const qreal result = CheckFormula(formula, data);
@ -329,9 +329,9 @@ void VToolCutSplinePath::RemoveReferens()
//---------------------------------------------------------------------------------------------------------------------
void VToolCutSplinePath::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogCutSplinePath *dialogTool = qobject_cast<DialogCutSplinePath*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());
doc->SetAttribute(domElement, AttrSplinePath, QString().setNum(dialogTool->getSplinePathId()));

View File

@ -55,9 +55,9 @@ VToolEndLine::VToolEndLine(VPattern *doc, VContainer *data, const quint32 &id,
//---------------------------------------------------------------------------------------------------------------------
void VToolEndLine::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogEndLine *dialogTool = qobject_cast<DialogEndLine*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine);
dialogTool->setFormula(formula);
@ -67,26 +67,32 @@ void VToolEndLine::setDialog()
}
//---------------------------------------------------------------------------------------------------------------------
void VToolEndLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data)
VToolEndLine* VToolEndLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogEndLine *dialogTool = qobject_cast<DialogEndLine*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool);
const QString pointName = dialogTool->getPointName();
const QString typeLine = dialogTool->getTypeLine();
QString formula = dialogTool->getFormula();
const qreal angle = dialogTool->getAngle();
const quint32 basePointId = dialogTool->getBasePointId();
Create(0, pointName, typeLine, formula, angle, basePointId, 5, 10, scene, doc, data, Document::FullParse,
Valentina::FromGui);
VToolEndLine *point = nullptr;
point=Create(0, pointName, typeLine, formula, angle, basePointId, 5, 10, scene, doc, data, Document::FullParse,
Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
}
//---------------------------------------------------------------------------------------------------------------------
void VToolEndLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine,
QString &formula, const qreal &angle, const quint32 &basePointId,
const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation)
VToolEndLine* VToolEndLine::Create(const quint32 _id, const QString &pointName, const QString &typeLine,
QString &formula, const qreal &angle, const quint32 &basePointId,
const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation)
{
const VPointF *basePoint = data->GeometricObject<const VPointF *>(basePointId);
QLineF line = QLineF(basePoint->toQPointF(), QPointF(basePoint->x()+100, basePoint->y()));
@ -118,7 +124,9 @@ void VToolEndLine::Create(const quint32 _id, const QString &pointName, const QSt
connect(scene, &VMainGraphicsScene::NewFactor, point, &VToolPoint::SetFactor);
doc->AddTool(id, point);
doc->IncrementReferens(basePointId);
return point;
}
return nullptr;
}
//---------------------------------------------------------------------------------------------------------------------
@ -187,9 +195,9 @@ void VToolEndLine::RefreshDataInFile()
//---------------------------------------------------------------------------------------------------------------------
void VToolEndLine::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogEndLine *dialogTool = qobject_cast<DialogEndLine*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());

View File

@ -63,8 +63,9 @@ public:
* @param scene pointer to scene.
* @param doc dom document container.
* @param data container with variables.
* @return the created tool
*/
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
static VToolEndLine *Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/**
* @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet.
@ -80,8 +81,9 @@ public:
* @param data container with variables.
* @param parse parser file mode.
* @param typeCreation way we create this tool.
* @return the created tool
*/
static void Create(const quint32 _id, const QString &pointName, const QString &typeLine,
static VToolEndLine *Create(const quint32 _id, const QString &pointName, const QString &typeLine,
QString &formula, const qreal &angle, const quint32 &basePointId, const qreal &mx,
const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation);

View File

@ -52,9 +52,9 @@ VToolHeight::VToolHeight(VPattern *doc, VContainer *data, const quint32 &id, con
//---------------------------------------------------------------------------------------------------------------------
void VToolHeight::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogHeight *dialogTool = qobject_cast<DialogHeight*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine);
dialogTool->setBasePointId(basePointId, id);
@ -67,9 +67,9 @@ void VToolHeight::setDialog()
void VToolHeight::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogHeight *dialogTool = qobject_cast<DialogHeight*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
disconnect(doc, &VPattern::FullUpdateFromFile, dialogTool, &DialogHeight::UpdateList);
const QString pointName = dialogTool->getPointName();
const QString typeLine = dialogTool->getTypeLine();
@ -199,9 +199,9 @@ void VToolHeight::RefreshDataInFile()
//---------------------------------------------------------------------------------------------------------------------
void VToolHeight::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogHeight *dialogTool = qobject_cast<DialogHeight*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrBasePoint, QString().setNum(dialogTool->getBasePointId()));

View File

@ -64,9 +64,9 @@ VToolLine::VToolLine(VPattern *doc, VContainer *data, quint32 id, quint32 firstP
//---------------------------------------------------------------------------------------------------------------------
void VToolLine::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogLine *dialogTool = qobject_cast<DialogLine*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
dialogTool->setFirstPoint(firstPoint);
dialogTool->setSecondPoint(secondPoint);
dialogTool->setTypeLine(typeLine);
@ -75,9 +75,9 @@ void VToolLine::setDialog()
//---------------------------------------------------------------------------------------------------------------------
void VToolLine::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogLine *dialogTool = qobject_cast<DialogLine*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const quint32 firstPoint = dialogTool->getFirstPoint();
const quint32 secondPoint = dialogTool->getSecondPoint();
const QString typeLine = dialogTool->getTypeLine();
@ -89,9 +89,9 @@ void VToolLine::Create(const quint32 &_id, const quint32 &firstPoint, const quin
const QString &typeLine, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation)
{
Q_CHECK_PTR(scene);
Q_CHECK_PTR(doc);
Q_CHECK_PTR(data);
SCASSERT(scene != nullptr);
SCASSERT(doc != nullptr);
SCASSERT(data != nullptr);
quint32 id = _id;
if (typeCreation == Valentina::FromGui)
{
@ -245,9 +245,9 @@ void VToolLine::keyReleaseEvent(QKeyEvent *event)
//---------------------------------------------------------------------------------------------------------------------
void VToolLine::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogLine *dialogTool = qobject_cast<DialogLine*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrFirstPoint, QString().setNum(dialogTool->getFirstPoint()));
doc->SetAttribute(domElement, AttrSecondPoint, QString().setNum(dialogTool->getSecondPoint()));
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());

View File

@ -54,9 +54,9 @@ VToolLineIntersect::VToolLineIntersect(VPattern *doc, VContainer *data, const qu
//---------------------------------------------------------------------------------------------------------------------
void VToolLineIntersect::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogLineIntersect *dialogTool = qobject_cast<DialogLineIntersect*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setP1Line1(p1Line1);
dialogTool->setP2Line1(p2Line1);
@ -68,9 +68,9 @@ void VToolLineIntersect::setDialog()
//---------------------------------------------------------------------------------------------------------------------
void VToolLineIntersect::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogLineIntersect *dialogTool = qobject_cast<DialogLineIntersect*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const quint32 p1Line1Id = dialogTool->getP1Line1();
const quint32 p2Line1Id = dialogTool->getP2Line1();
const quint32 p1Line2Id = dialogTool->getP1Line2();
@ -218,9 +218,9 @@ void VToolLineIntersect::RemoveReferens()
//---------------------------------------------------------------------------------------------------------------------
void VToolLineIntersect::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogLineIntersect *dialogTool = qobject_cast<DialogLineIntersect*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrP1Line1, QString().setNum(dialogTool->getP1Line1()));
doc->SetAttribute(domElement, AttrP2Line1, QString().setNum(dialogTool->getP2Line1()));

View File

@ -54,9 +54,9 @@ VToolNormal::VToolNormal(VPattern *doc, VContainer *data, const quint32 &id, con
//---------------------------------------------------------------------------------------------------------------------
void VToolNormal::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogNormal *dialogTool = qobject_cast<DialogNormal*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setTypeLine(typeLine);
dialogTool->setFormula(formula);
@ -67,23 +67,29 @@ void VToolNormal::setDialog()
}
//---------------------------------------------------------------------------------------------------------------------
void VToolNormal::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
VToolNormal* VToolNormal::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogNormal *dialogTool = qobject_cast<DialogNormal*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
QString formula = dialogTool->getFormula();
const quint32 firstPointId = dialogTool->getFirstPointId();
const quint32 secondPointId = dialogTool->getSecondPointId();
const QString typeLine = dialogTool->getTypeLine();
const QString pointName = dialogTool->getPointName();
const qreal angle = dialogTool->getAngle();
Create(0, formula, firstPointId, secondPointId, typeLine, pointName, angle, 5, 10, scene, doc, data,
VToolNormal *point = nullptr;
point=Create(0, formula, firstPointId, secondPointId, typeLine, pointName, angle, 5, 10, scene, doc, data,
Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
}
//---------------------------------------------------------------------------------------------------------------------
void VToolNormal::Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
VToolNormal* VToolNormal::Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
const quint32 &secondPointId, const QString &typeLine, const QString &pointName,
const qreal angle, const qreal &mx, const qreal &my, VMainGraphicsScene *scene,
VPattern *doc, VContainer *data, const Document::Documents &parse,
@ -122,7 +128,9 @@ void VToolNormal::Create(const quint32 _id, QString &formula, const quint32 &fir
doc->AddTool(id, point);
doc->IncrementReferens(firstPointId);
doc->IncrementReferens(secondPointId);
return point;
}
return nullptr;
}
//---------------------------------------------------------------------------------------------------------------------
@ -219,9 +227,9 @@ void VToolNormal::RemoveReferens()
//---------------------------------------------------------------------------------------------------------------------
void VToolNormal::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogNormal *dialogTool = qobject_cast<DialogNormal*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrTypeLine, dialogTool->getTypeLine());
doc->SetAttribute(domElement, AttrLength, dialogTool->getFormula());

View File

@ -66,7 +66,7 @@ public:
* @param doc dom document container.
* @param data container with variables.
*/
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
static VToolNormal* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/**
* @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet.
@ -84,7 +84,7 @@ public:
* @param parse parser file mode.
* @param typeCreation way we create this tool.
*/
static void Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
static VToolNormal* Create(const quint32 _id, QString &formula, const quint32 &firstPointId,
const quint32 &secondPointId, const QString &typeLine, const QString &pointName,
const qreal angle, const qreal &mx, const qreal &my, VMainGraphicsScene *scene,
VPattern *doc, VContainer *data, const Document::Documents &parse,

View File

@ -54,9 +54,9 @@ VToolPointOfContact::VToolPointOfContact(VPattern *doc, VContainer *data, const
//---------------------------------------------------------------------------------------------------------------------
void VToolPointOfContact::setDialog()
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogPointOfContact *dialogTool = qobject_cast<DialogPointOfContact*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
const VPointF *p = VAbstractTool::data.GeometricObject<const VPointF *>(id);
dialogTool->setRadius(arcRadius);
dialogTool->setCenter(center, id);
@ -93,22 +93,28 @@ QPointF VToolPointOfContact::FindPoint(const qreal &radius, const QPointF &cente
}
//---------------------------------------------------------------------------------------------------------------------
void VToolPointOfContact::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
VToolPointOfContact* VToolPointOfContact::Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogPointOfContact *dialogTool = qobject_cast<DialogPointOfContact*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
QString radius = dialogTool->getRadius();
const quint32 center = dialogTool->getCenter();
const quint32 firstPointId = dialogTool->getFirstPoint();
const quint32 secondPointId = dialogTool->getSecondPoint();
const QString pointName = dialogTool->getPointName();
Create(0, radius, center, firstPointId, secondPointId, pointName, 5, 10, scene, doc, data,
VToolPointOfContact *point = nullptr;
point=Create(0, radius, center, firstPointId, secondPointId, pointName, 5, 10, scene, doc, data,
Document::FullParse, Valentina::FromGui);
if (point != nullptr)
{
point->dialog=dialogTool;
}
return point;
}
//---------------------------------------------------------------------------------------------------------------------
void VToolPointOfContact::Create(const quint32 _id, QString &radius, const quint32 &center, const quint32 &firstPointId,
VToolPointOfContact* VToolPointOfContact::Create(const quint32 _id, QString &radius, const quint32 &center, const quint32 &firstPointId,
const quint32 &secondPointId, const QString &pointName, const qreal &mx,
const qreal &my, VMainGraphicsScene *scene, VPattern *doc, VContainer *data,
const Document::Documents &parse, const Valentina::Sources &typeCreation)
@ -152,7 +158,9 @@ void VToolPointOfContact::Create(const quint32 _id, QString &radius, const quint
doc->IncrementReferens(center);
doc->IncrementReferens(firstPointId);
doc->IncrementReferens(secondPointId);
return point;
}
return nullptr;
}
//---------------------------------------------------------------------------------------------------------------------
@ -236,9 +244,9 @@ void VToolPointOfContact::RemoveReferens()
//---------------------------------------------------------------------------------------------------------------------
void VToolPointOfContact::SaveDialog(QDomElement &domElement)
{
Q_CHECK_PTR(dialog);
SCASSERT(dialog != nullptr);
DialogPointOfContact *dialogTool = qobject_cast<DialogPointOfContact*>(dialog);
Q_CHECK_PTR(dialogTool);
SCASSERT(dialogTool != nullptr);
doc->SetAttribute(domElement, AttrName, dialogTool->getPointName());
doc->SetAttribute(domElement, AttrRadius, dialogTool->getRadius());
doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->getCenter()));

View File

@ -74,7 +74,7 @@ public:
* @param doc dom document container.
* @param data container with variables.
*/
static void Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
static VToolPointOfContact* Create(DialogTool *dialog, VMainGraphicsScene *scene, VPattern *doc, VContainer *data);
/**
* @brief Create help create tool.
* @param _id tool id, 0 if tool doesn't exist yet.
@ -91,7 +91,7 @@ public:
* @param parse parser file mode.
* @param typeCreation way we create this tool.
*/
static void Create(const quint32 _id, QString &arcRadius, const quint32 &center,
static VToolPointOfContact* Create(const quint32 _id, QString &arcRadius, const quint32 &center,
const quint32 &firstPointId, const quint32 &secondPointId, const QString &pointName,
const qreal &mx, const qreal &my, VMainGraphicsScene *scene, VPattern *doc,
VContainer *data, const Document::Documents &parse, const Valentina::Sources &typeCreation);

Some files were not shown because too many files have changed in this diff Show More