Finished welcome dialog. New project dialog prototype.

This commit is contained in:
2018-08-03 14:30:15 +03:00
parent 59cd033cad
commit 037843d14f
17 changed files with 9466 additions and 8889 deletions

1
storage/__init__.py Normal file
View File

@ -0,0 +1 @@
from .appdata_storage import AppDataStorage

View File

@ -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())