From 721d6e2f218abd227fe7ca6ea93f6acf15790964 Mon Sep 17 00:00:00 2001 From: Szymon Tomasz Stefanek Date: Tue, 25 May 2010 03:33:49 +0000 Subject: Misc tweaks on the addon dialog. git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4374 17fca916-40b9-46aa-a4ea-0a15b648b75c --- src/modules/addon/addonfunctions.cpp | 104 ++++++++++++++++++---------------- src/modules/addon/packaddondialog.cpp | 2 + src/modules/theme/themefunctions.cpp | 2 +- 3 files changed, 59 insertions(+), 49 deletions(-) (limited to 'src/modules') diff --git a/src/modules/addon/addonfunctions.cpp b/src/modules/addon/addonfunctions.cpp index b245b176f..0505e28f1 100644 --- a/src/modules/addon/addonfunctions.cpp +++ b/src/modules/addon/addonfunctions.cpp @@ -44,7 +44,7 @@ namespace KviAddonFunctions { bool notAValidAddonPackage(QString &szError) { - KviQString::sprintf(szError,__tr2qs_ctx("The selected file does not seem to be a valid KVIrc addon package","addon")); + szError = __tr2qs_ctx("The selected file does not seem to be a valid KVIrc addon package","addon"); return false; } @@ -70,16 +70,19 @@ namespace KviAddonFunctions pInfoFields = r.stringInfoFields(); pValue = pInfoFields->find("PackageType"); - if(!pValue)return notAValidAddonPackage(szError); + if(!pValue) + return notAValidAddonPackage(szError); pValue = pInfoFields->find("AddonPackVersion"); - if(!pValue)return notAValidAddonPackage(szError); + if(!pValue) + return notAValidAddonPackage(szError); if(!KviQString::equalCI(*pValue,KVI_CURRENT_ADDONS_ENGINE_VERSION))return notAValidAddonPackage(szError); // make sure the default fields exist for(int i=0;i<6;i++) { pValue = pInfoFields->find(check_fields[i]); - if(!pValue)return notAValidAddonPackage(szError); + if(!pValue) + return notAValidAddonPackage(szError); } // ok.. it should be really valid at this point @@ -219,52 +222,57 @@ namespace KviAddonFunctions bInstall = KviHtmlDialog::display(pDialogParent,&hd) == 2; - if(bInstall) - { - // Create a random extraction dir - QString szTmpPath, szUnpackPath; - QString szRandomDir = createRandomDir(); + if(!bInstall) + return true; + + // Create a random extraction dir + QString szTmpPath, szUnpackPath; + QString szRandomDir = createRandomDir(); - g_pApp->getLocalKvircDirectory(szTmpPath,KviApp::Tmp); - KviQString::ensureLastCharIs(szTmpPath,QChar(KVI_PATH_SEPARATOR_CHAR)); + g_pApp->getLocalKvircDirectory(szTmpPath,KviApp::Tmp); + KviQString::ensureLastCharIs(szTmpPath,QChar(KVI_PATH_SEPARATOR_CHAR)); + szUnpackPath = szTmpPath + szRandomDir; + QDir szTmpDir(szUnpackPath); + + // Check for dir existence + while(szTmpDir.exists()) + { + szRandomDir = createRandomDir(); szUnpackPath = szTmpPath + szRandomDir; - QDir szTmpDir(szUnpackPath); - - // Check for dir existence - while(szTmpDir.exists()) - { - szRandomDir = createRandomDir(); - szUnpackPath = szTmpPath + szRandomDir; - szTmpDir = QDir(szUnpackPath); - } - - // Unpack addon package into the random tmp dir - if(!r.unpack(szAddonPackageFileName,szUnpackPath)) - { - szErr = r.lastError(); - KviQString::sprintf(szError,__tr2qs_ctx("Failed to unpack the selected file: %Q","addon"),&szErr); - return true; - } - - // Now we have all stuff in ~/.config/KVIrc/tmp/$rand - - QString szParse="parse \"" + szUnpackPath + "\\install.kvs"+"\""; - szParse.replace("\\","\\\\"); - KviKvsScript::run(szParse,g_pActiveWindow); - - - // Remove all files - QDir * pDir = new QDir(szUnpackPath); - QStringList list = pDir->entryList(QDir::AllEntries,QDir::DirsFirst); - debug("Path: %s",szUnpackPath.toUtf8().data()); - debug("Count: %d",list.count()); - - if(!KviFileUtils::deleteDir(szUnpackPath)) - { - szErr = __tr2qs_ctx("One or more files can't be deleted","addon"); - KviQString::sprintf(szError,__tr2qs_ctx("Failed to unpack the selected file: %Q","addon"),&szErr); - return true; - } + szTmpDir = QDir(szUnpackPath); + } + + // Unpack addon package into the random tmp dir + if(!r.unpack(szAddonPackageFileName,szUnpackPath)) + { + szErr = r.lastError(); + KviQString::sprintf(szError,__tr2qs_ctx("Failed to unpack the selected file: %Q","addon"),&szErr); + return false; + } + + // Now we have all stuff in ~/.config/KVIrc/tmp/$rand + if(! + KviKvsScript::run( + QString::fromAscii("parse \"%1\\install.kvs\"") + .arg( + szUnpackPath + .replace("\\","\\\\") + .replace("\"","\\\"") + ), + g_pActiveWindow + ) + ) + { + // Parsing the script failed + // However, the user should already be notified via normal script output. + } + + if(!KviFileUtils::deleteDir(szUnpackPath)) + { + // FIXME: Just warn the user and assume success? + szErr = __tr2qs_ctx("One or more files can't be deleted","addon"); + KviQString::sprintf(szError,__tr2qs_ctx("Failed to unpack the selected file: %Q","addon"),&szErr); + return false; } return true; diff --git a/src/modules/addon/packaddondialog.cpp b/src/modules/addon/packaddondialog.cpp index 2e7e67220..af7828990 100644 --- a/src/modules/addon/packaddondialog.cpp +++ b/src/modules/addon/packaddondialog.cpp @@ -86,10 +86,12 @@ KviPackAddonDialog::KviPackAddonDialog(QWidget * pParent) pPage->setTitle(__tr2qs_ctx("Welcome","addon")); QLabel * pLabel = new QLabel(pPage); + pLabel->setWordWrap(true); pLabel->setText(__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")); pLayout->addWidget(pLabel); pLabel = new QLabel(pPage); + pLabel->setWordWrap(true); QString szText; szText += __tr2qs_ctx("You will be asked to provide some information like the package name, the version, a description and so on.","addon"); szText += "

"; diff --git a/src/modules/theme/themefunctions.cpp b/src/modules/theme/themefunctions.cpp index c91760f3a..3890ef68d 100644 --- a/src/modules/theme/themefunctions.cpp +++ b/src/modules/theme/themefunctions.cpp @@ -44,7 +44,7 @@ namespace KviThemeFunctions static bool notAValidThemePackage(QString &szError) { - KviQString::sprintf(szError,__tr2qs_ctx("The selected file does not seem to be a valid KVIrc theme package","theme")); + szError = __tr2qs_ctx("The selected file does not seem to be a valid KVIrc theme package","theme"); return false; } -- cgit v1.3.1-10-gc9f91