import pygtk
import gtk
import hildon
import gtk.glade
class GladeTestApp():
"""pygtk-glade-hildon demo project"""
def __init__(self):
#make the hildon program
self.program = hildon.Program()
self.program.__init__()
#make the hildon window and add to program
self.window = hildon.Window()
self.window.set_title("PyGlade")
self.program.add_window(self.window)
#receive signal to close window from framework close button
if (self.window):
self.window.connect("destroy", gtk.main_quit)
#import the glade file and assign to self.wTree
self.glade_file = "pygladeui.glade"
self.wTree = gtk.glade.XML(self.glade_file)
#reparent the vbox1 from glade to self.window
self.vbox1 = self.wTree.get_widget("vbox1")
self.reparent_loc(self.vbox1, self.window)
#get menu from glade and reparent as common menu in hildon program
self.menuGlade = self.wTree.get_widget("menu1")
self.program.set_common_menu(self.menuGlade)
#get quit menu item and connect signal
self.menuItem_quit = self.wTree.get_widget("quit1")
self.menuItem_quit.connect("activate", gtk.main_quit)
#get hbox1 in order to modify contents based on user actions
self.hbox1 = self.wTree.get_widget("hbox1")
#get label1 for use
self.label1 = self.wTree.get_widget("label1")
self.controlBar = hildon.Controlbar()
self.controlBar.set_min(0)
self.controlBar.set_max(50)
self.controlBar.set_value(15)
self.controlBar.connect("value-changed", self.control_changed, self.label1)
self.menuItem_controlBar = self.wTree.get_widget("controlBar")
self.menuItem_controlBar.connect("activate", self.controlBar_pressed, self.hbox1, self.controlBar, self.label1)
self.dateEditor = hildon.DateEditor()
self.dateEditor.set_year(2006)
self.dateEditor.set_month(4)
self.dateEditor.set_day(20)
self.menuItem_dateEditor = self.wTree.get_widget("dateEditor")
self.menuItem_dateEditor.connect("activate", self.dateEditor_pressed, self.hbox1, self.dateEditor, self.label1)
#get button1 and connect a signal handler
self.button1 = self.wTree.get_widget("button1")
if (self.button1):
self.button1.connect("pressed", self.button1_pressed, self.label1)
#destroy the gtk window imported from glade
self.gtkWindow = self.wTree.get_widget("window1")
self.gtkWindow.destroy()
#display everything
self.window.show_all()
def run(self):
gtk.main()
# signal handlers
def menuItem_quit1_pressed(self, widget):
gtk.main_quit
def button1_pressed(self, widget, label):
label.set_label("new label")
# controlBar
def controlBar_pressed(self, widget, hbox, controlBar, label):
self.dechild_hbox(hbox)
hbox.add(controlBar)
controlBar.show()
label.set_text("ControlBar")
def control_changed(self, widget, label):
label.set_text(" %s of %s" % (widget.get_value(), widget.get_max()))
# dateEditor
def dateEditor_pressed(self, widget, hbox, dateEditor, label):
self.dechild_hbox(hbox)
hbox.add(dateEditor)
label.set_text("DateEditor")
dateEditor.show()
#utility
def dechild_hbox(self, hbox_widgets):
children = hbox_widgets.get_children()
for child in children:
hbox_widgets.remove(child)
def reparent_loc(self, widget, newParent):
widget.reparent(newParent)
if __name__ == "__main__":
app = GladeTestApp()
app.run()
BINDIR = ${DESTDIR}/usr/bin/
APPDIR = ${DESTDIR}/usr/share/pyglade
all:
install:
@mkdir -p ${BINDIR}
@mkdir -p ${APPDIR}
@install -m 755 -D main.py ${APPDIR}/main.py
@install -m 755 -D pygladeui.glade ${APPDIR}/pygladeui.glade
@install -m 755 -D executable.txt ${BINDIR}/pyglade
@install -m 755 -D desktop.txt ${DESTDIR}/usr/share/applications/pyglade.desktop
@install -m 755 -D pyglade_26.png ${DESTDIR}/usr/share/icons/hicolor/22x22/apps/pyglade_26.png
clean:
@rm -f ${APPDIR}/main.py
@rm -f ${APPDIR}/pygladeui.glade
@rm -f ${BINDIR}/pyglade
@rm -f ${DESTDIR}/usr/share/applications/pyglade.desktop
@rm -f ${DESTDIR}/usr/share/icons/${THEME}/22x22/apps/pyglade_26.png
re.