diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..4575efe --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +PySide6==6.5.3 +shiboken6==6.5.3 +Pillow==9.5.0 +PyInstaller==5.13.2 diff --git a/src/app/__init__.py b/src/app/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/app/__init__.py @@ -0,0 +1 @@ + diff --git a/src/app/main_window.py b/src/app/main_window.py new file mode 100644 index 0000000..e187778 --- /dev/null +++ b/src/app/main_window.py @@ -0,0 +1,17 @@ +from PySide6.QtCore import Qt +from PySide6.QtWidgets import QLabel, QMainWindow + +from version import APP_NAME, APP_VERSION + + +class MainWindow(QMainWindow): + def __init__(self): + super().__init__() + self.setWindowTitle("{} v{}".format(APP_NAME, APP_VERSION)) + self.resize(1280, 720) + + label = QLabel("自动合成印花服饰效果图工具\n\n工程骨架已创建") + label.setAlignment(Qt.AlignCenter) + self.setCentralWidget(label) + + self.statusBar().showMessage("就绪") diff --git a/src/app/widgets/__init__.py b/src/app/widgets/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/app/widgets/__init__.py @@ -0,0 +1 @@ + diff --git a/src/app/widgets/export_panel.py b/src/app/widgets/export_panel.py new file mode 100644 index 0000000..cf0a53d --- /dev/null +++ b/src/app/widgets/export_panel.py @@ -0,0 +1,5 @@ +from PySide6.QtWidgets import QWidget + + +class ExportPanel(QWidget): + pass diff --git a/src/app/widgets/image_canvas.py b/src/app/widgets/image_canvas.py new file mode 100644 index 0000000..60e6511 --- /dev/null +++ b/src/app/widgets/image_canvas.py @@ -0,0 +1,7 @@ +from PySide6.QtWidgets import QGraphicsScene, QGraphicsView + + +class ImageCanvas(QGraphicsView): + def __init__(self, parent=None): + super().__init__(parent) + self.setScene(QGraphicsScene(self)) diff --git a/src/app/widgets/image_list_panel.py b/src/app/widgets/image_list_panel.py new file mode 100644 index 0000000..5419ec8 --- /dev/null +++ b/src/app/widgets/image_list_panel.py @@ -0,0 +1,5 @@ +from PySide6.QtWidgets import QWidget + + +class ImageListPanel(QWidget): + pass diff --git a/src/app/widgets/template_panel.py b/src/app/widgets/template_panel.py new file mode 100644 index 0000000..4bec2b6 --- /dev/null +++ b/src/app/widgets/template_panel.py @@ -0,0 +1,5 @@ +from PySide6.QtWidgets import QWidget + + +class TemplatePanel(QWidget): + pass diff --git a/src/app/widgets/transform_panel.py b/src/app/widgets/transform_panel.py new file mode 100644 index 0000000..91698cf --- /dev/null +++ b/src/app/widgets/transform_panel.py @@ -0,0 +1,5 @@ +from PySide6.QtWidgets import QWidget + + +class TransformPanel(QWidget): + pass diff --git a/src/core/__init__.py b/src/core/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/core/__init__.py @@ -0,0 +1 @@ + diff --git a/src/core/batch.py b/src/core/batch.py new file mode 100644 index 0000000..7de39c3 --- /dev/null +++ b/src/core/batch.py @@ -0,0 +1,2 @@ +def run_batch(*args, **kwargs): + raise NotImplementedError("Batch composition is not implemented yet.") diff --git a/src/core/composer.py b/src/core/composer.py new file mode 100644 index 0000000..97c25ce --- /dev/null +++ b/src/core/composer.py @@ -0,0 +1,2 @@ +def compose_image(*args, **kwargs): + raise NotImplementedError("Image composition is not implemented yet.") diff --git a/src/core/models.py b/src/core/models.py new file mode 100644 index 0000000..ccc6493 --- /dev/null +++ b/src/core/models.py @@ -0,0 +1,18 @@ +from dataclasses import dataclass +from pathlib import Path + + +@dataclass +class ImageAsset: + path: Path + selected: bool = True + + +@dataclass +class TransformState: + x: float = 0 + y: float = 0 + width: float = 0 + height: float = 0 + rotation: float = 0 + keep_aspect_ratio: bool = True diff --git a/src/main.py b/src/main.py new file mode 100644 index 0000000..b6618bb --- /dev/null +++ b/src/main.py @@ -0,0 +1,20 @@ +import sys + +from PySide6.QtWidgets import QApplication + +from app.main_window import MainWindow +from version import APP_NAME + + +def main(): + app = QApplication(sys.argv) + app.setApplicationName(APP_NAME) + + window = MainWindow() + window.show() + + return app.exec() + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/src/resources/icons/.gitkeep b/src/resources/icons/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/resources/icons/.gitkeep @@ -0,0 +1 @@ + diff --git a/src/resources/styles/.gitkeep b/src/resources/styles/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/resources/styles/.gitkeep @@ -0,0 +1 @@ + diff --git a/src/services/__init__.py b/src/services/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/services/__init__.py @@ -0,0 +1 @@ + diff --git a/src/services/config_service.py b/src/services/config_service.py new file mode 100644 index 0000000..7658296 --- /dev/null +++ b/src/services/config_service.py @@ -0,0 +1,2 @@ +def load_config(): + return {} diff --git a/src/services/file_service.py b/src/services/file_service.py new file mode 100644 index 0000000..e8b8c0f --- /dev/null +++ b/src/services/file_service.py @@ -0,0 +1,5 @@ +SUPPORTED_IMAGE_EXTENSIONS = {".png", ".jpg", ".jpeg", ".webp"} + + +def is_supported_image(path): + return path.suffix.lower() in SUPPORTED_IMAGE_EXTENSIONS diff --git a/src/services/log_service.py b/src/services/log_service.py new file mode 100644 index 0000000..4bdc680 --- /dev/null +++ b/src/services/log_service.py @@ -0,0 +1,8 @@ +import logging + + +def setup_logging(): + logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + ) diff --git a/src/services/template_service.py b/src/services/template_service.py new file mode 100644 index 0000000..7e4bb62 --- /dev/null +++ b/src/services/template_service.py @@ -0,0 +1,2 @@ +def load_templates(): + return [] diff --git a/src/version.py b/src/version.py new file mode 100644 index 0000000..3f171ee --- /dev/null +++ b/src/version.py @@ -0,0 +1,2 @@ +APP_NAME = "自动合成印花服饰效果图工具" +APP_VERSION = "1.0.0" diff --git a/tests/.gitkeep b/tests/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tests/.gitkeep @@ -0,0 +1 @@ +