[POS-commit] r6418 - in kiwi/trunk: . examples
Johan Dahlin
jdahlin at async.com.br
Fri Apr 20 17:10:34 BRT 2007
Author: jdahlin
Date: Fri Apr 20 17:10:34 2007
New Revision: 6418
Added:
kiwi/trunk/examples/search.py
Modified:
kiwi/trunk/ChangeLog
Log:
* examples/search.py: Add an example.
Modified: kiwi/trunk/ChangeLog
==============================================================================
--- kiwi/trunk/ChangeLog (original)
+++ kiwi/trunk/ChangeLog Fri Apr 20 17:10:34 2007
@@ -1,5 +1,6 @@
2007-04-20 Johan Dahlin <jdahlin at async.com.br>
+ * examples/search.py: Add an example.
* kiwi/ui/search.py (DateSearchFilter): Make sure that you cannot
select a start date after the end date and an end date before the
start date. Add some comments explaning what's going on since the
Added: kiwi/trunk/examples/search.py
==============================================================================
--- (empty file)
+++ kiwi/trunk/examples/search.py Fri Apr 20 17:10:34 2007
@@ -0,0 +1,68 @@
+import datetime
+
+import gtk
+
+from sqlobject import connectionForURI, SQLObject, StringCol, DateCol, DecimalCol
+from kiwi.datatypes import currency
+from kiwi.db.sqlobj import SQLObjectQueryExecuter
+from kiwi.ui.objectlist import Column
+from kiwi.ui.search import SearchSlaveDelegate, DateSearchFilter
+
+__connection__ = conn = connectionForURI('sqlite:///:memory:')
+
+class Sale(SQLObject):
+ description = StringCol()
+ price = DecimalCol(size=10, precision=2)
+ date = DateCol()
+Sale.createTable(ifNotExists=True)
+
+if Sale.select().count() == 0:
+ today = datetime.date.today()
+ for description, price, date in [
+ ('Cup of coffee', 2.04, today - datetime.timedelta(1)),
+ ('Chocolate bar', 1.85, today - datetime.timedelta(40)),
+ ('Candy', 0.99, today - datetime.timedelta(30)),
+ ('Grape Juice', 3.38, today - datetime.timedelta(23)),
+ ('Ice tea', 1.25, today - datetime.timedelta(10)),
+ ('Cookies', 0.85, today - datetime.timedelta(5)),
+ ('Noogies', 1.45, today - datetime.timedelta(2)),
+ ('Nuts', 2.95, today)]:
+ Sale(description=description,
+ price=price,
+ date=date)
+
+class BirthdayViewer(gtk.Window):
+ def __init__(self):
+ gtk.Window.__init__(self)
+ self.search = SearchSlaveDelegate(self.get_columns())
+ self.add(self.search.get_toplevel())
+ self._setup_searching()
+ self._create_filters()
+
+ def _setup_searching(self):
+ self.query = SQLObjectQueryExecuter(conn)
+ self.search.set_query_executer(self.query)
+ self.query.set_table(Sale)
+
+
+ def _create_filters(self):
+ self.query.set_filter_columns(self.search.get_primary_filter(),
+ ['description'])
+
+ date_filter = DateSearchFilter('Date:')
+ self.query.set_filter_columns(date_filter, ['date'])
+ self.search.add_filter(date_filter)
+
+ def get_columns(self):
+ return [Column('description', expand=True, title='Description'),
+ Column('price', data_type=currency,
+ expand=True, title='Description'),
+ Column('date', data_type=datetime.date,
+ title='Birthdate')]
+
+
+view = BirthdayViewer()
+view.set_size_request(-1, 400)
+view.connect('delete-event', gtk.main_quit)
+view.show_all()
+gtk.main()
More information about the POS-commit
mailing list