]> vaikene.ee Git - evaf/blobdiff - src/plugins/SdiWindow/isdiwindow.h
Warning fixes and copyright update.
[evaf] / src / plugins / SdiWindow / isdiwindow.h
index 8cd4343666db997ef1f1118a73fa637873029454..825961ebaf533118367f4ac8ee66016c23d8c087 100644 (file)
@@ -3,7 +3,7 @@
  * @brief eVaf SDI window interface
  * @author Enar Vaikene
  *
- * Copyright (c) 2011 Enar Vaikene
+ * Copyright (c) 2011-2019 Enar Vaikene
  *
  * This file is part of the eVaf C++ cross-platform application development framework.
  *
 
 #include "libsdiwindow.h"
 
-#include <QObject>
 #include <QString>
+#include <QtPlugin>
 
 class QWidget;
 class QLayout;
 
 namespace eVaf {
+
+namespace Gui {
+    class Panel;
+} // namespace eVaf::Gui
+
 namespace SdiWindow {
 
 /**
- * Main window interface for eVaf applications implementing the Single Document Interface.
+ * Single Document Interface window manager for eVaf applications.
  *
- * The iSdiWindow interface provides access to the SDI main window. The SDI main window is
- * an empty window that the application can fill with widgets.
+ * The iSdiWindow interface implements an SDI window manager.
  */
-class SDIWINDOW_EXPORT iSdiWindow : public QObject
+struct SDIWINDOW_EXPORT iSdiWindow
 {
-    Q_OBJECT
-
-public:
-
-    /// Interface constructor
-    iSdiWindow() : QObject() {}
-
-    /// Empty virtual destructor
-    virtual ~iSdiWindow() {}
-
     /**
      * Returns the iSdiWindow interface instance
      * @return The iSdiWindow interface or zero if not available
@@ -60,24 +54,44 @@ public:
     static iSdiWindow * instance();
 
     /**
-     * Adds the widget to the end of the main window layout
-     * @param widget The widget
+     * Empty virtual destructor
+     */
+    virtual ~iSdiWindow() {}
+
+    /**
+     * Adds a panel to the SDI window manager
+     * @param name Name of the panel
+     * @param panel The panel
+     *
+     * This function adds a panel to the SDI window manager. The ownership of the panel
+     * is transferred to the window manager and it is the responsibility of the window
+     * manager to delete it.
+     */
+    virtual void addPanel(QString const & name, Gui::Panel * panel) = 0;
+
+    /**
+     * Returns a panel by the name
+     * @param name Name of the panel
+     * @return Pointer to the panel or 0 if failed
      *
-     * This function adds the widget to the end of the main window layout.
+     * This function returns a panel identified by the name.
      */
-    virtual void addWidget(QWidget * widget) = 0;
+    virtual Gui::Panel * panel(QString const & name) const = 0;
 
     /**
-     * Adds the layout to the end of the main window layout
-     * @param layout The layout
+     * Shows a panel
+     * @param name Name of the panel
+     * @return True if succeeded; false if not
      *
-     * This function adds the new layout to the end of the main window layout.
+     * This function shows the panel.
      */
-    virtual void addLayout(QLayout * layout) = 0;
+    virtual bool showPanel(QString const & name) = 0;
 
 };
 
 } // namespace eVaf::SdiWindow
 } // namespace eVaf
 
+Q_DECLARE_INTERFACE(eVaf::SdiWindow::iSdiWindow, "eVaf.SdiWindow.iSdiWindow/1.1")
+
 #endif // isdiwindow.h