5 from gi.repository import Gtk
8 class GladeWindowManager:
9 builder = Gtk.Builder()
12 def append(cls, glade_file):
13 cls.builder.add_from_file(glade_file)
16 def initWindow(cls, window_name, window_instance):
17 cls.builder.connect_signals(window_instance)
18 return cls.builder.get_object(window_name)
27 def on_window_destroy(self, widget, data=None):
31 self.window = GladeWindowManager.initWindow("main_window", self)
32 self.window.show_all()
34 def set_action_on_start_button(self, action):
35 self.action_on_start_button = action
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()
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()
51 # Récupération des valeurs dans "Bases"
52 bases = self._get_all_textlines_from_buffer(
53 widgets[1][0].get_buffer()
55 # Récupération des valeurs dans "Modules"
56 modules = self._get_all_textlines_from_buffer(
57 widgets[2][0].get_buffer()
59 # Récupération de la valeur dans "Actions"
60 action = [rb.get_label() for rb in widgets[3] if rb.get_active()][0]
62 # Appel de l'action à réaliser lorsque l'on clique sur le bouton
63 self.action_on_start_button(action, modules, bases, scripts)
65 if __name__ == "__main__":
66 GladeWindowManager.append("OpenERPEasyStarter.glade")
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 :
79 %s""" % (modules, bases, scripts, action))
81 # Connection de l'action à l'IHM
82 appli.set_action_on_start_button(test_action_on_start_button)