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