Exemplo n.º 1
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.scrollArea.hide()
        self.ui.pushButton.clicked.connect(self.button_clicked)
        self.ui.data_output1.hide()
        self.ui.data_output2.hide()
Exemplo n.º 2
0
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # MAIN WINDOW LABEL
        self.ui.Patient.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.Patient_Information))
        self.ui.Platform.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.Platform_Running))
        self.ui.Add_Patient.clicked.connect(self.Add_Patient)
        self.ui.Save_Patient_Info.clicked.connect(self.Save_Patient)
        self.ui.Save_Patient_Info_2.clicked.connect(self.Delete_Patient)

        # Populate lists
        self.Reload_Lists()
        self.ui.listWidget.itemSelectionChanged.connect(self.Update_Patient_Fields)
Exemplo n.º 3
0
    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # calling method for getting path to the music folder
        self.ui.actionSelect_folder.triggered.connect(self.getPath)
        # calling method for selection the item from combo box
        self.ui.filesList.activated.connect(self.comBoxSelect)

        # calling method which allow work with play-pause button
        self.ui.playPauseBtn.clicked.connect(self.playPause)

        # calling methods for "previous", "next" buttons
        self.ui.prevBtn.clicked.connect(self.playPrev)
        self.ui.nxtBtn.clicked.connect(self.playNext)

        self.ui.playingTimeline.setMinimum(0)
Exemplo n.º 4
0
    def __init__(self):
        self.main_win = QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.main_win)

        # Load Vehicle Data
        local_vehicle_data = pd.read_csv("vehicles.csv",sep=";",engine='python')

        # Set Vehicle SortBy Options
        local_vehicle_data_headers = []
        for col in global_vehicle_data.columns:
            if col != "Index":
                local_vehicle_data_headers += [col]

        # Configure Vehicle Table
        vmodel = DataFrameModel(local_vehicle_data)
        self.ui.tableVehicle.setModel(vmodel)
        self.ui.tableVehicle.setColumnHidden(0,True)
        self.ui.tableVehicle.setColumnHidden(8, True)
        self.set_vheaders()

        # Load Garage Data
        local_garage_data = pd.read_csv("garages.csv", sep=";", engine='python')

        # Load Garage SortBy Options
        local_garage_data_headers = []
        for col in local_garage_data.columns:
            if col != "Index":
                local_garage_data_headers += [col]

        # Configure Garage Table
        gmodel = DataFrameModel(local_garage_data)
        self.ui.tableGarage.setModel(gmodel)
        self.ui.tableGarage.setColumnHidden(0, True)
        self.set_gheaders()

        # Populate Vehicle SortBy Combo Box
        for idx in range(0, len(local_vehicle_data_headers)):
            if local_vehicle_data_headers[idx] != "Pegasus":
                self.ui.comboVehiclesSortBy.addItem(local_vehicle_data_headers[idx])

        # Populate Garages SortBy Combo Box
        for idx in range(0, len(local_garage_data_headers)):
            self.ui.comboGaragesSortBy.addItem(local_garage_data_headers[idx])

        # Set Vehicles as Active Tab
        self.ui.tabWidget.setCurrentWidget(self.ui.tabVehicles)

        # Load Garage Data into List
        for idx in range(0, len(local_garage_data['Name'])):
            if local_garage_data['Owned'][idx] == True:
                self.ui.listDashboard.addItem(local_garage_data['Name'][idx])
        self.ui.listDashboard.addItem("Pegasus Vehicles")
        self.ui.listDashboard.addItem("Wishlist")
        self.ui.listDashboard.setCurrentRow(0)

        # Configure Dashboard Table
        dtmodel = DataFrameModel(local_vehicle_data)
        target = self.ui.listDashboard.currentItem().text()
        vehicle_data = pd.read_csv("vehicles.csv", sep=";")
        filtered_vehicle_list = vehicle_data[vehicle_data['Garage'].str.contains(target) == True]
        dtmodel = DataFrameModel(filtered_vehicle_list)
        self.ui.tableDashboard.setModel(dtmodel)
        self.ui.tableDashboard.setColumnHidden(0, True)
        self.ui.tableDashboard.setColumnHidden(8, True)
        self.ui.tableDashboard.setModel(dtmodel)
        self.set_dtheaders()


        # Connections to Slots
        self.ui.comboVehiclesSortBy.activated.connect(self.vehicle_sort_criteria_changed)
        self.ui.comboGaragesSortBy.activated.connect(self.garage_sort_criteria_changed)
        self.ui.tableVehicle.doubleClicked.connect(lambda: self.table_vehicle_clicked())
        self.ui.tableGarage.doubleClicked.connect(lambda: self.table_garage_clicked())
        self.ui.pushVehicleSearch.clicked.connect(lambda: self.table_vehicle_search())
        self.ui.pushGarageSearch.clicked.connect(lambda: self.table_garage_search())
        self.ui.listDashboard.clicked.connect(lambda: self.dashboard_list_clicked())
        self.ui.listDashboard.selectionModel().currentChanged.connect(lambda: self.dashboard_list_clicked())
        self.ui.tableDashboard.doubleClicked.connect(lambda: self.table_dashboard_clicked())
        self.ui.actionTimerOpen.triggered.connect(lambda: subprocess.Popen(['python3', 'QtGTATimer.py']))
        self.ui.actionQuit.triggered.connect(lambda: sys.exit())
Exemplo n.º 5
0
class MainWindow():
    def __init__(self):
        self.main_win = QMainWindow()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self.main_win)

        # Load Vehicle Data
        local_vehicle_data = pd.read_csv("vehicles.csv",sep=";",engine='python')

        # Set Vehicle SortBy Options
        local_vehicle_data_headers = []
        for col in global_vehicle_data.columns:
            if col != "Index":
                local_vehicle_data_headers += [col]

        # Configure Vehicle Table
        vmodel = DataFrameModel(local_vehicle_data)
        self.ui.tableVehicle.setModel(vmodel)
        self.ui.tableVehicle.setColumnHidden(0,True)
        self.ui.tableVehicle.setColumnHidden(8, True)
        self.set_vheaders()

        # Load Garage Data
        local_garage_data = pd.read_csv("garages.csv", sep=";", engine='python')

        # Load Garage SortBy Options
        local_garage_data_headers = []
        for col in local_garage_data.columns:
            if col != "Index":
                local_garage_data_headers += [col]

        # Configure Garage Table
        gmodel = DataFrameModel(local_garage_data)
        self.ui.tableGarage.setModel(gmodel)
        self.ui.tableGarage.setColumnHidden(0, True)
        self.set_gheaders()

        # Populate Vehicle SortBy Combo Box
        for idx in range(0, len(local_vehicle_data_headers)):
            if local_vehicle_data_headers[idx] != "Pegasus":
                self.ui.comboVehiclesSortBy.addItem(local_vehicle_data_headers[idx])

        # Populate Garages SortBy Combo Box
        for idx in range(0, len(local_garage_data_headers)):
            self.ui.comboGaragesSortBy.addItem(local_garage_data_headers[idx])

        # Set Vehicles as Active Tab
        self.ui.tabWidget.setCurrentWidget(self.ui.tabVehicles)

        # Load Garage Data into List
        for idx in range(0, len(local_garage_data['Name'])):
            if local_garage_data['Owned'][idx] == True:
                self.ui.listDashboard.addItem(local_garage_data['Name'][idx])
        self.ui.listDashboard.addItem("Pegasus Vehicles")
        self.ui.listDashboard.addItem("Wishlist")
        self.ui.listDashboard.setCurrentRow(0)

        # Configure Dashboard Table
        dtmodel = DataFrameModel(local_vehicle_data)
        target = self.ui.listDashboard.currentItem().text()
        vehicle_data = pd.read_csv("vehicles.csv", sep=";")
        filtered_vehicle_list = vehicle_data[vehicle_data['Garage'].str.contains(target) == True]
        dtmodel = DataFrameModel(filtered_vehicle_list)
        self.ui.tableDashboard.setModel(dtmodel)
        self.ui.tableDashboard.setColumnHidden(0, True)
        self.ui.tableDashboard.setColumnHidden(8, True)
        self.ui.tableDashboard.setModel(dtmodel)
        self.set_dtheaders()


        # Connections to Slots
        self.ui.comboVehiclesSortBy.activated.connect(self.vehicle_sort_criteria_changed)
        self.ui.comboGaragesSortBy.activated.connect(self.garage_sort_criteria_changed)
        self.ui.tableVehicle.doubleClicked.connect(lambda: self.table_vehicle_clicked())
        self.ui.tableGarage.doubleClicked.connect(lambda: self.table_garage_clicked())
        self.ui.pushVehicleSearch.clicked.connect(lambda: self.table_vehicle_search())
        self.ui.pushGarageSearch.clicked.connect(lambda: self.table_garage_search())
        self.ui.listDashboard.clicked.connect(lambda: self.dashboard_list_clicked())
        self.ui.listDashboard.selectionModel().currentChanged.connect(lambda: self.dashboard_list_clicked())
        self.ui.tableDashboard.doubleClicked.connect(lambda: self.table_dashboard_clicked())
        self.ui.actionTimerOpen.triggered.connect(lambda: subprocess.Popen(['python3', 'QtGTATimer.py']))
        self.ui.actionQuit.triggered.connect(lambda: sys.exit())

    def set_vheaders(self):
        vheader = self.ui.tableVehicle.horizontalHeader()
        vheader.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
        vheader.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
        vheader.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
        vheader.setSectionResizeMode(4, QtWidgets.QHeaderView.Stretch)
        vheader.setSectionResizeMode(5, QtWidgets.QHeaderView.Stretch)
        vheader.setSectionResizeMode(6, QtWidgets.QHeaderView.Stretch)
        vheader.setSectionResizeMode(7, QtWidgets.QHeaderView.ResizeToContents)

    def set_gheaders(self):
        gheader = self.ui.tableGarage.horizontalHeader()
        gheader.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
        gheader.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
        gheader.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
        gheader.setSectionResizeMode(4, QtWidgets.QHeaderView.Stretch)
        gheader.setSectionResizeMode(5, QtWidgets.QHeaderView.ResizeToContents)

    def set_dtheaders(self):
        dtheader = self.ui.tableDashboard.horizontalHeader()
        dtheader.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
        dtheader.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
        dtheader.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
        dtheader.setSectionResizeMode(4, QtWidgets.QHeaderView.Stretch)
        dtheader.setSectionResizeMode(5, QtWidgets.QHeaderView.Stretch)
        dtheader.setSectionResizeMode(6, QtWidgets.QHeaderView.Stretch)
        dtheader.setSectionResizeMode(7, QtWidgets.QHeaderView.ResizeToContents)

    def dashboard_list_clicked(self):
        target = ""
        for ix in self.ui.listDashboard.selectedIndexes():
            col = ix.column()
            target = ix.data(Qt.DisplayRole)
        vehicle_data = pd.read_csv("vehicles.csv",sep=";")
        list_info = { "Index": [], "Vehicle": [], "Class": [], "Owned": [], "Pegasus": [], "Wishlist": [], "Garage": [] }
        if target == "Pegasus Vehicles":
            for idx in range(0,len(vehicle_data['Vehicle'])):
                if vehicle_data['Pegasus'][idx] == True and vehicle_data['Owned'][idx] == True:
                    list_info["Index"].append(str(vehicle_data['Index'][idx]))
                    list_info["Vehicle"].append(str(vehicle_data['Vehicle'][idx]))
                    list_info["Class"].append(str(vehicle_data['Class'][idx]))
                    list_info["Owned"].append(str(vehicle_data['Owned'][idx]))
                    list_info["Pegasus"].append(str(vehicle_data['Pegasus'][idx]))
                    list_info["Wishlist"].append(str(vehicle_data['Wishlist'][idx]))
                    list_info["Garage"].append(str(vehicle_data['Garage'][idx]))
            filtered_vehicle_list = pd.DataFrame({"Index": list_info["Index"], "Vehicle": list_info["Vehicle"],
                                                  "Class": list_info["Class"],"Owned": list_info["Owned"],
                                                  "Pegasus": list_info["Pegasus"], "Wishlist": list_info["Wishlist"],
                                                  "Garage": list_info["Garage"]
                                                  })
        elif target == "Wishlist":
            for idx in range(0, len(vehicle_data['Vehicle'])):
                if vehicle_data['Wishlist'][idx] == True:
                    list_info["Index"].append(str(vehicle_data['Index'][idx]))
                    list_info["Vehicle"].append(str(vehicle_data['Vehicle'][idx]))
                    list_info["Class"].append(str(vehicle_data['Class'][idx]))
                    list_info["Owned"].append(str(vehicle_data['Owned'][idx]))
                    list_info["Pegasus"].append(str(vehicle_data['Pegasus'][idx]))
                    list_info["Wishlist"].append(str(vehicle_data['Wishlist'][idx]))
                    list_info["Garage"].append(str(vehicle_data['Garage'][idx]))
                filtered_vehicle_list = pd.DataFrame({"Index": list_info["Index"], "Vehicle": list_info["Vehicle"],
                                                      "Class": list_info["Class"], "Owned": list_info["Owned"],
                                                      "Pegasus": list_info["Pegasus"],
                                                      "Wishlist": list_info["Wishlist"],
                                                      "Garage": list_info["Garage"]
                                                      })
        else:
            filtered_vehicle_list = vehicle_data[vehicle_data['Garage'].str.contains(target)==True]
        dtmodel = DataFrameModel(filtered_vehicle_list)
        self.ui.tableDashboard.setModel(dtmodel)
        self.ui.tableDashboard.setColumnHidden(0, True)
        self.ui.tableDashboard.setColumnHidden(8, True)
        self.set_dtheaders()

    def table_dashboard_clicked(self):
        for ix in self.ui.tableDashboard.selectedIndexes():
            col = ix.column()
            target = ix.data(Qt.DisplayRole)
        if col == 1:
            self.child_win = VehicleEditor(target)
            self.child_win.exec_()
        self.dashboard_list_clicked()

    def table_vehicle_search(self):
        vehicle_data = pd.read_csv("vehicles.csv",sep=';')
        filtered_vehicle_data = vehicle_data[vehicle_data['Vehicle'].str.contains(self.ui.lineVehicleSearch.text())==True]
        vmodel = DataFrameModel(filtered_vehicle_data)
        self.ui.tableVehicle.setModel(vmodel)
        self.ui.tableVehicle.setColumnHidden(0, True)
        self.set_vheaders()

    def table_garage_search(self):
        garage_data = pd.read_csv("garages.csv",sep=';')
        filtered_garage_data = garage_data[garage_data['Name'].str.contains(self.ui.lineGarageSearch.text())==True]
        gmodel = DataFrameModel(filtered_garage_data)
        self.ui.tableGarage.setModel(gmodel)
        self.ui.tableGarage.setColumnHidden(0, True)
        self.set_gheaders()

    def table_vehicle_clicked(self):
        for ix in self.ui.tableVehicle.selectedIndexes():
            col = ix.column()
            target = ix.data(Qt.DisplayRole)
        if col == 1:
            self.child_win = VehicleEditor(target)
            self.child_win.exec_()
            if self.ui.lineVehicleSearch.text() != "":
                self.table_vehicle_search()
            else:
                vmodel = DataFrameModel(pd.read_csv("vehicles.csv",sep=';'))
                self.ui.tableVehicle.setModel(vmodel)
                self.ui.tableVehicle.setColumnHidden(0, True)
                self.set_vheaders()

    def table_garage_clicked(self):
        for ix in self.ui.tableGarage.selectedIndexes():
            col = ix.column()
            target = ix.data(Qt.DisplayRole)
        if col == 1:
            self.child_win = GarageEditor(target)
            self.child_win.exec_()
            if self.ui.lineGarageSearch.text() != "":
                self.table_garage_search()
            else:
                gmodel = DataFrameModel(pd.read_csv("garages.csv",sep=';'))
                self.ui.tableGarage.setModel(gmodel)
                self.ui.tableGarage.setColumnHidden(0, True)
                self.set_gheaders()

    def vehicle_sort_criteria_changed(self):
        sort_criteria = self.ui.comboVehiclesSortBy.currentText()
        vehicle_data = pd.read_csv("vehicles.csv",sep=";",engine='python')
        new_vehicle_data = vehicle_data.sort_values(sort_criteria)
        new_vehicle_data.to_csv("vehicles.csv", index=False, header=True,sep=";")

        vmodel = DataFrameModel(pd.read_csv("vehicles.csv",sep=";",engine='python'))
        self.ui.tableVehicle.setModel(vmodel)

    def garage_sort_criteria_changed(self):
        sort_criteria = self.ui.comboGaragesSortBy.currentText()
        garage_data = pd.read_csv("garages.csv",sep=";",engine='python')
        new_garage_data = garage_data.sort_values(sort_criteria)
        new_garage_data.to_csv("garages.csv", index=False, header=True,sep=";")

        gmodel = DataFrameModel(pd.read_csv("garages.csv",sep=";",engine='python'))
        self.ui.tableGarage.setModel(gmodel)

    def show(self):
        self.main_win.show()
Exemplo n.º 6
0
class mywindow(QtWidgets.QMainWindow, ProgressMusic):
    filesInDir: list
    isPaused: bool
    path: str

    def __init__(self):
        super(mywindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # calling method for getting path to the music folder
        self.ui.actionSelect_folder.triggered.connect(self.getPath)
        # calling method for selection the item from combo box
        self.ui.filesList.activated.connect(self.comBoxSelect)

        # calling method which allow work with play-pause button
        self.ui.playPauseBtn.clicked.connect(self.playPause)

        # calling methods for "previous", "next" buttons
        self.ui.prevBtn.clicked.connect(self.playPrev)
        self.ui.nxtBtn.clicked.connect(self.playNext)

        self.ui.playingTimeline.setMinimum(0)

    def nxtSong(self):
        file = self.filesInDir[self.ui.filesList.currentIndex() + 1]
        player.setFile(file)
        player.pyGMix.music.play()

    def setEndPos(self, path: str):
        song = MP3(path)
        seconds = song.info.length
        endPos = str(int((seconds) / 60)) + "." + str(round(seconds % 60, 2))
        self.ui.endPos.setText(endPos)
        self.ui.playingTimeline.setMaximum(seconds * 1000)

    def startProgressCount(self):
        self.thread = ProgressMusic()
        self.thread.currTime.connect(self.setProgressValue)
        self.thread.start()

    def setProgressValue(self, val):
        self.ui.curPos.setText(convert(val))
        self.ui.playingTimeline.setValue(val)

    def getMusicList(self):
        # gething all .mp3 files from selected folder
        self.filesInDir = glob.glob(f"{self.path}/*.mp3")

        # set isPaused none for play that file from beginnig
        self.isPaused = None

        # if in folder exist some .mp3 files, we load the firts one
        if len(self.filesInDir) > 0:
            player.setFile(self, self.filesInDir[0])
            self.setEndPos(self.filesInDir[0])

            # enabling bottons
            self.ui.playPauseBtn.setDisabled(False)
            self.ui.nxtBtn.setDisabled(False)
            self.ui.prevBtn.setDisabled(False)

            # adding items to combo box from list
            for i in self.filesInDir:
                self.ui.filesList.addItem(i)

    def comBoxSelect(self):
        print(str(self.ui.filesList.currentText()))

        # loading selected in check-box file
        player.setFile(self, str(self.ui.filesList.currentText()))

        # playing the selected file
        player.pyGMix.music.play()
        self.setEndPos(self.filesInDir[self.ui.filesList.currentIndex()])
        # set isPauset as False to know that file is playing
        self.isPaused = False
        self.ui.playPauseBtn.setText("Pause")

    # play-pause button method
    def playPause(self):
        # if file is first we start them from beginning
        if self.isPaused is None:
            player.pyGMix.music.play()
            self.startProgressCount()
            self.isPaused = False

        # if file is playing we pausing them
        elif not self.isPaused:
            player.pyGMix.music.pause()
            self.ui.playPauseBtn.setText("Continue")
            self.isPaused = True
        # if file is paused we unpause them
        else:
            player.pyGMix.music.unpause()
            self.ui.playPauseBtn.setText("Pause")
            self.isPaused = False

    def getPath(self):
        self.path = str(QtWidgets.QFileDialog.getExistingDirectory())
        self.getMusicList()

    def playPrev(self):
        currIndex = int(self.ui.filesList.currentIndex() - 1)
        if currIndex < 0 or (currIndex >= len(self.filesInDir)):
            currIndex = int(self.ui.filesList.currentIndex())

        filePath = self.filesInDir[currIndex]

        self.ui.filesList.setCurrentIndex(currIndex)

        self.setEndPos(filePath)

        player.setFile(self, str(filePath))
        player.pyGMix.music.play()
        #self.startProgressCount()

    def playNext(self):
        currIndex = int(self.ui.filesList.currentIndex() + 1)

        if currIndex < 0 or (currIndex >= len(self.filesInDir)):
            currIndex = int(self.ui.filesList.currentIndex())

        filePath = self.filesInDir[currIndex]

        self.ui.filesList.setCurrentIndex(currIndex)

        self.setEndPos(filePath)

        player.setFile(self, str(filePath))
        player.pyGMix.music.play()
Exemplo n.º 7
0
#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import *
from Main_Window import Ui_MainWindow

if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = Ui_MainWindow()
    form.show()
    sys.exit(app.exec_())
Exemplo n.º 8
0
class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # MAIN WINDOW LABEL
        self.ui.Patient.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.Patient_Information))
        self.ui.Platform.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.Platform_Running))
        self.ui.Add_Patient.clicked.connect(self.Add_Patient)
        self.ui.Add_Simulation.clicked.connect(self.Add_Simulation)
        self.ui.Save_Patient_Info.clicked.connect(self.Save_Patient)
        self.ui.Save_Simulation.clicked.connect(self.Save_Simulation)
        self.ui.Delete_Patient_Info.clicked.connect(self.Delete_Patient_Screen)
        self.ui.Delete_Simulation.clicked.connect(self.Delete_Simulation_Screen)
        self.ui.Run_Simulation.clicked.connect(self.Run_Simulation)

        # Populate lists
        self.Reload_Lists()
        self.ui.listWidget.itemSelectionChanged.connect(self.Update_Patient_Fields)
        self.ui.simulationlist.itemSelectionChanged.connect(self.Update_Simulation_Fields)

    # ADD PATIENT WINDOW
    def Add_Patient(self):
        self.Add_Patient_Screen = QDialog()
        self.Add_Patient_Screen.ui = Ui_Add_Patient_Screen()
        self.Add_Patient_Screen.ui.setupUi(self.Add_Patient_Screen)
        self.Add_Patient_Screen.ui.Add_Patient_2.clicked.connect(self.Write_New_Patient)
        self.Add_Patient_Screen.exec_()

    def Write_New_Patient(self):
        if (self.Add_Patient_Screen.ui.genderLineEdit.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_2.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_3.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_4.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_5.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_6.text() != ''):
            Subject_ID = self.Add_Patient_Screen.ui.genderLineEdit.text()
            New_Patient = {
                self.Add_Patient_Screen.ui.genderLabel.text() : self.Add_Patient_Screen.ui.genderLineEdit_2.text(),
                self.Add_Patient_Screen.ui.heightLabel_2.text() : self.Add_Patient_Screen.ui.genderLineEdit_3.text(),
                self.Add_Patient_Screen.ui.ageLabel_2.text() : self.Add_Patient_Screen.ui.genderLineEdit_4.text(),
                self.Add_Patient_Screen.ui.shoeSizeLabel.text() : self.Add_Patient_Screen.ui.genderLineEdit_5.text(),
                self.Add_Patient_Screen.ui.weightLabel_2.text() : self.Add_Patient_Screen.ui.genderLineEdit_6.text()
            }
            Database.patient_information[Subject_ID] = New_Patient
            Database.write_to_database()
            self.Reload_Lists()
            self.Add_Patient_Screen.close()

    # PATIENT TAB
    def Save_Patient(self):
        if (self.ui.genderLineEdit.text() != '') and \
        (self.ui.heightLineEdit.text() != '') and \
        (self.ui.ageLineEdit.text() != '') and \
        (self.ui.shoeSizeLineEdit.text() != '') and \
        (self.ui.weightLineEdit.text() != ''):
            Subject_ID = self.ui.listWidget.currentItem().text()
            Patient = {
                self.ui.genderLabel.text() : self.ui.genderLineEdit.text(),
                self.ui.heightLabel.text() : self.ui.heightLineEdit.text(),
                self.ui.ageLabel.text() : self.ui.ageLineEdit.text(),
                self.ui.shoeSizeLabel.text() : self.ui.shoeSizeLineEdit.text(),
                self.ui.weightLabel.text() : self.ui.weightLineEdit.text()
            }
            Database.patient_information[Subject_ID] = Patient
            Database.write_to_database()
    def Delete_Patient_Screen(self):
        if (self.ui.genderLineEdit.text() != '') and \
        (self.ui.heightLineEdit.text() != '') and \
        (self.ui.ageLineEdit.text() != '') and \
        (self.ui.shoeSizeLineEdit.text() != '') and \
        (self.ui.weightLineEdit.text() != ''):
            self.Delete_Patient_Screen = QDialog()
            self.Delete_Patient_Screen.ui = Ui_Delete_Patient_Screen()
            self.Delete_Patient_Screen.ui.setupUi(self.Delete_Patient_Screen)
            self.Delete_Patient_Screen.ui.Yes_Button.clicked.connect(self.Delete_Patient)
            self.Delete_Patient_Screen.ui.No_Button.clicked.connect(self.close_delete_patient_screen)
            self.Delete_Patient_Screen.exec_()

    def Delete_Patient(self):
        Subject_ID = self.ui.listWidget.currentItem().text()
        # Clear selection and line edits
        self.ui.listWidget.clearSelection()
        self.ui.genderLineEdit.setText("")
        self.ui.heightLineEdit.setText("")
        self.ui.ageLineEdit.setText("")
        self.ui.shoeSizeLineEdit.setText("")
        self.ui.weightLineEdit.setText("")
        # Delete from local data structure and database
        del Database.patient_information[Subject_ID]
        Database.write_to_database()
        self.Reload_Lists()
        self.Delete_Patient_Screen.close()

    def close_delete_patient_screen(self):
        self.Delete_Patient_Screen.close()

    def close_delete_simulation_screen(self):
        self.Delete_Simulation_Screen.close()

    def Reload_Lists(self):
        # Patient Information
        self.ui.listWidget.clear()
        for patient in Database.patient_information:
            self.ui.listWidget.addItem(patient)
        # Custom Simulation
        self.ui.simulationlist.clear()
        for simulation in Database.custom_simulation:
            self.ui.simulationlist.addItem(simulation)
    def Update_Patient_Fields(self):
        patient = self.ui.listWidget.currentItem().text()
        self.ui.genderLineEdit.setText(Database.patient_information[patient][self.ui.genderLabel.text()])
        self.ui.heightLineEdit.setText(Database.patient_information[patient][self.ui.heightLabel.text()])
        self.ui.ageLineEdit.setText(Database.patient_information[patient][self.ui.ageLabel.text()])
        self.ui.shoeSizeLineEdit.setText(Database.patient_information[patient][self.ui.shoeSizeLabel.text()])
        self.ui.weightLineEdit.setText(Database.patient_information[patient][self.ui.weightLabel.text()])

    def Add_Simulation(self):
        self.Add_Simulation_Screen = QDialog()
        self.Add_Simulation_Screen.ui = Ui_Add_Simulation_Screen()
        self.Add_Simulation_Screen.ui.setupUi(self.Add_Simulation_Screen)
        self.Add_Simulation_Screen.ui.Add_Simulation.clicked.connect(self.Write_New_Simulation)
        self.Add_Simulation_Screen.exec_()

    def Write_New_Simulation(self):
        error = 0;
        if (self.Add_Simulation_Screen.ui.nameLineEdit.text() != '') and \
        (self.Add_Simulation_Screen.ui.distLineEdit.text() != '') and \
        (self.Add_Simulation_Screen.ui.speedLineEdit.text() != '') and \
        (self.Add_Simulation_Screen.ui.dirLineEdit.text() != ''):
            try:
                int(self.Add_Simulation_Screen.ui.distLineEdit.text())
            except ValueError:
                self.Add_Simulation_Screen.close()
                self.Error_Message_Screen = QDialog()
                self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                self.Error_Message_Screen.ui.Error_Message.append('Distance value not accepted. Please enter whole numbers only with no units. For example: 12.')
                self.Error_Message_Screen.exec_()
                error = 1;
            try:
                int(self.Add_Simulation_Screen.ui.speedLineEdit.text())
            except ValueError:
                self.Add_Simulation_Screen.close()
                self.Error_Message_Screen = QDialog()
                self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                self.Error_Message_Screen.ui.Error_Message.append('Speed value not accepted. Please enter whole numbers only with no units. For example: 50.')
                self.Error_Message_Screen.exec_()
                error = 1;
            try:
                int(self.Add_Simulation_Screen.ui.dirLineEdit.text())
            except ValueError:
                self.Add_Simulation_Screen.close()
                self.Error_Message_Screen = QDialog()
                self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                self.Error_Message_Screen.ui.Error_Message.append('Direction value not accepted. Please enter whole numbers only with no units. For example: 3.')
                self.Error_Message_Screen.exec_()
                error = 1;
            if(error == 0):
                if int(self.Add_Simulation_Screen.ui.distLineEdit.text()) > 14 or int(self.Add_Simulation_Screen.ui.distLineEdit.text()) <= 0:
                    self.Add_Simulation_Screen.close()
                    self.Error_Message_Screen = QDialog()
                    self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                    self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                    self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                    self.Error_Message_Screen.ui.Error_Message.append('Distance value is out of range. Please enter a number between 1 and 14.')
                    self.Error_Message_Screen.exec_()
                    error = 1;
                if int(self.Add_Simulation_Screen.ui.speedLineEdit.text()) > 70 or int(self.Add_Simulation_Screen.ui.speedLineEdit.text()) <= 0:
                    self.Add_Simulation_Screen.close()
                    self.Error_Message_Screen = QDialog()
                    self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                    self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                    self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                    self.Error_Message_Screen.ui.Error_Message.append('Speed value is out of range. Please enter a number between 1 and 70')
                    self.Error_Message_Screen.exec_()
                    error = 1;
                if int(self.Add_Simulation_Screen.ui.dirLineEdit.text()) > 4 or int(self.Add_Simulation_Screen.ui.dirLineEdit.text()) < 1:
                    self.Add_Simulation_Screen.close()
                    self.Error_Message_Screen = QDialog()
                    self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                    self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                    self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                    self.Error_Message_Screen.ui.Error_Message.append('Direction value is out of range. Please enter a number between 1 and 4.')
                    self.Error_Message_Screen.exec_()
                    error = 1;
            if(error == 0):
                Simulation_Name = self.Add_Simulation_Screen.ui.nameLineEdit.text()
                New_Simulation = {
                    self.Add_Simulation_Screen.ui.distanceLabel.text() : self.Add_Simulation_Screen.ui.distLineEdit.text(),
                    self.Add_Simulation_Screen.ui.speedLabel.text() : self.Add_Simulation_Screen.ui.speedLineEdit.text(),
                    self.Add_Simulation_Screen.ui.directionLabel.text() : self.Add_Simulation_Screen.ui.dirLineEdit.text()
                }
                Database.custom_simulation[Simulation_Name] = New_Simulation
                Database.write_to_database()
                self.Reload_Lists()
                self.Add_Simulation_Screen.close()

    def Save_Simulation(self):
        error = 0;
        if (self.ui.distanceLineEdit_2.text() != '') and \
        (self.ui.speedLineEdit_2.text() != '') and \
        (self.ui.directionLineEdit_2.text() != ''):
            try:
                int(self.ui.distanceLineEdit_2.text())
            except ValueError:
                self.Error_Message_Screen = QDialog()
                self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                self.Error_Message_Screen.ui.Error_Message.append('Distance value not accepted. Please enter whole numbers only with no units. For example: 50.')
                self.Error_Message_Screen.exec_()
                error = 1;
            try:
                int(self.ui.speedLineEdit_2.text())
            except ValueError:
                self.Error_Message_Screen = QDialog()
                self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                self.Error_Message_Screen.ui.Error_Message.append('Speed value not accepted. Please enter whole numbers only with no units. For example: 50.')
                self.Error_Message_Screen.exec_()
                error = 1;
            try:
                int(self.ui.directionLineEdit_2.text())
            except ValueError:
                self.Error_Message_Screen = QDialog()
                self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                self.Error_Message_Screen.ui.Error_Message.append('Direction value not accepted. Please enter whole numbers only with no units. For example: 3.')
                self.Error_Message_Screen.exec_()
                error = 1;
            if(error == 0):
                if int(self.ui.distanceLineEdit_2.text()) > 14 or int(self.ui.distanceLineEdit_2.text()) < 0:
                    self.Error_Message_Screen = QDialog()
                    self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                    self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                    self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                    self.Error_Message_Screen.ui.Error_Message.append('Distance value is out of range. Please enter a number between 1 and 14.')
                    self.Error_Message_Screen.exec_()
                    error = 1;
                if int(self.ui.speedLineEdit_2.text()) > 70 or int(self.ui.speedLineEdit_2.text()) < 0:
                    self.Error_Message_Screen = QDialog()
                    self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                    self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                    self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                    self.Error_Message_Screen.ui.Error_Message.append('Speed value is out of range. Please enter a number between 1 and 70')
                    self.Error_Message_Screen.exec_()
                    error = 1;
                if int(self.ui.directionLineEdit_2.text()) > 4 or int(self.ui.directionLineEdit_2.text()) < 1:
                    self.Error_Message_Screen = QDialog()
                    self.Error_Message_Screen.ui = Ui_Error_Message_Screen()
                    self.Error_Message_Screen.ui.setupUi(self.Error_Message_Screen)
                    self.Error_Message_Screen.ui.Close_Error.clicked.connect(self.Error_Message_Screen.close)
                    self.Error_Message_Screen.ui.Error_Message.append('Direction value is out of range. Please enter a number between 1 and 4.')
                    self.Error_Message_Screen.exec_()
                    error = 1;
            if (error == 0):
                Simulation_Name = self.ui.simulationlist.currentItem().text()
                Simulation = {
                    self.ui.distanceLabel.text(): self.ui.distanceLineEdit_2.text(),
                    self.ui.speedLabel_2.text(): self.ui.speedLineEdit_2.text(),
                    self.ui.directionLabel_2.text(): self.ui.directionLineEdit_2.text()
                }
                Database.custom_simulation[Simulation_Name] = Simulation
                Database.write_to_database()

    def Update_Simulation_Fields(self):
        Simulation = self.ui.simulationlist.currentItem().text()
        self.ui.distanceLineEdit_2.setText(Database.custom_simulation[Simulation][self.ui.distanceLabel.text()])
        self.ui.speedLineEdit_2.setText(Database.custom_simulation[Simulation][self.ui.speedLabel_2.text()])
        self.ui.directionLineEdit_2.setText(Database.custom_simulation[Simulation][self.ui.directionLabel_2.text()])

    def Delete_Simulation_Screen(self):
        if (self.ui.distanceLineEdit_2.text() != '') and \
        (self.ui.speedLineEdit_2.text() != '') and \
        (self.ui.directionLineEdit_2.text() != ''):
            self.Delete_Simulation_Screen = QDialog()
            self.Delete_Simulation_Screen.ui = Ui_Delete_Simulation_Screen()
            self.Delete_Simulation_Screen.ui.setupUi(self.Delete_Simulation_Screen)
            self.Delete_Simulation_Screen.ui.Yes_Button.clicked.connect(self.Delete_Simulation)
            self.Delete_Simulation_Screen.ui.No_Button.clicked.connect(self.close_delete_simulation_screen)
            self.Delete_Simulation_Screen.exec_()

    def Delete_Simulation(self):
        Simulation_Name = self.ui.simulationlist.currentItem().text()
        # Clear selection and line edits
        self.ui.simulationlist.clearSelection()
        self.ui.distanceLineEdit_2.setText("")
        self.ui.speedLineEdit_2.setText("")
        self.ui.directionLineEdit_2.setText("")
        # Delete from local data structure and database
        del Database.custom_simulation[Simulation_Name]
        Database.write_to_database()
        self.Reload_Lists()
        self.Delete_Simulation_Screen.close()

    def Run_Simulation(self):
        self.Wait_Screen = QDialog()
        self.Wait_Screen.ui = Ui_Wait_Screen()
        self.Wait_Screen.ui.setupUi(self.Wait_Screen)

        from time import sleep

        Simulation = self.ui.simulationlist.currentItem().text()
        requiredSpeed = Database.custom_simulation[Simulation][self.ui.speedLabel_2.text()]
        requiredDistance = Database.custom_simulation[Simulation][self.ui.distanceLabel.text()]
        direction = Database.custom_simulation[Simulation][self.ui.directionLabel_2.text()]

        R = 0.05
        maxRPM = 200
        maxSpeed = (2 * 3.14 * R) * (maxRPM / 60)
        simTime = (requiredDistance / requiredSpeed) / (2 * 3.14 * R)
        dutyCycle = (requiredSpeed / (maxSpeed * 100)) * 100
        if dutyCycle > 100:
            dutyCycle = 100
        simTime2 = (simTime * dutyCycle) / 10
        if direction == 1:
            GPIO.output(dir1, GPIO.HIGH)
            GPIO.output(dir3, GPIO.HIGH)
            PWM.start(myPWM, dutyCycle, 1000)
            PWM.start(myPWM2, dutyCycle, 1000)
            sleep(simTime)
            PWM.stop(myPWM)
            PWM.stop(myPWM2)
            GPIO.output(dir1, GPIO.LOW)
            GPIO.output(dir3, GPIO.LOW)
            sleep(5)
            GPIO.output(dir2, GPIO.HIGH)
            GPIO.output(dir4, GPIO.HIGH)
            PWM.start(myPWM, 10, 1000)
            PWM.start(myPWM2, 10, 1000)
            sleep(simTime2)
            PWM.stop(myPWM)
            PWM.stop(myPWM2)
            GPIO.output(dir2, GPIO.LOW)
            GPIO.output(dir4, GPIO.LOW)
        elif direction == 2:
            GPIO.output(dir2, GPIO.HIGH)
            GPIO.output(dir4, GPIO.HIGH)
            PWM.start(myPWM, dutyCycle, 1000)
            PWM.start(myPWM2, dutyCycle, 1000)
            sleep(simTime)
            PWM.stop(myPWM)
            PWM.stop(myPWM2)
            GPIO.output(dir2, GPIO.LOW)
            GPIO.output(dir4, GPIO.LOW)
            sleep(5)
            GPIO.output(dir1, GPIO.HIGH)
            GPIO.output(dir3, GPIO.HIGH)
            PWM.start(myPWM, 10, 1000)
            PWM.start(myPWM2, 10, 1000)
            sleep(simTime2)
            PWM.stop(myPWM)
            PWM.stop(myPWM2)
            GPIO.output(dir1, GPIO.LOW)
            GPIO.output(dir3, GPIO.LOW)
        elif direction == 3:
            GPIO.output(dir1, GPIO.HIGH)
            GPIO.output(dir2, GPIO.HIGH)
            PWM.start(myPWM, dutyCycle, 1000)
            PWM.start(myPWM2, dutyCycle, 1000)
            sleep(simTime)
            PWM.stop(myPWM)
            PWM.stop(myPWM2)
            GPIO.output(dir1, GPIO.LOW)
            GPIO.output(dir2, GPIO.LOW)
            sleep(5)
            GPIO.output(dir3, GPIO.HIGH)
            GPIO.output(dir4, GPIO.HIGH)
            PWM.start(myPWM, 10, 1000)
            PWM.start(myPWM2, 10, 1000)
            sleep(simTime2)
            PWM.stop(myPWM)
            PWM.stop(myPWM2)
            GPIO.output(dir3, GPIO.LOW)
            GPIO.output(dir4, GPIO.LOW)
        elif direction == 4:
            GPIO.output(dir3, GPIO.HIGH)
            GPIO.output(dir4, GPIO.HIGH)
            PWM.start(myPWM, dutyCycle, 1000)
            PWM.start(myPWM2, dutyCycle, 1000)
            sleep(simTime)
            PWM.stop(myPWM)
            PWM.stop(myPWM2)
            GPIO.output(dir3, GPIO.LOW)
            GPIO.output(dir4, GPIO.LOW)
            sleep(5)
            GPIO.output(dir1, GPIO.HIGH)
            GPIO.output(dir2, GPIO.HIGH)
            PWM.start(myPWM, 10, 1000)
            PWM.start(myPWM2, 10, 1000)
            sleep(simTime2)
            PWM.stop(myPWM)
            PWM.stop(myPWM2)
            GPIO.output(dir1, GPIO.LOW)
            GPIO.output(dir2, GPIO.LOW)
        PWM.cleanup()
        GPIO.cleanup()
Exemplo n.º 9
0
class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        # MAIN WINDOW LABEL
        self.ui.Patient.clicked.connect(
            lambda: self.ui.stackedWidget.setCurrentWidget(
                self.ui.Patient_Information))
        self.ui.Platform.clicked.connect(
            lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.
                                                           Platform_Running))
        self.ui.Add_Patient.clicked.connect(self.Add_Patient)
        self.ui.Add_Simulation.clicked.connect(self.Add_Simulation)
        self.ui.Save_Patient_Info.clicked.connect(self.Save_Patient)
        self.ui.Delete_Patient_Info.clicked.connect(self.Delete_Patient)

        # Populate lists
        self.Reload_Lists()
        self.ui.listWidget.itemSelectionChanged.connect(
            self.Update_Patient_Fields)

    # ADD PATIENT WINDOW
    def Add_Patient(self):
        self.Add_Patient_Screen = QDialog()
        self.Add_Patient_Screen.ui = Ui_Add_Patient_Screen()
        self.Add_Patient_Screen.ui.setupUi(self.Add_Patient_Screen)
        self.Add_Patient_Screen.ui.Add_Patient_2.clicked.connect(
            self.Write_New_Patient)
        self.Add_Patient_Screen.exec_()

    def Write_New_Patient(self):
        if (self.Add_Patient_Screen.ui.genderLineEdit.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_2.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_3.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_4.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_5.text() != '') and \
        (self.Add_Patient_Screen.ui.genderLineEdit_6.text() != ''):
            Subject_ID = self.Add_Patient_Screen.ui.genderLineEdit.text()
            New_Patient = {
                self.Add_Patient_Screen.ui.genderLabel.text():
                self.Add_Patient_Screen.ui.genderLineEdit_2.text(),
                self.Add_Patient_Screen.ui.heightLabel_2.text():
                self.Add_Patient_Screen.ui.genderLineEdit_3.text(),
                self.Add_Patient_Screen.ui.ageLabel_2.text():
                self.Add_Patient_Screen.ui.genderLineEdit_4.text(),
                self.Add_Patient_Screen.ui.shoeSizeLabel.text():
                self.Add_Patient_Screen.ui.genderLineEdit_5.text(),
                self.Add_Patient_Screen.ui.weightLabel_2.text():
                self.Add_Patient_Screen.ui.genderLineEdit_6.text()
            }
            Database.patient_information[Subject_ID] = New_Patient
            Database.write_to_database()
            self.Reload_Lists()
            self.Add_Patient_Screen.close()

    # PATIENT TAB
    def Save_Patient(self):
        if (self.ui.genderLineEdit.text() != '') and \
        (self.ui.heightLineEdit.text() != '') and \
        (self.ui.ageLineEdit.text() != '') and \
        (self.ui.shoeSizeLineEdit.text() != '') and \
        (self.ui.weightLineEdit.text() != ''):
            Subject_ID = self.ui.listWidget.currentItem().text()
            Patient = {
                self.ui.genderLabel.text(): self.ui.genderLineEdit.text(),
                self.ui.heightLabel.text(): self.ui.heightLineEdit.text(),
                self.ui.ageLabel.text(): self.ui.ageLineEdit.text(),
                self.ui.shoeSizeLabel.text(): self.ui.shoeSizeLineEdit.text(),
                self.ui.weightLabel.text(): self.ui.weightLineEdit.text()
            }
            Database.patient_information[Subject_ID] = Patient
            Database.write_to_database()

    def Delete_Patient(self):
        Subject_ID = self.ui.listWidget.currentItem().text()
        # Clear selection and line edits
        self.ui.listWidget.clearSelection()
        self.ui.genderLineEdit.setText("")
        self.ui.heightLineEdit.setText("")
        self.ui.ageLineEdit.setText("")
        self.ui.shoeSizeLineEdit.setText("")
        self.ui.weightLineEdit.setText("")
        # Delete from local data structure and database
        del Database.patient_information[Subject_ID]
        Database.write_to_database()
        self.Reload_Lists()

    def Reload_Lists(self):
        # Patient Information
        self.ui.listWidget.clear()
        for patient in Database.patient_information:
            self.ui.listWidget.addItem(patient)
        # Custom Simulation
        self.ui.simulationlist.clear()
        for simulation in Database.custom_simulation:
            self.ui.simulationlist.addItem(simulation)

    def Update_Patient_Fields(self):
        patient = self.ui.listWidget.currentItem().text()
        self.ui.genderLineEdit.setText(
            Database.patient_information[patient][self.ui.genderLabel.text()])
        self.ui.heightLineEdit.setText(
            Database.patient_information[patient][self.ui.heightLabel.text()])
        self.ui.ageLineEdit.setText(
            Database.patient_information[patient][self.ui.ageLabel.text()])
        self.ui.shoeSizeLineEdit.setText(Database.patient_information[patient][
            self.ui.shoeSizeLabel.text()])
        self.ui.weightLineEdit.setText(
            Database.patient_information[patient][self.ui.weightLabel.text()])

    def Add_Simulation(self):
        self.Add_Simulation_Screen = QDialog()
        self.Add_Simulation_Screen.ui = Ui_Add_Simulation_Screen()
        self.Add_Simulation_Screen.ui.setupUi(self.Add_Simulation_Screen)
        self.Add_Simulation_Screen.ui.Add_Simulation.clicked.connect(
            self.Write_New_Simulation)
        self.Add_Simulation_Screen.exec_()

    def Write_New_Simulation(self):
        if (self.Add_Simulation_Screen.ui.nameLineEdit.text() != '') and \
        (self.Add_Simulation_Screen.ui.distanceLineEdit.text() != '') and \
        (self.Add_Simulation_Screen.ui.speedLineEdit.text() != '') and \
        (self.Add_Simulation_Screen.ui.directionLineEdit.text() != ''):
            Simulation_Name = self.Add_Simulation_Screen.ui.nameLineEdit.text()
            New_Simulation = {
                self.Add_Simulation_Screen.ui.distanceLabel.text():
                self.Add_Simulation_Screen.ui.distLineEdit.text(),
                self.Add_Simulation_Screen.ui.speedLabel.text():
                self.Add_Simulation_Screen.ui.speedLineEdit.text(),
                self.Add_Simulation_Screen.ui.directionLabel.text():
                self.Add_Simulation_Screen.ui.dirLineEdit.text()
            }
            Database.custom_simulation[Simulation_Name] = New_Simulation
            Database.write_to_database()
            self.Reload_Lists()
            self.Add_Simulation_Screen.close()
Exemplo n.º 10
0
class Main_Window(qtw.QMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.scrollArea.hide()
        self.ui.pushButton.clicked.connect(self.button_clicked)
        self.ui.data_output1.hide()
        self.ui.data_output2.hide()

    def button_clicked(self):
        self.Open_Window = Window()
        self.Open_Window.show()
        self.Open_Window.btn1.clicked.connect(self.country_clicked)
        self.Open_Window.country_selected.connect(self.country_clicked_slot)

    def country_clicked(self):
        self.options_window1 = Options_Page_1()
        self.options_window1.industries.connect(self.industry_checked_slot)
        self.options_window1.done_clicked.connect(self.make_options_page_2)
        self.Open_Window.hide()
        self.options_window1.show()

    def initUI(self, dict_):
        print("PRINT 1: ", dict_)
        self.figure = Canvas(dict_)
        self.figure.map_defining(self, width=4, height=5)
        self.figure.move(450, 50)
        self.figure.show()

    @qtc.pyqtSlot()
    def make_options_page_2(self):
        self.options_window2 = Options_Page_2()
        self.options_window2.experience.connect(self.experience_selected_slot)
        self.options_window1.hide()
        self.options_window2.show()

    @qtc.pyqtSlot(str)
    def country_clicked_slot(self, country):
        self.ui.data_output1.setText(
            'The country selected is: {}.'.format(country))

    @qtc.pyqtSlot(list)
    def industry_checked_slot(self, list_):
        self.current_str = '\n'
        self.list_reference = list_
        for item in list_:
            self.current_str += (item + ', ')

        if self.current_str[-2] == ',':
            replacement = self.current_str[:-2]
            self.current_str = replacement

        self.ui.data_output2.setText('The industries selected are: {}.'.format(
            self.current_str))

    @qtc.pyqtSlot(dict)
    def experience_selected_slot(self, dict_):
        print(dict_)

        self.dict_ = dict_
        self.current_str = ''
        for item in self.list_reference:
            self.current_str += (item + ': ' + '{}'.format(dict_[item]) + '\n')

        self.ui.data_output3.setText('The relevant experience entered is: \n' +
                                     self.current_str)
        print('Received')
        self.options_window2.hide()
        self.mapping = Cartopy_Britain_OOP.MapAssembler(dict_)

        self.current_str2 = ''
        for key in self.mapping.Ratings_done:
            self.current_str2 += (key + ': ' + '{}'.format(
                np.round(self.mapping.Ratings_done[key], 2)) + '\n')

        self.ui.data_output4.setText('The relevant ratings found are: \n' +
                                     self.current_str2)
        self.ui.scrollArea.show()
        self.initUI(dict_)
        self.ui.data_output1.show()
        self.ui.data_output2.show()