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

Last change on this file since 4109 was 4109, checked in by hectorgh, 2 years ago

wip

File size: 5.3 KB
RevLine 
[3155]1import gi
2gi.require_version('Gtk', '3.0')
3
4from gi.repository import Gtk,GdkPixbuf,Gdk
5
[3649]6import Core
7
[3155]8class PopupMenu(Gtk.EventBox):
9
[3649]10        def __init__(self):
11
12
13                self.core=Core.Core.get_core()
14                ui_path=self.core.ui_path
[3155]15               
16                popup_menu_x=400
17                popup_menu_y=765
[4104]18                percentage=0.8
[3155]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")
[4099]34                self.popup_menu_left=builder.get_object("popup_box_left")
[3155]35                self.popup_shadow=builder.get_object("popup_box_right")
[4099]36                decorator_bar=builder.get_object("decoration_bar_box")
37               
[3155]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()
[4104]45                pixbuf=pixbuf.scale_simple(400*percentage,225*percentage,GdkPixbuf.InterpType.BILINEAR)
[3155]46                self.popup_image.set_from_pixbuf(pixbuf)
47               
48                self.revealer.add(self.popup_menu)
49                self.add(self.revealer)
50               
[4099]51
[3155]52                self.popup_menu.set_name("TRANSPARENT")
53                self.popup_shadow.set_name("POPUP_SHADOW_LEFTRIGHT")
54                self.revealer.set_name("TRANSPARENT")
[4099]55                self.popup_menu_left.set_name("DROPMENU")
56                decorator_bar.set_name("DECORATOR_BAR")
[3155]57               
[4099]58                self.populate_menu()
[3155]59               
[4099]60        #def init
61       
62        def populate_menu(self):
[3155]63               
[4099]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)
[4109]113                b.connect("clicked",self.get_installed_list)
[4099]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()
[3155]123                separator.set_name("SECTION_DIVIDER")
[4099]124                self.popup_menu_left.pack_start(separator,False,False,0)
[3155]125               
126               
[4099]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                       
[3155]133               
[4099]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"]
[4104]139                        txt=item
[4099]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")
[4109]156                       
157                        b.connect("clicked",self.category_clicked,txt)
158                       
[4099]159                        self.popup_menu_left.pack_start(b,True,True,0)
160               
[3155]161       
[4099]162        def mouse_over(self,widget,event):
163               
164                widget.img.set_from_file(widget.icon_over)
165               
166                #widget.get_children()[0].get_children()[0].set_from_file("favorite_white.svg")
167               
168        #def mouse_over
169       
170        def mouse_left(self,widget,event):
171               
172                widget.img.set_from_file(widget.icon)
173               
174                #widget.get_children()[0].get_children()[0].set_from_file("favorite.svg")
175               
176        #def mouse_left
[3155]177
178        def hide_revealer(self,widget,event):
179               
[3807]180                self.core.main_window.main_eb_clicked(None,None)
[3155]181               
182        #def hide_revealer
[3649]183       
[4109]184       
185        def category_clicked(self,widget,category):
186               
187               
188                self.core.main_window.main_eb_clicked(None,None)
189                self.core.main_menu.category_clicked(None,category)
190               
191        #def category_clicked
192       
193        def get_installed_list(self,widget):
194               
195                self.core.main_window.main_eb_clicked(None,None)
196                self.core.main_window.get_installed_list()
197               
198        #def get_installed_list
199       
[3649]200        def go_home(self,widget):
201               
[3796]202               
203                self.core.main_window.show_home()
[3649]204                # Forcing main_eb_clicked call to hide both popup menu and fade_box
205                self.core.main_window.main_eb_clicked(None,None)
206                self.core.main_window.stack.set_transition_type(Gtk.RevealerTransitionType.CROSSFADE)
207               
208        #def go_home
[3155]209
210#class PopupMenu
Note: See TracBrowser for help on using the repository browser.