Rearrange project management a bit.

looper
Ben Niemann 7 years ago
parent 011af7b310
commit e6712055db

@ -527,12 +527,6 @@ class Project(BaseProject):
self.command_log_fp = None
self.checkpoint_sequence_number = 1
@property
def name(self):
if self.path is None:
return '*New Project*'
return os.path.basename(self.path)
@property
def closed(self):
return self.path is None

@ -96,12 +96,6 @@ class BaseEditorApp(QApplication):
self.midi_hub = self.createMidiHub()
self.midi_hub.start()
self.new_project_action = QAction(
"New", self,
shortcut=QKeySequence.New,
statusTip="Create a new project",
triggered=self.newProject)
self.show_edit_areas_action = QAction(
"Show Edit Areas", self,
checkable=True,
@ -145,8 +139,17 @@ class BaseEditorApp(QApplication):
return (self.runtime_settings.dev_mode
and self.show_edit_areas_action.isChecked())
async def createProject(self, path):
project = await self.project_registry.create_project(path)
self.addProject(project)
return project
async def openProject(self, path):
project = await self.project_registry.open_project(path)
self.addProject(project)
return project
def addProject(self, project):
#self._projects.append(project)
self.win.addProjectView(project)
self.settings.setValue(
@ -161,24 +164,6 @@ class BaseEditorApp(QApplication):
'opened_projects',
[project.path for project in self._projects if project.path])
def newProject(self):
path, open_filter = QFileDialog.getSaveFileName(
parent=self.win,
caption="Select Project File",
#directory=self.ui_state.get(
# 'instruments_add_dialog_path', ''),
filter="All Files (*);;noisicaä Projects (*.emp)",
#initialFilter=self.ui_state.get(
#'instruments_add_dialog_path', ''),
)
if not path:
return
project = EditorProject(self)
project.create(path)
self.addProject(project)
class EditorApp(BaseEditorApp):
def __init__(self, process, runtime_settings, paths, settings=None):
@ -208,14 +193,17 @@ class EditorApp(BaseEditorApp):
for path in self.paths:
if path.startswith('+'):
path = path[1:]
await self.project_registry.create_project(path)
project = await self.project_registry.create_project(
path)
else:
await self.project_registry.open_project(path)
project = await self.project_registry.open_project(
path)
self.addProject(project)
else:
reopen_projects = self.settings.value('opened_projects', [])
for path in reopen_projects or []:
await self.project_registry.open_project(path)
project = await self.project_registry.open_project(path)
self.addProject(project)
self.aboutToQuit.connect(self.shutDown)

@ -137,6 +137,12 @@ class EditorWindow(QMainWindow):
return view
def createActions(self):
self._new_project_action = QAction(
"New", self,
shortcut=QKeySequence.New,
statusTip="Create a new project",
triggered=self.onNewProject)
self._open_project_action = QAction(
"Open", self,
shortcut=QKeySequence.Open,
@ -237,7 +243,7 @@ class EditorWindow(QMainWindow):
menu_bar = self.menuBar()
self._project_menu = menu_bar.addMenu("Project")
self._project_menu.addAction(self._app.new_project_action)
self._project_menu.addAction(self._new_project_action)
self._project_menu.addAction(self._open_project_action)
self._project_menu.addAction(self._save_project_action)
self._project_menu.addAction(self._close_current_project_action)
@ -447,6 +453,22 @@ class EditorWindow(QMainWindow):
view = self._project_tabs.currentWidget()
return view.project
def onNewProject(self):
path, open_filter = QFileDialog.getSaveFileName(
parent=self,
caption="Select Project File",
#directory=self.ui_state.get(
# 'instruments_add_dialog_path', ''),
filter="All Files (*);;noisicaä Projects (*.emp)",
#initialFilter=self.ui_state.get(
#'instruments_add_dialog_path', ''),
)
if not path:
return
task = self._app.process.event_loop.create_task(
self.call_with_exc(self._app.createProject(path)))
def onOpenProject(self):
path, open_filter = QFileDialog.getOpenFileName(
parent=self,
@ -460,24 +482,15 @@ class EditorWindow(QMainWindow):
if not path:
return
self.openProject(path)
self._app.process.event_loop.create_task(
self.call_with_exc(self._app.openProject(path)))
def openProject(self, path):
task = self._app.process.event_loop.create_task(
self.openProjectAsync(path))
task.add_done_callback(self.openProjectDone)
def openProjectDone(self, task):
if task.exception() is not None:
raise task.exception()
async def openProjectAsync(self, path):
async def call_with_exc(self, coroutine):
try:
await self._app.project_registry.open_project(path)
return await coroutine
except:
import sys
sys.excepthook(*sys.exc_info())
# project = EditorProject(self._app)
# try:
# project.open(path)

@ -1,6 +1,7 @@
#!/usr/bin/python3
import logging
import os.path
from noisicaa import music
@ -16,6 +17,10 @@ class Project(object):
self.process_address = None
self.client = None
@property
def name(self):
return os.path.basename(self.path)
async def create_process(self):
self.process_address = await self.process_manager.call(
'CREATE_PROJECT_PROCESS', self.path)

@ -31,7 +31,7 @@ class ProjectView(QWidget):
self._app = app
self._window = window
self._project = project
self._project = project.client.project
self._sheets_widget = QStackedWidget(self)
for sheet in self._project.sheets:

Loading…
Cancel
Save