diff options
| author | 2007-01-01 19:50:17 +0000 | |
|---|---|---|
| committer | 2007-01-01 19:50:17 +0000 | |
| commit | b7bada5b68c7ac4740f519b5c3d5a9b6f2d97841 (patch) | |
| tree | 65cafd8794aeb5d329da095c8a5ccd31a851b04e /src/modules | |
| parent | *AUTOMATICALLY* updated KVI_SOURCES_DATE variable (diff) | |
| download | KVIrc-b7bada5b68c7ac4740f519b5c3d5a9b6f2d97841.tar.gz KVIrc-b7bada5b68c7ac4740f519b5c3d5a9b6f2d97841.tar.bz2 KVIrc-b7bada5b68c7ac4740f519b5c3d5a9b6f2d97841.zip | |
wip on dynamic tool tips in objects module(still incomplete, bugged and undocumented :D)
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@86 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/objects/class_listbox.cpp | 49 | ||||
| -rw-r--r-- | src/modules/objects/class_listbox.h | 4 | ||||
| -rw-r--r-- | src/modules/objects/class_widget.cpp | 62 | ||||
| -rw-r--r-- | src/modules/objects/class_widget.h | 24 |
4 files changed, 129 insertions, 10 deletions
diff --git a/src/modules/objects/class_listbox.cpp b/src/modules/objects/class_listbox.cpp index 077114e9e..cbfe3bc83 100644 --- a/src/modules/objects/class_listbox.cpp +++ b/src/modules/objects/class_listbox.cpp @@ -2,7 +2,7 @@ // File : class_listbox.cpp // Creation date : Sat Oct 2 03:40:28 CET 2004 by Szymon Stefanek // -// This file is part of the KVirc irc client distribution +// This file is part of the KVirc irc client distribution // Copyright (C) 2004 Szymon Stefanek (pragma at kvirc dot net) // // This program is FREE software. You can redistribute it and/or @@ -113,6 +113,8 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_listbox,"listbox","widget") KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"currentText", functioncurrentText) KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"currentItem", functioncurrentItem) KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"textAt", functiontextAt); + KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"itemAt", functionitemAt); + KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"itemRect", functionitemRect); KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"setCurrentItem", functionsetCurrentItem); @@ -121,6 +123,7 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_listbox,"listbox","widget") KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"setSelected",functionsetSelected); KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"isSelected",functionisSelected); KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"currentItemChangeEvent",functioncurrentItemChangeEvent); + KVSO_REGISTER_HANDLER(KviKvsObject_listbox,"currentnItemEvent",functiononItemEvent); KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_listbox,"selectionChangeEvent") @@ -142,6 +145,9 @@ bool KviKvsObject_listbox::init(KviKvsRunTimeContext * pContext,KviKvsVariantLis b->setSelectionMode(QListBox::Single); connect(b,SIGNAL(selectionChanged()),this,SLOT(selectionChanged())); connect(b,SIGNAL(currentChanged(QListBoxItem *)),this,SLOT(currentItemChanged(QListBoxItem *))); + + connect(b,SIGNAL(onItem(QListBoxItem *)),this,SLOT(onItem(QListBoxItem *))); + setObject(b,true);; return true; } @@ -302,6 +308,17 @@ bool KviKvsObject_listbox::functionsetSelected(KviKvsObjectFunctionCall *c) if(widget()) ((QListBox *)widget())->setSelected(uIndex,bSel); return true; } +bool KviKvsObject_listbox::functionitemAt(KviKvsObjectFunctionCall *c) +{ + kvs_uint_t uX,uY; + KVSO_PARAMETERS_BEGIN(c) + KVSO_PARAMETER("uX",KVS_PT_UNSIGNEDINTEGER,0,uX) + KVSO_PARAMETER("uY",KVS_PT_UNSIGNEDINTEGER,0,uY) + KVSO_PARAMETERS_END(c) + if(widget()) + c->returnValue()->setInteger(((QListBox *)widget())->index(((QListBox *)widget())->itemAt(QPoint(uX,uY)))); + return true; +} bool KviKvsObject_listbox::functioncurrentItemChangeEvent(KviKvsObjectFunctionCall *c) { @@ -326,8 +343,38 @@ void KviKvsObject_listbox::currentItemChanged(QListBoxItem *item) } } +bool KviKvsObject_listbox::functiononItemEvent(KviKvsObjectFunctionCall *c) +{ + emitSignal("onItem",c,c->params()); + return true; +} +void KviKvsObject_listbox::onItem(QListBoxItem *item) +{ + KviKvsVariantList params(new KviKvsVariant(item->text())); + callFunction(this,"onItemEvent",0,¶ms); +} + + +bool KviKvsObject_listbox::functionitemRect(KviKvsObjectFunctionCall *c) +{ +kvs_uint_t uIndex; + KVSO_PARAMETERS_BEGIN(c) + KVSO_PARAMETER("uIndex",KVS_PT_UNSIGNEDINTEGER,0,uIndex) + KVSO_PARAMETERS_END(c) + if(widget()) + { + QRect rect=((QListBox *)widget())->itemRect(((QListBox *)widget())->item(uIndex)); + KviKvsArray * a = new KviKvsArray(); + a->set(0,new KviKvsVariant((kvs_int_t)rect.left())); + a->set(1,new KviKvsVariant((kvs_int_t)rect.top())); + a->set(2,new KviKvsVariant((kvs_int_t)rect.bottom())); + a->set(3,new KviKvsVariant((kvs_int_t)rect.right())); + c->returnValue()->setArray(a); + } + return true; +} diff --git a/src/modules/objects/class_listbox.h b/src/modules/objects/class_listbox.h index 39c401b6d..30991927d 100644 --- a/src/modules/objects/class_listbox.h +++ b/src/modules/objects/class_listbox.h @@ -56,9 +56,13 @@ protected: bool functionsetSelected(KviKvsObjectFunctionCall *c); bool functionisSelected(KviKvsObjectFunctionCall *c); bool functioncurrentItemChangeEvent(KviKvsObjectFunctionCall *c); + bool functiononItemEvent(KviKvsObjectFunctionCall *c); + bool functionitemAt(KviKvsObjectFunctionCall *c); + bool functionitemRect(KviKvsObjectFunctionCall *c); protected slots: void selectionChanged(); void currentItemChanged(QListBoxItem *); + void onItem(QListBoxItem *); }; diff --git a/src/modules/objects/class_widget.cpp b/src/modules/objects/class_widget.cpp index 869fd0fc6..488d5f650 100644 --- a/src/modules/objects/class_widget.cpp +++ b/src/modules/objects/class_widget.cpp @@ -75,7 +75,6 @@ const int widgettypes_cod[] = { #define widgettypes_num (sizeof(widgettypes_tbl) / sizeof(widgettypes_tbl[0])) - /* @doc: widget @keyterms: @@ -452,6 +451,22 @@ const int widgettypes_cod[] = { [/example] */ +KviKvsTip::KviKvsTip(KviKvsObject_widget * pParent,QWidget *pWidget) +: QToolTip(pWidget,0) +{ + m_pParent=pParent; +} +KviKvsTip::~KviKvsTip() +{ +} + +void KviKvsTip::maybeTip(const QPoint &pnt) +{ + KviKvsVariant *x=new KviKvsVariant((kvs_int_t)pnt.x()); + KviKvsVariant *y=new KviKvsVariant((kvs_int_t)pnt.y()); + KviKvsVariantList params(x,y); + m_pParent->callFunction(m_pParent,"maybeTipEvent",0,¶ms); +} @@ -547,6 +562,9 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_widget,"widget","object") KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setBackgroundImage",function_setBackgroundImage) KVSO_REGISTER_HANDLER(KviKvsObject_widget,"backgroundColor",function_backgroundColor) KVSO_REGISTER_HANDLER(KviKvsObject_widget,"foregroundColor",function_foregroundColor) + KVSO_REGISTER_HANDLER(KviKvsObject_widget,"enableDynamicToolTip",function_enableDynamicToolTip) + KVSO_REGISTER_HANDLER(KviKvsObject_widget,"disableDynamicToolTip",function_disableDynamicToolTip) + KVSO_REGISTER_HANDLER(KviKvsObject_widget,"setDynamicToolTip",function_setDynamicToolTip) // events KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"mousePressEvent") @@ -564,18 +582,23 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_widget,"widget","object") KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"moveEvent") KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"paintEvent") KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"keyPressEvent") + KVSO_REGISTER_STANDARD_NOTHINGRETURN_HANDLER(KviKvsObject_widget,"maybeTipEvent") KVSO_END_REGISTERCLASS(KviKvsObject_widget) KVSO_BEGIN_CONSTRUCTOR(KviKvsObject_widget,KviKvsObject) - + m_pTip=0; KVSO_END_CONSTRUCTOR(KviKvsObject_widget) - KVSO_BEGIN_DESTRUCTOR(KviKvsObject_widget) emit aboutToDie(); + if (m_pTip) + { + delete m_pTip; + m_pTip=0; + } KVSO_END_CONSTRUCTOR(KviKvsObject_widget) @@ -1593,4 +1616,37 @@ bool KviKvsObject_widget::function_globalCursorY(KviKvsObjectFunctionCall *c) if(widget())c->returnValue()->setInteger(QCursor::pos().y()); return true; } +bool KviKvsObject_widget::function_enableDynamicToolTip(KviKvsObjectFunctionCall *c) +{ + if (!m_pTip) m_pTip=new KviKvsTip(this,widget()); + return true; +} +bool KviKvsObject_widget::function_disableDynamicToolTip(KviKvsObjectFunctionCall *c) +{ + if (m_pTip) + { + delete m_pTip; + m_pTip=0; + } + return true; +} + +bool KviKvsObject_widget::function_setDynamicToolTip(KviKvsObjectFunctionCall *c) +{ + if (!m_pTip)m_pTip=new KviKvsTip(this,widget()); + + QString szTip; + kvs_int_t uXstart,uYstart,uXend,uYend; + KVSO_PARAMETERS_BEGIN(c) + KVSO_PARAMETER("tip_text",KVS_PT_STRING,0,szTip) + KVSO_PARAMETER("left",KVS_PT_INT,0,uXstart) + KVSO_PARAMETER("top",KVS_PT_INT,0,uYstart) + KVSO_PARAMETER("right",KVS_PT_INT,0,uXend) + KVSO_PARAMETER("bottom",KVS_PT_INT,0,uYend) + KVSO_PARAMETERS_END(c) + if(!widget())return true; + m_pTip->doTip(QRect(QPoint(uXstart,uYstart),QPoint(uXend,uYend)),szTip); + return true; +} + #include "m_class_widget.moc" diff --git a/src/modules/objects/class_widget.h b/src/modules/objects/class_widget.h index 8f5453c10..38f7a5414 100644 --- a/src/modules/objects/class_widget.h +++ b/src/modules/objects/class_widget.h @@ -23,13 +23,10 @@ // #include "kvi_string.h" - - - - - +#include "qtooltip.h" #include "object_macros.h" +class KviKvsTip; class KviKvsObject_widget : public KviKvsObject { Q_OBJECT @@ -51,7 +48,7 @@ protected: // so the name of the C++ function matches exactly the name of the KVS function at this point // let's also try to keep alphabetic order for the functions here.. so one can find them quickly - + KviKvsTip *m_pTip; bool function_addWidgetToWrappedLayout(KviKvsObjectFunctionCall *c); bool function_backgroundColor(KviKvsObjectFunctionCall *c); bool function_caption(KviKvsObjectFunctionCall *c); @@ -102,9 +99,24 @@ protected: bool function_width(KviKvsObjectFunctionCall *); bool function_x(KviKvsObjectFunctionCall *); bool function_y(KviKvsObjectFunctionCall *); + bool function_enableDynamicToolTip(KviKvsObjectFunctionCall *c); + bool function_disableDynamicToolTip(KviKvsObjectFunctionCall *c); + bool function_setDynamicToolTip(KviKvsObjectFunctionCall *c); + signals: void aboutToDie(); }; +class KviKvsTip : public QToolTip +{ +public: + KviKvsTip(KviKvsObject_widget * pParent,QWidget *pWidget); + ~KviKvsTip(); +public: + void maybeTip(const QPoint &pnt); + void doTip(const QRect &rct,const QString &str){ tip(rct,str); }; +protected: + KviKvsObject_widget * m_pParent; +}; #endif // !_CLASS_WIDGET_H_ |
