~elementaryart/sezen/sezen

« back to all changes in this revision

Viewing changes to src/view/widgets.py

  • Committer: Seif Lotfy
  • Date: 2010-06-23 09:55:03 UTC
  • mfrom: (27.1.4 sezen)
  • Revision ID: seif@gary-20100623095503-zc7kzl69d7gh29vh
fixes

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
import gio
17
17
 
18
18
pixbuf_cache = {}
 
19
no_pixbuf = gtk.icon_theme_get_default().load_icon("gtk-file", 48, 0)
19
20
 
20
21
def get_pixbuf_from_cache(gicon, callback, size=48):
21
22
        name = gicon.to_string()
27
28
                        # load asynchronously
28
29
                        def read_finished(input_stream, res):
29
30
                                data = input_stream.read_finish(res)
30
 
                                input_stream.close()
31
 
                                loader = gtk.gdk.PixbufLoader()
32
 
                                loader.write(data)
33
 
                                loader.close()
34
 
                                pixbuf = loader.get_pixbuf()
35
 
                                pixbuf_cache[name] = pixbuf
36
 
                                callback(pixbuf)
 
31
                                input_stream.close_async(lambda s, r: s.close_finish(r))
 
32
 
 
33
                                def idle_cb():
 
34
                                        loader = gtk.gdk.PixbufLoader()
 
35
                                        loader.write(data)
 
36
                                        loader.close()
 
37
                                        pixbuf = loader.get_pixbuf()
 
38
                                        pixbuf_cache[name] = pixbuf
 
39
                                        callback(pixbuf)
 
40
                                        return False
 
41
 
 
42
                                glib.idle_add(idle_cb)
37
43
 
38
44
                        def load_finished(arg1, res):
39
45
                                stream, icon_type = gicon.load_finish(res)
40
 
                                data = stream.read_async(100*1024, read_finished, glib.PRIORITY_LOW)
 
46
                                def idle_cb():
 
47
                                        data = stream.read_async(100*1024, read_finished, glib.PRIORITY_LOW)
 
48
                                        return False
 
49
 
 
50
                                # we need to finish in idle callback, otherwise this thread
 
51
                                # will hold global lock and we won't get into main loop
 
52
                                glib.idle_add(idle_cb)
41
53
 
42
54
                        gicon.load_async(load_finished)
43
55
                else:
125
137
                '''
126
138
                gtk.Window.__init__(self)
127
139
                self.set_title("Sezen")
128
 
                self.set_size_request(700,400)
 
140
                self.set_default_size(700,400)
129
141
                self.connect("destroy", lambda x: gtk.main_quit())
130
142
                self.model = None
131
143
                self.loaded = False
409
421
        def add_item(self, item, icon_size):
410
422
                
411
423
                item = item.subjects[0]
412
 
                iter = self.model.append([None, item.text, item])
 
424
                iter = self.model.append([no_pixbuf, item.text, item])
413
425
                
414
426
                def callback(icon):
415
 
                        self.model[iter][0] = icon
 
427
                        self.model[iter][0] = icon if icon is not None else no_pixbuf
416
428
                
417
429
                get_icon(item, callback)
418
430