switch themes without restarting

This commit is contained in:
cidoku 2025-06-21 19:27:17 -04:00
parent 8b2cf307bf
commit 96d051adfe
4 changed files with 27 additions and 14 deletions

View File

@ -17,12 +17,10 @@ self.gametab_pair.setObjectName("gametab_pair")
self.gametab_misc.setObjectName("gametab_misc")
self.gametab_msgqueue.setObjectName("gametab_msgqueue")
self.gametab_music.setObjectName("gametab_music")
self.areaitems.setObjectName("areaitems")
self.gametab_players.setObjectName("gametab_player")
self.demoitems.setObjectName("demoitems")
self.gamewindow.setStyleSheet("""
QWidget#main, QSlider, QCheckBox, QLabel#musiclabel, QLabel#sfxlabel, QLabel#blipslabel, QLabel#notmutedlabel, QLabel#mutedlabel, QLabel#iniswapinfo, QLabel#pairoffset_l, QLabel#ypairoffset_l, QLabel#pair_order_l
QWidget#main, QSlider, QCheckBox, QLabel#musiclabel, QLabel#sfxlabel, QLabel#blipslabel, QLabel#notmutedlabel, QLabel#mutedlabel, QLabel#iniswapinfo, QLabel#pairoffset_l, QLabel#ypairoffset_l, QLabel#pair_order_l, QWidget#gametab_log, QWidget#gametab_evidence, QWidget#gametab_mute, QWidget#gametab_iniswap, QWidget#gametab_pair, QWidget#gametab_misc, QWidget#gametab_msgqueue, QWidget#gametab_music, QWidget#gametab_player
{
color: #eeeeee;
background: #111111;
@ -35,6 +33,8 @@ self.gamewindow.setStyleSheet("""
"""
)
self.found_songitem_color = "#444444"
self.width = 820
self.height = 730

View File

@ -1,3 +1,5 @@
self.gamewindow.setStyleSheet("")
self.width = 820
self.height = 730
@ -42,6 +44,7 @@ self.ooclogin.move(814 - (self.ooclogin.size().width()), self.oocinput.y() + sel
self.musicareatabs.setGeometry(814 - 288, 468, 288, 258)
self.musicitems.setGeometry(8, 8, 268, 184)
self.musicsearch.setGeometry(8, self.musicitems.size().height() + 16, 268, self.musicsearch.sizeHint().height())
self.found_songitem_color = "#80ff80"
self.iclog.setGeometry(8, 8, 714 - 304 - 22, 212)

View File

@ -1225,6 +1225,8 @@ class GUI(QtGui.QWidget):
self.musicsearch.setPlaceholderText("Search...")
self.musicsearch.textChanged.connect(self.onMusicSearch)
self.found_songitem_color = "background: #80FF80;"
self.areaitems = QtGui.QListWidget()
self.areaitems.itemDoubleClicked.connect(self.onAreaClick)
@ -1583,6 +1585,7 @@ class GUI(QtGui.QWidget):
self.playsfx = 1
self.demo_recorder = None
self.demo_playing = False
self.musiclist = {}
self.slide_enabled = bool(get_option("General", "slide", False))
self.slide_available = False
@ -1621,13 +1624,16 @@ class GUI(QtGui.QWidget):
# Finally, load the theme
self.width = 820
self.height = 730
self.load_theme()
def load_theme(self):
theme = get_option("General", "theme", "default")
try:
with open(AO2XPpath+"ao2xp_themes/"+theme+"/theme.py") as t:
exec t
except Exception as e:
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)
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 reset_offsets(self):
self.pairoffset.setValue(0)
@ -1755,7 +1761,7 @@ class GUI(QtGui.QWidget):
songitem = QtGui.QListWidgetItem()
songitem.setText(song)
if exists(unicode(AOpath + 'sounds/music/' + fname.replace("<and>","&").lower())):
songitem.setBackgroundColor(QtGui.QColor(128, 255, 128))
songitem.setBackgroundColor(QtGui.QColor(self.found_songitem_color))
self.musicitems.addItem(songitem)
else:
self.allMusic()
@ -3671,7 +3677,7 @@ class GUI(QtGui.QWidget):
songitem = QtGui.QListWidgetItem()
songitem.setText(song)
if exists(unicode(AOpath + 'sounds/music/' + fname.replace("<and>","&").lower())):
songitem.setBackgroundColor(QtGui.QColor(128, 255, 128))
songitem.setBackgroundColor(QtGui.QColor(self.found_songitem_color))
#else:
#songitem.setBackgroundColor(QtGui.QColor(255, 128, 128))
self.musicitems.addItem(songitem)

View File

@ -145,8 +145,8 @@ class Settings(QtGui.QDialog):
autojoinarea_layout.addWidget(self.autojoinarea)
self.autoconnect.addItem("Always show server list")
if exists(AOpath+'serverlist.txt'):
with open(AOpath+'serverlist.txt') as file:
if exists('serverlist.txt'):
with open('serverlist.txt') as file:
for server in [line.rstrip().split(':') for line in file]:
self.autoconnect.addItem(server[-1])
autoconnect_layout.addWidget(autoconnect_label)
@ -238,6 +238,7 @@ class Settings(QtGui.QDialog):
self.savelogs_state = False
self.combinelogs_state = False
self.savedemos_state = False
self.theme_state = ""
def showSettings(self):
if exists("AO2XP.ini"):
@ -254,10 +255,10 @@ class Settings(QtGui.QDialog):
except:
self.defaultshowname.setText(ini.read_ini(self.inifile, "General", "showname"))
self.enableslide.setChecked(ini.read_ini_bool(self.inifile, "General", "slide", False))
self.allowdownload_chars.setChecked(ini.read_ini_bool(self.inifile, "General", "download characters"))
self.allowdownload_sounds.setChecked(ini.read_ini_bool(self.inifile, "General", "download sounds"))
self.allowdownload_chars.setChecked(ini.read_ini_bool(self.inifile, "General", "download characters", False))
self.allowdownload_sounds.setChecked(ini.read_ini_bool(self.inifile, "General", "download sounds", False))
self.allowdownload_music.setChecked(ini.read_ini_bool(self.inifile, "General", "download music"))
self.allowdownload_evidence.setChecked(ini.read_ini_bool(self.inifile, "General", "download evidence"))
self.allowdownload_evidence.setChecked(ini.read_ini_bool(self.inifile, "General", "download evidence", False))
self.currtheme.setCurrentIndex(self.themes.index(ini.read_ini(self.inifile, "General", "theme", "default")))
self.autoconnect.setCurrentIndex(ini.read_ini_int(self.inifile, "General", "auto connect", -1) + 1)
self.autopick.setEditText(ini.read_ini(self.inifile, "General", "auto pick").decode('utf-8'))
@ -300,6 +301,7 @@ class Settings(QtGui.QDialog):
self.savelogs_state = self.savetolog.isChecked()
self.combinelogs_state = self.savetolog_combine.isChecked()
self.savedemos_state = self.savedemos.isChecked()
self.theme_state = self.currtheme.currentText()
self.tabs.setCurrentIndex(0)
self.show()
@ -343,6 +345,8 @@ class Settings(QtGui.QDialog):
self.gamewindow.gamewidget.text_wait_time = self.textstaytime.value()
self.gamewindow.gamewidget.slide_enabled = self.enableslide.isChecked()
if not self.theme_state == self.currtheme.currentText():
self.gamewindow.gamewidget.load_theme()
if not self.gamewindow.gamewidget.demo_playing:
if not (self.savelogs_state == self.savetolog.isChecked() and self.combinelogs_state == self.savetolog_combine.isChecked()):
@ -369,8 +373,8 @@ class Settings(QtGui.QDialog):
if code == 0:
subprocess.Popen(["./AO2XPupdat"])
_exit(0)
elif osname == "Darwin": # bundle
os.chdir(Cocoa.NSBundle.mainBundle().resourcePath()) # return to Resources folder
#elif osname == "Darwin": # bundle
# os.chdir(Cocoa.NSBundle.mainBundle().resourcePath()) # return to Resources folder
def onReloadAudio(self):
audio.free()