r21054 by craig -
scribus-commit
scribus-commit at lists.scribus.net
Fri Mar 4 19:34:42 UTC 2016
Author: craig
Date: Fri Mar 4 19:34:42 2016
New Revision: 21054
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=21054
Log:
Adjust zip capability to use directory structure of zip files, add ability to Resource Manager to download help files with checksum verification
Modified:
trunk/Scribus/scribus/plugins/gettext/sxwim/sxwim.cpp
trunk/Scribus/scribus/third_party/zip/scribus_zip.cpp
trunk/Scribus/scribus/third_party/zip/scribus_zip.h
trunk/Scribus/scribus/ui/helpbrowser.cpp
trunk/Scribus/scribus/ui/resourcemanager.cpp
trunk/Scribus/scribus/ui/resourcemanager.h
Modified: trunk/Scribus/scribus/plugins/gettext/sxwim/sxwim.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21054&path=/trunk/Scribus/scribus/plugins/gettext/sxwim/sxwim.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/sxwim/sxwim.cpp (original)
+++ trunk/Scribus/scribus/plugins/gettext/sxwim/sxwim.cpp Fri Mar 4 19:34:42 2016
@@ -95,8 +95,8 @@
{
QTemporaryDir *dir = new QTemporaryDir();
QString baseDir = dir->path();
- fun->extract(STYLE, baseDir);
- fun->extract(CONTENT, baseDir);
+ fun->extract(STYLE, baseDir, ScZipHandler::SkipPaths);
+ fun->extract(CONTENT, baseDir, ScZipHandler::SkipPaths);
stylePath = baseDir + "/" + STYLE;
contentPath = baseDir + "/" + CONTENT;
if ((!stylePath.isNull()) && (!contentPath.isNull()))
Modified: trunk/Scribus/scribus/third_party/zip/scribus_zip.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21054&path=/trunk/Scribus/scribus/third_party/zip/scribus_zip.cpp
==============================================================================
--- trunk/Scribus/scribus/third_party/zip/scribus_zip.cpp (original)
+++ trunk/Scribus/scribus/third_party/zip/scribus_zip.cpp Fri Mar 4 19:34:42 2016
@@ -110,7 +110,7 @@
return retVal;
}
-bool ScZipHandler::extract(QString name, QString path)
+bool ScZipHandler::extract(QString name, QString path, ExtractionOption eo)
{
bool retVal = false;
if (m_uz != NULL)
@@ -126,7 +126,7 @@
if (!fi.isWritable())
outDir = ScPaths::getApplicationDataDir();
QDir::setCurrent(outDir);
- UnZip::ErrorCode ec = m_uz->extractFile(name, outDir, UnZip::SkipPaths);
+ UnZip::ErrorCode ec = m_uz->extractFile(name, outDir, static_cast<UnZip::ExtractionOption>(eo));
retVal = (ec == UnZip::Ok);
QDir::setCurrent(pwd);
}
Modified: trunk/Scribus/scribus/third_party/zip/scribus_zip.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21054&path=/trunk/Scribus/scribus/third_party/zip/scribus_zip.h
==============================================================================
--- trunk/Scribus/scribus/third_party/zip/scribus_zip.h (original)
+++ trunk/Scribus/scribus/third_party/zip/scribus_zip.h Fri Mar 4 19:34:42 2016
@@ -28,6 +28,14 @@
class ScZipHandler
{
public:
+ enum ExtractionOption
+ {
+ ExtractPaths = 0x0001,
+ SkipPaths = 0x0002,
+ VerifyOnly = 0x0004,
+ NoSilentDirectoryCreation = 0x0008
+ };
+
ScZipHandler(bool forWrite = false);
virtual ~ScZipHandler();
bool open(QString fileName);
@@ -35,7 +43,7 @@
bool contains(QString fileName);
bool read(QString fileName, QByteArray &buf);
bool write(QString dirName);
- bool extract(QString name, QString path);
+ bool extract(QString name, QString path, ExtractionOption eo);
QStringList files();
private:
UnZip* m_uz;
Modified: trunk/Scribus/scribus/ui/helpbrowser.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21054&path=/trunk/Scribus/scribus/ui/helpbrowser.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/helpbrowser.cpp (original)
+++ trunk/Scribus/scribus/ui/helpbrowser.cpp Fri Mar 4 19:34:42 2016
@@ -568,10 +568,10 @@
if (!language.isEmpty())
{
//Check if we can load, eg "de" when "de_CH" docs don't exist
- QString baseHelpMenuFile3 = QDir::toNativeSeparators(baseHelpDir + language.left(2) + "/menu.xml");
- QString altHelpMenuFile3 = QDir::toNativeSeparators(installHelpDir + language.left(2) + "/menu.xml");
- QFileInfo fi3 = QFileInfo(baseHelpMenuFile3);
- QFileInfo altfi3 = QFileInfo(altHelpMenuFile3);
+ QString baseHelpMenuFile3(QDir::toNativeSeparators(baseHelpDir + language.left(2) + "/menu.xml"));
+ QString altHelpMenuFile3(QDir::toNativeSeparators(installHelpDir + language.left(2) + "/menu.xml"));
+ QFileInfo fi3(baseHelpMenuFile3);
+ QFileInfo altfi3(altHelpMenuFile3);
if (fi3.exists())
{
language=language.left(2);
Modified: trunk/Scribus/scribus/ui/resourcemanager.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21054&path=/trunk/Scribus/scribus/ui/resourcemanager.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/resourcemanager.cpp (original)
+++ trunk/Scribus/scribus/ui/resourcemanager.cpp Fri Mar 4 19:34:42 2016
@@ -19,11 +19,14 @@
* *
***************************************************************************/
+#include <QByteArray>
#include <QComboBox>
+#include <QCryptographicHash>
#include <QDebug>
#include <QDomDocument>
#include <QFile>
#include <QFileInfo>
+#include <QList>
#include <QMessageBox>
#include <QString>
#include <QStringList>
@@ -70,15 +73,20 @@
resourceCategories.insert(RM_FONTS, tr("Fonts"));
resourceCategories.insert(RM_HYPH, tr("Hyphenation Dictionaries"));
resourceCategories.insert(RM_SPELL, tr("Spelling Dictionaries"));
+ resourceCategories.insert(RM_HELP, tr("Help Manuals"));
//resourceCategories.insert(RM_TEMPLATES, tr("Templates"));
//resourceCategories.insert(RM_PROFILES, tr("Color Profiles"));
+// resourceCategories.insert(RM_TEST, tr("Test"));
dataFiles.clear();
- dataFiles.insert(RM_FONTS, "scribus_fonts_151.xml");
- dataFiles.insert(RM_HYPH, "scribus_hyph_dicts_151.xml");
- dataFiles.insert(RM_SPELL, "scribus_spell_dicts_151.xml");
+ dataFiles.insert(RM_FONTS, "scribus_fonts.xml");
+ dataFiles.insert(RM_HYPH, "scribus_hyph_dicts.xml");
+ dataFiles.insert(RM_SPELL, "scribus_spell_dicts.xml");
+ dataFiles.insert(RM_HELP, "scribus_help.xml");
//dataFiles.insert(RM_TEMPLATES, "scribus_templates.xml");
//dataFiles.insert(RM_PROFILES, "scribus_profiles.xml");
+// dataFiles.insert(RM_TEST, "test.txt");
+
installedTableWidget->clear();
availableTableWidget->clear();
@@ -92,30 +100,6 @@
categoryComboBox->addItem(i.value(), i.key());
}
categoryChanged();
-}
-
-void ResourceManager::setFontCategory()
-{
- updateInstalledFonts();
- updateAvailableFonts();
-}
-
-void ResourceManager::setHyphCategory()
-{
- updateInstalledHyph();
- updateAvailableHyph();
-}
-
-void ResourceManager::setSpellCategory()
-{
- updateInstalledSpell();
- updateAvailableSpell();
-}
-
-void ResourceManager::setTemplatesCategory()
-{
- updateInstalledTemplates();
- updateAvailableTemplates();
}
void ResourceManager::updateInstalledFonts()
@@ -214,6 +198,19 @@
void ResourceManager::updateInstalledTemplates()
{
+ dictionaryMap.clear();
+ installedTableWidget->clear();
+}
+
+void ResourceManager::updateInstalledHelp()
+{
+ dictionaryMap.clear();
+ installedTableWidget->clear();
+}
+
+void ResourceManager::updateInstalledTest()
+{
+ dictionaryMap.clear();
installedTableWidget->clear();
}
@@ -518,6 +515,108 @@
availableTableWidget->clear();
}
+void ResourceManager::updateAvailableHelp()
+{
+ QFile dataFile(ScPaths::downloadDir() + dataFiles[RM_HELP]);
+ if (!dataFile.exists())
+ return;
+ dataFile.open(QIODevice::ReadOnly);
+ QTextStream ts(&dataFile);
+ ts.setCodec(QTextCodec::codecForName("UTF-8"));
+ QString errorMsg;
+ int eline;
+ int ecol;
+ QDomDocument doc( QString(dataFiles[RM_HELP]).remove(".xml") );
+ QString data(ts.readAll());
+ dataFile.close();
+ if ( !doc.setContent( data, &errorMsg, &eline, &ecol ))
+ {
+ if (data.toLower().contains("404 not found"))
+ qDebug()<<"File not found on server";
+ else
+ qDebug()<<"Could not open file"<<dataFile.fileName();
+ return;
+ }
+ helpList.clear();
+ QDomElement docElem = doc.documentElement();
+ QDomNode n = docElem.firstChild();
+ while( !n.isNull() )
+ {
+ QDomElement e = n.toElement();
+ if( !e.isNull() )
+ {
+ if (e.tagName()=="help")
+ {
+ if (e.hasAttribute("type") && e.hasAttribute("filetype"))
+ {
+ if (e.attribute("type")=="scribusofficial")
+ {
+ struct DownloadItem d;
+ d.desc=e.attribute("description");
+ d.download=false;
+ d.files=e.attribute("files");
+ d.extractfiles="";
+ d.url=e.attribute("URL");
+ d.version=e.attribute("version");
+ d.lang=e.attribute("language");
+ d.license=e.attribute("license");
+ d.filetype=e.attribute("filetype");
+ d.type=e.attribute("type");
+ QUrl url(d.url);
+ if (url.isValid() && !url.isEmpty() && !url.host().isEmpty())
+ helpList.append(d);
+ }
+ }
+ }
+ }
+ n = n.nextSibling();
+ }
+ availableTableWidget->clear();
+ if(helpList.isEmpty())
+ {
+ downloadButton->setEnabled(false);
+ return;
+ }
+ availableTableWidget->setRowCount(helpList.count());
+ availableTableWidget->setColumnCount(5);
+ availableTableWidget->setSortingEnabled(false);
+ int row=0;
+ foreach(DownloadItem d, helpList)
+ {
+ int column=0;
+ QTableWidgetItem *newItem1 = new QTableWidgetItem(d.desc);
+ newItem1->setFlags(newItem1->flags() & ~Qt::ItemIsEditable & ~Qt::ItemIsSelectable);
+ availableTableWidget->setItem(row, column++, newItem1);
+ QTableWidgetItem *newItem2 = new QTableWidgetItem(d.lang);
+ newItem2->setFlags(newItem1->flags());
+ availableTableWidget->setItem(row, column++, newItem2);
+ QTableWidgetItem *newItem3 = new QTableWidgetItem();
+ newItem3->setCheckState(dictionaryMap.contains(d.lang) ? Qt::Checked : Qt::Unchecked);
+ newItem3->setFlags(newItem1->flags() & ~Qt::ItemIsUserCheckable);
+ availableTableWidget->setItem(row, column++, newItem3);
+ QTableWidgetItem *newItem4 = new QTableWidgetItem(d.license);
+ availableTableWidget->setItem(row, column++, newItem4);
+ newItem4->setFlags(newItem4->flags() & ~Qt::ItemIsEditable);
+ QTableWidgetItem *newItem5 = new QTableWidgetItem();
+ newItem5->setFlags(newItem1->flags());
+ newItem5->setCheckState(d.download ? Qt::Checked : Qt::Unchecked);
+ availableTableWidget->setItem(row, column++, newItem5);
+ ++row;
+ }
+ QStringList headers;
+ headers << tr("Description") << tr("Language") << tr("Installed") << tr("License") << tr("Download");
+ availableTableWidget->setHorizontalHeaderLabels(headers);
+ availableTableWidget->resizeColumnsToContents();
+ availableTableWidget->setSortingEnabled(true);
+ availableTableWidget->sortByColumn(0, Qt::AscendingOrder);
+ downloadButton->setEnabled(true);
+}
+
+void ResourceManager::updateAvailableTest()
+{
+ availableTableWidget->clear();
+}
+
QString ResourceManager::findDestinationFolder()
{
QString destinationFolder;
@@ -538,6 +637,12 @@
destinationFolder=ScPaths::getTempFileDir();
//TODO!!!! destinationFolder=ScPaths::getUserDictDir(true);
break;
+ case RM_HELP:
+ destinationFolder=ScPaths::getUserHelpFilesDir(true);
+ break;
+ case RM_TEST:
+ destinationFolder=ScPaths::downloadDir();
+ break;
}
return destinationFolder;
}
@@ -548,16 +653,28 @@
switch (category)
{
case RM_FONTS:
- setFontCategory();
+ updateInstalledFonts();
+ updateAvailableFonts();
break;
case RM_HYPH:
- setHyphCategory();
+ updateInstalledHyph();
+ updateAvailableHyph();
break;
case RM_SPELL:
- setSpellCategory();
+ updateInstalledSpell();
+ updateAvailableSpell();
break;
case RM_TEMPLATES:
- setTemplatesCategory();
+ updateInstalledTemplates();
+ updateAvailableTemplates();
+ break;
+ case RM_HELP:
+ updateInstalledHelp();
+ updateAvailableHelp();
+ break;
+ case RM_TEST:
+ updateInstalledTest();
+ updateAvailableTest();
break;
}
}
@@ -571,6 +688,8 @@
downloadProgressBar->setRange(0, dataFiles.count());
foreach(QString f, dataFiles)
ScQApp->dlManager()->addURL("http://services.scribus.net/"+f, true, ScPaths::downloadDir(), ScPaths::downloadDir());
+ foreach(QString f, dataFiles)
+ ScQApp->dlManager()->addURL("http://services.scribus.net/"+f+".sha256", true, ScPaths::downloadDir(), ScPaths::downloadDir());
connect(ScQApp->dlManager(), SIGNAL(finished()), this, SLOT(downloadListFinished()));
connect(ScQApp->dlManager(), SIGNAL(fileReceived(const QString&)), this, SLOT(updateProgressBar()));
connect(ScQApp->dlManager(), SIGNAL(fileFailed(const QString&)), this, SLOT(updateProgressBar()));
@@ -597,6 +716,18 @@
break;
case RM_TEMPLATES:
updateAvailableTemplates();
+ break;
+ case RM_HELP:
+ if (checkFileHash(ScPaths::downloadDir(), dataFiles[RM_HELP], dataFiles[RM_HELP] + ".sha256", QCryptographicHash::Sha256))
+ updateAvailableHelp();
+ else
+ qDebug()<<"Failure :(";
+ break;
+ case RM_TEST:
+ if (checkFileHash(ScPaths::downloadDir(), dataFiles[RM_TEST], dataFiles[RM_TEST] + ".sha256", QCryptographicHash::Sha256))
+ qDebug()<<"Success!!!";
+ else
+ qDebug()<<"Failure :(";
break;
}
updateAvailableButton->setEnabled(true);
@@ -613,7 +744,6 @@
categoryChanged();
downloadProgressBar->setValue(0);
downloadProgressBar->setVisible(false);
-// dlLabel->setVisible(false);
downloadButton->setEnabled(true);
int category = categoryComboBox->currentData().toInt();
@@ -622,11 +752,9 @@
case RM_FONTS:
foreach(DownloadItem d, downloadList)
{
- //qDebug()<<d.desc<<d.download<<d.files<<d.type;
if (d.filetype=="zip")
{
QString fn(ScPaths::getUserFontDir(true)+d.files);
- //qDebug()<<fn;
QFile dledFile(fn);
QFileInfo fi(dledFile);
if (!dledFile.exists())
@@ -641,13 +769,12 @@
QStringList zipFileContents(fun->files());
QStringList extractFiles(d.extractfiles.split(";", QString::SkipEmptyParts));
QString toDir(ScPaths::getUserFontDir(false)+fi.baseName()+"/");
- QDir d(ScPaths::getUserFontDir(false));
- if (!d.exists(fi.baseName()))
- d.mkdir(fi.baseName());
+ QDir dir(ScPaths::getUserFontDir(false));
+ if (!dir.exists(fi.baseName()))
+ dir.mkdir(fi.baseName());
foreach (QString f2e, zipFileContents)
{
- //qDebug()<<"Unzipping"<<f2e<<"to"<<toDir;
- fun->extract(f2e, toDir);
+ fun->extract(f2e, toDir, ScZipHandler::SkipPaths);
}
}
delete fun;
@@ -661,43 +788,90 @@
break;
case RM_HYPH:
case RM_SPELL:
- int fileType = category == RM_HYPH ? ScPaths::Hyph : ScPaths::Spell;
- foreach(DownloadItem d, downloadList)
{
-// qDebug()<<d.desc<<d.download<<d.files<<d.type;
- if (d.filetype=="zip")
- {
- QString fn(ScPaths::getUserDictDir(static_cast<ScPaths::DictType>(fileType), true)+d.files);
-// qDebug()<<fn;
- QFile dledFile(fn);
- QFileInfo fi(dledFile);
- if (!dledFile.exists())
- qDebug()<<"File doesn\'t exist"<<fn;
- else
- {
- ScZipHandler* fun = new ScZipHandler();
- if (!fun->open(fn))
- qDebug()<<"Zip file doesn\'t open"<<fn;
+ int fileType = category == RM_HYPH ? ScPaths::Hyph : ScPaths::Spell;
+ foreach(DownloadItem d, downloadList)
+ {
+ if (d.filetype=="zip")
+ {
+ QString fn(ScPaths::getUserDictDir(static_cast<ScPaths::DictType>(fileType), true)+d.files);
+ QFile dledFile(fn);
+ QFileInfo fi(dledFile);
+ if (!dledFile.exists())
+ qDebug()<<"File doesn\'t exist"<<fn;
else
{
- QStringList zipContents(fun->files());
- QStringList extractFiles(d.extractfiles.split(";", QString::SkipEmptyParts));
-// QString toDir(ScPaths::getUserDictDir(false)+fi.baseName()+"/");
- QString toDir(ScPaths::getUserDictDir(static_cast<ScPaths::DictType>(fileType), false));
- QDir d(toDir);
- if (d.exists())
+ ScZipHandler* fun = new ScZipHandler();
+ if (!fun->open(fn))
+ qDebug()<<"Zip file doesn\'t open"<<fn;
+ else
{
- foreach (QString f2e, zipContents)
+ QStringList zipContents(fun->files());
+ QStringList extractFiles(d.extractfiles.split(";", QString::SkipEmptyParts));
+ QString toDir(ScPaths::getUserDictDir(static_cast<ScPaths::DictType>(fileType), false));
+ QDir dir(toDir);
+ if (dir.exists())
{
- if (extractFiles.contains(f2e))
+ foreach (QString f2e, zipContents)
{
-// qDebug()<<"Unzipping"<<f2e<<"to"<<toDir;
- fun->extract(f2e, toDir);
+ if (extractFiles.contains(f2e))
+ {
+ fun->extract(f2e, toDir, ScZipHandler::SkipPaths);
+ }
}
}
}
+ delete fun;
}
- delete fun;
+ }
+ if (d.filetype=="plain")
+ {
+ //do nothing as the file is alread in place from dl mgr
+ }
+ }
+ }
+ break;
+ case RM_HELP:
+ foreach(DownloadItem d, downloadList)
+ {
+ //qDebug()<<d.desc<<d.download<<d.files<<d.type;
+ if (d.filetype=="zip")
+ {
+ QString fn(ScPaths::getUserHelpFilesDir(true)+d.files);
+ //qDebug()<<fn;
+ QFile dledFile(fn);
+ QFileInfo fi(dledFile);
+ QFile dledFileSHA256(fn+".sha256");
+ QFileInfo fiSHA256(dledFileSHA256);
+ if (!dledFile.exists() || !dledFileSHA256.exists())
+ qDebug()<<"File doesn\'t exist"<<fn<<fn+".sha256";
+ else
+ {
+ if (checkFileHash(ScPaths::getUserHelpFilesDir(false), fi.fileName(), fiSHA256.fileName(), QCryptographicHash::Sha256))
+ {
+ ScZipHandler* fun = new ScZipHandler();
+ if (!fun->open(fn))
+ qDebug()<<"Zip file doesn\'t open"<<fn;
+ else
+ {
+ QStringList zipFileContents(fun->files());
+ QStringList extractFiles(d.extractfiles.split(";", QString::SkipEmptyParts));
+ QString toDir(ScPaths::getUserHelpFilesDir(false)+d.lang+"/");
+ QDir dir(ScPaths::getUserHelpFilesDir(false));
+ if (!dir.exists(d.lang))
+ dir.mkdir(d.lang);
+ foreach (QString f2e, zipFileContents)
+ {
+ //qDebug()<<"Unzipping"<<f2e<<"to"<<toDir;
+ fun->extract(f2e, toDir, ScZipHandler::ExtractPaths);
+ }
+ }
+ delete fun;
+ }
+ else
+ qDebug()<<"checksum failed for"<<fn + ".sha256";
+ dledFile.remove();
+ dledFileSHA256.remove();
}
}
if (d.filetype=="plain")
@@ -705,6 +879,7 @@
//do nothing as the file is alread in place from dl mgr
}
}
+ break;
}
}
@@ -839,6 +1014,28 @@
}
}
break;
+ case RM_HELP:
+ foreach(DownloadItem d, helpList)
+ {
+// qDebug()<<d.desc;
+ if (filesToDownload.contains(d.desc))
+ {
+ if (d.filetype=="zip")
+ {
+// qDebug()<<"zip type:"<<d.url<<d.files;
+ QStringList plainURLs(d.files.split(";", QString::SkipEmptyParts));
+ foreach (QString s, plainURLs)
+ {
+ ScQApp->dlManager()->addURL(d.url+"/"+s, true, ScPaths::downloadDir(), destinationFolder);
+ ScQApp->dlManager()->addURL(d.url+"/"+s+".sha256", true, ScPaths::downloadDir(), destinationFolder);
+ dlCount+=2;
+ }
+ downloadList.append(d);
+ d.download=true;
+ }
+ }
+ }
+ break;
default:
break;
}
@@ -880,9 +1077,9 @@
{
QString destinationFolder=findDestinationFolder();
QFile dataFile(destinationFolder + licenceFileName);
- QTextStream ts(&dataFile);
if (dataFile.exists())
{
+ QTextStream ts(&dataFile);
dataFile.open(QIODevice::ReadOnly);
data = ts.readAll();
dataFile.close();
Modified: trunk/Scribus/scribus/ui/resourcemanager.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=21054&path=/trunk/Scribus/scribus/ui/resourcemanager.h
==============================================================================
--- trunk/Scribus/scribus/ui/resourcemanager.h (original)
+++ trunk/Scribus/scribus/ui/resourcemanager.h Fri Mar 4 19:34:42 2016
@@ -44,7 +44,9 @@
RM_HYPH,
RM_PROFILES,
RM_SPELL,
- RM_TEMPLATES
+ RM_TEMPLATES,
+ RM_HELP,
+ RM_TEST=99
};
public:
ResourceManager(QWidget* parent);
@@ -57,19 +59,19 @@
void languageChange();
protected:
- void setFontCategory();
- void setHyphCategory();
- void setSpellCategory();
- void setTemplatesCategory();
-
void updateInstalledFonts();
void updateInstalledHyph();
void updateInstalledSpell();
void updateInstalledTemplates();
+ void updateInstalledHelp();
+ void updateInstalledTest();
+
void updateAvailableFonts();
void updateAvailableHyph();
void updateAvailableSpell();
void updateAvailableTemplates();
+ void updateAvailableHelp();
+ void updateAvailableTest();
QString currentCategory;
QMap <int, QString> resourceCategories;
@@ -80,8 +82,10 @@
QList <DownloadItem> dictList;
QList <DownloadItem> fontList;
QList <DownloadItem> templateList;
+ QList <DownloadItem> helpList;
QList <DownloadItem> profileList;
QList <DownloadItem> downloadList;
+ QList <DownloadItem> testList;
QString affixFileName(QStringList files);
QString dictFileName(QStringList files);
QString findDestinationFolder();
More information about the scribus-commit
mailing list