tahoma2d/toonz/sources/toonzqt/tdockwindows.h

122 lines
2.8 KiB
C
Raw Normal View History

2016-05-17 03:04:11 +12:00
#pragma once
2016-03-19 06:57:51 +13:00
#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
//========================================================================
2016-06-15 18:43:10 +12:00
// Forward declarations
2016-03-19 06:57:51 +13:00
class TDockWidget;
//========================================================================
//-----------------------
// TMainWindow
//-----------------------
/*!
TMainWindow class is intended as a convenience QMainWindow-like interface
for DockLayout.
\sa TDockWidget class.
*/
2016-06-15 18:43:10 +12:00
class DVAPI TMainWindow : public QWidget {
Q_OBJECT // Just needed by qobject_cast, for now
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
DockLayout *m_layout;
QWidget *m_menu;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
TMainWindow(QWidget *parent = 0, Qt::WindowFlags flags = 0);
virtual ~TMainWindow();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void addDockWidget(TDockWidget *item);
void removeDockWidget(TDockWidget *item);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setMenuWidget(QWidget *menubar);
QWidget *menuWidget() const { return m_menu; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
// Style options
void setDecoAllocator(DockDecoAllocator *allocator);
void setSeparatorsThickness(int thick);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
DockLayout *dockLayout() const { return m_layout; }
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
virtual void resizeEvent(QResizeEvent *event);
2016-03-19 06:57:51 +13:00
};
//========================================================================
//-------------------
// 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.
*/
2016-06-15 18:43:10 +12:00
class DVAPI TDockWidget : public DockWidget {
Q_OBJECT // Needed by qobject_cast
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QWidget *m_titlebar;
QWidget *m_widget;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
int m_margin;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
TDockWidget(const QString &title, QWidget *parent = 0,
Qt::WindowFlags flags = 0);
TDockWidget(QWidget *parent = 0, Qt::WindowFlags flags = 0);
~TDockWidget() {}
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setTitleBarWidget(QWidget *titlebar);
QWidget *titleBarWidget() const { return m_titlebar; }
void setFloatingMargin(int margin) { m_margin = margin; }
int getFloatingMargin() const { return m_margin; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setWidget(QWidget *widget);
QWidget *widget() const { return m_widget; }
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setFloating(bool status = true);
void setMaximized(bool status = true);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
enum Orientation { horizontal = 0, vertical = 1 };
void setOrientation(bool direction = vertical);
bool getOrientation() const;
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
QSize getDockedMinimumSize();
QSize getDockedMaximumSize();
void setFloatingAppearance();
void setDockedAppearance();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void selectDockPlaceholder(QMouseEvent *me);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
bool isDragGrip(QPoint p);
int isResizeGrip(QPoint p);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void windowTitleEvent(QEvent *e);
2016-03-19 06:57:51 +13:00
};
2016-06-15 18:43:10 +12:00
#endif // TDOCKWINDOWS_H