class MainWindow(QtWidgets.QMainWindow): def __init__(self, parent=None): super().__init__(parent) self.trayIconMenu = QtWidgets.QMenu(self) self.settingsDialog = None self.addTrayAction() self.addTrayIcon() def addTrayAction(self): self.startAction = QtWidgets.QAction("Run", self, triggered=self.runKiller) self.stopAction = QtWidgets.QAction("Stop", self, triggered=self.stopKiller) self.settingAction = QtWidgets.QAction( "Settings", self, triggered=self.showSettingsDialog) self.quitAction = QtWidgets.QAction( "Quit", self, triggered=QtWidgets.QApplication.instance().quit) def refreshTrayMenu(self): self.trayIconMenu.clear() if common.isRunning(): self.trayIconMenu.addAction(self.stopAction) else: self.trayIconMenu.addAction(self.startAction) self.trayIconMenu.addAction(self.settingAction) self.trayIconMenu.addSeparator() self.trayIconMenu.addAction(self.quitAction) def addTrayIcon(self): self.trayIcon = QtWidgets.QSystemTrayIcon(self) self.trayIcon.setContextMenu(self.trayIconMenu) self.trayIcon.setIcon(common.getIcon()) self.trayIcon.show() def runKiller(self): common.run() self.refreshTrayMenu() def stopKiller(self): common.stop() self.refreshTrayMenu() def showSettingsDialog(self): if self.settingsDialog: return self.settingsDialog = SettingsDialog() self.settingsDialog.finished.connect(self.onSettingsDialogFinished) self.settingsDialog.show() def onSettingsDialogFinished(self, result): self.settingsDialog = None def onRunningStateChanged(self): self.refreshTrayMenu()
def show_settings(self): settingsDialog = SettingsDialog(self.settings_dict, self) settingsDialog.settings_accepted.connect(self.updateSettings) settingsDialog.show()
def showOptions(self): s = SettingsDialog(self) s.show()
class MainWindow(QMainWindow, Ui_Main): def __init__(self): QMainWindow.__init__(self) Ui_Main.__init__(self) self.setupUi(self) self.get_saved_ingredients() self.update_drink_list() self.serial = QtSerialPort.QSerialPort('/dev/ttyACM0', readyRead=self.receive) self.serial.open(QtCore.QIODevice.OpenModeFlag.ReadWrite) if not self.serial.isOpen(): print("Initializing without Serial.") self.loadingDialog = LoadingDialog(self) self.passwordDialog = PasswordDialog(self) self.settingsDialog = SettingsDialog(self) self.init_animations() self.setWindowTitle("Choisissez une boisson!") self.settings.clicked.connect(self.open_password) def receive(self): while self.serial.canReadLine(): text = self.serial.readLine().data().decode('ascii').strip('\r\n') if text == "Gobelet OK": pump = self.get_pump() # self.gif_gobelet.stop() self.gif_conveyor.start() self.loadingDialog.step.setText( f"Moving carpet to position {pump}") self.serial.write(f"C{pump};".encode()) elif text == "Carpet OK": pump = self.get_pump() self.gif_conveyor.stop() self.gif_glass.start() self.loadingDialog.step.setText(f"Pumping at position {pump}") self.serial.write( f"P{pump}-{list(self.ing_dict.values())[0]};".encode()) self.ing_dict.pop(list(self.ing_dict.keys())[0]) elif text == "Pump OK": self.gif_glass.stop() self.gif_conveyor.start() if len(self.ing_dict) != 0: pump = self.get_pump() self.loadingDialog.step.setText( f"Moving carpet to position {pump}") self.serial.write(f"C{pump};".encode()) else: self.loadingDialog.step.setText("Moving carpet to the end") self.serial.write("End;".encode()) elif text == "End OK": self.gif_conveyor.stop() self.loadingDialog.finishedDialog.setModal(True) self.loadingDialog.finishedDialog.show() def get_pump(self): key = list(self.ing_dict.keys())[0] if key == self.settingsDialog.name1.text(): pump = 1 elif key == self.settingsDialog.name2.text(): pump = 2 elif key == self.settingsDialog.name3.text(): pump = 3 elif key == self.settingsDialog.name4.text(): pump = 4 elif key == self.settingsDialog.name5.text(): pump = 5 elif key == self.settingsDialog.name6.text(): pump = 6 return pump def update_drink_list(self): self.scrollContents = QtWidgets.QWidget() self.verticalLayout = QtWidgets.QVBoxLayout(self.scrollContents) self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setSpacing(20) self.create_cocktails() for i, cocktail in enumerate(self.current_cocktails): button = CustomButton(self, cocktail) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) button.setSizePolicy(sizePolicy) button.setMinimumSize(QtCore.QSize(300, 200)) self.gridLayout.addWidget(button, i // 3, i % 3) self.verticalLayout.addLayout(self.gridLayout) self.scrollArea.setWidget(self.scrollContents) def create_cocktails(self): self.current_cocktails = [] for name, cocktail_info in cocktails.items(): n = 0 for ingredient in cocktail_info[0].keys(): if ingredient in self.current_ingredients: n += 1 if n == len(cocktail_info[0]): self.current_cocktails.append(name) def get_saved_ingredients(self): try: with open('save.json', 'r') as file: self.current_ingredients = json.load(file) except FileNotFoundError: self.current_ingredients = ['', '', '', '', '', ''] def set_saved_ingredients(self): self.current_ingredients = [ self.settingsDialog.name1.text(), self.settingsDialog.name2.text(), self.settingsDialog.name3.text(), self.settingsDialog.name4.text(), self.settingsDialog.name5.text(), self.settingsDialog.name6.text() ] with open('save.json', 'w') as file: json.dump(self.current_ingredients, file) def open_password(self): self.passwordDialog.setModal(True) self.passwordDialog.show() def open_settings(self): self.settingsDialog.setModal(True) self.settingsDialog.show() def create_ing_dict(self, text): """Creates the dictionary of ingredients needed for the needed cocktail.""" self.ing_dict = {} for key, value in cocktails.items(): if key == text: self.ing_dict = copy.copy(value[0]) break def init_animations(self): self.gif_conveyor = QtGui.QMovie(":/Logo/conveyor.gif") self.gif_conveyor.setScaledSize(QSize(512, 100)) self.loadingDialog.conveyor.setMovie(self.gif_conveyor) self.gif_conveyor.start() self.gif_conveyor.stop() self.gif_glass = QtGui.QMovie(":/Logo/glass.gif") self.gif_glass.setScaledSize(QSize(100, 125)) self.loadingDialog.glass.setMovie(self.gif_glass) self.gif_glass.start() self.gif_glass.stop()
def openSettings(self): settings_dialog = SettingsDialog(self) settings_dialog.show()