7,11 → 7,13 |
|
Simplistic Graphical User Interface. |
This GUI is mainly intended to be used in systems where command-lines |
are less common, like Widows. |
are less common, like Windows. |
|
$Id$ |
""" |
# Relevation Password Printer |
# |
# Copyright (c) 2011, Toni Corvera |
# Copyright (c) 2011, 2013, Toni Corvera |
# All rights reserved. |
# |
# Redistribution and use in source and binary forms, with or without |
38,22 → 40,32 |
import sys |
import re |
import Tkinter as tk |
from Tkinter import Frame, Button, Entry, Listbox, Scrollbar, Label |
from Tkinter import Frame, Button, Entry, Listbox, Scrollbar, Label, Radiobutton, StringVar |
|
import relevation |
|
__author__ = 'Toni Corvera' |
__date__ = '$Date$' |
__revision__ = '$Rev$' |
__version_info__ = ( 1, 2, 1 ) |
__version__ = '.'.join(map(str, __version_info__)) |
|
old_fn = relevation.dump_result |
|
def append_result(s): |
def append_result(typeName, name, descr, notes, fields): |
global gui |
fields = s.split('\n') |
name = fields[2] |
name = re.sub('^Name: ', '', name) |
gui.lst.insert(tk.END, name) |
s = '\n' |
s += 'Type: %s\n' % typeName |
s += 'Name: %s\n' % name |
s += 'Description: %s\n' % descr |
s += 'Notes: %s\n' % notes |
for field in fields: |
s += '%s %s\n' % field |
gui.items.append(s) |
|
def dump_result_override(res, query_desc): |
return old_fn(res,query_desc, append_result) |
return old_fn(res, query_desc, append_result) |
|
relevation.dump_result = dump_result_override |
|
79,7 → 91,23 |
global rootw |
search = self.search_text.get() |
self.lst.delete(0, tk.END) |
relevation.main(sys.argv[1:] + ['-s', search]) |
self.items = [] |
mode = '-O' |
args = sys.argv[1:] + [ '-s', ] |
if self.mode.get() == relevation.MODE_AND: |
mode = '-A' |
search = search.split(' ') |
args += search |
args += [ mode, ] |
else: |
args += [ search, mode ] |
print args |
try: |
relevation.main(args) |
except SystemExit: |
# No matches -> Exit with 80 |
gui.lst.insert(tk.END, '<No matches>') |
self.items.append('<No passwords matched search>') |
|
def display(self): |
global rootw |
95,7 → 123,7 |
def __init__(self, master=None): |
self.master = master |
frame = Frame(master) |
frame.pack() |
frame.pack(expand=1, fill=tk.BOTH) |
self.items = [] |
self.frame = frame |
#top = master |
109,15 → 137,15 |
def ignoreme(s): |
pass |
relevation.printe = ignoreme |
relevation.printen = ignoreme |
|
FILL = tk.N+tk.S+tk.E+tk.W |
BTNROW = 2 |
BTNROW = 3 |
MODEROW = 2 |
RESROW = 1 |
# Populate |
self.search_text = Entry(self.frame) |
#self.search_text.pack({'expand': 1, 'side': 'top'}) |
self.search_text.grid(row=0, column=0, columnspan=4, padx=5, sticky=FILL) |
self.search_text.grid(row=0, column=0, columnspan=4, padx=5, sticky=tk.N+tk.E+tk.W) |
self.search_text.bind('<Return>', lambda event: self.do_find()) |
|
self.quit = Button(self.frame, text='Quit', fg='red', command=frame.quit) |
127,6 → 155,16 |
self.search = Button(self.frame, text='Search', command=self.do_find) |
#self.search.pack(side=tk.RIGHT) |
self.search.grid(row=BTNROW, column=2, padx=5) |
|
self.mode = StringVar() |
|
mode = relevation.load_config()[2] |
self.mode.set(mode) |
|
rbO = Radiobutton(self.frame, text="OR/Literal", variable=self.mode, value=relevation.MODE_OR) |
rbA = Radiobutton(self.frame, text="AND", variable=self.mode, value=relevation.MODE_AND) |
rbO.grid(row=MODEROW, column=0) |
rbA.grid(row=MODEROW, column=1) |
|
self.view = Button(self.frame, text='View', command=self.display) |
#self.view.pack(side=tk.RIGHT) |
148,9 → 186,9 |
|
if __name__ == '__main__': |
rootw = tk.Tk() |
rootw.title('Relevation search') |
rootw.title('Relevation search v' + __version__) |
gui = GUI(master=rootw) |
rootw.mainloop() |
rootw.destroy() |
#rootw.destroy() |
|
# vim:set ts=4 et ai fileencoding=utf-8: # |
Property changes: |
Added: svn:keywords |
+Rev Id Date |
\ No newline at end of property |