Clean up gui

This commit is contained in:
dazedanon 2025-07-18 17:19:35 -05:00
parent f381ec1113
commit 13ffaa42ab
2 changed files with 78 additions and 8 deletions

View file

@ -13,8 +13,8 @@ from PyQt5.QtWidgets import (
QWidget, QPushButton, QLabel, QFileDialog, QMessageBox, QProgressBar,
QTextEdit, QSplitter, QGroupBox, QStatusBar
)
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer
from PyQt5.QtGui import QIcon, QFont, QPixmap
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer, QSettings
from PyQt5.QtGui import QIcon, QFont, QPixmap, QScreen
# Import configuration widgets
from gui.config_tab import ConfigTab
@ -29,9 +29,40 @@ class DazedMTLGUI(QMainWindow):
def __init__(self):
super().__init__()
self.settings = QSettings("DazedTranslations", "DazedMTLTool")
self.init_ui()
self.setup_status_bar()
self.setup_font_scaling()
self.restore_window_state()
def restore_window_state(self):
"""Restore window geometry and state from settings."""
try:
# Restore window geometry
geometry = self.settings.value("geometry")
if geometry:
self.restoreGeometry(geometry)
# Restore window state (maximized, etc.)
window_state = self.settings.value("windowState")
if window_state:
self.restoreState(window_state)
except Exception as e:
print(f"Warning: Could not restore window state: {e}")
def save_window_state(self):
"""Save window geometry and state to settings."""
try:
self.settings.setValue("geometry", self.saveGeometry())
self.settings.setValue("windowState", self.saveState())
except Exception as e:
print(f"Warning: Could not save window state: {e}")
def closeEvent(self, event):
"""Handle application close event."""
self.save_window_state()
event.accept()
def setup_font_scaling(self):
"""Set up font scaling based on configuration."""
@ -75,7 +106,23 @@ class DazedMTLGUI(QMainWindow):
def init_ui(self):
"""Initialize the user interface."""
self.setWindowTitle("DazedMTLTool - Visual Translation Interface")
self.setGeometry(100, 100, 1200, 800)
# Get screen geometry and set window size more responsively
screen = QApplication.primaryScreen()
screen_geometry = screen.availableGeometry()
# Set window size to 80% of screen size, with reasonable minimums
window_width = max(1200, int(screen_geometry.width() * 0.8))
window_height = max(800, int(screen_geometry.height() * 0.8))
# Center the window on screen
x = (screen_geometry.width() - window_width) // 2
y = (screen_geometry.height() - window_height) // 2
self.setGeometry(x, y, window_width, window_height)
# Set minimum size to prevent the window from becoming too small
self.setMinimumSize(1000, 600)
# Set window icon if available
icon_path = Path("screens/tool.png")
@ -102,7 +149,10 @@ class DazedMTLGUI(QMainWindow):
# Add widgets to splitter
main_splitter.addWidget(self.tab_widget)
main_splitter.addWidget(self.log_viewer)
main_splitter.setSizes([800, 400])
# Set proportional sizes instead of fixed pixel sizes
main_splitter.setStretchFactor(0, 2) # Main content gets 2/3
main_splitter.setStretchFactor(1, 1) # Log viewer gets 1/3
# Set main layout
layout = QVBoxLayout()
@ -340,7 +390,22 @@ def main():
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True)
QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
# Additional DPI handling for better compatibility
if hasattr(Qt, 'AA_DisableWindowContextHelpButton'):
QApplication.setAttribute(Qt.AA_DisableWindowContextHelpButton, True)
# Set high DPI scale factor policy
if hasattr(QApplication, 'setHighDpiScaleFactorRoundingPolicy'):
QApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
app = QApplication(sys.argv)
# Additional screen-aware settings
screen = app.primaryScreen()
if screen:
dpi = screen.logicalDotsPerInch()
print(f"Screen DPI: {dpi}")
except Exception as e:
print(f"Failed to create QApplication: {e}")
print("Make sure PyQt5 is properly installed:")

View file

@ -519,7 +519,9 @@ class TranslationTab(QWidget):
output_widget = self.create_output_files_widget()
file_management_splitter.addWidget(output_widget)
file_management_splitter.setSizes([300, 300])
# Set proportional sizes instead of fixed pixel sizes
file_management_splitter.setStretchFactor(0, 1)
file_management_splitter.setStretchFactor(1, 1)
layout.addWidget(file_management_splitter)
# Console log at the bottom
@ -628,7 +630,8 @@ class TranslationTab(QWidget):
input_layout = QVBoxLayout()
self.input_list = QListWidget()
self.input_list.setMaximumHeight(120)
self.input_list.setMinimumHeight(80)
self.input_list.setMaximumHeight(150)
input_layout.addWidget(self.input_list)
input_buttons = QHBoxLayout()
@ -655,7 +658,8 @@ class TranslationTab(QWidget):
output_layout = QVBoxLayout()
self.output_list = QListWidget()
self.output_list.setMaximumHeight(120)
self.output_list.setMinimumHeight(80)
self.output_list.setMaximumHeight(150)
output_layout.addWidget(self.output_list)
output_buttons = QHBoxLayout()
@ -721,7 +725,8 @@ class TranslationTab(QWidget):
self.log_display = QTextEdit()
self.log_display.setReadOnly(True)
self.log_display.setFont(QFont("Consolas", 9))
self.log_display.setMinimumHeight(200)
self.log_display.setMinimumHeight(150)
self.log_display.setMaximumHeight(300)
self.log_display.setStyleSheet("""
QTextEdit {
background-color: #1e1e1e;