def __init__(self, parent): QtGui.QWidget.__init__(self, parent) self.layout = QtGui.QGridLayout(self) self.treeWidget = AppointmentsTreeListWidget(self) self.treeWidget.showCheckBoxes = True self.layout.addWidget(self.treeWidget, 0, 0, 5, 1) self.appointmentWidget = SingleAppointmentWidget(self) self.appointmentWidget.setFixedHeight(170) self.appointmentWidget.setFixedWidth(280) self.appointmentWidget.commandIssued.connect(self.emitCommand) self.layout.addWidget(self.appointmentWidget, 0, 1, 1, 1) self._vacantCandidatesText = QtGui.QLabel('0 appointments are vacant') self.layout.addWidget(self._vacantCandidatesText, 1, 1, 1, 1) self._selectedCandidatesText = QtGui.QLabel('0 appointments are selected') self.layout.addWidget(self._selectedCandidatesText, 2, 1, 1, 1) self._vacantSelectedText = QtGui.QLabel('0 appointments are vacant and selected') self.layout.addWidget(self._vacantSelectedText, 3, 1, 1, 1) self._fillButton = QtGui.QPushButton('Fill these appointments') self._fillButton.clicked.connect(self.autofill) self.layout.addWidget(self._fillButton, 4, 1, 1, 1) self.candidatesWidget = CandidatesWidget(self) self.layout.addWidget(self.candidatesWidget, 0, 2, 5, 1) self.treeWidget.appointmentSelected.connect(self.appointmentWidget.appointment) self.treeWidget.appointmentSelected.connect(self.candidatesWidget.appointment) self.treeWidget.checkedChanged.connect(self._updateSelectedAppointmentsText) self.treeWidget.vacantAppointmentsChanged.connect(self._updateVacantAppointmentsText) self.candidatesWidget.candidateSelected.connect(self.appointmentWidget.appoint)
class VacanciesWidget(QtGui.QWidget): commandIssued = QtCore.pyqtSignal(QtGui.QUndoCommand) criticalCommandIssued = QtCore.pyqtSignal() def __init__(self, parent): QtGui.QWidget.__init__(self, parent) self.layout = QtGui.QGridLayout(self) self.treeWidget = AppointmentsTreeListWidget(self) self.treeWidget.showCheckBoxes = True self.layout.addWidget(self.treeWidget, 0, 0, 5, 1) self.appointmentWidget = SingleAppointmentWidget(self) self.appointmentWidget.setFixedHeight(170) self.appointmentWidget.setFixedWidth(280) self.appointmentWidget.commandIssued.connect(self.emitCommand) self.layout.addWidget(self.appointmentWidget, 0, 1, 1, 1) self._vacantCandidatesText = QtGui.QLabel('0 appointments are vacant') self.layout.addWidget(self._vacantCandidatesText, 1, 1, 1, 1) self._selectedCandidatesText = QtGui.QLabel('0 appointments are selected') self.layout.addWidget(self._selectedCandidatesText, 2, 1, 1, 1) self._vacantSelectedText = QtGui.QLabel('0 appointments are vacant and selected') self.layout.addWidget(self._vacantSelectedText, 3, 1, 1, 1) self._fillButton = QtGui.QPushButton('Fill these appointments') self._fillButton.clicked.connect(self.autofill) self.layout.addWidget(self._fillButton, 4, 1, 1, 1) self.candidatesWidget = CandidatesWidget(self) self.layout.addWidget(self.candidatesWidget, 0, 2, 5, 1) self.treeWidget.appointmentSelected.connect(self.appointmentWidget.appointment) self.treeWidget.appointmentSelected.connect(self.candidatesWidget.appointment) self.treeWidget.checkedChanged.connect(self._updateSelectedAppointmentsText) self.treeWidget.vacantAppointmentsChanged.connect(self._updateVacantAppointmentsText) self.candidatesWidget.candidateSelected.connect(self.appointmentWidget.appoint) def eventsModel(self, eventModel): self.treeWidget.eventsModel(eventModel) def populationModel(self, populationModel): self.candidatesWidget.populationModel(populationModel) @QtCore.pyqtSlot(int, int) def _updateSelectedAppointmentsText(self, n_selected_items, n_selected_vacant_items): self._selectedCandidatesText.setText(str(n_selected_items) + ' appointments are selected') self._vacantSelectedText.setText(str(n_selected_vacant_items) + ' appointments are selected and vacant') @QtCore.pyqtSlot(int, int) def _updateVacantAppointmentsText(self, n_vacant_items, n_selected_vacant_items): self._vacantCandidatesText.setText(str(n_vacant_items) + ' appointments are vacant') self._vacantSelectedText.setText(str(n_selected_vacant_items) + ' appointments are selected and vacant') @QtCore.pyqtSlot() def autofill(self): people = self.candidatesWidget.population() appointments_to_fill = self.treeWidget.checkedVacantAppointments() all_appointments = self.treeWidget.appointments() autoFill(all_appointments, appointments_to_fill, people) @QtCore.pyqtSlot(QtGui.QUndoCommand) def emitCommand(self, command): self.commandIssued.emit(command)