def setupUi(self): SP = QSizePolicy sp = SP(SP.Preferred, SP.Expanding) sp.setHorizontalStretch(0) sp.setVerticalStretch(0) sp.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) self.setSizePolicy(sp) # + basevbox -------------------------------------------------------+ # |+ filelistsplit ........ | # | + filelistframe (vbox) | + panelframe (vbox) | # | + filelisttbar | + revpanel | # +---------------------------+-------------------------------------+ # | + filelist | + messagesplitter | # | | :+ message | # | | :----------------------------------+ # | | + fileview | # +---------------------------+-------------------------------------+ basevbox = QVBoxLayout(self) basevbox.setSpacing(0) basevbox.setMargin(0) basevbox.setContentsMargins(2, 2, 2, 2) self.filelistsplit = QSplitter(self) basevbox.addWidget(self.filelistsplit) self.splitternames.append('filelistsplit') sp = SP(SP.Expanding, SP.Expanding) sp.setHorizontalStretch(0) sp.setVerticalStretch(0) sp.setHeightForWidth( self.filelistsplit.sizePolicy().hasHeightForWidth()) self.filelistsplit.setSizePolicy(sp) self.filelistsplit.setOrientation(Qt.Horizontal) self.filelistsplit.setChildrenCollapsible(False) self.filelisttbar = QToolBar(_('File List Toolbar')) self.filelisttbar.setIconSize(QSize(16, 16)) self.filelist = HgFileListView(self.repo, self, True) self.filelist.linkActivated.connect(self.linkActivated) self.filelist.setContextMenuPolicy(Qt.CustomContextMenu) self.filelist.customContextMenuRequested.connect(self.menuRequest) self.filelist.doubleClicked.connect(self.onDoubleClick) self.filelistframe = QFrame(self.filelistsplit) sp = SP(SP.Preferred, SP.Preferred) sp.setHorizontalStretch(3) sp.setVerticalStretch(0) sp.setHeightForWidth( self.filelistframe.sizePolicy().hasHeightForWidth()) self.filelistframe.setSizePolicy(sp) self.filelistframe.setFrameShape(QFrame.NoFrame) vbox = QVBoxLayout() vbox.setSpacing(0) vbox.setMargin(0) vbox.addWidget(self.filelisttbar) vbox.addWidget(self.filelist) self.filelistframe.setLayout(vbox) self.fileviewframe = QFrame(self.filelistsplit) sp = SP(SP.Preferred, SP.Preferred) sp.setHorizontalStretch(7) sp.setVerticalStretch(0) sp.setHeightForWidth( self.fileviewframe.sizePolicy().hasHeightForWidth()) self.fileviewframe.setSizePolicy(sp) self.fileviewframe.setFrameShape(QFrame.NoFrame) vbox = QVBoxLayout(self.fileviewframe) vbox.setSpacing(0) vbox.setSizeConstraint(QLayout.SetDefaultConstraint) vbox.setMargin(0) panelframevbox = vbox self.messagesplitter = QSplitter(self.fileviewframe) self.splitternames.append('messagesplitter') sp = SP(SP.Preferred, SP.Expanding) sp.setHorizontalStretch(0) sp.setVerticalStretch(0) sp.setHeightForWidth( self.messagesplitter.sizePolicy().hasHeightForWidth()) self.messagesplitter.setSizePolicy(sp) self.messagesplitter.setMinimumSize(QSize(50, 50)) self.messagesplitter.setFrameShape(QFrame.NoFrame) self.messagesplitter.setLineWidth(0) self.messagesplitter.setMidLineWidth(0) self.messagesplitter.setOrientation(Qt.Vertical) self.messagesplitter.setOpaqueResize(True) self.message = QTextBrowser(self.messagesplitter, lineWrapMode=QTextEdit.NoWrap, openLinks=False) self.message.minimumSizeHint = lambda: QSize(0, 25) self.message.anchorClicked.connect( lambda url: self.linkActivated.emit(url.toString())) sp = SP(SP.Expanding, SP.Expanding) sp.setHorizontalStretch(0) sp.setVerticalStretch(2) sp.setHeightForWidth(self.message.sizePolicy().hasHeightForWidth()) self.message.setSizePolicy(sp) self.message.setMinimumSize(QSize(0, 0)) f = qtlib.getfont('fontcomment') self.message.setFont(f.font()) f.changed.connect(self.forwardFont) self.fileview = HgFileView(self.repo, self.messagesplitter) sp = SP(SP.Expanding, SP.Expanding) sp.setHorizontalStretch(0) sp.setVerticalStretch(5) sp.setHeightForWidth(self.fileview.sizePolicy().hasHeightForWidth()) self.fileview.setSizePolicy(sp) self.fileview.setMinimumSize(QSize(0, 0)) self.fileview.linkActivated.connect(self.linkActivated) self.fileview.setFont(qtlib.getfont('fontdiff').font()) self.fileview.showMessage.connect(self.showMessage) self.fileview.grepRequested.connect(self.grepRequested) self.fileview.revisionSelected.connect(self.revisionSelected) self.filelist.fileSelected.connect(self.fileview.displayFile) self.filelist.fileSelected.connect(self.updateItemFileActions) self.filelist.clearDisplay.connect(self.fileview.clearDisplay) self.revpanel = RevPanelWidget(self.repo) self.revpanel.linkActivated.connect(self.linkActivated) panelframevbox.addWidget(self.revpanel) panelframevbox.addSpacing(5) panelframevbox.addWidget(self.messagesplitter)