121 lines
2.8 KiB
C++
121 lines
2.8 KiB
C++
#pragma once
|
|
|
|
#ifndef TDOCKWINDOWS_H
|
|
#define TDOCKWINDOWS_H
|
|
|
|
#include "tcommon.h"
|
|
|
|
#include "docklayout.h"
|
|
|
|
#include <QFrame>
|
|
|
|
#undef DVAPI
|
|
#undef DVVAR
|
|
#ifdef TOONZQT_EXPORTS
|
|
#define DVAPI DV_EXPORT_API
|
|
#define DVVAR DV_EXPORT_VAR
|
|
#else
|
|
#define DVAPI DV_IMPORT_API
|
|
#define DVVAR DV_IMPORT_VAR
|
|
#endif
|
|
|
|
//========================================================================
|
|
|
|
// Forward declarations
|
|
class TDockWidget;
|
|
|
|
//========================================================================
|
|
|
|
//-----------------------
|
|
// TMainWindow
|
|
//-----------------------
|
|
|
|
/*!
|
|
TMainWindow class is intended as a convenience QMainWindow-like interface
|
|
for DockLayout.
|
|
|
|
\sa TDockWidget class.
|
|
*/
|
|
class DVAPI TMainWindow : public QWidget {
|
|
Q_OBJECT // Just needed by qobject_cast, for now
|
|
|
|
DockLayout *m_layout;
|
|
QWidget *m_menu;
|
|
|
|
public:
|
|
TMainWindow(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
|
virtual ~TMainWindow();
|
|
|
|
void addDockWidget(TDockWidget *item);
|
|
void removeDockWidget(TDockWidget *item);
|
|
|
|
void setMenuWidget(QWidget *menubar);
|
|
QWidget *menuWidget() const { return m_menu; }
|
|
|
|
// Style options
|
|
void setDecoAllocator(DockDecoAllocator *allocator);
|
|
void setSeparatorsThickness(int thick);
|
|
|
|
DockLayout *dockLayout() const { return m_layout; }
|
|
|
|
protected:
|
|
void resizeEvent(QResizeEvent *event) override;
|
|
};
|
|
|
|
//========================================================================
|
|
|
|
//-------------------
|
|
// TDockWidget
|
|
//-------------------
|
|
|
|
/*!
|
|
TDockWidget class is a convenience QDockWidget-like interface to DockWidget
|
|
class. It provides an internal base layout including a titlebar and a
|
|
content widget.
|
|
|
|
\sa TMainWindow class.
|
|
*/
|
|
class DVAPI TDockWidget : public DockWidget {
|
|
Q_OBJECT // Needed by qobject_cast
|
|
|
|
QWidget *m_titlebar;
|
|
QWidget *m_widget;
|
|
|
|
int m_margin;
|
|
|
|
public:
|
|
TDockWidget(const QString &title, QWidget *parent = 0,
|
|
Qt::WindowFlags flags = 0);
|
|
TDockWidget(QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
|
~TDockWidget() {}
|
|
|
|
void setTitleBarWidget(QWidget *titlebar);
|
|
QWidget *titleBarWidget() const { return m_titlebar; }
|
|
void setFloatingMargin(int margin) { m_margin = margin; }
|
|
int getFloatingMargin() const { return m_margin; }
|
|
|
|
void setWidget(QWidget *widget);
|
|
QWidget *widget() const { return m_widget; }
|
|
|
|
void setFloating(bool status = true);
|
|
void setMaximized(bool status = true);
|
|
|
|
enum Orientation { horizontal = 0, vertical = 1 };
|
|
void setOrientation(bool direction = vertical);
|
|
bool getOrientation() const;
|
|
|
|
private:
|
|
QSize getDockedMinimumSize() override;
|
|
QSize getDockedMaximumSize() override;
|
|
void setFloatingAppearance() override;
|
|
void setDockedAppearance() override;
|
|
|
|
void selectDockPlaceholder(QMouseEvent *me) override;
|
|
|
|
bool isDragGrip(QPoint p) override;
|
|
int isResizeGrip(QPoint p) override;
|
|
|
|
void windowTitleEvent(QEvent *e) override;
|
|
};
|
|
|
|
#endif // TDOCKWINDOWS_H
|