source: lliurex-store/trunk/fuentes/lliurex-store-gui/PopupMenu.py @ 4104

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

wip

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