aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2010-06-27 13:34:31 +0000
committerGravatar Szymon Tomasz Stefanek2010-06-27 13:34:31 +0000
commita55ce13a433f25760fe94d7c64cb9c1e7bb02463 (patch)
treedb6dda323eb3bbcee6624ffb7ccd7faa457ae6ec
parentFix syntax highlighting (diff)
downloadKVIrc-a55ce13a433f25760fe94d7c64cb9c1e7bb02463.tar.gz
KVIrc-a55ce13a433f25760fe94d7c64cb9c1e7bb02463.tar.bz2
KVIrc-a55ce13a433f25760fe94d7c64cb9c1e7bb02463.zip
More addon tweaks
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4531 17fca916-40b9-46aa-a4ea-0a15b648b75c
-rw-r--r--doc/addon.howto.txt9
-rw-r--r--src/kvilib/file/kvi_packagefile.cpp50
-rw-r--r--src/kvirc/ui/kvi_filedialog.cpp5
-rw-r--r--src/kvirc/ui/kvi_htmldialog.cpp2
-rw-r--r--src/kvirc/ui/kvi_selectors.cpp36
-rw-r--r--src/kvirc/ui/kvi_selectors.h7
-rw-r--r--src/modules/addon/packaddondialog.cpp159
-rw-r--r--src/modules/addon/packaddondialog.h10
8 files changed, 127 insertions, 151 deletions
diff --git a/doc/addon.howto.txt b/doc/addon.howto.txt
index 6cbe6f30f..adc927edb 100644
--- a/doc/addon.howto.txt
+++ b/doc/addon.howto.txt
@@ -6,12 +6,9 @@ SUMMARY
1. PREFACE
2. INSTALLATION
3. A TYPICAL ADDON LAYOUT
-4. THE INIT FILE
-5. THE HELP AND CONFIGURATION CALLBACKS
-6. THE REAL WORK
-7. SOME EXAMPLES
-8. HINTS
-9. WHERE TO START
+4. SOME EXAMPLES
+5. HINTS
+6. WHERE TO START
1. PREFACE
diff --git a/src/kvilib/file/kvi_packagefile.cpp b/src/kvilib/file/kvi_packagefile.cpp
index 765054394..9150a9438 100644
--- a/src/kvilib/file/kvi_packagefile.cpp
+++ b/src/kvilib/file/kvi_packagefile.cpp
@@ -230,7 +230,6 @@ bool KviPackageWriter::addDirectory(const QString &szLocalDirectoryName,const QS
if(!(uAddFileFlags & FollowSymLinks))
iFlags |= QDir::NoSymLinks;
- // QT4SUX: Because the QDir::entryInfoList() breaks really a lot of code by returning an object that behaves in a _totally_ different way.. it's also much slower
int j;
QFileInfoList sl = d.entryInfoList(iFlags);
for(j=0;j<sl.size();j++)
@@ -502,21 +501,25 @@ bool KviPackageWriter::packInternal(const QString &szFileName,kvi_u32_t)
magic[1] = 'V';
magic[2] = 'P';
magic[3] = 'F';
- if(f.write(magic,4) != 4)return writeError();
+ if(f.write(magic,4) != 4)
+ return writeError();
// Version
kvi_u32_t uVersion = 0x1;
- if(!f.save(uVersion))return writeError();
+ if(!f.save(uVersion))
+ return writeError();
// Flags
kvi_u32_t uFlags = 0x0;
- if(!f.save(uFlags))return writeError();
+ if(!f.save(uFlags))
+ return writeError();
// write PackageInfo
// InfoFieldCount
kvi_u32_t uCount = m_pStringInfoFields->count() + m_pBinaryInfoFields->count();
- if(!f.save(uCount))return writeError();
+ if(!f.save(uCount))
+ return writeError();
m_iCurrentProgress = 5;
if(!updateProgress(m_iCurrentProgress,__tr2qs("Writing informational fields")))
@@ -526,10 +529,13 @@ bool KviPackageWriter::packInternal(const QString &szFileName,kvi_u32_t)
KviPointerHashTableIterator<QString,QString> it(*m_pStringInfoFields);
while(QString * s = it.current())
{
- if(!f.save(it.currentKey()))return writeError();
+ if(!f.save(it.currentKey()))
+ return writeError();
kvi_u32_t uType = KVI_PACKAGE_INFOFIELD_TYPE_STRING;
- if(!f.save(uType))return writeError();
- if(!f.save(*s))return writeError();
+ if(!f.save(uType))
+ return writeError();
+ if(!f.save(*s))
+ return writeError();
++it;
}
@@ -537,10 +543,13 @@ bool KviPackageWriter::packInternal(const QString &szFileName,kvi_u32_t)
KviPointerHashTableIterator<QString,QByteArray> it2(*m_pBinaryInfoFields);
while(QByteArray * b = it2.current())
{
- if(!f.save(it2.currentKey()))return writeError();
+ if(!f.save(it2.currentKey()))
+ return writeError();
kvi_u32_t uType = KVI_PACKAGE_INFOFIELD_TYPE_BINARYBUFFER;
- if(!f.save(uType))return writeError();
- if(!f.save(*b))return writeError();
+ if(!f.save(uType))
+ return writeError();
+ if(!f.save(*b))
+ return writeError();
++it2;
}
@@ -604,7 +613,9 @@ bool KviPackageReader::readHeaderInternal(KviFile * pFile,const QString &)
// Magic
char magic[4];
- if(pFile->read(magic,4) != 4) return readError();
+ if(pFile->read(magic,4) != 4)
+ return readError();
+
if((magic[0] != 'K') || (magic[1] != 'V') || (magic[2] != 'P') || (magic[3] != 'F'))
{
setLastError(__tr2qs("The file specified is not a valid KVIrc package"));
@@ -613,7 +624,8 @@ bool KviPackageReader::readHeaderInternal(KviFile * pFile,const QString &)
// Version
kvi_u32_t uVersion;
- if(!pFile->load(uVersion))return readError();
+ if(!pFile->load(uVersion))
+ return readError();
if(uVersion != 0x1)
{
setLastError(__tr2qs("The package has an invalid version number, it might have been created by a newer KVIrc"));
@@ -622,14 +634,16 @@ bool KviPackageReader::readHeaderInternal(KviFile * pFile,const QString &)
// Flags
kvi_u32_t uFlags;
- if(!pFile->load(uFlags))return readError();
+ if(!pFile->load(uFlags))
+ return readError();
// we ignore them at the moment
// read PackageInfo
// InfoFieldCount
kvi_u32_t uCount;
- if(!pFile->load(uCount))return writeError();
+ if(!pFile->load(uCount))
+ return writeError();
m_pStringInfoFields->clear();
m_pBinaryInfoFields->clear();
@@ -638,9 +652,11 @@ bool KviPackageReader::readHeaderInternal(KviFile * pFile,const QString &)
while(uIdx < uCount)
{
QString szKey;
- if(!pFile->load(szKey))return readError();
+ if(!pFile->load(szKey))
+ return readError();
kvi_u32_t uFieldType;
- if(!pFile->load(uFieldType))return readError();
+ if(!pFile->load(uFieldType))
+ return readError();
switch(uFieldType)
{
case KVI_PACKAGE_INFOFIELD_TYPE_STRING:
diff --git a/src/kvirc/ui/kvi_filedialog.cpp b/src/kvirc/ui/kvi_filedialog.cpp
index aaaea0f84..d16f00114 100644
--- a/src/kvirc/ui/kvi_filedialog.cpp
+++ b/src/kvirc/ui/kvi_filedialog.cpp
@@ -150,6 +150,8 @@ bool KviFileDialog::askForSaveFileName(QString & szBuffer, const QString & szCap
szBuffer = szFiles[0];
KviFileUtils::adjustFilePath(szBuffer);
+ qDebug("SGHIBIRIBI");
+
if(!szBuffer.isEmpty())
{
if(!bConfirmOverwrite)
@@ -157,10 +159,13 @@ bool KviFileDialog::askForSaveFileName(QString & szBuffer, const QString & szCap
delete pDialog;
return true;
}
+ qDebug("FILE IS NOT EMPTY");
// Check for the file existence
if(KviFileUtils::fileExists(szBuffer))
{
+ qDebug("CONFIRMING OVERWRITE!");
+
QString szTmp;
KviQString::sprintf(szTmp,__tr2qs("The file %s already exists.<br>Do you wish to overwrite it?"),szBuffer.toUtf8().data());
diff --git a/src/kvirc/ui/kvi_htmldialog.cpp b/src/kvirc/ui/kvi_htmldialog.cpp
index 5dc7696dc..592ad3dd9 100644
--- a/src/kvirc/ui/kvi_htmldialog.cpp
+++ b/src/kvirc/ui/kvi_htmldialog.cpp
@@ -70,7 +70,7 @@ KviHtmlDialog::KviHtmlDialog(QWidget * pParent,KviHtmlDialogData * pData)
}
te = new KviTextBrowser(this,pData);
- debug("Create dialog html");
+
pData->m_pDoc->setHtml(pData->szHtmlText);
te->setDocument(pData->m_pDoc);
diff --git a/src/kvirc/ui/kvi_selectors.cpp b/src/kvirc/ui/kvi_selectors.cpp
index db86ef8c3..366dedabe 100644
--- a/src/kvirc/ui/kvi_selectors.cpp
+++ b/src/kvirc/ui/kvi_selectors.cpp
@@ -387,19 +387,43 @@ void KviPixmapSelector::setEnabled(bool bEnabled)
// FIXME: #warning "Option for DIR_MUST_EXISTS...(this widget could be turned into a file selector too)"
KviFileSelector::KviFileSelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled,unsigned int uFlags,const QString &szFilter)
-: KviTalHBox(par), KviSelectorInterface()
+: QWidget(par), KviSelectorInterface()
{
+ QGridLayout * g = new QGridLayout(this);
+
m_uFlags = uFlags;
m_szFilter = szFilter;
m_pLabel = new QLabel(txt,this);
+
+ if(uFlags & VerticalLayout)
+ g->addWidget(m_pLabel,0,0,1,2);
+ else
+ g->addWidget(m_pLabel,0,0);
+
m_pLineEdit = new QLineEdit(this);
+
+ if(uFlags & VerticalLayout)
+ g->addWidget(m_pLineEdit,1,0);
+ else
+ g->addWidget(m_pLineEdit,0,1);
+
//m_pLineEdit->setMinimumWidth(200);
m_pLineEdit->setText(*pOption);
+
m_pButton = new QPushButton(__tr2qs("&Browse..."),this);
connect(m_pButton,SIGNAL(clicked()),this,SLOT(browseClicked()));
- setSpacing(4);
- setStretchFactor(m_pLineEdit,1);
+ if(uFlags & VerticalLayout)
+ g->addWidget(m_pButton,1,1);
+ else
+ g->addWidget(m_pButton,0,2);
+
+ g->setSpacing(4);
+
+ if(uFlags & VerticalLayout)
+ g->setColumnStretch(0,1);
+ else
+ g->setColumnStretch(1,1);
m_pOption = pOption;
@@ -413,7 +437,7 @@ void KviFileSelector::commit()
void KviFileSelector::setEnabled(bool bEnabled)
{
- KviTalHBox::setEnabled(bEnabled);
+ QWidget::setEnabled(bEnabled);
m_pLineEdit->setEnabled(bEnabled);
m_pLabel->setEnabled(bEnabled);
m_pButton->setEnabled(bEnabled);
@@ -450,8 +474,8 @@ void KviFileSelector::select()
}
-KviDirectorySelector::KviDirectorySelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled)
-: KviFileSelector(par,txt,pOption,bEnabled)
+KviDirectorySelector::KviDirectorySelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled,unsigned int uFlags)
+: KviFileSelector(par,txt,pOption,bEnabled,uFlags)
{
}
diff --git a/src/kvirc/ui/kvi_selectors.h b/src/kvirc/ui/kvi_selectors.h
index 827a95515..5c961a609 100644
--- a/src/kvirc/ui/kvi_selectors.h
+++ b/src/kvirc/ui/kvi_selectors.h
@@ -221,7 +221,7 @@ public slots:
};
-class KVIRC_API KviFileSelector : public KviTalHBox, public KviSelectorInterface
+class KVIRC_API KviFileSelector : public QWidget, public KviSelectorInterface
{
Q_OBJECT
Q_PROPERTY(QString tmpFile READ tmpFile WRITE setTmpFile)
@@ -231,7 +231,8 @@ public:
public:
enum Flags {
ChooseSaveFileName = 1,
- DontConfirmOverwrite = 2
+ DontConfirmOverwrite = 2,
+ VerticalLayout = 4
};
protected:
QLabel * m_pLabel;
@@ -259,7 +260,7 @@ class KVIRC_API KviDirectorySelector : public KviFileSelector
{
Q_OBJECT
public:
- KviDirectorySelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled);
+ KviDirectorySelector(QWidget * par,const QString & txt,QString * pOption,bool bEnabled,unsigned int uFlags = 0);
~KviDirectorySelector(){};
protected:
virtual void select();
diff --git a/src/modules/addon/packaddondialog.cpp b/src/modules/addon/packaddondialog.cpp
index bf7411a0e..4d6fc81c0 100644
--- a/src/modules/addon/packaddondialog.cpp
+++ b/src/modules/addon/packaddondialog.cpp
@@ -99,6 +99,9 @@ KviPackAddonDialog::KviPackAddonDialog(QWidget * pParent)
szText += __tr2qs_ctx("Hit the \"Next\" button to begin.","addon");
pLabel->setText(szText);
pLayout->addWidget(pLabel);
+
+ pPage->setMinimumWidth(350);
+
addPage(pPage);
// Packager information
@@ -116,6 +119,7 @@ KviPackAddonDialog::KviPackAddonDialog(QWidget * pParent)
// Summary info
m_pPackAddonSummaryInfoWidget = new KviPackAddonSummaryInfoWidget(this);
addPage(m_pPackAddonSummaryInfoWidget);
+
}
KviPackAddonDialog::~KviPackAddonDialog()
@@ -124,7 +128,8 @@ KviPackAddonDialog::~KviPackAddonDialog()
void KviPackAddonDialog::accept()
{
- if(!packAddon()) return;
+ if(!packAddon())
+ return;
QWizard::accept();
}
@@ -140,52 +145,6 @@ bool KviPackAddonDialog::checkDirTree(QString * pszError, QString * pszWarning)
return false;
}
-#if 0
- QDir source(m_szDirPath + "/src");
- if(!source.exists())
- {
- *pszError = __tr2qs_ctx("The sources directory (src) does not exist.","addon");
- return false;
- }
-
- // These dirs are optional
-
- QDir locale(m_szDirPath + "/locale");
- if(!locale.exists())
- {
- *pszWarning += __tr2qs_ctx("The translations directory (locale) does not exist.","addon");
- *pszWarning += "\n";
- }
-
- QDir sound(m_szDirPath + "/sound");
- if(!sound.exists())
- {
- *pszWarning += __tr2qs_ctx("The audio directory (sound) does not exist.","addon");
- *pszWarning += "\n";
- }
-
- QDir pics(m_szDirPath + "/pics");
- if(!pics.exists())
- {
- *pszWarning += __tr2qs_ctx("The pictures directory (pics) does not exist.","addon");
- *pszWarning += "\n";
- }
-
- QDir config(m_szDirPath + "/config");
- if(!config.exists())
- {
- *pszWarning += __tr2qs_ctx("The configurations directory (config) does not exist.","addon");
- *pszWarning += "\n";
- }
-
- QDir help(m_szDirPath + "/help");
- if(!help.exists())
- {
- *pszWarning += __tr2qs_ctx("The help directory (help) does not exist.","addon");
- *pszWarning += "\n";
- }
-#endif
-
QFileInfo init(m_szDirPath + "/install.kvs");
if(!init.exists())
{
@@ -299,31 +258,6 @@ bool KviPackAddonDialog::createInstaller(QString * pszError)
}
#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()
{
@@ -366,20 +300,6 @@ bool KviPackAddonDialog::packAddon()
return false;
}
-#if 0
- // Create the installer file
- if(!createInstaller(&szError))
- {
- QMessageBox::critical(this,
- __tr2qs_ctx("Addon Packaging Error","addon"),
- szError,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton
- );
- return false;
- }
-#endif
-
- //m_szDirPath.replace("\\","/");
- //m_szSavePath.replace("\\","/");
QString szTmp;
szTmp = QDateTime::currentDateTime().toString();
@@ -403,35 +323,51 @@ bool KviPackAddonDialog::packAddon()
bufferz.open(QIODevice::WriteOnly);
pix.save(&bufferz,"PNG");
bufferz.close();
- pw.addInfoField("Icon",pba);
+ pw.addInfoField("Image",pba);
}
- // Add source dir
- if(!addSubdirectoryIfExists(pw,m_szDirPath,"src","src/"))
- return false;
- if(!addSubdirectoryIfExists(pw,m_szDirPath,"config","config/"))
- return false;
- if(!addSubdirectoryIfExists(pw,m_szDirPath,"pics","pics/"))
- return false;
- if(!addSubdirectoryIfExists(pw,m_szDirPath,"audio","audio/"))
- return false;
- if(!addSubdirectoryIfExists(pw,m_szDirPath,"sounds","audio/"))
- return false;
- if(!addSubdirectoryIfExists(pw,m_szDirPath,"locale","locale/"))
- return false;
- if(!addSubdirectoryIfExists(pw,m_szDirPath,"help","help/"))
- return false;
+ QDir dir(m_szDirPath);
+ QFileInfoList ls = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::Readable | QDir::NoSymLinks | QDir::NoDotAndDotDot);
- // Add initialization script
- if(!pw.addFile(QString("%1%2%3").arg(m_szDirPath).arg(QChar(KVI_PATH_SEPARATOR_CHAR)).arg("install.kvs"),"install.kvs"))
+ if(ls.isEmpty())
{
szTmp = __tr2qs_ctx("Packaging failed","addon");
szTmp += ": ";
- szTmp += pw.lastError();
+ szTmp += __tr2qs_ctx("The package file list is empty","addon");
QMessageBox::critical(this,__tr2qs_ctx("Export Addon - KVIrc","addon"),szTmp,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
return false;
}
+ for(QFileInfoList::Iterator it = ls.begin();it != ls.end();++it)
+ {
+ const QFileInfo &inf = *it;
+
+ if(inf.isDir())
+ {
+ if(!pw.addDirectory(inf.absoluteFilePath(),QString("%1/").arg(inf.fileName())))
+ {
+ 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;
+ }
+
+ continue;
+ }
+
+ // must be a file
+ if(!pw.addFile(inf.absoluteFilePath(),inf.fileName()))
+ {
+ 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;
+ }
+ }
+
+
// Create the addon package
if(m_szSavePath.isEmpty())
{
@@ -536,11 +472,11 @@ KviPackAddonFileSelectionWidget::KviPackAddonFileSelectionWidget(KviPackAddonDia
QVBoxLayout * pLayout = new QVBoxLayout(this);
// Select source directory
- m_pDirPathSelector = new KviDirectorySelector(this,__tr2qs_ctx("Select the source directory:","addon"),&m_szDirPath,true);
+ m_pDirPathSelector = new KviDirectorySelector(this,__tr2qs_ctx("Select the source directory:","addon"),&m_szDirPath,true,KviFileSelector::VerticalLayout);
pLayout->addWidget(m_pDirPathSelector);
// Select addon icon
- m_pPackageIconEdit = new KviFileSelector(this,__tr2qs_ctx("Select the icon file:","addon"),&m_szPackageIcon,true,0,KVI_FILTER_IMAGE);
+ m_pPackageIconEdit = new KviFileSelector(this,__tr2qs_ctx("Select the icon file:","addon"),&m_szPackageIcon,true,KviFileSelector::VerticalLayout,KVI_FILTER_IMAGE);
pLayout->addWidget(m_pPackageIconEdit);
// Store data in the fields
@@ -563,7 +499,14 @@ KviPackAddonSaveSelectionWidget::KviPackAddonSaveSelectionWidget(KviPackAddonDia
QVBoxLayout * pLayout = new QVBoxLayout(this);
// Select save path
- m_pSavePathSelector = new KviFileSelector(this,__tr2qs_ctx("Select save path:","addon"),&m_szFilePath,true,KviFileSelector::ChooseSaveFileName,KVI_FILTER_ADDON);
+ m_pSavePathSelector = new KviFileSelector(
+ this,
+ __tr2qs_ctx("Select save path:","addon"),
+ &m_szFilePath,
+ true,
+ KviFileSelector::ChooseSaveFileName | KviFileSelector::VerticalLayout,
+ KVI_FILTER_ADDON
+ );
pLayout->addWidget(m_pSavePathSelector);
// Store data in the fields
diff --git a/src/modules/addon/packaddondialog.h b/src/modules/addon/packaddondialog.h
index fed8adc61..7ba157322 100644
--- a/src/modules/addon/packaddondialog.h
+++ b/src/modules/addon/packaddondialog.h
@@ -99,16 +99,6 @@ protected:
bool packAddon();
/**
- * Helper for packAddon()
- */
- bool addSubdirectoryIfExists(
- KviPackageWriter &pw,
- const QString &szAddonPath,
- const QString &szSubdir,
- const QString &szTargetSubdir
- );
-
- /**
* \brief Ensures the sources directory is complete
* \param pszError The buffer containing errors
* \param pszWarning The buffer containing warnings