aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/addon/packaddondialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/addon/packaddondialog.cpp')
-rw-r--r--src/modules/addon/packaddondialog.cpp142
1 files changed, 70 insertions, 72 deletions
diff --git a/src/modules/addon/packaddondialog.cpp b/src/modules/addon/packaddondialog.cpp
index 75eebb7be..405a66d1b 100644
--- a/src/modules/addon/packaddondialog.cpp
+++ b/src/modules/addon/packaddondialog.cpp
@@ -41,6 +41,7 @@
#include <QDir>
#include <QDirIterator>
#include <QDateTime>
+#include <QBuffer>
KviPackAddonDialog::KviPackAddonDialog(QWidget * pParent)
@@ -146,6 +147,9 @@ bool KviPackAddonDialog::checkDirTree(QString * pszError, QString * pszWarning)
return false;
}
+#if 0
+ // These dirs are optional
+
QDir locale(m_szDirPath + "/locale");
if(!locale.exists())
{
@@ -180,20 +184,23 @@ bool KviPackAddonDialog::checkDirTree(QString * pszError, QString * pszWarning)
*pszWarning += __tr2qs_ctx("The help directory (help) does not exist.","addon");
*pszWarning += "\n";
}
+#endif
- QFileInfo init(m_szDirPath + "/init.kvs");
+ QFileInfo init(m_szDirPath + "/install.kvs");
if(!init.exists())
{
- *pszError = __tr2qs_ctx("The initialization script (init.kvs) does not exist.","addon");
+ *pszError = __tr2qs_ctx("The initialization script (install.kvs) does not exist.","addon");
return false;
}
return true;
}
+#if 0
bool KviPackAddonDialog::createInstaller(QString * pszError)
{
- if(pszError) *pszError = "";
+ if(pszError)
+ *pszError = "";
// Start creating install.kvs: header
QString szTmp;
@@ -226,23 +233,20 @@ bool KviPackAddonDialog::createInstaller(QString * pszError)
// install.kvs: copy files
szTmp += "# Copy files in each subdirectory\n# the pics\n";
- szTmp += QString("if (!$file.exists($file.localdir(\"pics/%1\"))) file.mkdir $file.localdir(\"pics/%1\")\n\n").arg(m_szName);
- szTmp += QString("%installer->$copyFiles(\"%mypath/pics/%1\",\"*.png\",$file.localdir(\"pics/%1\"))\n\n").arg(m_szName);
- szTmp += "# the translations\n";
- szTmp += QString("if (!$file.exists($file.localdir(\"locale/%1\"))) file.mkdir $file.localdir(\"locale/%1\")\n\n").arg(m_szName);
- szTmp += "%installer->$copyFiles(\"%mypath/locale/%1\",\"*.mo\",$file.localdir(\"locale/%1\"))\n\n";
+ szTmp += QString("%installer->$copyFiles(\"%mypath/pics\",\"*.png\",$file.localdir(\"pics\"))\n\n");
+ szTmp += "# the translations\n";
+ szTmp += "%installer->$copyFiles(\"%mypath/locale\",\"*.mo\",$file.localdir(\"locale\"))\n\n";
szTmp += "# the documentation\n";
- szTmp += QString("if (!$file.exists($file.localdir(\"help/%1\"))) file.mkdir $file.localdir(\"help/en/%1\")\n\n").arg(m_szName);
- szTmp += QString("%installer->$copyFiles(\"%mypath/help/en/%1/\",\"*.html\",$file.localdir(\"help/en/%1\"))\n\n").arg(m_szName);
+ szTmp += QString("%installer->$copyFiles(\"%mypath/help/\",\"*.html\",$file.localdir(\"help/\"))\n\n");
// install.kvs: generate uninstall alias
szTmp += "# Generate the uninstall alias\n";
szTmp += QString("%installer->$generateUninstallAlias(\"%1::uninstallfiles\")\n\n") \
.arg(m_szName);
- // install.kvs: kill the installer class
+ // kviinstall.kvs: kill the installer class
szTmp += "# Kill the installer helper\n";
szTmp += "delete %installer\n\n";
@@ -293,6 +297,33 @@ bool KviPackAddonDialog::createInstaller(QString * pszError)
return true;
}
+#endif
+
+bool KviPackAddonDialog::addSubdirectoryIfExists(
+ KviPackageWriter &pw,
+ const QString &szAddonPath,
+ const QString &szSubdir,
+ const QString &szTargetSubdir
+ )
+{
+ QString szFullPath = QString::fromAscii("%1%2%3")
+ .arg(szAddonPath).arg(QChar(KVI_PATH_SEPARATOR_CHAR)).arg(szSubdir);
+
+ QDir dir(szFullPath);
+ if(!dir.exists())
+ return true;
+
+ if(!pw.addDirectory(szFullPath,szTargetSubdir))
+ {
+ QString szTmp = __tr2qs_ctx("Packaging failed","addon");
+ szTmp += ": ";
+ szTmp += pw.lastError();
+ QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ return false;
+ }
+
+ return true;
+}
bool KviPackAddonDialog::packAddon()
{
@@ -302,7 +333,7 @@ bool KviPackAddonDialog::packAddon()
m_szVersion = field("packageVersion").toString();
m_szDescription = field("packageDescription").toString();
m_szMinVersion = field("packageMinVersion").toString();
- m_szIcon = field("packageIcon").toString().section("/",-1);
+ m_szIcon = field("packageIcon").toString();
m_szDirPath = field("packageDirPath").toString();
m_szSavePath = field("packageSavePath").toString();
@@ -331,9 +362,11 @@ bool KviPackAddonDialog::packAddon()
m_pPackAddonSummaryFilesWidget->setPath(m_szDirPath);
if(m_pPackAddonSummaryFilesWidget->exec() == QDialog::Rejected)
{
+ delete m_pPackAddonSummaryFilesWidget;
return false;
}
+#if 0
// Create the installer file
if(!createInstaller(&szError))
{
@@ -343,10 +376,10 @@ bool KviPackAddonDialog::packAddon()
);
return false;
}
+#endif
- // We need mandatory UNIX like path separators
- m_szDirPath.replace("\\","/");
- m_szSavePath.replace("\\","/");
+ //m_szDirPath.replace("\\","/");
+ //m_szSavePath.replace("\\","/");
QString szTmp;
szTmp = QDateTime::currentDateTime().toString();
@@ -361,68 +394,34 @@ bool KviPackAddonDialog::packAddon()
pw.addInfoField("Date",szTmp);
pw.addInfoField("Application","KVIrc " KVI_VERSION "." KVI_SOURCES_DATE);
- // Add source dir
- if(!pw.addDirectory(m_szDirPath + "/src","src/"))
+ QPixmap pix(m_szIcon);
+ if(!pix.isNull())
{
- szTmp = __tr2qs_ctx("Packaging failed","addon");
- szTmp += ": ";
- szTmp += pw.lastError();
- QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
- return false;
- }
+ QByteArray * pba = new QByteArray();
+ QBuffer bufferz(pba,0);
- // Add config dir
- if(!pw.addDirectory(m_szDirPath + "/config","config/scripts/" + m_szName))
- {
- szTmp = __tr2qs_ctx("Packaging failed","addon");
- szTmp += ": ";
- szTmp += pw.lastError();
- QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
- return false;
+ bufferz.open(QIODevice::WriteOnly);
+ pix.save(&bufferz,"PNG");
+ bufferz.close();
+ pw.addInfoField("Icon",pba);
}
- // Add image dir
- if(!pw.addDirectory(m_szDirPath + "/pics","pics/" + m_szName))
- {
- szTmp = __tr2qs_ctx("Packaging failed","addon");
- szTmp += ": ";
- szTmp += pw.lastError();
- QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ // Add source dir
+ if(!addSubdirectoryIfExists(pw,m_szDirPath,"src","src/"))
return false;
- }
-
- // Add sound dir
- if(!pw.addDirectory(m_szDirPath + "/sounds","sounds/" + m_szName))
- {
- szTmp = __tr2qs_ctx("Packaging failed","addon");
- szTmp += ": ";
- szTmp += pw.lastError();
- QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ if(!addSubdirectoryIfExists(pw,m_szDirPath,"config","config/"))
return false;
- }
-
- // Add localization dir
- if(!pw.addDirectory(m_szDirPath + "/locale","locale/" + m_szName))
- {
- szTmp = __tr2qs_ctx("Packaging failed","addon");
- szTmp += ": ";
- szTmp += pw.lastError();
- QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ if(!addSubdirectoryIfExists(pw,m_szDirPath,"pics","pics/"))
return false;
- }
-
- // Add help dir
- if(!pw.addDirectory(m_szDirPath + "/help","help/" + m_szName))
- {
- szTmp = __tr2qs_ctx("Packaging failed","addon");
- szTmp += ": ";
- szTmp += pw.lastError();
- QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ if(!addSubdirectoryIfExists(pw,m_szDirPath,"sounds","sounds/"))
+ return false;
+ if(!addSubdirectoryIfExists(pw,m_szDirPath,"locale","locale/"))
+ return false;
+ if(!addSubdirectoryIfExists(pw,m_szDirPath,"help","help/"))
return false;
- }
// Add initialization script
- if(!pw.addFile(m_szDirPath + "/init.kvs","init.kvs"))
+ if(!pw.addFile(QString("%1%2%3").arg(m_szDirPath).arg(QChar(KVI_PATH_SEPARATOR_CHAR)).arg("install.kvs"),"install.kvs"))
{
szTmp = __tr2qs_ctx("Packaging failed","addon");
szTmp += ": ";
@@ -430,9 +429,10 @@ bool KviPackAddonDialog::packAddon()
QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
return false;
}
-
+
+#if 0
// Add installer script
- if(!pw.addFile(m_szDirPath + "/install.kvs","install.kvs"))
+ if(!pw.addFile(QString("%1%2%3").arg(m_szDirPath).arg(QChar(KVI_PATH_SEPARATOR_CHAR)).arg("install.kvs"),"install.kvs"))
{
szTmp = __tr2qs_ctx("Packaging failed","addon");
szTmp += ": ";
@@ -440,6 +440,7 @@ bool KviPackAddonDialog::packAddon()
QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
return false;
}
+#endif
// Create the addon package
if(m_szSavePath.isEmpty())
@@ -461,9 +462,6 @@ bool KviPackAddonDialog::packAddon()
return false;
}
- // Debug purpose
- //KviPackageReader pr;
- //pr.unpack("/home/ale/Test-2.0.3.kva","/home/ale/unpacked_test_kva");
QMessageBox::information(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),__tr2qs("Package saved successfully in ") + m_szSavePath,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);