source: lliurex-store/trunk/fuentes/lliurex-store-gui/MainMenu.py @ 3734

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

wip

File size: 8.2 KB
Line 
1import gi
2gi.require_version('Gtk', '3.0')
3
4from gi.repository import Gtk, Pango, GdkPixbuf, Gdk, Gio, GObject,GLib
5
6import signal
7signal.signal(signal.SIGINT, signal.SIG_DFL)
8
9import gettext
10
11import Core
12import Screenshot
13import ImageManager
14
15_=gettext.gettext
16
17RSRC_DIR="./"
18
19class MainMenu(Gtk.VBox):
20       
21        def __init__(self):
22               
23                Gtk.VBox.__init__(self)
24               
25                self.paused=False
26                self.max_image_id=5
27               
28                ui_path=Core.Core.get_core().ui_path
29               
30                builder=Gtk.Builder()
31                builder.add_from_file(ui_path)
32               
33               
34                self.main_view_box=builder.get_object("main_view_box")
35                self.divider1=builder.get_object("mv_divider1")
36                self.divider2=builder.get_object("mv_divider2")
37                self.divider3=builder.get_object("mv_divider3")
38                self.featured_label=builder.get_object("featured_label")
39                self.categories_label=builder.get_object("categories_label")
40                self.featured_extra_box=builder.get_object("featured_extra_box")
41                self.rewind_button=builder.get_object("media_rewind_button")
42                self.play_button=builder.get_object("media_play_button")
43                self.forward_button=builder.get_object("media_forward_button")
44                self.media_play_image=builder.get_object("media_play_image")
45                self.categories_grid=builder.get_object("categories_grid")
46
47                self.image_stack=Gtk.Stack()
48                self.image_stack.set_transition_duration(800)
49                self.image_stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT)
50                self.image_stack.set_margin_right(10)
51                self.image_stack.set_margin_left(10)
52                self.main_view_box.pack_start(self.image_stack,False,False,10)
53                self.main_view_box.reorder_child(self.image_stack,2)
54               
55                self.pack_start(self.main_view_box,True,True,0)
56               
57               
58               
59                self.rewind_button.connect("clicked",self.rewind_clicked)
60                self.play_button.connect("clicked",self.play_clicked)
61                self.forward_button.connect("clicked",self.forward_clicked)
62               
63                self.build_related()
64                self.build_categories()
65                self.set_css_names()
66               
67               
68               
69                GLib.timeout_add(3000,self.next_image)
70               
71        #def __init__
72       
73        def build_related(self):
74
75                # Main banners
76               
77                size=134
78                spacing=5
79               
80               
81                self.image1=Gtk.Image.new_from_file(RSRC_DIR+"gearth.png")
82                self.image2=Gtk.Image.new_from_file(RSRC_DIR+"gearth2.png")
83                self.image3=Gtk.Image.new_from_file(RSRC_DIR+"gearth3.png")
84                self.image4=Gtk.Image.new_from_file(RSRC_DIR+"gearth4.png")
85                self.image5=Gtk.Image.new_from_file(RSRC_DIR+"gearth5.png")
86               
87                b=Gtk.Button()
88                b.set_name("RELATED_BUTTON")
89                b.add(self.image1)
90                self.image_stack.add_titled(b,"image1","Image 1")
91               
92                b=Gtk.Button()
93                b.set_name("RELATED_BUTTON")
94                b.add(self.image2)
95                self.image_stack.add_titled(b,"image2","Image 2")
96               
97                b=Gtk.Button()
98                b.set_name("RELATED_BUTTON")
99                b.add(self.image3)
100                self.image_stack.add_titled(b,"image3","Image 3")
101               
102                b=Gtk.Button()
103                b.set_name("RELATED_BUTTON")
104                b.add(self.image4)
105                self.image_stack.add_titled(b,"image4","Image 4")
106               
107                b=Gtk.Button()
108                b.set_name("RELATED_BUTTON")
109                b.add(self.image5)
110                self.image_stack.add_titled(b,"image5","Image 5")
111               
112                # Smaller banners
113               
114                s=Screenshot.ScreenshotNeo()
115                info={}
116                info["image_url"]="https://teoten.files.wordpress.com/2010/02/splash1.png"
117                info["image_id"]="banner_01"
118                info["x"]=size
119                info["y"]=size
120                info["aspect_ratio"]=False
121                info["pkg_name"]="Ardour"
122                s.download_image(info)
123               
124                self.testbutton=Gtk.Button()
125                self.testbutton.set_name("RELATED_BUTTON")
126                self.testbutton.add(s)
127                self.featured_extra_box.pack_start(self.testbutton,True,False,spacing)
128               
129                s=Screenshot.ScreenshotNeo()
130                info={}
131                info["image_url"]="https://emailclientexpert.files.wordpress.com/2010/11/mozilla_thunderbird.jpg"
132                info["image_id"]="banner_02"
133                info["x"]=size
134                info["y"]=size
135                info["aspect_ratio"]=False
136                info["pkg_name"]="Thunderbird"
137                s.download_image(info)
138                b=Gtk.Button()
139                b.set_name("RELATED_BUTTON")
140                b.add(s)
141                self.featured_extra_box.pack_start(b,True,False,spacing)
142               
143                s=Screenshot.ScreenshotNeo()
144                info={}
145                info["image_url"]="http://img.linuxadictos.com/wp-content/uploads/firefox-381.jpg"
146                info["image_id"]="banner_03"
147                info["x"]=size
148                info["y"]=size
149                info["aspect_ratio"]=False
150                info["pkg_name"]="Firefox"
151                s.download_image(info)
152                b=Gtk.Button()
153                b.set_name("RELATED_BUTTON")
154                b.add(s)
155                self.featured_extra_box.pack_start(b,True,False,spacing)
156               
157                s=Screenshot.ScreenshotNeo()
158                info={}
159                info["image_url"]="https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Darktable_icon.svg/768px-Darktable_icon.svg.png"
160                info["image_id"]="banner_04"
161                info["x"]=size
162                info["y"]=size
163                info["aspect_ratio"]=False
164                info["custom_frame"]=True
165                info["pkg_name"]="Darktable"
166                s.download_image(info)
167                b=Gtk.Button()
168                b.set_name("RELATED_BUTTON")
169                b.add(s)
170                self.featured_extra_box.pack_start(b,True,False,spacing)
171               
172               
173                s=Screenshot.ScreenshotNeo()
174                info={}
175                info["image_url"]="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d8/Krita_steam_boxart_Feb_2014.png/220px-Krita_steam_boxart_Feb_2014.png"
176                info["image_id"]="banner_05"
177                info["x"]=size
178                info["y"]=size
179                info["aspect_ratio"]=False
180                info["pkg_name"]="Krita"
181                s.download_image(info)
182               
183                b=Gtk.Button()
184                b.set_name("RELATED_BUTTON")
185                b.add(s)
186                self.featured_extra_box.pack_start(b,True,False,spacing)
187               
188               
189               
190        #def build_related
191       
192        def build_categories(self):
193               
194                max_width=7
195                w_counter=0
196                h_counter=0
197               
198                button_size=97
199               
200                img_list=["audio.svg","development.svg","education.svg","favorite.svg","games.svg","graphics.svg","internet.svg","office.svg","science.svg","system.svg","utilities.svg","video.svg"]
201               
202               
203                for x in range(0,12):
204                        b=Gtk.Button()
205                        b.set_name("RELATED_BUTTON")
206                        hbox=Gtk.HBox()
207                        hbox.set_halign(Gtk.Align.START)
208                        import random
209                        id=int(random.random()*len(img_list))
210                        #img=Gtk.Image.new_from_file("/home/cless/Desktop/icons/%s"%img_list[id])
211                       
212                        img_path="/home/cless/Desktop/icons/clean_icons/%s"%img_list[x]
213                       
214                        '''
215                       
216                        image=Gtk.Image.new_from_file("/home/cless/Desktop/icons/clean_icons/%s"%img_list[id])
217                        pixbuf=image.get_pixbuf()
218                        x=pixbuf.get_width()
219                        y=pixbuf.get_height()
220                               
221                        x=1
222                        y=1
223                       
224                        size=46
225                               
226                        ratio=min(size*1.0/x,size*1.0/y)
227                        pixbuf=pixbuf.scale_simple(x*ratio,y*ratio,GdkPixbuf.InterpType.BILINEAR)
228                       
229                        img=Gtk.Image.new_from_pixbuf(pixbuf)
230                        img.set_margin_left(0)
231                       
232                       
233                       
234                       
235                        label=Gtk.Label("Testing")
236                        label.set_margin_left(5)
237                        hbox.pack_start(img,True,True,0)
238                        hbox.pack_start(label,True,True,0)
239                        b.add(hbox)
240                       
241                        '''
242                       
243                        s=Screenshot.ScreenshotNeo()
244                        i={}
245                        i["image_path"]=img_path
246                        i["x"]=button_size
247                        i["y"]=button_size
248                        i["custom_frame"]=True
249                        i["pkg_name"]=img_list[x].split(".svg")[0].upper()
250                       
251                        s.create_banner_from_file(i)
252                        b.add(s)
253                       
254                       
255                        self.categories_grid.attach(b,w_counter,h_counter,1,1)
256                        w_counter+=1
257                        if w_counter ==max_width:
258                                w_counter=0
259                                h_counter+=1
260               
261                       
262                self.categories_grid.show_all()
263               
264        #def build_categories
265       
266       
267        def set_css_names(self):
268               
269                self.main_view_box.set_name("DETAILS_BOX")
270                self.divider1.set_name("DIVIDER")
271                self.divider2.set_name("DIVIDER")
272                self.divider3.set_name("DIVIDER")
273                self.featured_label.set_name("RELATED_LABEL")
274                self.categories_label.set_name("RELATED_LABEL")
275                self.rewind_button.set_name("MEDIA_BUTTON")
276                self.play_button.set_name("MEDIA_BUTTON")
277                self.forward_button.set_name("MEDIA_BUTTON")
278               
279               
280        #def set_css_info
281       
282       
283        def next_image(self,force=False,add=True):
284               
285                tmp=self.image_stack.get_visible_child_name()
286                id=int(tmp.split("image")[1])
287               
288                if add:
289               
290                        if id < self.max_image_id:
291                                id+=1
292                        else:
293                                id=1
294                else:
295                       
296                        if id <= 1:
297                                id=self.max_image_id
298                        else:
299                                id-=1
300               
301                id="image%s"%id
302               
303                if not self.paused or force:
304                        if not self.image_stack.get_transition_running() or force:
305                                self.image_stack.set_visible_child_name(id)
306                       
307                return True
308               
309        #def next_image
310       
311        def rewind_clicked(self,widget):
312               
313                self.image_stack.set_transition_type(Gtk.StackTransitionType.SLIDE_RIGHT)
314                self.next_image(True,False)
315                self.image_stack.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT)
316               
317        #def rewind_clicked
318       
319        def play_clicked(self,widget):
320
321                if self.paused:
322                        self.media_play_image.set_from_file(RSRC_DIR + "media_pause.svg")
323                else:
324                        self.media_play_image.set_from_file(RSRC_DIR + "media_play.svg")
325                       
326                self.paused=not self.paused
327               
328        #def rewind_clicked
329       
330        def forward_clicked(self,widget):
331               
332                self.next_image(True)
333               
334        #def rewind_clicked
335       
336#class MainMenu
Note: See TracBrowser for help on using the repository browser.