def showSettings(self): self.show() if os.path.exists("aaio.ini"): self.inifile.read("aaio.ini") try: self.defaultoocname.setText( ini.read_ini("aaio.ini", "General", "OOC name").decode("utf-8")) except: self.defaultoocname.setText( ini.read_ini("aaio.ini", "General", "OOC name")) chatbox_ind = self.chatboximage_dropdown.findText( ini.read_ini("aaio.ini", "General", "Chatbox image")) if chatbox_ind > 0: self.chatboximage_dropdown.setCurrentIndex(chatbox_ind) self.ms_lineedit.setText( ini.read_ini("aaio.ini", "MasterServer", "IP")) else: self.defaultoocname.setText("") self.chatbox_dropdown.setCurrentIndex(0) self.ms_lineedit.setText("aaio-ms.aceattorneyonline.com:27011") self.tabs.setCurrentIndex(0) self.show()
def showChar(self): prefix = ini.read_ini("data/characters/"+self.ao_app.charlist[self.ind]+"/char.ini", "Options", "imgprefix")+"-" prefix = "" if prefix == "-" else prefix scale = True if os.path.exists("data/characters/"+self.ao_app.charlist[self.ind]+"/char_icon.png"): pix = QPixmap("data/characters/"+self.ao_app.charlist[self.ind]+"/char_icon.png") scale = False elif os.path.exists("data/characters/"+self.ao_app.charlist[self.ind]+"/"+prefix+"spin.gif"): pix = QPixmap("data/characters/"+self.ao_app.charlist[self.ind]+"/"+prefix+"spin.gif") else: pix = QPixmap("data/misc/error.gif") if scale: scale = ini.read_ini_float("data/characters/"+self.ao_app.charlist[self.ind]+"/char.ini", "Options", "scale", 1.0)*2 self.charpic.setPixmap(pix.scaled(pix.size().width()*scale, pix.size().height()*scale)) if self.charpic.pixmap().size().width() > self.pixmap().size().width(): self.charpic.move(-(self.charpic.pixmap().size().width()/4) + 8, -8) elif self.charpic.pixmap().size().width() < self.pixmap().size().width(): self.charpic.move((self.charpic.pixmap().size().width()/4) - 4, -8) else: self.charpic.setPixmap(pix) self.charpic.move(0, 0) self.charpic.show()
def __init__(self, _ao_app): super(lobby, self).__init__() self.ao_app = _ao_app self.font = QtGui.QFont("Arial", 12) self.text = QtGui.QLabel(self, text="Attorney Investigations Online\nv" + str(LOBBY_VERSION)) self.text.setFont(self.font) self.text.move(8, 8) self.serverlistwidget = QtGui.QListWidget(self) self.serverlistwidget.setGeometry(64, 64, 512 - 64, 240) self.serverlistwidget.itemClicked.connect(self.serverItemClicked) desc_x, desc_y, desc_w, desc_h = 640 - 64 + 8, 16, 256 - 48, 480 - 128 self.connectingstatus = ConnectingStatus(self, _ao_app) self.connectingstatus.hide() self.addtofav = buttons.AIOButton(self) self.connectbtn = buttons.AIOButton(self) self.refreshbtn = buttons.AIOButton(self) self.newsbtn = buttons.AIOButton(self) self.allservers = buttons.AIOButton(self) self.favoritesbtn = buttons.AIOButton(self) self.joinipaddress = buttons.AIOButton(self) self.optionsbtn = buttons.AIOButton(self) self.addtofav.setPixmap( QtGui.QPixmap("data\\misc\\add_to_favorites.png")) self.addtofav.move(640 - 16, desc_y + desc_h + 4) self.connectbtn.setPixmap( QtGui.QPixmap("data\\misc\\connect_button.png")) self.connectbtn.move(640 - 16, desc_y + desc_h + 4 + 48) self.refreshbtn.setPixmap(QtGui.QPixmap("data\\misc\\refresh.png")) self.refreshbtn.move( (self.serverlistwidget.x() + self.serverlistwidget.size().width()) / 2 - 32, self.serverlistwidget.y() + self.serverlistwidget.size().height() + 16) self.allservers.setPixmap(QtGui.QPixmap("data\\misc\\all_servers.png")) self.allservers.move(self.refreshbtn.x() - 128 - 8, self.refreshbtn.y() + 64) self.favoritesbtn.setPixmap(QtGui.QPixmap("data\\misc\\favorites.png")) self.favoritesbtn.move(self.refreshbtn.x(), self.refreshbtn.y() + 64) self.newsbtn.setPixmap(QtGui.QPixmap("data\\misc\\news_button.png")) self.newsbtn.move(self.refreshbtn.x(), self.favoritesbtn.y() + 32) self.joinipaddress.setPixmap( QtGui.QPixmap("data\\misc\\joinip_button.png")) self.joinipaddress.move(self.refreshbtn.x() + 128 + 8, self.refreshbtn.y() + 64) self.optionsbtn.setPixmap( QtGui.QPixmap("data\\misc\\options_button.png")) self.optionsbtn.move(8, self.size().height() - 40) self.description = QtGui.QTextEdit(self) self.description.setFont(self.font) self.description.setGeometry(desc_x, desc_y, desc_w, desc_h) self.description.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.description.setFrameStyle(QtGui.QFrame.NoFrame) self.description.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.description.setVerticalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOn) self.description.setReadOnly(True) self.description.setStyleSheet("background-color: rgba(0, 0, 0, 0);" "color: white") self.newstext = QtGui.QTextEdit(self) self.newstext.setFont(self.font) self.newstext.setGeometry(64, 64, 512 - 64, 240) self.newstext.setReadOnly(True) self.newslabel = QtGui.QLabel(self) self.newslabel.setFont(self.font) self.newslabel.setText("News") self.newslabel.move(self.newstext.x(), self.newstext.y() - 20) self.newstext.hide() self.newslabel.hide() self.addtofav.clicked.connect(self.add_to_favorites) self.connectbtn.clicked.connect(self.connectClicked) self.refreshbtn.clicked.connect(self.refresh) self.allservers.clicked.connect(self.on_public_servers) self.favoritesbtn.clicked.connect(self.on_favorites_list) self.newsbtn.clicked.connect(self.on_news_tab) self.joinipaddress.clicked.connect(self.join_ip_address) self.optionsbtn.clicked.connect(self.on_settings_button) self.addtofav.show() self.connectbtn.show() self.refreshbtn.show() self.allservers.show() self.favoritesbtn.show() self.newsbtn.show() self.joinipaddress.show() self.connectingstatus.raise_() self.optionsgui = options.Options(_ao_app) self.optionsgui.fileSaved.connect(self.onOptionsSave) a = ini.read_ini("aaio.ini", "MasterServer", "IP").split(":") ip = a[0] try: port = int(a[1]) except: port = 27010 self.msthread = MasterServerThread(ip, port) self.msthread.gotServers.connect(self.gotServerList) self.msthread.gotNews.connect(self.gotNews) self.msthread.start() self.servers = [] try: self.favorites = [ line.rstrip("\n").split(":") for line in open("data\\serverlist.txt") ] except IOError: self.favorites = [[ "localhost", "27010", "your server, port 27010 (serverlist.txt not found)", "to fix this, create an empty text file on the \"data\" folder named \"serverlist\"." ]] for favorite in self.favorites: if len(favorite) == 3: favorite.append("") favorite[1] = int(favorite[1]) self.serverselected = -1 self.tab = 0
def onOptionsSave(self): self.ao_app.mainwindow.gamewidget.chatbox.setPixmap( QtGui.QPixmap( "data\\misc\\" + ini.read_ini("aaio.ini", "General", "Chatbox image")))
def showSettings(self): self.show() if os.path.exists("aaio.ini"): self.inifile.read("aaio.ini") try: self.defaultoocname.setText( ini.read_ini("aaio.ini", "General", "OOC name").decode("utf-8")) except: self.defaultoocname.setText( ini.read_ini("aaio.ini", "General", "OOC name")) chatbox_ind = self.chatboximage_dropdown.findText( ini.read_ini("aaio.ini", "General", "Chatbox image")) if chatbox_ind > 0: self.chatboximage_dropdown.setCurrentIndex(chatbox_ind) self.ms_lineedit.setText( ini.read_ini("aaio.ini", "MasterServer", "IP")) self.device_list.setCurrentIndex( ini.read_ini_int("aaio.ini", "Audio", "Device", BASS_GetDevice())) self.musicslider.setValue( ini.read_ini_int("aaio.ini", "Audio", "Music volume", 100)) self.soundslider.setValue( ini.read_ini_int("aaio.ini", "Audio", "Sound volume", 100)) self.blipslider.setValue( ini.read_ini_int("aaio.ini", "Audio", "Blip volume", 100)) self.up_buttons[0].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "up1", QtCore.Qt.Key_W))) self.up_buttons[1].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "up2", QtCore.Qt.Key_Up))) self.down_buttons[0].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "down1", QtCore.Qt.Key_S))) self.down_buttons[1].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "down2", QtCore.Qt.Key_Down))) self.left_buttons[0].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "left1", QtCore.Qt.Key_A))) self.left_buttons[1].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "left2", QtCore.Qt.Key_Left))) self.right_buttons[0].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "right1", QtCore.Qt.Key_D))) self.right_buttons[1].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "right2", QtCore.Qt.Key_Right))) self.run_button.setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "run", QtCore.Qt.Key_Shift))) else: self.defaultoocname.setText("") self.chatboximage_dropdown.setCurrentIndex(0) self.ms_lineedit.setText("aaio-ms.aceattorneyonline.com:27011") self.device_list.setCurrentIndex(BASS_GetDevice()) self.musicslider.setValue(100) self.soundslider.setValue(100) self.blipslider.setValue(100) self.up_buttons[0].setText("Key_W") self.up_buttons[1].setText("Key_Up") self.down_buttons[0].setText("Key_S") self.down_buttons[1].setText("Key_Down") self.left_buttons[0].setText("Key_A") self.left_buttons[1].setText("Key_Left") self.right_buttons[0].setText("Key_D") self.right_buttons[1].setText("Key_Right") self.run_button.setText("Key_Shift") self.tabs.setCurrentIndex(0) self.show()
def __init__(self, _ao_app): super(lobby, self).__init__() self.ao_app = _ao_app self.font = QtGui.QFont("Arial", 12) self.text = QtGui.QLabel(self, text="Attorney Investigations Online\nv" + str(LOBBY_VERSION)) self.text.setFont(self.font) self.text.move(8, 8) #self.serverlistwidget = QtGui.QListWidget(self) self.serverlistwidget = QtGui.QTreeWidget(self) self.serverlistwidget.setSortingEnabled(True) self.serverlistwidget.setGeometry(32, 64, 512 + 144 + 16, 240) self.serverlistwidget.setHeaderItem( ServerItem(["Name", "Players", "Version", "Ping"])) self.serverlistwidget.header().resizeSection(0, 448) self.serverlistwidget.header().resizeSection(1, 64) self.serverlistwidget.header().resizeSection(2, 80) self.serverlistwidget.header().resizeSection(3, 64) self.serverlistwidget.itemClicked.connect(self.serverItemClicked) desc_x, desc_y, desc_w, desc_h = 800 - 64 + 8, 16, 256 - 48, 480 - 128 self.connectingstatus = ConnectingStatus(self, _ao_app) self.connectingstatus.hide() self.addtofav = buttons.AIOButton(self) self.connectbtn = buttons.AIOButton(self) self.refreshbtn = buttons.AIOButton(self) self.newsbtn = buttons.AIOButton(self) self.allservers = buttons.AIOButton(self) self.LANbtn = buttons.AIOButton(self) self.favoritesbtn = buttons.AIOButton(self) self.joinipaddress = buttons.AIOButton(self) self.optionsbtn = buttons.AIOButton(self) self.addtofav.setPixmap( QtGui.QPixmap("data/misc/add_to_favorites.png")) self.addtofav.move(800 - 16, desc_y + desc_h + 4) self.connectbtn.setPixmap( QtGui.QPixmap("data/misc/connect_button.png")) self.connectbtn.move(800 - 16, desc_y + desc_h + 4 + 48) self.refreshbtn.setPixmap(QtGui.QPixmap("data/misc/refresh.png")) self.refreshbtn.move( (self.serverlistwidget.x() + self.serverlistwidget.size().width()) / 2 - 32, self.serverlistwidget.y() + self.serverlistwidget.size().height() + 16) self.allservers.setPixmap(QtGui.QPixmap("data/misc/all_servers.png")) self.allservers.move(self.refreshbtn.x() - 128 - 8, self.refreshbtn.y() + 64) self.favoritesbtn.setPixmap(QtGui.QPixmap("data/misc/favorites.png")) self.favoritesbtn.move(self.refreshbtn.x() + 128 + 8, self.refreshbtn.y() + 64) self.LANbtn.setPixmap(QtGui.QPixmap("data/misc/lan.png")) self.LANbtn.move(self.refreshbtn.x(), self.refreshbtn.y() + 64) self.newsbtn.setPixmap(QtGui.QPixmap("data/misc/news_button.png")) self.newsbtn.move( self.refreshbtn.x() - (self.newsbtn.pixmap().size().width()) / 2, self.favoritesbtn.y() + 32) self.joinipaddress.setPixmap( QtGui.QPixmap("data/misc/joinip_button.png")) self.joinipaddress.move( self.newsbtn.x() + self.newsbtn.pixmap().size().width() + 8, self.newsbtn.y()) self.optionsbtn.setPixmap( QtGui.QPixmap("data/misc/options_button.png")) self.optionsbtn.move(8, self.size().height() - 40) self.description = QtGui.QTextEdit(self) self.description.setFont(self.font) self.description.setGeometry(desc_x, desc_y, desc_w, desc_h) self.description.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.description.setFrameStyle(QtGui.QFrame.NoFrame) self.description.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.description.setVerticalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOn) self.description.setReadOnly(True) self.description.setStyleSheet("background-color: rgba(0, 0, 0, 0);" "color: white") self.newstext = QtGui.QTextEdit(self) self.newstext.setFont(self.font) self.newstext.move(self.serverlistwidget.x(), self.serverlistwidget.y()) self.newstext.resize(self.serverlistwidget.size()) self.newstext.setReadOnly(True) self.newslabel = QtGui.QLabel(self) self.newslabel.setFont(self.font) self.newslabel.setText("News") self.newslabel.move(self.newstext.x(), self.newstext.y() - 20) self.newstext.hide() self.newslabel.hide() if os.path.exists("data/aaio_news.txt"): self.newstext.setText(open("data/aaio_news.txt").read()) self.addtofav.clicked.connect(self.add_to_favorites) self.connectbtn.clicked.connect(self.connectClicked) self.refreshbtn.clicked.connect(self.refresh) self.allservers.clicked.connect(self.on_public_servers) self.LANbtn.clicked.connect(self.on_lan_servers) self.favoritesbtn.clicked.connect(self.on_favorites_list) self.newsbtn.clicked.connect(self.on_news_tab) self.joinipaddress.clicked.connect(self.join_ip_address) self.optionsbtn.clicked.connect(self.on_settings_button) self.addtofav.show() self.connectbtn.show() self.refreshbtn.show() self.allservers.show() self.LANbtn.show() self.favoritesbtn.show() self.newsbtn.show() self.joinipaddress.show() self.connectingstatus.raise_() self.optionsgui = options.Options(_ao_app) self.optionsgui.fileSaved.connect(self.onOptionsSave) a = ini.read_ini("aaio.ini", "MasterServer", "IP", "aaio-ms.aceattorneyonline.com:27011").split(":") ip = a[0] try: port = int(a[1]) except: port = 27011 self.newPackets = ini.read_ini("aaio.ini", "Advanced", "0.5 packets", "0") == "1" self.msthread = MasterServerThread(ip, port, self.newPackets) self.msthread.gotServers.connect(self.gotServerList) self.msthread.gotNews.connect(self.gotNews) self.msthread.error.connect(self.MSError) self.msthread.start() self.servers = [] self.favorites = [] self.lanservers = [] self.pinged_list = [ ] # [name, players, version, ping, desc, ip, str(port)] self.ao_app.udpthread.gotInfoRequest.connect(self.gotUDPRequest) try: for line in open("data/serverlist.txt"): server = line.rstrip("\n").split(":")[:2] self.favorites.append([ server[0] + ":" + server[1], "", "", "pinging", "", server[0], server[1] ]) except IOError: open("data/serverlist.txt", "w").write("localhost:27010\n") self.favorites = [[ "localhost:27010", "", "", "pinging", "", "localhost", "27010" ]] self.serverselected = -1 self.tab = 0
def downloadChar(name): mirrors = ["http://s3.wasabisys.com/webao/base/characters/", "http://s3.wasabisys.com/aov-webao/base/characters/", "http://s3.us-west-1.wasabisys.com/vanilla-assets/base/characters/"] for mirror in mirrors: print("trying "+mirror+name.lower()+"/"+"... ") a = requests.get(mirror+name.lower()+"/"+"char.ini") if not a.ok: print("ERROR") continue else: print("character exists on site") if not os.path.exists("base/characters/"+name): os.mkdir("base/characters/"+name) if not os.path.exists("base/characters/"+name+"/emotions"): os.mkdir("base/characters/"+name+"/emotions") open("base/characters/"+name+"/char.ini", "wb").write(a.content) open("ini.ini", "wb").write(a.content) total_emotes = ini.read_ini_int("ini.ini", "emotions", "number") print("%d total emotes" % total_emotes) for i in range(total_emotes): sound = ini.read_ini("ini.ini", "soundn", str(i+1), "1") emote = ini.read_ini("ini.ini", "emotions", str(i+1)).split("#") emotepre = emote[1] emoteanim = emote[2] if sound and sound != "1" and sound != "0" and sound != "-" and not os.path.exists("base/sounds/general/"+sound+".wav"): print("[%d]" % (i+1), "attempting to download sound "+sound+"... ") urlsound = requests.get(mirror+"sounds/general/"+sound.lower()+".wav") if urlsound.ok: print("OK!") open("base/sounds/general/"+sound+".wav", "wb").write(urlsound.content) else: print("ERROR") if emotepre != "-": download_missing_emote(mirror,name,"",emotepre,"gif") download_missing_emote(mirror,name,"(a)",emoteanim,"gif") download_missing_emote(mirror,name,"(b)",emoteanim,"gif") download_missing_emote(mirror,name,"",emoteanim,"png") if not os.path.exists("base/characters/"+name+"/emotions/button%d_off.png" % (i+1)): button_off = requests.get(mirror+name.lower()+"/"+"emotions/button%d_off.png" % (i+1)) if button_off.ok: print("[%d]" % (i+1), "downloaded button%d_off.png" % (i+1)) open("base/characters/"+name+"/emotions/button%d_off.png" % (i+1), "wb").write(button_off.content) if not os.path.exists("base/characters/"+name+"/emotions/button%d_on.png" % (i+1)): button_on = requests.get(mirror+name.lower()+"emotions/button%d_on.png" % (i+1)) if button_on.ok: print("[%d]" % (i+1), "downloaded button%d_on.png" % (i+1)) open("base/characters/"+name+"/emotions/button%d_on.png" % (i+1), "wb").write(button_on.content) char_icon = requests.get(mirror+name.lower()+"char_icon.png") if char_icon.ok: print("downloaded char_icon.png") open("base/characters/"+name+"/char_icon.png", "wb").write(char_icon.content) objection = requests.get(mirror+name.lower()+"objection.wav") if objection.ok: print("downloaded objection.wav") open("base/characters/"+name+"/objection.wav", "wb").write(objection.content) holdit = requests.get(mirror+name.lower()+"holdit.wav") if holdit.ok: print("downloaded holdit.wav") open("base/characters/"+name+"/holdit.wav", "wb").write(holdit.content) takethat = requests.get(mirror+name.lower()+"takethat.wav") if takethat.ok: print("downloaded takethat.wav") open("base/characters/"+name+"/takethat.wav", "wb").write(takethat.content) custom_gif = requests.get(mirror+name.lower()+"custom.gif") custom_wav = requests.get(mirror+name.lower()+"custom.wav") if custom_gif.ok: print("downloaded custom.gif") open("base/characters/"+name+"/custom.gif", "wb").write(custom_gif.content) if custom_wav.ok: print("downloaded custom.wav") open("base/characters/"+name+"/custom.wav", "wb").write(custom_wav.content) print("finished downloading character "+name) return
def __init__(self, _ao_app): super(lobby, self).__init__() self.ao_app = _ao_app theme = ini.read_ini("aaio.ini", "General", "Theme", "default") uic.loadUi("data/themes/" + theme + "/lobby.ui", self) # plant the bomb self.versiontext.setText("Attorney Investigations Online\nv" + str(LOBBY_VERSION)) self.serverlistwidget.setHeaderItem( ServerItem(["Name", "Players", "Version", "Ping"])) self.serverlistwidget.header().resizeSection(0, 448) self.serverlistwidget.header().resizeSection(1, 64) self.serverlistwidget.header().resizeSection(2, 80) self.serverlistwidget.header().resizeSection(3, 64) self.serverlistwidget.itemClicked.connect(self.serverItemClicked) if os.path.exists("data/aaio_news.txt"): self.newstext.setText(open("data/aaio_news.txt").read()) self.addtofav.clicked.connect(self.add_to_favorites) self.connectbtn.clicked.connect(self.connectClicked) self.refreshbtn.clicked.connect(self.refresh) self.allservers.clicked.connect(self.on_public_servers) self.LANbtn.clicked.connect(self.on_lan_servers) self.favoritesbtn.clicked.connect(self.on_favorites_list) self.newsbtn.clicked.connect(self.on_news_tab) self.joinipaddress.clicked.connect(self.join_ip_address) self.optionsbtn.clicked.connect(self.on_settings_button) self.aboutbtn.clicked.connect(self.on_about_button) self.startserverbtn.clicked.connect(self.on_startserver_button) self.connectingstatus = ConnectingStatus(self, _ao_app) self.connectingstatus.hide() self.newswidget.hide() self.optionsgui = options.Options(_ao_app) #self.optionsgui.fileSaved.connect(self.onOptionsSave) a = ini.read_ini("aaio.ini", "MasterServer", "IP", "aaio-ms.aceattorneyonline.com:27011").split(":") ip = a[0] try: port = int(a[1]) except: port = 27011 self.msthread = MasterServerThread(ip, port) self.msthread.gotServers.connect(self.gotServerList) self.msthread.gotNews.connect(self.gotNews) self.msthread.error.connect(self.MSError) self.msthread.start() self.server_subprocess = None self.servers = [] self.favorites = [] self.pinged_list = [ ] # [name, players, version, ping, desc, ip, str(port)] self.ao_app.udpthread.gotInfoRequest.connect(self.gotUDPRequest) try: for line in open("data/serverlist.txt"): server = line.rstrip("\n").split(":")[:2] try: ip = socket.gethostbyname(server[0]) except: ip = server[0] self.favorites.append([ ip + ":" + server[1], "", "", "pinging", "", ip, server[1] ]) except IOError: open("data/serverlist.txt", "w").write("localhost:27010\n") self.favorites = [[ "localhost:27010", "", "", "pinging", "", "localhost", "27010" ]] self.serverselected = -1 self.tab = 0
def showSettings(self): if exists("AO2XP.ini"): self.inifile.read("AO2XP.ini") self.savetolog.setChecked( ini.read_ini_bool(self.inifile, "General", "save logs")) self.savetolog_combine.setChecked( ini.read_ini_bool(self.inifile, "General", "combined logs")) try: self.defaultoocname.setText( ini.read_ini(self.inifile, "General", "OOC name").decode("utf-8")) except: self.defaultoocname.setText( ini.read_ini(self.inifile, "General", "OOC name")) try: self.defaultshowname.setText( ini.read_ini(self.inifile, "General", "showname").decode("utf-8")) except: self.defaultshowname.setText( ini.read_ini(self.inifile, "General", "showname")) 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_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.currtheme.setCurrentIndex( self.themes.index( ini.read_ini(self.inifile, "General", "theme", "default"))) self.check_updates.setChecked( ini.read_ini_bool(self.inifile, "General", "install updates", True)) self.device_list.setCurrentIndex( ini.read_ini_int(self.inifile, "Audio", "device", audio.getcurrdevice())) self.musicslider.setValue( ini.read_ini_int(self.inifile, "Audio", "Music volume", 100)) self.soundslider.setValue( ini.read_ini_int(self.inifile, "Audio", "Sound volume", 100)) self.blipslider.setValue( ini.read_ini_int(self.inifile, "Audio", "Blip volume", 100)) else: self.savetolog.setChecked(False) self.savetolog_combine.setChecked(False) self.defaultoocname.setText("") self.defaultshowname.setText("") self.allowdownload_sounds.setChecked(True) self.allowdownload_music.setChecked(True) self.allowdownload_evidence.setChecked(True) self.currtheme.setCurrentIndex(self.themes.index("default")) self.check_updates.setChecked(True) self.device_list.setCurrentIndex(audio.getcurrdevice()) self.musicslider.setValue(100) self.soundslider.setValue(100) self.blipslider.setValue(100) self.callwords_edit.clear() if exists(AO2XPpath + "callwords.ini"): with open(AO2XPpath + "callwords.ini") as f: for line in f: self.callwords_edit.append(line.rstrip().decode("utf-8")) self.tabs.setCurrentIndex(0) self.show()
def __init__(self, ao_app): super(Options, self).__init__() self.ao_app = ao_app self.inifile = ConfigParser() self.setWindowTitle("Settings") self.setFixedSize(400, 400) main_layout = QtGui.QVBoxLayout(self) save_layout = QtGui.QHBoxLayout() self.tabs = QtGui.QTabWidget() self.tabs.resize(320 - 16, 480 - 40) self.tabs.move(8, 8) general_tab = QtGui.QWidget() controls_tab = QtGui.QWidget() audio_tab = QtGui.QWidget() theme_tab = QtGui.QWidget() advanced_tab = QtGui.QWidget() general_layout = QtGui.QVBoxLayout(general_tab) general_layout.setAlignment(QtCore.Qt.AlignTop) controls_layout = QtGui.QVBoxLayout(controls_tab) controls_layout.setAlignment(QtCore.Qt.AlignTop) audio_layout = QtGui.QFormLayout(audio_tab) audio_layout.setLabelAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) audio_layout.setFormAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) #audio_layout.setContentsMargins(0, 0, 0, 0) theme_layout = QtGui.QVBoxLayout(theme_tab) theme_layout.setAlignment(QtCore.Qt.AlignTop) advanced_layout = QtGui.QVBoxLayout(advanced_tab) advanced_layout.setAlignment(QtCore.Qt.AlignTop) savebtn = QtGui.QPushButton() savebtn.setText("Save") savebtn.clicked.connect(self.onSaveClicked) cancelbtn = QtGui.QPushButton() cancelbtn.setText("Cancel") cancelbtn.clicked.connect(self.onCancelClicked) separators = [] for i in range(2): # increase if needed separator = QtGui.QFrame() separator.setFixedSize(separator.size().width(), 16) separators.append(separator) ###### General tab ###### defaultoocname_layout = QtGui.QHBoxLayout() defaultoocname_label = QtGui.QLabel("Default OOC name") self.defaultoocname = QtGui.QLineEdit() defaultoocname_layout.addWidget(defaultoocname_label) defaultoocname_layout.addWidget(self.defaultoocname) defaultshowname_layout = QtGui.QHBoxLayout() defaultshowname_label = QtGui.QLabel("Default showname") self.defaultshowname = QtGui.QLineEdit() defaultshowname_layout.addWidget(defaultshowname_label) defaultshowname_layout.addWidget(self.defaultshowname) #savechangeswarn = QtGui.QLabel() #savechangeswarn.setText("* Change takes effect upon restarting the client") general_layout.addLayout(defaultoocname_layout) general_layout.addLayout(defaultshowname_layout) #general_layout.addWidget(separators[0]) #general_layout.addWidget(savechangeswarn, 50, QtCore.Qt.AlignBottom) ###### Theme tab ###### themeview_layout = QtGui.QHBoxLayout() self.themeview = QtGui.QListWidget() #self.themeview.setViewMode(QtGui.QListWidget.IconMode) self.themeview.setIconSize(QtCore.QSize(96, 96)) #self.themeview.setResizeMode(QtGui.QListWidget.Adjust) self.themeview.setMovement(QtGui.QListWidget.Static) self.themeview.setItemDelegate(HTMLDelegate(self.themeview)) self.themes = [] for theme in os.listdir("data/themes"): if not os.path.exists("data/themes/" + theme + "/theme.ini"): continue themename = ini.read_ini("data/themes/" + theme + "/theme.ini", "Theme", "name", "unknown theme") themedesc = ini.read_ini("data/themes/" + theme + "/theme.ini", "Theme", "description") themeauthor = ini.read_ini("data/themes/" + theme + "/theme.ini", "Theme", "author") thumbnail = "data/themes/" + theme + "/thumbnail.png" if not os.path.exists(thumbnail): thumbnail = "data/misc/unknown_theme.png" text = "<b>" + themename + "</b>" if themedesc or themeauthor: text += "<br/>" if themedesc: text += themedesc + "<br/>" if themeauthor: text += "Author: " + themeauthor item = QtGui.QListWidgetItem(QtGui.QIcon(thumbnail), text) self.themes.append([theme, themename]) self.themeview.addItem(item) themeview_layout.addWidget(self.themeview) theme_layout.addLayout(themeview_layout) ###### Controls tab ###### self.changingBind = [ ] # [pushbutton object, control name, control index] up_layout = QtGui.QHBoxLayout() down_layout = QtGui.QHBoxLayout() left_layout = QtGui.QHBoxLayout() right_layout = QtGui.QHBoxLayout() run_layout = QtGui.QHBoxLayout() up_label = QtGui.QLabel("Up") down_label = QtGui.QLabel("Down") left_label = QtGui.QLabel("Left") right_label = QtGui.QLabel("Right") run_label = QtGui.QLabel("Run") self.up_buttons = [QtGui.QPushButton(), QtGui.QPushButton()] self.down_buttons = [QtGui.QPushButton(), QtGui.QPushButton()] self.left_buttons = [QtGui.QPushButton(), QtGui.QPushButton()] self.right_buttons = [QtGui.QPushButton(), QtGui.QPushButton()] self.run_button = QtGui.QPushButton() for b in self.up_buttons: b.clicked.connect( partial(self.changeBind, b, "up", self.up_buttons.index(b))) for b in self.down_buttons: b.clicked.connect( partial(self.changeBind, b, "down", self.down_buttons.index(b))) for b in self.left_buttons: b.clicked.connect( partial(self.changeBind, b, "left", self.left_buttons.index(b))) for b in self.right_buttons: b.clicked.connect( partial(self.changeBind, b, "right", self.right_buttons.index(b))) self.run_button.clicked.connect( partial(self.changeBind, self.run_button, "run", 0)) for i in range(len(self.up_buttons)): ao_app.controls["up"][i] = ini.read_ini_int( "aaio.ini", "Controls", "up%d" % (i + 1), ao_app.controls["up"][i]) for i in range(len(self.down_buttons)): ao_app.controls["down"][i] = ini.read_ini_int( "aaio.ini", "Controls", "down%d" % (i + 1), ao_app.controls["down"][i]) for i in range(len(self.left_buttons)): ao_app.controls["left"][i] = ini.read_ini_int( "aaio.ini", "Controls", "left%d" % (i + 1), ao_app.controls["left"][i]) for i in range(len(self.right_buttons)): ao_app.controls["right"][i] = ini.read_ini_int( "aaio.ini", "Controls", "right%d" % (i + 1), ao_app.controls["right"][i]) ao_app.controls["run"][0] = ini.read_ini_int("aaio.ini", "Controls", "run", ao_app.controls["run"][0]) up_layout.addWidget(up_label) for b in self.up_buttons: up_layout.addWidget(b) down_layout.addWidget(down_label) for b in self.down_buttons: down_layout.addWidget(b) left_layout.addWidget(left_label) for b in self.left_buttons: left_layout.addWidget(b) right_layout.addWidget(right_label) for b in self.right_buttons: right_layout.addWidget(b) run_layout.addWidget(run_label) run_layout.addWidget(self.run_button) controls_layout.addLayout(up_layout) controls_layout.addLayout(down_layout) controls_layout.addLayout(left_layout) controls_layout.addLayout(right_layout) controls_layout.addLayout(run_layout) ###### Audio tab ###### device_label = QtGui.QLabel("Audio device") self.device_list = QtGui.QComboBox() audio_layout.setWidget(0, QtGui.QFormLayout.LabelRole, device_label) audio_layout.setWidget(0, QtGui.QFormLayout.FieldRole, self.device_list) audio_layout.setWidget(1, QtGui.QFormLayout.FieldRole, separators[0]) volumelabel = QtGui.QLabel("Sound volume") musiclabel = QtGui.QLabel("Music") soundlabel = QtGui.QLabel("Sounds") bliplabel = QtGui.QLabel("Blips") self.musicslider = QtGui.QSlider(QtCore.Qt.Horizontal, self) self.soundslider = QtGui.QSlider(QtCore.Qt.Horizontal, self) self.blipslider = QtGui.QSlider(QtCore.Qt.Horizontal, self) self.musicslider.setRange(0, 100) self.soundslider.setRange(0, 100) self.blipslider.setRange(0, 100) audio_layout.setWidget(2, QtGui.QFormLayout.LabelRole, musiclabel) audio_layout.setWidget(2, QtGui.QFormLayout.FieldRole, self.musicslider) audio_layout.setWidget(3, QtGui.QFormLayout.LabelRole, soundlabel) audio_layout.setWidget(3, QtGui.QFormLayout.FieldRole, self.soundslider) audio_layout.setWidget(4, QtGui.QFormLayout.LabelRole, bliplabel) audio_layout.setWidget(4, QtGui.QFormLayout.FieldRole, self.blipslider) for device in audio.getdevices(): self.device_list.addItem(device) ###### Advanced tab ###### ms_layout = QtGui.QHBoxLayout() ms_label = QtGui.QLabel("MasterServer IP") self.ms_lineedit = QtGui.QLineEdit() ms_layout.addWidget(ms_label) ms_layout.addWidget(self.ms_lineedit) self.fps_checkbox = QtGui.QCheckBox("60 FPS mode", self) advanced_layout.addLayout(ms_layout) advanced_layout.addWidget(separators[1]) advanced_layout.addWidget(self.fps_checkbox) self.tabs.addTab(general_tab, "General") self.tabs.addTab(theme_tab, "Theme") self.tabs.addTab(controls_tab, "Controls") self.tabs.addTab(audio_tab, "Audio") self.tabs.addTab(advanced_tab, "Advanced") save_layout.addWidget(savebtn, 100, QtCore.Qt.AlignRight) save_layout.addWidget(cancelbtn, 0, QtCore.Qt.AlignRight) main_layout.addWidget(self.tabs) main_layout.addLayout(save_layout) ao_app.installEventFilter(self) self.hide()
def showSettings(self): self.show() if os.path.exists("aaio.ini"): self.inifile.read("aaio.ini") try: self.defaultoocname.setText( ini.read_ini("aaio.ini", "General", "OOC name").decode("utf-8")) except: self.defaultoocname.setText( ini.read_ini("aaio.ini", "General", "OOC name")) try: self.defaultshowname.setText( ini.read_ini("aaio.ini", "General", "Showname").decode("utf-8")) except: self.defaultshowname.setText( ini.read_ini("aaio.ini", "General", "Showname")) selectedtheme = ini.read_ini("aaio.ini", "General", "Theme") for i in range(len(self.themes)): theme, themename = self.themes[i] if theme == selectedtheme: self.themeview.setCurrentRow(i) break self.ms_lineedit.setText( ini.read_ini("aaio.ini", "MasterServer", "IP")) self.device_list.setCurrentIndex( ini.read_ini_int("aaio.ini", "Audio", "Device", audio.getcurrdevice())) self.musicslider.setValue( ini.read_ini_int("aaio.ini", "Audio", "Music volume", 100)) self.soundslider.setValue( ini.read_ini_int("aaio.ini", "Audio", "Sound volume", 100)) self.blipslider.setValue( ini.read_ini_int("aaio.ini", "Audio", "Blip volume", 100)) self.up_buttons[0].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "up1", QtCore.Qt.Key_W))) self.up_buttons[1].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "up2", QtCore.Qt.Key_Up))) self.down_buttons[0].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "down1", QtCore.Qt.Key_S))) self.down_buttons[1].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "down2", QtCore.Qt.Key_Down))) self.left_buttons[0].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "left1", QtCore.Qt.Key_A))) self.left_buttons[1].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "left2", QtCore.Qt.Key_Left))) self.right_buttons[0].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "right1", QtCore.Qt.Key_D))) self.right_buttons[1].setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "right2", QtCore.Qt.Key_Right))) self.run_button.setText( getControlName( ini.read_ini_int("aaio.ini", "Controls", "run", QtCore.Qt.Key_Shift))) self.fps_checkbox.setChecked( ini.read_ini_bool("aaio.ini", "General", "High FPS", True)) else: self.defaultoocname.setText("") self.defaultshowname.setText("") for i in range(len(self.themes)): theme, themename = self.themes[i] if theme == "default": self.themeview.setCurrentRow(i) break self.ms_lineedit.setText("aaio-ms.aceattorneyonline.com:27011") self.device_list.setCurrentIndex(audio.getcurrdevice()) self.musicslider.setValue(100) self.soundslider.setValue(100) self.blipslider.setValue(100) self.up_buttons[0].setText("Key_W") self.up_buttons[1].setText("Key_Up") self.down_buttons[0].setText("Key_S") self.down_buttons[1].setText("Key_Down") self.left_buttons[0].setText("Key_A") self.left_buttons[1].setText("Key_Left") self.right_buttons[0].setText("Key_D") self.right_buttons[1].setText("Key_Right") self.run_button.setText("Key_Shift") self.fps_checkbox.setChecked(True) self.tabs.setCurrentIndex(0) self.show()