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

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

wip

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