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