-
Notifications
You must be signed in to change notification settings - Fork 1
/
gui_utils.py
87 lines (80 loc) · 3.2 KB
/
gui_utils.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
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python3
#coding: utf8
"""
Module implémentant les différentes fonctionnalités utiles de notre
interface graphique
"""
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
def create_img_chooser(title, window, multiple=False):
"""
Fonction permettant de générer une fenêtre et un bouton pour sélectionner des
images
"""
dialog = Gtk.FileChooserDialog(title,
None,
Gtk.FileChooserAction.OPEN,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
filter_img = Gtk.FileFilter()
filter_img.set_name(("Images (jpg, png et gif)"))
filter_img.add_mime_type("image/jpeg")
filter_img.add_mime_type("image/png")
filter_img.add_mime_type("image/gif")
filter_img.add_pattern("*.jpe?g")
filter_img.add_pattern("*.png")
filter_img.add_pattern("*.gif")
dialog.add_filter(filter_img)
dialog.set_select_multiple(multiple)
dialog.set_default_response(Gtk.ResponseType.OK)
dialog.set_action(Gtk.FileChooserAction.OPEN)
# On regarde si les fichiers ont bien été trouvés
try:
dialog.connect("response", callback_read_files)
except IOError as error:
messagedialog = Gtk.MessageDialog(window,
flags=Gtk.DialogFlags.MODAL,
type=Gtk.MessageType.WARNING,
buttons=Gtk.ButtonsType.OK_CANCEL,
message_format=error.strerror)
messagedialog.connect("response", callback_dialog_close)
messagedialog.show()
file_chooser = Gtk.FileChooserButton.new_with_dialog(dialog)
file_chooser.set_title(title)
return file_chooser
def create_position_chooser():
"""
Créé une liste déroulante de choix de positonnement
"""
tableau_positionnement = [['Haut/Gauche', 'hg'],
['Haut/Centre', 'hc'],
['Haut/Droite', 'hd'],
['Milieu/Gauche', 'cg'],
['Au centre', 'cc'],
['Milieu/Droite', 'cd'],
['Bas/Gauche', 'bg'],
['Bas/Centre', 'bc'],
['Bas/Droite', 'bd']
]
boxposition = Gtk.ComboBoxText()
for position in tableau_positionnement:
boxposition.append(position[1], position[0])
boxposition.set_active(0)
return boxposition
def callback_read_files(dialog, response_id):
"""
Fonction de callback sur le chargement des fichiers
"""
if response_id == Gtk.ResponseType.OK:
return dialog.get_filenames()
elif response_id == Gtk.ResponseType.CANCEL:
raise IOError("cancelled: FileChooserAction.OPEN")
def callback_dialog_close(widget, response_id):
"""
Fonction de callback permettant de fermer les boîtes de dialogue
"""
if response_id == Gtk.ResponseType.OK:
widget.destroy()
else:
raise SystemError("Une erreur inconnue est survenue.")