134 lines
5.0 KiB
Python
Executable File
134 lines
5.0 KiB
Python
Executable File
import sys
|
|
from PyQt6.QtWidgets import (
|
|
QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QPushButton,
|
|
QLabel, QLineEdit, QTextEdit, QMenuBar, QMenu, QStatusBar
|
|
)
|
|
from PyQt6.QtCore import Qt, QTimer
|
|
from PyQt6.QtGui import QColor, QPalette
|
|
|
|
from src.settings import SettingsWindow
|
|
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.setWindowTitle("DOMYWO - The Lazy Social Media Creator")
|
|
self.setGeometry(100, 100, 800, 600)
|
|
|
|
# Create central widget and layout
|
|
central_widget = QWidget()
|
|
self.setCentralWidget(central_widget)
|
|
main_layout = QVBoxLayout(central_widget)
|
|
|
|
# Status bar for logging
|
|
self.status_bar = QStatusBar()
|
|
self.setStatusBar(self.status_bar)
|
|
|
|
# Create menu bar
|
|
menubar = self.menuBar()
|
|
program_menu = menubar.addMenu("&DOMYWO")
|
|
settings_menu = menubar.addMenu("&Settings")
|
|
about_menu = menubar.addMenu("&About")
|
|
|
|
# Connect menu actions
|
|
settings_action = settings_menu.addAction("Settings")
|
|
settings_action.triggered.connect(self.open_settings)
|
|
|
|
# Start button and status
|
|
start_layout = QHBoxLayout()
|
|
self.start_button = QPushButton("Start")
|
|
self.start_button.clicked.connect(self.toggle_start)
|
|
self.start_status = QLabel("Ready")
|
|
self.start_status.setFixedHeight(25)
|
|
self.update_status_color(self.start_status, "Ready")
|
|
|
|
start_layout.addWidget(self.start_button)
|
|
start_layout.addWidget(self.start_status)
|
|
start_layout.addStretch()
|
|
|
|
main_layout.addLayout(start_layout)
|
|
|
|
# LLM Prompt Generation section
|
|
main_layout.addWidget(QLabel("LLM Prompt Generation"))
|
|
self.llm_prompt_status = self.create_status_field("Ready")
|
|
main_layout.addWidget(self.llm_prompt_status)
|
|
|
|
# Frame Generation section
|
|
main_layout.addWidget(QLabel("Start Frame Generation"))
|
|
self.frame_generation_status = self.create_status_field("Ready")
|
|
main_layout.addWidget(self.frame_generation_status)
|
|
|
|
# End Frame Generation section
|
|
main_layout.addWidget(QLabel("End Frame Generation"))
|
|
self.end_frame_status = self.create_status_field("Ready")
|
|
main_layout.addWidget(self.end_frame_status)
|
|
|
|
# Analyze Images section
|
|
main_layout.addWidget(QLabel("Analyze Images and prompt Video"))
|
|
self.analyze_status = self.create_status_field("Ready")
|
|
main_layout.addWidget(self.analyze_status)
|
|
|
|
# Image/video display area
|
|
self.image_display = QLabel("Generated content will appear here")
|
|
self.image_display.setFixedHeight(200)
|
|
self.image_display.setStyleSheet("border: 1px solid gray;")
|
|
main_layout.addWidget(self.image_display)
|
|
|
|
# Log window
|
|
main_layout.addWidget(QLabel("Log"))
|
|
self.log_window = QTextEdit()
|
|
self.log_window.setReadOnly(True)
|
|
self.log_window.setMaximumHeight(150)
|
|
main_layout.addWidget(self.log_window)
|
|
|
|
# Timer for status simulation
|
|
self.timer = QTimer()
|
|
self.timer.timeout.connect(self.simulate_progress)
|
|
self.timer.start(2000) # Update every 2 seconds
|
|
|
|
def create_status_field(self, initial_status):
|
|
layout = QHBoxLayout()
|
|
run_button = QPushButton("Run this Step only")
|
|
status_field = QLineEdit()
|
|
status_field.setReadOnly(True)
|
|
status_field.setText(initial_status)
|
|
status_field.setFixedHeight(25)
|
|
self.update_status_color(status_field, initial_status)
|
|
|
|
layout.addWidget(run_button)
|
|
layout.addWidget(status_field)
|
|
layout.addStretch()
|
|
|
|
container = QWidget()
|
|
container.setLayout(layout)
|
|
return container
|
|
|
|
def update_status_color(self, field, status):
|
|
palette = field.palette()
|
|
if "Running" in status:
|
|
palette.setColor(QPalette.ColorRole.Text, QColor("yellow"))
|
|
elif "Error" in status:
|
|
palette.setColor(QPalette.ColorRole.Text, QColor("red"))
|
|
else:
|
|
palette.setColor(QPalette.ColorRole.Text, QColor("green"))
|
|
field.setPalette(palette)
|
|
|
|
def toggle_start(self):
|
|
if self.start_button.text() == "Start":
|
|
self.start_button.setText("Stop")
|
|
self.start_status.setText("Running")
|
|
self.update_status_color(self.start_status, "Running")
|
|
self.log_window.append("Process started")
|
|
else:
|
|
self.start_button.setText("Start")
|
|
self.start_status.setText("Ready")
|
|
self.update_status_color(self.start_status, "Ready")
|
|
self.log_window.append("Process stopped")
|
|
|
|
def simulate_progress(self):
|
|
# This is just a simulation - in real app you'd update from actual processes
|
|
pass
|
|
|
|
def open_settings(self):
|
|
self.settings_window = SettingsWindow()
|
|
self.settings_window.show()
|