improve theme loading from ini

This commit is contained in:
cidoku 2025-10-11 23:20:04 -03:00
parent 6289b2a834
commit de782b05c4
3 changed files with 114 additions and 8 deletions

View File

@ -2,7 +2,7 @@
# window size is defined at the end of the file
# IC viewport
_scale = 2.5
_scale = 2
self.viewport.setGeometry(0, 0, 256 * _scale, 192 * _scale)
# Textbox

View File

@ -1769,7 +1769,7 @@ class GUI(QtGui.QWidget):
"change_character": self.btnChangeChar,
"call_mod": self.btnCallMod,
"reload_theme": self.btnReloadTheme,
"ic_chat_name": self.shownameEdit,
"ao2_ic_chat_name": self.shownameEdit,
"settings": self.btnSettings,
"ao2_chatbox": self.chatbox,
"ao2_ic_chat_message": self.ICChatInput,
@ -1845,14 +1845,19 @@ class GUI(QtGui.QWidget):
stack.setAutoFillBackground(True)
stack.setAttribute(QtCore.Qt.WA_NoSystemBackground, False)
with open(AO2XPpath + "ao2xp_themes/" + theme + "/theme.py") as t:
# pyThemes
pyTheme = AO2XPpath + "ao2xp_themes/" + theme + "/theme.py"
if exists(pyTheme):
with open(pyTheme) as t:
exec t
else:
self._themeCommon()
if switching:
# This is to reset the colors on the music list. Not necessary on startup
self.onMusicSearch("")
self.viewportScale = self.viewport.height() / float(192)
self.court.resize(self.viewport.size())
self.bench.resize(self.viewport.size())
self.effectView.resize()
@ -1863,13 +1868,13 @@ class GUI(QtGui.QWidget):
self.sideChar.resize()
self.slideWitness.resize()
self.slideSpeaker.resize()
self.ao2text.setGeometry(self.text.geometry())
self.ao2text.setStyleSheet(self.text.styleSheet())
self.sliDemoSeekbar.setGeometry(self.ICChatInput.geometry())
# Theme chatbox
chatboxPixmap = QtGui.QPixmap(testPath(
AO2XPpath + "ao2xp_themes/%s/chatmed.png" % theme,
AO2XPpath + "ao2xp_themes/%s/chat.png" % theme,
AO2XPpath + 'themes/default/chatmed.png'
))
@ -1908,7 +1913,6 @@ class GUI(QtGui.QWidget):
with open(courtroomDesign) as f:
for keys in f.read().split("\n"):
if not keys or "=" not in keys or keys[0] == ";": continue
key, value = keys.split("=")
fonts[key.strip()] = value.replace(" ", "").split(',')
@ -1975,6 +1979,108 @@ class GUI(QtGui.QWidget):
# QtGui.QMessageBox.critical(None, "Unable to load theme", "There was a problem loading the current theme \"%s\":\n\n%s." % (theme, e))
# os._exit(-2)
def _themeCommon(self):
# Textbox
self.name.setStyleSheet('color: white')
self.text.setStyleSheet("background-color: rgba(0, 0, 0, 0); color: white;")
self.nameFontPointSize = 12
self.textFontPointSize = 24
# IC input and demo slider
viewportRight = max(self.viewport.x() + self.viewport.width(), 512)
# IC options
gameTabsHeight = self.gameTabs.height() - self.gameTabs.findChild(QtGui.QTabBar).height()
self.ICLog.setGeometry(0, 0, self.gameTabs.width(), gameTabsHeight)
self.boxPrivateEvidence.setGeometry(8, 8, 192, 20)
self.evidenceDescription.setGeometry(8, 108, self.gameTabs.width() - 22, 112)
self.evidenceImage.setGeometry(self.evidenceDescription.x() + self.evidenceDescription.width() - 70, 8, 70, 70)
self.boxEvidence.setGeometry(8, 8, self.evidenceImage.x() - 16, 20)
self.btnEvidenceAdd.move(8, 32)
self.btnEvidenceAdd.resize(30, 26)
evidenceadd_size = self.btnEvidenceAdd.size()
self.btnEvidenceEdit.resize(evidenceadd_size)
self.btnEvidenceDelete.resize(evidenceadd_size)
self.btnEvidenceLoad.resize(evidenceadd_size)
self.btnEvidenceSave.resize(evidenceadd_size)
self.btnEvidenceMoveToPrivate.resize(evidenceadd_size)
self.btnEvidenceMoveAllToPrivate.resize(evidenceadd_size)
self.btnEvidenceMoveToGlobal.resize(evidenceadd_size)
self.btnEvidenceMoveAllToGlobal.resize(evidenceadd_size)
self.btnEvidenceSwitchToPrivate.resize(evidenceadd_size)
self.btnEvidenceSwitchToGlobal.resize(evidenceadd_size)
self.btnEvidenceEdit.move(3 + self.btnEvidenceAdd.x() + self.btnEvidenceAdd.size().width(), self.btnEvidenceAdd.y())
self.btnEvidenceDelete.move(3 + self.btnEvidenceEdit.x() + self.btnEvidenceEdit.size().width(), self.btnEvidenceAdd.y())
self.btnEvidenceMoveToPrivate.move(3 + self.btnEvidenceDelete.x() + self.btnEvidenceDelete.size().width(), self.btnEvidenceAdd.y())
self.btnEvidenceMoveAllToPrivate.move(3 + self.btnEvidenceMoveToPrivate.x() + self.btnEvidenceMoveToPrivate.size().width(), self.btnEvidenceAdd.y())
self.btnEvidenceMoveToGlobal.move(3 + self.btnEvidenceDelete.x() + self.btnEvidenceDelete.size().width(), self.btnEvidenceAdd.y())
self.btnEvidenceMoveAllToGlobal.move(3 + self.btnEvidenceMoveToPrivate.x() + self.btnEvidenceMoveToPrivate.size().width(), self.btnEvidenceAdd.y())
self.btnEvidenceSwitchToPrivate.move(3 + self.btnEvidenceMoveAllToPrivate.x() + self.btnEvidenceMoveAllToPrivate.size().width(), self.btnEvidenceAdd.y())
self.btnEvidenceSwitchToGlobal.move(3 + self.btnEvidenceMoveAllToPrivate.x() + self.btnEvidenceMoveAllToPrivate.size().width(), self.btnEvidenceAdd.y())
self.btnEvidenceLoad.move(3 + self.btnEvidenceSwitchToPrivate.x() + self.btnEvidenceSwitchToPrivate.size().width(), self.btnEvidenceAdd.y())
self.btnEvidenceSave.move(3 + self.btnEvidenceLoad.x() + self.btnEvidenceLoad.size().width(), self.btnEvidenceAdd.y())
self.btnEvidencePresent.move(self.evidenceDescription.x() + self.evidenceDescription.width() / 2 - self.btnEvidencePresent.button_off.size().width() / 2, self.evidenceDescription.y() - self.btnEvidencePresent.button_off.size().height())
self.queueItems.setGeometry(8, 8, self.gameTabs.width() - 22, gameTabsHeight - self.btnQueueRemove.sizeHint().height() - 20)
self.btnQueueRemove.resize(self.btnQueueRemove.sizeHint())
self.btnQueueRemove.move(8, self.queueItems.size().height() + 16)
self.btnQueueClear.move(self.btnQueueRemove.x() + self.btnQueueRemove.size().width(), self.btnQueueRemove.y())
self.lblNotMuted.move(8, 8)
self.unmutedList.setGeometry(8, 24, 160, 192)
self.mutedList.setGeometry(238, 24, 160, 192)
self.lblMuted.move(238 + self.mutedList.size().width() - self.mutedList.size().width() - 8, 8)
self.btnMute.setGeometry((714 - 304) / 2 - 26, 64, 48, 32)
self.btnUnmute.setGeometry((714 - 304) / 2 - 26, 128, 48, 32)
self.iniSwapList.setGeometry(8, 8, self.gameTabs.width() - 16, self.iniSwapList.sizeHint().height())
self.btnIniSwapConfirm.resize(self.btnIniSwapRefresh.sizeHint())
self.btnIniSwapConfirm.move(8, 64)
self.btnIniSwapReset.resize(self.btnIniSwapRefresh.sizeHint())
self.btnIniSwapReset.move(8, self.btnIniSwapConfirm.y() + self.btnIniSwapConfirm.size().height() + 8)
self.btnIniSwapRefresh.resize(self.btnIniSwapRefresh.sizeHint())
self.btnIniSwapRefresh.move(8, self.btnIniSwapReset.y() + self.btnIniSwapReset.size().height() + 8)
self.lblIniSwapInfo.setGeometry(8, 32, 192, 24)
self.cbPair.setGeometry(16, 16, 128, 24)
self.boxPair.setGeometry(112, 20, 192, 18)
self.sliPairOffset.setGeometry(114, 48, 192, 24)
self.lblPairOffset.move(self.sliPairOffset.x() - 88, self.sliPairOffset.y()+4)
self.sliPairOffsetY.setGeometry(114, 72, 24, 112)
self.lblPairOffsetY.move(self.lblPairOffset.x(), self.lblPairOffset.y()+64)
self.btnPairOffsetReset.move(self.sliPairOffset.x() + self.sliPairOffset.size().width() + 8, self.lblPairOffsetY.y())
self.lblPairOrder.move(self.lblPairOffset.x(), self.lblPairOffset.y()+144)
self.boxPairOrder.setGeometry(self.sliPairOffset.x(), self.lblPairOrder.y()-4, 80, self.btnPairOffsetReset.sizeHint().height())
self.cbSpacing.move(self.cbMockText.x(), self.cbMockText.y()+24)
self.cbAutoCaps.move(self.cbSpacing.x(), self.cbSpacing.y()+24)
## Sidebar
oocBottom = self.OOCNameInput.y() + self.OOCNameInput.height() # 268
self.OOCLogin.resize(48, 20)
self.OOCLogin.move(viewportRight + 14 + self.OOCLog.size().width() - (self.OOCLogin.size().width()), oocBottom + 6)
# Server tabs
serverTabsHeight = self.serverTabs.height() - self.serverTabs.findChild(QtGui.QTabBar).height()
self.musicItems.setGeometry(8, 8, self.serverTabs.width() - 20, serverTabsHeight - self.musicSearch.sizeHint().height() - 20)
self.btnMusicOptions.setGeometry(self.musicItems.x() + self.musicItems.width() - self.btnMusicOptions.sizeHint().width(), self.musicItems.size().height() + 16, self.btnMusicOptions.sizeHint().width(), self.musicSearch.sizeHint().height())
self.musicSearch.setGeometry(8, self.btnMusicOptions.y(), self.musicItems.width() - self.btnMusicOptions.width() - 4, self.musicSearch.sizeHint().height())
self.playerItems.setGeometry(8, 8, self.serverTabs.width() - 20, serverTabsHeight - self.btnPlayerPair.sizeHint().height() - 20)
self.btnPlayerPair.resize(self.btnPlayerPair.sizeHint())
self.btnPlayerKick.resize(self.btnPlayerKick.sizeHint())
self.btnPlayerBan.resize(self.btnPlayerBan.sizeHint())
self.btnPlayerPair.move(8, self.playerItems.size().height() + 16)
self.btnPlayerKick.move(8 + self.btnPlayerPair.x() + self.btnPlayerPair.size().width(), self.playerItems.size().height() + 16)
self.btnPlayerBan.move(8 + self.btnPlayerKick.x() + self.btnPlayerKick.size().width(), self.playerItems.size().height() + 16)
self.backgroundItems.setGeometry(8, 8, self.serverTabs.width() - 20, serverTabsHeight - self.btnBackgroundsRefresh.sizeHint().height() - 20)
self.backgroundSearch.setGeometry(8, self.backgroundItems.size().height() + 16, self.serverTabs.width() - 20 - self.btnBackgroundsRefresh.sizeHint().width() - 20, self.backgroundSearch.sizeHint().height())
self.btnBackgroundsRefresh.resize(self.btnBackgroundsRefresh.sizeHint().width(), self.backgroundSearch.height())
self.btnBackgroundsRefresh.move(self.backgroundItems.width() - self.btnBackgroundsRefresh.width(), self.backgroundItems.size().height() + 16)
def resetPairOffsets(self):
self.sliPairOffset.setValue(0)
self.sliPairOffsetY.setValue(0)

View File

@ -106,7 +106,7 @@ class Settings(QtGui.QDialog):
self.cbThemes = QtGui.QComboBox()
self.themes = listdir(AO2XPpath + "ao2xp_themes")
for theme in self.themes:
if exists(AO2XPpath + "ao2xp_themes/"+theme+"/theme.py"):
if exists(AO2XPpath + "ao2xp_themes/"+theme+"/theme.py") or exists(AO2XPpath + "ao2xp_themes/"+theme+"/courtroom_design.ini"):
self.cbThemes.addItem(theme)
layTheme.addWidget(lblTheme)
layTheme.addWidget(self.cbThemes)