Finished welcome dialog. New project dialog prototype.
This commit is contained in:
1
storage/__init__.py
Normal file
1
storage/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from .appdata_storage import AppDataStorage
|
@ -2,14 +2,15 @@ import appdirs
|
||||
import os
|
||||
from configparser import ConfigParser
|
||||
import csv
|
||||
from typing import Iterable
|
||||
|
||||
from properties import config
|
||||
from model import RecentProject
|
||||
|
||||
class AppDataStorage(object):
|
||||
|
||||
SETTINGS_FILE = "config.ini"
|
||||
RECENT_PROJECTS_FILE = "recent.cfg"
|
||||
RECENT_PROJECTS_FIELDS = ["path", "name", "date", "pinned"]
|
||||
|
||||
def __init__(self):
|
||||
self.__appDataPath = appdirs.user_data_dir(config.APP_NAME, config.APP_AUTHOR_SHORT, config.APP_VERSION)
|
||||
@ -30,20 +31,33 @@ class AppDataStorage(object):
|
||||
def writeSettings(self, settings):
|
||||
pass # todo: finish this
|
||||
|
||||
def __parseRow(self, row):
|
||||
row['date'] = int(row['date'])
|
||||
row['pinned'] = row['pinned'].lower() in ['true', 'yes', '1', 'on']
|
||||
return row
|
||||
"""
|
||||
Reads recent projects list.
|
||||
|
||||
def readRecentProjects(self):
|
||||
Returns:
|
||||
list of recent projects
|
||||
"""
|
||||
def readRecentProjects(self) -> Iterable[RecentProject]:
|
||||
if (os.path.exists(self.__recentProjectsPath)):
|
||||
with open(self.__recentProjectsPath, 'r') as recentProjectsFile:
|
||||
csvreader = csv.DictReader(recentProjectsFile, fieldnames=AppDataStorage.RECENT_PROJECTS_FIELDS)
|
||||
csvreader = csv.DictReader(recentProjectsFile, fieldnames=RecentProject.DICT_FIELDS)
|
||||
for row in csvreader:
|
||||
yield self.__parseRow(row)
|
||||
try:
|
||||
yield RecentProject.fromDictionary(row)
|
||||
except ValueError:
|
||||
print("Recent projects parse error - invalid date.", row)
|
||||
except KeyError:
|
||||
print("Recent projects parse error - fields not valid.", row)
|
||||
|
||||
def writeRecentProjects(self, items):
|
||||
"""
|
||||
Writes a list of recent projects.
|
||||
|
||||
Args:
|
||||
items: list of RecentProjects
|
||||
"""
|
||||
def writeRecentProjects(self, items : Iterable[RecentProject]) -> None:
|
||||
self.__createPath(self.__recentProjectsPath)
|
||||
with open(self.__recentProjectsPath, 'w') as recentProjectsFile:
|
||||
csvwriter = csv.DictWriter(recentProjectsFile, AppDataStorage.RECENT_PROJECTS_FIELDS)
|
||||
csvwriter.writerows(items)
|
||||
csvwriter = csv.DictWriter(recentProjectsFile, RecentProject.DICT_FIELDS)
|
||||
for item in items:
|
||||
csvwriter.writerow(item.toDictionary())
|
Reference in New Issue
Block a user