from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QListWidget, QListWidgetItem from editortool.cutscene.cutsceneitem import CutsceneItemEditor import sys class CutsceneToolWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Dusk Cutscene Editor") self.setGeometry(100, 100, 800, 600) self.nextItemNumber = 1 # Track next available number # Main layout: horizontal split central = QWidget() mainLayout = QHBoxLayout(central) self.setCentralWidget(central) # Timeline leftPanel = QWidget() leftLayout = QVBoxLayout(leftPanel) self.timelineList = QListWidget() self.timelineList.setSelectionMode(QListWidget.SingleSelection) leftLayout.addWidget(QLabel("Cutscene Timeline")) leftLayout.addWidget(self.timelineList) btnLayout = QHBoxLayout() self.addBtn = QPushButton("Add") self.removeBtn = QPushButton("Remove") btnLayout.addWidget(self.addBtn) btnLayout.addWidget(self.removeBtn) leftLayout.addLayout(btnLayout) mainLayout.addWidget(leftPanel, 2) # Property editor self.editorPanel = QWidget() self.editorLayout = QVBoxLayout(self.editorPanel) self.itemEditor = None # Only create when needed mainLayout.addWidget(self.editorPanel, 3) # Events self.timelineList.currentItemChanged.connect(self.onItemSelected) self.addBtn.clicked.connect(self.addCutsceneItem) self.removeBtn.clicked.connect(self.removeCutsceneItem) def addCutsceneItem(self): name = f"Cutscene item {self.nextItemNumber}" item = QListWidgetItem(name) self.timelineList.addItem(item) self.timelineList.setCurrentItem(item) self.nextItemNumber += 1 def removeCutsceneItem(self): row = self.timelineList.currentRow() if row >= 0: self.timelineList.takeItem(row) # Remove editor if nothing selected if self.timelineList.currentItem() is None: if self.itemEditor: self.editorLayout.removeWidget(self.itemEditor) self.itemEditor.deleteLater() self.itemEditor = None def onItemSelected(self, current, previous): if current: if not self.itemEditor: self.itemEditor = CutsceneItemEditor() self.editorLayout.addWidget(self.itemEditor) return if not self.itemEditor: return self.editorLayout.removeWidget(self.itemEditor) self.itemEditor.deleteLater() self.itemEditor = None if __name__ == "__main__": app = QApplication(sys.argv) window = CutsceneToolWindow() window.show() sys.exit(app.exec_())