#include "isdiwindow.h"
#include <Plugins/iPlugin>
+#include <Gui/Panel>
#include <QObject>
#include <QString>
#include <QWidget>
#include <QList>
-#include <QWeakPointer>
+#include <QVector>
+#include <QHash>
class QVBoxLayout;
virtual bool isReady() { return mReady; }
- virtual void addWidget(QWidget * widget);
+ virtual void addPanel(QString const & name, Gui::Panel * panel);
- virtual void addLayout(QLayout * layout);
+ virtual Gui::Panel * panel(QString const & name) const;
+
+ virtual bool showPanel(QString const & name);
+
+ virtual void changeEvent(QEvent * e);
+
+ virtual void closeEvent(QCloseEvent * e);
+
+
+protected: // Methods
private: // Methods
/// Ready flag
bool mReady;
- /// The layout of the window
+ /// The layout of the main window
QVBoxLayout * mLayout;
- /// Widgets and layouts added to the main window
- QList<QWeakPointer<QObject> > mItemsAdded;
+ /// Name of the main panel that becomes part of this window
+ QString mMainPanelName;
+
+ /// List of GUI::Panel objects added to the manager
+ QList<Gui::Panel *> mPanels;
+
+ /// List of minimized GUI::Panel objects
+ QVector<Gui::Panel *> mMinimizedPanels;
+
+ /// Hash with panel names
+ QHash<QString, Gui::Panel *> mPanelNames;
+
+ /// Current main panel added to this window
+ Gui::Panel * mMainPanel;
+
+
+private: // Methods
+
+ /// Gets the main panel name from module attributes
+ QString getMainPanelName(QString const & args) const;
+
+
+private slots:
+
+ /// Panel destroyed signal. We need to remove the panel from all the
+ /// lists.
+ void panelDestroyed(QObject * obj = 0);
};