X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=list.py;h=def19def4dd6a497f688f8afc157378bb0a7d8f7;hb=9ee137aae6aa701043f383a4ec6c57c717d79cff;hp=f0584135dcd76f50da8a0a1ab2c1faf301678593;hpb=e67629799103bf393b6ba940e8a541e4e1bbdd5c;p=meabook diff --git a/list.py b/list.py index f058413..def19de 100755 --- a/list.py +++ b/list.py @@ -1,109 +1,104 @@ #!/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() @@ -113,26 +108,123 @@ class HelloWorld: 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()