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

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

wip

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