Further GUI Prototyping

This commit is contained in:
harmacist 2021-03-27 15:38:30 -05:00
parent 68e9f57d22
commit 2b81329950

View File

@ -1,8 +1,7 @@
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QTreeView
from PyQt5.Qt import QStandardItemModel, QStandardItem
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtCore import pyqtSlot, QAbstractListModel
import json
import GlowstoneDust
@ -10,28 +9,53 @@ import GlowstoneDust
class App(QMainWindow):
def __init__(self):
def __init__(self, target_dir='.'):
super().__init__()
self.title = 'Project Glowstone: Block Edition'
self.left = 300
self.top = 300
self.width = 640
self.height = 480
self.initUI()
self.target_dir = target_dir
self.init_ui()
def initUI(self):
def init_ui(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button = QPushButton('Button Label Go Here', self)
button.setToolTip('Example Button')
button.setGeometry(100, 70, 200, 80)
# button.move(100, 70)
button.clicked.connect(self.make_tree)
self.treeView = QTreeView()
self.treeView.setHeaderHidden(True)
self.update_modlist(list(GlowstoneDust.get_modpack_info(self.target_dir)))
self.statusBar().showMessage('Message')
self.show()
def update_modlist(self, modlist=None):
self.treeModel = QStandardItemModel()
self.rootNode = self.treeModel.invisibleRootItem()
self.modlist = modlist or []
print(json.dumps(self.modlist, indent=4))
mc = QStandardItem('Minecraft')
mc.setEditable(False)
self.rootNode.appendRow(mc)
for mod in self.modlist:
mod_row = QStandardItem(mod['modid'])
for dependant_mod in mod.get('dependencies', []):
if dependant_mod is dict:
mod_row.appendRow(QStandardItem(dependant_mod.get('modid')))
else:
mod_row.appendRow(QStandardItem(dependant_mod))
mc.appendRow(mod_row)
self.treeView.setModel(self.treeModel)
self.treeView.expandAll()
self.setCentralWidget(self.treeView)
@pyqtSlot()
def on_click(self):
print('PyQt5 button click')
@ -45,5 +69,5 @@ class App(QMainWindow):
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
ex = App(target_dir=r"C:\Users\VY Canis Majoris\AppData\Roaming\.moddedminecraft\1.12\1.12.2\Sinkhole\mods")
sys.exit(app.exec_())