source: lliurex-store/trunk/fuentes/lliurex-store-gui/ScreenshotViewer.py @ 3155

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

adding tmp source code

File size: 4.9 KB
Line 
1import gi
2gi.require_version('Gtk', '3.0')
3gi.require_version('WebKit', '3.0')
4
5from gi.repository import Gtk,GdkPixbuf,GLib,Gdk,WebKit
6import Screenshot
7
8
9class ScreenshotViewer(Gtk.EventBox):
10
11        def __init__(self):
12       
13                Gtk.EventBox.__init__(self)
14                self.set_valign(Gtk.Align.START)
15                self.set_halign(Gtk.Align.START)
16               
17                self.border=20
18               
19                self.revealer=Gtk.Revealer()
20                self.revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_DOWN)
21                self.revealer.set_transition_duration(500)
22               
23
24                self.content_box=Gtk.VBox()
25                self.content_box.set_name("POPUP_SHADOW_TOPBOTTOM")
26                hbox=Gtk.HBox()
27                #hbox.set_name("WHITE")
28               
29                '''
30                vp=Gtk.Viewport()
31                vp.set_name("WHITE")
32                vp.set_valign(Gtk.Align.FILL)
33                vp.set_halign(Gtk.Align.FILL)
34                vp.set_size_request(1,700)
35                self.sv=Gtk.ScrolledWindow()
36                self.sv.set_name("WHITE")
37                self.sv.set_valign(Gtk.Align.FILL)
38                self.sv.set_halign(Gtk.Align.FILL)
39                vp.add(self.sv)
40                '''
41               
42                self.image=Screenshot.Screenshot(0,0,"","",False)
43                self.wv=WebKit.WebView()
44               
45                self.wv=WebKit.WebView()
46                self.w_vp=Gtk.Viewport()
47                self.w_sw=Gtk.ScrolledWindow()
48                self.w_vp.add(self.w_sw)
49                self.w_sw.add(self.wv)
50               
51                self.image.add_titled(self.w_vp,"html","Html")
52               
53               
54                hbox.pack_start(self.image,True,True,self.border)
55                self.content_box.pack_start(hbox,True,True,self.border)
56               
57                self.buttons_box=Gtk.HBox()
58                self.buttons_box.set_valign(Gtk.Align.CENTER)
59               
60               
61                for x in range(0,4):
62                        b=Gtk.Button(str(x))
63                        b.set_size_request(100,100)
64                        b.set_name("RELATED_BUTTON")
65                        self.buttons_box.pack_start(b,False,False,5)
66                       
67                self.sw=Gtk.ScrolledWindow()
68               
69                self.vp=Gtk.Viewport()
70                self.vp.set_halign(Gtk.Align.CENTER)
71                self.sw.add(self.vp)
72                self.sw.set_halign(Gtk.Align.CENTER)
73                self.sw.set_margin_bottom(30)
74                self.vp.add(self.buttons_box)
75               
76                self.content_box.pack_end(self.sw,False,False,0)
77
78
79
80                '''
81                vbox=Gtk.VBox()
82                vbox.set_size_request(1,self.border*3.5)
83                self.content_box.pack_start(vbox,True,True,0)
84                '''
85               
86                self.revealer.add(self.content_box)
87                self.revealer.show_all()
88                self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
89                self.connect("button-press-event",self.area_clicked)
90       
91               
92                self.html_skel='<html><body bgcolor=black><div align=center><iframe height=97% width=90% align=center src="%%URL%%" frameborder="0" allowfullscreen></iframe></div></body></html>'
93               
94               
95               
96                self.add(self.revealer)
97       
98        #def init
99       
100        def wait_to_reveal(self,x,y,data,url=False):
101               
102                if not self.revealer.get_child_revealed():
103                       
104                        return True
105               
106                if url==False:
107                        self.image.set_new_from_pixbuf(x,y,data)
108                else:
109                        self.show_url(None,data)
110                       
111        #def wait_to_reveal
112       
113        def set_screenshot(self,current_id,screenshots_box,current_id_is_url=False):
114
115               
116                self.image.spinner.start()
117                self.image.spinner.show()
118                self.image.set_visible_child_name("spinner")
119               
120               
121               
122                #pixbuf=pixbuf.scale_simple(x*ratio,y*ratio,GdkPixbuf.InterpType.BILINEAR)
123                #self.image.set_from_pixbuf(pixbuf)
124               
125                for child in self.buttons_box.get_children():
126                       
127                        self.buttons_box.remove(child)
128               
129                for x in screenshots_box:
130                       
131                        tmp=x.get_children()[0]
132                        pixbuf=tmp.image.get_pixbuf()
133                        id=x.get_children()[0].id
134                        b=Gtk.Button()
135                        b.add(Gtk.Image.new_from_pixbuf(pixbuf))
136                        if tmp.video_url!=None:
137                                b.connect("clicked",self.show_url,tmp.video_url)
138                        else:
139                                b.connect("clicked",self.screenshot_button_clicked,id)
140                        b.set_size_request(100,100)
141                        b.set_name("RELATED_BUTTON")
142                        self.buttons_box.pack_start(b,False,False,5)
143                        self.buttons_box.show_all()
144               
145               
146                if not current_id_is_url:
147               
148                        image=Gtk.Image.new_from_file("/tmp/.lliurex-store/"+current_id)
149                       
150                        pixbuf=image.get_pixbuf()
151                        x=pixbuf.get_width()
152                        y=pixbuf.get_height()
153                       
154                        w_x,w_y=self.content_box.get_size_request()
155                        w_x-=self.border*2 
156                        w_y-=self.border*2 + 240
157                       
158                        ratio=min(w_x*1.0/x,w_y*1.0/y)
159                        pixbuf=pixbuf.scale_simple(x*ratio,y*ratio,GdkPixbuf.InterpType.BILINEAR)
160                       
161                        new_x=x*ratio
162                        new_y=y*ratio
163                       
164                        GLib.timeout_add(30,self.wait_to_reveal,new_x,new_y,pixbuf,False)
165                       
166                else:
167                       
168                        new_x=0
169                        new_y=0
170                        GLib.timeout_add(30,self.wait_to_reveal,new_x,new_y,current_id,True)
171               
172                       
173
174                       
175               
176       
177        def show_url(self,widget,url):
178               
179                self.wv.load_html_string(self.html_skel.replace("%%URL%%",url),"")
180                self.image.set_visible_child_name("html")
181               
182        def screenshot_button_clicked(self,widget,current_id):
183               
184                image=Gtk.Image.new_from_file("/tmp/.lliurex-store/"+current_id)
185               
186                pixbuf=image.get_pixbuf()
187                x=pixbuf.get_width()
188                y=pixbuf.get_height()
189               
190                w_x,w_y=self.content_box.get_size_request()
191                w_x-=self.border*2 
192                w_y-=self.border*2 + 240
193               
194                ratio=min(w_x*1.0/x,w_y*1.0/y)
195               
196                new_x=x*ratio
197                new_y=y*ratio
198               
199                pixbuf=pixbuf.scale_simple(x*ratio,y*ratio,GdkPixbuf.InterpType.BILINEAR)
200                self.image.spinner.hide()
201                self.image.set_new_from_pixbuf(new_x,new_y,pixbuf)
202               
203                #self.image.set_from_pixbuf(pixbuf)
204               
205       
206        def area_clicked(self,widget,event):
207               
208                self.revealer.set_reveal_child(False)
209
210
211
212#class ScreenshotViewer
Note: See TracBrowser for help on using the repository browser.