/* This file is part of the KDE project SPDX-FileCopyrightText: 1999 Simon Hausmann SPDX-FileCopyrightText: 1999 David Faure SPDX-License-Identifier: LGPL-2.0-or-later */ #ifndef __MAINWINDOW_H #define __MAINWINDOW_H #include #include #include class QString; namespace KParts { class MainWindowPrivate; /*! * \class KParts::MainWindow * \inheaderfile KParts/MainWindow * \inmodule KParts * * \brief A KPart-aware main window, whose user interface is described in XML. * * It implements all internal interfaces in the case of a * KMainWindow as host: the builder and servant interface (for menu * merging). * * Inherit your main window from this class * and make sure to call setXMLFile() and setupGUI() before you * call createGUI() on the KPart. * * For example: * \code * setCentralWidget(m_part->widget()); * setXMLFile(QStringLiteral("appui.rc")); * setupGUI(ToolBar | Keys | StatusBar | Save); // Never Create flag here * createGUI(m_part); * \endcode * * \warning You should not pass the Default flag set to setupGUI(), * since it contains the Create flag, which is not supposed to be used * from this class. * \sa KXmlGuiWindow::Create * \sa setupGUI() * \sa createGUI() * */ class KPARTS_EXPORT MainWindow : public KXmlGuiWindow, virtual public PartBase { Q_OBJECT public: /*! * Constructor, same signature as KMainWindow. */ explicit MainWindow(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); ~MainWindow() override; public Q_SLOTS: void configureToolbars() override; protected Q_SLOTS: /*! * Create the GUI (by merging the host's and the active part's) * You _must_ call this in order to see any GUI being created. * * In a main window with multiple parts being shown (e.g. as in Konqueror) * you need to connect this slot to the * KPartManager::activePartChanged() signal * * \a part The active part (set to 0L if no part). */ void createGUI(KParts::Part *part); /*! * Enable or disable the automatic setting of window titles by the part's document title. * By default, a part always changes the window title when the document changes. * * \note This value must be set before calling createGUI(). * * \a enabled boolean to enable or disable the window title handling * \since 5.24 */ void setWindowTitleHandling(bool enabled); /*! * Called when the active part wants to change the statusbar message * Reimplement if your mainwindow has a complex statusbar * (with several items) */ virtual void slotSetStatusBarText(const QString &); /*! * Rebuilds the GUI after KEditToolBar changed the toolbar layout. * \sa configureToolbars() */ void saveNewToolbarConfig() override; protected: virtual void createShellGUI(bool create = true); private: std::unique_ptr const d; }; } #endif