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,61 @@
import traceback
from PyQt5.QtWidgets import QDialog, QWidget, QDialogButtonBox, QFileDialog, QPushButton, QMessageBox
from model import Project
from business import ProjectManager
from properties.config import PROJECT_EXTENSION
from ui.project.new_project_dialog_ui import Ui_NewProjectDialog
class NewProjectDialog(QDialog):
def __init__(self, projectManager : ProjectManager, parent : QWidget = None):
super().__init__(parent)
self.__projectManager = projectManager
self.project : Project = None
self.setupUi()
self.setupActions()
self.validate()
def setupUi(self):
self.ui = Ui_NewProjectDialog()
self.ui.setupUi(self)
self.__buttonOk : QPushButton = self.ui.buttonBox.button(QDialogButtonBox.Ok)
def setupActions(self):
self.ui.buttonBrowse.pressed.connect(self.browsePressed)
self.ui.textProjectPath.textChanged.connect(self.projectPathChanged)
self.ui.buttonBox.accepted.connect(self.okPressed)
def validate(self):
valid = True
if not self.ui.textProjectPath.text():
valid = False
self.__buttonOk.setEnabled(valid)
def browsePressed(self):
path = QFileDialog.getSaveFileName(
self,
self.tr('New project'),
'',
self.tr(f'Project files (*.{PROJECT_EXTENSION});;All files (*.*)'))
if path[0]:
self.ui.textProjectPath.setText(path[0])
def projectPathChanged(self):
self.validate()
def okPressed(self):
try:
path = self.ui.textProjectPath.text()
self.project = self.__projectManager.newProject(path)
self.accept()
except Exception as ex:
print("Failed to create project: ", traceback.format_exc())
QMessageBox.critical(self,
self.tr('An error occurred'),
self.tr('The project could not be created in the given location.'))

View File

@ -0,0 +1,239 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>NewProjectDialog</class>
<widget class="QDialog" name="NewProjectDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>486</width>
<height>299</height>
</rect>
</property>
<property name="windowTitle">
<string>New project</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QWidget" name="_panelProjectPath" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="labelProjectPath">
<property name="text">
<string>Project path:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="textProjectPath">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="buttonBrowse">
<property name="text">
<string>&amp;Browse...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupVideoSettings">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>2</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Video settings</string>
</property>
<layout class="QFormLayout">
<property name="leftMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>20</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelColorDepth">
<property name="minimumSize">
<size>
<width>110</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Color depth:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboColorDepth">
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<item>
<property name="text">
<string>8 bits/channel</string>
</property>
</item>
<item>
<property name="text">
<string>16 bits/channel</string>
</property>
</item>
<item>
<property name="text">
<string>32 bits/channel (float)</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="labelColorSpace">
<property name="minimumSize">
<size>
<width>110</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Color space:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboColorSpace">
<item>
<property name="text">
<string>sRGB</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupAudioSettings">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Audio settings</string>
</property>
<layout class="QFormLayout" name="formLayout_2">
<property name="leftMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>20</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="labelSampleRate">
<property name="minimumSize">
<size>
<width>110</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Sample rate:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboSampleRate">
<property name="currentIndex">
<number>2</number>
</property>
<item>
<property name="text">
<string>32 kHz</string>
</property>
</item>
<item>
<property name="text">
<string>44.1 kHz</string>
</property>
</item>
<item>
<property name="text">
<string>48 kHz</string>
</property>
</item>
<item>
<property name="text">
<string>88.2 kHz</string>
</property>
</item>
<item>
<property name="text">
<string>96 kHz</string>
</property>
</item>
<item>
<property name="text">
<string>192 kHz</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>NewProjectDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@ -0,0 +1,124 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'ui/project/new_project_dialog.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_NewProjectDialog(object):
def setupUi(self, NewProjectDialog):
NewProjectDialog.setObjectName("NewProjectDialog")
NewProjectDialog.resize(486, 299)
self.verticalLayout = QtWidgets.QVBoxLayout(NewProjectDialog)
self.verticalLayout.setObjectName("verticalLayout")
self._panelProjectPath = QtWidgets.QWidget(NewProjectDialog)
self._panelProjectPath.setObjectName("_panelProjectPath")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self._panelProjectPath)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.labelProjectPath = QtWidgets.QLabel(self._panelProjectPath)
self.labelProjectPath.setObjectName("labelProjectPath")
self.horizontalLayout_3.addWidget(self.labelProjectPath)
self.textProjectPath = QtWidgets.QLineEdit(self._panelProjectPath)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.textProjectPath.sizePolicy().hasHeightForWidth())
self.textProjectPath.setSizePolicy(sizePolicy)
self.textProjectPath.setObjectName("textProjectPath")
self.horizontalLayout_3.addWidget(self.textProjectPath)
self.buttonBrowse = QtWidgets.QPushButton(self._panelProjectPath)
self.buttonBrowse.setObjectName("buttonBrowse")
self.horizontalLayout_3.addWidget(self.buttonBrowse)
self.verticalLayout.addWidget(self._panelProjectPath)
self.groupVideoSettings = QtWidgets.QGroupBox(NewProjectDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(2)
sizePolicy.setHeightForWidth(self.groupVideoSettings.sizePolicy().hasHeightForWidth())
self.groupVideoSettings.setSizePolicy(sizePolicy)
self.groupVideoSettings.setObjectName("groupVideoSettings")
self.formlayout = QtWidgets.QFormLayout(self.groupVideoSettings)
self.formlayout.setContentsMargins(20, -1, 20, -1)
self.formlayout.setObjectName("formlayout")
self.labelColorDepth = QtWidgets.QLabel(self.groupVideoSettings)
self.labelColorDepth.setMinimumSize(QtCore.QSize(110, 0))
self.labelColorDepth.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.labelColorDepth.setObjectName("labelColorDepth")
self.formlayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.labelColorDepth)
self.comboColorDepth = QtWidgets.QComboBox(self.groupVideoSettings)
self.comboColorDepth.setMinimumSize(QtCore.QSize(150, 0))
self.comboColorDepth.setObjectName("comboColorDepth")
self.comboColorDepth.addItem("")
self.comboColorDepth.addItem("")
self.comboColorDepth.addItem("")
self.formlayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.comboColorDepth)
self.labelColorSpace = QtWidgets.QLabel(self.groupVideoSettings)
self.labelColorSpace.setMinimumSize(QtCore.QSize(110, 0))
self.labelColorSpace.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.labelColorSpace.setObjectName("labelColorSpace")
self.formlayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.labelColorSpace)
self.comboColorSpace = QtWidgets.QComboBox(self.groupVideoSettings)
self.comboColorSpace.setObjectName("comboColorSpace")
self.comboColorSpace.addItem("")
self.formlayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.comboColorSpace)
self.verticalLayout.addWidget(self.groupVideoSettings)
self.groupAudioSettings = QtWidgets.QGroupBox(NewProjectDialog)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(1)
sizePolicy.setHeightForWidth(self.groupAudioSettings.sizePolicy().hasHeightForWidth())
self.groupAudioSettings.setSizePolicy(sizePolicy)
self.groupAudioSettings.setObjectName("groupAudioSettings")
self.formLayout_2 = QtWidgets.QFormLayout(self.groupAudioSettings)
self.formLayout_2.setContentsMargins(20, -1, 20, -1)
self.formLayout_2.setObjectName("formLayout_2")
self.labelSampleRate = QtWidgets.QLabel(self.groupAudioSettings)
self.labelSampleRate.setMinimumSize(QtCore.QSize(110, 0))
self.labelSampleRate.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.labelSampleRate.setObjectName("labelSampleRate")
self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.labelSampleRate)
self.comboSampleRate = QtWidgets.QComboBox(self.groupAudioSettings)
self.comboSampleRate.setObjectName("comboSampleRate")
self.comboSampleRate.addItem("")
self.comboSampleRate.addItem("")
self.comboSampleRate.addItem("")
self.comboSampleRate.addItem("")
self.comboSampleRate.addItem("")
self.comboSampleRate.addItem("")
self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.comboSampleRate)
self.verticalLayout.addWidget(self.groupAudioSettings)
self.buttonBox = QtWidgets.QDialogButtonBox(NewProjectDialog)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.verticalLayout.addWidget(self.buttonBox)
self.retranslateUi(NewProjectDialog)
self.comboSampleRate.setCurrentIndex(2)
self.buttonBox.rejected.connect(NewProjectDialog.reject)
QtCore.QMetaObject.connectSlotsByName(NewProjectDialog)
def retranslateUi(self, NewProjectDialog):
_translate = QtCore.QCoreApplication.translate
NewProjectDialog.setWindowTitle(_translate("NewProjectDialog", "New project"))
self.labelProjectPath.setText(_translate("NewProjectDialog", "Project path:"))
self.buttonBrowse.setText(_translate("NewProjectDialog", "&Browse..."))
self.groupVideoSettings.setTitle(_translate("NewProjectDialog", "Video settings"))
self.labelColorDepth.setText(_translate("NewProjectDialog", "Color depth:"))
self.comboColorDepth.setItemText(0, _translate("NewProjectDialog", "8 bits/channel"))
self.comboColorDepth.setItemText(1, _translate("NewProjectDialog", "16 bits/channel"))
self.comboColorDepth.setItemText(2, _translate("NewProjectDialog", "32 bits/channel (float)"))
self.labelColorSpace.setText(_translate("NewProjectDialog", "Color space:"))
self.comboColorSpace.setItemText(0, _translate("NewProjectDialog", "sRGB"))
self.groupAudioSettings.setTitle(_translate("NewProjectDialog", "Audio settings"))
self.labelSampleRate.setText(_translate("NewProjectDialog", "Sample rate:"))
self.comboSampleRate.setItemText(0, _translate("NewProjectDialog", "32 kHz"))
self.comboSampleRate.setItemText(1, _translate("NewProjectDialog", "44.1 kHz"))
self.comboSampleRate.setItemText(2, _translate("NewProjectDialog", "48 kHz"))
self.comboSampleRate.setItemText(3, _translate("NewProjectDialog", "88.2 kHz"))
self.comboSampleRate.setItemText(4, _translate("NewProjectDialog", "96 kHz"))
self.comboSampleRate.setItemText(5, _translate("NewProjectDialog", "192 kHz"))