Finished welcome dialog. New project dialog prototype.
This commit is contained in:
		@@ -0,0 +1 @@
 | 
			
		||||
from .project_manager import ProjectManager
 | 
			
		||||
@@ -1,49 +1,90 @@
 | 
			
		||||
from typing import Iterable
 | 
			
		||||
 | 
			
		||||
from model.project import Project
 | 
			
		||||
from model import Project, RecentProject
 | 
			
		||||
from storage import AppDataStorage
 | 
			
		||||
 | 
			
		||||
class ProjectManager(object):
 | 
			
		||||
 | 
			
		||||
    def __init__(self, appDataStorage):
 | 
			
		||||
    def __init__(self, appDataStorage : AppDataStorage):
 | 
			
		||||
        self.__appDataStorage = appDataStorage
 | 
			
		||||
        self.__recentProjects = None
 | 
			
		||||
        self.__recentProjects : dict = None
 | 
			
		||||
 | 
			
		||||
    def getRecentProjects(self):
 | 
			
		||||
    """
 | 
			
		||||
    Gets a list of recent projects. The list is lazily loaded on the first call.
 | 
			
		||||
 | 
			
		||||
    Returns:
 | 
			
		||||
        list of RecentProjects
 | 
			
		||||
    """
 | 
			
		||||
    def getRecentProjects(self) -> Iterable[RecentProject]:
 | 
			
		||||
        if self.__recentProjects is None:
 | 
			
		||||
            self.__recentProjects = {}
 | 
			
		||||
            for item in self.__appDataStorage.readRecentProjects():
 | 
			
		||||
                self.__recentProjects[item['path']] = item
 | 
			
		||||
                self.__recentProjects[item.path] = item
 | 
			
		||||
 | 
			
		||||
        return self.__recentProjects.values()
 | 
			
		||||
 | 
			
		||||
    def pinRecentProject(self, entry, isPinned = True):
 | 
			
		||||
        entry['pinned'] = isPinned
 | 
			
		||||
    """
 | 
			
		||||
    Pins a recent project.
 | 
			
		||||
 | 
			
		||||
    Args:
 | 
			
		||||
        entry: recent project
 | 
			
		||||
        isPinned: pinned or not
 | 
			
		||||
    """
 | 
			
		||||
    def pinRecentProject(self, entry : RecentProject, isPinned : bool = True):
 | 
			
		||||
        entry.pinned = isPinned
 | 
			
		||||
        self.__appDataStorage.writeRecentProjects(self.__recentProjects.values())
 | 
			
		||||
 | 
			
		||||
    def deleteRecentProject(self, entry):
 | 
			
		||||
        self.__recentProjects.pop(entry['path'], None)
 | 
			
		||||
    """
 | 
			
		||||
    Deletes a recent project.
 | 
			
		||||
 | 
			
		||||
    Args:
 | 
			
		||||
        entry: recent project
 | 
			
		||||
    """
 | 
			
		||||
    def deleteRecentProject(self, entry : RecentProject):
 | 
			
		||||
        self.__recentProjects.pop(entry.path, None)
 | 
			
		||||
        self.__appDataStorage.writeRecentProjects(self.__recentProjects.values())
 | 
			
		||||
 | 
			
		||||
    def debug_populateRecentProjects(self):
 | 
			
		||||
        self.__recentProjects['/home/tibi/Videos/project.pro'] = {
 | 
			
		||||
            'name' : 'Debug project',
 | 
			
		||||
            'path' : '/home/tibi/Videos/project.pro',
 | 
			
		||||
            'pinned' : True,
 | 
			
		||||
            'date' : 1
 | 
			
		||||
        }
 | 
			
		||||
        self.__recentProjects['/home/tibi/Videos/project2.pro'] = {
 | 
			
		||||
            'name' : 'Debug project 2',
 | 
			
		||||
            'path' : '/home/tibi/Videos/project2.pro',
 | 
			
		||||
            'pinned' : False,
 | 
			
		||||
            'date' : 2
 | 
			
		||||
        }
 | 
			
		||||
        self.__recentProjects['/home/tibi/Videos/project3.pro'] = {
 | 
			
		||||
            'name' : 'Debug project 3',
 | 
			
		||||
            'path' : '/home/tibi/Videos/project3.pro',
 | 
			
		||||
            'pinned' : False,
 | 
			
		||||
            'date' : 3
 | 
			
		||||
        }
 | 
			
		||||
        self.__recentProjects['/home/tibi/Videos/project4.pro'] = {
 | 
			
		||||
            'name' : 'Debug project 4',
 | 
			
		||||
            'path' : '/home/tibi/Videos/project4.pro',
 | 
			
		||||
            'pinned' : False,
 | 
			
		||||
            'date' : 4
 | 
			
		||||
        }
 | 
			
		||||
    """
 | 
			
		||||
    Creates a new project at the given path, and returns the created project.
 | 
			
		||||
 | 
			
		||||
    Args:
 | 
			
		||||
        path: path to project file
 | 
			
		||||
    """
 | 
			
		||||
    def newProject(self, path : str) -> Project:
 | 
			
		||||
        return Project(path)
 | 
			
		||||
 | 
			
		||||
    """
 | 
			
		||||
    Opens an existing project.
 | 
			
		||||
 | 
			
		||||
    Args:
 | 
			
		||||
        path: path to project file
 | 
			
		||||
    """
 | 
			
		||||
    def openProject(self, path : str) -> Project:
 | 
			
		||||
        return Project(path)
 | 
			
		||||
 | 
			
		||||
    # def debug_populateRecentProjects(self):
 | 
			
		||||
    #     self.__recentProjects['/home/tibi/Videos/project.pro'] = {
 | 
			
		||||
    #         'name' : 'Debug project',
 | 
			
		||||
    #         'path' : '/home/tibi/Videos/project.pro',
 | 
			
		||||
    #         'pinned' : True,
 | 
			
		||||
    #         'date' : 1
 | 
			
		||||
    #     }
 | 
			
		||||
    #     self.__recentProjects['/home/tibi/Videos/project2.pro'] = {
 | 
			
		||||
    #         'name' : 'Debug project 2',
 | 
			
		||||
    #         'path' : '/home/tibi/Videos/project2.pro',
 | 
			
		||||
    #         'pinned' : False,
 | 
			
		||||
    #         'date' : 2
 | 
			
		||||
    #     }
 | 
			
		||||
    #     self.__recentProjects['/home/tibi/Videos/project3.pro'] = {
 | 
			
		||||
    #         'name' : 'Debug project 3',
 | 
			
		||||
    #         'path' : '/home/tibi/Videos/project3.pro',
 | 
			
		||||
    #         'pinned' : False,
 | 
			
		||||
    #         'date' : 3
 | 
			
		||||
    #     }
 | 
			
		||||
    #     self.__recentProjects['/home/tibi/Videos/project4.pro'] = {
 | 
			
		||||
    #         'name' : 'Debug project 4',
 | 
			
		||||
    #         'path' : '/home/tibi/Videos/project4.pro',
 | 
			
		||||
    #         'pinned' : False,
 | 
			
		||||
    #         'date' : 4
 | 
			
		||||
    #     }
 | 
			
		||||
		Reference in New Issue
	
	Block a user