KVIrc 5.2.6
Developer APIs
KviMainWindow.h
Go to the documentation of this file.
1#ifndef _KVI_FRAME_H_
2#define _KVI_FRAME_H_
3//=============================================================================
4//
5// File : KviMainWindow.h
6// Creation date : Sun Jun 18 2000 17:59:02 CEST by Szymon Stefanek
7//
8// This file is part of the KVIrc IRC client distribution
9// Copyright (C) 2000-2010 Szymon Stefanek (pragma at kvirc dot net)
10//
11// This program is FREE software. You can redistribute it and/or
12// modify it under the terms of the GNU General Public License
13// as published by the Free Software Foundation; either version 2
14// of the License, or (at your option) any later version.
15//
16// This program is distributed in the HOPE that it will be USEFUL,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19// See the GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program. If not, write to the Free Software Foundation,
23// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24//
25//=============================================================================
26
27//
28// KviMainWindow:
29// The main window for the KVIrc application
30//
31
32#include "kvi_settings.h"
33
34#include "KviTalMainWindow.h"
35
36#include <algorithm>
37#include <list>
38#include <unordered_set>
39#include <vector>
40
44class KviIrcContext;
45class KviMenuBar;
46class KviMexToolBar;
47class KviStatusBar;
48class KviTrayIcon;
49class KviWindow;
51class KviWindowStack;
52class QMenu;
53class QSplitter;
54class QShortcut;
55class QString;
56
58{
59 friend class KviApplication;
60 friend class KviConsoleWindow;
61 friend class KviIrcConnection;
62 friend class KviIrcContext;
63 friend class KviIrcServerParser;
64 friend class KviLagMeter;
65 friend class KviMexToolBar;
66 friend class KviToolBar;
67 friend class KviUserListView;
68 friend class KviUserListViewArea;
69 friend class KviWindow;
70 friend class KviWindowStack;
71 Q_OBJECT
72public:
73 KviMainWindow(QWidget * pParent);
75
76protected:
77 // subwindows
78 QSplitter * m_pSplitter; // the frame is split vertically and thus can host widgets
79 KviMenuBar * m_pMenuBar; // the main menu bar
80 KviWindowStack * m_pWindowStack; // the mdi manager widget (child of the splitter)
81 std::unordered_set<KviMexToolBar *> m_pModuleExtensionToolBarList; // the module extension toolbars
82 KviWindowListBase * m_pWindowList = nullptr; // the WindowList
84 // the mdi workspace child windows
85 std::list<KviWindow *> m_WinList; // the main list of windows
86 KviIrcContext * m_pActiveContext = nullptr; // the context of the m_pActiveWindow
87 // other
88 KviTrayIcon * m_pTrayIcon = nullptr; // the frame's dock extension: this should be prolly moved ?
89 std::vector<QShortcut *> m_pAccellerators; // global application accellerators
90public:
91 // the mdi manager: handles mdi children
93 // the splitter is the central widget for this frame
94 QSplitter * splitter() const { return m_pSplitter; }
95 // KviWindowListBase is the base class for KviTreeWindowList and the KviClassicWindowList
97 // well.. the menu bar :D
98 KviMenuBar * mainMenuBar() const { return m_pMenuBar; }
100 // this function may return nullptr if the active window has no irc context
102 // shortcut to a = activeContext(); return a ? a->connection() : 0
103 KviIrcConnection * activeConnection();
104 // The list of the windows belonging to this frame
105 // Note that the windows may be also undocked, but they are still owned by the frame
106 std::list<KviWindow *> & windowList() { return m_WinList; }
107 // Sets the specified window to be the active one
108 // Raises it and focuses it
109 void setActiveWindow(KviWindow * wnd);
110 // Adds a new KviWindow to this frame
111 // This should be done just after the KviWindow constructor has returned
112 // If bShow is false then the window is not explicitly shown
113 // otherwise it is set as active window.
114 void addWindow(KviWindow * wnd, bool bShow = true); // public for modules
115 void closeWindow(KviWindow * wnd);
116 // Checks if a specified window is still existing in this frame child
117 // window list. This is useful for asynchronous functions
118 // that keep a window pointer and need to ensure that it is still
119 // valid after an uncontrolled delay. (Think of a /timer implementation)
120 bool windowExists(KviWindow * wnd) const { return (std::find(m_WinList.begin(), m_WinList.end(), wnd) != m_WinList.end()); }
121 // The number of consoles in this frame
122 int consoleCount();
123 // Creates a new console window. DON'T use the KviConsoleWindow constructor directly.
124 // (The script creation events are triggered from here)
125 KviConsoleWindow * createNewConsole(bool bFirstInFrame = false, bool bShowIt = true);
126 // Returns the first available console.
127 // There is almost always an available console.
128 // Exceptions are the startup and the shutdown (see activeWindow())
129 KviConsoleWindow * firstConsole();
130 // Returns the first console that has no connection in progress
131 // This function CAN return nullptr if all the consoles are connected
132 KviConsoleWindow * firstNotConnectedConsole();
133 // this is explicitly dedicated to the TrayIcon module
135 // returns the dockExtension applet. Useful for calling refresh() when
136 // some particular event happens
137 KviTrayIcon * trayIcon() const { return m_pTrayIcon; }
138 // helper for saving the window properties
139 void saveWindowProperties(KviWindow * wnd, const QString & szSection);
140 // finds the module extension toolbar with the specified identifier
141 // see KviModuleExtension.h and KviMexToolBar.h
142 KviMexToolBar * moduleExtensionToolBar(int extensionId);
143 // Helper to fill the toolbars popup
144 // it is used by KviToolBar and KviMenuBar
145 void fillToolBarsPopup(QMenu * p);
146 void fillIconSizePopup(QMenu * p);
147 // Set the size of the icons used by the whole app
148 // Allowed sizes are 16, 22, 32 and 48
149 void setIconSize(unsigned int uSize);
150 void setButtonStyle(unsigned int uStyle);
151 // allows scripts and actions to override builtin accellerators, avoiding ambiguous events
152 void freeAccelleratorKeySequence(const QString & key);
153 // called by children windows when they have updated their titles.
154 void updateWindowTitle(KviWindow * wnd);
155public slots:
156 void newConsole();
157 void executeInternalCommand(int index);
158 void toggleStatusBar();
159 void toggleMenuBar();
160 void toggleWindowList();
161 void customizeToolBars();
162
163protected:
168
169 void createWindowList();
170 void recreateWindowList();
171
172 void dockWindow(KviWindow * wnd);
173 void undockWindow(KviWindow * wnd);
174
175 // called by KviWindow
177 void windowActivated(KviWindow * wnd, bool bForce = false);
178
185 void childWindowSelectionStateChange(KviWindow * pWnd, bool bGotSelectionNow);
186
187 void closeEvent(QCloseEvent * e) override;
188 void hideEvent(QHideEvent * e) override;
189 void resizeEvent(QResizeEvent * e) override;
190 void moveEvent(QMoveEvent * e) override;
191 bool focusNextPrevChild(bool next) override;
192 void changeEvent(QEvent * event) override;
193 void contextMenuEvent(QContextMenuEvent * event) override;
194
196 void installAccelerators();
197protected slots:
198 void switchToNextWindow();
199 void switchToPrevWindow();
204 void closeActiveWindow();
205
206 void accelActivated();
207 void toolbarsPopupSelected(QAction * pAction);
208 void iconSizePopupSelected(QAction * pAction);
209 void buttonStylePopupSelected(QAction * pAction);
210signals:
211 void activeWindowChanged(); // almost never 0.. but may be
212 void activeContextChanged(); // may be 0!
213 void activeContextStateChanged(); // emitted only when the active context is non 0 and it changes state
219 void activeWindowSelectionStateChanged(bool bGotSelectionNow);
220
221protected:
222 void applyOptions();
223
224private:
227};
228
229#ifndef _KVI_FRAME_CPP_
231#endif
232
233#endif //_KVI_FRAME_H_
KVIRC_API KviMainWindow * g_pMainWindow
Definition KviMainWindow.cpp:92
Toolkit Abstraction Layer class.
Definition KviConfigurationFile.h:50
Definition KviConsoleWindow.h:74
An abstraction of a connection to an IRC server.
Definition KviIrcConnection.h:97
Definition KviIrcContext.h:60
Definition KviMainWindow.h:58
std::list< KviWindow * > m_WinList
Definition KviMainWindow.h:85
KviTrayIcon * trayIcon() const
Definition KviMainWindow.h:137
friend class KviIrcServerParser
Definition KviMainWindow.h:63
friend class KviUserListViewArea
Definition KviMainWindow.h:68
void restoreModuleExtensionToolBars()
Definition KviMainWindow.cpp:229
friend class KviIrcConnection
Definition KviMainWindow.h:61
void windowActivated(KviWindow *wnd, bool bForce=false)
Definition KviMainWindow.cpp:728
void newConsole()
Definition KviMainWindow.cpp:605
QSplitter * splitter() const
Definition KviMainWindow.h:94
void closeEvent(QCloseEvent *e) override
Definition KviMainWindow.cpp:801
void activeContextStateChanged()
void activeContextChanged()
void updateWindowTitle(KviWindow *wnd)
Definition KviMainWindow.cpp:1156
friend class KviLagMeter
Definition KviMainWindow.h:64
void activeConnectionNickNameChanged()
void hideEvent(QHideEvent *e) override
Definition KviMainWindow.cpp:867
friend class KviToolBar
Definition KviMainWindow.h:66
void resizeEvent(QResizeEvent *e) override
Definition KviMainWindow.cpp:886
void installAccelerators()
Definition KviMainWindow.cpp:266
KviMenuBar * m_pMenuBar
Definition KviMainWindow.h:79
void contextMenuEvent(QContextMenuEvent *event) override
Definition KviMainWindow.cpp:893
friend class KviUserListView
Definition KviMainWindow.h:67
void childContextStateChange(KviIrcContext *c)
Definition KviMainWindow.cpp:681
void fillIconSizePopup(QMenu *p)
void toolbarsPopupSelected(QAction *pAction)
Definition KviMainWindow.cpp:1091
KviStatusBar * mainStatusBar() const
Definition KviMainWindow.h:99
void createWindowList()
Definition KviMainWindow.cpp:1201
void activeConnectionUserModeChanged()
void iconSizePopupSelected(QAction *pAction)
Definition KviMainWindow.cpp:1113
KviWindowStack * windowStack() const
Definition KviMainWindow.h:92
void childConnectionLagChange(KviIrcConnection *c)
Definition KviMainWindow.cpp:688
bool windowExists(KviWindow *wnd) const
Definition KviMainWindow.h:120
void undockWindow(KviWindow *wnd)
Definition KviMainWindow.cpp:591
void customizeToolBars()
Definition KviMainWindow.cpp:1086
void moveEvent(QMoveEvent *e) override
Definition KviMainWindow.cpp:930
void closeActiveWindow()
Definition KviMainWindow.cpp:409
KviWindowStack * m_pWindowStack
Definition KviMainWindow.h:80
KviWindowListBase * windowListWidget() const
Definition KviMainWindow.h:96
void setTrayIcon(KviTrayIcon *e)
Definition KviMainWindow.h:134
friend class KviApplication
Definition KviMainWindow.h:59
KviWindowListBase * m_pWindowList
Definition KviMainWindow.h:82
void toggleStatusBar()
Definition KviMainWindow.cpp:955
void activeWindowSelectionStateChanged(bool bGotSelectionNow)
void applyOptions()
Definition KviMainWindow.cpp:940
void switchToPrevHighlightedWindow()
Definition KviMainWindow.cpp:1256
KviTrayIcon * m_pTrayIcon
Definition KviMainWindow.h:88
void restoreToolBarPositions()
Definition KviMainWindow.cpp:1179
KviIrcContext * m_pActiveContext
Definition KviMainWindow.h:86
void executeInternalCommand(int index)
Definition KviMainWindow.cpp:344
void childConnectionNickNameChange(KviIrcConnection *c)
Definition KviMainWindow.cpp:704
std::list< KviWindow * > & windowList()
Definition KviMainWindow.h:106
void switchToNextWindow()
Definition KviMainWindow.cpp:1251
void changeEvent(QEvent *event) override
Definition KviMainWindow.cpp:761
void updatePseudoTransparency()
Definition KviMainWindow.cpp:898
void buttonStylePopupSelected(QAction *pAction)
Definition KviMainWindow.cpp:1127
friend class KviIrcContext
Definition KviMainWindow.h:62
friend class KviConsoleWindow
Definition KviMainWindow.h:60
void toggleWindowList()
Definition KviMainWindow.cpp:1010
void dockWindow(KviWindow *wnd)
Definition KviMainWindow.cpp:582
void saveModuleExtensionToolBars()
Definition KviMainWindow.cpp:243
void childWindowCloseRequest(KviWindow *wnd)
Definition KviMainWindow.cpp:659
QSplitter * m_pSplitter
Definition KviMainWindow.h:78
void activeWindowChanged()
void accelActivated()
Definition KviMainWindow.cpp:339
void activeConnectionLagChanged()
KviIrcContext * activeContext() const
Definition KviMainWindow.h:101
void activeConnectionAwayStateChanged()
void setButtonStyle(unsigned int uStyle)
Definition KviMainWindow.cpp:1308
KviMenuBar * mainMenuBar() const
Definition KviMainWindow.h:98
void switchToNextHighlightedWindow()
Definition KviMainWindow.cpp:1261
friend class KviWindow
Definition KviMainWindow.h:69
void setIconSize(unsigned int uSize)
Definition KviMainWindow.cpp:1276
void switchToPrevWindow()
Definition KviMainWindow.cpp:1246
void switchToPrevWindowInContext()
Definition KviMainWindow.cpp:1266
void freeAccelleratorKeySequence(const QString &key)
Definition KviMainWindow.cpp:322
void toggleMenuBar()
Definition KviMainWindow.cpp:971
void childConnectionAwayStateChange(KviIrcConnection *c)
Definition KviMainWindow.cpp:712
void recreateWindowList()
Definition KviMainWindow.cpp:1228
void childConnectionServerInfoChange(KviIrcConnection *c)
Definition KviMainWindow.cpp:696
void saveToolBarPositions()
Definition KviMainWindow.cpp:1169
KviStatusBar * m_pStatusBar
Definition KviMainWindow.h:83
void switchToNextWindowInContext()
Definition KviMainWindow.cpp:1271
void childConnectionUserModeChange(KviIrcConnection *c)
Definition KviMainWindow.cpp:720
std::vector< QShortcut * > m_pAccellerators
Definition KviMainWindow.h:89
void registerModuleExtensionToolBar(KviMexToolBar *t)
Definition KviMainWindow.cpp:219
friend class KviWindowStack
Definition KviMainWindow.h:70
void unregisterModuleExtensionToolBar(KviMexToolBar *t)
Definition KviMainWindow.cpp:224
std::unordered_set< KviMexToolBar * > m_pModuleExtensionToolBarList
Definition KviMainWindow.h:81
KviMainWindow(QWidget *pParent)
Definition KviMainWindow.cpp:94
bool focusNextPrevChild(bool next) override
Definition KviMainWindow.cpp:1140
void childWindowSelectionStateChange(KviWindow *pWnd, bool bGotSelectionNow)
Definition KviMainWindow.cpp:674
void activeConnectionServerInfoChanged()
friend class KviMexToolBar
Definition KviMainWindow.h:65
Definition KviMenuBar.h:45
Definition KviMexToolBar.h:33
Status Bar class.
Definition KviStatusBar.h:116
KviTalMainWindow(QWidget *pParent, const char *pcName)
Constructs the mainwindow object.
Definition KviTalMainWindow.cpp:39
The KviTrayIcon class.
Definition KviTrayIcon.h:36
Definition KviWindowListBase.h:78
Handles all docked KviWindow windows.
Definition KviWindowStack.h:47
Base class for all windows in KVIrc.
Definition KviWindow.h:75
#define t
Definition detector.cpp:85
#define e
Definition detector.cpp:70
#define p
Definition detector.cpp:81
This file contains compile time settings.
#define KVIRC_API
Definition kvi_settings.h:127