#!/usr/bin/python
+# -*- coding: utf-8 -*-
import pygtk
pygtk.require('2.0')
import gtk
-class HelloWorld:
+from database import db
- def hello(self, widget, data=None):
- print "Hello World"
+class List:
def delete_event(self, widget, event, data=None):
- # If you return FALSE in the "delete_event" signal handler,
- # GTK will emit the "destroy" signal. Returning TRUE means
- # you don't want the window to be destroyed.
- # This is useful for popping up 'are you sure you want to quit?'
- # type dialogs.
- print "delete event occurred"
- # Change FALSE to TRUE and the main window will not be destroyed
- # with a "delete_event".
+ print "delete event occurred"
return False
def destroy(self, widget, data=None):
print "destroy signal occurred"
gtk.main_quit()
+
def __init__(self):
gtk.rc_parse_string("style 'scroll' {\n"
- " GtkRange::slider-width = 40\n"
+ " GtkRange::slider-width = 40\n"
"}\n"
"class 'GtkRange' style 'scroll'")
+ #gtk.rc_parse_string("style 'scroll' {\n"
+ # " GtkRange::slider-width = 40\n"
+ # "}\n"
+ # "class 'GtkRange' style 'scroll'")
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+
+ self.window.set_size_request(800, 480)
- self.window.set_size_request(300, 200)
-
-
- # When the window is given the "delete_event" signal (this is given
- # by the window manager, usually by the "close" option, or on the
- # titlebar), we ask it to call the delete_event () function
- # as defined above. The data passed to the callback
- # function is NULL and is ignored in the callback function.
+ #self.window.fullscreen();
+
self.window.connect("delete_event", self.delete_event)
- # Here we connect the "destroy" event to a signal handler.
- # This event occurs when we call gtk_widget_destroy() on the window,
- # or if we return FALSE in the "delete_event" callback.
self.window.connect("destroy", self.destroy)
+ #self.window.connect("window-state-event", self.window_state_cb)
- # Sets the border width of the window.
self.window.set_border_width(10)
- vbox = gtk.VBox(False, 8)
+ vbox = gtk.VBox(False, 0)
+
+ self.hbox = gtk.HBox(False, 0)
+
+ self.buttons = {}
+ self.buttons[0] = gtk.Button(u"Всего")
+ self.max_buttons = 1
+ self.buttons[0].connect("clicked", self.button_back, 0, 0)
+ self.hbox.add(self.buttons[0])
+ self.buttons[0].show()
+
sw = gtk.ScrolledWindow()
sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- #a = gtk.Adjustment(0, 100, 100, 0, 10, 10)
- #sw.set_vadjustment()
-
- vbox.pack_start(sw, True, True, 0)
+ vbox.pack_start(self.hbox, False, True, 0)
+ vbox.pack_end(sw, True, True, 0)
+
+ self.dbo = db.DbSqlite()
+ data = self.dbo.get_list(0)
+
+ self.tree = gtk.TreeView()
+ self.show_list(0)
+ #store = gtk.ListStore(int, str, int)
+ #for d in data:
+ # store.append([d, data[d], 0])
- self.data = [('fio fdkfdskajf jdkflasjkla', 'doldfsagfdas dlaskj', '212345'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdsafdsa dfasfasf dfasfdsa', 'fdsafaf fdafdas', '345678'),
- ('fdas dafs fdsfasd ', 'fdasf dafa', '12435678')]
- store = gtk.ListStore(str, str, str)
- for d in self.data:
- store.append([d[0], d[1], d[2]])
-
- tree = gtk.TreeView(store)
- tree.set_rules_hint(True)
-
- tree.connect("row-activated", self.select_item)
+ self.tree.set_rules_hint(True)
+
+ self.tree.connect("row-activated", self.select_item)
t1 = gtk.CellRendererText()
- column = gtk.TreeViewColumn("Name", t1, text=0)
+ column = gtk.TreeViewColumn("Id", t1, text=0)
column.set_sort_column_id(0)
- tree.append_column(column)
+ column.set_visible(False)
+ self.tree.append_column(column)
-
t1 = gtk.CellRendererText()
- column = gtk.TreeViewColumn("State", t1, text=1)
- column.set_sort_column_id(1)
- tree.append_column(column)
-
+ column = gtk.TreeViewColumn("Name", t1, text=1)
+ column.set_sort_column_id(0)
+ self.tree.append_column(column)
t1 = gtk.CellRendererText()
- column = gtk.TreeViewColumn("Phone", t1, text=2)
- column.set_sort_column_id(2)
- tree.append_column(column)
+ column = gtk.TreeViewColumn("Type", t1, text=2)
+ column.set_sort_column_id(0)
+ column.set_visible(False)
+ self.tree.append_column(column)
- sw.add(tree)
-
+ sw.add(self.tree)
+
+ #st = gtk.ListStore(int, str)
+ #data = self.dbo.get_list(0)
+ #for d in self.data:
+ # st.append([d, self.data[d]])
+ #self.tree.set_model(st)
self.window.add(vbox)
self.window.show_all()
self.window.show()
def select_item(self, widget, path, column):
- print "select_item path:%s" % path
+
+ parent = widget.get_model()[path][0]
+ type = widget.get_model()[path][2]
+ if type == 1:
+ self.show_record(parent)
+ return
+ print parent
+ #create button for back
+ if self.buttons.has_key(self.max_buttons) == 0:
+ self.buttons[self.max_buttons] = gtk.Button()
+ self.hbox.add(self.buttons[self.max_buttons])
+ self.buttons[self.max_buttons].set_label(widget.get_model()[path][1])
+ self.buttons[self.max_buttons].connect("clicked", self.button_back, parent, self.max_buttons)
+
+ self.buttons[self.max_buttons].show()
+ self.hbox.add(self.buttons[self.max_buttons])
+ self.max_buttons = self.max_buttons + 1
+# self.buttons[self.max_buttons] = gtk.Button()
+ self.show_list(parent)
+
+ def show_list(self, parent):
+
+ store = gtk.ListStore(int, str, int)
+ data = self.dbo.get_list(parent)
+ for d in data:
+ store.append([d, data[d], 0])
+ #add people
+ data = self.dbo.get_allrecords('cn', parent)
+ for d in data:
+ store.append([d, data[d], 1])
+ self.tree.set_model(store)
+
+ def button_back(self, widget, id=None, number=None):
+
+ """return back"""
+ self.show_list(id)
+
+ # delete not use buttons
+ while self.max_buttons - 1 > number:
+ self.buttons[self.max_buttons-1].set_label(" ")
+ self.hbox.remove(self.buttons[self.max_buttons-1])
+ self.max_buttons = self.max_buttons - 1
+
+ print "button back data= %i " % number
+
+ def show_record(self, id):
+ self.dialog = gtk.Dialog("Item descrition",
+ self.window,
+ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
+
+ rec = self.dbo.get_record(id)
+ #print rec
+ text = ""
+ tb = gtk.TextBuffer()
+
+ for r in rec:
+ #print "%s -> %s" % (r, rec[r])
+ text += "%s: %s\n" % (r, rec[r])
+
+ tb.insert_at_cursor(text)
+
+ sw = gtk.ScrolledWindow()
+ sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
+ sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+
+ tv = gtk.TextView(tb)
+ sw.add(tv)
+
+ self.dialog.vbox.pack_start(sw)
+ self.dialog.set_size_request(600, 360)
+ tv.show()
+ sw.show()
+ response = self.dialog.run()
+ self.dialog.destroy()
+ print "response= %s" % response
+
+ def select_item1(self, widget, path, column):
+
+ #print "select_item path:%s" % path
self.dialog = gtk.Dialog("Item descrition",
self.window,
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
+ model = widget.get_model()
+ id = model[path][0]
+ rec = self.dbo.get_record(id)
+ #print rec
+ text = ""
+ tb = gtk.TextBuffer()
+
+ for r in rec:
+ #print "%s -> %s" % (r, rec[r])
+ text += "%s: %s\n" % (r, rec[r])
+
+ tb.insert_at_cursor(text)
+
+ sw = gtk.ScrolledWindow()
+ sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
+ sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+
+ tv = gtk.TextView(tb)
+ sw.add(tv)
- label = gtk.Label("select item %s" % path)
- self.dialog.vbox.pack_start(label)
- label.show()
+ self.dialog.vbox.pack_start(sw)
+ self.dialog.set_size_request(600, 360)
+ tv.show()
+ sw.show()
response = self.dialog.run()
self.dialog.destroy()
print "response= %s" % response
def main(self):
- # All PyGTK applications must have a gtk.main(). Control ends here
- # and waits for an event to occur (like a key press or mouse event).
gtk.main()
if __name__ == "__main__":
- hello = HelloWorld()
- hello.main()
+ app = List()
+ app.main()