Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
lua_debugger_pause.h
Go to the documentation of this file.
1/* lua_debugger_pause.h
2 *
3 * Wireshark - Network traffic analyzer
4 * By Gerald Combs <[email protected]>
5 * Copyright 1998 Gerald Combs
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
16#ifndef LUA_DEBUGGER_PAUSE_H
17#define LUA_DEBUGGER_PAUSE_H
18
19#include <QList>
20#include <QObject>
21#include <QPointer>
22#include <QString>
23#include <QWidget>
24
27class QAction;
28class QEvent;
29class QEventLoop;
30class QPaintEvent;
31
32/* ===== pause_controller ===== */
33
39class LuaDebuggerPauseController : public QObject
40{
41 public:
43
44 bool hasActiveLoop() const { return activeLoop_ != nullptr; }
45 QEventLoop *activeLoop() const { return activeLoop_; }
46 void setActiveLoop(QEventLoop *loop) { activeLoop_ = loop; }
47 void clearActiveLoop() { activeLoop_ = nullptr; }
48 void quitLoop();
49
50 void beginOuterFreeze();
51 void endFreeze();
52
53 private:
54 LuaDebuggerDialog *host_ = nullptr;
55 QEventLoop *activeLoop_ = nullptr;
56
57 QList<QPointer<QWidget>> frozenTopLevels_;
58 QList<QPointer<QAction>> frozenActions_;
59 QPointer<QWidget> frozenCentralWidget_;
60 QPointer<LuaDebuggerPauseOverlay> pauseOverlay_;
61 QObject *pauseInputFilter_ = nullptr;
62 bool pauseUnfrozen_ = true;
63};
64
65/* ===== pause_overlay ===== */
66
99class LuaDebuggerPauseOverlay : public QWidget
100{
101 Q_OBJECT
102
103 public:
104 explicit LuaDebuggerPauseOverlay(QWidget *parent);
105 ~LuaDebuggerPauseOverlay() override;
106
107 protected:
108 void paintEvent(QPaintEvent *event) override;
109 bool eventFilter(QObject *obj, QEvent *event) override;
110
111 private:
112 QString title_text_;
113 QString subtext_text_;
114};
115
116/* ===== pause_key_filter ===== */
117
122class LuaDebuggerPauseInputFilter : public QObject
123{
124 public:
125 explicit LuaDebuggerPauseInputFilter(QWidget *debugger_dialog, QWidget *main_window, QObject *parent = nullptr);
126
127 bool eventFilter(QObject *watched, QEvent *event) override;
128
129 private:
130 bool isAllowedDuringPause(const QWidget *w) const;
131
132 QWidget *debugger_dialog_;
133 QWidget *main_window_;
134};
135
136#endif
Top-level dialog hosting the Lua debugger UI components.
Definition lua_debugger_dialog.h:165
Owns the nested pause QEventLoop pointer and the application-wide freeze (disabled top-levels,...
Definition lua_debugger_pause.h:40
Definition lua_debugger_pause.h:123
Translucent overlay shown over the main window while the Lua debugger is paused.
Definition lua_debugger_pause.h:100