class Title(QWidget): def __init__(self, foldable_data, parent=None): QWidget.__init__(self, parent) self.foldable = False #Contained widgets self.fold_button = FoldButton() self.noop_button = NoopButton() self.name = QLabel() self.abstract = foldable_data.abstract self.edit_button = EditButton() #Layout box = QHBoxLayout(self) box.setMargin(0) box.setAlignment(Qt.AlignLeft) box.addWidget(self.fold_button) box.addWidget(self.noop_button) box.addWidget(self.name) box.addWidget(self.abstract) box.addStretch() box.addWidget(self.edit_button) self.setFoldable(True) #SIGNALS to update content self.connect(foldable_data, SIGNAL('name changed'), self.setName) self.connect(foldable_data, SIGNAL('menu changed'), self.setMenu) #Initialize content self.setName(foldable_data.name) self.setMenu(foldable_data.menu) def setName(self, name): self.name.setText('<h2>%s</h2>' % name) def setMenu(self, menu): self.edit_button.setMenu(menu) def mouseDoubleClickEvent(self, event): """ double clicking on elements' title bar has the same effect as clicking on expand/collapse button """ if not self.foldable: return self.fold_button.emit(SIGNAL('clicked()')) def setFoldable(self, foldable): if foldable == self.foldable: return self.foldable = foldable if foldable: self.fold_button.show() self.noop_button.hide() return self.fold_button.hide() self.noop_button.show()
def __init__(self, foldable_data, parent=None): QWidget.__init__(self, parent) self.foldable = False #Contained widgets self.fold_button = FoldButton() self.noop_button = NoopButton() self.name = QLabel() self.abstract = foldable_data.abstract self.edit_button = EditButton() #Layout box = QHBoxLayout(self) box.setMargin(0) box.setAlignment(Qt.AlignLeft) box.addWidget(self.fold_button) box.addWidget(self.noop_button) box.addWidget(self.name) box.addWidget(self.abstract) box.addStretch() box.addWidget(self.edit_button) self.setFoldable(True) #SIGNALS to update content self.connect(foldable_data, SIGNAL('name changed'), self.setName) self.connect(foldable_data, SIGNAL('menu changed'), self.setMenu) #Initialize content self.setName(foldable_data.name) self.setMenu(foldable_data.menu)