def __init__(self, parent, embed=False): QtWidgets.QWidget.__init__(self, parent) if embed: self.setupUi(parent) else: self.setupUi(self) self._in_progress = False # Animation self.animator = QtCore.QTimeLine(ANIM_TIME, self) # Initialize heights of animated widgets self.hideEditBox() # Backend self.iface = Interface() # Fail if no packages provide backend self.checkBackend() # Build "Add New" menu self.buildMenu() # Build filter self.buildFilter() # Build item list self.buildItemList() # User/group edit widgets layout = QtWidgets.QVBoxLayout(self.frameWidget) self.widgetUserEdit = EditUserWidget(self.frameWidget) layout.addWidget(self.widgetUserEdit) self.widgetGroupEdit = EditGroupWidget(self.frameWidget) layout.addWidget(self.widgetGroupEdit) # List user shells self.widgetUserEdit.listShells() # Signals self.comboFilter.currentIndexChanged[int].connect(self.slotFilterChanged) self.pushNew.triggered[QAction].connect(self.slotOpenEdit) self.buttonBox.accepted.connect(self.slotSaveEdit) self.buttonBox.accepted.connect(self.widgetUserEdit.checkFields) self.buttonBox.rejected.connect(self.slotCancelEdit) self.animator.frameChanged[int].connect(self.slotAnimate) self.animator.finished.connect(self.slotAnimationFinished) self.widgetUserEdit.buttonStatusChanged[int].connect(self.slotButtonStatusChanged) self.widgetGroupEdit.buttonStatusChanged[int].connect(self.slotButtonStatusChanged)