def saveFile(self): dialog = SaveDialog() dialog.exec_() head, tail = os.path.split(self.input_name) file_prefix = tail.split('.')[0] worker = VideoWriterThread(self.cap, self.frame_objects, self.log, file_prefix, dialog.getSaveDirectory(), dialog.isSaveImage, dialog.isSaveVideo) worker.start()
def save_triggered(self): """creates the dialog that manages the whole saving process""" selected_nodes = [] if len(self.nodes_at_last_export) == 0: selected_nodes = self.nodes elif self.nodes_at_last_export == self.nodes: # no nodes added or removed selected_nodes = self.last_exported_nodes else: selected_nodes = self.nodes nodes_dict = {} # {node: selected} for n in self.nodes: # add all nodes, unselected nodes_dict[n] = False for n in selected_nodes: # select nodes_dict[n] = True save_dialog = SaveDialog(self, nodes_dict=nodes_dict, last_export_dir=self.last_export_path) save_dialog.exec_() self.nodes_at_last_export = self.nodes.copy()
def save_triggered(self): # the dialog does the whole saving process save_dialog = SaveDialog(self, self.nodes) save_dialog.exec_()
class PwWindow(QtWidgets.QMainWindow): def __init__(self, parent=None, key=None): super(PwWindow, self).__init__(parent) self.key = key self.save_dialog = SaveDialog(parent=self) # load and show the user interface created with the designer. uic.loadUi('../pw_window.ui', self) self.add_button.clicked.connect(self.add_row) self.remove_button.clicked.connect(self.remove_row) self.toggle_button.clicked.connect(self.toggle_password) self.load_data(FILE_NAME, key) self.show() def add_row(self): self.tableWidget.insertRow(self.tableWidget.rowCount()) def remove_row(self): self.tableWidget.removeRow(self.tableWidget.currentRow()) def toggle_password(self): item = self.tableWidget.currentItem() if item == None or item.column() != 1: return print(item.text()) print(item.text() == '****') if item.text() == '****': print(str(item.data(1))) item.setText(str(item.data(1))) else: item.setData(1, item.text()) item.setText('****') def closeEvent(self, event): if self.save_dialog.exec_(): self.save_data(FILE_NAME, self.key) event.accept() def get_data(self): data = [] for row in range(self.tableWidget.rowCount()): if self.tableWidget.item(row, 0) == None or\ self.tableWidget.item(row, 1) == None: continue data_pw = self.tableWidget.item(row, 1).data(1) text_pw = self.tableWidget.item(row, 1).text() print(data_pw) data.append({ "accountid": self.tableWidget.item(row, 0).text(), "password": text_pw if text_pw != '****' else data_pw }) return data def load_data(self, filename, key): try: with open(filename, 'rb') as file_in: nonce, tag, ciphertext = [ file_in.read(x) for x in (16, 16, -1) ] # let's assume that the key is somehow available again cipher = AES.new(key, AES.MODE_EAX, nonce) jsontext = cipher.decrypt_and_verify(ciphertext, tag) data = json.loads(jsontext) print(data) self.refresh_table(data) except Exception as e: print("Your file contains errors") print(e) def save_data(self, filename, key): data = self.get_data() print(data) cipher = AES.new(key, AES.MODE_EAX) ciphertext, tag = cipher.encrypt_and_digest(json.dumps(data).encode(KEY_ENCODING)) try: with open(FILE_NAME, "wb") as file_out: [ file_out.write(x) for x in (cipher.nonce, tag, ciphertext) ] except Exception as e: print("Your file contains errors") print(e) def refresh_table(self, data): def load_value(row, column, value): self.tableWidget.setItem(row, column, QTableWidgetItem(str(value), 0)) [self.tableWidget.removeRow(0) for x in range(self.tableWidget.rowCount())] for index, entry in enumerate(data): self.tableWidget.insertRow(index) self.tableWidget.setItem(index, 0, QTableWidgetItem(str(entry['accountid']), 0)) pw_item = QTableWidgetItem() pw_item.setText('****') pw_item.setData(1, str(entry['password'])) self.tableWidget.setItem(index, 1, pw_item) @staticmethod def persist(data, filename): try: print(data) with open(filename, 'w') as outFile: json.dump(data, outFile) except Exception as e: print("Failed to save!") print(e) def return_data(self): self.data = self.get_data() self.accept()
def save_button_clicked(self): # the dialog does the whole saving process save_dialog = SaveDialog(self, self.nodes) save_dialog.exec_()