Propogating fullscreen
authorEd Page <eopage@byu.net>
Thu, 20 May 2010 03:51:39 +0000 (22:51 -0500)
committerEd Page <eopage@byu.net>
Thu, 20 May 2010 03:51:39 +0000 (22:51 -0500)
src/mormonchannel_gtk.py
src/windows/_base.py
src/windows/conferences.py
src/windows/magazines.py
src/windows/scriptures.py
src/windows/source.py

index fb7749d..ffcddfd 100755 (executable)
@@ -4,7 +4,6 @@
 """
 @bug For some reason, the back/close button doesn't work when I nest multiple levels
 @bug When switching from conference to magazines, it randomly jumps around and duplicates windows
 """
 @bug For some reason, the back/close button doesn't work when I nest multiple levels
 @bug When switching from conference to magazines, it randomly jumps around and duplicates windows
-@bug fullscreen does not propgate
 
 @todo Re-use windows for better performance
 @todo Make radio program updates only happen when the app has focus to reduce CPU wakes
 
 @todo Re-use windows for better performance
 @todo Make radio program updates only happen when the app has focus to reduce CPU wakes
index 96ed2ec..ac81df2 100644 (file)
@@ -90,7 +90,7 @@ class BasicWindow(gobject.GObject, go_utils.AutoSignal):
 
        def load_settings(self, config, sectionName):
                try:
 
        def load_settings(self, config, sectionName):
                try:
-                       self._windowInFullscreen = config.getboolean(sectionName, "fullscreen")
+                       windowInFullscreen = config.getboolean(sectionName, "fullscreen")
                except ConfigParser.NoSectionError, e:
                        _moduleLogger.info(
                                "Settings file %s is missing section %s" % (
                except ConfigParser.NoSectionError, e:
                        _moduleLogger.info(
                                "Settings file %s is missing section %s" % (
@@ -99,7 +99,7 @@ class BasicWindow(gobject.GObject, go_utils.AutoSignal):
                                )
                        )
 
                                )
                        )
 
-               if self._windowInFullscreen:
+               if windowInFullscreen:
                        self._window.fullscreen()
                else:
                        self._window.unfullscreen()
                        self._window.fullscreen()
                else:
                        self._window.unfullscreen()
@@ -113,11 +113,14 @@ class BasicWindow(gobject.GObject, go_utils.AutoSignal):
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_window_state_change(self, widget, event, *args):
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_window_state_change(self, widget, event, *args):
+               oldIsFull = self._windowInFullscreen
                if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
                        self._windowInFullscreen = True
                else:
                        self._windowInFullscreen = False
                if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
                        self._windowInFullscreen = True
                else:
                        self._windowInFullscreen = False
-               self.emit("fullscreen", self._windowInFullscreen)
+               if oldIsFull != self._windowInFullscreen:
+                       _moduleLogger.info("%r Emit fullscreen %s" % (self, self._windowInFullscreen))
+                       self.emit("fullscreen", self._windowInFullscreen)
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_key_press(self, widget, event, *args):
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_key_press(self, widget, event, *args):
@@ -157,6 +160,15 @@ class BasicWindow(gobject.GObject, go_utils.AutoSignal):
                self._window.destroy()
 
        @misc_utils.log_exception(_moduleLogger)
                self._window.destroy()
 
        @misc_utils.log_exception(_moduleLogger)
+       def _on_child_fullscreen(self, source, isFull):
+               if isFull:
+                       _moduleLogger.info("Full screen %r to mirror child %r" % (self, source))
+                       self._window.fullscreen()
+               else:
+                       _moduleLogger.info("Unfull screen %r to mirror child %r" % (self, source))
+                       self._window.unfullscreen()
+
+       @misc_utils.log_exception(_moduleLogger)
        def _on_jump(self, source, node):
                raise NotImplementedError("On %s" % self)
 
        def _on_jump(self, source, node):
                raise NotImplementedError("On %s" % self)
 
index e51aed2..c5a8b0d 100644 (file)
@@ -6,8 +6,6 @@ import gtk
 import hildonize
 import util.go_utils as go_utils
 import util.misc as misc_utils
 import hildonize
 import util.go_utils as go_utils
 import util.misc as misc_utils
-import banners
-import stream_index
 
 import windows
 
 
 import windows
 
@@ -73,10 +71,14 @@ class ConferencesWindow(windows._base.ListWindow):
                sessionsWindow = ConferenceSessionsWindow(self._app, self._player, self._store, node)
                sessionsWindow.window.set_modal(True)
                sessionsWindow.window.set_transient_for(self._window)
                sessionsWindow = ConferenceSessionsWindow(self._app, self._player, self._store, node)
                sessionsWindow.window.set_modal(True)
                sessionsWindow.window.set_transient_for(self._window)
-               sessionsWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       sessionsWindow.window.fullscreen()
+               else:
+                       sessionsWindow.window.unfullscreen()
                sessionsWindow.connect("quit", self._on_quit)
                sessionsWindow.connect("home", self._on_home)
                sessionsWindow.connect("jump-to", self._on_jump)
                sessionsWindow.connect("quit", self._on_quit)
                sessionsWindow.connect("home", self._on_home)
                sessionsWindow.connect("jump-to", self._on_jump)
+               sessionsWindow.connect("fullscreen", self._on_child_fullscreen)
                sessionsWindow.show()
                return sessionsWindow
 
                sessionsWindow.show()
                return sessionsWindow
 
@@ -133,10 +135,14 @@ class ConferenceSessionsWindow(windows._base.ListWindow):
                sessionsWindow = ConferenceTalksWindow(self._app, self._player, self._store, node)
                sessionsWindow.window.set_modal(True)
                sessionsWindow.window.set_transient_for(self._window)
                sessionsWindow = ConferenceTalksWindow(self._app, self._player, self._store, node)
                sessionsWindow.window.set_modal(True)
                sessionsWindow.window.set_transient_for(self._window)
-               sessionsWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       sessionsWindow.window.fullscreen()
+               else:
+                       sessionsWindow.window.unfullscreen()
                sessionsWindow.connect("quit", self._on_quit)
                sessionsWindow.connect("home", self._on_home)
                sessionsWindow.connect("jump-to", self._on_jump)
                sessionsWindow.connect("quit", self._on_quit)
                sessionsWindow.connect("home", self._on_home)
                sessionsWindow.connect("jump-to", self._on_jump)
+               sessionsWindow.connect("fullscreen", self._on_child_fullscreen)
                sessionsWindow.show()
                return sessionsWindow
 
                sessionsWindow.show()
                return sessionsWindow
 
@@ -192,10 +198,14 @@ class ConferenceTalksWindow(windows._base.ListWindow):
                sessionsWindow = ConferenceTalkWindow(self._app, self._player, self._store, node)
                sessionsWindow.window.set_modal(True)
                sessionsWindow.window.set_transient_for(self._window)
                sessionsWindow = ConferenceTalkWindow(self._app, self._player, self._store, node)
                sessionsWindow.window.set_modal(True)
                sessionsWindow.window.set_transient_for(self._window)
-               sessionsWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       sessionsWindow.window.fullscreen()
+               else:
+                       sessionsWindow.window.unfullscreen()
                sessionsWindow.connect("quit", self._on_quit)
                sessionsWindow.connect("home", self._on_home)
                sessionsWindow.connect("jump-to", self._on_jump)
                sessionsWindow.connect("quit", self._on_quit)
                sessionsWindow.connect("home", self._on_home)
                sessionsWindow.connect("jump-to", self._on_jump)
+               sessionsWindow.connect("fullscreen", self._on_child_fullscreen)
                sessionsWindow.show()
                return sessionsWindow
 
                sessionsWindow.show()
                return sessionsWindow
 
index 212c0ef..095c72f 100644 (file)
@@ -6,9 +6,6 @@ import gtk
 import hildonize
 import util.go_utils as go_utils
 import util.misc as misc_utils
 import hildonize
 import util.go_utils as go_utils
 import util.misc as misc_utils
-import banners
-import presenter
-import stream_index
 
 import windows
 
 
 import windows
 
@@ -98,10 +95,14 @@ class MagazinesWindow(windows._base.ListWindow):
                issuesWindow = MagazineIssuesWindow(self._app, self._player, self._store, node)
                issuesWindow.window.set_modal(True)
                issuesWindow.window.set_transient_for(self._window)
                issuesWindow = MagazineIssuesWindow(self._app, self._player, self._store, node)
                issuesWindow.window.set_modal(True)
                issuesWindow.window.set_transient_for(self._window)
-               issuesWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       issuesWindow.window.fullscreen()
+               else:
+                       issuesWindow.window.unfullscreen()
                issuesWindow.connect("quit", self._on_quit)
                issuesWindow.connect("home", self._on_home)
                issuesWindow.connect("jump-to", self._on_jump)
                issuesWindow.connect("quit", self._on_quit)
                issuesWindow.connect("home", self._on_home)
                issuesWindow.connect("jump-to", self._on_jump)
+               issuesWindow.connect("fullscreen", self._on_child_fullscreen)
                issuesWindow.show()
                return issuesWindow
 
                issuesWindow.show()
                return issuesWindow
 
@@ -188,10 +189,14 @@ class MagazineIssuesWindow(windows._base.ListWindow):
                issuesWindow = MagazineArticlesWindow(self._app, self._player, self._store, node)
                issuesWindow.window.set_modal(True)
                issuesWindow.window.set_transient_for(self._window)
                issuesWindow = MagazineArticlesWindow(self._app, self._player, self._store, node)
                issuesWindow.window.set_modal(True)
                issuesWindow.window.set_transient_for(self._window)
-               issuesWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       issuesWindow.window.fullscreen()
+               else:
+                       issuesWindow.window.unfullscreen()
                issuesWindow.connect("quit", self._on_quit)
                issuesWindow.connect("home", self._on_home)
                issuesWindow.connect("jump-to", self._on_jump)
                issuesWindow.connect("quit", self._on_quit)
                issuesWindow.connect("home", self._on_home)
                issuesWindow.connect("jump-to", self._on_jump)
+               issuesWindow.connect("fullscreen", self._on_child_fullscreen)
                issuesWindow.show()
                return issuesWindow
 
                issuesWindow.show()
                return issuesWindow
 
@@ -247,10 +252,14 @@ class MagazineArticlesWindow(windows._base.ListWindow):
                issuesWindow = MagazineArticleWindow(self._app, self._player, self._store, node)
                issuesWindow.window.set_modal(True)
                issuesWindow.window.set_transient_for(self._window)
                issuesWindow = MagazineArticleWindow(self._app, self._player, self._store, node)
                issuesWindow.window.set_modal(True)
                issuesWindow.window.set_transient_for(self._window)
-               issuesWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       issuesWindow.window.fullscreen()
+               else:
+                       issuesWindow.window.unfullscreen()
                issuesWindow.connect("quit", self._on_quit)
                issuesWindow.connect("home", self._on_home)
                issuesWindow.connect("jump-to", self._on_jump)
                issuesWindow.connect("quit", self._on_quit)
                issuesWindow.connect("home", self._on_home)
                issuesWindow.connect("jump-to", self._on_jump)
+               issuesWindow.connect("fullscreen", self._on_child_fullscreen)
                issuesWindow.show()
                return issuesWindow
 
                issuesWindow.show()
                return issuesWindow
 
index 40274b7..ef4a0b5 100644 (file)
@@ -6,9 +6,6 @@ import gtk
 import hildonize
 import util.go_utils as go_utils
 import util.misc as misc_utils
 import hildonize
 import util.go_utils as go_utils
 import util.misc as misc_utils
-import banners
-import presenter
-import stream_index
 
 import windows
 
 
 import windows
 
@@ -65,10 +62,14 @@ class ScripturesWindow(windows._base.ListWindow):
                booksWindow = ScriptureBooksWindow(self._app, self._player, self._store, node)
                booksWindow.window.set_modal(True)
                booksWindow.window.set_transient_for(self._window)
                booksWindow = ScriptureBooksWindow(self._app, self._player, self._store, node)
                booksWindow.window.set_modal(True)
                booksWindow.window.set_transient_for(self._window)
-               booksWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       booksWindow.window.fullscreen()
+               else:
+                       booksWindow.window.unfullscreen()
                booksWindow.connect("quit", self._on_quit)
                booksWindow.connect("home", self._on_home)
                booksWindow.connect("jump-to", self._on_jump)
                booksWindow.connect("quit", self._on_quit)
                booksWindow.connect("home", self._on_home)
                booksWindow.connect("jump-to", self._on_jump)
+               booksWindow.connect("fullscreen", self._on_child_fullscreen)
                booksWindow.show()
                return booksWindow
 
                booksWindow.show()
                return booksWindow
 
@@ -125,10 +126,14 @@ class ScriptureBooksWindow(windows._base.ListWindow):
                booksWindow = ScriptureChaptersWindow(self._app, self._player, self._store, node)
                booksWindow.window.set_modal(True)
                booksWindow.window.set_transient_for(self._window)
                booksWindow = ScriptureChaptersWindow(self._app, self._player, self._store, node)
                booksWindow.window.set_modal(True)
                booksWindow.window.set_transient_for(self._window)
-               booksWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       booksWindow.window.fullscreen()
+               else:
+                       booksWindow.window.unfullscreen()
                booksWindow.connect("quit", self._on_quit)
                booksWindow.connect("home", self._on_home)
                booksWindow.connect("jump-to", self._on_jump)
                booksWindow.connect("quit", self._on_quit)
                booksWindow.connect("home", self._on_home)
                booksWindow.connect("jump-to", self._on_jump)
+               booksWindow.connect("fullscreen", self._on_child_fullscreen)
                booksWindow.show()
                return booksWindow
 
                booksWindow.show()
                return booksWindow
 
@@ -185,10 +190,14 @@ class ScriptureChaptersWindow(windows._base.ListWindow):
                booksWindow = ScriptureChapterWindow(self._app, self._player, self._store, node)
                booksWindow.window.set_modal(True)
                booksWindow.window.set_transient_for(self._window)
                booksWindow = ScriptureChapterWindow(self._app, self._player, self._store, node)
                booksWindow.window.set_modal(True)
                booksWindow.window.set_transient_for(self._window)
-               booksWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       booksWindow.window.fullscreen()
+               else:
+                       booksWindow.window.unfullscreen()
                booksWindow.connect("quit", self._on_quit)
                booksWindow.connect("home", self._on_home)
                booksWindow.connect("jump-to", self._on_jump)
                booksWindow.connect("quit", self._on_quit)
                booksWindow.connect("home", self._on_home)
                booksWindow.connect("jump-to", self._on_jump)
+               booksWindow.connect("fullscreen", self._on_child_fullscreen)
                booksWindow.show()
                return booksWindow
 
                booksWindow.show()
                return booksWindow
 
index 56a745d..169d5fc 100644 (file)
@@ -114,8 +114,13 @@ class SourceSelector(windows._base.BasicWindow):
                sourceWindow.window.set_modal(True)
                sourceWindow.window.set_transient_for(self._window)
                sourceWindow.window.set_default_size(*self._window.get_size())
                sourceWindow.window.set_modal(True)
                sourceWindow.window.set_transient_for(self._window)
                sourceWindow.window.set_default_size(*self._window.get_size())
+               if self._windowInFullscreen:
+                       sourceWindow.window.fullscreen()
+               else:
+                       sourceWindow.window.unfullscreen()
                sourceWindow.connect("quit", self._on_quit)
                sourceWindow.connect("jump-to", self._on_jump)
                sourceWindow.connect("quit", self._on_quit)
                sourceWindow.connect("jump-to", self._on_jump)
+               sourceWindow.connect("fullscreen", self._on_child_fullscreen)
                sourceWindow.show()
                return sourceWindow
 
                sourceWindow.show()
                return sourceWindow