-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmove2comics.py
75 lines (59 loc) · 2.13 KB
/
move2comics.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import gi
import shutil
gi.require_version('Notify', '0.7')
gi.require_version('Nautilus', '4.0')
from gi.repository import Nautilus, GObject, Notify
from typing import List
from os.path import exists, join
from pathlib import Path
VALID_MIMETYPES = "application/vnd.comicbook-rar", "application/vnd.comicbook+zip", "inode/directory"
class Move2Comics(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
super().__init__()
def menu_activate_cb(
self,
menu: Nautilus.MenuItem,
file: Nautilus.FileInfo,
) -> None:
if file.is_gone():
return
home = str(Path.home())
origen = file.get_location().get_path()
destino = join(home, "Comics", file.get_name())
Notify.init("moviendo2Comics")
titulo = "Mover a ~/Comics"
if not exists(destino):
shutil.move(origen, destino)
notificacion = Notify.Notification.new (titulo,
"%s movido" % file.get_name(),
"dialog-information")
notificacion.set_urgency(0)
else:
notificacion = Notify.Notification.new (titulo,
"%s ya existe" % file.get_name(),
"dialog-error")
notificacion.set_urgency(2)
notificacion.show()
def get_file_items(
self,
files: List[Nautilus.FileInfo],
) -> List[Nautilus.MenuItem]:
if len(files) != 1:
return []
file = files[0]
if not file.get_mime_type() in VALID_MIMETYPES:
return []
item = Nautilus.MenuItem(
name="move2comics",
label="Mover a Comics: %s" % file.get_name(),
tip="Mover a Comics: %s" % file.get_name(),
)
item.connect("activate", self.menu_activate_cb, file)
return [
item,
]
def get_background_items(
self,
current_folder: Nautilus.FileInfo,
) -> List[Nautilus.MenuItem]:
return []