diff options
author | flavio <fdanesse@gmail.com> | 2012-04-16 21:08:13 (GMT) |
---|---|---|
committer | flavio <fdanesse@gmail.com> | 2012-04-16 21:08:13 (GMT) |
commit | e688feec9fb9691662476700a7d1f5596a1eb444 (patch) | |
tree | a398cef809fdd7ef435e63f5476616dc6e93d158 | |
parent | f717b4e99b57e6d87ec4d7ba2a58c92989a95c28 (diff) |
Correcciones en consultas para devolución de registro completo y agregado de campo fav en treview.
-rw-r--r-- | CeibalNotifica.py | 121 | ||||
-rw-r--r-- | base.py | 11 | ||||
-rw-r--r-- | prueba.db | bin | 2048 -> 2048 bytes | |||
-rw-r--r-- | store.py | 4 |
4 files changed, 52 insertions, 84 deletions
diff --git a/CeibalNotifica.py b/CeibalNotifica.py index ddccc08..4279474 100644 --- a/CeibalNotifica.py +++ b/CeibalNotifica.py @@ -4,9 +4,9 @@ # Autor: Flavio Danesse - fdanesse@activitycentral.com ''' La idea es hacer una aplicación que sea capaz de mostrar todos los mensajes, no importa su prioridad. -La aplicación se llevará a cabo tanto en el azúcar y el Gnome y debe ser capaz de: -- Muestra todos los mensajes activos -- Filtrar y ordenar los mensajes por prioridad, fecha o tipo de mensajes''' +La aplicación se llevará a cabo tanto en sugar como en Gnome y debe ser capaz de: +- Mostrar todos los mensajes activos. +- Filtrar y ordenar los mensajes por prioridad, fecha o tipo de mensajes.''' import shelve import sqlite3 @@ -81,7 +81,9 @@ class CeibalNotifica(gtk.Window): return False def salir(self, widget = None): sys.exit(0) - +''' +set_fav(self, id_msg, fav=True) marcará favorito. +remove_message(self, id_msg) borra un registro en la base.''' class Notify_Store(gtk.TreeView): __gsignals__ = {"set_notify":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING, ))} @@ -93,8 +95,9 @@ class Notify_Store(gtk.TreeView): #self.connect("button-press-event", self.handler_click) self.modelo = gtk.ListStore (gobject.TYPE_STRING, - gobject.TYPE_STRING, gobject.TYPE_STRING, - gobject.TYPE_STRING, gobject.TYPE_STRING) + gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, + gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, + gobject.TYPE_STRING) self.set_model(self.modelo) render = gtk.CellRendererText() @@ -102,23 +105,43 @@ class Notify_Store(gtk.TreeView): self.append_column(columna) render = gtk.CellRendererText() - columna = gtk.TreeViewColumn("text", render, text=1) - columna.set_property('visible', False) + columna = gtk.TreeViewColumn("id", render, text=0) + columna.set_property('visible', True) + self.append_column(columna) + + render = gtk.CellRendererText() + columna = gtk.TreeViewColumn("priority", render, text=1) + columna.set_property('visible', True) + self.append_column(columna) + + render = gtk.CellRendererText() + columna = gtk.TreeViewColumn("title", render, text=2) + columna.set_property('visible', True) self.append_column(columna) render = gtk.CellRendererText() - columna = gtk.TreeViewColumn("launched", render, text=2) - columna.set_property('visible', False) + columna = gtk.TreeViewColumn("text", render, text=3) + columna.set_property('visible', True) self.append_column(columna) render = gtk.CellRendererText() - columna = gtk.TreeViewColumn("expires", render, text=3) - columna.set_property('visible', False) + columna = gtk.TreeViewColumn("launched", render, text=4) + columna.set_property('visible', True) self.append_column(columna) render = gtk.CellRendererText() - columna = gtk.TreeViewColumn("type", render, text=4) - columna.set_property('visible', False) + columna = gtk.TreeViewColumn("expires", render, text=5) + columna.set_property('visible', True) + self.append_column(columna) + + render = gtk.CellRendererText() + columna = gtk.TreeViewColumn("type", render, text=6) + columna.set_property('visible', True) + self.append_column(columna) + + render = gtk.CellRendererText() + columna = gtk.TreeViewColumn("fav", render, text=7) + columna.set_property('visible', True) self.append_column(columna) self.show_all() @@ -130,14 +153,16 @@ class Notify_Store(gtk.TreeView): def clear(self): self.modelo.clear() def add_notify(self, notify): - notify = [notify['title'], notify['text'], notify['launched'], notify['expires'], notify['type']] + '''solo priority no se recupera.''' + notify = [notify['id'], notify['priority'], notify['title'], notify['text'], + notify['launched'], notify['expires'], notify['type'], notify['fav']] iter = self.modelo.append(notify) def func_selecciones(self, selection, model, path, is_selected, user_data): # Control de selecciones sobre treestore # print selection, model, path, is_selected, user_data iter = self.modelo.get_iter(path) - self.emit("set_notify", self.modelo.get_value(iter, 1)) + self.emit("set_notify", self.modelo.get_value(iter, 3)) #direccion = self.modelo.get_value(iter, 2) #self.preview.control_preview(direccion) return True # Debe devolver True @@ -165,68 +190,6 @@ class Notify_Store(gtk.TreeView): def handler_click(self, widget, event): pass - # reacciona a los clicks sobre las filas de tresstore - # print widget, event - ''' - boton = event.button - pos = (event.x, event.y) - tiempo = event.time - # widget es TreeView widget.get_name() - # Obteniendo datos a partir de coordenadas de evento - path, columna, xdefondo, ydefondo= widget.get_path_at_pos(int(pos[0]), int(pos[1])) - # TreeView.get_path_at_pos(event.x, event.y) devuelve: - # * La ruta de acceso en el punto especificado (x, y), en relación con las coordenadas widget - # * El gtk.TreeViewColumn en ese punto - # * La coordenada X en relación con el fondo de la celda - # * La coordenada Y en relación con el fondo de la celda - if boton == 1: - return - elif boton == 3: - # Abrir menu - popup pasando el path de la fila seleccionada - self.crear_menu_emergente(boton, pos, tiempo, path) - return - elif boton == 2: - return''' - - ''' - def crear_menu_emergente(self, boton, pos, tiempo, path): - # un menu para agregar o eliminar radios de la base de datos - menu= gtk.Menu() - iter= self.modelo.get_iter(path) - direccion= self.modelo.get_value(iter, 2) - # verificamos los permisos del archivo o directorio - lectura, escritura, ejecucion= self.manejadordearchivos.verificar_permisos(direccion) - - # Items del menu - if lectura: #and not os.path.ismount(os.path.join(direccion)): - copiar = gtk.MenuItem("Copiar") - menu.append(copiar) - copiar.connect_object("activate", self.seleccionar_origen, path, "Copiar") - - if escritura and not os.path.ismount(os.path.join(direccion)): - borrar = gtk.MenuItem("Borrar") - menu.append(borrar) - borrar.connect_object("activate", self.seleccionar_origen, path, "Borrar") - - if escritura and (os.path.isdir(os.path.join(direccion)) or os.path.ismount(os.path.join(direccion))) \ - and (self.direccion_seleccionada != None or self.direccion_seleccionada_para_cortar != None): - pegar = gtk.MenuItem("Pegar") - menu.append(pegar) - pegar.connect_object("activate", self.seleccionar_origen, path, "Pegar") - - if escritura and (os.path.isdir(os.path.join(direccion)) or os.path.isfile(os.path.join(direccion))): - cortar = gtk.MenuItem("Cortar") - menu.append(cortar) - cortar.connect_object("activate", self.seleccionar_origen, path, "Cortar") - - if escritura and (os.path.isdir(os.path.join(direccion)) or os.path.ismount(os.path.join(direccion))): - nuevodirectorio = gtk.MenuItem("Crear Directorio") - menu.append(nuevodirectorio) - nuevodirectorio.connect_object("activate", self.seleccionar_origen, path, "Crear Directorio") - - menu.show_all() - #popup(parent_menu_shell, parent_menu_item, func, button, activate_time, data=None) - gtk.Menu.popup(menu, None, None, None, boton, tiempo)''' if __name__=="__main__": CeibalNotifica() @@ -243,6 +206,7 @@ d['priority'] = 1 d['launched'] = datetime.date(1972, 6, 21) d['expires'] = datetime.date(2012, 6, 21) d['type'] = "Prueba tipo" +d['fav'] = 0 d.close() filename = os.path.join('/tmp', 'notify_1') @@ -254,6 +218,7 @@ d['priority'] = 1 d['launched'] = datetime.date(1972, 6, 21) d['expires'] = datetime.date(2013, 6, 21) d['type'] = "Prueba tipo1" +d['fav'] = 1 d.close() store = Store(db_filename="prueba.db") @@ -1,10 +1,11 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -# Autor: Flavio Danesse - fdanesse@activitycentral.com +# Flavio Danesse - fdanesse@activitycentral.com + ''' La idea es hacer una aplicación que sea capaz de mostrar todos los mensajes, no importa su prioridad. -La aplicación se llevará a cabo tanto en el azúcar y el Gnome y debe ser capaz de: +La aplicación se llevará a cabo tanto en el azúcar y en Gnome y debe ser capaz de: - Muestra todos los mensajes activos - Filtrar y ordenar los mensajes por prioridad, fecha o tipo de mensajes''' @@ -21,6 +22,7 @@ d['priority'] = 1 d['launched'] = datetime.date(1972, 6, 21) d['expires'] = datetime.date(2012, 6, 21) d['type'] = "Prueba tipo" +d['fav'] = 0 d.close() filename = os.path.join('/tmp', 'notify_1') @@ -28,13 +30,14 @@ d = shelve.open(filename) d['id'] = 1 d['title'] = "Prueba Titulo1" d['text'] = "Prueba Texto1" -d['priority'] = 1 +d['priority'] = 2 d['launched'] = datetime.date(1972, 6, 21) d['expires'] = datetime.date(2013, 6, 21) d['type'] = "Prueba tipo1" +d['fav'] = 1 d.close() -store = Store(db_filename="prueba.db") +store = Store(xmlpath='/tmp', db_filename="prueba.db") mensaje = store.db.get_messages([]) print mensaje @@ -48,7 +48,7 @@ CREATE TABLE IF NOT EXISTS notifications (id INTEGER PRIMARY KEY,title VARCHAR(3 c = con.cursor() c.execute('BEGIN TRANSACTION') try: - c.execute('insert into notifications(%s,%s,%s,%s,%s,%s,%s) values (?,?,?,?,?,?,?)' %tuple(keys), values) + c.execute('insert into notifications(%s,%s,%s,%s,%s,%s,%s,%s) values (?,?,?,?,?,?,?,?)' %tuple(keys), values) except sqlite3.IntegrityError,e: print "Error al insertar datos: %s" %str(e) c.execute('END TRANSACTION') @@ -110,7 +110,7 @@ CREATE TABLE IF NOT EXISTS notifications (id INTEGER PRIMARY KEY,title VARCHAR(3 filters+=' and ' if args else '' c = con.cursor() c.execute('BEGIN TRANSACTION') - c.execute('SELECT title, text, type, launched, expires FROM notifications %s order by priority desc;' %filters) + c.execute('SELECT id, priority, title, text, launched, expires, type, fav FROM notifications %s order by priority desc;' %filters) output = c.fetchall() c.execute('END TRANSACTION') self._close_connection(con) |