1
/***************************************************************************
2
* Copyright (c) 2019 WandererFan <wandererfan@gmail.com> *
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"
25
# include <QListWidget>
28
#include <App/Application.h>
30
#include "SymbolChooser.h"
31
#include "ui_SymbolChooser.h"
35
using namespace TechDrawGui;
37
SymbolChooser::SymbolChooser(QWidget *parent,
41
ui(new Ui_SymbolChooser),
42
m_symbolDir(startDir),
46
connect(ui->fcSymbolDir, &FileChooser::fileNameChanged,
47
this, &SymbolChooser::onDirectoryChanged);
48
connect(ui->lwSymbols, &QListWidget::itemClicked, //double click?
49
this, &SymbolChooser::onItemClicked);
54
SymbolChooser::~SymbolChooser()
58
void SymbolChooser::setUiPrimary()
60
// Base::Console().Message("SC::setUiPrimary()\n");
61
setWindowTitle(QObject::tr("Select a symbol"));
62
resize(QSize(700, 500));
63
if (!m_symbolDir.isEmpty()) {
64
ui->fcSymbolDir->setFileName(m_symbolDir);
65
loadSymbolNames(m_symbolDir);
67
std::string resourceDir = App::Application::getResourceDir();
68
std::string defPath = "Mod/TechDraw/Symbols/Welding/AWS/";
69
resourceDir = resourceDir + defPath;
70
QString m_symbolDir = QString::fromUtf8(resourceDir.c_str());
71
ui->fcSymbolDir->setFileName(m_symbolDir);
72
loadSymbolNames(m_symbolDir);
75
ui->lwSymbols->setViewMode(QListView::IconMode);
76
ui->lwSymbols->setFlow(QListView::LeftToRight);
77
ui->lwSymbols->setWrapping(true);
78
ui->lwSymbols->setSelectionMode(QAbstractItemView::SingleSelection);
79
ui->lwSymbols->setGridSize(QSize(75, 85));
80
ui->lwSymbols->setIconSize(QSize(45, 45));
81
ui->lwSymbols->setResizeMode(QListView::Adjust);
84
void SymbolChooser::onOKClicked()
87
QListWidgetItem* sourceItem = ui->lwSymbols->currentItem();
90
QString targetText = sourceItem->text();
91
m_symbolPath = m_symbolDir +
93
QString::fromUtf8(".svg");
95
Q_EMIT symbolSelected(m_symbolPath, m_source);
98
void SymbolChooser::onCancelClicked()
103
void SymbolChooser::onItemClicked(QListWidgetItem* item)
106
// Base::Console().Message("SCS::onItemClicked(%s)\n", qPrintable(item->text()));
107
// Are item and currentItem() the same? Should use item?
108
QListWidgetItem* sourceItem = ui->lwSymbols->currentItem();
109
QString targetText = sourceItem->text();
110
m_symbolPath = m_symbolDir +
112
QString::fromUtf8(".svg");
113
Q_EMIT symbolSelected(m_symbolPath, m_source);
115
// Base::Console().Message("SC::onOKClicked - symbol: %s\n", qPrintable(m_symbolPath));
119
void SymbolChooser::onDirectoryChanged(const QString& newDir)
121
ui->lwSymbols->clear(); // Remove all previous symbols
122
// Base::Console().Message("SC::onDirectoryChanged(%s)\n", qPrintable(newDir));
123
m_symbolDir = newDir + QString::fromUtf8("/");
124
loadSymbolNames(m_symbolDir);
127
void SymbolChooser::loadSymbolNames(QString pathToSymbols)
129
// Fill selection list with names and icons
130
QDir symbolDir(pathToSymbols);
131
symbolDir.setFilter(QDir::Files);
132
QStringList fileNames = symbolDir.entryList();
134
for (auto& fn: fileNames) {
135
QString text = (new QFileInfo(fn))->baseName();
136
QIcon icon(pathToSymbols + fn);
138
// Create a symbol in the QListWidget lwSymbols
139
new QListWidgetItem(icon, text, ui->lwSymbols);
143
#include <Mod/TechDraw/Gui/moc_SymbolChooser.cpp>