diff options
Diffstat (limited to 'src/modules/addon/managementdialog.cpp')
| -rw-r--r-- | src/modules/addon/managementdialog.cpp | 706 |
1 files changed, 353 insertions, 353 deletions
diff --git a/src/modules/addon/managementdialog.cpp b/src/modules/addon/managementdialog.cpp index 745825d7a..d7a8da2b4 100644 --- a/src/modules/addon/managementdialog.cpp +++ b/src/modules/addon/managementdialog.cpp @@ -1,353 +1,353 @@ -//=============================================================================
-//
-// File : managementdialog.cpp
-// Created on Fri 08 Apr 2005 14:54:56 by Szymon Stefanek
-//
-// This file is part of the KVIrc IRC Client distribution
-// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net>
-//
-// This program is FREE software. You can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your opinion) any later version.
-//
-// This program is distributed in the HOPE that it will be USEFUL,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-// See the GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, write to the Free Software Foundation,
-// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-//=============================================================================
-
-#include "managementdialog.h"
-#include "packaddondialog.h"
-#include "addonfunctions.h"
-
-#include "kvi_app.h"
-#include "kvi_locale.h"
-#include "kvi_frame.h"
-#include "kvi_iconmanager.h"
-#include "kvi_kvs_scriptaddonmanager.h"
-#include "kvi_window.h"
-#include "kvi_filedialog.h"
-#include "kvi_fileutils.h"
-#include "kvi_fileextensions.h"
-#include "kvi_kvs_script.h"
-#include "kvi_sourcesdate.h"
-#include "kvi_tal_listwidget.h"
-#include "kvi_tal_tooltip.h"
-
-#include <QPainter>
-#include <QPixmap>
-#include <QMessageBox>
-#include <QEvent>
-#include <QCloseEvent>
-#include <QPushButton>
-#include <QLayout>
-#include <QApplication>
-
-#include <QLineEdit>
-#include <QLabel>
-#include <QFrame>
-#include <QDir>
-#include <QAbstractTextDocumentLayout>
-
-
-KviScriptManagementDialog * KviScriptManagementDialog::m_pInstance = 0;
-extern QRect g_rectManagementDialogGeometry;
-
-KviScriptAddonListViewItem::KviScriptAddonListViewItem(KviTalListWidget *v,KviKvsScriptAddon * a)
-: KviTalListWidgetItem(v)
-{
- m_pAddon = new KviKvsScriptAddon(*a);
- m_pListWidget = v;
- QString t = "<nobr><b>";
- t += a->visibleName();
- t += "</b> [";
- t += a->version();
- t += "]";
- t += " <font color=\"#a0a0a0\">[";
- t += a->name();
- t += "]</font></nobr>";
- t += "<br><nobr><font size=\"-1\">";
- t += a->description();
- t += "</font></nobr>";
-
- setText(t);
- QPixmap * p = a->icon();
- if (p) setIcon(*p);
-}
-
-KviScriptAddonListViewItem::~KviScriptAddonListViewItem()
-{
- delete m_pAddon;
-}
-
-KviScriptManagementDialog::KviScriptManagementDialog(QWidget * p)
-: QDialog(p)
-{
- setWindowTitle(__tr2qs("Manage Script-Based Addons"));
- setObjectName("Addon manager");
- setWindowIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ADDONS)));
- setModal(true);
- m_pInstance = this;
- QGridLayout * g = new QGridLayout(this);
-
- KviTalHBox *hb = new KviTalHBox(this);
- hb->setMargin(1);
- hb->setSpacing(1);
- g->addWidget(hb,0,0);
-
- QToolButton * tb;
- QFrame * sep;
-
- m_pConfigureButton = new QToolButton(hb);
- m_pConfigureButton->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_ADDONS)));
- m_pConfigureButton->setIconSize(QSize(32,32));
- KviTalToolTip::add(m_pConfigureButton,__tr2qs_ctx("Configure Addon...","addon"));
- connect(m_pConfigureButton,SIGNAL(clicked()),this,SLOT(configureScript()));
-
- m_pHelpButton = new QToolButton(hb);
- m_pHelpButton->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_HELP)));
- m_pHelpButton->setIconSize(QSize(32,32));
- KviTalToolTip::add(m_pHelpButton,__tr2qs_ctx("Show Help","addon"));
- connect(m_pHelpButton,SIGNAL(clicked()),this,SLOT(showScriptHelp()));
-
- m_pUninstallButton = new QToolButton(hb);
- m_pUninstallButton->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_REMOVE)));
- m_pUninstallButton->setIconSize(QSize(32,32));
- KviTalToolTip::add(m_pUninstallButton,__tr2qs_ctx("Delete Selected Addons","addon"));
- connect(m_pUninstallButton,SIGNAL(clicked()),this,SLOT(uninstallScript()));
-
- sep = new QFrame(hb);
- sep->setFrameStyle(QFrame::VLine | QFrame::Sunken);
- sep->setMinimumWidth(12);
-
- m_pPackButton = new QToolButton(hb);
- m_pPackButton->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_PACK)));
- m_pPackButton->setIconSize(QSize(32,32));
- KviTalToolTip::add(m_pPackButton,__tr2qs_ctx("Create an Addon as a Distributable Package","addon"));
- connect(m_pPackButton,SIGNAL(clicked()),this,SLOT(packScript()));
-
- sep = new QFrame(hb);
- sep->setFrameStyle(QFrame::VLine | QFrame::Sunken);
- sep->setMinimumWidth(12);
-
- tb = new QToolButton(hb);
- tb->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_OPEN)));
- tb->setIconSize(QSize(32,32));
- KviTalToolTip::add(tb,__tr2qs_ctx("Install Addon Package From Disk","addon"));
- connect(tb,SIGNAL(clicked()),this,SLOT(installScript()));
-
- tb = new QToolButton(hb);
- tb->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_WWW)));
- tb->setIconSize(QSize(32,32));
- KviTalToolTip::add(tb,__tr2qs_ctx("Get More Addons...","addon"));
- connect(tb,SIGNAL(clicked()),this,SLOT(getMoreScripts()));
-
- QWidget *w= new QWidget(hb);
- w->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Minimum);
-
- m_pListWidget = new KviTalListWidget(this);
- KviTalIconAndRichTextItemDelegate *itemDelegate=new KviTalIconAndRichTextItemDelegate(m_pListWidget);
-
- m_pListWidget->setItemDelegate(itemDelegate);
- m_pListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
- m_pListWidget->setSortingEnabled(true);
- m_pListWidget->setMinimumHeight(400);
- m_pListWidget->setMinimumWidth(380);
-
- QString szPic;
- g_pApp->getGlobalKvircDirectory(szPic,KviApp::Pics);
- // we need mandatory unix like path separator
- szPic.replace('\\',"/");
-
- szPic += "/kvi_dialog_addons.png";
- QString szStyle("QListWidget {background-image: url(" + szPic + ");background-repeat: no-repeat;background-position: bottom right;}");
- m_pListWidget->setStyleSheet(szStyle);
- g->addWidget(m_pListWidget,1,0);
-
- fillListView();
-
- currentChanged(0,0);
- connect(m_pListWidget,SIGNAL(currentItemChanged(QListWidgetItem *,QListWidgetItem *)),this,SLOT(currentChanged(QListWidgetItem *,QListWidgetItem *)));
- m_pListWidget->setCurrentItem(m_pListWidget->item(0));
-
- QPushButton * pCloseBtn = new QPushButton(__tr2qs("Close"),this);
- pCloseBtn->setMaximumSize(pCloseBtn->sizeHint().width(),pCloseBtn->sizeHint().height());
- connect(pCloseBtn,SIGNAL(clicked()),this,SLOT(closeClicked()));
- g->addWidget(pCloseBtn,2,0);
-
- g->setMargin(5);
- g->setSpacing(5);
- g->setAlignment(pCloseBtn,Qt::AlignRight);
-
- if(g_rectManagementDialogGeometry.y() < 5)
- {
- g_rectManagementDialogGeometry.setY(5);
- }
- resize(g_rectManagementDialogGeometry.width(),
- g_rectManagementDialogGeometry.height());
- move(g_rectManagementDialogGeometry.x(),
- g_rectManagementDialogGeometry.y());
-}
-
-KviScriptManagementDialog::~KviScriptManagementDialog()
-{
- g_rectManagementDialogGeometry = QRect(pos().x(),pos().y(),size().width(),size().height());
- m_pInstance = 0;
-}
-
-void KviScriptManagementDialog::fillListView()
-{
- m_pListWidget->clear();
- KviPointerHashTable<QString,KviKvsScriptAddon> * d = KviKvsScriptAddonManager::instance()->addonDict();
- if(!d)return;
- KviPointerHashTableIterator<QString,KviKvsScriptAddon> it(*d);
- KviScriptAddonListViewItem * item;
- while(KviKvsScriptAddon * a = it.current())
- {
- item = new KviScriptAddonListViewItem(m_pListWidget,a);
- ++it;
- }
-}
-
-void KviScriptManagementDialog::currentChanged(QListWidgetItem *item,QListWidgetItem *)
-{
- KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)item;
- if(!it)
- {
- m_pConfigureButton->setEnabled(false);
- m_pUninstallButton->setEnabled(false);
- m_pHelpButton->setEnabled(false);
- } else {
- m_pConfigureButton->setEnabled(!(it->addon()->configureCallbackCode().isEmpty()));
- m_pHelpButton->setEnabled(!(it->addon()->helpCallbackCode().isEmpty()));
- m_pUninstallButton->setEnabled(true);
- }
-}
-
-void KviScriptManagementDialog::showScriptHelp()
-{
- KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListWidget->currentItem();
- if(!it)return;
- if(it->addon()->helpCallbackCode().isEmpty())return;
- it->addon()->executeHelpCallback(g_pActiveWindow);
-}
-
-void KviScriptManagementDialog::configureScript()
-{
- KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListWidget->currentItem();
- if(!it)return;
- if(it->addon()->configureCallbackCode().isEmpty())return;
- it->addon()->executeConfigureCallback(g_pActiveWindow);
-}
-
-void KviScriptManagementDialog::packScript()
-{
- KviPackAddonDialog * pDialog = new KviPackAddonDialog(this);
- pDialog->exec();
- delete pDialog;
-}
-
-void KviScriptManagementDialog::uninstallScript()
-{
- KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListWidget->currentItem();
- if(!it)return;
-
- QString txt = "<p>";
- txt += __tr2qs("Do you really want to uninstall the addon \"%1\" ?").arg(it->addon()->visibleName());
- txt += "</p>";
-
- if(QMessageBox::question(this,
- __tr2qs("Confirm addon uninstallation"),txt,__tr2qs("&Yes"),__tr2qs("&No"),0,1) != 0)return;
-
- KviKvsScriptAddonManager::instance()->unregisterAddon(it->addon()->name(),g_pActiveWindow);
-
- fillListView();
- currentChanged(0,0);
-}
-
-void KviScriptManagementDialog::getMoreScripts()
-{
- KviKvsScript::run("openurl http://www.kvirc.net/?id=addons&version=" KVI_VERSION "." KVI_SOURCES_DATE,g_pActiveWindow);
-}
-
-void KviScriptManagementDialog::installScript()
-{
- QString szFileName, szError;
-
- if(!KviFileDialog::askForOpenFileName(szFileName,__tr2qs("Please select the addon installation file"),QString::null,KVI_FILTER_SCRIPTS,false,true))return;
-
- szFileName.replace("\\","\\\\");
-
- // Switch between script and addon
- if(szFileName.endsWith(".kvs"))
- {
- qDebug("Script file .kvs");
- QString szCmd = "parse \"";
- szCmd += szFileName;
- szCmd += "\"";
-
- KviKvsScript::run(szCmd,g_pActiveWindow);
- } else if(szFileName.endsWith(".kva")){
- qDebug("Addon file .kva");
- if(!KviAddonFunctions::installAddonPackage(szFileName,szError,this))
- {
- QMessageBox::critical(this,__tr2qs_ctx("Install Addon - KVIrc","addon"),szError,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
- return;
- }
- } else {
- // Just for sanity check. We should NEVER enter here
- qDebug("Entered sanity check");
- KviAddonFunctions::notAValidAddonPackage(szError);
- QMessageBox::critical(this,__tr2qs_ctx("Install Addon - KVIrc","addon"),szError,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
- }
-
- fillListView();
- currentChanged(0,0);
-
- //m_pListWidget->publicUpdateContents();
- //m_pListWidget->triggerUpdate();
-}
-
-void KviScriptManagementDialog::showEvent(QShowEvent * e)
-{
-// QRect r = parentWidget() ? parentWidget()->rect() : QApplication::desktop()->rect();
-// int x = (r.width() - width()) / 2;
-// int y = (r.height() - height()) / 2;
-// move(x,y);
-}
-
-void KviScriptManagementDialog::closeClicked()
-{
- delete this;
-}
-
-void KviScriptManagementDialog::cleanup()
-{
- if(!m_pInstance)return;
- delete m_pInstance;
- m_pInstance = 0;
-}
-
-void KviScriptManagementDialog::display()
-{
- if(m_pInstance)return;
- m_pInstance = new KviScriptManagementDialog(g_pFrame);
- m_pInstance->show();
-}
-
-void KviScriptManagementDialog::closeEvent(QCloseEvent * e)
-{
- e->ignore();
- delete this;
-}
-
-void KviScriptManagementDialog::reject()
-{
- cleanup();
-}
+//============================================================================= +// +// File : managementdialog.cpp +// Created on Fri 08 Apr 2005 14:54:56 by Szymon Stefanek +// +// This file is part of the KVIrc IRC Client distribution +// Copyright (C) 2005 Szymon Stefanek <pragma at kvirc dot net> +// +// This program is FREE software. You can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your opinion) any later version. +// +// This program is distributed in the HOPE that it will be USEFUL, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, write to the Free Software Foundation, +// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +//============================================================================= + +#include "managementdialog.h" +#include "packaddondialog.h" +#include "addonfunctions.h" + +#include "kvi_app.h" +#include "kvi_locale.h" +#include "kvi_frame.h" +#include "kvi_iconmanager.h" +#include "kvi_kvs_scriptaddonmanager.h" +#include "kvi_window.h" +#include "kvi_filedialog.h" +#include "kvi_fileutils.h" +#include "kvi_fileextensions.h" +#include "kvi_kvs_script.h" +#include "kvi_sourcesdate.h" +#include "kvi_tal_listwidget.h" +#include "kvi_tal_tooltip.h" + +#include <QPainter> +#include <QPixmap> +#include <QMessageBox> +#include <QEvent> +#include <QCloseEvent> +#include <QPushButton> +#include <QLayout> +#include <QApplication> + +#include <QLineEdit> +#include <QLabel> +#include <QFrame> +#include <QDir> +#include <QAbstractTextDocumentLayout> + + +KviScriptManagementDialog * KviScriptManagementDialog::m_pInstance = 0; +extern QRect g_rectManagementDialogGeometry; + +KviScriptAddonListViewItem::KviScriptAddonListViewItem(KviTalListWidget *v,KviKvsScriptAddon * a) +: KviTalListWidgetItem(v) +{ + m_pAddon = new KviKvsScriptAddon(*a); + m_pListWidget = v; + QString t = "<nobr><b>"; + t += a->visibleName(); + t += "</b> ["; + t += a->version(); + t += "]"; + t += " <font color=\"#a0a0a0\">["; + t += a->name(); + t += "]</font></nobr>"; + t += "<br><nobr><font size=\"-1\">"; + t += a->description(); + t += "</font></nobr>"; + + setText(t); + QPixmap * p = a->icon(); + if (p) setIcon(*p); +} + +KviScriptAddonListViewItem::~KviScriptAddonListViewItem() +{ + delete m_pAddon; +} + +KviScriptManagementDialog::KviScriptManagementDialog(QWidget * p) +: QDialog(p) +{ + setWindowTitle(__tr2qs("Manage Script-Based Addons")); + setObjectName("Addon manager"); + setWindowIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ADDONS))); + setModal(true); + m_pInstance = this; + QGridLayout * g = new QGridLayout(this); + + KviTalHBox *hb = new KviTalHBox(this); + hb->setMargin(1); + hb->setSpacing(1); + g->addWidget(hb,0,0); + + QToolButton * tb; + QFrame * sep; + + m_pConfigureButton = new QToolButton(hb); + m_pConfigureButton->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_ADDONS))); + m_pConfigureButton->setIconSize(QSize(32,32)); + KviTalToolTip::add(m_pConfigureButton,__tr2qs_ctx("Configure Addon...","addon")); + connect(m_pConfigureButton,SIGNAL(clicked()),this,SLOT(configureScript())); + + m_pHelpButton = new QToolButton(hb); + m_pHelpButton->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_HELP))); + m_pHelpButton->setIconSize(QSize(32,32)); + KviTalToolTip::add(m_pHelpButton,__tr2qs_ctx("Show Help","addon")); + connect(m_pHelpButton,SIGNAL(clicked()),this,SLOT(showScriptHelp())); + + m_pUninstallButton = new QToolButton(hb); + m_pUninstallButton->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_REMOVE))); + m_pUninstallButton->setIconSize(QSize(32,32)); + KviTalToolTip::add(m_pUninstallButton,__tr2qs_ctx("Delete Selected Addons","addon")); + connect(m_pUninstallButton,SIGNAL(clicked()),this,SLOT(uninstallScript())); + + sep = new QFrame(hb); + sep->setFrameStyle(QFrame::VLine | QFrame::Sunken); + sep->setMinimumWidth(12); + + m_pPackButton = new QToolButton(hb); + m_pPackButton->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_PACK))); + m_pPackButton->setIconSize(QSize(32,32)); + KviTalToolTip::add(m_pPackButton,__tr2qs_ctx("Create an Addon as a Distributable Package","addon")); + connect(m_pPackButton,SIGNAL(clicked()),this,SLOT(packScript())); + + sep = new QFrame(hb); + sep->setFrameStyle(QFrame::VLine | QFrame::Sunken); + sep->setMinimumWidth(12); + + tb = new QToolButton(hb); + tb->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_OPEN))); + tb->setIconSize(QSize(32,32)); + KviTalToolTip::add(tb,__tr2qs_ctx("Install Addon Package From Disk","addon")); + connect(tb,SIGNAL(clicked()),this,SLOT(installScript())); + + tb = new QToolButton(hb); + tb->setIcon(*(g_pIconManager->getBigIcon(KVI_BIGICON_WWW))); + tb->setIconSize(QSize(32,32)); + KviTalToolTip::add(tb,__tr2qs_ctx("Get More Addons...","addon")); + connect(tb,SIGNAL(clicked()),this,SLOT(getMoreScripts())); + + QWidget *w= new QWidget(hb); + w->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Minimum); + + m_pListWidget = new KviTalListWidget(this); + KviTalIconAndRichTextItemDelegate *itemDelegate=new KviTalIconAndRichTextItemDelegate(m_pListWidget); + + m_pListWidget->setItemDelegate(itemDelegate); + m_pListWidget->setSelectionMode(QAbstractItemView::SingleSelection); + m_pListWidget->setSortingEnabled(true); + m_pListWidget->setMinimumHeight(400); + m_pListWidget->setMinimumWidth(380); + + QString szPic; + g_pApp->getGlobalKvircDirectory(szPic,KviApp::Pics); + // we need mandatory unix like path separator + szPic.replace('\\',"/"); + + szPic += "/kvi_dialog_addons.png"; + QString szStyle("QListWidget {background-image: url(" + szPic + ");background-repeat: no-repeat;background-position: bottom right;}"); + m_pListWidget->setStyleSheet(szStyle); + g->addWidget(m_pListWidget,1,0); + + fillListView(); + + currentChanged(0,0); + connect(m_pListWidget,SIGNAL(currentItemChanged(QListWidgetItem *,QListWidgetItem *)),this,SLOT(currentChanged(QListWidgetItem *,QListWidgetItem *))); + m_pListWidget->setCurrentItem(m_pListWidget->item(0)); + + QPushButton * pCloseBtn = new QPushButton(__tr2qs("Close"),this); + pCloseBtn->setMaximumSize(pCloseBtn->sizeHint().width(),pCloseBtn->sizeHint().height()); + connect(pCloseBtn,SIGNAL(clicked()),this,SLOT(closeClicked())); + g->addWidget(pCloseBtn,2,0); + + g->setMargin(5); + g->setSpacing(5); + g->setAlignment(pCloseBtn,Qt::AlignRight); + + if(g_rectManagementDialogGeometry.y() < 5) + { + g_rectManagementDialogGeometry.setY(5); + } + resize(g_rectManagementDialogGeometry.width(), + g_rectManagementDialogGeometry.height()); + move(g_rectManagementDialogGeometry.x(), + g_rectManagementDialogGeometry.y()); +} + +KviScriptManagementDialog::~KviScriptManagementDialog() +{ + g_rectManagementDialogGeometry = QRect(pos().x(),pos().y(),size().width(),size().height()); + m_pInstance = 0; +} + +void KviScriptManagementDialog::fillListView() +{ + m_pListWidget->clear(); + KviPointerHashTable<QString,KviKvsScriptAddon> * d = KviKvsScriptAddonManager::instance()->addonDict(); + if(!d)return; + KviPointerHashTableIterator<QString,KviKvsScriptAddon> it(*d); + KviScriptAddonListViewItem * item; + while(KviKvsScriptAddon * a = it.current()) + { + item = new KviScriptAddonListViewItem(m_pListWidget,a); + ++it; + } +} + +void KviScriptManagementDialog::currentChanged(QListWidgetItem *item,QListWidgetItem *) +{ + KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)item; + if(!it) + { + m_pConfigureButton->setEnabled(false); + m_pUninstallButton->setEnabled(false); + m_pHelpButton->setEnabled(false); + } else { + m_pConfigureButton->setEnabled(!(it->addon()->configureCallbackCode().isEmpty())); + m_pHelpButton->setEnabled(!(it->addon()->helpCallbackCode().isEmpty())); + m_pUninstallButton->setEnabled(true); + } +} + +void KviScriptManagementDialog::showScriptHelp() +{ + KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListWidget->currentItem(); + if(!it)return; + if(it->addon()->helpCallbackCode().isEmpty())return; + it->addon()->executeHelpCallback(g_pActiveWindow); +} + +void KviScriptManagementDialog::configureScript() +{ + KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListWidget->currentItem(); + if(!it)return; + if(it->addon()->configureCallbackCode().isEmpty())return; + it->addon()->executeConfigureCallback(g_pActiveWindow); +} + +void KviScriptManagementDialog::packScript() +{ + KviPackAddonDialog * pDialog = new KviPackAddonDialog(this); + pDialog->exec(); + delete pDialog; +} + +void KviScriptManagementDialog::uninstallScript() +{ + KviScriptAddonListViewItem * it = (KviScriptAddonListViewItem *)m_pListWidget->currentItem(); + if(!it)return; + + QString txt = "<p>"; + txt += __tr2qs("Do you really want to uninstall the addon \"%1\" ?").arg(it->addon()->visibleName()); + txt += "</p>"; + + if(QMessageBox::question(this, + __tr2qs("Confirm addon uninstallation"),txt,__tr2qs("&Yes"),__tr2qs("&No"),0,1) != 0)return; + + KviKvsScriptAddonManager::instance()->unregisterAddon(it->addon()->name(),g_pActiveWindow); + + fillListView(); + currentChanged(0,0); +} + +void KviScriptManagementDialog::getMoreScripts() +{ + KviKvsScript::run("openurl http://www.kvirc.net/?id=addons&version=" KVI_VERSION "." KVI_SOURCES_DATE,g_pActiveWindow); +} + +void KviScriptManagementDialog::installScript() +{ + QString szFileName, szError; + + if(!KviFileDialog::askForOpenFileName(szFileName,__tr2qs("Please select the addon installation file"),QString::null,KVI_FILTER_SCRIPTS,false,true))return; + + szFileName.replace("\\","\\\\"); + + // Switch between script and addon + if(szFileName.endsWith(".kvs")) + { + qDebug("Script file .kvs"); + QString szCmd = "parse \""; + szCmd += szFileName; + szCmd += "\""; + + KviKvsScript::run(szCmd,g_pActiveWindow); + } else if(szFileName.endsWith(".kva")){ + qDebug("Addon file .kva"); + if(!KviAddonFunctions::installAddonPackage(szFileName,szError,this)) + { + QMessageBox::critical(this,__tr2qs_ctx("Install Addon - KVIrc","addon"),szError,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); + return; + } + } else { + // Just for sanity check. We should NEVER enter here + qDebug("Entered sanity check"); + KviAddonFunctions::notAValidAddonPackage(szError); + QMessageBox::critical(this,__tr2qs_ctx("Install Addon - KVIrc","addon"),szError,QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton); + } + + fillListView(); + currentChanged(0,0); + + //m_pListWidget->publicUpdateContents(); + //m_pListWidget->triggerUpdate(); +} + +void KviScriptManagementDialog::showEvent(QShowEvent * e) +{ +// QRect r = parentWidget() ? parentWidget()->rect() : QApplication::desktop()->rect(); +// int x = (r.width() - width()) / 2; +// int y = (r.height() - height()) / 2; +// move(x,y); +} + +void KviScriptManagementDialog::closeClicked() +{ + delete this; +} + +void KviScriptManagementDialog::cleanup() +{ + if(!m_pInstance)return; + delete m_pInstance; + m_pInstance = 0; +} + +void KviScriptManagementDialog::display() +{ + if(m_pInstance)return; + m_pInstance = new KviScriptManagementDialog(g_pFrame); + m_pInstance->show(); +} + +void KviScriptManagementDialog::closeEvent(QCloseEvent * e) +{ + e->ignore(); + delete this; +} + +void KviScriptManagementDialog::reject() +{ + cleanup(); +} |
