def mouseMoveEvent(self, event): """ mouseMoveEvent """ #rectangular selection if self.selectionRect: self.__rectangle = QtCore.QRect(self.__rectangleInit, event.pos()).normalized() self.updateGL() # by default camera or manipulated frame is manipulated QGLViewer.mouseMoveEvent(self, event)
def paintEvent(self, event): painter = QtGui.QStylePainter(self) # ticks opt = QtGui.QStyleOptionSlider() self.initStyleOption(opt) # opt.subControls = QtGui.QStyle.SC_SliderTickmarks painter.drawComplexControl(QtGui.QStyle.CC_Slider, opt) # groove opt.sliderPosition = 20 opt.sliderValue = 0 opt.subControls = QtGui.QStyle.SC_SliderGroove painter.drawComplexControl(QtGui.QStyle.CC_Slider, opt) # handle rects opt.sliderPosition = self.lowerPos lr = self.style().subControlRect(QtGui.QStyle.CC_Slider, opt, QtGui.QStyle.SC_SliderHandle, self) lrv = self.pick(lr.center()) opt.sliderPosition = self.upperPos ur = self.style().subControlRect(QtGui.QStyle.CC_Slider, opt, QtGui.QStyle.SC_SliderHandle, self) urv = self.pick(ur.center()) # span minv = min(lrv, urv) maxv = max(lrv, urv) c = self.style().subControlRect(QtGui.QStyle.CC_Slider, opt, QtGui.QStyle.SC_SliderGroove, self).center() spanRect = QtCore.QRect(QtCore.QPoint(c.x() - 2, minv), QtCore.QPoint(c.x() + 1, maxv)) if self.orientation() == QtCore.Qt.Horizontal: spanRect = QtCore.QRect(QtCore.QPoint(minv, c.y() - 2), QtCore.QPoint(maxv, c.y() + 1)) self.drawSpan(painter, spanRect) # handles if self.lastPressed == QSpanSlider.LowerHandle: self.drawHandle(painter, QSpanSlider.UpperHandle) self.drawHandle(painter, QSpanSlider.LowerHandle) else: self.drawHandle(painter, QSpanSlider.LowerHandle) self.drawHandle(painter, QSpanSlider.UpperHandle)
def mouseReleaseEvent(self, event): """On mouse release, we release every grabbed objects""" QGLViewer.mouseReleaseEvent(self, event) # clear manipulated object self.setManipulatedFrame(None) self.setFocus(None) if self.selectionManipulator: self.selectionManipulator.clearFocus() # end of rectangular selection : if self.selectionRect: self.selectionRect = False # Possibly swap left/right and top/bottom to make rectangle_ valid. self.__rectangle = QtCore.QRect(self.__rectangleInit, event.pos()).normalized() # make rectangle with a minimal size if self.__rectangle.width() < 10 or self.__rectangle.height() < 10: self.__rectangle = QtCore.QRect(event.pos().x() - 5, event.pos().y() - 5, 10, 10) self.selectionFromRect(self.__rectangle) self.setInteractionMode(False) self.updateGL()
def refresh_layout(self): ''' refresh the layout (without these three lines, the widget won't shrink!) This method is a hack to refresh the size of the widget by refreshing the parent widget own by VisuAlea.:w ''' self.__methodGBox.layout().activate() self._mainLayout.activate() parent = self.parentWidget() if parent is not None: pos = parent.geometry().topLeft() rect = QtCore.QRect() rect.moveTo(pos) parent.layout().activate() parent.setGeometry(rect)
def move(self, pos): rect = QtCore.QRect(pos, self.sizeHint()) #fix the position of the menu if it tries to popup too close to the lower & right edges. #bad fixing strategy probably: what if we were create arabian menus? #We should maybe sublcass QMenu to handle screen real estate and reuse it. desktopGeom = QtGui.QApplication.desktop().availableGeometry( self.parent()) contained, edges = qrect_contains(desktopGeom, rect, True) if not contained and edges.count(0) > 0: dx = edges[0] if edges[0] else edges[1] dy = edges[2] if edges[2] else edges[3] rect.translate(dx, dy) QtGui.QMenu.move(self, rect.topLeft()) return else: QtGui.QMenu.move(self, pos)
def __init__(self, parent): """ Constructor :param parent: the parent widget """ QGLViewer.__init__(self, parent) self.setStateFileName('.nurbspatcheditor.xml') self.mode = NurbsPatchEditor.Edit # the nurbs patch self.nurbsPatch = None # matrix of ctrl point manipulator self.ctrlPointMatrix = [] # shape and material to display the patch self.nurbsShape = Shape() self.defaultMaterial = Material((30, 200, 30), 1, transparency=0.5) self.nurbsShape.appearance = self.defaultMaterial # plantgl basic object to display nurbs self.discretizer = Discretizer() self.glrenderer = GLRenderer(self.discretizer) self.glrenderer.renderingMode = GLRenderer.Dynamic self.ctrlrenderer = GLCtrlPointRenderer(self.discretizer) self.bboxcomputer = BBoxComputer(self.discretizer) # Current selection self.selectionManipulator = None self.focus = None # rectangular selection self.selectionRect = False # for rectangular selection (with control) self.__rectangle = QtCore.QRect() self.__rectangleInit = None #creation of a default NurbsPatch if len(self.ctrlPointMatrix) == 0: self.setNurbsPatch(self.newDefaultNurbsPatch())
def mousePressEvent(self, event): """ Check for eventual operations the user asks: shift start rectangular selection else check for which point is selected """ #Rectangular selection if event.modifiers() == QtCore.Qt.ShiftModifier: if event.button() == QtCore.Qt.LeftButton: self.__rectangle = QtCore.QRect(event.pos(), event.pos()) self.__rectangleInit = event.pos() self.selectionRect = True elif event.button() == QtCore.Qt.RightButton: self.clearSelectionManipulator() self.updateGL() else: pointSelection = False if self.selectionManipulator: pointSelection = self.selectionManipulator.checkIfAxisGrabsMouse( event, self) if not pointSelection: for ctrlPointRow in self.ctrlPointMatrix: for cCtrlPoint in ctrlPointRow: cCtrlPoint.checkIfGrabsMouse(event.x(), event.y(), self.camera()) if cCtrlPoint.grabsMouse(): pointSelection = True self.setFocus(cCtrlPoint) if self.selectionManipulator and cCtrlPoint.selected: self.setManipulatedFrame( self.selectionManipulator) else: self.setManipulatedFrame(cCtrlPoint) break self.setInteractionMode(pointSelection) self.updateGL() QGLViewer.mousePressEvent(self, event)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(703, 681) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/icons/openalea_icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setGeometry(QtCore.QRect(0, 21, 703, 660)) self.centralwidget.setObjectName("centralwidget") self.gridLayout_4 = QtGui.QGridLayout(self.centralwidget) self.gridLayout_4.setObjectName("gridLayout_4") self.splitter = QtGui.QSplitter(self.centralwidget) self.splitter.setOrientation(QtCore.Qt.Vertical) self.splitter.setObjectName("splitter") self.tabWidget = QtGui.QTabWidget(self.splitter) self.tabWidget.setObjectName("tabWidget") self.tab = QtGui.QWidget() self.tab.setGeometry(QtCore.QRect(0, 0, 679, 373)) self.tab.setObjectName("tab") self.vboxlayout = QtGui.QVBoxLayout(self.tab) self.vboxlayout.setObjectName("vboxlayout") self.label_4 = QtGui.QLabel(self.tab) self.label_4.setOpenExternalLinks(True) self.label_4.setObjectName("label_4") self.vboxlayout.addWidget(self.label_4) self.hboxlayout = QtGui.QHBoxLayout() self.hboxlayout.setObjectName("hboxlayout") self.radioRecommended = QtGui.QRadioButton(self.tab) self.radioRecommended.setChecked(True) self.radioRecommended.setObjectName("radioRecommended") self.hboxlayout.addWidget(self.radioRecommended) self.radioAll = QtGui.QRadioButton(self.tab) self.radioAll.setObjectName("radioAll") self.hboxlayout.addWidget(self.radioAll) self.radioUpdate = QtGui.QRadioButton(self.tab) self.radioUpdate.setObjectName("radioUpdate") self.hboxlayout.addWidget(self.radioUpdate) self.radioInstalled = QtGui.QRadioButton(self.tab) self.radioInstalled.setObjectName("radioInstalled") self.hboxlayout.addWidget(self.radioInstalled) self.vboxlayout.addLayout(self.hboxlayout) self.packageList = QtGui.QListWidget(self.tab) self.packageList.setAlternatingRowColors(True) self.packageList.setSelectionMode( QtGui.QAbstractItemView.MultiSelection) self.packageList.setSortingEnabled(True) self.packageList.setObjectName("packageList") self.vboxlayout.addWidget(self.packageList) self.hboxlayout1 = QtGui.QHBoxLayout() self.hboxlayout1.setObjectName("hboxlayout1") self.checkAll = QtGui.QPushButton(self.tab) self.checkAll.setFlat(True) self.checkAll.setObjectName("checkAll") self.hboxlayout1.addWidget(self.checkAll) self.ClearAll = QtGui.QPushButton(self.tab) self.ClearAll.setFlat(True) self.ClearAll.setObjectName("ClearAll") self.hboxlayout1.addWidget(self.ClearAll) spacerItem = QtGui.QSpacerItem(521, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.hboxlayout1.addItem(spacerItem) self.vboxlayout.addLayout(self.hboxlayout1) self.hboxlayout2 = QtGui.QHBoxLayout() self.hboxlayout2.setSpacing(6) self.hboxlayout2.setContentsMargins(0, 0, 0, 0) self.hboxlayout2.setObjectName("hboxlayout2") self.proceedButton = QtGui.QPushButton(self.tab) self.proceedButton.setObjectName("proceedButton") self.hboxlayout2.addWidget(self.proceedButton) self.refreshButton = QtGui.QPushButton(self.tab) self.refreshButton.setObjectName("refreshButton") self.hboxlayout2.addWidget(self.refreshButton) self.vboxlayout.addLayout(self.hboxlayout2) self.tabWidget.addTab(self.tab, "") self.OtherEggs = QtGui.QWidget() self.OtherEggs.setGeometry(QtCore.QRect(0, 0, 679, 373)) self.OtherEggs.setObjectName("OtherEggs") self.vboxlayout1 = QtGui.QVBoxLayout(self.OtherEggs) self.vboxlayout1.setObjectName("vboxlayout1") self.label = QtGui.QLabel(self.OtherEggs) self.label.setOpenExternalLinks(True) self.label.setObjectName("label") self.vboxlayout1.addWidget(self.label) self.hboxlayout3 = QtGui.QHBoxLayout() self.hboxlayout3.setObjectName("hboxlayout3") self.requestEdit = QtGui.QLineEdit(self.OtherEggs) self.requestEdit.setObjectName("requestEdit") self.hboxlayout3.addWidget(self.requestEdit) self.fileButton = QtGui.QPushButton(self.OtherEggs) self.fileButton.setObjectName("fileButton") self.hboxlayout3.addWidget(self.fileButton) self.vboxlayout1.addLayout(self.hboxlayout3) spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.vboxlayout1.addItem(spacerItem1) self.hboxlayout4 = QtGui.QHBoxLayout() self.hboxlayout4.setObjectName("hboxlayout4") self.customInstallButton = QtGui.QPushButton(self.OtherEggs) self.customInstallButton.setObjectName("customInstallButton") self.hboxlayout4.addWidget(self.customInstallButton) self.vboxlayout1.addLayout(self.hboxlayout4) self.tabWidget.addTab(self.OtherEggs, "") self.tab_2 = QtGui.QWidget() self.tab_2.setGeometry(QtCore.QRect(0, 0, 679, 373)) self.tab_2.setObjectName("tab_2") self.vboxlayout2 = QtGui.QVBoxLayout(self.tab_2) self.vboxlayout2.setObjectName("vboxlayout2") self.label_2 = QtGui.QLabel(self.tab_2) self.label_2.setObjectName("label_2") self.vboxlayout2.addWidget(self.label_2) self.locationList = QtGui.QListWidget(self.tab_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth( self.locationList.sizePolicy().hasHeightForWidth()) self.locationList.setSizePolicy(sizePolicy) self.locationList.setObjectName("locationList") self.vboxlayout2.addWidget(self.locationList) self.hboxlayout5 = QtGui.QHBoxLayout() self.hboxlayout5.setSpacing(6) self.hboxlayout5.setContentsMargins(0, 0, 0, 0) self.hboxlayout5.setObjectName("hboxlayout5") self.addLocButton = QtGui.QPushButton(self.tab_2) self.addLocButton.setObjectName("addLocButton") self.hboxlayout5.addWidget(self.addLocButton) self.removeLocButton = QtGui.QPushButton(self.tab_2) self.removeLocButton.setObjectName("removeLocButton") self.hboxlayout5.addWidget(self.removeLocButton) self.vboxlayout2.addLayout(self.hboxlayout5) self.tabWidget.addTab(self.tab_2, "") self.customPackagePage = QtGui.QWidget() self.customPackagePage.setGeometry(QtCore.QRect(0, 0, 679, 373)) self.customPackagePage.setObjectName("customPackagePage") self.gridLayout_2 = QtGui.QGridLayout(self.customPackagePage) self.gridLayout_2.setObjectName("gridLayout_2") self.label_5 = QtGui.QLabel(self.customPackagePage) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.label_5.sizePolicy().hasHeightForWidth()) self.label_5.setSizePolicy(sizePolicy) self.label_5.setObjectName("label_5") self.gridLayout_2.addWidget(self.label_5, 0, 0, 1, 5) self.label_6 = QtGui.QLabel(self.customPackagePage) self.label_6.setObjectName("label_6") self.gridLayout_2.addWidget(self.label_6, 1, 0, 1, 1) self.customPackageNameEdit = QtGui.QLineEdit(self.customPackagePage) self.customPackageNameEdit.setObjectName("customPackageNameEdit") self.gridLayout_2.addWidget(self.customPackageNameEdit, 1, 1, 1, 4) self.label_7 = QtGui.QLabel(self.customPackagePage) self.label_7.setObjectName("label_7") self.gridLayout_2.addWidget(self.label_7, 2, 0, 1, 1) self.customPackageVersionEdit = QtGui.QLineEdit(self.customPackagePage) self.customPackageVersionEdit.setObjectName("customPackageVersionEdit") self.gridLayout_2.addWidget(self.customPackageVersionEdit, 2, 1, 1, 1) spacerItem2 = QtGui.QSpacerItem(291, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.gridLayout_2.addItem(spacerItem2, 2, 2, 1, 2) self.label_8 = QtGui.QLabel(self.customPackagePage) self.label_8.setObjectName("label_8") self.gridLayout_2.addWidget(self.label_8, 3, 0, 1, 1) self.customPackageDirEdit = QtGui.QLineEdit(self.customPackagePage) self.customPackageDirEdit.setObjectName("customPackageDirEdit") self.gridLayout_2.addWidget(self.customPackageDirEdit, 3, 1, 1, 3) self.customPackageDirButton = QtGui.QPushButton(self.customPackagePage) self.customPackageDirButton.setObjectName("customPackageDirButton") self.gridLayout_2.addWidget(self.customPackageDirButton, 3, 4, 1, 1) self.customCppPackageFrame = QtGui.QGroupBox(self.customPackagePage) self.customCppPackageFrame.setEnabled(True) self.customCppPackageFrame.setCheckable(True) self.customCppPackageFrame.setChecked(False) self.customCppPackageFrame.setObjectName("customCppPackageFrame") self.gridLayout_3 = QtGui.QGridLayout(self.customCppPackageFrame) self.gridLayout_3.setSpacing(1) self.gridLayout_3.setContentsMargins(4, 1, 4, 1) self.gridLayout_3.setObjectName("gridLayout_3") self.label_9 = QtGui.QLabel(self.customCppPackageFrame) self.label_9.setObjectName("label_9") self.gridLayout_3.addWidget(self.label_9, 0, 0, 1, 1) self.customPackageIncludeEdit = QtGui.QLineEdit( self.customCppPackageFrame) self.customPackageIncludeEdit.setObjectName("customPackageIncludeEdit") self.gridLayout_3.addWidget(self.customPackageIncludeEdit, 0, 1, 1, 1) self.customPackageIncludeButton = QtGui.QPushButton( self.customCppPackageFrame) self.customPackageIncludeButton.setObjectName( "customPackageIncludeButton") self.gridLayout_3.addWidget(self.customPackageIncludeButton, 0, 2, 1, 1) self.label_11 = QtGui.QLabel(self.customCppPackageFrame) self.label_11.setObjectName("label_11") self.gridLayout_3.addWidget(self.label_11, 1, 0, 1, 1) self.customPackageLibEdit = QtGui.QLineEdit(self.customCppPackageFrame) self.customPackageLibEdit.setObjectName("customPackageLibEdit") self.gridLayout_3.addWidget(self.customPackageLibEdit, 1, 1, 1, 1) self.customPackageLibButton = QtGui.QPushButton( self.customCppPackageFrame) self.customPackageLibButton.setObjectName("customPackageLibButton") self.gridLayout_3.addWidget(self.customPackageLibButton, 1, 2, 1, 1) self.label_13 = QtGui.QLabel(self.customCppPackageFrame) self.label_13.setObjectName("label_13") self.gridLayout_3.addWidget(self.label_13, 2, 0, 1, 1) self.customPackageBinEdit = QtGui.QLineEdit(self.customCppPackageFrame) self.customPackageBinEdit.setObjectName("customPackageBinEdit") self.gridLayout_3.addWidget(self.customPackageBinEdit, 2, 1, 1, 1) self.customPackageBinButton = QtGui.QPushButton( self.customCppPackageFrame) self.customPackageBinButton.setObjectName("customPackageBinButton") self.gridLayout_3.addWidget(self.customPackageBinButton, 2, 2, 1, 1) self.gridLayout_2.addWidget(self.customCppPackageFrame, 4, 0, 1, 5) self.customPythonPackageFrame = QtGui.QGroupBox(self.customPackagePage) self.customPythonPackageFrame.setEnabled(True) self.customPythonPackageFrame.setCheckable(True) self.customPythonPackageFrame.setChecked(False) self.customPythonPackageFrame.setObjectName("customPythonPackageFrame") self.gridLayout = QtGui.QGridLayout(self.customPythonPackageFrame) self.gridLayout.setSpacing(2) self.gridLayout.setContentsMargins(4, 0, 2, 4) self.gridLayout.setObjectName("gridLayout") self.label_12 = QtGui.QLabel(self.customPythonPackageFrame) self.label_12.setObjectName("label_12") self.gridLayout.addWidget(self.label_12, 0, 0, 1, 1) self.customPythonPackageEdit = QtGui.QLineEdit( self.customPythonPackageFrame) self.customPythonPackageEdit.setObjectName("customPythonPackageEdit") self.gridLayout.addWidget(self.customPythonPackageEdit, 0, 1, 1, 1) self.customPythonPackageButton = QtGui.QPushButton( self.customPythonPackageFrame) self.customPythonPackageButton.setObjectName( "customPythonPackageButton") self.gridLayout.addWidget(self.customPythonPackageButton, 0, 2, 1, 1) self.pythonNamespaceFrame = QtGui.QGroupBox( self.customPythonPackageFrame) self.pythonNamespaceFrame.setCheckable(True) self.pythonNamespaceFrame.setChecked(False) self.pythonNamespaceFrame.setObjectName("pythonNamespaceFrame") self.horizontalLayout = QtGui.QHBoxLayout(self.pythonNamespaceFrame) self.horizontalLayout.setSpacing(2) self.horizontalLayout.setContentsMargins(4, 1, 4, 4) self.horizontalLayout.setObjectName("horizontalLayout") self.label_10 = QtGui.QLabel(self.pythonNamespaceFrame) self.label_10.setObjectName("label_10") self.horizontalLayout.addWidget(self.label_10) self.namespaceEdit = QtGui.QLineEdit(self.pythonNamespaceFrame) self.namespaceEdit.setObjectName("namespaceEdit") self.horizontalLayout.addWidget(self.namespaceEdit) self.gridLayout.addWidget(self.pythonNamespaceFrame, 1, 1, 1, 1) self.gridLayout_2.addWidget(self.customPythonPackageFrame, 5, 0, 1, 5) spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.gridLayout_2.addItem(spacerItem3, 6, 1, 1, 2) self.customResetButton = QtGui.QPushButton(self.customPackagePage) self.customResetButton.setObjectName("customResetButton") self.gridLayout_2.addWidget(self.customResetButton, 6, 3, 1, 1) self.customApplyButton = QtGui.QPushButton(self.customPackagePage) self.customApplyButton.setObjectName("customApplyButton") self.gridLayout_2.addWidget(self.customApplyButton, 6, 4, 1, 1) self.tabWidget.addTab(self.customPackagePage, "") self.layoutWidget = QtGui.QWidget(self.splitter) self.layoutWidget.setObjectName("layoutWidget") self.vboxlayout3 = QtGui.QVBoxLayout(self.layoutWidget) self.vboxlayout3.setObjectName("vboxlayout3") self.label_3 = QtGui.QLabel(self.layoutWidget) self.label_3.setObjectName("label_3") self.vboxlayout3.addWidget(self.label_3) self.logText = QtGui.QTextEdit(self.layoutWidget) self.logText.setReadOnly(True) self.logText.setObjectName("logText") self.vboxlayout3.addWidget(self.logText) self.gridLayout_4.addWidget(self.splitter, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 703, 21)) self.menubar.setObjectName("menubar") self.menuAuthentification = QtGui.QMenu(self.menubar) self.menuAuthentification.setObjectName("menuAuthentification") self.menu_File = QtGui.QMenu(self.menubar) self.menu_File.setObjectName("menu_File") self.menuHelp = QtGui.QMenu(self.menubar) self.menuHelp.setObjectName("menuHelp") MainWindow.setMenuBar(self.menubar) self.actionCookie_Session = QtGui.QAction(MainWindow) self.actionCookie_Session.setObjectName("actionCookie_Session") self.action_Quit = QtGui.QAction(MainWindow) self.action_Quit.setObjectName("action_Quit") self.action_About = QtGui.QAction(MainWindow) self.action_About.setObjectName("action_About") self.action_Web = QtGui.QAction(MainWindow) self.action_Web.setObjectName("action_Web") self.menuAuthentification.addAction(self.actionCookie_Session) self.menu_File.addAction(self.action_Quit) self.menuHelp.addAction(self.action_About) self.menuHelp.addAction(self.action_Web) self.menubar.addAction(self.menu_File.menuAction()) self.menubar.addAction(self.menuAuthentification.menuAction()) self.menubar.addAction(self.menuHelp.menuAction()) self.retranslateUi(MainWindow) self.tabWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) MainWindow.setTabOrder(self.tabWidget, self.radioRecommended) MainWindow.setTabOrder(self.radioRecommended, self.radioAll) MainWindow.setTabOrder(self.radioAll, self.radioUpdate) MainWindow.setTabOrder(self.radioUpdate, self.radioInstalled) MainWindow.setTabOrder(self.radioInstalled, self.packageList) MainWindow.setTabOrder(self.packageList, self.checkAll) MainWindow.setTabOrder(self.checkAll, self.ClearAll) MainWindow.setTabOrder(self.ClearAll, self.proceedButton) MainWindow.setTabOrder(self.proceedButton, self.refreshButton) MainWindow.setTabOrder(self.refreshButton, self.logText) MainWindow.setTabOrder(self.logText, self.requestEdit) MainWindow.setTabOrder(self.requestEdit, self.fileButton) MainWindow.setTabOrder(self.fileButton, self.customInstallButton) MainWindow.setTabOrder(self.customInstallButton, self.locationList) MainWindow.setTabOrder(self.locationList, self.addLocButton) MainWindow.setTabOrder(self.addLocButton, self.removeLocButton)
def visit(self, vid): """ Lays out all the widgets concerning vid. At vid we check if it is a terminal node. In that case the vid has a content widget (non terminal nodes have no content widget). Vid's geometry has already been computed by parent so we set the widget's geometry to vid's geometry. If it's not a terminal node, then it still has a geometry but not content widget. However it does contain a splitter handle that must be positionned, and we must compute the sizes of its chlidren. Called by the binary tree structure. The order is dependent on the tree traversal method used.""" if not self.g.has_children(vid): # ok, no child, so we probably have a widget and our geometry # has already been computed by parent geom = self.geomCache[vid] return self.layout_pane(geom, vid) fid, sid = self.g.children(vid) sp = SplittableUI.__spacing__ containerGeom = self.geomCache[vid] direction = self.g.get_property(vid, "splitDirection") amount = self.g.get_property(vid, "amount") sticky = self.g.get_property(vid, "sticky") # -- The node has children : it doesn't have a widget # but it does have a handle that separates the child widgets # we must place it accordingly handle = self.g.get_property(vid, "handleWidget") hgeom = QtCore.QRect() # handle.geometry() containerWidth = ( containerGeom.width() - sp) if direction == QtCore.Qt.Horizontal else containerGeom.width() containerHeight = ( containerGeom.height() - sp) if direction == QtCore.Qt.Vertical else containerGeom.height() if direction == QtCore.Qt.Horizontal: firstHeight = secondHeight = containerHeight firstWidth = (containerWidth * amount) if sticky != -1 else 0 secondWidth = (containerWidth - firstWidth) if sticky != 1 else 0 firstX, firstY = containerGeom.x(), containerGeom.y() secondX, secondY = firstX + firstWidth + sp, firstY hgeom.moveLeft(firstX + +firstWidth) hgeom.moveTop(firstY) hgeom.setHeight(containerHeight) hgeom.setWidth(sp) else: firstWidth = secondWidth = containerWidth firstHeight = (containerHeight * amount) if sticky != -1 else 0 secondHeight = (containerHeight - firstHeight) if sticky != 1 else 0 firstX, firstY = containerGeom.x(), containerGeom.y() secondX, secondY = firstX, firstY + firstHeight + sp hgeom.moveTop(firstY + firstHeight) hgeom.moveLeft(firstX) hgeom.setWidth(containerWidth) hgeom.setHeight(sp) firstGeom = QtCore.QRect(firstX, firstY, firstWidth, firstHeight) secondGeom = QtCore.QRect(secondX, secondY, secondWidth, secondHeight) self.geomCache[fid] = firstGeom self.geomCache[sid] = secondGeom handle.setGeometry(hgeom) return False, False # don't ignore first or second child