view tilerswift @ 104:dd2a309eefa9

refactor: move widgets into their own module This allows multiple ROM canvases to be opened at once, and each one has its own palette, which can change the palette in the tile picker.
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Sun, 15 Sep 2019 22:03:03 -0400
parents 2d1ffeafb003
children e3ffae4d7528
line wrap: on
line source

#!/usr/bin/python3
import sys

from PyQt5 import QtCore as QC, QtWidgets as QW

from exceptions import ROMOpeningError
from widgets import TilePicker, ROMDockable


class MainWindow(QW.QMainWindow):
    def __init__(self):
        super().__init__()

        self.resize(QC.QSize(1200, 800))
        self.rom_dockables = []

        bar = self.menuBar()
        file = bar.addMenu("&File")
        open_action = file.addAction("&Open")
        quit_action = file.addAction("&Quit")
        open_action.triggered.connect(self.open_rom)
        quit_action.triggered.connect(app.quit)

        self.tile_picker = TilePicker()

        tile_picker_scroll = QW.QScrollArea(self)
        tile_picker_scroll.setWidget(self.tile_picker)

        self.setCentralWidget(tile_picker_scroll)

    def open_rom(self):
        filename, filetype = QW.QFileDialog.getOpenFileName(
            self,
            "Open ROM", "", "NES Files (*.nes)"
        )
        try:
            new_rom_dockable = ROMDockable(filename, filetype, self.tile_picker)
        except ROMOpeningError:
            pass

        try:
            last_docked = self.rom_dockables[-1]
            self.tabifyDockWidget(last_docked, new_rom_dockable)
        except IndexError:
            self.addDockWidget(QC.Qt.LeftDockWidgetArea, new_rom_dockable)

        new_rom_dockable.show()
        new_rom_dockable.raise_()
        self.rom_dockables.append(new_rom_dockable)


app = QW.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()