Trying to improve threading for the location
[gigfinder] / src / opt / gigfinder / gigfinder.py
index 016247a..c5dc609 100755 (executable)
@@ -39,6 +39,7 @@ class GigFinder:
         self.events = Events()
         self.win = hildon.StackableWindow()
         self.app_title = "Gig Finder"
+        self.update_thread = Thread(target=self.update_gigs)
 
     def main(self):
         """ Build the gui and start the update thread """
@@ -50,10 +51,12 @@ class GigFinder:
         self.win.set_app_menu(menu)
         self.add_button_area()
 
-        Thread(target=self.update_gigs).start()
+        self.update_thread.start()
 
         self.win.show_all()
+       gtk.gdk.threads_enter()
         gtk.main()
+       gtk.gdk.threads_leave()
 
     def show_about(self, widget, data):
         """ Show about dialog """
@@ -71,7 +74,7 @@ class GigFinder:
         self.win.set_title(self.app_title)
         self.location.reset()
         self.win.remove(self.pannable_area)
-        Thread(target=self.update_gigs).start()
+        self.update_thread.start()
 
     def update_gigs(self):
         """ Get gig info """
@@ -93,7 +96,6 @@ class GigFinder:
                                         self.distance,)
         gobject.idle_add(self.show_events, events)
         gobject.idle_add(self.hide_message)
-        thread.exit()
 
     def show_message(self, message):
         """ Set window progress indicator and show message """
@@ -142,7 +144,7 @@ class GigFinder:
     def show_details(self, widget, data):
         """ Open new window showing gig details """
         win = hildon.StackableWindow()
-        win.set_title(data['title'])
+        win.set_title(data.title)
 
         win.vbox = gtk.VBox()
         win.add(win.vbox)
@@ -156,11 +158,11 @@ class GigFinder:
         view.set_wrap_mode(gtk.WRAP_WORD)
         buffer = view.get_buffer()
         end = buffer.get_end_iter()
-        buffer.insert(end, '%s\n' % data['title'])
-        buffer.insert(end, 'Artists: %s\n' % data['artists'])
-        buffer.insert(end, 'Venue: %s\n' % data['venue'])
-        buffer.insert(end, '%s\n' % data['address'])
-        buffer.insert(end, 'When: %s\n' % data['date'].strftime('%H:%M %d/%m/%Y'))
+        buffer.insert(end, '%s\n' % data.title)
+        buffer.insert(end, 'Artists: %s\n' % data.artists)
+        buffer.insert(end, 'Venue: %s\n' % data.venue_name)
+        buffer.insert(end, '%s\n' % data.address)
+        buffer.insert(end, 'When: %s\n' % data.start_date.strftime('%H:%M %d/%m/%Y'))
         buffer.insert(end, '\n')
         scroll.add_with_viewport(view)
 
@@ -178,7 +180,7 @@ class GigFinder:
         for event in events:
             button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, 
                                    hildon.BUTTON_ARRANGEMENT_VERTICAL)
-            button.set_text(event['title'], "distance: %0.02f km" % event['distance'])
+            button.set_text(event.title, "distance: %0.02f km" % event.get_distance_from(self.location.long, self.location.lat))
             button.connect("clicked", self.show_details, event)
             self.box.pack_start(button)
         self.box.show_all()