diff options
| author | 2010-06-27 13:34:31 +0000 | |
|---|---|---|
| committer | 2010-06-27 13:34:31 +0000 | |
| commit | a55ce13a433f25760fe94d7c64cb9c1e7bb02463 (patch) | |
| tree | db6dda323eb3bbcee6624ffb7ccd7faa457ae6ec | |
| parent | Fix syntax highlighting (diff) | |
| download | KVIrc-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.txt | 9 | ||||
| -rw-r--r-- | src/kvilib/file/kvi_packagefile.cpp | 50 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_filedialog.cpp | 5 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_htmldialog.cpp | 2 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_selectors.cpp | 36 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_selectors.h | 7 | ||||
| -rw-r--r-- | src/modules/addon/packaddondialog.cpp | 159 | ||||
| -rw-r--r-- | src/modules/addon/packaddondialog.h | 10 |
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 |
