Files
dusk/tools/editortool/maptool.py
Dominic Masters 9a59c22288
All checks were successful
Build Dusk / build-linux (push) Successful in 53s
Build Dusk / build-psp (push) Successful in 56s
Try load chunk data.
2025-11-16 15:02:18 -06:00

77 lines
2.0 KiB
Python

import os
from PyQt5.QtWidgets import QMainWindow, QWidget, QHBoxLayout, QMessageBox
from editortool.map.glwidget import GLWidget
from editortool.map.chunkpanel import ChunkPanel
from editortool.map.mapinfopanel import MapInfoPanel
from editortool.map.mapdata import MapData
from editortool.map.toolbar import MapToolbar
from editortool.map.statusbar import StatusBar
class MapWindow(QMainWindow):
def __init__(self):
super().__init__()
# Subclasses
self.mapData = MapData()
# Window setup
self.setWindowTitle("Dusk Map Editor")
self.resize(1280, 720)
# Components
self.toolbar = MapToolbar(self)
central = QWidget()
self.setCentralWidget(central)
mainLayout = QHBoxLayout(central)
# Left panel (ChunkPanel)
self.chunkPanel = ChunkPanel()
leftWidget = QWidget()
leftWidget.setLayout(self.chunkPanel.layout())
leftWidget.setFixedWidth(200)
mainLayout.addWidget(leftWidget)
# Center panel (GLWidget + controls)
self.glWidget = GLWidget(self)
mainLayout.addWidget(self.glWidget, stretch=3)
# Right panel (MapInfoPanel)
self.mapInfoPanel = MapInfoPanel(self)
rightWidget = self.mapInfoPanel
rightWidget.setFixedWidth(250)
mainLayout.addWidget(rightWidget)
# Status bar
self.statusBar = StatusBar(self)
self.setStatusBar(self.statusBar)
def generateData(self):
objOut = {}
self.fileSaving.invoke(objOut)
self.mapData.data = objOut
return objOut
def closeEvent(self, event):
if not self.mapData.isDirty():
event.accept()
return
reply = QMessageBox.question(
self,
"Unsaved Changes",
"You have unsaved changes. Do you want to save before closing?",
QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel,
QMessageBox.Save
)
if reply == QMessageBox.Save:
self.saveFile()
if self.mapData.isDirty():
event.ignore()
return
elif reply == QMessageBox.Cancel:
event.ignore()
return
event.accept()