aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar IceN9ne2016-11-20 17:49:17 -0500
committerGravatar IceN9ne2016-11-20 17:50:09 -0500
commitb55622108176b6201520cd07c97fcefdf696eff7 (patch)
treeee97bb316a34f0310a25578ad5d357a3c8000757 /src
parentnormalize File: , Size: and Mime: formatting (diff)
downloadKVIrc-b55622108176b6201520cd07c97fcefdf696eff7.tar.gz
KVIrc-b55622108176b6201520cd07c97fcefdf696eff7.tar.bz2
KVIrc-b55622108176b6201520cd07c97fcefdf696eff7.zip
Add split view commands window.splitView and window.unsplitView, as well as function $window.isSplitView
Diffstat (limited to 'src')
-rw-r--r--src/kvirc/ui/KviChannelWindow.h3
-rw-r--r--src/modules/window/libkviwindow.cpp102
2 files changed, 104 insertions, 1 deletions
diff --git a/src/kvirc/ui/KviChannelWindow.h b/src/kvirc/ui/KviChannelWindow.h
index ad0360b79..a10d818dd 100644
--- a/src/kvirc/ui/KviChannelWindow.h
+++ b/src/kvirc/ui/KviChannelWindow.h
@@ -1007,13 +1007,14 @@ protected:
virtual void resizeEvent(QResizeEvent *);
virtual void closeEvent(QCloseEvent * pEvent);
-private slots:
+public slots:
/**
* \brief Toggles the double view mode
* \return void
*/
void toggleDoubleView();
+private slots:
/**
* \brief Toggles the userlist view
* \return void
diff --git a/src/modules/window/libkviwindow.cpp b/src/modules/window/libkviwindow.cpp
index 02cd13728..b6e86de70 100644
--- a/src/modules/window/libkviwindow.cpp
+++ b/src/modules/window/libkviwindow.cpp
@@ -221,6 +221,78 @@ static bool window_kvs_cmd_undock(KviKvsModuleCommandCall * c)
}
/*
+ @doc: window.splitView
+ @type:
+ command
+ @title:
+ window.splitView
+ @short:
+ Splits the view of a channel window
+ @syntax:
+ window.splitView [-q] [window_id]
+ @description:
+ Splits the view of a channel specified by window_id. If window_id is missing then
+ the current window is split. If the specified window was already split then no
+ operation is performed. If the specified window does not exist or is not a channel
+ window then a warning is printed unless the -q switch is used.
+ @seealso:
+ [cmd]window.unsplitView[/cmd], [fnc]$window.isSplitView[/fnc]
+*/
+
+static bool window_kvs_cmd_splitView(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd && pWnd->type() == KviWindow::Channel)
+ {
+ KviChannelWindow * chan = (KviChannelWindow *)pWnd;
+ if(!chan->messageView())
+ chan->toggleDoubleView();
+ }
+ else
+ {
+ if(!c->hasSwitch('q', "quiet"))
+ c->warning(__tr2qs("The window with ID '%s' ins't a channel window."), szWnd.toUtf8().data());
+ }
+ return true;
+}
+
+/*
+ @doc: window.unsplitView
+ @type:
+ command
+ @title:
+ window.unsplitView
+ @short:
+ Unsplits the view of a channel window
+ @syntax:
+ window.splitView [-q] [window_id]
+ @description:
+ Unsplits the view of a channel specified by window_id. If window_id is missing then
+ the current window is unsplit. If the specified window wasn't already split then no
+ operation is performed. If the specified window does not exist or is not a channel
+ window then a warning is printed unless the -q switch is used.
+ @seealso:
+ [cmd]window.unsplitView[/cmd], [fnc]$window.isSplitView[/fnc]
+*/
+
+static bool window_kvs_cmd_unsplitView(KviKvsModuleCommandCall * c)
+{
+ GET_KVS_WINDOW_ID
+ if(pWnd && pWnd->type() == KviWindow::Channel)
+ {
+ KviChannelWindow * chan = (KviChannelWindow *)pWnd;
+ if(chan->messageView())
+ chan->toggleDoubleView();
+ }
+ else
+ {
+ if(!c->hasSwitch('q', "quiet"))
+ c->warning(__tr2qs("The window with ID '%s' ins't a channel window."), szWnd.toUtf8().data());
+ }
+ return true;
+}
+
+/*
@doc: window.activate
@type:
command
@@ -395,6 +467,33 @@ static bool window_kvs_fnc_isDocked(KviKvsModuleFunctionCall * c)
}
/*
+ @doc: window.isSplitView
+ @type:
+ function
+ @title:
+ $window.isSplitView
+ @short:
+ Checks if a window is currently in split view mode
+ @syntax:
+ $window.isSplitView
+ $window.isSplitView(<window_id>)
+ @description:
+ Returns [b]1[/b] if the window specified by <window_id> is in split view mode and [b]0[/b] otherwise.
+ This is only intended to apply to channel windows. If the specified window doesn't exist
+ or is not a channel window then 0 is returned.
+ @seealso:
+ [cmd]window.splitView[/cmd], [cmd]window.unsplitView[/cmd]
+*/
+static bool window_kvs_fnc_isSplitView(KviKvsModuleFunctionCall * c)
+{
+ c->returnValue()->setBoolean(false);
+ GET_KVS_FNC_WINDOW_ID
+ if(pWnd && pWnd->type() == KviWindow::Channel)
+ c->returnValue()->setBoolean(((KviChannelWindow *)pWnd)->messageView() ? true : false);
+ return true;
+}
+
+/*
@doc: window.hasInput
@type:
function
@@ -1505,6 +1604,7 @@ static bool window_module_init(KviModule * m)
KVSM_REGISTER_FUNCTION(m, "hasUserFocus", window_kvs_fnc_hasUserFocus);
KVSM_REGISTER_FUNCTION(m, "hasOutput", window_kvs_fnc_hasOutput);
KVSM_REGISTER_FUNCTION(m, "isDocked", window_kvs_fnc_isDocked);
+ KVSM_REGISTER_FUNCTION(m, "isSplitView", window_kvs_fnc_isSplitView);
KVSM_REGISTER_FUNCTION(m, "isMinimized", window_kvs_fnc_fake); // compat only
KVSM_REGISTER_FUNCTION(m, "isMaximized", window_kvs_fnc_fake); // compat only
KVSM_REGISTER_FUNCTION(m, "caption", window_kvs_fnc_caption);
@@ -1522,6 +1622,8 @@ static bool window_module_init(KviModule * m)
KVSM_REGISTER_SIMPLE_COMMAND(m, "clearOutput", window_kvs_cmd_clearOutput);
KVSM_REGISTER_SIMPLE_COMMAND(m, "dock", window_kvs_cmd_dock);
KVSM_REGISTER_SIMPLE_COMMAND(m, "undock", window_kvs_cmd_undock);
+ KVSM_REGISTER_SIMPLE_COMMAND(m, "splitView", window_kvs_cmd_splitView);
+ KVSM_REGISTER_SIMPLE_COMMAND(m, "unsplitView", window_kvs_cmd_unsplitView);
KVSM_REGISTER_SIMPLE_COMMAND(m, "minimize", window_kvs_cmd_fake);
KVSM_REGISTER_SIMPLE_COMMAND(m, "maximize", window_kvs_cmd_fake);
KVSM_REGISTER_SIMPLE_COMMAND(m, "restore", window_kvs_cmd_fake);