source: lliurex-store/trunk/fuentes/lliurex-store-gui/usr/share/lliurex-store/lliurex-store-gui/PopupMenu.py @ 4115

Last change on this file since 4115 was 4115, checked in by hectorgh, 3 years ago

adding real code

File size: 5.4 KB
Line 
1import gi
2gi.require_version('Gtk', '3.0')
3
4from gi.repository import Gtk,GdkPixbuf,Gdk
5
6import Core
7
8import gettext
9gettext.textdomain('zero-center')
10_ = gettext.gettext
11
12
13
14class PopupMenu(Gtk.EventBox):
15
16        def __init__(self):
17
18
19                self.core=Core.Core.get_core()
20                ui_path=self.core.ui_path
21               
22                popup_menu_x=400
23                popup_menu_y=765
24                percentage=0.8
25                shadow_size=50
26               
27                Gtk.EventBox.__init__(self)
28                self.set_valign(Gtk.Align.START)
29                self.set_halign(Gtk.Align.START)
30               
31                builder=Gtk.Builder()
32                builder.add_from_file(ui_path)
33               
34                self.revealer=Gtk.Revealer()
35                self.revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_LEFT)
36                self.revealer.set_transition_duration(500)
37               
38                self.popup_image=builder.get_object("popup_image")
39                self.popup_menu=builder.get_object("popup_box")
40                self.popup_menu_left=builder.get_object("popup_box_left")
41                self.popup_shadow=builder.get_object("popup_box_right")
42                decorator_bar=builder.get_object("decoration_bar_box")
43               
44                eventbox=builder.get_object("eventbox1")
45                eventbox.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
46                eventbox.connect("button-press-event",self.hide_revealer)
47               
48                image=Gtk.Image.new_from_file(self.core.rsrc_dir+"lliurex-default-background.png")
49                pixbuf=image.get_pixbuf()
50                original_ratio=pixbuf.get_width(),pixbuf.get_height()
51                pixbuf=pixbuf.scale_simple(400*percentage,225*percentage,GdkPixbuf.InterpType.BILINEAR)
52                self.popup_image.set_from_pixbuf(pixbuf)
53               
54                self.revealer.add(self.popup_menu)
55                self.add(self.revealer)
56               
57
58                self.popup_menu.set_name("TRANSPARENT")
59                self.popup_shadow.set_name("POPUP_SHADOW_LEFTRIGHT")
60                self.revealer.set_name("TRANSPARENT")
61                self.popup_menu_left.set_name("DROPMENU")
62                decorator_bar.set_name("DECORATOR_BAR")
63               
64                self.populate_menu()
65               
66        #def init
67       
68        def populate_menu(self):
69               
70                #for item in self.popup_menu_left.get_children():
71                #       self.popup_menu_left.remove(item)
72               
73               
74                b=Gtk.Button()
75                hbox=Gtk.HBox()
76               
77                b.icon="home.svg"
78                b.icon_over="home_white.svg"
79                txt=_("Home")
80                       
81                b.img=Gtk.Image.new_from_file(b.icon)
82                b.img.set_margin_left(5)
83                b.label=Gtk.Label(txt)
84                b.label.set_halign(Gtk.Align.START)
85                       
86                hbox.pack_start(b.img,False,False,0)
87                hbox.pack_start(b.label,False,False,20)
88                b.add(hbox)
89                       
90                b.add_events( Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK )
91                b.connect("motion-notify-event",self.mouse_over)
92                b.connect("leave_notify_event",self.mouse_left)
93                b.connect("clicked",self.go_home)
94                       
95                b.show_all()
96                b.set_name("SECTION_BOX")
97                self.popup_menu_left.pack_start(b,True,True,0)
98               
99
100                b=Gtk.Button()
101                hbox=Gtk.HBox()
102               
103                b.icon="favorite.svg"
104                b.icon_over="favorite_white.svg"
105                txt=_("My applications")
106                       
107                b.img=Gtk.Image.new_from_file(b.icon)
108                b.img.set_margin_left(5)
109                b.label=Gtk.Label(txt)
110                b.label.set_halign(Gtk.Align.START)
111                       
112                hbox.pack_start(b.img,False,False,0)
113                hbox.pack_start(b.label,False,False,20)
114                b.add(hbox)
115                       
116                b.add_events( Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK )
117                b.connect("motion-notify-event",self.mouse_over)
118                b.connect("leave_notify_event",self.mouse_left)
119                b.connect("clicked",self.get_installed_list)
120                       
121                b.show_all()
122                b.set_name("SECTION_BOX")
123                self.popup_menu_left.pack_start(b,False,False,0)
124
125               
126               
127               
128                separator=Gtk.Separator()
129                separator.set_name("SECTION_DIVIDER")
130                self.popup_menu_left.pack_start(separator,False,False,0)
131               
132               
133                for item in sorted(self.core.categories_manager.categories):
134                       
135                        #self.categories["audio"]["name"]="Audio"
136                        #self.categories["audio"]["icon"]="audio.svg"
137                        #self.categories["audio"]["icon_over"]="audio_white.svg"
138                       
139               
140                        b=Gtk.Button()
141                        hbox=Gtk.HBox()
142               
143                        b.icon=self.core.categories_manager.categories[item]["small_icon"]
144                        b.icon_over=self.core.categories_manager.categories[item]["small_icon_over"]
145                        txt=_(item)
146                       
147                        b.img=Gtk.Image.new_from_file(b.icon)
148                        b.img.set_margin_left(5)
149                        b.label=Gtk.Label(txt)
150                        b.label.set_halign(Gtk.Align.START)
151                       
152                        hbox.pack_start(b.img,False,False,0)
153                        hbox.pack_start(b.label,False,False,20)
154                        b.add(hbox)
155                       
156                        b.add_events( Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK )
157                        b.connect("motion-notify-event",self.mouse_over)
158                        b.connect("leave_notify_event",self.mouse_left)
159                       
160                        b.show_all()
161                        b.set_name("SECTION_BOX")
162                       
163                        b.connect("clicked",self.category_clicked,txt)
164                       
165                        self.popup_menu_left.pack_start(b,True,True,0)
166               
167       
168        def mouse_over(self,widget,event):
169               
170                widget.img.set_from_file(widget.icon_over)
171               
172                #widget.get_children()[0].get_children()[0].set_from_file("favorite_white.svg")
173               
174        #def mouse_over
175       
176        def mouse_left(self,widget,event):
177               
178                widget.img.set_from_file(widget.icon)
179               
180                #widget.get_children()[0].get_children()[0].set_from_file("favorite.svg")
181               
182        #def mouse_left
183
184        def hide_revealer(self,widget,event):
185               
186                self.core.main_window.main_eb_clicked(None,None)
187               
188        #def hide_revealer
189       
190       
191        def category_clicked(self,widget,category):
192               
193               
194                self.core.main_window.main_eb_clicked(None,None)
195                self.core.main_menu.category_clicked(None,category)
196               
197        #def category_clicked
198       
199        def get_installed_list(self,widget):
200               
201                self.core.main_window.main_eb_clicked(None,None)
202                self.core.main_window.get_installed_list()
203               
204        #def get_installed_list
205       
206        def go_home(self,widget):
207               
208               
209                self.core.main_window.show_home()
210                # Forcing main_eb_clicked call to hide both popup menu and fade_box
211                self.core.main_window.main_eb_clicked(None,None)
212                self.core.main_window.stack.set_transition_type(Gtk.RevealerTransitionType.CROSSFADE)
213               
214        #def go_home
215
216#class PopupMenu
Note: See TracBrowser for help on using the repository browser.