Skip to content

Commit 42dc529

Browse files
2 parents 65058d3 + 48c4106 commit 42dc529

File tree

12 files changed

+133
-38
lines changed

12 files changed

+133
-38
lines changed

demo/demo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,8 @@ def create_content(self):
203203
QtAds.CDockComponentsFactory.setFactory(CCustomComponentsFactory())
204204
top_dock_area = self.dock_manager.addDockWidget(QtAds.TopDockWidgetArea, file_system_widget)
205205
# Uncomment the next line if you would like to test the
206-
# setHideSingleWidgetTitleBar() functionality
207-
# top_dock_area.setHideSingleWidgetTitleBar(True)
206+
# HideSingleWidgetTitleBar functionality
207+
# top_dock_area.setDockAreaFlag(QtAds.CDockAreaWidget.HideSingleWidgetTitleBar, True)
208208
QtAds.CDockComponentsFactory.resetDefaultFactory()
209209

210210
# We create a calendar widget and clear all flags to prevent the dock area
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import os
2+
import sys
3+
4+
from PyQt5 import uic
5+
from PyQt5.QtCore import Qt, QTimer, QDir
6+
from PyQt5.QtGui import QCloseEvent
7+
from PyQt5.QtWidgets import (QApplication, QLabel, QCalendarWidget, QFrame, QTreeView,
8+
QTableWidget, QFileSystemModel)
9+
10+
from PyQtAds import QtAds
11+
12+
UI_FILE = os.path.join(os.path.dirname(__file__), 'mainwindow.ui')
13+
MainWindowUI, MainWindowBase = uic.loadUiType(UI_FILE)
14+
15+
16+
class MainWindow(MainWindowUI, MainWindowBase):
17+
18+
def __init__(self, parent=None):
19+
super().__init__(parent)
20+
21+
self.setupUi(self)
22+
23+
QtAds.CDockManager.setConfigFlag(QtAds.CDockManager.OpaqueSplitterResize, True)
24+
QtAds.CDockManager.setConfigFlag(QtAds.CDockManager.XmlCompressionEnabled, False)
25+
self.dock_manager = QtAds.CDockManager(self)
26+
27+
# Set central widget
28+
calendar = QCalendarWidget()
29+
central_dock_widget = QtAds.CDockWidget("CentralWidget")
30+
central_dock_widget.setWidget(calendar)
31+
central_dock_area = self.dock_manager.setCentralWidget(central_dock_widget)
32+
central_dock_area.setAllowedAreas(QtAds.DockWidgetArea.OuterDockAreas)
33+
34+
# create other dock widgets
35+
file_tree = QTreeView()
36+
file_tree.setFrameShape(QFrame.NoFrame)
37+
file_model = QFileSystemModel(file_tree)
38+
file_model.setRootPath(QDir.currentPath())
39+
file_tree.setModel(file_model)
40+
data_dock_widget = QtAds.CDockWidget("File system")
41+
data_dock_widget.setWidget(file_tree)
42+
data_dock_widget.resize(150, 250)
43+
data_dock_widget.setMinimumSize(100, 250)
44+
file_area = self.dock_manager.addDockWidget(QtAds.DockWidgetArea.LeftDockWidgetArea, data_dock_widget, central_dock_area)
45+
self.menuView.addAction(data_dock_widget.toggleViewAction())
46+
47+
table = QTableWidget()
48+
table.setColumnCount(3)
49+
table.setRowCount(10)
50+
table_dock_widget = QtAds.CDockWidget("Table")
51+
table_dock_widget.setWidget(table)
52+
table_dock_widget.setMinimumSizeHintMode(QtAds.CDockWidget.MinimumSizeHintFromDockWidget)
53+
table_dock_widget.resize(250, 150)
54+
table_dock_widget.setMinimumSize(200, 150)
55+
self.dock_manager.addDockWidget(QtAds.DockWidgetArea.BottomDockWidgetArea, table_dock_widget, file_area)
56+
self.menuView.addAction(table_dock_widget.toggleViewAction())
57+
58+
properties_table = QTableWidget()
59+
properties_table.setColumnCount(3)
60+
properties_table.setRowCount(10)
61+
properties_dock_widget = QtAds.CDockWidget("Properties")
62+
properties_dock_widget.setWidget(properties_table)
63+
properties_dock_widget.setMinimumSizeHintMode(QtAds.CDockWidget.MinimumSizeHintFromDockWidget)
64+
properties_dock_widget.resize(250, 150)
65+
properties_dock_widget.setMinimumSize(200,150)
66+
self.dock_manager.addDockWidget(QtAds.DockWidgetArea.RightDockWidgetArea, properties_dock_widget, central_dock_area)
67+
self.menuView.addAction(properties_dock_widget.toggleViewAction())
68+
69+
70+
if __name__ == '__main__':
71+
app = QApplication(sys.argv)
72+
73+
w = MainWindow()
74+
w.show()
75+
app.exec_()

examples/centralwidget/mainwindow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ CMainWindow::CMainWindow(QWidget *parent)
6565
ui->menuView->addAction(TableDockWidget->toggleViewAction());
6666

6767
QTableWidget* propertiesTable = new QTableWidget();
68-
table->setColumnCount(3);
69-
table->setRowCount(10);
68+
propertiesTable->setColumnCount(3);
69+
propertiesTable->setRowCount(10);
7070
CDockWidget* PropertiesDockWidget = new CDockWidget("Properties");
7171
PropertiesDockWidget->setWidget(propertiesTable);
7272
PropertiesDockWidget->setMinimumSizeHintMode(CDockWidget::MinimumSizeHintFromDockWidget);

examples/simple/simple.py

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def __init__(self, parent=None):
2121

2222
# Create the dock manager. Because the parent parameter is a QMainWindow
2323
# the dock manager registers itself as the central widget.
24-
self.dock_manager1 = QtAds.CDockManager(self)
24+
self.dock_manager = QtAds.CDockManager(self)
2525

2626
# Create example content label - this can be any application specific
2727
# widget
@@ -35,41 +35,13 @@ def __init__(self, parent=None):
3535
dock_widget = QtAds.CDockWidget("Label 1")
3636
dock_widget.setWidget(l)
3737

38-
l = QLabel()
39-
l.setWordWrap(True)
40-
l.setAlignment(Qt.AlignTop | Qt.AlignLeft);
41-
l.setText("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ")
42-
43-
# Create a dock widget with the title Label 1 and set the created label
44-
# as the dock widget content
45-
dock_widget2 = QtAds.CDockWidget("Label 2")
46-
dock_widget2.setWidget(l)
4738

4839
# Add the toggleViewAction of the dock widget to the menu to give
4940
# the user the possibility to show the dock widget if it has been closed
5041
self.menuView.addAction(dock_widget.toggleViewAction())
5142

5243
# Add the dock widget to the top dock widget area
53-
self.dock_manager1.addDockWidget(QtAds.TopDockWidgetArea, dock_widget)
54-
55-
def remove_first_manager():
56-
self.dock_manager1.removeDockWidget(dock_widget)
57-
del self.dock_manager1
58-
QTimer.singleShot(3000, remove_first_manager)
59-
60-
def add_second_manager():
61-
self.dock_manager2 = QtAds.CDockManager(self)
62-
self.dock_manager2.addDockWidget(QtAds.TopDockWidgetArea, dock_widget)
63-
QTimer.singleShot(5000, add_second_manager)
64-
65-
def closeEvent(self, event: QCloseEvent):
66-
super().closeEvent(event)
67-
68-
if hasattr(self, 'dock_manager1'):
69-
self.dock_manager1.deleteLater()
70-
71-
if hasattr(self, 'dock_manager2'):
72-
self.dock_manager2.deleteLater()
44+
self.dock_manager.addDockWidget(QtAds.TopDockWidgetArea, dock_widget)
7345

7446

7547
if __name__ == '__main__':

setup.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,9 @@ def swig_sources (self, sources, extension=None):
227227
extension.extra_link_args += ['-F' + self.qtconfig.QT_INSTALL_LIBS,
228228
'-mmacosx-version-min=10.9']
229229
elif sys.platform == 'linux':
230-
extension.extra_compile_args += ['-std=c++11']
230+
extension.extra_compile_args += ['-D', 'QT_X11EXTRAS_LIB', '-std=c++11']
231+
extension.include_dirs += [os.path.join(self.qt_include_dir, 'QtX11Extras')]
232+
extension.libraries += ['Qt5X11Extras' + self.qt_libinfix]
231233

232234
return super().swig_sources(sources, extension)
233235

sip/DockAreaWidget.sip

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ protected slots:
2828
void toggleView(bool Open);
2929

3030
public:
31+
enum eDockAreaFlag
32+
{
33+
HideSingleWidgetTitleBar,
34+
DefaultFlags
35+
};
36+
typedef QFlags<ads::CDockAreaWidget::eDockAreaFlag> DockAreaFlags;
37+
3138
CDockAreaWidget(ads::CDockManager* DockManager /TransferThis/, ads::CDockContainerWidget* parent /TransferThis/);
3239
virtual ~CDockAreaWidget();
3340
ads::CDockManager* dockManager() const;
@@ -51,8 +58,13 @@ public:
5158

5259
void setAllowedAreas(DockWidgetAreas areas);
5360
DockWidgetAreas allowedAreas() const;
54-
void setHideSingleWidgetTitleBar(bool hide);
5561
CDockAreaTitleBar* titleBar() const;
62+
63+
DockAreaFlags dockAreaFlags() const;
64+
void setDockAreaFlags(DockAreaFlags Flags);
65+
void setDockAreaFlag(eDockAreaFlag Flag, bool On);
66+
67+
bool isCentralWidgetArea() const;
5668

5769
public slots:
5870
void setCurrentIndex(int index);

sip/DockContainerWidget.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ protected:
3232
ads::CDockWidget* topLevelDockWidget() const;
3333
ads::CDockAreaWidget* topLevelDockArea() const;
3434
QList<ads::CDockWidget*> dockWidgets() const;
35+
void updateSplitterHandles(QSplitter* splitter);
3536

3637
public:
3738
/**

sip/DockManager.sip

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ public:
170170
HideSingleCentralWidgetTitleBar,
171171
FocusHighlighting,
172172
EqualSplitOnInsertion,
173+
FloatingContainerForceNativeTitleBar,
174+
FloatingContainerForceQWidgetTitleBar,
173175
DefaultDockAreaButtons,
174176
DefaultBaseConfig,
175177
DefaultOpaqueConfig,
@@ -206,6 +208,8 @@ public:
206208
QStringList perspectiveNames() const;
207209
void savePerspectives(QSettings& Settings) const;
208210
void loadPerspectives(QSettings& Settings);
211+
CDockWidget* centralWidget() const;
212+
CDockAreaWidget* setCentralWidget(CDockWidget* widget /Transfer/);
209213
QAction* addToggleViewActionToMenu(QAction* ToggleViewAction /Transfer/,
210214
const QString& Group = QString(), const QIcon& GroupIcon = QIcon());
211215
QMenu* viewMenu() const;

sip/DockSplitter.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public:
1818
bool hasVisibleContent() const;
1919
QWidget* firstWidget() const;
2020
QWidget* lastWidget() const;
21+
bool isResizingWithContainer() const;
2122

2223
};
2324

sip/DockWidget.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public:
8484
QAction* toggleViewAction() const;
8585
void setToggleViewActionMode(ads::CDockWidget::eToggleViewActionMode Mode);
8686
void setMinimumSizeHintMode(ads::CDockWidget::eMinimumSizeHintMode Mode);
87+
bool isCentralWidget() const;
8788
void setIcon(const QIcon& Icon);
8889
QIcon icon() const;
8990
QToolBar* toolBar() const;

0 commit comments

Comments
 (0)