-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtourbillon
69 lines (60 loc) · 2.62 KB
/
tourbillon
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
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gio, GdkPixbuf
import os
import subprocess
class MainWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Tourbillon", default_width=720, default_height=1440)
self.set_position(Gtk.WindowPosition.CENTER)
# Création d'un bouton dans la barre de titre
self.set_decorated(True)
headerbar = Gtk.HeaderBar()
headerbar.set_title("Tourbillon")
headerbar.set_show_close_button(True)
self.set_titlebar(headerbar)
# Création d'un TreeView pour afficher les scripts
self.store = Gtk.ListStore(str, bool)
self.treeview = Gtk.TreeView(model=self.store)
self.treeview.set_headers_visible(False)
renderer_toggle = Gtk.CellRendererToggle()
renderer_toggle.connect("toggled", self.on_toggle_cell)
column_toggle = Gtk.TreeViewColumn("", renderer_toggle, active=1)
self.treeview.append_column(column_toggle)
renderer_text = Gtk.CellRendererText()
column_text = Gtk.TreeViewColumn("", renderer_text, text=0)
self.treeview.append_column(column_text)
self.fill_store()
scrolled_window = Gtk.ScrolledWindow()
scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
scrolled_window.add(self.treeview)
self.add(scrolled_window)
# Création d'un bouton pour exécuter les scripts sélectionnés
icon = Gio.ThemedIcon(name="media-playback-start")
image = Gtk.Image.new_from_gicon(icon, Gtk.IconSize.BUTTON)
self.button = Gtk.Button()
self.button.add(image)
self.button.connect("clicked", self.on_button_clicked)
headerbar.pack_end(self.button)
self.show_all()
def fill_store(self):
path = os.path.expanduser("~/Documents/Scripts")
if not os.path.exists(path):
os.makedirs(path)
for file in os.listdir(path):
if file.endswith(".sh") or file.endswith(".py"):
self.store.append([file, False])
def on_toggle_cell(self, widget, path):
self.store[path][1] = not self.store[path][1]
def on_button_clicked(self, widget):
for row in self.store:
if row[1]:
path = os.path.expanduser("~/Documents/Scripts/" + row[0])
if row[0].endswith(".sh"):
subprocess.Popen(["/bin/sh", path])
elif row[0].endswith(".py"):
subprocess.Popen(["python3", path])
win = MainWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()