示例#1
0
    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
示例#2
0
 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_()
示例#3
0
    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_()
示例#4
0
    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_()
示例#5
0
    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 ")
示例#6
0
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()
示例#7
0
    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_()
示例#8
0
    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_()
示例#9
0
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')