diff options
Diffstat (limited to 'src/modules/raweditor')
-rw-r--r-- | src/modules/raweditor/Makefile.am | 17 | ||||
-rw-r--r-- | src/modules/raweditor/libkviraweditor.cpp | 87 | ||||
-rw-r--r-- | src/modules/raweditor/raweditor.cpp | 563 | ||||
-rw-r--r-- | src/modules/raweditor/raweditor.h | 118 |
4 files changed, 785 insertions, 0 deletions
diff --git a/src/modules/raweditor/Makefile.am b/src/modules/raweditor/Makefile.am new file mode 100644 index 00000000..74c64e9b --- /dev/null +++ b/src/modules/raweditor/Makefile.am @@ -0,0 +1,17 @@ +AM_CPPFLAGS = -I$(SS_TOPSRCDIR)/src/kvilib/include/ -I$(SS_TOPSRCDIR)/src/kvirc/include/ \ +$(SS_INCDIRS) $(SS_CPPFLAGS) -DGLOBAL_KVIRC_DIR=\"$(globalkvircdir)\" + +pluglib_LTLIBRARIES = libkviraweditor.la + +libkviraweditor_la_LDFLAGS = -module -avoid-version $(SS_LDFLAGS) $(SS_LIBDIRS) + +libkviraweditor_la_SOURCES = libkviraweditor.cpp raweditor.cpp +nodist_libkviraweditor_la_SOURCES = moc_raweditor.cpp + +noinst_HEADERS = raweditor.h +libkviraweditor_la_LIBADD = $(SS_LIBLINK) ../../kvilib/build/libkvilib.la + +# noinst_HEADERS= + +moc_raweditor.cpp: raweditor.h + $(SS_QT_MOC) $< -o $@ diff --git a/src/modules/raweditor/libkviraweditor.cpp b/src/modules/raweditor/libkviraweditor.cpp new file mode 100644 index 00000000..9f6975f5 --- /dev/null +++ b/src/modules/raweditor/libkviraweditor.cpp @@ -0,0 +1,87 @@ +// +// File : libkviraweditor.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 "raweditor.h" + +KviRawEditorWindow * g_pRawEditorWindow = 0; + + +/* + @doc: raweditor.open + @type: + command + @title: + raweditor.open + @short: + Shows the raw events editor + @syntax: + toolbareditor.open + @description: + Opens the script raw events editor dialog. +*/ + +static bool raweditor_kvs_cmd_open(KviKvsModuleCommandCall * c) +{ + if(!g_pRawEditorWindow) + { + g_pRawEditorWindow = new KviRawEditorWindow(c->window()->frame()); + c->window()->frame()->addWindow(g_pRawEditorWindow); + } + g_pRawEditorWindow->setFocus(); + return true; +} + + +static bool raweditor_module_init(KviModule * m) +{ + + KVSM_REGISTER_SIMPLE_COMMAND(m,"open",raweditor_kvs_cmd_open); + g_pRawEditorWindow = 0; + return true; +} + +static bool raweditor_module_can_unload(KviModule * m) +{ + return (g_pRawEditorWindow == 0); +} + +static bool raweditor_module_cleanup(KviModule *m) +{ + if(g_pRawEditorWindow)delete g_pRawEditorWindow; + g_pRawEditorWindow = 0; + return true; +} + +KVIRC_MODULE( + "RawEditor", // module name + "1.0.0", // module version + "Copyright (C) 2002 Szymon Stefanek (pragma at kvirc dot net)", // author & (C) + "Editor for the script raw events", + raweditor_module_init, + raweditor_module_can_unload, + 0, + raweditor_module_cleanup +) diff --git a/src/modules/raweditor/raweditor.cpp b/src/modules/raweditor/raweditor.cpp new file mode 100644 index 00000000..72b3888b --- /dev/null +++ b/src/modules/raweditor/raweditor.cpp @@ -0,0 +1,563 @@ +// +// File : raweditor.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 "raweditor.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_kvs_eventmanager.h" +#include "kvi_kvs_eventhandler.h" + +#include <qmessagebox.h> +#include <qsplitter.h> +#include <qlayout.h> +#include "kvi_tal_vbox.h" +#include "kvi_tal_popupmenu.h" +#include <qtooltip.h> +#include <qinputdialog.h> +#include <qpushbutton.h> + +extern KviRawEditorWindow * g_pRawEditorWindow; + + + +KviRawListViewItem::KviRawListViewItem(KviTalListView *par,int idx) +: KviTalListViewItem(par) +{ + m_iIdx = idx; + m_szName.setNum(idx); + if(idx < 100)m_szName.prepend('0'); + if(idx < 10)m_szName.prepend('0'); +}; + +const QPixmap * KviRawListViewItem::pixmap(int col) const +{ + return g_pIconManager->getSmallIcon(firstChild() ? KVI_SMALLICON_RAWEVENT : KVI_SMALLICON_RAWEVENTNOHANDLERS); +} + +const QPixmap * KviRawHandlerListViewItem::pixmap(int col) const +{ + return g_pIconManager->getSmallIcon(m_bEnabled ? KVI_SMALLICON_HANDLER : KVI_SMALLICON_HANDLERDISABLED); +} + + + +KviRawEditor::KviRawEditor(QWidget * par) +: QWidget(par,"raw_event_editor") +{ + QGridLayout * l = new QGridLayout(this,1,1,2,2); +#ifdef COMPILE_USE_QT4 + QSplitter * spl = new QSplitter(Qt::Horizontal,this,"raweditorv"); + spl->setOpaqueResize(false); +#else + QSplitter * spl = new QSplitter(QSplitter::Horizontal,this); +#endif + l->addWidget(spl,0,0); + + KviTalVBox * boxi = new KviTalVBox(spl); + m_pListView = new KviTalListView(boxi); + m_pListView->addColumn(__tr2qs("Raw 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 raw event handler name.")); + m_pEditor = KviScriptEditor::createInstance(box); + + m_bOneTimeSetupDone = false; + m_pLastEditedItem = 0; +} + +KviRawEditor::~KviRawEditor() +{ + KviScriptEditor::destroyInstance(m_pEditor); +} + +void KviRawEditor::oneTimeSetup() +{ + if(m_bOneTimeSetupDone)return; + m_bOneTimeSetupDone = true; + + KviRawListViewItem * it; + KviRawHandlerListViewItem * ch; + + for(unsigned int i = 0;i < 999;i++) + { + KviPointerList<KviKvsEventHandler> * l = KviKvsEventManager::instance()->rawHandlers(i); + if(l) + { + it = new KviRawListViewItem(m_pListView,i); + for(KviKvsEventHandler * s = l->first();s;s = l->next()) + { + if(s->type() == KviKvsEventHandler::Script) + { + ch = new KviRawHandlerListViewItem(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 KviRawEditor::itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col) +{ + __range_valid(m_bOneTimeSetupDone); + m_pContextPopup->clear(); + if(it) + { + if(it->parent()) + { + if(!(((KviRawHandlerListViewItem *)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->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(addHandlerForCurrentRaw())); + } + } + + m_pContextPopup->insertSeparator(); + m_pContextPopup->insertItem( + *(g_pIconManager->getSmallIcon(KVI_SMALLICON_RAWEVENT)), + __tr2qs("&Add Raw Event..."), + this,SLOT(addRaw())); + + m_pContextPopup->popup(pnt); +} + +void KviRawEditor::getUniqueHandlerName(KviRawListViewItem *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(KviRawHandlerListViewItem * ch = (KviRawHandlerListViewItem *)(it->firstChild());ch;ch = (KviRawHandlerListViewItem *)ch->nextSibling()) + { + if(KviQString::equalCI(newName,ch->m_szName)) + { + bFound = true; + KviQString::sprintf(newName,"%Q_%d",&buffer,idx); + idx++; + break; + } + } + + } + + buffer = newName; +} + +void KviRawEditor::addRaw() +{ + bool bOk = false; + + int iIdx = QInputDialog::getInteger(__tr2qs("New Raw Event"),__tr2qs("Enter the numeric code of the message (0-999)"),0,0,999,1,&bOk,this); + + if(!bOk)return; + + KviRawListViewItem * it; + for(it = (KviRawListViewItem *)m_pListView->firstChild();it;it = (KviRawListViewItem *)it->nextSibling()) + { + if(it->m_iIdx == iIdx) + { + m_pListView->setSelected(it,true); + goto add_handler; + } + } + + it = new KviRawListViewItem(m_pListView,iIdx); + m_pListView->setSelected(it,true); + +add_handler: + addHandlerForCurrentRaw(); + +} + +void KviRawEditor::addHandlerForCurrentRaw() +{ + __range_valid(m_pOneTimeSetupDone); + + KviTalListViewItem * it = m_pListView->selectedItem(); + if(it) + { + if(it->parent() == 0) + { + QString buffer = __tr2qs("default"); + getUniqueHandlerName((KviRawListViewItem *)it,buffer); + KviTalListViewItem * ch = new KviRawHandlerListViewItem(it,buffer,"",true); + it->setOpen(true); + m_pListView->setSelected(ch,true); + } + } +} + +void KviRawEditor::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 KviRawEditor::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 KviRawEditor::commit() +{ + if(!m_bOneTimeSetupDone)return; // nothing to commit + + saveLastEditedItem(); + KviKvsEventManager::instance()->removeAllScriptRawHandlers(); + 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,"RawEvent%d::%Q",&(((KviRawListViewItem *)it)->m_iIdx),&(((KviRawHandlerListViewItem *)ch)->m_szName)); + KviKvsScriptEventHandler * s = new KviKvsScriptEventHandler( + ((KviRawHandlerListViewItem *)ch)->m_szName, + szContext, + ((KviRawHandlerListViewItem *)ch)->m_szBuffer, + ((KviRawHandlerListViewItem *)ch)->m_bEnabled + ); + + KviKvsEventManager::instance()->addRawHandler(((KviRawListViewItem *)it)->m_iIdx,s); + } + } + } + + g_pApp->saveRawEvents(); // otherwise this page has never been shown +} + +void KviRawEditor::saveLastEditedItem() +{ + __range_valid(m_bOneTimeSetupDone); + if(!m_pLastEditedItem)return; + + QString buffer = m_pNameEditor->text(); + if(!KviQString::equalCI(buffer,m_pLastEditedItem->m_szName)) + { + getUniqueHandlerName((KviRawListViewItem *)(m_pLastEditedItem->parent()),buffer); + } + + m_pLastEditedItem->m_szName = buffer; + QString tmp; + m_pEditor->getText(tmp); + + m_pLastEditedItem->m_szBuffer = tmp; +} + +void KviRawEditor::selectionChanged(KviTalListViewItem * it) +{ + __range_valid(m_bOneTimeSetupDone); + saveLastEditedItem(); + if(it->parent()) + { + m_pLastEditedItem = (KviRawHandlerListViewItem *)it; + m_pNameEditor->setEnabled(true); + m_pNameEditor->setText(it->text(0)); + m_pEditor->setEnabled(true); + m_pEditor->setText(((KviRawHandlerListViewItem *)it)->m_szBuffer); + } else { + m_pLastEditedItem = 0; + m_pNameEditor->setEnabled(false); + m_pNameEditor->setText(""); + m_pEditor->setEnabled(false); + } +} + +void KviRawEditor::showEvent(QShowEvent *e) +{ + oneTimeSetup(); + QWidget::showEvent(e); +} + +void KviRawEditor::getExportEventBuffer(QString &buffer,KviRawHandlerListViewItem * it) +{ + if(!it->parent())return; + + QString szBuf = it->m_szBuffer; + + KviCommandFormatter::blockFromBuffer(szBuf); + + buffer = "event("; + buffer += ((KviRawListViewItem *)(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 += ((KviRawListViewItem *)(it->parent()))->m_szName; + buffer += " "; + buffer += it->m_szName; + } +} + +void KviRawEditor::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 += "raw"; + szName += ((KviRawListViewItem *)(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 raw event file."),__tr2qs("&OK")); + } +} + +void KviRawEditor::exportAllEvents() +{ + saveLastEditedItem(); + + KviRawListViewItem * it = (KviRawListViewItem *)m_pListView->firstChild(); + + QString out; + + while(it) + { + KviRawHandlerListViewItem * item = (KviRawHandlerListViewItem *)it->firstChild(); + while(item) + { + QString tmp; + getExportEventBuffer(tmp,item); + out += tmp; + out += "\n"; + item = (KviRawHandlerListViewItem *)item->nextSibling(); + } + it = (KviRawListViewItem *)it->nextSibling(); + } + + QString szName = QDir::homeDirPath(); + if(!szName.endsWith(QString(KVI_PATH_SEPARATOR)))szName += KVI_PATH_SEPARATOR; + szName += "rawevents.kvs"; + + QString szFile; + + if(!KviFileDialog::askForSaveFileName(szFile,__tr2qs("Choose a Filename - KVIrc"),szName,"*.kvs",true,true,true))return; + + if(!KviFileUtils::writeFile(szFile,out)) + { + QMessageBox::warning(this,__tr2qs("Write Failed - KVIrc"),__tr2qs("Unable to write to the raw events file."),__tr2qs("Ok")); + } +} + + + + +KviRawEditorWindow::KviRawEditorWindow(KviFrame * lpFrm) +: KviWindow(KVI_WINDOW_TYPE_SCRIPTEDITOR,lpFrm,"raweditor",0) +{ + g_pRawEditorWindow = this; + + m_pEditor = new KviRawEditor(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); +} + +KviRawEditorWindow::~KviRawEditorWindow() +{ + g_pRawEditorWindow = 0; +} + +void KviRawEditorWindow::okClicked() +{ + m_pEditor->commit(); + close(); +} + +void KviRawEditorWindow::applyClicked() +{ + m_pEditor->commit(); +} + +void KviRawEditorWindow::cancelClicked() +{ + close(); +} + + +QPixmap * KviRawEditorWindow::myIconPtr() +{ + return g_pIconManager->getSmallIcon(KVI_SMALLICON_RAWEVENT); +} + +void KviRawEditorWindow::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 KviRawEditorWindow::fillCaptionBuffers() +{ + m_szPlainTextCaption = __tr2qs("Raw 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 KviRawEditorWindow::getConfigGroupName(KviStr &szName) +{ + szName = "raweditor"; +} + + +void KviRawEditorWindow::saveProperties(KviConfig *cfg) +{ +/* +#ifdef COMPILE_SCRIPTTOOLBAR + cfg->writeEntry("Sizes",m_pEditor->sizes()); + cfg->writeEntry("LastRaw",m_pEditor->lastEditedRaw().ptr()); + //debug("LAST EDITED=%s",m_pEditor->lastEditedRaw().ptr()); +#endif // COMPILE_SCRIPTTOOLBAR +*/ +} + +void KviRawEditorWindow::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("LastRaw",""); + m_pEditor->editRaw(tmp); + //debug("LAST EDITED WAS %s",tmp.ptr()); +#endif // COMPILE_SCRIPTTOOLBAR +*/ +} diff --git a/src/modules/raweditor/raweditor.h b/src/modules/raweditor/raweditor.h new file mode 100644 index 00000000..7adf2213 --- /dev/null +++ b/src/modules/raweditor/raweditor.h @@ -0,0 +1,118 @@ +#ifndef _RAWEDITOR_H_ +#define _RAWEDITOR_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_qstring.h" + +#include <qwidget.h> +#include "kvi_tal_listview.h" +#include <qlineedit.h> + +class KviScriptEditor; + +class KviRawListViewItem : public KviTalListViewItem +{ +public: + int m_iIdx; + QString m_szName; +public: + KviRawListViewItem(KviTalListView * par,int idx); + ~KviRawListViewItem() {}; +public: + virtual QString text(int col) const { return m_szName; }; + virtual const QPixmap * pixmap(int col) const; +}; + +class KviRawHandlerListViewItem : public KviTalListViewItem +{ +public: + KviRawHandlerListViewItem(KviTalListViewItem * par,const QString & name,const QString & buffer,bool bEnabled) + : KviTalListViewItem(par), m_szName(name) , m_szBuffer(buffer) , m_bEnabled(bEnabled) {}; + ~KviRawHandlerListViewItem() {}; +public: + QString m_szName; + QString m_szBuffer; + bool m_bEnabled; + virtual QString text(int col) const { return m_szName; }; + virtual const QPixmap * pixmap(int col) const; +}; + +class KviTalPopupMenu; + +class KviRawEditor : public QWidget +{ + Q_OBJECT +public: + KviRawEditor(QWidget * par); + ~KviRawEditor(); +public: + KviScriptEditor * m_pEditor; + KviTalListView * m_pListView; + QLineEdit * m_pNameEditor; + KviTalPopupMenu * m_pContextPopup; + KviRawHandlerListViewItem * m_pLastEditedItem; + bool m_bOneTimeSetupDone; +public: + void commit(); + void saveLastEditedItem(); + void getUniqueHandlerName(KviRawListViewItem *it,QString &buffer); + void getExportEventBuffer(QString &szBuffer,KviRawHandlerListViewItem * it); +protected slots: + void selectionChanged(KviTalListViewItem *it); + void itemPressed(KviTalListViewItem *it,const QPoint &pnt,int col); + void toggleCurrentHandlerEnabled(); + void removeCurrentHandler(); + void addHandlerForCurrentRaw(); + void addRaw(); + void exportAllEvents(); + void exportCurrentHandler(); +protected: + void showEvent(QShowEvent *e); +private: + void oneTimeSetup(); +}; + +class KviRawEditorWindow : public KviWindow +{ + Q_OBJECT +public: + KviRawEditorWindow(KviFrame * lpFrm); + ~KviRawEditorWindow(); +protected: + KviRawEditor * 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 //_RAWEDITOR_H_ |