aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Fabio Bas2010-09-05 17:18:05 +0000
committerGravatar Fabio Bas2010-09-05 17:18:05 +0000
commit16009d766b251a10bbb58485bfeff5ad6156c03b (patch)
tree8213d1e353a71c78de3b7f7d9b8c4a460329fcd7 /src/modules
parentadded commands to popup module: addItem, addPrologue, addEpilogue, addExtPopu... (diff)
downloadKVIrc-16009d766b251a10bbb58485bfeff5ad6156c03b.tar.gz
KVIrc-16009d766b251a10bbb58485bfeff5ad6156c03b.tar.bz2
KVIrc-16009d766b251a10bbb58485bfeff5ad6156c03b.zip
added popup.create, popup.destroy, $popup.exists()
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4981 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/popup/libkvipopup.cpp164
1 files changed, 151 insertions, 13 deletions
diff --git a/src/modules/popup/libkvipopup.cpp b/src/modules/popup/libkvipopup.cpp
index 9adb43b40..ea422eef9 100644
--- a/src/modules/popup/libkvipopup.cpp
+++ b/src/modules/popup/libkvipopup.cpp
@@ -31,7 +31,7 @@
if(iIdx == 0) \
{ \
if(!c->hasSwitch('q',"quiet")) \
- c->warning(__tr2qs_ctx("Empty subpopup name supplied","kvs")); \
+ c->warning(__tr2qs_ctx("Empty popup name supplied","kvs")); \
return true; \
} \
if(iIdx > 0) \
@@ -79,7 +79,7 @@
int iIdx = szPopupName.indexOf(QChar('.')); \
if(iIdx == 0) \
{ \
- c->warning(__tr2qs_ctx("Empty subpopup name supplied","kvs")); \
+ c->warning(__tr2qs_ctx("Empty popup name supplied","kvs")); \
return true; \
} \
if(iIdx > 0) \
@@ -98,11 +98,6 @@
c->warning(__tr2qs_ctx("Popup \"%Q\" does not exists","kvs"),&szPopupName); \
return true; \
} \
- if(pPopup->isLocked()) \
- { \
- c->warning(__tr2qs_ctx("Popup menu self-modification is not allowed (the popup is probably open)","kvs")); \
- return true; \
- } \
if(!szSubPopupName.isEmpty()) \
{ \
pPopup = pPopup->findChildPopupByName(szSubPopupName); \
@@ -111,11 +106,6 @@
c->warning(__tr2qs_ctx("Subpopup \"%Q.%Q\" does not exists","kvs"),&szPopupName, &szSubPopupName); \
return true; \
} \
- if(pPopup->isLocked()) \
- { \
- c->warning(__tr2qs_ctx("Popup menu self-modification is not allowed (the subpopup is probably open)","kvs")); \
- return true; \
- } \
}
/*
@@ -480,6 +470,92 @@ static bool popup_kvs_cmd_clear(KviKvsModuleCommandCall * c)
}
/*
+ @doc: popup.create
+ @type:
+ command
+ @title:
+ popup.create
+ @syntax:
+ popup.create [-q] <popupname:string>
+ @short:
+ Creates a popup
+ @switches:
+ !sw: -q | --quiet
+ Run quietly: don't print warning and errors
+ @description:
+ Creates a popup named <popupname>; if the popup already exists, a warning is printed.
+ To create a nested popup, use [cmd]popup.addSubPopup[/cmd] instead.
+ @seealso:
+ [cmd]defpopup[/cmd], [cmd]popup.show[/cmd], [cmd]popup.destroy[/cmd], [fnc]popup.exists[/fnc]
+*/
+
+static bool popup_kvs_cmd_create(KviKvsModuleCommandCall * c)
+{
+ QString szPopupName, szSubPopupName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("popupname",KVS_PT_NONEMPTYSTRING,0,szPopupName)
+ KVSM_PARAMETERS_END(c)
+
+ if(KviKvsPopupManager::instance()->lookup(szPopupName))
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs_ctx("The popup \"%Q\" already exists","kvs"),&szPopupName);
+ return true;
+ }
+
+ KviKvsPopupMenu * pMenu = new KviKvsPopupMenu(szPopupName);
+ KviKvsPopupManager::instance()->add(szPopupName,pMenu);
+
+ KviKvsPopupManager::instance()->emitRefresh(szPopupName);
+ return true;
+}
+/*
+ @doc: popup.destroy
+ @type:
+ command
+ @title:
+ popup.destroy
+ @syntax:
+ popup.destroy [-q] <popupname:string>
+ @short:
+ Destroies a popup
+ @switches:
+ !sw: -q | --quiet
+ Run quietly: don't print warning and errors
+ @description:
+ Destroies a popup named <popupname>.
+ To destroy a nested popup, use [cmd]popup.delItem[/cmd] instead.
+ @seealso:
+ [cmd]defpopup[/cmd], [cmd]popup.show[/cmd], [cmd]popup.create[/cmd], [fnc]popup.exists[/fnc]
+*/
+
+static bool popup_kvs_cmd_destroy(KviKvsModuleCommandCall * c)
+{
+ QString szPopupName, szSubPopupName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("popupname",KVS_PT_NONEMPTYSTRING,0,szPopupName)
+ KVSM_PARAMETERS_END(c)
+
+ KviKvsPopupMenu * pPopup = KviKvsPopupManager::instance()->lookup(szPopupName);
+ if(!pPopup)
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs_ctx("Popup \"%Q\" does not exists","kvs"),&szPopupName);
+ return true;
+ }
+ if(pPopup->isLocked())
+ {
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs_ctx("Popup menu self-modification is not allowed (the popup is probably open)","kvs"));
+ return true;
+ }
+
+ KviKvsPopupManager::instance()->remove(szPopupName);
+
+ KviKvsPopupManager::instance()->emitRefresh(szPopupName);
+ return true;
+}
+/*
@doc: popup.delitem
@type:
command
@@ -528,6 +604,65 @@ static bool popup_kvs_cmd_delItem(KviKvsModuleCommandCall * c)
}
/*
+ @doc: popup.exists
+ @type:
+ function
+ @title:
+ $popup.exists
+ @syntax:
+ $popup.exists(<popupname:string>)
+ @short:
+ Returns true if a popup exists
+ @description:
+ Returns true if a popup exists or false otherwise.
+ @seealso:
+ [cmd]defpopup[/cmd], [cmd]popup.show[/cmd], [cmd]popup.create[/cmd], [cmd]popup.destroy[/cmd]
+*/
+
+static bool popup_kvs_fnc_exists(KviKvsModuleFunctionCall * c)
+{
+ QString szPopupName, szSubPopupName;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("popupname",KVS_PT_NONEMPTYSTRING,0,szPopupName)
+ KVSM_PARAMETERS_END(c)
+
+ int iIdx = szPopupName.indexOf(QChar('.'));
+ if(iIdx == 0)
+ {
+ c->warning(__tr2qs_ctx("Empty subpopup name supplied","kvs"));
+ return true;
+ }
+ if(iIdx > 0)
+ {
+ if(iIdx == szPopupName.size())
+ {
+ c->warning(__tr2qs_ctx("Empty subpopup name supplied","kvs"));
+ return true;
+ }
+ szSubPopupName = szPopupName.mid(iIdx+1);
+ szPopupName.truncate(iIdx);
+ }
+ KviKvsPopupMenu * pPopup = KviKvsPopupManager::instance()->lookup(szPopupName);
+ if(!pPopup)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ if(!szSubPopupName.isEmpty())
+ {
+ pPopup = pPopup->findChildPopupByName(szSubPopupName);
+ if(!pPopup)
+ {
+ c->returnValue()->setBoolean(false);
+ return true;
+ }
+ }
+
+ c->returnValue()->setBoolean(true);
+ return true;
+}
+
+/*
@doc: popup.isEmpty
@type:
function
@@ -652,9 +787,12 @@ static bool popup_module_init(KviModule *m)
KVSM_REGISTER_SIMPLE_COMMAND(m,"addSeparator",popup_kvs_cmd_addSeparator);
KVSM_REGISTER_SIMPLE_COMMAND(m,"clear",popup_kvs_cmd_clear);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"create",popup_kvs_cmd_create);
KVSM_REGISTER_SIMPLE_COMMAND(m,"delItem",popup_kvs_cmd_delItem);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"destroy",popup_kvs_cmd_destroy);
KVSM_REGISTER_SIMPLE_COMMAND(m,"show",popup_kvs_cmd_show);
-
+
+ KVSM_REGISTER_FUNCTION(m,"exists",popup_kvs_fnc_exists);
KVSM_REGISTER_FUNCTION(m,"isEmpty",popup_kvs_fnc_isEmpty);
return true;
}