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

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

wip

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