def initUi(self): """ Initialize UI components. """ SaveDialog.initUi(self) logging.info("initializing UI components.") # create lables name_label = QtGui.QLabel("<b>" + tr("Name:") + "</b>") description_label = QtGui.QLabel("<b>" + tr("Description:") + "</b>") icon_label = QtGui.QLabel("<b>" + tr("Icon:") + "</b>") self._layout_gl.addWidget(name_label, 0, 0) self._layout_gl.addWidget(description_label, 1, 0) self._layout_gl.addWidget(icon_label, 2, 0) # create inputs self._name = QtGui.QLineEdit() self._desc = QtGui.QLineEdit() self._icons = QtGui.QComboBox() self._layout_gl.addWidget(self._name, 0, 1) self._layout_gl.addWidget(self._desc, 1, 1) self._layout_gl.addWidget(self._icons, 2, 1)
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 initConnections(self): """ Inialize event handlers. """ SaveDialog.initConections(self) # when something changed, enable save button self._name.textChanged.connect(self.enableSaveButton) self._desc.textChanged.connect(self.enableSaveButton) self._icons.currentIndexChanged.connect(self.enableSaveButton)
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 initConections(self): """ Initialize all connections, handling events. @requires: initUI(), setPassword() first """ SaveDialog.initConections(self) # when something changed, enable save button self._title.textChanged.connect(self.enableSaveButton) self._username.textChanged.connect(self.enableSaveButton) self._passwd.textChanged.connect(self.enableSaveButton) self._url.textChanged.connect(self.enableSaveButton) self._comment.textChanged.connect(self.enableSaveButton) self._att_name.textChanged.connect(self.enableSaveButton) self._e_date_edit.dateChanged.connect(self.enableSaveButton) self._group.currentIndexChanged.connect(self.enableSaveButton) # never checked self._e_date_never.stateChanged.connect(self.enDisExpDate) self._e_date_never.stateChanged.connect(self.enableSaveButton) # show QR self._qr_button.clicked.connect(self.showQrCode) # open attachment self._att_button.clicked.connect(self.loadAttachment) # delete attachment self._att_del_button.clicked.connect(self.delAttachment) # save attachment to disk self._att_save_button.clicked.connect(self.saveAttachment) # open attachment file self._att_open_button.clicked.connect(self.openAttachment) # attachment input label self._att_name.textChanged.connect(self.enableAttEditAndButton) # show/hide password self._show_passwd_check.stateChanged.connect(self.setVisibilityPass)
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 initUi(self): """ Initilize UI components. """ SaveDialog.initUi(self) title_label = QtGui.QLabel("<b>" + tr("Title:") + "</b>") username_label = QtGui.QLabel("<b>" + tr("Username:"******"</b>") passwd_label = QtGui.QLabel("<b>" + tr("Password:"******"</b>") url_label = QtGui.QLabel("<b>" + tr("URL:") + "</b>") if (self.__edit): # if it is edit dialog display layout_offset = 0 c_date_label = QtGui.QLabel("<b>" + tr("Creation date:") + "</b>") m_date_label = QtGui.QLabel("<b>" + tr("Modification date:") + "</b>") self._layout_gl.addWidget(c_date_label, 4, 0) self._layout_gl.addWidget(m_date_label, 5, 0) self._c_date = QtGui.QLabel() self._m_date = QtGui.QLabel() self._layout_gl.addWidget(self._c_date, 4, 1) self._layout_gl.addWidget(self._m_date, 5, 1) else: layout_offset = -2 e_date_label = QtGui.QLabel("<b>" + tr("Expiration date:") + "</b>") comment_label = QtGui.QLabel("<b>" + tr("Comment:") + "</b>") attachment_label = QtGui.QLabel("<b>" + tr("Attachment:") + "</b>") group_label = QtGui.QLabel("<b>" + tr("Groups:") + "</b>") self._layout_gl.addWidget(title_label, 0, 0) self._layout_gl.addWidget(username_label, 1, 0) self._layout_gl.addWidget(passwd_label, 2, 0) self._layout_gl.addWidget(url_label, 3, 0) self._layout_gl.addWidget(e_date_label, 6 + layout_offset, 0) self._layout_gl.addWidget(attachment_label, 7 + layout_offset, 0) self._layout_gl.addWidget(comment_label, 9 + layout_offset, 0) self._layout_gl.addWidget(group_label, 10 + layout_offset, 0) self._title = QtGui.QLineEdit() self._username = QtGui.QLineEdit() self._passwd = QtGui.QLineEdit() if (not self.__show_pass): self._passwd.setEchoMode(QtGui.QLineEdit.Password) # password layout passwd_hl = QtGui.QHBoxLayout() passwd_hl.addWidget(self._passwd) # password visibility check box self._show_passwd_check = QtGui.QCheckBox(tr("Show")) self._show_passwd_check.setChecked(self.__show_pass) # password QR code self._qr_button = QtGui.QPushButton(tr("QR")) passwd_hl.addWidget(self._show_passwd_check) passwd_hl.addWidget(self._qr_button) self._url = QtGui.QLineEdit() self._e_date = QtGui.QLineEdit() self._comment = QtGui.QTextEdit() self._comment.setLineWrapMode(QtGui.QTextEdit.NoWrap) self._comment.setMaximumHeight(200) self._group = QtGui.QComboBox() self._att_name = QtGui.QLineEdit() self._att_name.setEnabled(False) self._layout_gl.addWidget(self._title, 0, 1) self._layout_gl.addWidget(self._username, 1, 1) self._layout_gl.addLayout(passwd_hl, 2, 1) self._layout_gl.addWidget(self._url, 3, 1) # attachment vertical layout att_vl = QtGui.QVBoxLayout() # attachment layout att_hl_1 = QtGui.QHBoxLayout() att_hl_2 = QtGui.QHBoxLayout() att_vl.addLayout(att_hl_1) att_vl.addLayout(att_hl_2) # open file button self._att_button = QtGui.QPushButton(tr("Load")) self._att_del_button = QtGui.QPushButton(tr("Delete")) self._att_save_button = QtGui.QPushButton(tr("Download")) self._att_open_button = QtGui.QPushButton(tr("Open")) self._att_del_button.setEnabled(False) self._att_save_button.setEnabled(False) self._att_open_button.setEnabled(False) att_hl_1.addWidget(self._att_button) att_hl_1.addWidget(self._att_del_button) att_hl_2.addWidget(self._att_save_button) att_hl_2.addWidget(self._att_open_button) self._layout_gl.addWidget(self._att_name, 7 + layout_offset, 1) self._layout_gl.addLayout(att_vl, 8 + layout_offset, 1) self._layout_gl.addWidget(self._comment, 9 + layout_offset, 1) self._layout_gl.addWidget(self._group, 10 + layout_offset, 1) # date time edit self._e_date_edit = QtGui.QDateTimeEdit() self._e_date_edit.setCalendarPopup(True) # expiration date can't be lower than current date self._e_date_edit.setMinimumDateTime(QtCore.QDateTime.currentDateTime()) # create never check box self._e_date_never = QtGui.QCheckBox(tr("Never")) # create horizontal layout for date selector and never check box e_date_hl = QtGui.QHBoxLayout() e_date_hl.addWidget(self._e_date_edit) e_date_hl.addWidget(self._e_date_never) # add to main layout self._layout_gl.addLayout(e_date_hl, 6 + layout_offset, 1)
def save_button_clicked(self): # the dialog does the whole saving process save_dialog = SaveDialog(self, self.nodes) save_dialog.exec_()