You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

207 lines
7.8 KiB
Python

2 years ago
# -*- coding: iso-8859-1 -*-
###
# Importe PyQT5
###
import shutil
import string
from PyQt5 import QtCore as qtc
from PyQt5 import QtWidgets as qtw
from PyQt5 import QtGui as qtg
from screens.ui_SteamModManager import Ui_SteamModManagerFrame
from screens.ui_ModpackTabWidget import Ui_ModpackTabWidget
from screens.ui_ModPackWidget import Ui_modPackWidget
from screens.ui_ModItemWidget import Ui_modWidget
from screens.ui_dialog_modPackDetials import Ui_Dialog_ModPackDetails
from functools import partial
class modPackItem(qtg.QStandardItem):#,qtw.QWidget
"""Custom Item f<>r ModPack Eintr<74>ge"""
packWidget: qtw.QWidget
ui:Ui_modPackWidget
def __init__(self, packName:str='', description:str='',tags:str='',image_path:str='./assets/ring.png'):
super().__init__()
fnt = qtg.QFont('Calibri',12)
fnt.setBold(True)
self.setEditable(False)
self.setForeground(qtg.QColor(0,0,0))
self.setFont(fnt)
self.setText(packName)
modPack_image = qtg.QImage(image_path)
self.setData(modPack_image.scaled(64,64,qtc.Qt.AspectRatioMode.KeepAspectRatioByExpanding),qtc.Qt.ItemDataRole.DecorationRole)
self.packWidget = qtw.QWidget()
self.ui = Ui_modPackWidget()
self.ui.setupUi(self.packWidget)
self.ui.label_modPackName.setText(packName)
self.ui.label_modDescription.setText(description)
tag_str = ""
for tag in tags.split(' ,;'):
tag_str = "["+tag+"] "
self.ui.label_modPackTags.setText(tag_str)
class modItem(qtg.QStandardItem):
"""Custom Item f<>r Mod Eintr<74>ge"""
#TODO Default Mod Item Icon einbauen
def __init__(self,txt:str='',image_path:str='./assets/gem.png'):
super().__init__()
fnt = qtg.QFont('Calibri',12)
fnt.setBold(False)
self.setEditable(False)
self.setForeground(qtg.QColor(0,0,0))
self.setFont(fnt)
self.setText(txt)
mod_image = qtg.QImage(image_path)
self.setData(mod_image.scaled(64,64,qtc.Qt.AspectRatioMode.KeepAspectRatioByExpanding),qtc.Qt.ItemDataRole.DecorationRole)
class SteamModManager_Dialog(qtw.QDialog):
window: Ui_SteamModManagerFrame
treeModel: qtg.QStandardItemModel
rootNode: qtg.QStandardItem
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.window = Ui_SteamModManagerFrame()
self.window.setupUi(self)
self.window.label_footer.setText("")
self.treeModel = qtg.QStandardItemModel()
self.rootNode = self.treeModel.invisibleRootItem()
#modPack = modPackItem('Dont Starve Together')
#testMod = modItem("TestMod")
#modPack.appendRow(testMod)
#self.rootNode.appendRow(modPack)
self.window.tView_modPacks.setModel(self.treeModel)
self.window.tView_modPacks.expandAll()
#modPackWidget = qtw.QWidget()
#ui = Ui_modPackWidget()
#ui.setupUi(modPackWidget)
#self.window.tView_modPacks.setIndexWidget(self.treeModel.index(0,0),modPackWidget)
###
# Buttons im Screen mit Funktionen verkn<6B>pfen
###
self.window.tbtn_addModPack.clicked.connect(self.handle_addModPack_clicked)
def populate_modPackTree(self):
pass
def save_modPackTree_to_xml(self):
pass
def handle_addModPack_clicked(self):
self.setFooterText("")
#debug
#modPack2 = modPackItem('Dont Starve Together2')
#self.rootNode.appendRow(modPack2)
self.modPackDetailWidget=None
self.modPackDetailWidget = qtw.QWidget()
self.modPackDetail_ui=None
self.modPackDetail_ui = Ui_Dialog_ModPackDetails()
self.modPackDetail_ui.setupUi(self.modPackDetailWidget)
self.modPackDetail_ui.tBtn_confirm.clicked.connect(partial(self.handle_modPackDetailsPopUp_confirm_clicked))
self.modPackDetail_ui.tBtn_cancel.clicked.connect(self.handle_modPackDetailsPopUp_cancel_clicked)
self.modPackDetailWidget.show()
def handle_modPackDetailsPopUp_cancel_clicked(self):
self.setFooterText("")
self.modPackDetailWidget.destroy()
def handle_modPackDetailsPopUp_confirm_clicked(self):
self.setFooterText("")
#plausibility checks
if self.modPackDetail_ui.edit_modpackName.text().strip() != "":
#ui = Ui_ModpackTabWidget()
#ui.setupUi(self.modTab)
#ui.label_modpackName.setText(self.modPackDetail_ui.edit_modpackName.text().strip())
#modVLayout = qtw.QVBoxLayout(ui.scroll_modArea)
#grpBox = qtw.QGroupBox()
#grpBox.setLayout(modVLayout)
#ui.scroll_modArea.setWidget(grpBox)
#ui.scroll_modArea.setWidgetResizable(True)
#ui.scroll_modArea.setFixedHeight(200)
#self.list_modLayouts.append(modVLayout)
#ui.label_modpackName.textChanged.connect(partial(self.setModpackName,ui))
#ui.tBtn_addmod.clicked.connect(self.addNewModItem)
#edit_modpackName = self.modPackDetailWidget.findChild(qtw.QWidget, name="edit_modpackName")
#self.window.MainTabWidget.addTab(self.modTab,edit_modpackName.text())
#self.window.MainTabWidget.addTab(customTabbar(),"+")
edit_modpackName = self.modPackDetailWidget.findChild(qtw.QWidget, name="edit_modpackName")
edit_description = self.modPackDetailWidget.findChild(qtw.QWidget, name="edit_modpack_description")
edit_tags = self.modPackDetailWidget.findChild(qtw.QWidget, name="edit_modpack_tags")
modPack = modPackItem(edit_modpackName.text(),edit_description.text(),edit_tags.text())
self.rootNode.appendRow(modPack)
self.window.tView_modPacks.setIndexWidget(self.treeModel.index(0,0),modPack.packWidget)
self.modPackDetailWidget.destroy()
else:
self.setFooterText("Error: Modpack-Name cannot be empty.")
self.modPackDetailWidget.destroy()
def setModpackName(self,modPack_ui:Ui_ModpackTabWidget):
self.window.MainTabWidget.setTabText(self.window.MainTabWidget.currentIndex(),modPack_ui.edit_modpackName.displayText())
#def setModpackDescription(self,modPack_ui:Ui_ModpackTabWidget):
# modPack_ui.edit_modpack_description.setText()
#def setModpackTags(self,modPack):
# pass
def addNewModItem(self):
self.setFooterText("")
modWidget = qtw.QWidget()
ui_mod = Ui_modWidget()
ui_mod.setupUi(modWidget)
ui_mod.tBtn_deleteMod.clicked.connect(partial(self.closeModItem,modWidget))
self.list_modLayouts[self.window.MainTabWidget.currentIndex()].addWidget(modWidget)
def closeModItem(self,widget:qtw.QWidget):
self.setFooterText("")
widget.setParent(None)
def edit_modName(self,modItem):
pass
def setFooterText(self, text: str) -> str:
""" Write footer-line for Status-Messages
Args:
text (str): Input-Text for display
Returns:
str: returns displayed text
"""
self.window.label_footer.setText(text)
return text