diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-24 02:13:59 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-24 02:13:59 +0000 |
commit | a6d58bb6052ac8cb01805a48c4ad2f129126116f (patch) | |
tree | dd867a099fcbb263a8009a9fb22695b87855dad6 /src/modules/eventeditor | |
download | kvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.tar.gz kvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.zip |
Added KDE3 version of kvirc
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kvirc@1095341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/modules/eventeditor')
-rw-r--r-- | src/modules/eventeditor/Makefile.am | 21 | ||||
-rw-r--r-- | src/modules/eventeditor/eventeditor.cpp | 536 | ||||
-rw-r--r-- | src/modules/eventeditor/eventeditor.h | 120 | ||||
-rw-r--r-- | src/modules/eventeditor/libkvieventeditor.cpp | 88 |
4 files changed, 765 insertions, 0 deletions
diff --git a/src/modules/eventeditor/Makefile.am b/src/modules/eventeditor/Makefile.am new file mode 100644 index 00000000..ceb7541a --- /dev/null +++ b/src/modules/eventeditor/Makefile.am @@ -0,0 +1,21 @@ +############################################################################### +# KVirc IRC client Makeeventeditor - 10.03.2000 Szymon Stefanek <[email protected]> +############################################################################### + +AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \ +$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\" + +pluglib_LTLIBRARIES = libkvieventeditor.la + +libkvieventeditor_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS) + +libkvieventeditor_la_SOURCES = libkvieventeditor.cpp eventeditor.cpp +nodist_libkvieventeditor_la_SOURCES = moc_eventeditor.cpp + +noinst_HEADERS = eventeditor.h +libkvieventeditor_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la + +# noinst_HEADERS= + +moc_eventeditor.cpp: eventeditor.h + $(SS_QT_MOC) $< -o $@ diff --git a/src/modules/eventeditor/eventeditor.cpp b/src/modules/eventeditor/eventeditor.cpp new file mode 100644 index 00000000..bedeca5f --- /dev/null +++ b/src/modules/eventeditor/eventeditor.cpp @@ -0,0 +1,536 @@ +// +// File : eventeditor.cpp +// Creation date : Mon Dec 23 2002 20:28:18 by Szymon Stefanek +// +// This file is part of the KVirc irc client distribution +// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net) +// +// This program is FREE software. You can redistribute it and/or +// modify it under the linkss 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. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +#include "eventeditor.h" + +#include "kvi_iconmanager.h" +#include "kvi_options.h" +#include "kvi_locale.h" +#include "kvi_imagedialog.h" +#include "kvi_config.h" +#include "kvi_filedialog.h" +#include "kvi_fileutils.h" +#include "kvi_scripteditor.h" +#include "kvi_debug.h" +//#include "kvi_event.h" +#include "kvi_app.h" +#include "kvi_cmdformatter.h" +//#include "kvi_eventhandler.h" +#include "kvi_qstring.h" +#include "kvi_filedialog.h" + +#include "kvi_kvs_eventmanager.h" + +#include <qmessagebox.h> + +#include <qsplitter.h> +#include <qlayout.h> +#include "kvi_tal_vbox.h" +#include "kvi_tal_popupmenu.h" +#include <qtooltip.h> +#include <qpushbutton.h> +#include <qevent.h> + +extern KviEventEditorWindow * g_pEventEditorWindow; + + + +const QPixmap * KviEventListViewItem::pixmap(int col) const +{ + return g_pIconManager->getSmallIcon(firstChild() ? KVI_SMALLICON_EVENT : KVI_SMALLICON_EVENTNOHANDLERS); +} + +const QPixmap * KviEventHandlerListViewItem::pixmap(int col) const +{ + return g_pIconManager->getSmallIcon(m_bEnabled ? KVI_SMALLICON_HANDLER : KVI_SMALLICON_HANDLERDISABLED); +} + + + +KviEventEditor::KviEventEditor(QWidget * par) +: QWidget(par,"event_editor") +{ + QGridLayout * l = new QGridLayout(this,1,1,2,2); + + QSplitter * spl = new QSplitter(Qt::Horizontal,this); + spl->setOpaqueResize(false); + + l->addWidget(spl,0,0); + + KviTalVBox * boxi = new KviTalVBox(spl); + m_pListView = new KviTalListView(boxi); + m_pListView->addColumn(__tr2qs("Event")); + m_pListView->setMultiSelection(false); + m_pListView->setShowSortIndicator(true); + m_pListView->setRootIsDecorated(true); + + QPushButton * pb = new QPushButton(__tr2qs("&Export All To..."),boxi); + connect(pb,SIGNAL(clicked()),this,SLOT(exportAllEvents())); + + KviTalVBox * box = new KviTalVBox(spl); + m_pNameEditor = new QLineEdit(box); + QToolTip::add(m_pNameEditor,__tr2qs("Edit the event handler name.")); + m_pEditor = KviScriptEditor::createInstance(box); + m_pEditor->setFocus(); + + m_bOneTimeSetupDone = false; + m_pLastEditedItem = 0; +} + +KviEventEditor::~KviEventEditor() +{ + KviScriptEditor::destroyInstance(m_pEditor); +} + +void KviEventEditor::oneTimeSetup() +{ + if(m_bOneTimeSetupDone)return; + m_bOneTimeSetupDone = true; + + KviEventListViewItem * it; + KviEventHandlerListViewItem * ch; + + for(unsigned int i = 0;i < KVI_KVS_NUM_APP_EVENTS;i++) + { + KviKvsEvent * e = KviKvsEventManager::instance()->appEvent(i); + it = new KviEventListViewItem(m_pListView,i,e->name(),e->parameterDescription()); + if(KviPointerList<KviKvsEventHandler> * l = e->handlers()) + { + for(KviKvsEventHandler * s = l->first();s;s = l->next()) + { + if(s->type() == KviKvsEventHandler::Script) + { + ch = new KviEventHandlerListViewItem(it,((KviKvsScriptEventHandler *)s)->name(), + ((KviKvsScriptEventHandler *)s)->code(),((KviKvsScriptEventHandler *)s)->isEnabled()); + } + } + it->setOpen(true); + } + } + + + m_pContextPopup = new KviTalPopupMenu(this); + + connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(selectionChanged(KviTalListViewItem *))); + connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)), + this,SLOT(itemPressed(KviTalListViewItem *,const QPoint &,int))); +} + +void KviEventEditor::itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col) +{ + __range_valid(m_bOneTimeSetupDone); + + if(it) + { + m_pContextPopup->clear(); + if(it->parent()) + { + QString tmp; + if(!(((KviEventHandlerListViewItem *)it)->m_bEnabled)) + m_pContextPopup->insertItem( + *(g_pIconManager->getSmallIcon(KVI_SMALLICON_HANDLER)), + __tr2qs("&Enable Handler"),this,SLOT(toggleCurrentHandlerEnabled())); + else + m_pContextPopup->insertItem( + *(g_pIconManager->getSmallIcon(KVI_SMALLICON_HANDLERDISABLED)), + __tr2qs("&Disable Handler"),this,SLOT(toggleCurrentHandlerEnabled())); + + //m_pContextPopup->setItemChecked(id,((KviEventHandlerListViewItem *)it)->m_bEnabled); + + m_pContextPopup->insertItem( + *(g_pIconManager->getSmallIcon(KVI_SMALLICON_QUIT)), + __tr2qs("Re&move Handler"), + this,SLOT(removeCurrentHandler())); + m_pContextPopup->insertItem( + *(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)), + __tr2qs("&Export Handler To..."), + this,SLOT(exportCurrentHandler())); + } else { + m_pContextPopup->insertItem( + *(g_pIconManager->getSmallIcon(KVI_SMALLICON_HANDLER)), + __tr2qs("&New Handler"), + this,SLOT(addHandlerForCurrentEvent())); + } + + m_pContextPopup->popup(pnt); + } +} + +void KviEventEditor::getUniqueHandlerName(KviEventListViewItem *it,QString &buffer) +{ + __range_valid(m_bOneTimeSetupDone); + + QString newName = buffer; + if(newName.isEmpty())newName = __tr2qs("unnamed"); + + bool bFound = true; + int idx = 1; + + while(bFound) + { + bFound = false; + + for(KviEventHandlerListViewItem * ch = (KviEventHandlerListViewItem *)(it->firstChild());ch;ch = (KviEventHandlerListViewItem *)ch->nextSibling()) + { + if(KviQString::equalCI(newName,ch->m_szName)) + { + bFound = true; + KviQString::sprintf(newName,"%Q_%d",&buffer,idx); + idx++; + break; + } + } + } + + buffer = newName; +} + +void KviEventEditor::addHandlerForCurrentEvent() +{ + __range_valid(m_pOneTimeSetupDone); + + KviTalListViewItem * it = m_pListView->selectedItem(); + if(it) + { + if(it->parent() == 0) + { + QString buffer = __tr2qs("default"); + getUniqueHandlerName((KviEventListViewItem *)it,buffer); + KviTalListViewItem * ch = new KviEventHandlerListViewItem(it,buffer,"",true); + it->setOpen(true); + m_pListView->setSelected(ch,true); + } + } +} + +void KviEventEditor::removeCurrentHandler() +{ + __range_valid(m_pOneTimeSetupDone); + if(m_pLastEditedItem) + { + KviTalListViewItem * it = m_pLastEditedItem; + m_pLastEditedItem = 0; + delete it; + m_pEditor->setEnabled(false); + m_pNameEditor->setEnabled(false); + } +} + +void KviEventEditor::toggleCurrentHandlerEnabled() +{ + __range_valid(m_pOneTimeSetupDone); + if(m_pLastEditedItem) + { + m_pLastEditedItem->m_bEnabled = !(m_pLastEditedItem->m_bEnabled); + m_pListView->repaintItem(m_pLastEditedItem); + selectionChanged(m_pLastEditedItem); + } +} + +void KviEventEditor::commit() +{ + if(!m_bOneTimeSetupDone)return; // nothing to commit + + saveLastEditedItem(); + KviKvsEventManager::instance()->removeAllScriptAppHandlers(); + for(KviTalListViewItem * it = m_pListView->firstChild();it;it = it->nextSibling()) + { + if(it->firstChild()) + { + QString szContext; + + for(KviTalListViewItem * ch = it->firstChild();ch;ch = ch->nextSibling()) + { + KviQString::sprintf(szContext,"%Q::%Q",&(((KviEventListViewItem *)it)->m_szName),&(((KviEventHandlerListViewItem *)ch)->m_szName)); + + KviKvsScriptEventHandler * s = KviKvsScriptEventHandler::createInstance( // msvc workaround + ((KviEventHandlerListViewItem *)ch)->m_szName, + szContext, + ((KviEventHandlerListViewItem *)ch)->m_szBuffer, + ((KviEventHandlerListViewItem *)ch)->m_bEnabled + ); + + KviKvsEventManager::instance()->addAppHandler(((KviEventListViewItem *)it)->m_uEventIdx,s); + } + } + } + + g_pApp->saveAppEvents(); +} + +void KviEventEditor::saveLastEditedItem() +{ + __range_valid(m_bOneTimeSetupDone); + if(!m_pLastEditedItem)return; + + QString buffer = m_pNameEditor->text(); + if(!KviQString::equalCI(buffer,m_pLastEditedItem->m_szName)) + { + getUniqueHandlerName((KviEventListViewItem *)(m_pLastEditedItem->parent()),buffer); + } + + m_pLastEditedItem->m_szName = buffer; + QString tmp; + m_pEditor->getText(tmp); + + m_pLastEditedItem->m_szBuffer = tmp; +} + +void KviEventEditor::selectionChanged(KviTalListViewItem * it) +{ + __range_valid(m_bOneTimeSetupDone); + saveLastEditedItem(); + if(it->parent()) + { + m_pLastEditedItem = (KviEventHandlerListViewItem *)it; + m_pNameEditor->setEnabled(true); + m_pNameEditor->setText(it->text(0)); + m_pEditor->setEnabled(true); + m_pEditor->setText(((KviEventHandlerListViewItem *)it)->m_szBuffer); + } else { + m_pLastEditedItem = 0; + m_pNameEditor->setEnabled(false); + m_pNameEditor->setText(""); + m_pEditor->setEnabled(false); + QString parms = ((KviEventListViewItem *)it)->m_szParams; + if(parms.isEmpty())parms = __tr2qs("none"); + KviCommandFormatter::indent(parms); + KviCommandFormatter::indent(parms); + QString tmp; + KviQString::sprintf(tmp,__tr2qs("\n\n Event:\n %s\n\n Parameters:\n%s"), + ((KviEventListViewItem *)it)->m_szName.utf8().data(),parms.utf8().data()); + m_pEditor->setText(tmp); + } +} + +void KviEventEditor::showEvent(QShowEvent *e) +{ + oneTimeSetup(); + QWidget::showEvent(e); +} + + +void KviEventEditor::getExportEventBuffer(QString &buffer,KviEventHandlerListViewItem * it) +{ + if(!it->parent())return; + + QString szBuf = it->m_szBuffer; + + KviCommandFormatter::blockFromBuffer(szBuf); + + buffer = "event("; + buffer += ((KviEventListViewItem *)(it->parent()))->m_szName; + buffer += ","; + buffer += it->m_szName; + buffer += ")\n"; + buffer += szBuf; + buffer += "\n"; + + if(!it->m_bEnabled) + { + buffer += "\n"; + buffer += "eventctl -d "; + buffer += ((KviEventListViewItem *)(it->parent()))->m_szName; + buffer += " "; + buffer += it->m_szName; + } +} + +void KviEventEditor::exportCurrentHandler() +{ + if(!m_pLastEditedItem)return; + saveLastEditedItem(); + if(!m_pLastEditedItem)return; + + QString szName = QDir::homeDirPath(); + if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR; + szName += ((KviEventListViewItem *)(m_pLastEditedItem->parent()))->m_szName; + szName += "."; + szName += m_pLastEditedItem->m_szName; + szName += ".kvs"; + + QString szFile; + + if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,"*.kvs",true,true,true))return; + + QString szOut; + getExportEventBuffer(szOut,m_pLastEditedItem); + + if(!KviFileUtils::writeFile(szFile,szOut)) + { + QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the event file."),__tr2qs("&OK")); + } +} + +void KviEventEditor::exportAllEvents() +{ + saveLastEditedItem(); + + KviEventListViewItem * it = (KviEventListViewItem *)m_pListView->firstChild(); + + QString out; + + while(it) + { + KviEventHandlerListViewItem * item = (KviEventHandlerListViewItem *)it->firstChild(); + while(item) + { + QString tmp; + getExportEventBuffer(tmp,item); + out += tmp; + out += "\n"; + item = (KviEventHandlerListViewItem *)item->nextSibling(); + } + it = (KviEventListViewItem *)it->nextSibling(); + } + + QString szName = QDir::homeDirPath(); + if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR; + szName += "events.kvs"; + + QString szFile; + + if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,QString::null,true,true))return; + + if(!KviFileUtils::writeFile(szFile,out)) + { + QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the events file."),__tr2qs("Ok")); + } +} + + + + +KviEventEditorWindow::KviEventEditorWindow(KviFrame * lpFrm) +: KviWindow(KVI_WINDOW_TYPE_SCRIPTEDITOR,lpFrm,"eventeditor",0) +{ + g_pEventEditorWindow = this; + + m_pEditor = new KviEventEditor(this); + + m_pBase = new QWidget(this); + QGridLayout * g = new QGridLayout(m_pBase,1,4,4,4); + + QPushButton * btn = new QPushButton(__tr2qs("&OK"),m_pBase); + connect(btn,SIGNAL(clicked()),this,SLOT(okClicked())); + btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT))); + g->addWidget(btn,0,1); + + btn = new QPushButton(__tr2qs("&Apply"),m_pBase); + connect(btn,SIGNAL(clicked()),this,SLOT(applyClicked())); + btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT))); + g->addWidget(btn,0,2); + + btn = new QPushButton(__tr2qs("Cancel"),m_pBase); + connect(btn,SIGNAL(clicked()),this,SLOT(cancelClicked())); + btn->setIconSet(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_DISCARD))); + g->addWidget(btn,0,3); + + g->setColStretch(0,1); +} + +KviEventEditorWindow::~KviEventEditorWindow() +{ + g_pEventEditorWindow = 0; +} + +void KviEventEditorWindow::okClicked() +{ + m_pEditor->commit(); + close(); +} + +void KviEventEditorWindow::applyClicked() +{ + m_pEditor->commit(); +} + +void KviEventEditorWindow::cancelClicked() +{ + close(); +} + + +QPixmap * KviEventEditorWindow::myIconPtr() +{ + return g_pIconManager->getSmallIcon(KVI_SMALLICON_EVENT); +} + +void KviEventEditorWindow::resizeEvent(QResizeEvent *e) +{ + int hght = m_pBase->sizeHint().height(); + m_pEditor->setGeometry(0,0,width(),height()- hght); + m_pBase->setGeometry(0,height() - hght,width(),hght); +} + +void KviEventEditorWindow::fillCaptionBuffers() +{ + m_szPlainTextCaption = __tr2qs("Event Editor"); + + static QString p1("<nobr><font color=\""); + static QString p2("\"><b>"); + static QString p3("</b></font></nobr>"); + + m_szHtmlActiveCaption = p1; + m_szHtmlActiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name(); + m_szHtmlActiveCaption += p2; + m_szHtmlActiveCaption += m_szPlainTextCaption; + m_szHtmlActiveCaption += p3; + + m_szHtmlInactiveCaption = p1; + m_szHtmlInactiveCaption += KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name(); + m_szHtmlInactiveCaption += p2; + m_szHtmlInactiveCaption += m_szPlainTextCaption; + m_szHtmlInactiveCaption += p3; +} + + +void KviEventEditorWindow::getConfigGroupName(KviStr &szName) +{ + szName = "eventeditor"; +} + + +void KviEventEditorWindow::saveProperties(KviConfig *cfg) +{ +/* +#ifdef COMPILE_SCRIPTTOOLBAR + cfg->writeEntry("Sizes",m_pEditor->sizes()); + cfg->writeEntry("LastEvent",m_pEditor->lastEditedEvent().ptr()); + //debug("LAST EDITED=%s",m_pEditor->lastEditedEvent().ptr()); +#endif // COMPILE_SCRIPTTOOLBAR +*/ +} + +void KviEventEditorWindow::loadProperties(KviConfig *cfg) +{ +/* +#ifdef COMPILE_SCRIPTTOOLBAR + QValueList<int> def; + def.append(20); + def.append(80); + m_pEditor->setSizes(cfg->readIntListEntry("Sizes",def)); + KviStr tmp = cfg->readEntry("LastEvent",""); + m_pEditor->editEvent(tmp); + //debug("LAST EDITED WAS %s",tmp.ptr()); +#endif // COMPILE_SCRIPTTOOLBAR +*/ +} diff --git a/src/modules/eventeditor/eventeditor.h b/src/modules/eventeditor/eventeditor.h new file mode 100644 index 00000000..d94a07cc --- /dev/null +++ b/src/modules/eventeditor/eventeditor.h @@ -0,0 +1,120 @@ +#ifndef _EVENTEDITOR_H_ +#define _EVENTEDITOR_H_ +// +// File : eventeditor.h +// Creation date : Mon Dec 23 2002 20:24:55 CEST by Szymon Stefanek +// +// This file is part of the KVirc irc client distribution +// Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net) +// +// This program is FREE software. You can redistribute it and/or +// modify it under the linkss 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. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// + +#include "kvi_window.h" +#include "kvi_string.h" + +#include <qwidget.h> +#include "kvi_tal_listview.h" +#include <qlineedit.h> + +class KviScriptEditor; + +class KviEventListViewItem : public KviTalListViewItem +{ +public: + unsigned int m_uEventIdx; + QString m_szName; + QString m_szParams; +public: + KviEventListViewItem(KviTalListView * par,unsigned int uEvIdx,const QString &name,const QString ¶ms) + : KviTalListViewItem(par), m_uEventIdx(uEvIdx), m_szName(name), m_szParams(params) {}; + ~KviEventListViewItem() {}; +public: + virtual QString text(int col) const { return m_szName; }; + virtual const QPixmap * pixmap(int col) const; +}; + +class KviEventHandlerListViewItem : public KviTalListViewItem +{ +public: + QString m_szName; + QString m_szBuffer; + bool m_bEnabled; +public: + KviEventHandlerListViewItem(KviTalListViewItem * par,const QString &name,const QString &buffer,bool bEnabled) + : KviTalListViewItem(par), m_szName(name) , m_szBuffer(buffer) , m_bEnabled(bEnabled) {}; + ~KviEventHandlerListViewItem() {}; +public: + virtual QString text(int col) const { return m_szName; }; + virtual const QPixmap * pixmap(int col) const; +}; + +class KviTalPopupMenu; + +class KviEventEditor : public QWidget +{ + Q_OBJECT +public: + KviEventEditor(QWidget * par); + ~KviEventEditor(); +public: + KviScriptEditor * m_pEditor; + KviTalListView * m_pListView; + QLineEdit * m_pNameEditor; + KviTalPopupMenu * m_pContextPopup; + KviEventHandlerListViewItem * m_pLastEditedItem; + bool m_bOneTimeSetupDone; +public: + void commit(); + void saveLastEditedItem(); + void getUniqueHandlerName(KviEventListViewItem *it,QString &buffer); + void getExportEventBuffer(QString &szBuffer,KviEventHandlerListViewItem * it); +protected slots: + void selectionChanged(KviTalListViewItem *it); + void itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col); + void toggleCurrentHandlerEnabled(); + void removeCurrentHandler(); + void addHandlerForCurrentEvent(); + void exportAllEvents(); + void exportCurrentHandler(); +protected: + void showEvent(QShowEvent *e); +private: + void oneTimeSetup(); +}; + +class KviEventEditorWindow : public KviWindow +{ + Q_OBJECT +public: + KviEventEditorWindow(KviFrame * lpFrm); + ~KviEventEditorWindow(); +protected: + KviEventEditor * m_pEditor; + QWidget * m_pBase; +protected: + virtual QPixmap * myIconPtr(); + virtual void fillCaptionBuffers(); + virtual void resizeEvent(QResizeEvent *e); + virtual void getConfigGroupName(KviStr &szName); + virtual void saveProperties(KviConfig *); + virtual void loadProperties(KviConfig *); +protected slots: + void cancelClicked(); + void okClicked(); + void applyClicked(); +}; + +#endif //_EVENTEDITOR_H_ diff --git a/src/modules/eventeditor/libkvieventeditor.cpp b/src/modules/eventeditor/libkvieventeditor.cpp new file mode 100644 index 00000000..62111cad --- /dev/null +++ b/src/modules/eventeditor/libkvieventeditor.cpp @@ -0,0 +1,88 @@ +// +// File : libkvieventeditor.cpp +// Creation date : Mon 23 Dec 2002 20:23:59 2002 GMT by Szymon Stefanek +// +// This toolbar is part of the KVirc irc client distribution +// Copyright (C) 2002 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. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// + +#include "kvi_module.h" +#include "kvi_locale.h" +#include "kvi_frame.h" + +#include "eventeditor.h" + +KviEventEditorWindow * g_pEventEditorWindow = 0; + + +/* + @doc: eventeditor.open + @type: + command + @title: + eventeditor.open + @short: + Shows the event editor + @syntax: + toolbareditor.open + @description: + Opens the script event editor dialog. +*/ + +static bool eventeditor_kvs_cmd_open(KviKvsModuleCommandCall * c) +{ + if(!g_pEventEditorWindow) + { + g_pEventEditorWindow = new KviEventEditorWindow(c->window()->frame()); + c->window()->frame()->addWindow(g_pEventEditorWindow); + } + + g_pEventEditorWindow->setFocus(); + return true; +} + +static bool eventeditor_module_init(KviModule * m) +{ + + KVSM_REGISTER_SIMPLE_COMMAND(m,"open",eventeditor_kvs_cmd_open); + + g_pEventEditorWindow = 0; + return true; +} + +static bool eventeditor_module_can_unload(KviModule * m) +{ + return (g_pEventEditorWindow == 0); +} + +static bool eventeditor_module_cleanup(KviModule *m) +{ + if(g_pEventEditorWindow)delete g_pEventEditorWindow; + g_pEventEditorWindow = 0; + return true; +} + +KVIRC_MODULE( + "EventEditor", // module name + "1.0.0", // module version + "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C) + "Editor for the script events", + eventeditor_module_init, + eventeditor_module_can_unload, + 0, + eventeditor_module_cleanup +) |