Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflavio <fdanesse@gmail.com>2012-04-16 21:08:13 (GMT)
committer flavio <fdanesse@gmail.com>2012-04-16 21:08:13 (GMT)
commite688feec9fb9691662476700a7d1f5596a1eb444 (patch)
treea398cef809fdd7ef435e63f5476616dc6e93d158
parentf717b4e99b57e6d87ec4d7ba2a58c92989a95c28 (diff)
Correcciones en consultas para devolución de registro completo y agregado de campo fav en treview.
-rw-r--r--CeibalNotifica.py121
-rw-r--r--base.py11
-rw-r--r--prueba.dbbin2048 -> 2048 bytes
-rw-r--r--store.py4
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")
diff --git a/base.py b/base.py
index 2737881..6fd46e6 100644
--- a/base.py
+++ b/base.py
@@ -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
diff --git a/prueba.db b/prueba.db
index 7df1365..b1347f2 100644
--- a/prueba.db
+++ b/prueba.db
Binary files differ
diff --git a/store.py b/store.py
index 2c905c2..9a2368a 100644
--- a/store.py
+++ b/store.py
@@ -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)