Made checks for non-qt pesterchum themes

This commit is contained in:
anne 2023-07-20 20:40:29 +02:00
parent e6e8f4c1ef
commit e51a1490b8

View file

@ -109,7 +109,6 @@ class ThemeManager(QtCore.QObject):
if reply.error() != QtNetwork.QNetworkReply.NetworkError.NoError: if reply.error() != QtNetwork.QNetworkReply.NetworkError.NoError:
PchumLog.error("An error occured contacting the repository: %s" % reply.error()) PchumLog.error("An error occured contacting the repository: %s" % reply.error())
self.errored.emit("An error occured contacting the repository: %s" % reply.error()) self.errored.emit("An error occured contacting the repository: %s" % reply.error())
print([reply.error()])
return return
try: try:
original_url = reply.request().url().url() original_url = reply.request().url().url()
@ -126,17 +125,32 @@ class ThemeManager(QtCore.QObject):
self.database = json.loads(as_json) self.database = json.loads(as_json)
self.database_entries = {} self.database_entries = {}
if not self.is_database_valid(): if not self.is_database_valid():
self.database = {}
PchumLog.error('Incorrect database format, missing "entries"') PchumLog.error('Incorrect database format, missing "entries"')
self.errored.emit('Incorrect database format, missing "entries"') self.errored.emit('Incorrect database format, missing "entries"')
return return
self.database_entries = {}
# Filter out non-QTchum client themes, like for godot
for dbindex in range(len(self.database['entries'])-1, -1, -1): # Iterate over the database in reverse
dbitem = self.database['entries'][dbindex]
if dbitem['client'] != "pesterchum":
PchumLog.debug("Removed database theme %s because it is not compatible with this client" % dbitem['name'])
self.database['entries'].pop(dbindex)
# Make an easy lookup table instead of the array we get from the DB
for dbitem in self.database['entries']: for dbitem in self.database['entries']:
self.database_entries[dbitem['name']] = dbitem self.database_entries[dbitem['name']] = dbitem
self.database_refreshed.emit(self.database) self.database_refreshed.emit(self.database)
except json.decoder.JSONDecodeError as e: except json.decoder.JSONDecodeError as e:
PchumLog.error("Could not decode JSON: %s" % e) PchumLog.error("Could not decode theme database JSON: %s" % e)
self.errored.emit("Could not decode JSON: %s" % e) self.errored.emit("Could not decode theme database JSON: %s" % e)
return return
except KeyError as e:
self.database = {}
self.database_entries = {}
PchumLog.error("Vital key missing from theme database: %s" % e)
self.errored.emit("Vital key missing from theme database: %s" % e)
return
def _handle_downloaded_zip(self, zip_buffer, theme): def _handle_downloaded_zip(self, zip_buffer, theme):
@ -216,7 +230,7 @@ class ThemeManagerWidget(QtWidgets.QWidget):
self.lbl_theme_name = QtWidgets.QLabel("Click a theme to get started") self.lbl_theme_name = QtWidgets.QLabel("Click a theme to get started")
self.lbl_theme_name.setTextInteractionFlags(_flag_selectable) self.lbl_theme_name.setTextInteractionFlags(_flag_selectable)
self.lbl_theme_name.setStyleSheet("QLabel { font-size: 16px; font-weight:bold;}") self.lbl_theme_name.setStyleSheet("QLabel { font-size: 16px; font-weight:bold;}")
self.lbl_theme_name.setWordWrap(False) self.lbl_theme_name.setWordWrap(True)
layout_vbox_scroll_insides.addWidget(self.lbl_theme_name) layout_vbox_scroll_insides.addWidget(self.lbl_theme_name)
# Author name # Author name