[kupfer: 8/18] trash +EmptyTrash action
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [kupfer: 8/18] trash +EmptyTrash action
- Date: Tue, 22 Jan 2013 20:44:23 +0000 (UTC)
commit 0e559916fa0cb09748efb4ab68d075a5eb58ff30
Author: Karol BÄdkowski <karol bedkowski gmail com>
Date: Tue Oct 2 17:43:45 2012 +0200
trash +EmptyTrash action
Author: J <j49137 gmail com>
kupfer/plugin/trash.py | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
---
diff --git a/kupfer/plugin/trash.py b/kupfer/plugin/trash.py
index 7897bf1..29890eb 100644
--- a/kupfer/plugin/trash.py
+++ b/kupfer/plugin/trash.py
@@ -1,5 +1,5 @@
__kupfer_name__ = _("Trash")
-__kupfer_actions__ = ("MoveToTrash", )
+__kupfer_actions__ = ("MoveToTrash", "EmptyTrash")
__kupfer_sources__ = ("TrashSource", )
__description__ = _("Access trash contents")
__version__ = "2009-12-06"
@@ -10,6 +10,7 @@ import gio
from kupfer.objects import Leaf, Action, Source, SourceLeaf, FileLeaf
from kupfer.objects import OperationError
from kupfer.obj.fileactions import Open
+from kupfer.obj.base import OperationError
from kupfer import utils, icons, pretty
@@ -68,6 +69,23 @@ class RestoreTrashedFile (Action):
def get_icon_name(self):
return "edit-undo"
+class EmptyTrash (Action):
+ rank_adjust = -1
+ def __init__(self):
+ Action.__init__(self, _("Empty Trash"))
+ def activate(self, trash):
+ gfile = gio.File(TRASH_URI)
+ failed = []
+ for info in gfile.enumerate_children("standard::*,trash::*"):
+ name = info.get_name()
+ if not gfile.get_child(name).delete():
+ failed.append(name)
+ if failed:
+ err = _("Could not delete files:\n ")
+ raise OperationError(err + '\n '.join(failed))
+ def get_icon_name(self):
+ return "user-trash-full"
+
class TrashFile (Leaf):
"""A file in the trash. Represented object is a file info object"""
def __init__(self, trash_uri, info):
@@ -150,6 +168,12 @@ class Trash (SpecialLocation):
def content_source(self, alternate=False):
return TrashContentSource(self.object, name=unicode(self))
+ def get_actions(self):
+ for action in SpecialLocation.get_actions(self):
+ yield action
+ if self.get_item_count():
+ yield EmptyTrash()
+
def get_item_count(self):
gfile = gio.File(self.object)
info = gfile.query_info(gio.FILE_ATTRIBUTE_TRASH_ITEM_COUNT)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]