54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
import traceback
|
|
from PyQt5.QtWidgets import QMainWindow, QVBoxLayout, QWidget, QApplication, QMessageBox
|
|
from PyQt5.QtCore import QTimer
|
|
|
|
from model import Project
|
|
from business import ProjectManager
|
|
from ui.project.project_panel import ProjectPanel
|
|
from ui.project.new_project_dialog import NewProjectDialog
|
|
from ui.welcome.welcome_dialog import WelcomeDialog
|
|
|
|
class MainWindow(QMainWindow):
|
|
|
|
def __init__(self, projectManager : ProjectManager):
|
|
super().__init__()
|
|
self.__projectManager = projectManager
|
|
self.setupUi()
|
|
QTimer.singleShot(0, self.showWelcomeDialog)
|
|
|
|
def setupUi(self):
|
|
self.projectPanel = ProjectPanel()
|
|
|
|
layout = QVBoxLayout()
|
|
layout.addWidget(self.projectPanel)
|
|
|
|
cwidget = QWidget()
|
|
cwidget.setLayout(layout)
|
|
|
|
self.setCentralWidget(cwidget)
|
|
|
|
def showWelcomeDialog(self):
|
|
# Show welcome dialog
|
|
welcome = WelcomeDialog(self.__projectManager, self)
|
|
if welcome.exec() > 0:
|
|
if welcome.resultAction == WelcomeDialog.NEW_PROJECT:
|
|
self.newProject()
|
|
elif welcome.resultAction == WelcomeDialog.OPEN_PROJECT:
|
|
self.openProject(welcome.projectToOpen)
|
|
|
|
def newProject(self):
|
|
dialog = NewProjectDialog(self.__projectManager, self)
|
|
if dialog.exec() > 0:
|
|
self.loadProject(dialog.project)
|
|
|
|
def openProject(self, projectPath : str = None):
|
|
try:
|
|
project = self.__projectManager.openProject(projectPath)
|
|
except Exception as ex:
|
|
print("Failed to open project: ", traceback.format_exc())
|
|
QMessageBox.critical(self,
|
|
self.tr('An error occurred'),
|
|
self.tr('The project could not be open.'))
|
|
|
|
def loadProject(self, project : Project):
|
|
pass |