1 /************************************************************************
2 **
3 ** Copyright (C) 2014 John Schember <john@nachtimwald.com>
4 **
5 ** This file is part of Sigil.
6 **
7 ** Sigil is free software: you can redistribute it and/or modify
8 ** it under the terms of the GNU General Public License as published by
9 ** the Free Software Foundation, either version 3 of the License, or
10 ** (at your option) any later version.
11 **
12 ** Sigil is distributed in the hope that it will be useful,
13 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ** GNU General Public License for more details.
16 **
17 ** You should have received a copy of the GNU General Public License
18 ** along with Sigil. If not, see <http://www.gnu.org/licenses/>.
19 **
20 *************************************************************************/
21
22 #include <QString>
23 #include <QStringList>
24
25 #include "Misc/Plugin.h"
26 #include "Dialogs/PluginRunner.h"
27
28 #if defined(__APPLE__)
29 static const QString POS = "osx";
30 #elif defined(_WIN32)
31 static const QString POS = "win";
32 #else
33 static const QString POS = "unx";
34 #endif
35
Plugin()36 Plugin::Plugin()
37 {
38 }
39
Plugin(const QHash<QString,QString> & info)40 Plugin::Plugin(const QHash<QString, QString> &info)
41 {
42 if (info.contains("name")) {
43 set_name(info.value("name"));
44 }
45 if (info.contains("author")) {
46 set_author(info.value("author"));
47 }
48 if (info.contains("description")) {
49 set_description(info.value("description"));
50 }
51 if (info.contains("type")) {
52 set_type(info.value("type"));
53 }
54 if (info.contains("version")) {
55 set_version(info.value("version"));
56 }
57 if (info.contains("engine")) {
58 set_engine(info.value("engine"));
59 }
60 if (info.contains("oslist")) {
61 set_oslist(info.value("oslist"));
62 }
63 if (info.contains("autostart")) {
64 set_autostart(info.value("autostart"));
65 }
66 if (info.contains("autoclose")) {
67 set_autoclose(info.value("autoclose"));
68 }
69 if (info.contains("iconpath")) {
70 set_iconpath(info.value("iconpath"));
71 }
72
73
74 }
75
~Plugin()76 Plugin::~Plugin()
77 {
78 }
79
serialize()80 QHash<QString, QString> Plugin::serialize()
81 {
82 QHash <QString, QString> info;
83
84 info.insert("name", get_name());
85 info.insert("author", get_author());
86 info.insert("description", get_description());
87 info.insert("type", get_type());
88 info.insert("version", get_version());
89 info.insert("engine", get_engine());
90 info.insert("oslist", get_oslist());
91 info.insert("autostart", get_autostart());
92 info.insert("autoclose", get_autoclose());
93 info.insert("iconpath", get_iconpath());
94
95 return info;
96 }
97
isvalid()98 bool Plugin::isvalid()
99 {
100 return (!m_name.isEmpty() &&
101 !m_type.isEmpty() &&
102 (!m_engine.isEmpty() && PluginRunner::SupportedEngines().contains(m_engine)) &&
103 (m_oslist.isEmpty() || m_oslist.split(',', QString::SkipEmptyParts).contains(POS)));
104 }
105
get_name()106 QString Plugin::get_name()
107 {
108 return m_name;
109 }
110
get_author()111 QString Plugin::get_author()
112 {
113 return m_author;
114 }
115
get_description()116 QString Plugin::get_description()
117 {
118 return m_description;
119 }
120
get_type()121 QString Plugin::get_type()
122 {
123 return m_type;
124 }
125
get_version()126 QString Plugin::get_version()
127 {
128 return m_version;
129 }
130
get_engine()131 QString Plugin::get_engine()
132 {
133 return m_engine;
134 }
135
get_autostart()136 QString Plugin::get_autostart()
137 {
138 if (m_autostart.isEmpty()) {
139 return "false";
140 }
141 return m_autostart;
142 }
143
get_autoclose()144 QString Plugin::get_autoclose()
145 {
146 if (m_autoclose.isEmpty()) {
147 return "false";
148 }
149 return m_autoclose;
150 }
151
get_oslist()152 QString Plugin::get_oslist()
153 {
154 return m_oslist;
155 }
156
157
get_iconpath()158 QString Plugin::get_iconpath()
159 {
160 return m_iconpath;
161 }
162
set_name(const QString & val)163 void Plugin::set_name(const QString &val)
164 {
165 m_name = val;
166 }
167
set_author(const QString & val)168 void Plugin::set_author(const QString &val)
169 {
170 m_author = val;
171 }
172
set_description(const QString & val)173 void Plugin::set_description(const QString &val)
174 {
175 m_description = val;
176 }
177
set_type(const QString & val)178 void Plugin::set_type(const QString &val)
179 {
180 m_type = val;
181 }
182
set_version(const QString & val)183 void Plugin::set_version(const QString &val)
184 {
185 m_version = val;
186 }
187
188 // multiple engines are possible
set_engine(const QString & val)189 void Plugin::set_engine(const QString &val)
190 {
191 if (!m_engine.isEmpty()) {
192 m_engine = m_engine + "," + val;
193 } else {
194 m_engine = val;
195 }
196 }
197
set_oslist(const QString & val)198 void Plugin::set_oslist(const QString &val)
199 {
200 m_oslist = val;
201 }
202
set_autostart(const QString & val)203 void Plugin::set_autostart(const QString &val)
204 {
205 if (!val.isEmpty()) {
206 m_autostart = val.toLower();
207 }
208 }
209
set_autoclose(const QString & val)210 void Plugin::set_autoclose(const QString &val)
211 {
212 if (!val.isEmpty()) {
213 m_autoclose = val.toLower();
214 }
215 }
216
set_iconpath(const QString & val)217 void Plugin::set_iconpath(const QString &val)
218 {
219 m_iconpath = val;
220 }
221