Krita Source Code Documentation
Loading...
Searching...
No Matches
kmainwindow.h
Go to the documentation of this file.
1/*
2 This file is part of the KDE libraries
3 Copyright
4 (C) 2000 Reginald Stadlbauer (reggie@kde.org)
5 (C) 1997 Stephan Kulow (coolo@kde.org)
6 (C) 1997-2000 Sven Radej (radej@kde.org)
7 (C) 1997-2000 Matthias Ettrich (ettrich@kde.org)
8 (C) 1999 Chris Schlaeger (cs@kde.org)
9 (C) 2002 Joseph Wenninger (jowenn@kde.org)
10 (C) 2005-2006 Hamish Rodda (rodda@kde.org)
11 (C) 2000-2008 David Faure (faure@kde.org)
12
13 SPDX-License-Identifier: LGPL-2.0-only
14
15*/
16
17#ifndef KMAINWINDOW_H
18#define KMAINWINDOW_H
19
20#include <kritawidgetutils_export.h>
21
22#include <QMainWindow>
23#include <QMetaClassInfo>
24
25class QMenu;
26class KConfig;
27class KConfigGroup;
30class KisToolBar;
31
32// internal, not public API, may change any time
33#define XMLGUI_DECLARE_PRIVATE(classname) \
34 inline classname ## Private *k_func() { return reinterpret_cast<classname ## Private *>(k_ptr); } \
35 inline const classname ## Private *k_func() const { return reinterpret_cast<classname ## Private *>(k_ptr); } \
36 friend class classname ## Private;
37
88class KRITAWIDGETUTILS_EXPORT KisKMainWindow : public QMainWindow
89{
90 friend class KMWSessionManager;
91 friend class DockResizeListener;
93 Q_OBJECT
94 Q_PROPERTY(bool hasMenuBar READ hasMenuBar)
95 Q_PROPERTY(bool autoSaveSettings READ autoSaveSettings)
96 Q_PROPERTY(QString autoSaveGroup READ autoSaveGroup)
97
98public:
131 explicit KisKMainWindow(QWidget *parent = 0, Qt::WindowFlags f = Qt::WindowFlags());
132
139 ~KisKMainWindow() override;
140
146 static bool canBeRestored(int number);
147
155 static const QString classNameOfToplevel(int number);
156
194 bool restore(int number, bool show = true);
195
199 bool hasMenuBar();
200
204 static QList<KisKMainWindow *> memberList();
205
216 KisToolBar *toolBar(const QString &name = QString());
217
221 QList<KisToolBar *> toolBars() const;
222
254 void setAutoSaveSettings(const QString &groupName = QLatin1String("MainWindow"),
255 bool saveWindowSize = true);
256
262 void setAutoSaveSettings(const KConfigGroup &group,
263 bool saveWindowSize = true);
264
269 void resetAutoSaveSettings();
270
275 bool autoSaveSettings() const;
276
286 QString autoSaveGroup() const;
287
294 KConfigGroup autoSaveConfigGroup() const;
295
304 virtual void applyMainWindowSettings(const KConfigGroup &config);
305
312 void saveMainWindowSettings(KConfigGroup &config);
313
318 QString dbusName() const;
319
320public Q_SLOTS:
321
341 void appHelpActivated(void);
342
350 void setSettingsDirty();
351
352protected:
358 bool event(QEvent *event) override;
359
367 void closeEvent(QCloseEvent *) override;
368
402 virtual bool queryClose();
403
415 virtual void saveProperties(KConfigGroup &) {}
416
422 virtual void readProperties(const KConfigGroup &) {}
423
440 virtual void saveGlobalProperties(KConfig *sessionConfig);
441
447 virtual void readGlobalProperties(KConfig *sessionConfig);
448 void savePropertiesInternal(KConfig *, int);
449 bool readPropertiesInternal(KConfig *, int);
450
454 bool settingsDirty() const;
455
456 virtual bool windowsLayoutSavingAllowed() const;
457
458protected Q_SLOTS:
459
481 void saveAutoSaveSettings();
482
483protected:
484 KisKMainWindow(KisKMainWindowPrivate &dd, QWidget *parent, Qt::WindowFlags f);
485
487private:
488 Q_PRIVATE_SLOT(k_func(), void _k_slotSettingsChanged(int))
489 Q_PRIVATE_SLOT(k_func(), void _k_slotSaveAutoSaveSize())
490};
491
498#define KDE_RESTORE_MAIN_WINDOWS_NUM_TEMPLATE_ARGS 3
499
530template <typename T>
532{
533 for (int n = 1; KisKMainWindow::canBeRestored(n); ++n) {
534 const QString className = KisKMainWindow::classNameOfToplevel(n);
535 if (className == QLatin1String(T::staticMetaObject.className())) {
536 (new T)->restore(n);
537 }
538 }
539}
540
541template <typename T0, typename T1>
543{
544 const char *classNames[2];
545 classNames[0] = T0::staticMetaObject.className();
546 classNames[1] = T1::staticMetaObject.className();
547 for (int n = 1; KisKMainWindow::canBeRestored(n); ++n) {
548 const QString className = KisKMainWindow::classNameOfToplevel(n);
549 if (className == QLatin1String(classNames[0])) {
550 (new T0)->restore(n);
551 } else if (className == QLatin1String(classNames[1])) {
552 (new T1)->restore(n);
553 }
554 }
555}
556
557template <typename T0, typename T1, typename T2>
559{
560 const char *classNames[3];
561 classNames[0] = T0::staticMetaObject.className();
562 classNames[1] = T1::staticMetaObject.className();
563 classNames[2] = T2::staticMetaObject.className();
564 for (int n = 1; KisKMainWindow::canBeRestored(n); ++n) {
565 const QString className = KisKMainWindow::classNameOfToplevel(n);
566 if (className == QLatin1String(classNames[0])) {
567 (new T0)->restore(n);
568 } else if (className == QLatin1String(classNames[1])) {
569 (new T1)->restore(n);
570 } else if (className == QLatin1String(classNames[2])) {
571 (new T2)->restore(n);
572 }
573 }
574}
575
576#endif
KDE top level main window
Definition kmainwindow.h:89
static const QString classNameOfToplevel(int number)
static bool canBeRestored(int number)
KisKMainWindowPrivate *const k_ptr
virtual void readProperties(const KConfigGroup &)
Q_PRIVATE_SLOT(k_func(), void _k_slotSettingsChanged(int)) Q_PRIVATE_SLOT(k_func()
Floatable toolbar with auto resize.
Definition ktoolbar.h:47
void kRestoreMainWindows()
#define XMLGUI_DECLARE_PRIVATE(classname)
Definition kmainwindow.h:33