FreeCAD

Форк
0
/
TaskCustomizeFormat.cpp 
255 строк · 10.9 Кб
1
/***************************************************************************
2
 *   Copyright (c) 2021 edi                                                *
3
 *                                                                         *
4
 *   This file is part of the FreeCAD CAx development system.              *
5
 *                                                                         *
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.      *
10
 *                                                                         *
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.                  *
15
 *                                                                         *
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                                *
20
 *                                                                         *
21
 ***************************************************************************/
22

23
#include "PreCompiled.h"
24
#ifndef _PreComp_
25
# include <cmath>
26
#endif
27

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>
34

35
#include "TaskCustomizeFormat.h"
36
#include "ui_TaskCustomizeFormat.h"
37

38

39
using namespace Gui;
40
using namespace TechDraw;
41
using namespace TechDrawGui;
42

43
//===========================================================================
44
// TaskCustomizeFormat
45
//===========================================================================
46

47
TaskCustomizeFormat::TaskCustomizeFormat(App::DocumentObject * object) :
48
    selectedObject(object),
49
    isDimension(true),
50
    dimRawValue(0.0),
51
    ui(new Ui_TaskCustomizeFormat)
52
{
53

54
    ui->setupUi(this);
55

56
    setUiEdit();
57
}
58

59
TaskCustomizeFormat::~TaskCustomizeFormat()
60
{
61

62
}
63

64
void TaskCustomizeFormat::updateTask()
65
{
66
//    blockUpdate = true;
67

68
//    blockUpdate = false;
69
}
70

71

72
void TaskCustomizeFormat::changeEvent(QEvent *e)
73
{
74
    if (e->type() == QEvent::LanguageChange) {
75
        ui->retranslateUi(this);
76
    }
77
}
78

79
void TaskCustomizeFormat::setUiEdit()
80
{
81
    setWindowTitle(tr("Customize Format"));
82
    if (auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selectedObject))
83
    {
84
        isDimension = true;
85
        std::string dimText = dim->FormatSpec.getStrValue();
86
        dimRawValue = dim->getDimValue();
87
        ui->leFormat->setText(Base::Tools::fromStdString(dimText));
88
    }
89
    else if (auto balloon = dynamic_cast<TechDraw::DrawViewBalloon*>(selectedObject))
90
    {
91
        isDimension = false;
92
        std::string balloonText = balloon->Text.getStrValue();
93
        ui->leFormat->setText(Base::Tools::fromStdString(balloonText));
94
    }
95
    // GD&T
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);
110
    // Modifiers
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);
125
    // Radius & Diameter
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);
131
    // Angles
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);
136
    // Other
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);
146
    // Greek Letters
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);
154

155
    connect(ui->leFormat, &QLineEdit::textChanged, this, &TaskCustomizeFormat::onFormatChanged);
156
    onFormatChanged();
157
}
158

159
void TaskCustomizeFormat::onSymbolClicked()
160
{
161
    // Slot: a symbol PushButton has been clicked
162
    QObject* senderObj(this->sender());
163
    QPushButton* pressedButton = qobject_cast<QPushButton*>(senderObj);
164
    if (pressedButton)
165
    {
166
        QString pbText = pressedButton->text();
167
        ui->leFormat->insert(pbText);
168
    }
169
}
170

171
void TaskCustomizeFormat::onFormatChanged()
172
{
173
    // Slot: the LineEdit field has been changed
174
    QString formatPreview = ui->leFormat->text();
175
    if (isDimension)
176
    {
177
        constexpr int size(80);
178
        char buffer[size];
179
        std::string formatString = formatPreview.toUtf8().constData();
180
        auto usedSize = snprintf(buffer, size, formatString.c_str(), dimRawValue);
181
        formatPreview = QString::fromUtf8(buffer, usedSize);
182
    }
183
    ui->lbShowPreview->setText(formatPreview);
184
}
185

186
bool TaskCustomizeFormat::accept()
187
{
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"));
192
    if (isDimension)
193
    {
194
        auto dim = dynamic_cast<TechDraw::DrawViewDimension*>(selectedObject);
195
        dim->FormatSpec.setValue(formatString);
196
    }
197
    else
198
    {
199
        auto balloon = dynamic_cast<TechDraw::DrawViewBalloon*>(selectedObject);
200
        balloon->Text.setValue(formatString);
201
    }
202
    Gui::Command::commitCommand();
203
    return true;
204
}
205

206
bool TaskCustomizeFormat::reject()
207
{
208
    return true;
209
}
210

211
//===========================================================================
212
// TaskDlgCustomizeFormat
213
//===========================================================================
214

215
TaskDlgCustomizeFormat::TaskDlgCustomizeFormat(App::DocumentObject * object)
216
    : TaskDialog()
217
{
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);
223
}
224

225
TaskDlgCustomizeFormat::~TaskDlgCustomizeFormat()
226
{
227
}
228

229
void TaskDlgCustomizeFormat::update()
230
{
231
//    widget->updateTask();
232
}
233

234
//==== calls from the TaskView ===============================================================
235
void TaskDlgCustomizeFormat::open()
236
{
237
}
238

239
void TaskDlgCustomizeFormat::clicked(int)
240
{
241
}
242

243
bool TaskDlgCustomizeFormat::accept()
244
{
245
    widget->accept();
246
    return true;
247
}
248

249
bool TaskDlgCustomizeFormat::reject()
250
{
251
    widget->reject();
252
    return true;
253
}
254

255
#include <Mod/TechDraw/Gui/moc_TaskCustomizeFormat.cpp>
256

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.