From fd244728055bc79ee934804872857a3cdb247d7a Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Tue, 30 Nov 2021 14:35:48 +0000 Subject: [PATCH] premier jet d'interface graphique --- src/main.py | 25 +---- src/shaders/shader.frag | 7 ++ src/shaders/shader.vert | 4 + ui/GLArea.glade | 211 ++++++++++++++++++++++++++++++++++++++++ ui/espace 1D projet.jpg | Bin 0 -> 19178 bytes 5 files changed, 226 insertions(+), 21 deletions(-) create mode 100644 src/shaders/shader.frag create mode 100644 src/shaders/shader.vert create mode 100644 ui/GLArea.glade create mode 100644 ui/espace 1D projet.jpg diff --git a/src/main.py b/src/main.py index 342e2b6..81db091 100644 --- a/src/main.py +++ b/src/main.py @@ -23,31 +23,14 @@ import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk -from lxml import etree -modelPath = "../models/dimers random walk.xml" -schemPath = "../schemas/models_0.2.xmls" - -tree = etree.parse(modelPath) +glade_path = "../ui/GLArea.glade" ## Main window +builder = Gtk.Builder() +builder.add_from_file(glade_path) -class MyWindow(Gtk.Window): - - def __init__(self): - super().__init__(title="Hello World") - - self.button = Gtk.Button(label="Click Here") - self.button.connect("clicked", self.on_button_clicked) - self.add(self.button) - - def on_button_clicked(self, widget): - print("Hello World") - - -win = MyWindow() -win.connect("destroy", Gtk.main_quit) +win = builder.get_object("Appwindow") win.show_all() -Gtk.main() diff --git a/src/shaders/shader.frag b/src/shaders/shader.frag new file mode 100644 index 0000000..3c14ed2 --- /dev/null +++ b/src/shaders/shader.frag @@ -0,0 +1,7 @@ +uniform vec2 resolution; + +void main() +{ + gl_FragColor = vec4(gl_FragCoord.x / resolution.x,1,1,1); +} + diff --git a/src/shaders/shader.vert b/src/shaders/shader.vert new file mode 100644 index 0000000..1e37e40 --- /dev/null +++ b/src/shaders/shader.vert @@ -0,0 +1,4 @@ + void main() +{ + gl_Position = ftransform(); +} diff --git a/ui/GLArea.glade b/ui/GLArea.glade new file mode 100644 index 0000000..f3e9190 --- /dev/null +++ b/ui/GLArea.glade @@ -0,0 +1,211 @@ + + + + + + + True + True + center + 800 + 600 + static + + + tout ce qui est sous la 'header bar' + True + True + vertical + + + Image 1D + contrôles + 100 + True + True + vertical + + + True + False + + + True + False + espace 1D projet.jpg + + + + + True + True + + + + + 18 + True + False + center + + + Zoom + True + True + True + + + False + True + 1 + + + + + Filtres + True + True + True + + + False + True + 2 + + + + + Apparences + True + True + True + + + False + True + 3 + + + + + True + True + + + + + False + True + + + + + tout ce qui est sous l'image 1D et ses contrôles + True + True + + + transitions + 700 + True + True + True + + + False + True + + + + + objets + True + True + True + + + True + True + + + + + True + True + + + + + + + True + True + True + Salut ! Je suis la nouvelle barre de commandes. + Gem-graph + False + 2 + True + + + True + False + 2 + + + utilisateur (préférences) + True + True + True + + + False + True + 0 + + + + + modèle (load / save) + True + True + True + + + + False + True + 1 + + + + + états / transitions + True + True + True + + + False + True + 2 + + + + + monitoring et contrôles / éditions + True + True + True + + + False + True + 3 + + + + + + + + diff --git a/ui/espace 1D projet.jpg b/ui/espace 1D projet.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d5c83db95d99c51dfebd6a23e89aa68477758de GIT binary patch literal 19178 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