Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
 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
Пример #4
0
    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(" ")
Пример #5
0
    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(" ")
Пример #6
0
 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