aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2015-08-02 02:27:16 +0200
committerGravatar Szymon Tomasz Stefanek2015-08-02 02:27:16 +0200
commitf8cce3644b7ebbec6718ad0c082474403f3448aa (patch)
tree17842ddb76e85170d48fc749461ee8f3f53ecb51 /src/modules
parentFixes #1498 (diff)
downloadKVIrc-f8cce3644b7ebbec6718ad0c082474403f3448aa.tar.gz
KVIrc-f8cce3644b7ebbec6718ad0c082474403f3448aa.tar.bz2
KVIrc-f8cce3644b7ebbec6718ad0c082474403f3448aa.zip
Implemented options.close. Closes #1397
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/options/libkvioptions.cpp57
1 files changed, 56 insertions, 1 deletions
diff --git a/src/modules/options/libkvioptions.cpp b/src/modules/options/libkvioptions.cpp
index a3d15a060..d818da6be 100644
--- a/src/modules/options/libkvioptions.cpp
+++ b/src/modules/options/libkvioptions.cpp
@@ -186,7 +186,7 @@ static bool options_kvs_cmd_pages(KviKvsModuleCommandCall * c)
@short:
Shows a single options page
@syntax:
- options.edit <"options page class name">
+ options.edit <options_page_class_name:string>
@description:
Shows an options page as toplevel dialog.
The available option pages can be listed by using [cmd]options.pages[/cmd].
@@ -270,11 +270,66 @@ static bool options_kvs_fnc_isdialog(KviKvsModuleFunctionCall * c)
return true;
}
+
+/*
+ @doc: options.close
+ @type:
+ command
+ @title:
+ options.close
+ @short:
+ Close an options dialog
+ @syntax:
+ options.close [options_group_or_page_class_name]
+ @description:
+ Closes the KVIrc options dialog for the specified options group
+ or containing the specified options page.
+ If [options_group] is omitted, the option group "general" is assumed.
+ This command is exported by the "options" module.
+ @seealso:
+ [fnc]$options.isDialog[/fnc]
+*/
+
+
+static bool options_kvs_cmd_close(KviKvsModuleCommandCall * c)
+{
+ QString szGroup;
+ KVSM_PARAMETERS_BEGIN(c)
+ KVSM_PARAMETER("options_group",KVS_PT_STRING,KVS_PF_OPTIONAL,szGroup)
+ KVSM_PARAMETERS_END(c)
+ if(szGroup.isEmpty())
+ szGroup = "general";
+
+ OptionsDialog * d = g_pOptionsDialogDict->find(szGroup);
+ if(d)
+ {
+ d->close();
+ return true;
+ }
+
+ OptionsWidgetInstanceEntry * e = g_pOptionsInstanceManager->findInstanceEntry(szGroup.toUtf8().data());
+ if(!e)
+ return true;
+
+ if(!e->pWidget)
+ return true; // not open
+
+ QWidget * w = e->pWidget->topLevelWidget();
+ if(!w)
+ return true; // hm?
+
+ w->deleteLater();
+
+ return true;
+}
+
+
static bool options_module_init(KviModule * m)
{
g_pOptionsInstanceManager = new OptionsInstanceManager();
KVSM_REGISTER_SIMPLE_COMMAND(m,"dialog",options_kvs_cmd_dialog);
+ KVSM_REGISTER_SIMPLE_COMMAND(m,"close",options_kvs_cmd_close);
KVSM_REGISTER_SIMPLE_COMMAND(m,"save",options_kvs_cmd_save);
KVSM_REGISTER_SIMPLE_COMMAND(m,"pages",options_kvs_cmd_pages);
KVSM_REGISTER_SIMPLE_COMMAND(m,"edit",options_kvs_cmd_edit);