# -*- coding: utf-8 -*- ''' date: 07.01.2010 description: test class "collection" to test our new idea for saving all tasks ''' import gtk import pickle import os class Collection: """ The root and the non-leaf nodes of the ExStore._data. The leafs are of type Task. """ __data = None # TODO transfer from here to Display.treestore and back. # Transfer is presently done via pickle -- REPLACE this?!? __title = None __description = None __pic = None def __init__(self, title, descript, icon, data): """ def __init__(self, title, description, pic): self.__data = [] self.__title = title self.__description = description self.__pic = pic """ self.__title = title self.__description = descript self.__pic = icon #gtk.gdk.pixbuf_new_from_file("collection.png") self.__data = data def getData(self): return self.__data def setData(self, data): self.__data = data def getTitle(self): return self.__title def setTitle(self, title): self.__title = title def getDescription(self): return self.__description def setDescription(self, description): self.__description = description ''' keep for need, TODO icon reformatting icon to string def getPic(self): return self.__pic def setPic(self, pic): self.__pic = pic ''' def insert_object(self, obj, pos): root = self.get_data_from_pickle() list = root.getData() if (pos == None): list.append(obj) # sonderfall ganz hinten einfügen else: max = len(pos) for i in range(len(pos)): try: if isinstance(list[pos[i]], Collection): list = list[pos[i]].getData() if (i == (max - 1)): list.append(obj) else: list.insert(pos[i], obj) except IndexError: list.append(obj) # wenn in eigener collection verschoben wird, wurde ja element schon gelöscht daher passt index nicht mehr self.set_data_in_pickle(root) def get_object(self, pos): root = self.get_data_from_pickle() list = root.getData() # find object and return it to insert it in collection for i in range(len(pos)): if isinstance(list[pos[i]], Collection): obj = list[pos[i]] list = list[pos[i]].getData() else: obj = list[pos[i]] list = root.getData() max = len(pos) # find object and delete it in current collection for i in range(len(pos)): if isinstance(list[pos[i]], Collection): if (i == (max - 1)): #collection löschen (evt. abfrage ob wirklich gelöscht werden soll inkl. kinder) list.remove(obj) else: list = list[pos[i]].getData() else: #task löschen list.remove(obj) self.set_data_in_pickle(root) return obj def get_data_from_pickle(self): path = os.path.join(os.getcwd(), "data/Collection.data") f = open(path, "rb") root = pickle.load(f) f.close() return root def set_data_in_pickle(self, root): path = os.path.join(os.getcwd(), "data/Collection.data") f = open(path, "wb") pickle.dump(root, f) f.close()