Source

main.py

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()

Makefile

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.