- # Next two rows: Position selection
- mainBox.addWidget(QtGui.QLabel('Select the position of the external screen relative to the internal one:'))
- mainBox.addLayout(posBox)
-
- btn = QtGui.QPushButton('Left', self)
- btn.clicked.connect(self.left)
- posBox.addWidget(btn)
-
- btn = QtGui.QPushButton('Right', self)
- btn.clicked.connect(self.right)
- btn.setFocus()
- posBox.addWidget(btn)
-
- btn = QtGui.QPushButton('External only', self)
- btn.clicked.connect(self.externalOnly)
- posBox.addWidget(btn)
-
- # Finalization
- self.setLayout(mainBox)
- self.setWindowTitle('External screen setup')
-
- def accept(self):
- self.resolution = str(self.resolutions.currentText())
- super(PositionSelection, self).accept()
-
- def left(self):
- self.position = PositionSelection.LEFT
- self.accept()
-
- def right(self):
- self.position = PositionSelection.RIGHT
- self.accept()
-
- def externalOnly(self):
- self.position = PositionSelection.EXTERNAL_ONLY
- self.accept()
+ # resolution selection
+ resBox = QtGui.QGroupBox('Screen resolutions', self)
+ extResLabel = QtGui.QLabel('Resolution of external screen:', resBox)
+ self.extResolutions = QtGui.QComboBox(resBox)
+ for res in externalResolutions:
+ self.extResolutions.addItem(res)
+ self.extResolutions.setCurrentIndex(0) # select first resolution
+ extRow = makeLayout(QtGui.QHBoxLayout(), [extResLabel, self.extResolutions])
+ intResLabel = QtGui.QLabel('Resolution of internal screen:', resBox)
+ self.extOnly.toggled.connect(intResLabel.setDisabled) # disable the label if there's just one screen in use
+ self.intResolutions = QtGui.QComboBox(resBox)
+ for res in internalResolutions:
+ self.intResolutions.addItem(res)
+ self.intResolutions.setCurrentIndex(0) # select first resolution
+ self.extOnly.toggled.connect(self.intResolutions.setDisabled) # disable the box if there's just one screen in use
+ intRow = makeLayout(QtGui.QHBoxLayout(), [intResLabel, self.intResolutions])
+ resBox.setLayout(makeLayout(QtGui.QVBoxLayout(), [extRow, intRow]))
+
+ # last row: buttons
+ buttons = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self)
+ buttons.accepted.connect(self.accept)
+ buttons.rejected.connect(self.reject)
+
+ # add them all to the window
+ self.setLayout(makeLayout(QtGui.QVBoxLayout(), [posBox, primBox, resBox, buttons]))