rscder-pub/rscder/gui/project.py
2022-05-25 15:31:52 +08:00

131 lines
4.9 KiB
Python

from pathlib import Path
from PyQt5.QtWidgets import QDialog, QFileDialog, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QLabel, QMessageBox
from PyQt5.QtGui import QIcon, QIntValidator
from PyQt5.QtCore import Qt
from rscder.utils.project import Project
from rscder.utils.setting import Settings
class Create(QDialog):
def __init__(self, parent=None) -> None:
super().__init__(parent)
self.setWindowTitle(self.tr('创建项目'))
self.setWindowIcon(QIcon(":/icons/logo.png"))
self.file = str(Path(Settings.General().last_path))
self.name = '未命名'
self.max_memory = Settings.Project().max_memory
self.cell_size = Settings.Project().cell_size
file_label = QLabel('项目目录:')
file_label.setFixedWidth(100)
file_input = QLineEdit()
file_input.setPlaceholderText('项目目录')
file_input.setToolTip('项目目录')
file_input.setReadOnly(True)
file_input.setText(self.file)
self.file_input = file_input
file_open = QPushButton('...', self)
file_open.setFixedWidth(30)
file_open.clicked.connect(self.open_file)
name_label = QLabel('项目名称:')
name_label.setFixedWidth(100)
name_input = QLineEdit()
name_input.setPlaceholderText('项目名称')
name_input.setToolTip('项目名称')
name_input.setText(self.name)
self.name_input = name_input
name_input_layout = QHBoxLayout()
name_input_layout.addWidget(name_label)
name_input_layout.addWidget(name_input)
file_input_layout = QHBoxLayout()
file_input_layout.addWidget(file_label)
file_input_layout.addWidget(file_input)
file_input_layout.addWidget(file_open)
cell_size_label = QLabel('格网大小:')
cell_size_label.setFixedWidth(100)
cell_size_x_label = QLabel('X:')
cell_size_y_label = QLabel('Y:')
cell_size_x_input = QLineEdit()
cell_size_y_input = QLineEdit()
cell_size_x_input.setPlaceholderText('X')
cell_size_x_input.setValidator(QIntValidator())
cell_size_y_input.setPlaceholderText('Y')
cell_size_y_input.setValidator(QIntValidator())
cell_size_x_input.setToolTip('X')
cell_size_y_input.setToolTip('Y')
cell_size_x_input.setText(str(self.cell_size[0]))
cell_size_y_input.setText(str(self.cell_size[1]))
self.cell_size_x_input = cell_size_x_input
self.cell_size_y_input = cell_size_y_input
cell_input_layout = QHBoxLayout()
cell_input_layout.addWidget(cell_size_label)
cell_input_layout.addWidget(cell_size_x_label)
cell_input_layout.addWidget(cell_size_x_input)
cell_input_layout.addWidget(cell_size_y_label)
cell_input_layout.addWidget(cell_size_y_input)
max_memory_label = QLabel('最大文件大小 (MB):')
max_memory_label.setFixedWidth(100)
max_memory_input = QLineEdit()
max_memory_input.setPlaceholderText('最大文件大小')
max_memory_input.setToolTip('最大文件大小')
max_memory_input.setText(str(self.max_memory))
max_memory_input.setValidator(QIntValidator())
self.max_memory_input = max_memory_input
ok_button = QPushButton('确定')
cancel_button = QPushButton('取消')
ok_button.clicked.connect(self.ok)
cancel_button.clicked.connect(self.cancel)
button_layout = QHBoxLayout()
button_layout.setDirection(QHBoxLayout.RightToLeft)
button_layout.addWidget(ok_button, 0, Qt.AlignRight)
button_layout.addWidget(cancel_button, 0, Qt.AlignRight)
main_layout = QVBoxLayout()
main_layout.addLayout(file_input_layout)
main_layout.addLayout(name_input_layout)
main_layout.addLayout(cell_input_layout)
main_layout.addLayout(button_layout)
self.setLayout(main_layout)
def open_file(self):
file = QFileDialog.getExistingDirectory(self, '选择文件夹', self.file)
if file:
self.file = file
Settings.General().last_path = self.file
self.file_input.setText(self.file)
def ok(self):
self.name = self.name_input.text()
self.max_memory = self.max_memory_input.text()
self.cell_size = (self.cell_size_x_input.text(), self.cell_size_y_input.text())
if self.name == '':
QMessageBox.warning(self, 'Warning', '请选择项目目录!')
return
if self.max_memory == '':
QMessageBox.warning(self, 'Warning', '请输入最大文件大小!')
return
if self.cell_size == ('', ''):
QMessageBox.warning(self, 'Warning', '请输入格网大小!')
return
self.max_memory = int(self.max_memory)
self.cell_size = (int(self.cell_size[0]), int(self.cell_size[1]))
self.accept()
def cancel(self):
self.reject()