Mise en place de la structure de fichiers
[oegtk/easy_starter.git] / test / ihm.py
1 #!/usr/bin/python3
2 #-*- coding: utf-8 -*-
3
4
5 from gi.repository import Gtk
6
7
8 class GladeWindowManager:
9     builder = Gtk.Builder()
10
11     @classmethod
12     def append(cls, glade_file):
13         cls.builder.add_from_file(glade_file)
14
15     @classmethod
16     def initWindow(cls, window_name, window_instance):
17         cls.builder.connect_signals(window_instance)
18         return cls.builder.get_object(window_name)
19
20
21 class MainWindow:
22
23     @staticmethod
24     def start():
25         Gtk.main()
26
27     def on_window_destroy(self, widget, data=None):
28         Gtk.main_quit()
29
30     def __init__(self):
31         self.window = GladeWindowManager.initWindow("main_window", self)
32         self.window.show_all()
33
34     def set_action_on_start_button(self, action):
35         self.action_on_start_button = action
36
37     @staticmethod
38     def _get_all_textlines_from_buffer(buffer):
39         start, end = buffer.get_start_iter(), buffer.get_end_iter()
40         return buffer.get_text(start, end, True).splitlines()
41
42     def on_start_button_clicked(self, widget, data=None):
43         # Récupération des widgets utiles à partir du widget général
44         grid = widget.get_children()[0].get_children()[1]
45         widgets = [e.get_children() for e in grid.get_children()
46                                     if type(e) != Gtk.Label]
47         # Récupération des valeurs dans "Scripts"
48         scripts = self._get_all_textlines_from_buffer(
49             widgets[0][0].get_buffer()
50         )
51         # Récupération des valeurs dans "Bases"
52         bases = self._get_all_textlines_from_buffer(
53             widgets[1][0].get_buffer()
54         )
55         # Récupération des valeurs dans "Modules"
56         modules = self._get_all_textlines_from_buffer(
57             widgets[2][0].get_buffer()
58         )
59         # Récupération de la valeur dans "Actions"
60         action = [rb.get_label() for rb in widgets[3] if rb.get_active()][0]
61         
62         # Appel de l'action à réaliser lorsque l'on clique sur le bouton
63         self.action_on_start_button(action, modules, bases, scripts)
64
65 if __name__ == "__main__":
66     GladeWindowManager.append("OpenERPEasyStarter.glade")
67     appli = MainWindow()
68
69     # Définition d'une action de test
70     def test_action_on_start_button(action, modules, bases, scripts):
71         print("""Éléments récupérés :
72 modules :
73 %s
74 bases
75 %s
76 scripts
77 %s
78 action
79 %s""" % (modules, bases, scripts, action))
80
81     # Connection de l'action à l'IHM
82     appli.set_action_on_start_button(test_action_on_start_button)
83     # Lancement de l'IHM
84     appli.start()