forked from Nowyyy/Project-Hashi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMenuLayout.rb
More file actions
181 lines (146 loc) · 7.14 KB
/
Copy pathMenuLayout.rb
File metadata and controls
181 lines (146 loc) · 7.14 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
require 'gtk3'
##
# Cette classe sert de layout de base pour la création de Menu.
# Les classes héritantes peuvent ainsi implémenter les attributs en fonction de leurs besoins.
class MenuLayout
# @builder -> Variable contenant le GTK Builder pour donner forme aux menus
# @menu -> Variable contenant la fenetre du menu en cours
# @btn_retour -> Variable contenant le bouton de retour
# @css_file -> Fichier contenant toutes les caractéristiques CSS
# @btn_facile -> Zone contenant les boutons faciles
# @btn_moyen -> Zone contenant les boutons moyens
# @btn_difficile -> Zone contenant les boutons difficiles
# @tabfacile -> Tableau contenant les paths des niveaux faciles
# @tabdimfacile -> Tableau contenant les dimensions des niveaux faciles
# @tabmoyen -> Tableau contenant les paths des niveaux moyens
# @tabdimmoyen -> Tableau contenant les dimensions des niveaux moyens
# @tabdifficile -> Tableau contenant les paths des niveaux difficiles
# @tabdimdifficile -> Tableau contenant les dimensions des niveaux difficiles
# @tableauBtn -> Tableau contenant la liste de tous les boutons
# Attribut correspondant au menu
attr_reader :menu
# Bouton du mode Facile
attr_accessor :btn_facile
# Bouton du mode Moyen
attr_accessor :btn_moyen
# Bouton du mode Difficile
attr_accessor :btn_difficile
# Tableau de bouton
attr_accessor :tableauBtn
# Attribut correspondant au fichier CSS
attr_accessor :css_file
# Constructeur du MenuLayout
# * +path+ Chemin du fichier
# * +title+ Titre du menu
def initialize(path, title)
main_window_res = "./Ressources/Glade/menu_selection.glade"
@builder = Gtk::Builder.new
@builder.add_from_file(main_window_res)
@menu = @builder.get_object('main_window')
@menu.set_title title
@menu.signal_connect "destroy" do
Gtk.main_quit
end
@menu.set_window_position Gtk::WindowPosition::CENTER
allbtn = @builder.get_object('listbox')
facile_box = @builder.get_object('facile_box')
moyen_box= @builder.get_object('moyen_box')
difficile_box= @builder.get_object('difficile_box')
niveau = @builder.get_object('niveau')
@btn_retour = @builder.get_object('btn_retour')
@css_file = Gtk::CssProvider.new
@css_file.load(data: <<-CSS)
@import url("css/style.css");
CSS
# #Bouton Retour cliqué
@btn_retour.signal_connect('clicked'){
@menu.destroy
MainMenu.new
Gtk.main
}
@btn_facile = @builder.get_object('btn_facile')
@btn_moyen = @builder.get_object('btn_moyen')
@btn_difficile = @builder.get_object('btn_difficile')
@btn_retour.style_context.add_provider(@css_file, Gtk::StyleProvider::PRIORITY_USER)
@menu.style_context.add_provider(@css_file, Gtk::StyleProvider::PRIORITY_USER)
@btn_facile.style_context.add_provider(@css_file, Gtk::StyleProvider::PRIORITY_USER)
@btn_moyen.style_context.add_provider(@css_file, Gtk::StyleProvider::PRIORITY_USER)
@btn_difficile.style_context.add_provider(@css_file, Gtk::StyleProvider::PRIORITY_USER)
facile_box.style_context.add_provider(@css_file, Gtk::StyleProvider::PRIORITY_USER)
moyen_box.style_context.add_provider(@css_file, Gtk::StyleProvider::PRIORITY_USER)
difficile_box.style_context.add_provider(@css_file, Gtk::StyleProvider::PRIORITY_USER)
@tableauBtn=Array.new(22)
# "ListeNiveau"
#Initialisation des boutons de niveau
@tabfacile=[path+"/Facile/7x7_1.txt",path+"/Facile/7x7_2.txt",path+"/Facile/7x7_3.txt",path+"/Facile/10x7.txt",path+"/Facile/10x10.txt",path+"/Facile/12x12.txt",path+"/Facile/15x5.txt",path+"/Facile/12x12_1.txt"]
@tabdimfacile=[7,7,7,7,7,7,10,7,10,10,12,12,15,5,12,12]
@tabmoyen=[path+"/Moyen/7x7.txt",path+"/Moyen/8x8.txt",path+"/Moyen/10x7.txt",path+"/Moyen/10x10_2.txt",path+"/Moyen/10x10.txt",path+"/Moyen/12x12.txt",path+"/Moyen/15x5.txt"]
@tabdimmoyen=[7,7,8,8,10,7,10,10,10,10,12,12,15,5]
@tabdifficile=[path+"/Difficile/7x7.txt",path+"/Difficile/8x8.txt",path+"/Difficile/10x7.txt",path+"/Difficile/10x10.txt",path+"/Difficile/10X10_2.txt",path+"/Difficile/12x12.txt",path+"/Difficile/15x5.txt"]
@tabdimdifficile=[7,7,8,8,10,7,10,10,10,10,12,12,15,5]
dimfacile=0
facile=0
moyen=0
dimmoyen=0
difficile=0
dimdifficile=0
@tableauBtn.each_index{|z|
if (z<8)
x=@tabdimfacile[dimfacile]
dimfacile+=1
y=@tabdimfacile[dimfacile]
dimfacile+=1
niveaufacile=@tabfacile[facile]
facile+=1
@tableauBtn[z]= BoutonChoix.new(true,false,false,niveaufacile,x,y)
@tableauBtn[z].set_path(niveaufacile)
facile_box.add(@tableauBtn[z])
elsif(z<15)
x=@tabdimmoyen[dimmoyen]
dimmoyen+=1
y=@tabdimmoyen[dimmoyen]
dimmoyen+=1
niveaumoyen=@tabmoyen[moyen]
moyen+=1
@tableauBtn[z]= BoutonChoix.new(false,true,false,niveaumoyen,x,y)
@tableauBtn[z].set_path(niveaumoyen)
moyen_box.add(@tableauBtn[z])
elsif(z<22)
x=@tabdimdifficile[dimdifficile]
dimdifficile+=1
y=@tabdimdifficile[dimdifficile]
dimdifficile+=1
niveaudifficile=@tabdifficile[difficile]
difficile+=1
@tableauBtn[z]= BoutonChoix.new(false,false,true,niveaudifficile,x,y)
@tableauBtn[z].set_path(niveaudifficile)
difficile_box.add(@tableauBtn[z])
end
@tableauBtn[z].style_context.add_provider(@css_file, Gtk::StyleProvider::PRIORITY_USER)
# allbtn.add(@tableauBtn[z])
}
facile_box.show_all
moyen_box.show_all
difficile_box.show_all
moyen_box.visible = false
difficile_box.visible = false
@btn_facile = @builder.get_object('btn_facile').signal_connect('clicked'){
facile_box.visible = true
moyen_box.visible = false
difficile_box.visible = false
niveau.from_file= "./Ressources/MenuSelection/facile.png"
}
@btn_moyen = @builder.get_object('btn_moyen').signal_connect('clicked'){
facile_box.visible = false
moyen_box.visible = true
difficile_box.visible = false
niveau.from_file= "./Ressources/MenuSelection/moyen.png"
}
@btn_difficile = @builder.get_object('btn_difficile').signal_connect('clicked'){
facile_box.visible = false
moyen_box.visible = false
difficile_box.visible = true
niveau.from_file= "./Ressources/MenuSelection/difficile.png"
}
end
end