From 2b8132995023b0bd47bf85f07e7b878c3af80eac Mon Sep 17 00:00:00 2001 From: harmacist Date: Sat, 27 Mar 2021 15:38:30 -0500 Subject: [PATCH] Further GUI Prototyping --- GlowstoneBlock.py | 48 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/GlowstoneBlock.py b/GlowstoneBlock.py index bb78c34..f0ab683 100644 --- a/GlowstoneBlock.py +++ b/GlowstoneBlock.py @@ -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_())