with gtk_toolbox.gtk_lock():
rtmView = rtm_view.RtmView(self._widgetTree, self.__errorDisplay)
self._todoUIs[rtmView.name()] = rtmView
- self._defaultUIName = rtmView.name()
+
+ import file_view
+ defaultStoragePath = "%s/data.txt" % self._user_data
+ with gtk_toolbox.gtk_lock():
+ fileView = file_view.FileView(self._widgetTree, self.__errorDisplay, defaultStoragePath)
+ self._todoUIs[fileView.name()] = fileView
+
+ self._defaultUIName = fileView.name()
config = ConfigParser.SafeConfigParser()
config.read(self._user_settings)
"items": self._items,
"locations": self._locations,
}
- pickle.dump(state, self._filename)
+ with open(self._filename, "wb") as pickleFile:
+ pickle.dump(state, pickleFile)
def load(self):
- state = pickle.load(self._filename)
+ try:
+ with open(self._filename, "rb") as pickleFile:
+ state = pickle.load(pickleFile)
+ except IOError, e:
+ if e.errno != 2:
+ raise
self._projects = state["projects"]
self._items = state["items"]
self._locations = state["locations"]
+ if len(self._projects) == 0:
+ self.add_project("Inbox")
+
def add_project(self, name):
projId = uuid.uuid4().hex
projDetails = {
--- /dev/null
+"""
+@todo Remove blocking operations from UI thread
+"""
+
+import common_view
+
+import gtk_toolbox
+import file_backend
+
+
+class FileView(common_view.CommonView):
+
+ def __init__(self, widgetTree, errorDisplay, defaultPath):
+ super(FileView, self).__init__(widgetTree, errorDisplay)
+ self._path = defaultPath
+
+ @staticmethod
+ def name():
+ return "File"
+
+ def load_settings(self, config):
+ """
+ @note Thread Agnostic
+ """
+ path = config.get(self.name(), "path")
+ if path is not None:
+ self._path
+
+ def save_settings(self, config):
+ """
+ @note Thread Agnostic
+ """
+ self._manager.save()
+ config.add_section(self.name())
+ config.set(self.name(), "path", self._path)
+
+ def login(self):
+ """
+ @note UI Thread
+ """
+ if self._manager is not None:
+ return
+
+ self._manager = file_backend.FileBackend(self._path)
+ self._manager.load()
+
+ def logout(self):
+ """
+ @note Thread Agnostic
+ """
+ self._manager.save()
+ self._manager = None