load courtroom_design.ini (wip)
This commit is contained in:
parent
22e576c775
commit
bf6889a957
@ -2,7 +2,7 @@
|
|||||||
# window size is defined at the end of the file
|
# window size is defined at the end of the file
|
||||||
|
|
||||||
# IC viewport
|
# IC viewport
|
||||||
_scale = 2
|
_scale = 2.5
|
||||||
self.viewport.setGeometry(0, 0, 256 * _scale, 192 * _scale)
|
self.viewport.setGeometry(0, 0, 256 * _scale, 192 * _scale)
|
||||||
|
|
||||||
# Textbox
|
# Textbox
|
||||||
|
|||||||
127
gameview.py
127
gameview.py
@ -140,7 +140,7 @@ class MusicDownloadThread(QtCore.QThread):
|
|||||||
try:
|
try:
|
||||||
response = urlopen(request, timeout=5)
|
response = urlopen(request, timeout=5)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print "[audio] There's no response, aborting. Details below:"
|
print "[audio] HTTP request failed, aborting... Details below:"
|
||||||
print "[audio]", e, url
|
print "[audio]", e, url
|
||||||
self.quit()
|
self.quit()
|
||||||
return
|
return
|
||||||
@ -171,7 +171,7 @@ class MusicDownloadThread(QtCore.QThread):
|
|||||||
self.caller.stream = create_string_buffer(stream)
|
self.caller.stream = create_string_buffer(stream)
|
||||||
self.finished_signal.emit(file_length)
|
self.finished_signal.emit(file_length)
|
||||||
else:
|
else:
|
||||||
print "[audio] There's no response, aborting..."
|
print "[audio] Stream is empty, aborting..."
|
||||||
self.quit()
|
self.quit()
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -811,6 +811,7 @@ class EditEvidenceDialog(QtGui.QDialog):
|
|||||||
self.cancel.clicked.connect(self.onCancelClicked)
|
self.cancel.clicked.connect(self.onCancelClicked)
|
||||||
self.cancel.move(264 + 16, 384 - self.cancel.size().height() - 2)
|
self.cancel.move(264 + 16, 384 - self.cancel.size().height() - 2)
|
||||||
self.choosepic = QtGui.QComboBox(self)
|
self.choosepic = QtGui.QComboBox(self)
|
||||||
|
self.choosepic.setEditable(True)
|
||||||
self.choosepic.setGeometry(self.eviname.x() + self.eviname.size().width() - 128 - 84, self.eviname.y() + 70 - 32, 128, 24)
|
self.choosepic.setGeometry(self.eviname.x() + self.eviname.size().width() - 128 - 84, self.eviname.y() + 70 - 32, 128, 24)
|
||||||
self.filenames = []
|
self.filenames = []
|
||||||
self.browse = QtGui.QPushButton(self)
|
self.browse = QtGui.QPushButton(self)
|
||||||
@ -1310,6 +1311,7 @@ class GUI(QtGui.QWidget):
|
|||||||
self.cbPair = QtGui.QCheckBox(self.tabPair)
|
self.cbPair = QtGui.QCheckBox(self.tabPair)
|
||||||
self.cbPair.setChecked(False)
|
self.cbPair.setChecked(False)
|
||||||
self.boxPair = QtGui.QComboBox(self.tabPair)
|
self.boxPair = QtGui.QComboBox(self.tabPair)
|
||||||
|
self.boxPair.setEditable(True)
|
||||||
self.sliPairOffset = QtGui.QSlider(QtCore.Qt.Horizontal, self.tabPair)
|
self.sliPairOffset = QtGui.QSlider(QtCore.Qt.Horizontal, self.tabPair)
|
||||||
self.sliPairOffset.setRange(-100, 100)
|
self.sliPairOffset.setRange(-100, 100)
|
||||||
self.sliPairOffset.setValue(0)
|
self.sliPairOffset.setValue(0)
|
||||||
@ -1468,6 +1470,11 @@ class GUI(QtGui.QWidget):
|
|||||||
self.btnCallMod.setText('Call mod')
|
self.btnCallMod.setText('Call mod')
|
||||||
self.btnCallMod.clicked.connect(self.onCallModClicked)
|
self.btnCallMod.clicked.connect(self.onCallModClicked)
|
||||||
|
|
||||||
|
self.btnReloadTheme = QtGui.QPushButton(self)
|
||||||
|
self.btnReloadTheme.setText('Reload theme')
|
||||||
|
self.btnReloadTheme.clicked.connect(self.onReloadThemeClicked)
|
||||||
|
self.btnReloadTheme.setVisible(False)
|
||||||
|
|
||||||
self.btnSettings = QtGui.QPushButton("Settings", self)
|
self.btnSettings = QtGui.QPushButton("Settings", self)
|
||||||
self.btnSettings.clicked.connect(self.gamewindow.showSettings)
|
self.btnSettings.clicked.connect(self.gamewindow.showSettings)
|
||||||
|
|
||||||
@ -1703,28 +1710,124 @@ class GUI(QtGui.QWidget):
|
|||||||
self.viewportScale = 1
|
self.viewportScale = 1
|
||||||
self.nameFontPointSize = 12
|
self.nameFontPointSize = 12
|
||||||
self.textFontPointSize = 24
|
self.textFontPointSize = 24
|
||||||
self.emotePageGeometry = (526, 384, 288, 98)
|
|
||||||
self.loadTheme()
|
self.loadTheme()
|
||||||
|
|
||||||
def loadTheme(self, switching=False):
|
def loadTheme(self, switching=False):
|
||||||
theme = getOption("General", "theme", "default")
|
theme = getOption("General", "theme", "default")
|
||||||
try:
|
try:
|
||||||
stylesheet = ""
|
stylesheet = ""
|
||||||
|
self.emotePageGeometry = []
|
||||||
self.gamewindow.setStyleSheet("")
|
self.gamewindow.setStyleSheet("")
|
||||||
self.chatbox.resetGeometry()
|
self.chatbox.resetGeometry()
|
||||||
|
self.btnReloadTheme.setVisible(False)
|
||||||
|
|
||||||
self.btnRealization.setPixmaps(theme)
|
self.btnRealization.setPixmaps(theme)
|
||||||
self.btnShake.setPixmaps(theme)
|
self.btnShake.setPixmaps(theme)
|
||||||
self.btnObjection.setPixmaps(theme)
|
self.btnObjection.setPixmaps(theme)
|
||||||
self.btnTakeThat.setPixmaps(theme)
|
self.btnTakeThat.setPixmaps(theme)
|
||||||
self.btnHoldIt.setPixmaps(theme)
|
self.btnHoldIt.setPixmaps(theme)
|
||||||
|
|
||||||
|
# Design
|
||||||
|
courtroomDesign = AO2XPpath + "ao2xp_themes/" + theme + '/courtroom_design.ini'
|
||||||
|
if exists(courtroomDesign):
|
||||||
|
design = {}
|
||||||
|
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("=")
|
||||||
|
design[key.strip()] = value.replace(" ", "").split(',')
|
||||||
|
|
||||||
|
geometry = {
|
||||||
|
"viewport": self.viewport,
|
||||||
|
"ic_chatlog": self.gameTabs,
|
||||||
|
"server_chatlog": self.OOCLog,
|
||||||
|
"ooc_chat_name": self.OOCNameInput,
|
||||||
|
"ooc_chat_message": self.OOCInput,
|
||||||
|
"music_label": self.lblMusicVolume,
|
||||||
|
"sfx_label": self.lblSoundVolume,
|
||||||
|
"blip_label": self.lblBlipsVolume,
|
||||||
|
"music_slider": self.sliMusicVolume,
|
||||||
|
"sfx_slider": self.sliSoundVolume,
|
||||||
|
"blip_slider": self.sliBlipsVolume,
|
||||||
|
"emote_dropdown": self.boxEmotes,
|
||||||
|
"effects_dropdown": self.boxEffects,
|
||||||
|
"pos_dropdown": self.boxPositions,
|
||||||
|
"text_color": self.boxColors,
|
||||||
|
"pre_no_interrupt": self.cbNoInterrupt,
|
||||||
|
"change_character": self.btnChangeChar,
|
||||||
|
"call_mod": self.btnCallMod,
|
||||||
|
"reload_theme": self.btnReloadTheme,
|
||||||
|
"ic_chat_name": self.shownameEdit,
|
||||||
|
"settings": self.btnSettings,
|
||||||
|
"ao2_chatbox": self.chatbox,
|
||||||
|
"ao2_ic_chat_message": self.ICChatInput,
|
||||||
|
"message": self.text,
|
||||||
|
"showname": self.name,
|
||||||
|
"music_list": self.serverTabs
|
||||||
|
}
|
||||||
|
|
||||||
|
move = {
|
||||||
|
"pre": self.cbPreanim,
|
||||||
|
"flip": self.cbFlip,
|
||||||
|
"additive": self.cbAdditive,
|
||||||
|
"slide_enable": self.cbSlide,
|
||||||
|
"hold_it": self.btnHoldIt,
|
||||||
|
"objection": self.btnObjection,
|
||||||
|
"take_that": self.btnTakeThat,
|
||||||
|
"custom_objection": self.btnCustomObjection,
|
||||||
|
"emote_left": self.btnPrevEmotePage,
|
||||||
|
"emote_right": self.btnNextEmotePage,
|
||||||
|
"realization": self.btnRealization,
|
||||||
|
"screenshake": self.btnShake,
|
||||||
|
"not_guilty": self.btnNotGuilty,
|
||||||
|
"guilty": self.btnGuilty,
|
||||||
|
"witness_testimony": self.btnWitnessTestimony,
|
||||||
|
"cross_examination": self.btnCrossExamination,
|
||||||
|
}
|
||||||
|
|
||||||
|
bars = {
|
||||||
|
"defense_bar": self.btnDefenseBar,
|
||||||
|
"prosecution_bar": self.btnProsecutionBar
|
||||||
|
}
|
||||||
|
|
||||||
|
for e in geometry.keys():
|
||||||
|
if e in design:
|
||||||
|
geometry[e].setGeometry(*[int(x) for x in design[e]])
|
||||||
|
|
||||||
|
for e in move.keys():
|
||||||
|
if e in design:
|
||||||
|
move[e].move(*[int(x) for x in design[e]][0:2])
|
||||||
|
|
||||||
|
for e in bars.keys():
|
||||||
|
if e in design:
|
||||||
|
bars[e].moveBar(*[int(x) for x in design[e]][0:2])
|
||||||
|
|
||||||
|
if "emotes" in design:
|
||||||
|
self.emotePageGeometry = [int(x) for x in design["emotes"]]
|
||||||
|
else:
|
||||||
|
self.emotePageGeometry = [0, 0, 0, 0]
|
||||||
|
|
||||||
|
if "emote_button_spacing" in design:
|
||||||
|
self.emotePageGeometry += [int(x) for x in design["emote_button_spacing"]]
|
||||||
|
else:
|
||||||
|
self.emotePageGeometry += [1, 1]
|
||||||
|
|
||||||
|
if "found_song_color" in design:
|
||||||
|
self.foundSongItemColor = QtGui.QColor(*[int(x) for x in design["found_song_color"]])
|
||||||
|
|
||||||
|
self.btnReloadTheme.setVisible(True)
|
||||||
|
else:
|
||||||
|
# Try to load ao2xp theme
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
with open(AO2XPpath + "ao2xp_themes/" + theme + "/theme.py") as t:
|
with open(AO2XPpath + "ao2xp_themes/" + theme + "/theme.py") as t:
|
||||||
exec t
|
exec t
|
||||||
if switching:
|
if switching:
|
||||||
# This is to reset the colors on the music list. Not necessary on startup
|
# This is to reset the colors on the music list. Not necessary on startup
|
||||||
self.onMusicSearch("")
|
self.onMusicSearch("")
|
||||||
|
|
||||||
self.viewportScale = self.viewport.height() / float(192)
|
self.viewportScale = self.viewport.height() / float(192)
|
||||||
|
|
||||||
self.court.resize(self.viewport.size())
|
self.court.resize(self.viewport.size())
|
||||||
@ -1740,6 +1843,7 @@ class GUI(QtGui.QWidget):
|
|||||||
|
|
||||||
self.ao2text.setGeometry(self.text.geometry())
|
self.ao2text.setGeometry(self.text.geometry())
|
||||||
self.ao2text.setStyleSheet(self.text.styleSheet())
|
self.ao2text.setStyleSheet(self.text.styleSheet())
|
||||||
|
self.sliDemoSeekbar.setGeometry(self.ICChatInput.geometry())
|
||||||
|
|
||||||
# Theme chatbox
|
# Theme chatbox
|
||||||
chatboxPixmap = QtGui.QPixmap(testPath(
|
chatboxPixmap = QtGui.QPixmap(testPath(
|
||||||
@ -1774,6 +1878,16 @@ class GUI(QtGui.QWidget):
|
|||||||
self.presentedEvidence.setGeometry(self.viewport.x() + 16, self.viewport.y() + 16, 70 * self.viewportScale, 70 * self.viewportScale)
|
self.presentedEvidence.setGeometry(self.viewport.x() + 16, self.viewport.y() + 16, 70 * self.viewportScale, 70 * self.viewportScale)
|
||||||
|
|
||||||
# Theme fonts
|
# Theme fonts
|
||||||
|
courtroomFonts = AO2XPpath + "ao2xp_themes/" + theme + '/courtroom_fonts.ini'
|
||||||
|
if exists(courtroomFonts):
|
||||||
|
fonts = {}
|
||||||
|
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(',')
|
||||||
|
|
||||||
fontDb = None
|
fontDb = None
|
||||||
nameFont = None
|
nameFont = None
|
||||||
textFont = None
|
textFont = None
|
||||||
@ -1792,6 +1906,8 @@ class GUI(QtGui.QWidget):
|
|||||||
label.resize(self.viewport.width(), label.sizeHint().height())
|
label.resize(self.viewport.width(), label.sizeHint().height())
|
||||||
label.setFont(nameFont)
|
label.setFont(nameFont)
|
||||||
|
|
||||||
|
# Load emote buttons
|
||||||
|
# TODO: Buggy on theme switch / reload
|
||||||
xMod_count = yMod_count = 0
|
xMod_count = yMod_count = 0
|
||||||
left, top, width, height, hSpacing, vSpacing = self.emotePageGeometry
|
left, top, width, height, hSpacing, vSpacing = self.emotePageGeometry
|
||||||
columns = (width - 40) / (hSpacing + 40) + 1
|
columns = (width - 40) / (hSpacing + 40) + 1
|
||||||
@ -2515,6 +2631,9 @@ class GUI(QtGui.QWidget):
|
|||||||
self.tcp.send("ZZ#"+reason.toUtf8() + "#%")
|
self.tcp.send("ZZ#"+reason.toUtf8() + "#%")
|
||||||
else:
|
else:
|
||||||
self.tcp.send("ZZ#%")
|
self.tcp.send("ZZ#%")
|
||||||
|
|
||||||
|
def onReloadThemeClicked(self):
|
||||||
|
self.loadTheme()
|
||||||
|
|
||||||
def onChangeCharClicked(self):
|
def onChangeCharClicked(self):
|
||||||
if self.demoPlaying:
|
if self.demoPlaying:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user