From 8b3166bb3efbedb5f38102bf55fffcb1e74f9be9 Mon Sep 17 00:00:00 2001
From: Noldor
Date: Thu, 17 Apr 2008 16:10:50 +0000
Subject: Q3PopupMenu port (wip)
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@1492 17fca916-40b9-46aa-a4ea-0a15b648b75c
---
src/kvilib/kvilib_QT4_vc05.vcproj | 2 +
src/kvilib/tal/kvi_tal_popupmenu.cpp | 146 +++++++++++++++++++++++++++++++++++
src/kvilib/tal/kvi_tal_popupmenu.h | 82 +++++++-------------
src/modules/editor/scripteditor.cpp | 6 +-
4 files changed, 183 insertions(+), 53 deletions(-)
diff --git a/src/kvilib/kvilib_QT4_vc05.vcproj b/src/kvilib/kvilib_QT4_vc05.vcproj
index 980f355cb..4da0375da 100644
--- a/src/kvilib/kvilib_QT4_vc05.vcproj
+++ b/src/kvilib/kvilib_QT4_vc05.vcproj
@@ -2008,6 +2008,8 @@
+#include
+#include
+
+
+KviTalPopupMenu::KviTalPopupMenu(QWidget * pParent,const QString &szName)
+: QMenu(pParent)
+{
+ connect(this,SIGNAL(triggered(QAction *)),this,SLOT(slottriggered(QAction *)));
+ setName(szName);
+ identifier=0;
+}
+KviTalPopupMenu::~KviTalPopupMenu()
+{
+}
+
+
+int KviTalPopupMenu::insertItem(const QString &szText)
+{
+ QAction *a=addAction(szText);
+ actionsDict[identifier++]=a;
+ return identifier-1;
+}
+int KviTalPopupMenu::insertItem(const QPixmap &pix,const QString &szText)
+{
+ //return QMenu::insertItem(QIcon(pix),szText,-1,-1);
+ QAction *a=addAction(QIcon(pix),szText);
+ actionsDict[identifier++]=a;
+ return identifier-1;
+}
+int KviTalPopupMenu::insertItem(const QString &szText,int id)
+{
+ //return QMenu::insertItem(szText,id);
+
+ QAction *a=addAction(szText);
+ addAction(a);
+ actionsDict[id]=a;
+ return id;
+}
+
+int KviTalPopupMenu::insertItem(const QPixmap &pix,const QString &szText,int id)
+{
+ //return QMenu::insertItem(QIcon(pix),szText,id,-1);
+ QAction *a=addAction(QIcon(pix),szText);
+ actionsDict[id]=a;
+ return id;
+}
+
+
+int KviTalPopupMenu::insertItem(const QString &szText,const QObject * pReceiver,const char * szSlot)
+{
+ //return QMenu::insertItem(szText,pReceiver,szSlot);
+ QAction *a=addAction(szText,pReceiver,szSlot);
+ actionsDict[identifier++]=a;
+ return identifier-1;
+}
+int KviTalPopupMenu::insertItem(const QPixmap &pix,const QString &szText,const QObject * pReceiver,const char * szSlot)
+{
+ //return QMenu::insertItem(QIcon(pix),szText,pReceiver,szSlot);
+ QAction *a=addAction(QIcon(pix),szText,pReceiver,szSlot);
+ actionsDict[identifier++]=a;
+ return identifier-1;
+}
+
+int KviTalPopupMenu::insertItem(const QPixmap &pix,const QString &szText,QMenu *pMenu)
+{
+ //return QMenu::insertItem(QIcon(pix),szText,pMenu,-1,-1);
+ QAction *a=addMenu(pMenu);
+ a->setText(szText);
+ a->setIcon(QIcon(pix));
+ actionsDict[identifier++]=a;
+ return identifier-1;
+}
+
+int KviTalPopupMenu::insertItem(const QString &szText,QMenu *pMenu)
+{
+ //return QMenu::insertItem(szText,pMenu,-1,-1);
+ QAction *a=addMenu(pMenu);
+ a->setText(szText);
+ actionsDict[identifier++]=a;
+ return identifier-1;
+}
+
+
+int KviTalPopupMenu::insertItem(QWidget * pWidget)
+{
+ // needs Qt 4.2
+ QWidgetAction * pAct = new QWidgetAction(this);
+ pAct->setDefaultWidget(pWidget);
+ addAction(pAct);
+ return 0;
+}
+void KviTalPopupMenu::setItemChecked(int id,bool check)
+{
+ QAction * action=actionsDict.value(id);
+ action->setCheckable(true);
+ action->setChecked(check);
+}
+void KviTalPopupMenu::setItemParameter(int id, int param)
+{
+ QAction * action=actionsDict.value(id);
+ QVariant par(param);
+ action->setData(par);
+}
+int KviTalPopupMenu::itemParameter(int id)
+{
+ QAction * action=actionsDict.value(id);
+ return action->data().asInt();
+}
+void KviTalPopupMenu::clear()
+{
+ QMenu::clear();
+ identifier=0;
+ actionsDict.clear();
+}
+QString KviTalPopupMenu::text(int id)
+{
+ QAction * action=actionsDict.value(id);
+ return action->text();
+}
+void KviTalPopupMenu::setItemEnabled(int id,bool bFlag)
+{
+ QAction * action=actionsDict.value(id);
+ action->setEnabled(bFlag);
+}
+
+int KviTalPopupMenu::insertSeparator()
+{
+ QAction *a=addSeparator();
+ actionsDict[identifier++]=a;
+ return identifier-1;
+}
+void KviTalPopupMenu::slottriggered(QAction *a)
+{
+ QHashIterator i(actionsDict);
+ int count=0;
+ bool found=false;
+ while (i.hasNext())
+ {
+ i.next();
+ if (i.value()!= a) count++;
+ else break;
+ }
+ emit activated(count);
+}
+
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
#include "kvi_tal_popupmenu.moc"
#endif //!COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/kvilib/tal/kvi_tal_popupmenu.h b/src/kvilib/tal/kvi_tal_popupmenu.h
index 478acd345..36d719971 100644
--- a/src/kvilib/tal/kvi_tal_popupmenu.h
+++ b/src/kvilib/tal/kvi_tal_popupmenu.h
@@ -24,64 +24,42 @@
// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
//=============================================================================
-
#include "kvi_settings.h"
#include "kvi_qstring.h"
-#include
-#include
+#include
+#include
+
-class KVILIB_API KviTalPopupMenu : public Q3PopupMenu
+class KVILIB_API KviTalPopupMenu : public QMenu
{
Q_OBJECT
+protected:
+ QHash actionsDict;
+ int identifier;
public:
- KviTalPopupMenu(QWidget * pParent=0,const QString &szName = KviQString::empty)
- : Q3PopupMenu(pParent)
- {
- setName(szName);
- };
- virtual ~KviTalPopupMenu() {};
-
- int insertItem(const QString &szText)
- {
- return Q3PopupMenu::insertItem(szText);
- }
- int insertItem(const QPixmap &pix,const QString &szText)
- {
- return Q3PopupMenu::insertItem(QIcon(pix),szText,-1,-1);
- }
- int insertItem(const QString &szText,int id)
- {
- return Q3PopupMenu::insertItem(szText,id);
- }
- int insertItem(const QPixmap &pix,const QString &szText,int id)
- {
- return Q3PopupMenu::insertItem(QIcon(pix),szText,id,-1);
- }
- int insertItem(const QString &szText,const QObject * pReceiver,const char * szSlot)
- {
- return Q3PopupMenu::insertItem(szText,pReceiver,szSlot);
- }
- int insertItem(const QPixmap &pix,const QString &szText,const QObject * pReceiver,const char * szSlot)
- {
- return Q3PopupMenu::insertItem(QIcon(pix),szText,pReceiver,szSlot);
- }
- int insertItem(const QPixmap &pix,const QString &szText,QMenu *pMenu)
- {
- return Q3PopupMenu::insertItem(QIcon(pix),szText,pMenu,-1,-1);
- }
- int insertItem(const QString &szText,QMenu *pMenu)
- {
- return Q3PopupMenu::insertItem(szText,pMenu,-1,-1);
- }
- int insertItem(QWidget * pWidget)
- {
- // needs Qt 4.2
- QWidgetAction * pAct = new QWidgetAction(this);
- pAct->setDefaultWidget(pWidget);
- addAction(pAct);
- return 0;
- }
+ KviTalPopupMenu(QWidget * pParent=0,const QString &szName = KviQString::empty);
+ virtual ~KviTalPopupMenu() ;
+ int insertItem(const QString &szText);
+ int insertItem(const QPixmap &pix,const QString &szText);
+ int insertItem(const QString &szText,int id);
+ int insertItem(const QPixmap &pix,const QString &szText,int id);
+ int insertItem(const QString &szText,const QObject * pReceiver,const char * szSlot);
+ int insertItem(const QPixmap &pix,const QString &szText,const QObject * pReceiver,const char * szSlot);
+ int insertItem(const QPixmap &pix,const QString &szText,QMenu *pMenu);
+ int insertItem(const QString &szText,QMenu *pMenu);
+ int insertItem(QWidget * pWidget);
+ void setItemChecked(int id,bool check);
+ void setItemEnabled(int id,bool bFlag);
+ void setItemParameter(int id, int param);
+ int itemParameter(int id);
+ void clear();
+ QString text(int);
+ int insertSeparator();
+protected slots:
+ void slottriggered(QAction *);
+signals:
+ void activated(int);
+
};
-
#endif // _KVI_TAL_POPUPMENU_H_
diff --git a/src/modules/editor/scripteditor.cpp b/src/modules/editor/scripteditor.cpp
index b431b731f..107dc1a46 100644
--- a/src/modules/editor/scripteditor.cpp
+++ b/src/modules/editor/scripteditor.cpp
@@ -38,9 +38,12 @@
#include "kvi_iconmanager.h"
#include "kvi_kvs_kernel.h"
#include
-#include "kvi_tal_popupmenu.h"
#include "kvi_tal_scrollview.h"
+//FIXME
+#include
+#include
+
#include
#include
#include
@@ -51,6 +54,7 @@
#include
#include
+
extern KviPointerList * g_pScriptEditorWindowList;
extern KviModule * g_pEditorModulePointer;
--
cgit v1.3.1-10-gc9f91