ui: Added webkit view
authorSimón Pena <spenap@gmail.com>
Tue, 22 Jun 2010 18:21:50 +0000 (20:21 +0200)
committerSimón Pena <spenap@gmail.com>
Tue, 22 Jun 2010 18:21:50 +0000 (20:21 +0200)
A webkit view has been added so

* 'Now on theaters' info can be displayed now, showing google movies
* Clicking on a WATC result entry now launches the original website,
so you can check the actual stinger (if any)

ui/maeviesui/maeviesui/gui.py

index 51a580f..c5787a0 100644 (file)
@@ -25,11 +25,13 @@ import gtk
 import hildon
 import pango
 import gobject
+from webkit import WebView
 
 from maeviesui.util import constants
 from maeviesui.util.asyncworker import AsyncWorker, AsyncItem
 from maeviesui.util.util import image_downloader
-from maeviesui.util.moviemanager import MovieManager, TmdbMovie, TmdbMovieImage
+from maeviesui.util.moviemanager import MovieManager, TmdbMovie, TmdbMovieImage, \
+    WatcMovie
 
 moviemanager = MovieManager()
 
@@ -84,7 +86,10 @@ class Maevies(hildon.StackableWindow):
         return contents;
 
     def _button_clicked(self, button, action):
-        if action == self.ACTION_SEARCH:
+        if action == self.ACTION_THEATERS:
+            theaters_view = TheatersWindow()
+            theaters_view.display_shows()
+        elif action == self.ACTION_SEARCH:
             search_dialog = SearchDialog(self)
             if search_dialog.run() == gtk.RESPONSE_ACCEPT:
                 results_window = ResultsWindow()
@@ -187,6 +192,8 @@ class ResultsWindow(hildon.StackableWindow):
         movie = view.get_movie_from_path(path)
         if isinstance(movie, TmdbMovie):
             MovieWindow(movie)
+        elif isinstance(movie, WatcMovie):
+            WatcWindow(movie)
 
     def start_search(self, search_term, search_category):
         self._show_banner(search_term, search_category)
@@ -350,6 +357,64 @@ class MovieWindow(hildon.StackableWindow):
         self.add(self._create_contents(movie))
         self.show_all()
 
+class WebkitWindow(hildon.StackableWindow):
+
+    def __init__(self):
+        super(WebkitWindow, self).__init__()
+
+        self.view = WebView()
+        self.view.connect('load-started', self._load_start)
+        self.view.connect('load-finished', self._load_finished)
+        self.view.set_full_content_zoom(True)
+
+        wbk_settings = self.view.get_settings()
+        wbk_settings.set_property('auto-shrink-images', True)
+
+        self.pannable = hildon.PannableArea()
+        self.pannable.add(self.view)
+        self.pannable.set_size_request_policy(hildon.SIZE_REQUEST_CHILDREN)
+        self.pannable.set_property("mov-mode", hildon.MOVEMENT_MODE_BOTH)
+
+        self.add(self.pannable)
+        self.show_all()
+
+    def _load_start(self, view, data):
+        hildon.hildon_gtk_window_set_progress_indicator(self, True)
+
+    def _load_finished(self, view, data):
+        hildon.hildon_gtk_window_set_progress_indicator(self, False)
+
+    def load_url(self, url):
+        self.view.open(url)
+
+class TheatersWindow(WebkitWindow):
+
+    def __init__(self):
+        super(TheatersWindow, self).__init__()
+        self.show_all()
+
+    def display_shows(self):
+        self.load_url('http://www.google.com/movies')
+
+class WatcWindow(WebkitWindow):
+
+    def __init__(self, movie):
+        super(WatcWindow, self).__init__()
+        self.show_all()
+        has_stingers = movie.get_stingers()
+        if has_stingers == 0:
+            stingers = '?'
+        elif has_stingers == 1:
+            stingers = '*'
+        else:
+            stingers = ''
+        url = ('http://whatsafterthecredits.com/index.php?title=%(title)s_(%(year)s)%(stingers)s' %
+                      {'title':movie.get_title().strip(),
+                       'year':movie.get_year().strip(),
+                       'stingers':stingers})
+        print url
+        self.load_url(url)
+
 if __name__ == '__main__':
     maevies = Maevies()
     maevies.run()