1
/***************************************************************************
2
* Copyright (c) 2021 edi *
4
* This file is part of the FreeCAD CAx development system. *
6
* This library is free software; you can redistribute it and/or *
7
* modify it under the terms of the GNU Library General Public *
8
* License as published by the Free Software Foundation; either *
9
* version 2 of the License, or (at your option) any later version. *
11
* This library is distributed in the hope that it will be useful, *
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14
* GNU Library General Public License for more details. *
16
* You should have received a copy of the GNU Library General Public *
17
* License along with this library; see the file COPYING.LIB. If not, *
18
* write to the Free Software Foundation, Inc., 59 Temple Place, *
19
* Suite 330, Boston, MA 02111-1307, USA *
21
***************************************************************************/
23
#include "PreCompiled.h"
28
#include <App/DocumentObject.h>
29
#include <Base/Tools.h>
30
#include <Gui/BitmapFactory.h>
31
#include <Gui/Command.h>
32
#include <Mod/TechDraw/App/DrawViewBalloon.h>
33
#include <Mod/TechDraw/App/DrawViewDimension.h>
35
#include "TaskCustomizeFormat.h"
36
#include "ui_TaskCustomizeFormat.h"
40
using namespace TechDraw;
41
using namespace TechDrawGui;
43
//===========================================================================
45
//===========================================================================
47
TaskCustomizeFormat::TaskCustomizeFormat(App::DocumentObject * object) :
48
selectedObject(object),
51
ui(new Ui_TaskCustomizeFormat)
59
TaskCustomizeFormat::~TaskCustomizeFormat()
64
void TaskCustomizeFormat::updateTask()
68
// blockUpdate = false;
72
void TaskCustomizeFormat::changeEvent(QEvent *e)
74
if (e->type() == QEvent::LanguageChange) {
75
ui->retranslateUi(this);
79
void TaskCustomizeFormat::setUiEdit()
81
setWindowTitle(tr("Customize Format"));
82
if (auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selectedObject))
85
std::string dimText = dim->FormatSpec.getStrValue();
86
dimRawValue = dim->getDimValue();
87
ui->leFormat->setText(Base::Tools::fromStdString(dimText));
89
else if (auto balloon = dynamic_cast<TechDraw::DrawViewBalloon*>(selectedObject))
92
std::string balloonText = balloon->Text.getStrValue();
93
ui->leFormat->setText(Base::Tools::fromStdString(balloonText));
96
connect(ui->pbA01, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
97
connect(ui->pbA02, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
98
connect(ui->pbA03, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
99
connect(ui->pbA04, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
100
connect(ui->pbA05, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
101
connect(ui->pbA06, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
102
connect(ui->pbA07, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
103
connect(ui->pbA08, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
104
connect(ui->pbA09, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
105
connect(ui->pbA10, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
106
connect(ui->pbA11, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
107
connect(ui->pbA12, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
108
connect(ui->pbA13, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
109
connect(ui->pbA14, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
111
connect(ui->pbB01, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
112
connect(ui->pbB02, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
113
connect(ui->pbB03, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
114
connect(ui->pbB04, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
115
connect(ui->pbB05, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
116
connect(ui->pbB06, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
117
connect(ui->pbB07, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
118
connect(ui->pbB08, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
119
connect(ui->pbB09, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
120
connect(ui->pbB10, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
121
connect(ui->pbB11, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
122
connect(ui->pbB12, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
123
connect(ui->pbB13, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
124
connect(ui->pbB14, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
126
connect(ui->pbC01, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
127
connect(ui->pbC02, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
128
connect(ui->pbC03, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
129
connect(ui->pbC04, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
130
connect(ui->pbC05, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
132
connect(ui->pbD01, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
133
connect(ui->pbD02, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
134
connect(ui->pbD03, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
135
connect(ui->pbD04, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
137
connect(ui->pbE01, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
138
connect(ui->pbE02, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
139
connect(ui->pbE03, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
140
connect(ui->pbE04, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
141
connect(ui->pbE05, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
142
connect(ui->pbE06, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
143
connect(ui->pbE07, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
144
connect(ui->pbE08, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
145
connect(ui->pbE09, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
147
connect(ui->pbF01, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
148
connect(ui->pbF02, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
149
connect(ui->pbF03, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
150
connect(ui->pbF04, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
151
connect(ui->pbF05, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
152
connect(ui->pbF06, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
153
connect(ui->pbF07, &QPushButton::clicked, this, &TaskCustomizeFormat::onSymbolClicked);
155
connect(ui->leFormat, &QLineEdit::textChanged, this, &TaskCustomizeFormat::onFormatChanged);
159
void TaskCustomizeFormat::onSymbolClicked()
161
// Slot: a symbol PushButton has been clicked
162
QObject* senderObj(this->sender());
163
QPushButton* pressedButton = qobject_cast<QPushButton*>(senderObj);
166
QString pbText = pressedButton->text();
167
ui->leFormat->insert(pbText);
171
void TaskCustomizeFormat::onFormatChanged()
173
// Slot: the LineEdit field has been changed
174
QString formatPreview = ui->leFormat->text();
177
constexpr int size(80);
179
std::string formatString = formatPreview.toUtf8().constData();
180
auto usedSize = snprintf(buffer, size, formatString.c_str(), dimRawValue);
181
formatPreview = QString::fromUtf8(buffer, usedSize);
183
ui->lbShowPreview->setText(formatPreview);
186
bool TaskCustomizeFormat::accept()
188
// Slot: the OK button has been pressed
189
QString formatPreview = ui->leFormat->text();
190
std::string formatString = formatPreview.toUtf8().constData();
191
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Customize Format"));
194
auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selectedObject);
195
dim->FormatSpec.setValue(formatString);
199
auto balloon = dynamic_cast<TechDraw::DrawViewBalloon*>(selectedObject);
200
balloon->Text.setValue(formatString);
202
Gui::Command::commitCommand();
206
bool TaskCustomizeFormat::reject()
211
//===========================================================================
212
// TaskDlgCustomizeFormat
213
//===========================================================================
215
TaskDlgCustomizeFormat::TaskDlgCustomizeFormat(App::DocumentObject * object)
218
widget = new TaskCustomizeFormat(object);
219
taskbox = new Gui::TaskView::TaskBox(Gui::BitmapFactory().pixmap("TechDraw_ExtensionCustomizeFormat"),
220
widget->windowTitle(), true, nullptr);
221
taskbox->groupLayout()->addWidget(widget);
222
Content.push_back(taskbox);
225
TaskDlgCustomizeFormat::~TaskDlgCustomizeFormat()
229
void TaskDlgCustomizeFormat::update()
231
// widget->updateTask();
234
//==== calls from the TaskView ===============================================================
235
void TaskDlgCustomizeFormat::open()
239
void TaskDlgCustomizeFormat::clicked(int)
243
bool TaskDlgCustomizeFormat::accept()
249
bool TaskDlgCustomizeFormat::reject()
255
#include <Mod/TechDraw/Gui/moc_TaskCustomizeFormat.cpp>