2 # -*- coding: utf-8 -*-
5 This file is part of Multilist.
7 Multilist is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
12 Multilist is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with Multilist. If not, see <http://www.gnu.org/licenses/>.
20 Copyright (C) 2008 Christoph Würstle
29 class Liststorehandler():
31 def get_unitsstore(self):
32 if (self.unitsstore==None):
33 self.unitsstore=gtk.ListStore(str, str, str,str,str, str,str, str, str,str, str, str,str)
34 self.unitsstore.clear()
38 self.unitsstore.append(["-1","-1","","","","","","","","","","",""])
39 self.unitsstore.append(["-1","-1","","1","g","","0","","","","","",""])
40 self.unitsstore.append(["-1","-1","","2","kg","","1","","","","","",""])
41 self.unitsstore.append(["-1","-1","","3","liter","","2","","","","","",""])
42 self.unitsstore.append(["-1","-1","","4","packs","","3","","","","","",""])
43 self.unitsstore.append(["-1","-1","","5","","","4","","","","","",""])
44 self.unitsstore.append(["-1","-1","","6","","","5","","","","","",""])
45 self.unitsstore.append(["-1","-1","","7","","","6","","","","","",""])
46 self.unitsstore.append(["-1","-1","","8","","","7","","","","","",""])
47 self.unitsstore.append(["-1","-1","","9","","","8","","","","","",""])
48 self.unitsstore.append(["-1","-1","","","","","9","","","","","",""])
50 return self.unitsstore
55 def get_liststore(self,titlesearch=""):
56 if (self.liststore==None):
57 self.liststore=gtk.ListStore(str, str, str,str,str, str,str, str, str,str, str, str,str)
58 self.liststore.clear()
60 titlesearch=titlesearch+"%"
63 if (self.selection.get_status()=="0"): #only 0 and 1 (active items)
64 sql="SELECT uid,status,title,quantitiy,unit,price,priority,date,private,stores,note,custom1,custom2 FROM items WHERE list=? AND category LIKE ? AND status>=? AND title like ? ORDER BY category, status, title"
65 rows=self.db.ladeSQL(sql,(self.selection.get_list(),self.selection.get_category(True),self.selection.get_status(),titlesearch))
67 sql="SELECT uid,status,title,quantitiy,unit,price,priority,date,private,stores,note,custom1,custom2 FROM items WHERE list=? AND category LIKE ? AND title LIKE ? ORDER BY category, title ASC"
68 rows=self.db.ladeSQL(sql,(self.selection.get_list(),self.selection.get_category(True),titlesearch))
71 if ((rows!=None)and(len(rows)>0)):
73 uid,status,title,quantitiy,unit,price,priority,date,private,stores,note,custom1,custom2 = row
77 self.liststore.append([uid,status,title,quantitiy,unit,price,priority,date,private,stores,note,custom1,custom2])
79 #self.liststore.append(["-1","-1",""," ","","","","","","","","",""])
81 #self.liststore.append(["-1","-1","","","","","","","","","","",""])
86 def emptyValueExists(self):
87 for child in self.liststore:
94 def update_row(self,irow,icol,new_text):
96 #for x in self.liststore:
99 if (irow>-1)and(self.liststore[irow][0]!="-1")and(self.liststore[irow][0]!=None):
100 sql = "UPDATE items SET "+self.collist[icol]+"=? WHERE uid=?"
101 self.db.speichereSQL(sql,(new_text,self.liststore[irow][0]),rowid=self.liststore[irow][0])
103 logging.info("Updated row: "+self.collist[icol]+" new text "+new_text+" Titel: "+str(self.liststore[irow][2])+" with uid "+str(self.liststore[irow][0]))
105 self.liststore[irow][icol]=new_text
107 logging.warning("update_row: row does not exist")
109 #if (self.emptyValueExists()==True)and(icol<2):
110 # #print "letzter Eintrag ohne inhalt"
114 #for x in self.liststore:
118 def checkout_rows(self):
119 sql = "UPDATE items SET status=? WHERE list=? AND category=?"
120 self.db.speichereSQL(sql,("-1",self.selection.get_list(),self.selection.get_category()))
121 for i in range(len(self.liststore)):
122 self.liststore[i][1]="-1"
128 #self.update_row(-1,1,"-1")
129 #for x in self.liststore:
131 status=self.selection.get_status()
133 uid=str(uuid.uuid4())
134 sql = "INSERT INTO items (uid,list,category,status, title) VALUES (?,?,?,?,?)"
135 self.db.speichereSQL(sql,(uid,self.selection.get_list(),self.selection.get_category(),status,""),rowid=uid)
136 logging.info("Insertet row: status = "+status+" with uid "+str(uid))
137 #self.liststore[irow][0]=str(uuid.uuid4())
139 self.liststore.append([uid,status,""," ","","","","","","","","",""])
140 self.selection.comboLists_check_for_update()
142 # self.liststore[irow][icol]=new_text
143 # self.liststore[irow][0]=uid
145 # self.liststore.append([uid,"-1",""," ","","","","","","","","",""])
146 #print "xy",self.liststore[len(self.liststore)-1][0]
147 #Check if a new list/category is opened
148 # self.selection.comboLists_check_for_update()
150 def del_row(self,irow,row_iter):
151 uid=self.liststore[irow][0]
152 self.liststore.remove(row_iter)
153 sql = "DELETE FROM items WHERE uid=?"
154 self.db.speichereSQL(sql,(uid,))
158 def get_colname(self,i):
159 if i<len(self.collist):
160 return self.collist[i]
164 def get_colcount(self):
165 return len(self.collist)
168 def rename_category(self,new_name):
169 sql = "UPDATE items SET category=? WHERE list=? AND category=?"
170 self.db.speichereSQL(sql,(new_name,self.selection.get_list(),self.selection.get_category()))
171 self.selection.comboList_changed()
172 self.selection.set_category(new_name)
174 def rename_list(self,new_name):
175 sql = "UPDATE items SET list=? WHERE list=?"
176 self.db.speichereSQL(sql,(new_name,self.selection.get_list(),))
177 self.selection.load()
178 self.selection.set_list(new_name)
181 #def update_category(self,widget=None,data=None,data2=None,data3=None):
182 # self.get_liststore()
184 def update_list(self,widget=None,data=None,data2=None,data3=None):
187 def __init__(self,db,selection):
191 self.selection=selection
192 self.collist=("uid","status","title","quantitiy","unit","price","priority","date","private","stores","note","custom1","custom2")
194 #sql="DROP TABLE items"
195 #self.db.speichereSQL(sql)
197 sql = "CREATE TABLE items (uid TEXT, list TEXT, category TEXT, status TEXT, title TEXT, quantitiy TEXT, unit TEXT, price TEXT, priority TEXT, date TEXT, pcdate TEXT, private TEXT, stores TEXT, note TEXT, custom1 TEXT, custom2 TEXT)"
198 self.db.speichereSQL(sql)
201 self.selection.load()
202 self.selection.connect("changed",self.update_list)
203 #self.selection.connect("changedCategory",self.update_category)
207 sql = "INSERT INTO items (uid,list,category,title) VALUES (?,?,?,?)"
209 self.db.speichereSQL(sql,(str(uuid.uuid4()),"default","default","atitel1"))
210 self.db.speichereSQL(sql,(str(uuid.uuid4()),"default","default","btitel2"))
211 self.db.speichereSQL(sql,(str(uuid.uuid4()),"default","default","ctitel3"))