#!/usr/bin/python # # Rajarshi Guha # 4/10/2002 import sys import os, tempfile import gtk, GTK import libglade import string ui=""" Project1 project1 src pixmaps C True True GtkWindow r 2 destroy on_r_destroy Thu, 21 Feb 2002 22:17:47 GMT Run Window GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False False False False GtkHBox hbox1 False 0 GtkEntry txt True True True activate on_txt_activate Fri, 22 Feb 2002 19:30:02 GMT True True 0 0 True False GtkButton button1 3 True clicked on_button1_clicked Thu, 21 Feb 2002 22:18:28 GMT GTK_RELIEF_HALF 0 True True """ class WidgetsWrapper: def __init__(self, ui_file, top_win, handlers): self.widgets = libglade.GladeXML(ui_file, top_win) self.widgets.signal_autoconnect(handlers.__dict__) def __getitem__(self, key): return self.widgets.get_widget(key) class UIHandlers: def on_r_destroy(event): gtk.mainquit() def on_txt_activate(w): cmd = w.get_chars(0, w.get_position()) cmd = string.strip(cmd) if cmd == '': return try: os.execvp(cmd, [cmd]) except os.error: sys.exit(0) def on_button1_clicked(event): t = w.__getitem__('txt').get_text() t = string.lstrip(t) t = string.rstrip(t) if t == '' : return try: os.execvp(t,[t]) except os.error: sys.exit(0) #### tempfile.tempdir = '/tmp' fname = tempfile.mktemp() f = open(fname,'w') f.write(ui) f.close() w = WidgetsWrapper(fname,'r', UIHandlers) gtk.mainloop()