From 26f44e553bc848d91bd237986beea068cd55b320 Mon Sep 17 00:00:00 2001
From: Elvio Basello
Date: Thu, 8 May 2008 17:05:26 +0000
Subject: new addon packaging system (wip)
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@1711 17fca916-40b9-46aa-a4ea-0a15b648b75c
---
src/modules/addon/CMakeLists.txt | 6 +-
src/modules/addon/addonfunctions.cpp | 346 +++++++++++++++++++++++++++++++++
src/modules/addon/addonfunctions.h | 52 +++++
src/modules/addon/libkviaddon.cpp | 42 +++-
src/modules/addon/managementdialog.cpp | 15 +-
src/modules/addon/packaddondialog.cpp | 289 +++++++++++++++++++++++++++
src/modules/addon/packaddondialog.h | 54 +++++
7 files changed, 791 insertions(+), 13 deletions(-)
create mode 100644 src/modules/addon/addonfunctions.cpp
create mode 100644 src/modules/addon/addonfunctions.h
create mode 100644 src/modules/addon/packaddondialog.cpp
create mode 100644 src/modules/addon/packaddondialog.h
(limited to 'src/modules/addon')
diff --git a/src/modules/addon/CMakeLists.txt b/src/modules/addon/CMakeLists.txt
index 47aa70145..d1594008e 100644
--- a/src/modules/addon/CMakeLists.txt
+++ b/src/modules/addon/CMakeLists.txt
@@ -2,11 +2,15 @@
SET(kviaddon_MOC_HDRS
managementdialog.h
+ packaddondialog.h
+ addonfunctions.h
)
SET(kviaddon_SRCS
- managementdialog.cpp
libkviaddon.cpp
+ managementdialog.cpp
+ packaddondialog.cpp
+ addonfunctions.cpp
)
# After this call, files will be moc'ed to moc_kvi_*.cpp
diff --git a/src/modules/addon/addonfunctions.cpp b/src/modules/addon/addonfunctions.cpp
new file mode 100644
index 000000000..3af9c34d8
--- /dev/null
+++ b/src/modules/addon/addonfunctions.cpp
@@ -0,0 +1,346 @@
+//=============================================================================
+//
+// File : addonfunctions.cpp
+// Created on Fri 02 May 2008 17:36:07 by Elvio Basello
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2008 Elvio Basello
";
+
+ szDetails += szDetailsBuffer;
+
+ if(!bValid)
+ {
+ szDetails += "
"; + szText += __tr2qs_ctx("This procedure allows you to export the selected addon to a single package. It is useful when you want to distribute your addon to the public.","addon"); + szText += "
"; + szText += __tr2qs_ctx("You will be asked to provide a package name, a version and a description.","addon"); + szText += "
"; + szText += __tr2qs_ctx("Hit the \"Next\" button to begin.","addon"); + szText += "
";
+
+ pLabel->setText(szText);
+ pLayout->addWidget(pLabel,0,0);
+ pLayout->setRowStretch(1,1);
+
+ addPage(pPage,__tr2qs_ctx("Welcome","addon"));
+ setBackEnabled(pPage,false);
+ setNextEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setFinishEnabled(pPage,false);
+
+ // packager informations
+ pPage = new QWidget(this);
+ pLayout = new QGridLayout(pPage);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Here you need to provide informations about you (the packager) and a short description of the package you're creating.","addon"));
+ pLabel->setTextFormat(Qt::RichText);
+ pLayout->addWidget(pLabel,0,0,1,2);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Author:","addon"));
+ pLayout->addWidget(pLabel,1,0);
+
+ m_pPackagerNameEdit = new QLineEdit(pPage);
+ m_pPackagerNameEdit->setText(szPackageAuthor);
+ pLayout->addWidget(m_pPackagerNameEdit,1,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Name:","addon"));
+ pLayout->addWidget(pLabel,2,0);
+
+ m_pPackageNameEdit = new QLineEdit(pPage);
+ m_pPackageNameEdit->setText(szPackageName);
+ pLayout->addWidget(m_pPackageNameEdit,2,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Version:","addon"));
+ pLayout->addWidget(pLabel,3,0);
+
+ m_pPackageVersionEdit = new QLineEdit(pPage);
+ m_pPackageVersionEdit->setText(szPackageVersion);
+ pLayout->addWidget(m_pPackageVersionEdit,3,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Description:","addon"));
+ pLayout->addWidget(pLabel,4,0);
+
+ m_pPackageDescriptionEdit = new KviTalTextEdit(pPage);
+ m_pPackageDescriptionEdit->setBackgroundRole(QPalette::Window);
+ m_pPackageDescriptionEdit->setText(szPackageDescription);
+ pLayout->addWidget(m_pPackageDescriptionEdit,4,1,1,2);
+ pLayout->setRowStretch(1,1);
+
+ addPage(pPage,__tr2qs_ctx("Package Informations","addon"));
+ setBackEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setNextEnabled(pPage,true);
+ setFinishEnabled(pPage,false);
+
+ // select script files
+
+ // select image dir
+
+ // select help dir
+
+ // select sound dir
+
+
+
+ // final results
+ pPage = new QWidget(this);
+ pLayout = new QGridLayout(pPage);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Here there are the informations you provided. If they are correct, hit the \"Finish\" button to complete the packaging operations.","addon"));
+ pLayout->addWidget(pLabel,0,0,1,2);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Author:","addon"));
+ pLayout->addWidget(pLabel,1,0);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(m_pPackagerNameEdit->text());
+ pLayout->addWidget(pLabel,1,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Name:","addon"));
+ pLayout->addWidget(pLabel,2,0);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(m_pPackageNameEdit->text());
+ pLayout->addWidget(pLabel,2,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Version:","addon"));
+ pLayout->addWidget(pLabel,3,0);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(m_pPackageVersionEdit->text());
+ pLayout->addWidget(pLabel,3,1);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(__tr2qs_ctx("Package Description:","addon"));
+ pLayout->addWidget(pLabel,4,0);
+
+ pLabel = new QLabel(pPage);
+ pLabel->setText(m_pPackageDescriptionEdit->text());
+ pLayout->addWidget(pLabel,4,1,1,2);
+ pLayout->setRowStretch(1,1);
+
+ addPage(pPage,__tr2qs_ctx("Package Path","addon"));
+ setBackEnabled(pPage,true);
+ setHelpEnabled(pPage,false);
+ setNextEnabled(pPage,false);
+ setFinishEnabled(pPage,true);
+}
+
+KviPackAddonDialog::~KviPackAddonDialog()
+{
+}
+
+void KviPackAddonDialog::accept()
+{
+ if(!packAddon())return;
+ KviTalWizard::accept();
+}
+
+bool KviPackAddonDialog::packAddon()
+{
+ //m_pPathSelector->commit();
+
+ QString szPackageAuthor = m_pPackagerNameEdit->text();
+ QString szPackageName = m_pPackageNameEdit->text();
+ QString szPackageDescription = m_pPackageDescriptionEdit->text();
+ QString szPackageVersion = m_pPackageVersionEdit->text();
+
+ QString szTmp = QDateTime::currentDateTime().toString();
+ KviPackageWriter f;
+ f.addInfoField("PackageType","AddonPack");
+ f.addInfoField("AddonPackVersion","1");
+ f.addInfoField("Name",szPackageName);
+ f.addInfoField("Version",szPackageVersion);
+ f.addInfoField("Author",szPackageAuthor);
+ f.addInfoField("Description",szPackageDescription);
+ f.addInfoField("Date",szTmp);
+ f.addInfoField("Application","KVIrc " KVI_VERSION "." KVI_SOURCES_DATE);
+/*
+ szTmp.setNum(m_pThemeInfoList->count());
+ f.addInfoField("AddonCount",szTmp);
+
+ int iIdx = 0;
+ for(KviThemeInfo * pInfo = m_pThemeInfoList->first();pInfo;pInfo = m_pThemeInfoList->next())
+ {
+ KviQString::sprintf(szTmp,"Theme%dName",iIdx);
+ f.addInfoField(szTmp,pInfo->name());
+ KviQString::sprintf(szTmp,"Theme%dVersion",iIdx);
+ f.addInfoField(szTmp,pInfo->version());
+ KviQString::sprintf(szTmp,"Theme%dDescription",iIdx);
+ f.addInfoField(szTmp,pInfo->description());
+ KviQString::sprintf(szTmp,"Theme%dDate",iIdx);
+ f.addInfoField(szTmp,pInfo->date());
+ KviQString::sprintf(szTmp,"Theme%dSubdirectory",iIdx);
+ f.addInfoField(szTmp,pInfo->subdirectory());
+ KviQString::sprintf(szTmp,"Theme%dAuthor",iIdx);
+ f.addInfoField(szTmp,pInfo->author());
+ KviQString::sprintf(szTmp,"Theme%dApplication",iIdx);
+ f.addInfoField(szTmp,pInfo->application());
+ KviQString::sprintf(szTmp,"Theme%dThemeEngineVersion",iIdx);
+ f.addInfoField(szTmp,pInfo->themeEngineVersion());
+
+ if(!f.addDirectory(pInfo->absoluteDirectory(),pInfo->subdirectory()))
+ {
+ szTmp = __tr2qs_ctx("Packaging failed","addon");
+ szTmp += ": ";
+ szTmp += f.lastError();
+ QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ }
+
+ iIdx++;
+ }
+
+ if(!f.pack(m_szPackagePath))
+ {
+ szTmp = __tr2qs_ctx("Packaging failed","addon");
+ szTmp += ": ";
+ szTmp += f.lastError();
+ QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+ return false;
+ }
+ */
+
+ QMessageBox::information(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),__tr2qs("Package saved succesfully"),QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
+
+ return true;
+}
diff --git a/src/modules/addon/packaddondialog.h b/src/modules/addon/packaddondialog.h
new file mode 100644
index 000000000..f60ad01df
--- /dev/null
+++ b/src/modules/addon/packaddondialog.h
@@ -0,0 +1,54 @@
+#ifndef _PACKADDONDIALOG_H_
+#define _PACKADDONDIALOG_H_
+//=============================================================================
+//
+// File : packaddondialog.h
+// Created on Sat 03 May 2008 01:40:44 by Elvio Basello
+//
+// This file is part of the KVIrc IRC Client distribution
+// Copyright (C) 2008 Elvio Basello