1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7 // kk2006
8
9
10 #include "scgtplugin.h"
11
12 #include <QCheckBox>
13 #include <QDir>
14 #include <QObject>
15 #include <QHBoxLayout>
16 #include <QString>
17 #include <QStringList>
18 #include <QWidget>
19
20 /***************************************************************************************/
21 /***************************************************************************************/
22
23 ScGTPluginManager* ScGTPluginManager::m_instance = nullptr; // init static variables
24
25 ScGTPluginManager::ScGTPluginManager() = default;
26
instance()27 ScGTPluginManager* ScGTPluginManager::instance()
28 {
29 if (!ScGTPluginManager::m_instance)
30 m_instance = new ScGTPluginManager();
31
32 return m_instance;
33 }
34
deleteInstance()35 void ScGTPluginManager::deleteInstance()
36 {
37 delete m_instance;
38 m_instance = nullptr;
39 }
40
registerGTPlugin(ScGTPlugin * plugin)41 void ScGTPluginManager::registerGTPlugin(ScGTPlugin *plugin)
42 {
43 if (plugin)
44 m_plugins.append(plugin);
45 }
46
unRegisterGTPlugin(ScGTPlugin * plugin)47 void ScGTPluginManager::unRegisterGTPlugin(ScGTPlugin *plugin)
48 {
49 m_plugins.removeAll(plugin);
50 }
51
run()52 void ScGTPluginManager::run()
53 {
54 // TODO prefs
55 ScGTFileDialog *dia = new ScGTFileDialog(".", fileFilter(), nullptr, "dia");
56 if (dia->exec())
57 {
58
59 }
60 delete dia;
61 }
62
fileFilter()63 QString ScGTPluginManager::fileFilter()
64 {
65 QString filters;
66 QString allSupported = QObject::tr("All Supported Formats") + " (";
67 for (int i = 0; i < m_plugins.count(); ++i)
68 {
69 if (m_plugins.at(i)->fileExtensions().count() != 0)
70 {
71 filters += m_plugins.at(i)->fileFormatName() + " (";
72 QStringList fileExtensions = m_plugins.at(i)->fileExtensions();
73 for (int j = 0; j < fileExtensions.count(); ++j)
74 {
75 filters += "*." + fileExtensions[j] + " ";
76 allSupported += "*." + fileExtensions[j] + " ";
77 }
78 filters = filters.trimmed();
79 filters += ");;";
80 }
81 }
82 allSupported = allSupported.trimmed();
83 allSupported += ");;";
84 filters = allSupported + filters;
85 filters += QObject::tr("All Files (*)");
86
87 return filters;
88 }
89
options()90 void ScGTPluginManager::options()
91 {
92
93 }
94
95 ScGTPluginManager::~ScGTPluginManager() = default;
96
97 /***************************************************************************************/
98 /***************************************************************************************/
99
ScGTFileDialog(const QString & dirName,const QString & filters,QWidget * parent,const char * name)100 ScGTFileDialog::ScGTFileDialog(const QString& dirName,
101 const QString& filters,
102 QWidget * parent, const char * name)
103 : CustomFDialog(parent, dirName, tr("Select a file to import"), filters)
104 {
105 customize();
106 }
107
showOptions() const108 bool ScGTFileDialog::showOptions() const
109 {
110 return m_showOptionsBox->isChecked();
111 }
112
append() const113 bool ScGTFileDialog::append() const
114 {
115 return m_appendBox->isChecked();
116 }
117
customize()118 void ScGTFileDialog::customize()
119 {
120 m_diaExtension = new QWidget(this);
121 m_diaExtension->setObjectName("diaExtension_");
122
123 m_appendBox = new QCheckBox( tr("Append"), m_diaExtension);
124 m_appendBox->setObjectName("appendBox_");
125 m_showOptionsBox = new QCheckBox( tr("Show options"), m_diaExtension);
126 m_showOptionsBox->setObjectName("showOptionsBox_");
127
128 QHBoxLayout *layout = new QHBoxLayout;
129 layout->setSpacing(6);
130 layout->addWidget(m_appendBox);
131 layout->addWidget(m_showOptionsBox);
132
133 m_diaExtension->setLayout(layout);
134
135 addWidgets(m_diaExtension);
136 }
137
~ScGTFileDialog()138 ScGTFileDialog::~ScGTFileDialog()
139 {
140 delete m_showOptionsBox;
141 delete m_appendBox;
142 delete m_diaExtension;
143 }
144
145 /***************************************************************************************/
146 /***************************************************************************************/
147
148
149
150