Пример #1
0
class Programming(BaseWidget):


    def __init__(self):
        BaseWidget.__init__(self, "AM | Program")
        # Initialize the programming GUI

        self._eventList         = ControlList(label="Events")
        self._addEvent          = ControlButton("Add Event")
        self._deleteEvent       = ControlButton("Delete Event")
        self._saveButton        = ControlFile("Save Program")
        self._loadButton        = ControlFile("Load Program")

        self._addEvent.value    = self.addEventAction
        self._deleteEvent.value = self.deleteEventAction

        self._formset = [
            '_eventList', '=', ('_addEvent','_deleteEvent', '_saveButton', '_loadButton')
        ]

        # Done creating things. Now to get the list working

        #######################################################################################################
        # LIST CONVENTION: "Name", bpm, timesignum, timesigdenom, subdiv, measures wait, beats to spread over #
        #######################################################################################################

        self._eventList.horizontalHeaders=["Name", "BPM", "(TS) Beats", "(TS) Beat Value", "Subdivision", "Measure to Change On", "Time to Change (Beats)"]

        # First step is to add the initial Event
        self._eventList.value = [['InitialEvent', 120, 4, 4, 1, 1, 0]]


        Globals.globalEventList = [['InitialEvent', 120, 4, 4, 1, 1, 0]]

        global updateGlobalsThread
        updateGlobalsThread = threading.Thread(name='updateGlobalsThread', target=Programming.updateGlobals, args=(self,))
        updateGlobalsThread.setDaemon(True)
        updateGlobalsThread.start()

        global saveButtonListenerThread
        saveButtonListenerThread = threading.Thread(name='saveButtonListenerThread', target=Programming.saveButtonListener, args=(self,))
        saveButtonListenerThread.setDaemon(True)
        saveButtonListenerThread.start()
        
        global loadButtonListenerThread
        loadButtonListenerThread = threading.Thread(name='loadButtonListenerThread', target=Programming.loadButtonListener, args=(self,))
        loadButtonListenerThread.setDaemon(True)
        loadButtonListenerThread.start()

    def updateGlobals(self):
        while(True):
           Globals.globalEventList = self._eventList.value
           time.sleep(0.75)


    def addEventAction(self):
        print("addEvent")
        global newEvent
        newEvent = [['New Event', 120, 4, 4, 1, 1, 0]]
        globalNewEvent = ['New Event', 120, 4, 4, 1, 1, 0]
        self._eventList.value += newEvent
        Globals.globalEventList.append(globalNewEvent)

    def deleteEventAction(self):
        print("deleteEvent")

        deleteRow = self._eventList.mouseSelectedRowIndex

        if deleteRow == 0:
            print("Attempt to delete initEvent blocked")
            dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.WARNING,
            Gtk.ButtonsType.CLOSE, "You can not delete the Initial Event.")
            Gtk.Window.set_keep_above(dialog, True)
            kill = dialog.run()
            if kill:
                dialog.destroy()
        else:
            self._eventList.__sub__(deleteRow)
            del Globals.globalEventList[deleteRow]
            print(Globals.globalEventList)


    def saveButtonListener(self):
        saveButtonValueMemory = self._saveButton.value
        while(True):
            if saveButtonValueMemory != self._saveButton.value:
                file = open(self._saveButton.value, 'w')
                file.write(str(Globals.globalEventList))
                file.close()
                saveButtonValueMemory = self._saveButton.value
                
    def loadButtonListener(self):
        loadButtonValueMemory = self._loadButton.value
        while(True):
            if loadButtonValueMemory != self._loadButton.value:
                file = open(self._loadButton.value, 'r')
                listVal = ast.literal_eval(file.read())
                Globals.globalEventList = listVal
                self._eventList.value = listVal
                file.close()
                loadButtonValueMemory = self._loadButton.value
Пример #2
0
class EditHarvest(BaseWidget):
    def __init__(self):
        super().__init__('Oogstlijst Manager')
        reference_list = Main.hl.reference_data

        self._list_left = ControlList('Stamlijst')
        self._list_left.readonly = True

        self._list_right = ControlList('Oogstlijst')
        self._list_right.select_entire_row = True
        self._list_right.horizontal_headers = [
            'Oogst',
            'Hoeveelheid (kg)',
        ]

        self._save_button = ControlButton('Verder')
        self._save_button.value = self._continue

        self.formset = ['_list_left', '_list_right', '_save_button']


        def onclick_left(row, column):
            r = self._list_left.get_currentrow_value()
            self._list_right.__add__(r + [0])

            # cell = self._list_right.get_cell(0, self._list_right.rows_count - 1)
            # cell.setFlags(QtCore.Qt.ItemIsEditable)
            # cell = self._list_right.get_cell(1, self._list_right.rows_count - 1)
            # cell.setTextAlignment(QtCore.Qt.AlignCenter)

        def onclick_right(row, column):
            # # print(dir(self._list_right))
            if column == 0:
                index = self._list_right.selected_row_index
                print(index)
                self._list_right.__sub__(index)
            # # r = self._list_right.get_currentrow_value()
            # self._list_right.__sub__(self._list_right.selected_row_index())
            # #cell = self._list_right.get_cell(1, self._list_right.rows_count - 1)
            # #cell.setTextAlignment(QtCore.Qt.AlignCenter)

        self._list_left.cell_double_clicked_event = onclick_left
        self._list_right.cell_double_clicked_event = onclick_right


        for r in reference_list:
            self._list_left.__add__([' '.join(r[1:3])])

        if Main.hl.harvest_list:
            for r in Main.hl.harvest_list:
                self._list_right.__add__([r[0], r[1]])

    def _continue(self):
        user_input = self._list_right.value
        if not user_input:
            return

        harvest_list = []

        # Combine user input with reference data
        for row in user_input:
            reference = [ ref for ref in Main.hl.reference_data if\
                 ref[1] and ref[1] in row[0] and ref[2] and ref[2] in row[0] ][0]
            if not reference:
                raise Exception('Reference data not found')

            row += [reference[0]] # add prod nr
            row += [reference[2]] # add part
            row += [reference[3]] # add date
            harvest_list.append(row)



        Main.hl.harvest_list = Main.hl_pickle.harvest_list = harvest_list

        window = Rapport()
        Main.root._panel.value = window