def add_items(self): try: pedido, n_simafic, qtd_items = self.pedido.text( ), self.n_simafic.text(), self.qtd_items.text() print("Add Pedido: {} {} {}".format(pedido, n_simafic, qtd_items)) if services.validateCadastro(pedido, n_simafic, qtd_items): print("Add Pedido: {} {} {}".format(pedido, n_simafic, qtd_items)) mb = QMessageBox() mb.setIconPixmap(QPixmap('assets/check_icon_blue2')) mb.setWindowTitle("Sucesso") mb.setText( 'O pedido: {} foi criado com sucesso!'.format(pedido)) services.add_pedido(pedido, n_simafic, qtd_items) mb.exec_() self.update_model_tableview() self.limpar_pedidos() except (ValidationError, DBPedidosException) as error: error_dialog = QErrorMessage() error_dialog.setWindowTitle(error.errors) error_dialog.setWindowIcon(QIcon(main_icon)) error_dialog.showMessage(error.message) error_dialog.exec_() pass
def validaScanInput(self): print('validaScanInput {}'.format(self.input_scanner.text())) try: if services.valida_simafic(s_input=self.input_scanner.text(), pedido=self.pedido): self.pedido.qty_scanneada += 1 self.qtd_parcial_le.setText(str(self.pedido.qty_scanneada)) self.pedido.nome_responsavel = self.count_resp_le.text() self.pedido.id_caixa = self.id_caixa_le.text() services.update_pedido(self.pedido) self.input_scanner.clear() if (self.pedido.qty_scanneada == self.pedido.qty_total): print("Aqui é pra tocar o som") QSound.play('assets/error.wav') self.input_scanner.setDisabled(True) QMessageBox.warning( self, "Item finalizado.", "O Item já atingiu a quantidade cadastrada.") except (ValidationError, DBPedidosException) as error: error_dialog = QErrorMessage() errorSound = QSound('assets/error.wav') errorSound.play() error_dialog.setWindowTitle(error.errors) error_dialog.setWindowIcon(QIcon(main_icon)) error_dialog.showMessage(error.message) self.input_scanner.clear() error_dialog.exec_()
def excluirPedido(self, pedido): try: services.excluirPedidoItem(pedido) self.update_model_tableview() except (ValidationError, DBPedidosException) as error: error_dialog = QErrorMessage() error_dialog.setWindowTitle(error.errors) error_dialog.setWindowIcon(QIcon(main_icon)) error_dialog.showMessage(error.message) error_dialog.exec_()
def validaPedidoInfo(self): try: print("validateInfoScan") services.validateInfoScan(self.count_resp_le.text(), self.id_caixa_le.text(), self.pedido) self.startCount.setDisabled(True) self.count_resp_le.setDisabled(True) self.id_caixa_le.setDisabled(True) self.countElementGroupBox.setDisabled(False) self.input_scanner.setFocus() except (ValidationError, DBPedidosException) as error: error_dialog = QErrorMessage() error_dialog.setWindowTitle(error.errors) error_dialog.setWindowIcon(QIcon(main_icon)) error_dialog.showMessage(error.message) error_dialog.exec_()
def abrirItensDoPedido(self, item): print( "[abrirIItensDoPedido] O Item foi selecionado através de um click na: {} x linha: {}" .format(item.column(), item.row())) pedido = self.tabv_pedidos.model().index(item.row(), 0).data() simafic = self.tabv_pedidos.model().index(item.row(), 1).data() print(pedido, simafic) self.pedidos_selecionados = pedido try: pedido_item = services.get_pedido_x_item(pedido, simafic) print(pedido_item) except (ValidationError, DBPedidosException) as error: error_dialog = QErrorMessage() error_dialog.setWindowTitle(error.errors) error_dialog.setWindowIcon(QIcon(main_icon)) error_dialog.showMessage(error.message) error_dialog.exec_() box = QMessageBox() box.setWindowIcon(QIcon(main_icon)) box.setWindowTitle("Pedido {} selecionado.".format( pedido_item.id_pedido)) box.setText("O que deseja fazer com o item {}?".format( pedido_item.cod_simafic)) box.setStandardButtons(QMessageBox.Open | QMessageBox.Discard | QMessageBox.Cancel) buttonOpen = box.button(QMessageBox.Open) buttonOpen.setText('Alterar') buttonDiscard = box.button(QMessageBox.Discard) buttonDiscard.setText('Excluir') buttonCancel = box.button(QMessageBox.Cancel) buttonCancel.setText('Cancelar') box.exec_() if box.clickedButton() == buttonOpen: print("Alterar...") self.cams = UpdateScreen(pedido_item, parent=self) self.cams.show() elif box.clickedButton() == buttonDiscard: print("Excluir ") self.confirmarExclusao(pedido_item) elif box.clickedButton() == buttonCancel: print("Cancelar ")
def init(): """ Initializes all the objects on the GUI by loading "EMMA.ui" which contains all the necessary UI elements and their placing. References them to properly named objects so they can be used in code. Displays the GUI. """ global app, window, dead, frozen, play_pause_btn, skip_btn, vol_slider, vol_text, pause_EMMA_btn, registe_user_btn, \ camera_img, live_img, prog_img, current_song_text, now_playing_text, register_window app = QApplication(sys.argv) window = EmmaWindow() uic.loadUi(os.path.join(sys.path[0], "user_interface/EMMA.ui"), window) dead = False # Used to signal if EMMA and the GUI should stop. frozen = False # Used to signal if EMMA should pause. # Find and reference the UI elements from EMMA.ui play_pause_btn = window.findChild(QPushButton, 'play_pause_btn') skip_btn = window.findChild(QPushButton, 'skip_btn') pause_EMMA_btn = window.findChild(QPushButton, 'pause_EMMA_btn') register_user_btn = window.findChild(QPushButton, 'register_user_btn') vol_slider = window.findChild(QSlider, 'vol_slider') vol_text = window.findChild(QLabel, 'vol_slider_text') current_song_text = window.findChild(QLabel, 'current_song_text') now_playing_text = window.findChild(QLabel, 'now_playing_text') camera_img = window.findChild(QLabel, 'camera_img') live_img = window.findChild(QLabel, 'live_img') prog_img = window.findChild(QLabel, 'prog_img') GUI_playlist.init(window) # Links the playlist widget to its functions Playlist.set_volume(vol_slider.value()) # Make sure VLC has the same value as the slider initial value. register_window = QErrorMessage() # Pop-up window for registering a user. register_window.setWindowTitle('Face Identification') register_window.setWindowIcon(QIcon('user_interface/emma_icon.png')) # Connects elements to callback functions play_pause_btn.clicked.connect(play_pause) skip_btn.clicked.connect(skip) vol_slider.valueChanged.connect(change_volume) pause_EMMA_btn.clicked.connect(start_pause_EMMA) register_user_btn.clicked.connect(register_user) current_song_text.hide() now_playing_text.hide() buttons_initialize(play_pause, skip) window.show()
def sensor2_get_data(self): try: self.sensor2.getData() except SerialException as se: dg = QErrorMessage() dg.setWindowIcon(QIcon(':/icon.png')) dg.setWindowTitle("Sensor 2 Exception") filename = datetime.now().strftime("sensor2_%Y-%m-%d_%H-%M-%S.csv") dumpFile = open(filename, 'w') dumpFile.write(f"Sensor 2 header: {self.sensor2.header}\n") for i in range(0, len(self.sensor2.buffer)): self.csvFile.write(str(self.sensor2.buffer[i])) dumpFile.close() self.sensor2Group.setChecked(False) self.update_sensor2_group() dg.showMessage(f"Sensor 2 has encountered an exception: {se}") dg.exec_()
global parameters rm = pyvisa.ResourceManager() conDialog = MasterControllerConfigDialog(resourceManager=rm) conDialog.accepted.connect(callback) conDialog.exec_() brooks = rm.open_resource(parameters['resource'], write_termination='\r', read_termination='\r\n') brooks.time_out = 200 try: query = brooks.query('AZI') if "Brooks Instrument,Model 025" not in query: dg = QErrorMessage() dg.setWindowIcon(QIcon(':/icon.png')) dg.setWindowTitle("Unexpected AZI response") dg.showMessage( "AZI response was unexpected. Possibly wrong resource! Check console for response" ) dg.exec_() print(query) sys.exit() except pyvisa.VisaIOError as vioe: dg = QErrorMessage() dg.setWindowIcon(QIcon(':/icon.png')) dg.setWindowTitle("Error in AZI response") dg.showMessage( "There was an error while querying AZI! Check console for stack trace" ) dg.exec_()
class SongForm(QWidget): def __init__(self, main_window): super(SongForm, self).__init__() self.setWindowTitle("Add a song") self.setWindowIcon(QIcon("user_interface/emma_icon.png")) self.setMinimumWidth(300) # Define file selection dialog box self.file_selection = QFileDialog() self.file_selection.setDirectory("audio/tracks") # Database connection self.session_id = 'test' self.db = user_interface.GUI_playlist.db # Buttons self.second_button = QPushButton('Add song') self.second_button.default = True self.second_button.clicked.connect(self.add_song) self.choose_file_button = QPushButton('Pick file') self.choose_file_button.clicked.connect(self.get_song_name) # Form entries self.second_layout = QFormLayout() self.song_name = QLineEdit() self.song_artist = QLineEdit() # Song Genre self.genre = QComboBox() self.add_genre() # Song Dynamics self.dynamics = QComboBox() self.add_dynamics() # Tempo self.tempo = QComboBox() self.add_tempo() # Key self.key = QComboBox() self.add_key() # Lyrics self.lyrics = QComboBox() self.lyrics.addItem('no') self.lyrics.addItem('yes') # Language self.language = QComboBox() self.add_language() # Error popup self.error_window = QErrorMessage() self.error_window.setWindowTitle('There was a problem...') self.error_window.setWindowIcon(QIcon('user_interface/emma_icon.png')) # Add Rows to Form self.second_layout.addRow('Song Artist', self.song_artist) self.second_layout.addRow('Song Name', self.song_name) self.second_layout.addRow('Genre', self.genre) self.second_layout.addRow('Dynamics', self.dynamics) self.second_layout.addRow('Tempo', self.tempo) self.second_layout.addRow('Key', self.key) self.second_layout.addRow('Lyrics', self.lyrics) self.second_layout.addRow('Language', self.language) # Buttons for form self.second_layout.addRow(self.second_button, self.choose_file_button) self.setLayout(self.second_layout) # Returns name of song from MRL def get_song_name(self): name = self.file_selection.getOpenFileName() song = name[0].split('/') song = song[len(song) - 1].replace('.mp3', '') self.song_artist.setText(song.split(' - ')[0]) self.song_name.setText(song.split(' - ')[1]) # Adds the song from the form - should be used to also add to the database def add_song(self): # Check for song name if self.song_name.text() != '': # Check for artist if self.song_artist.text() != '': song_entry = self.song_artist.text( ) + " - " + self.song_name.text() else: song_entry = self.song_name.text() song_in_folder = False for file in os.listdir("./audio/tracks"): if song_entry + '.mp3' == file: song_in_folder = True break if not song_in_folder: self.error_window.showMessage( 'Song file not found in audio/tracks!') self.error_window.exec_() return # Get descriptors descriptors_dict = { 'genre': self.genre.currentText().lower(), 'dynamics': self.dynamics.currentText().lower(), 'tempo': self.tempo.currentText().replace(' ', ''), 'key': self.key.currentText(), 'lyrics': self.lyrics.currentText(), 'language': self.language.currentText().lower() } # Add the song to the database and to the GUI self.add_song_to_db(song_entry, descriptors_dict) playlist = self.db['tracks'] song = playlist.find_one({"name": song_entry}) user_interface.GUI_playlist.add_entry(song) self.song_name.clear() self.song_artist.clear() self.close() else: self.error_window.showMessage('Song name needed!') self.error_window.exec_() # Adds a song to the database def add_song_to_db(self, name, descriptors): Tracklist.add_song(self.db, name, descriptors) # These are self explanatory def add_genre(self): self.genre.addItem('Rock') self.genre.addItem('Metal') self.genre.addItem('Electronic') self.genre.addItem('R&B') self.genre.addItem('Pop') self.genre.addItem('Folk') self.genre.addItem('Latin') self.genre.addItem('Punk') self.genre.addItem('Jazz') self.genre.addItem('Blues') self.genre.addItem('Classical') self.genre.addItem('Country') def add_dynamics(self): self.dynamics.addItem('Low') self.dynamics.addItem('Medium') self.dynamics.addItem('High') def add_tempo(self): self.tempo.addItem('< 30') self.tempo.addItem('40 - 60') self.tempo.addItem('60 - 66') self.tempo.addItem('66 - 76') self.tempo.addItem('76 - 108') self.tempo.addItem('108 - 120') self.tempo.addItem('120 - 168') self.tempo.addItem('200+') def add_key(self): self.key.addItem('A major') self.key.addItem('A minor') self.key.addItem('Ab major') self.key.addItem('Ab minor') self.key.addItem('B major') self.key.addItem('B minor') self.key.addItem('Bb major') self.key.addItem('Bb minor') self.key.addItem('C major') self.key.addItem('C minor') self.key.addItem('D major') self.key.addItem('D minor') self.key.addItem('Db major') self.key.addItem('Db minor') self.key.addItem('E major') self.key.addItem('E minor') self.key.addItem('Eb major') self.key.addItem('Eb minor') self.key.addItem('F major') self.key.addItem('F minor') self.key.addItem('F# major') self.key.addItem('F# minor') self.key.addItem('G major') self.key.addItem('G minor') def add_language(self): self.language.addItem('None') self.language.addItem('Romanian') self.language.addItem('English') self.language.addItem('Dutch') self.language.addItem('German') self.language.addItem('Portuguese') self.language.addItem('Lithuanian') self.language.addItem('Spanish') self.language.addItem('French') self.language.addItem('Italian') self.language.addItem('Other')