aboutsummaryrefslogtreecommitdiffstats
path: root/examples/widgets/mainwindows/mdi/mdi.py
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-03-24 18:26:06 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2021-03-25 12:31:43 +0100
commit9afc6a8ed1a717c1f153e190ba5d6237451c42a2 (patch)
tree213e60dd56f6636775a6d66b2b4147fdd764ddc7 /examples/widgets/mainwindows/mdi/mdi.py
parent2f18ab9c93d4fae8d8d7e4d84bd9cd2e7fd22c3d (diff)
Brush up the main window examples
- Use snake case in dockwidgets and application. - Fix imports in application to be consistent with others. - Fix the code saving/restoring geometries in mdi/application to use QWidget.save/restoreGeometry() instead of saving pos/size since that handles multiscreen setups correctly. Use 'QtProject' as settings category. - Use theme icons in application as in mdi. - Configure QFileDialog for saving HTML in dockwidgets. - Replace QSignalMapper by partial functions in mdi. - Fix one oversight of 4f2f9e2dc511ddcf802e342361e89edbf03a4a88 in mdi. - Add command line arguments Task-number: PYSIDE-1112 Change-Id: I7eca08a675876c74c6e754b946a2e63df4da3684 Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'examples/widgets/mainwindows/mdi/mdi.py')
-rw-r--r--examples/widgets/mainwindows/mdi/mdi.py63
1 files changed, 35 insertions, 28 deletions
diff --git a/examples/widgets/mainwindows/mdi/mdi.py b/examples/widgets/mainwindows/mdi/mdi.py
index 1e68e91e2..b10ecbef3 100644
--- a/examples/widgets/mainwindows/mdi/mdi.py
+++ b/examples/widgets/mainwindows/mdi/mdi.py
@@ -2,7 +2,7 @@
#############################################################################
##
## Copyright (C) 2013 Riverbank Computing Limited.
-## Copyright (C) 2016 The Qt Company Ltd.
+## Copyright (C) 2021 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the Qt for Python examples of the Qt Toolkit.
@@ -40,9 +40,13 @@
##
#############################################################################
-"""PySide6 port of the widgets/draganddrop/draggabletext example from Qt v5.x, originating from PyQt"""
+"""PySide6 port of the widgets/mainwindows/mdi example from Qt v5.x, originating from PyQt"""
-from PySide6.QtCore import (QFile, QFileInfo, QPoint, QSettings, QSignalMapper,
+from argparse import ArgumentParser, RawTextHelpFormatter
+from functools import partial
+import sys
+
+from PySide6.QtCore import (QByteArray, QFile, QFileInfo, QPoint, QSettings,
QSaveFile, QSize, QTextStream, Qt)
from PySide6.QtGui import QAction, QIcon, QKeySequence
from PySide6.QtWidgets import (QApplication, QFileDialog, QMainWindow,
@@ -173,8 +177,6 @@ class MainWindow(QMainWindow):
self.setCentralWidget(self._mdi_area)
self._mdi_area.subWindowActivated.connect(self.update_menus)
- self._window_mapper = QSignalMapper(self)
- self._window_mapper.mappedObject.connect(self.set_active_sub_window)
self.create_actions()
self.create_menus()
@@ -200,19 +202,21 @@ class MainWindow(QMainWindow):
child.show()
def open(self):
- fileName, _ = QFileDialog.getOpenFileName(self)
- if fileName:
- existing = self.find_mdi_child(fileName)
+ file_name, _ = QFileDialog.getOpenFileName(self)
+ if file_name:
+ existing = self.find_mdi_child(file_name)
if existing:
self._mdi_area.setActiveSubWindow(existing)
- return
-
- child = self.create_mdi_child()
- if child.load_file(fileName):
- self.statusBar().showMessage("File loaded", 2000)
- child.show()
else:
- child.close()
+ self.load(file_name)
+
+ def load(self, file_name):
+ child = self.create_mdi_child()
+ if child.load_file(file_name):
+ self.statusBar().showMessage("File loaded", 2000)
+ child.show()
+ else:
+ child.close()
def save(self):
if self.active_mdi_child() and self.active_mdi_child().save():
@@ -283,8 +287,8 @@ class MainWindow(QMainWindow):
action = self._window_menu.addAction(text)
action.setCheckable(True)
action.setChecked(child is self.active_mdi_child())
- action.triggered.connect(self._window_mapper.map)
- self._window_mapper.setMapping(action, window)
+ slot_func = partial(self.set_active_sub_window, window=window)
+ action.triggered.connect(slot_func)
def create_mdi_child(self):
child = MdiChild()
@@ -415,16 +419,14 @@ class MainWindow(QMainWindow):
self.statusBar().showMessage("Ready")
def read_settings(self):
- settings = QSettings('Trolltech', 'MDI Example')
- pos = settings.value('pos', QPoint(200, 200))
- size = settings.value('size', QSize(400, 400))
- self.move(pos)
- self.resize(size)
+ settings = QSettings('QtProject', 'MDI Example')
+ geometry = settings.value('geometry', QByteArray)
+ if geometry.size():
+ self.restoreGeometry(geometry)
def write_settings(self):
- settings = QSettings('Trolltech', 'MDI Example')
- settings.setValue('pos', self.pos())
- settings.setValue('size', self.size())
+ settings = QSettings('QtProject', 'MDI Example')
+ settings.setValue('geometry', self.saveGeometry())
def active_mdi_child(self):
active_sub_window = self._mdi_area.activeSubWindow()
@@ -436,7 +438,7 @@ class MainWindow(QMainWindow):
canonical_file_path = QFileInfo(fileName).canonicalFilePath()
for window in self._mdi_area.subWindowList():
- if window.widget().currentFile() == canonical_file_path:
+ if window.widget().current_file() == canonical_file_path:
return window
return None
@@ -452,10 +454,15 @@ class MainWindow(QMainWindow):
if __name__ == '__main__':
-
- import sys
+ argument_parser = ArgumentParser(description='MDI Example',
+ formatter_class=RawTextHelpFormatter)
+ argument_parser.add_argument("files", help="Files",
+ nargs='*', type=str)
+ options = argument_parser.parse_args()
app = QApplication(sys.argv)
main_win = MainWindow()
+ for f in options.files:
+ main_win.load(f)
main_win.show()
sys.exit(app.exec_())