def edit_entry(self, widget): """ Edit an entry from the tree """ (model, itera) = self.get_path() if itera is None: return folderspath = pyp.get_folder_path(model, itera, []) item = self.pypass.get_item(self.data, folderspath, model[itera][2], model[itera][0]) if item is None: return if isinstance(item, PypAccount): self.set_entry_dialog() # Name entry_name = self.builder.get_object("entry_name") entry_name.set_text(item.name) entry_name.set_editable(False) # Name cannot be changed # Password entry_password = self.builder.get_object("entry_password") entry_password.set_text(item.password) # Extras info if "user" in item.extras.keys(): self.builder.get_object("entry_user").set_text( item.extras["user"]) if "url" in item.extras.keys(): self.builder.get_object("entry_url").set_text( item.extras["url"]) if "description" in item.extras.keys(): self.builder.get_object("entry_description").set_text( item.extras["description"]) item = self.get_password_from_dialog() else: self.set_folder_dialog() # Name entry_name = self.builder.get_object("entry_name") entry_name.set_text(item.name) entry_name.set_editable(False) # Name cannot be changed # Password if item.description is not None: entry_description = self.builder.get_object( "entry_description") entry_description.set_text(item.description) item = self.get_folder_from_dialog() if item is None: return self.data = self.pypass.replace_item(self.data, model, itera, item) self.load_password_tree(self.data) self.on_account_selected() self.update_status_bar(_("Account updated")) self.modified_db = True
def edit_entry(self, widget): """ Edit an entry from the tree """ (model, itera) = self.get_path() if itera is None: return folderspath = pyp.get_folder_path(model, itera, []) item = self.pypass.get_item(self.data, folderspath, model[itera][2], model[itera][0]) if item is None: return if isinstance(item, PypAccount): self.set_entry_dialog() # Name entry_name = self.builder.get_object("entry_name") entry_name.set_text(item.name) entry_name.set_editable(False) # Name cannot be changed # Password entry_password = self.builder.get_object("entry_password") entry_password.set_text(item.password) # Extras info if "user" in item.extras.keys(): self.builder.get_object("entry_user").set_text( item.extras["user"]) if "url" in item.extras.keys(): self.builder.get_object("entry_url").set_text( item.extras["url"]) if "description" in item.extras.keys(): self.builder.get_object("entry_description").set_text( item.extras["description"]) item = self.get_password_from_dialog() else: self.set_folder_dialog() # Name entry_name = self.builder.get_object("entry_name") entry_name.set_text(item.name) entry_name.set_editable(False) # Name cannot be changed # Password if item.description is not None: entry_description = self.builder.get_object("entry_description") entry_description.set_text(item.description) item = self.get_folder_from_dialog() if item is None: return self.data = self.pypass.replace_item(self.data, model, itera, item) self.load_password_tree(self.data) self.on_account_selected() self.update_status_bar(_("Account updated")) self.modified_db = True
def remove_entry(self, widget): """ Remove an entry from the tree """ (model, itera) = self.get_path() folderspath = pyp.get_folder_path(model, itera, []) item = self.pypass.get_item(self.data, folderspath, model[itera][2], model[itera][0]) result = dialog_window(_("You are going to remove %s.") % item.name, _("Do you want to continue ?"), action=gtk.MESSAGE_QUESTION) if result == gtk.RESPONSE_NO: return elif result == gtk.RESPONSE_YES: self.data = self.pypass.remove_item(self.data, model, itera, item) self.load_password_tree(self.data) self.on_account_selected() self.update_status_bar(_("Item removed")) self.modified_db = True
def on_account_selected(self, widget=None): """ Display the account in the window when selected on the tree """ selection = self.builder.get_object("treefolderview").get_selection() (model, itera) = selection.get_selected() folderspath = pyp.get_folder_path(model, itera, []) txtpass = self.builder.get_object("labelpass") if itera is None: txtpass.set_text(" ") return item = self.pypass.get_item(self.data, folderspath, model[itera][2], model[itera][0]) if item is None: txtpass.set_text(" ") return elif isinstance(item, PypFolder): content = "" content += "<b>Name:</b> %s \n" % item.name content += "<b>Description:</b> %s \n" % \ item.description txtpass.set_text(content) txtpass.set_use_markup(True) return elif isinstance(item, PypAccount): content = "" content += "<b>Name:</b> %s \n" % item.name content += "<b>Password:</b> %s \n" % item.password keys = item.extras.keys() keys.sort() for key in keys: if key not in ('name', 'password'): if key.lower() == 'url': content += "<b>%s:</b> <a href='%s'>" \ "%s</a> \n" % (key, item.extras[key], item.extras[key]) else: content += "<b>%s:</b> %s \n" % ( key, item.extras[key]) txtpass.set_text(content) txtpass.set_use_markup(True) return else: txtpass.set_text(" ")
def on_account_selected(self, widget=None): """ Display the account in the window when selected on the tree """ selection = self.builder.get_object("treefolderview").get_selection() (model, itera) = selection.get_selected() folderspath = pyp.get_folder_path(model, itera, []) txtpass = self.builder.get_object("labelpass") if itera is None: txtpass.set_text(" ") return item = self.pypass.get_item(self.data, folderspath, model[itera][2], model[itera][0]) if item is None: txtpass.set_text(" ") return elif isinstance(item, PypFolder): content = "" content += "<b>Name:</b> %s \n" % item.name content += "<b>Description:</b> %s \n" % \ item.description txtpass.set_text(content) txtpass.set_use_markup(True) return elif isinstance(item, PypAccount): content = "" content += "<b>Name:</b> %s \n" % item.name content += "<b>Password:</b> %s \n" % item.password keys = item.extras.keys() keys.sort() for key in keys: if key not in ('name', 'password'): if key.lower() == 'url': content += "<b>%s:</b> <a href='%s'>" \ "%s</a> \n" % (key, item.extras[key], item.extras[key]) else: content += "<b>%s:</b> %s \n" % (key, item.extras[key]) txtpass.set_text(content) txtpass.set_use_markup(True) return else: txtpass.set_text(" ")