6 #ifndef SWIFT_GUI_GUIAPPLICATION_H
7 #define SWIFT_GUI_GUIAPPLICATION_H
9 #include <QCommandLineOption>
14 #include <QScopedPointer>
21 #include "gui/mainwindowaccess.h"
36 class CLogCategoryList;
40 class CApplicationCloseDialog;
41 class CUpdateInfoDialog;
67 static const QStringList &getLogCategories();
70 static const QString &settingsOrganization();
73 static bool removeAllWindowsSwiftRegistryEntries();
77 const QString &applicationName = executable(),
85 void addWindowStateOption();
88 void addWindowModeOption();
91 void addWindowResetSizeOption();
94 void addWindowScaleSizeOption();
97 Qt::WindowState getWindowState()
const;
103 void processEventsToRefreshGui()
const;
107 void initMainApplicationWidget(QWidget *mainWidget);
110 void addWindowFlags(Qt::WindowFlags flags);
113 QString setExtraWindowTitle(
const QString &extraInfo,
114 QWidget *mainWindowWidget = mainApplicationWidget())
const;
118 void cmdLineErrorMessage(
const QString &text,
const QString &informativeText)
const override;
123 bool isCmdWindowSizeResetSet()
const;
129 std::chrono::milliseconds timeout = std::chrono::milliseconds(0))
override;
131 std::chrono::milliseconds timeout = std::chrono::milliseconds(0))
override;
132 bool displayInOverlayWindow(
const QString &html,
133 std::chrono::milliseconds timeout = std::chrono::milliseconds(0))
override;
138 void splashScreen(
const QPixmap &pixmap);
143 void addMenuForSettingsAndCache(QMenu &menu);
146 void addMenuForStyleSheets(QMenu &menu);
149 void addMenuFile(QMenu &menu);
152 void addMenuInternals(QMenu &menu);
155 void addMenuWindow(QMenu &menu);
161 void addMenuHelp(QMenu &menu);
164 void showHelp(
const QString &context = {})
const;
167 void showHelp(
const QObject *qObject)
const;
170 static bool triggerShowHelp(
const QWidget *widget, QEvent *event);
176 QString getWidgetStyle()
const;
179 bool reloadStyleSheets();
182 bool openStandardWidgetStyleSheet();
185 bool openStandardLogDirectory();
188 bool openStandardCrashDumpDirectory();
191 bool updateFont(
const QString &fontFamily,
const QString &fontSize,
const QString &fontStyle,
192 const QString &fontWeight,
const QString &fontColor);
195 bool updateFont(
const QString &qss);
202 void setMinimumSizeInCharacters(
int widthChars,
int heightChars);
209 QDialog::DialogCode showCloseDialog(QMainWindow *mainWindow, QCloseEvent *closeEvent);
212 void triggerNewVersionCheck(
int delayedMs);
215 void gracefulShutdown()
override;
218 bool toggleStayOnTop();
222 void windowToFront();
224 void windowToFrontBackToggle();
228 void windowMinimizeNormalToggle();
237 void resetWindowGeometryAndState();
244 static void setWindowIcon(
const QPixmap &icon);
247 static QWidget *mainApplicationWidget();
250 void registerMainApplicationWidget(QWidget *mainWidget);
253 bool hasMinimumMappingVersion()
const override;
256 static QMainWindow *mainApplicationWindow();
262 static void exit(
int retcode = 0);
266 static void highDpiScreenSupport(
const QString &scaleFactor = {});
269 static bool isUsingHighDpiScreenSupport();
272 static QScreen *currentScreen();
276 static QRect currentScreenGeometry();
279 static void modalWindowToFront();
283 static double parseScaleFactor(
int argc,
char *argv[]);
286 static QString scaleFactor(
int argc,
char *argv[]);
289 static QString defaultScaleFactorString();
306 bool parsingHookIn()
override;
309 void onCoreFacadeStarted()
override;
312 void onStartUpCompleted()
override;
315 void checkNewVersion(
bool onlyIfNew);
318 QString getFontInfo()
const;
324 QPixmap m_windowIcon;
325 QString m_fontFamily;
327 int m_minWidthChars = -1;
328 int m_minHeightChars = -1;
329 QCommandLineOption m_cmdWindowStateMinimized {
"emptyMinimized" };
330 QCommandLineOption m_cmdWindowMode {
"emptyWindowMode" };
331 QCommandLineOption m_cmdWindowSizeReset {
"emptySizeReset" };
332 QCommandLineOption m_cmdWindowScaleSize {
"emptyScale" };
333 CStyleSheetUtility m_styleSheetUtility {
this };
334 bool m_uiSetupCompleted =
false;
335 bool m_saveMainWidgetState =
true;
336 bool m_frontBack =
true;
337 bool m_normalizeMinimize =
true;
338 QScopedPointer<CSplashScreen> m_splashScreen;
339 components::CUpdateInfoDialog *m_updateDialog =
nullptr;
340 components::CApplicationCloseDialog *m_closeDialog =
348 void settingsChanged();
351 void checkNewVersionMenu();
354 void adjustPalette();
357 void onStyleSheetsChanged();
360 void setCurrentFontValues();
363 void superviseWindowMinSizes();
366 static const QString &fileForWindowGeometryAndStateSettings();
369 static int hashForStateSettingsSchema(
const QMainWindow *window);
GUI application, a specialized version of swift::core::CApplication for GUI applications.
void fontChanged()
Font has been changed.
void setSaveMainWidgetState(bool save)
Save the main widget state?
void alwaysOnTop(bool onTop)
always on top
static QMainWindow * mainApplicationWindow()
Main application window.
void uiObjectTreeReady()
Object tree ready (means ui->setupUi() completed)
void styleSheetsChanged()
Style sheet changed.
Reads and provides style sheets.
Direct acccess to main window`s status bar, info bar and such.
Application
Enumeration of application roles.
static const QPixmap & swift64()
swift icon
Class template for accessing a specific value in the CSettingsCache.
Streamable status message, e.g.
Status messages, e.g. from Core -> GUI.
Value object encapsulating information of a location, kind of simplified CValueObject compliant versi...
SWIFT_GUI_EXPORT swift::gui::CGuiApplication * sGui
Single instance of GUI application object.
High level reusable GUI components.
void registerMetadata()
Register metadata for GUI.
Free functions in swift::misc.
#define SWIFT_GUI_EXPORT
Export a class or function from the library.