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

View File

@ -0,0 +1 @@
from .project_manager import ProjectManager

View File

@ -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
# }