[ontv] Move program window gui to .ui file



commit 45a7fac56206bdffb739509ee3ff736270e9a6c8
Author: Olof Kindgren <olki src gnome org>
Date:   Sun Jan 16 17:36:43 2011 +0100

    Move program window gui to .ui file
    
    Most parts of program window is now moved to a .ui file. Still need
    to manually do set_keep_above, as I haven't found how to do that in
    glade 3

 data/Makefile.am       |    1 +
 data/program_window.ui |   42 +++++++++++++++++++++++++++++++++++
 ontv/gui.py            |    1 +
 ontv/window.py         |   57 ++++++++++++++++++-----------------------------
 4 files changed, 66 insertions(+), 35 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index e0613b4..8d77ec4 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -37,6 +37,7 @@ glade_DATA = 		      \
 	program_dialog.ui     \
 	search_dialog.ui      \
 	preferences_dialog.ui \
+	program_window.ui     \
 	status_icon.ui
 
 if GNOME_APPLET
diff --git a/data/program_window.ui b/data/program_window.ui
new file mode 100644
index 0000000..31d0068
--- /dev/null
+++ b/data/program_window.ui
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="program_window">
+    <property name="resizable">False</property>
+    <property name="skip_taskbar_hint">True</property>
+    <property name="skip_pager_hint">True</property>
+    <property name="decorated">False</property>
+    <signal name="key_press_event" handler="on_program_window_key_press_event"/>
+    <child>
+      <object class="GtkFrame" id="top_frame">
+        <property name="visible">True</property>
+        <property name="label_xalign">0</property>
+        <property name="shadow_type">in</property>
+        <child>
+          <object class="GtkVBox" id="top_vbox">
+            <property name="visible">True</property>
+            <property name="border_width">6</property>
+            <property name="spacing">6</property>
+            <child>
+              <object class="GtkHBox" id="top_hbox">
+                <property name="visible">True</property>
+                <property name="border_width">6</property>
+                <property name="spacing">6</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+        </child>
+        <child type="label_item">
+          <placeholder/>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/ontv/gui.py b/ontv/gui.py
index 7170571..00802d2 100644
--- a/ontv/gui.py
+++ b/ontv/gui.py
@@ -33,6 +33,7 @@ channel_dialog_ui_file = os.path.join(DATA_DIR, "channel_dialog.ui")
 program_dialog_ui_file = os.path.join(DATA_DIR, "program_dialog.ui")
 search_dialog_ui_file = os.path.join(DATA_DIR, "search_dialog.ui")
 preferences_dialog_ui_file = os.path.join(DATA_DIR, "preferences_dialog.ui")
+program_window_ui_file = os.path.join(DATA_DIR, "program_window.ui")
 icon_theme = gtk.icon_theme_get_default()
 
 def get_icon_list(sizes):
diff --git a/ontv/window.py b/ontv/window.py
index df2abc0..08a6d95 100644
--- a/ontv/window.py
+++ b/ontv/window.py
@@ -27,9 +27,10 @@ import gobject
 import pango
 
 from config import Configuration
-from gui import ProgramContextMenu
+from gui import ProgramContextMenu, program_window_ui_file
 from reminders import Reminders, Reminder
 from notify import Notification
+from ontv import NAME
 
 TIMEOUT = 60000
 
@@ -272,44 +273,30 @@ class ProgramTimeLeftBar(ProgramBar, gtk.Label):
             Notification(self.program, self.get_readable_time)
         return True
 
-class ProgramWindow(gtk.Window):
+class ProgramWindow:
     def __init__(self, xmltvfile):
-        gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
+        builder = gtk.Builder()
+        builder.set_translation_domain(NAME.lower())
+        builder.add_from_file(program_window_ui_file)
+        builder.connect_signals(self)
+        self.win = builder.get_object("program_window")
         xmltvfile.connect("loading-done", self.__xmltvfile_loading_done)
 
         self.cpt = CurrentProgramTable(xmltvfile.listings)
         self.upt = UpcomingProgramTable(xmltvfile.listings)
 
-        self.connect("key-press-event", self.__key_press_event)
+        self.win.set_keep_above(True)
 
-        self.set_decorated(False)
-        self.set_resizable(False)
-        self.set_keep_above(True)
-        self.set_skip_pager_hint(True)
-        self.set_skip_taskbar_hint(True)
-
-        self.vbox = gtk.VBox(False, 6)
-        self.vbox.set_border_width(6)
-
-        self.hbox = gtk.HBox(False, 6)
-        self.hbox.set_border_width(6)
-
-        self.vbox.pack_start(self.hbox)
+        self.vbox = builder.get_object("top_vbox")
+        self.hbox = builder.get_object("top_hbox")
 
         self.hbox.pack_start(self.cpt)
 
         self.position_upcoming_programs(xmltvfile.config.upcoming_programs_below)
-
-        frame = gtk.Frame()
-        frame.add(self.vbox)
-        frame.set_shadow_type(gtk.SHADOW_IN)
-
-        self.add(frame)
-
         self.config = Configuration()
 
     def is_visible(self):
-        return self.props.visible
+        return self.win.props.visible
 
     def __xmltvfile_loading_done(self, xmltvfile, listings):
         if listings:
@@ -317,25 +304,25 @@ class ProgramWindow(gtk.Window):
             self.upt.listings = listings
             self.update()
 
-    def __key_press_event(self, window, event):
+    def on_program_window_key_press_event(self, window, event):
         if event.keyval == gtk.keysyms.Escape:
             window.hide()
 
     def get_window_size(self):
-        self.realize()
+        self.win.realize()
         gtk.gdk.flush()
-        (w, h) = self.get_size()
-        (w, h) = self.size_request()
+        (w, h) = self.win.get_size()
+        (w, h) = self.win.size_request()
         return (w, h)
 
     def hide_window(self):
-        self.hide()
+        self.win.hide()
 
     def show_window(self, window_position):
         self.position_window(window_position)
-        self.stick()
-        self.show_all()
-        self.grab_focus()
+        self.win.stick()
+        self.win.show_all()
+        self.win.grab_focus()
         if not self.config.display_current_programs:
             self.cpt.hide()
         if not self.config.display_upcoming_programs:
@@ -345,8 +332,8 @@ class ProgramWindow(gtk.Window):
 
         (x, y, gravity) = window_position
 
-        self.move(x, y)
-        self.set_gravity(gravity)
+        self.win.move(x, y)
+        self.win.set_gravity(gravity)
 
     def position_upcoming_programs(self, below):
         if below:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]