Files
dusk/tools/editortool/maptool.py
Dominic Masters be422d0a1e
All checks were successful
Build Dusk / build-psp (push) Successful in 1m5s
Build Dusk / build-linux (push) Successful in 1m2s
More langtool improvements
2025-11-16 00:04:28 -06:00

100 lines
2.9 KiB
Python

import sys
import os
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtWidgets import (
QApplication, QMainWindow, QWidget,
QHBoxLayout, QVBoxLayout, QPushButton,
QLabel, QSlider, QDialog, QRadioButton, QDialogButtonBox,
QAction, QFileDialog, QLineEdit
)
from editortool.map.glwidget import GLWidget
class MapWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Dusk Map Editor")
self.resize(1280, 720)
# File menu setup
menubar = self.menuBar()
file_menu = menubar.addMenu("File")
action_new = QAction("New", self)
action_open = QAction("Open", self)
action_save = QAction("Save", self)
action_save_as = QAction("Save As", self)
file_menu.addAction(action_new)
file_menu.addAction(action_open)
file_menu.addAction(action_save)
file_menu.addAction(action_save_as)
action_new.triggered.connect(self.newFile)
action_open.triggered.connect(self.openFile)
action_save.triggered.connect(self.saveFile)
action_save_as.triggered.connect(self.saveFileAs)
self.current_file = None
central = QWidget()
self.setCentralWidget(central)
main_layout = QHBoxLayout(central)
# Left panel
left_panel = QVBoxLayout()
chunk_info_label = QLabel("CHUNK INFO")
left_panel.addWidget(chunk_info_label)
left_panel.addStretch()
# Right panel
right_panel = QVBoxLayout()
map_info_label = QLabel("Map Information")
right_panel.addWidget(map_info_label)
map_title_label = QLabel("Map Title")
map_title_input = QLineEdit()
right_panel.addWidget(map_title_label)
right_panel.addWidget(map_title_input)
right_panel.addStretch()
# Add panels to main layout
left_widget = QWidget()
left_widget.setLayout(left_panel)
left_widget.setFixedWidth(200)
main_layout.addWidget(left_widget)
# Center panel (GLWidget + controls)
self.gl_widget = GLWidget(self)
main_layout.addWidget(self.gl_widget, stretch=3)
right_widget = QWidget()
right_widget.setLayout(right_panel)
right_widget.setFixedWidth(250)
main_layout.addWidget(right_widget)
def newFile(self):
# Implement new file logic here
self.current_file = None
# ...clear relevant data...
def openFile(self):
default_dir = os.path.join(os.path.dirname(__file__), '../../assets/map/')
fname, _ = QFileDialog.getOpenFileName(self, "Open JSON File", default_dir, "JSON Files (*.json)")
if fname:
self.current_file = fname
# ...load file logic...
def saveFile(self):
if self.current_file:
# ...save logic...
pass
else:
self.saveFileAs()
def saveFileAs(self):
default_dir = os.path.join(os.path.dirname(__file__), '../../assets/map/')
fname, _ = QFileDialog.getSaveFileName(self, "Save JSON File As", default_dir, "JSON Files (*.json)")
if fname:
self.current_file = fname
# ...save logic...