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
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