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

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

wip

File size: 6.6 KB
Line 
1import gi
2gi.require_version('Gtk', '3.0')
3from gi.repository import Gtk, Pango, GdkPixbuf, Gdk, Gio, GObject,GLib
4
5import Core
6import Package
7
8import threading
9import gettext
10import signal
11
12signal.signal(signal.SIGINT, signal.SIG_DFL)
13_=gettext.gettext
14
15
16
17class MainWindow:
18       
19        def __init__(self):
20               
21                self.core=Core.Core.get_core()
22                self.load_thread=threading.Thread()
23                self.load_gui()
24               
25        #def init
26       
27        def load_gui(self):
28               
29                builder=Gtk.Builder()
30                ui_path=self.core.ui_path
31                builder.add_from_file(ui_path)
32               
33                self.window=builder.get_object("window1")
34                self.menu_button=builder.get_object("menu_button")
35               
36                self.main_scroll=builder.get_object("main_scrolledwindow")
37                self.location_label=builder.get_object("location_label")
38                self.search_entry=builder.get_object("search_entry")
39                self.main_box=builder.get_object("main_box")
40                self.header_box=builder.get_object("header_box")
41                test_box=builder.get_object("box1")
42                test_box.set_name("INSTALL_BUTTON")
43               
44                self.details_box=self.core.details_box
45               
46               
47                self.stack=Gtk.Stack()
48                self.stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE)
49                self.stack.set_transition_duration(500)
50               
51                self.main_menu=self.core.main_menu
52                self.main_menu.testbutton.connect("clicked",self.test_show)
53               
54                self.loading_box=self.core.loading_box
55               
56                self.stack.add_titled(self.loading_box,"loading","Loading")
57                self.stack.add_titled(self.main_menu,"main","Main")
58                self.stack.add_titled(self.details_box,"details","Details")
59               
60                self.main_scroll.add(self.stack)
61               
62                self.load_thread=threading.Thread(target=self.load_main_content)
63                self.load_thread.daemon=True
64                self.load_thread.start()
65                self.load_thread.join()
66               
67                self.load_main_content()
68               
69                #GLib.timeout_add(1000,self.load_main_content)
70               
71               
72               
73                self.overlay=Gtk.Overlay()
74                self.main_eb=Gtk.EventBox()
75                self.main_eb.add(self.main_box)
76               
77                self.main_eb.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
78                self.main_eb.connect("button-press-event",self.main_eb_clicked)
79               
80                self.overlay.add(self.main_eb)
81                self.overlay.show_all()
82               
83                self.popup_menu=self.core.popup_menu
84               
85               
86                self.screenshot_viewer=self.core.screenshot_viewer
87
88                self.fade_box_revealer=Gtk.Revealer()
89                self.fade_box_revealer.set_valign(Gtk.Align.END)
90                self.fade_box_revealer.set_halign(Gtk.Align.END)
91               
92                self.fade_box=Gtk.HBox()
93                self.fade_eb=Gtk.EventBox()
94                self.fade_eb.add(self.fade_box)
95                self.fade_eb.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
96                self.fade_eb.connect("button-press-event",self.main_eb_clicked)
97               
98                self.fade_box_revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_UP)
99                self.fade_box_revealer.set_transition_duration(self.popup_menu.revealer.get_transition_duration())
100                self.fade_box_revealer.add(self.fade_eb)
101                self.fade_box_revealer.show_all()
102               
103               
104                self.overlay.add_overlay(self.fade_box_revealer)
105                self.overlay.add_overlay(self.popup_menu)
106                self.overlay.add_overlay(self.screenshot_viewer)
107               
108               
109               
110                for x in self.details_box.screenshots_box.get_children():
111                        x.connect("clicked",self.screenshot_clicked)
112               
113                self.window.add(self.overlay)
114                self.set_css_info()
115               
116                self.window.connect("size-allocate",self.window_size_changed)
117                self.window.connect("destroy",Gtk.main_quit)
118                self.menu_button.connect("clicked",self.menu_button_clicked)
119               
120               
121                self.window.show_all()
122               
123               
124        #def load_gui
125       
126        def start_gui(self):
127               
128                GObject.threads_init()
129                Gtk.main()
130       
131        def test_show(self,widget):
132               
133                import random
134                id=int(random.random()*2)
135               
136                p=Package.Package.get_demo_package(id)
137                self.details_box.set_package_info(p)
138                self.stack.set_visible_child_name("details")
139               
140        #def test_show
141       
142        def load_main_content(self):
143               
144                print 1
145                import time
146                time.sleep(5)
147                print "asdasd"
148               
149        #def load_main_content
150       
151        def show_loading(self):
152               
153                self.stack.set_visible_child_name("loading")
154               
155        #def kk
156               
157        def show_details_box(self):
158               
159                self.stack.set_visible_child_name("details")
160               
161        #def show_details_box
162       
163        def show_home(self):
164               
165                self.stack.set_visible_child_name("main")
166               
167        #def show_details_box
168       
169        def load_main_content(self):
170               
171                if self.load_thread.is_alive():
172                       
173                        return True
174                       
175                print self.load_thread
176                self.show_home()
177                return False
178               
179               
180        #def load_main_content
181               
182       
183        def set_css_info(self):
184               
185                self.style_provider=Gtk.CssProvider()
186                f=Gio.File.new_for_path("lliurex-store.css")
187                self.style_provider.load_from_file(f)
188                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
189               
190                self.window.set_name("MAIN_BOX")
191                self.header_box.set_name("HEADER_MENU")
192                self.menu_button.set_name("MENU_BUTTON")
193                self.location_label.set_name("RELATED_LABEL")
194                self.fade_box.set_name("FADE_BOX")
195               
196               
197               
198        #def set-css_info
199       
200        def main_eb_clicked(self,widget,event):
201               
202                if self.popup_menu.revealer.get_reveal_child():
203                       
204                        self.popup_menu.revealer.set_reveal_child(False)
205                       
206                       
207                if self.fade_box_revealer.get_reveal_child():
208                        GLib.timeout_add(30,self.check_fade_out)
209                        self.fade_box_revealer.set_reveal_child(False)
210                       
211                       
212                       
213        #def main_eb_clicked
214       
215
216        def window_size_changed(self,widget,allocation):
217               
218                x,y=self.window.get_size()
219                self.popup_menu.popup_menu.set_size_request(400,y)
220                self.screenshot_viewer.content_box.set_size_request(x,y)
221                self.screenshot_viewer.sw.set_size_request(x-20,150)
222                self.fade_box.set_size_request(x,y)
223               
224               
225        #def window_size_allocation
226
227       
228        def menu_button_clicked(self,widget):
229               
230               
231                if self.popup_menu.revealer.get_reveal_child()==True:
232                       
233                        GLib.timeout_add(250,self.check_fade_out)
234                       
235                else:
236                       
237                        self.fade_box_revealer.set_transition_type(Gtk.RevealerTransitionType.CROSSFADE)
238                       
239                       
240                self.popup_menu.revealer.set_reveal_child(not self.popup_menu.revealer.get_reveal_child())
241                self.fade_box_revealer.set_reveal_child(True)
242               
243               
244        #def menu_button_clicked
245       
246        def check_fade_out(self):
247               
248                if self.fade_box_revealer.get_child_revealed():
249                       
250                        return True
251                       
252                self.fade_box_revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_UP)
253               
254        #def check_fade_out
255       
256       
257        def screenshot_clicked(self,widget):
258
259                if widget.get_children()[0].get_visible_child_name()=="image":
260                       
261                        if self.popup_menu.revealer.get_reveal_child():
262                                self.popup_menu.revealer.set_reveal_child(False)
263                                return
264                       
265                        if widget.get_children()[0].video_url==None:
266                                self.screenshot_viewer.set_screenshot(widget.get_children()[0].image_id,self.details_box.screenshots_box)
267                        else:
268                                self.screenshot_viewer.set_screenshot(widget.get_children()[0].video_url,self.details_box.screenshots_box,True)
269                               
270                        self.screenshot_viewer.revealer.set_reveal_child(True)
271                       
272                       
273        #def screenshot_clicked
274       
275       
276#class LliurexStore
277
278if __name__=="__main__":
279       
280        llx_store=LliurexStore()
Note: See TracBrowser for help on using the repository browser.