Subversion Repositories pub

Compare Revisions

Ignore whitespace Rev 185 → Rev 186

/relevation/branches/1.1/gui.py
0,0 → 1,92
import sys
import re
import Tkinter
from Tkinter import Frame, Button, Entry, Listbox, Scrollbar, Label
 
import relevation
 
old_fn = relevation.dump_result
 
def append_result(s):
global gui
fields = s.split('\n')
name = fields[2]
name = re.sub('^Name: ', '', name)
gui.lst.insert(Tkinter.END, name)
gui.items.append(s)
 
def dump_result_override(res, query_desc):
return old_fn(res,query_desc, append_result)
 
relevation.dump_result = dump_result_override
 
class ResultDialog:
def __init__(self, parent):
top = self.top = Tkinter.Toplevel(parent)
Label(top, text="Value").pack()
self.e = Entry(top)
self.e.pack(padx=5)
b = Button(top, text='OK', command=self.ok)
b.pack(pady=5)
def ok(self):
self.top.destroy()
 
class GUI(Tkinter.Frame):
def do_find(self):
global rootw
search = self.search_text.get()
relevation.main(sys.argv[1:] + ['-s', search])
 
def display(self):
global rootw
selected = self.lst.curselection()
if not selected:
return
selected = int(selected[0])
item = self.items[selected]
print item
dlg = ResultDialog(rootw)
rootw.wait_window(dlg.top)
 
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.add_widgets()
self.items = []
 
def add_widgets(self):
self.search_text = Entry(self)
self.search_text.insert(0, 'google.com')
self.search_text.pack({'expand': 1, 'side': 'top'})
 
self.QUIT = Button(self)
self.QUIT['text'] = 'QUIT'
self.QUIT['fg'] = 'red'
self.QUIT['command'] = self.quit
self.QUIT.pack({'side': 'left'})
 
self.search = Button(self)
self.search['text'] = 'Search'
self.search['command'] = self.do_find
self.search.pack({'side': 'right'})
 
self.view = Button(self)
self.view['text'] = 'View'
self.view['command'] = self.display
self.view.pack({'side': 'right'})
 
# FIXME
scrollbar = Scrollbar(self, orient=Tkinter.VERTICAL)
 
self.lst = Listbox(self, yscrollcommand=scrollbar.set)
self.lst.pack()
scrollbar.configure(command=self.lst.yview)
 
if __name__ == '__main__':
rootw = Tkinter.Tk()
rootw.title('Relevation search')
gui = GUI(master=rootw)
gui.mainloop()
rootw.destroy()
 
# vim:set ts=4 et ai fileencoding=utf-8: #