Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- from gi.repository import Gtk
- from gi.repository.GdkPixbuf import PixbufLoader
- import urllib2
- import psycopg2
- import sys
- class NotebookWindow(Gtk.Window):
- def __init__(self):
- Gtk.Window.__init__(self, title="Rugby Database")
- #Create Application Window
- self.set_border_width(10)
- self.set_default_size(800, 600)
- self.set_position(Gtk.WindowPosition.CENTER)
- #Add external container (box)
- vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
- self.add(vbox)
- #Add tabbed window
- nbook = Gtk.Notebook()
- vbox.pack_start(nbook, True, True, 0)
- nbook.show()
- #Add Main tab
- label = Gtk.Label()
- label.set_markup("<b><big>Main</big></b>")
- table = Gtk.Table(rows=40, columns=10)
- #Add Results field
- #results_box = Gtk.ScrolledWindow()
- #results_box.set_vexpand(True)
- #table.attach(results_box, 0, 1, 1, 39, xpadding=5, ypadding=5)
- #Add Search box
- entry = Gtk.Entry()
- entry.set_property("secondary-icon-stock", Gtk.STOCK_FIND)
- entry.connect("icon-press", self.on_search_button)
- #entry.connect("activate", self.on_search_enter, results_box)
- entry.connect("activate", self.on_search_enter, table)
- table.attach(entry, 0, 1, 0, 1, xpadding=5)
- nbook.append_page(table, label)
- def on_search_button(self, entry, icon, event):
- search = entry.get_text()
- print("Search for " + search)
- def on_search_enter(self, entry, table): #changed from results_box
- store = Gtk.ListStore(str, str, str)
- tree = Gtk.TreeView(store)
- ##
- results_box = Gtk.ScrolledWindow()
- results_box.set_vexpand(True)
- table.attach(results_box, 0, 1, 1, 39, xpadding=5, ypadding=5)
- ##
- search = entry.get_text()
- search = search.replace("'","''") #deal with apostrophes
- entry.set_text("")
- print("Search for " + search)
- result = self.lookup_player(search)
- print result
- if len(result) > 0:
- for i in range(0, len(result)):
- store.append([result[i][0],result[i][1],str(result[i][4])])
- print result[i][0],result[i][1],result[i][2],result[i][3],result[i][4],result[i][5],result[i][6],result[i][7],result[i][8]
- else:
- print "No players found"
- #Add column for last name
- renderer = Gtk.CellRendererText()
- column = Gtk.TreeViewColumn("Last Name")
- column.pack_start(renderer, True)
- column.add_attribute(renderer, "text", 0)
- tree.append_column(column)
- #Add column for first name
- renderer = Gtk.CellRendererText()
- column = Gtk.TreeViewColumn("First Name")
- column.pack_start(renderer, True)
- column.add_attribute(renderer, "text", 1)
- tree.append_column(column)
- #Add column for icon
- renderer = Gtk.CellRendererPixbuf()
- column = Gtk.TreeViewColumn("Show")
- column.pack_start(renderer, True)
- column.add_attribute(renderer, "stock-id", 2)
- tree.append_column(column)
- results_box.add(tree)
- table.show_all()
- tree.show_all()
- def on_click_edit(self, button):
- print("Editing Player")
- def lookup_player(self, pstring):
- try:
- con = psycopg2.connect(database='Rugby', user='postgres', password = '1234')
- cur = con.cursor()
- search = "select pl.lastname, pl.firstname, pl.height, pl.weight, to_char(pl.dob, 'DD/MM/YYYY'), cl.name, pl.injury_id, to_char(pl.suspendeduntil, 'DD/MM/YYYY'), pl.photo from player pl inner join club cl on cl.id = pl.currentclub_id where firstname ilike '%s' or lastname ilike '%s'" % (pstring, pstring)
- cur.execute(search)
- result = cur.fetchall()
- return result
- except psycopg2.DatabaseError, e:
- print 'Error %s' % e
- sys.exit(1)
- finally:
- if con:
- con.close()
- win = NotebookWindow()
- win.connect("delete-event", Gtk.main_quit)
- win.show_all()
- Gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement