diff options
Diffstat (limited to 'games/LucasChess/Configuration.py')
-rw-r--r-- | games/LucasChess/Configuration.py | 189 |
1 files changed, 135 insertions, 54 deletions
diff --git a/games/LucasChess/Configuration.py b/games/LucasChess/Configuration.py index 1bae60afc4..a5f94d794c 100644 --- a/games/LucasChess/Configuration.py +++ b/games/LucasChess/Configuration.py @@ -1,5 +1,5 @@ import operator -import os.path +import os import pickle import OSEngines # in OS folder @@ -9,7 +9,8 @@ from PySide2.QtCore import Qt import Code from Code import Util from Code.Analysis import AnalysisEval -from Code.Base.Constantes import MENU_PLAY_BOTH, POS_TUTOR_HORIZONTAL, INACCURACY, ENG_FIXED +from Code.Base.Constantes import (MENU_PLAY_BOTH, POS_TUTOR_HORIZONTAL, INACCURACY, ENG_FIXED, DICT_GAME_TYPES, + GO_FORWARD) from Code.Board import ConfBoards from Code.Engines import Priorities from Code.QT import IconosBase @@ -91,12 +92,14 @@ class Configuration: self.carpetaUsers = os.path.join(self.carpetaBase, "users") + self.first_run = False + if user: Util.create_folder(self.carpetaUsers) self.carpeta = os.path.join(self.carpetaUsers, str(user.number)) Util.create_folder(self.carpeta) else: - Util.create_folder(self.carpetaBase) + self.first_run = Util.create_folder(self.carpetaBase) self.carpeta = self.carpetaBase self.carpeta_config = os.path.join(self.carpeta, "__Config__") @@ -142,6 +145,8 @@ class Configuration: self.x_lichess = 1600 self.x_digital_board = "" + self.x_wheel_board = GO_FORWARD + self.x_wheel_pgn = GO_FORWARD self.x_menu_play = MENU_PLAY_BOTH @@ -253,15 +258,17 @@ class Configuration: self.x_translation_mode = False - self.x_style = "windowsvista" if Code.is_windows else "fusion" + self.x_style = "windowsvista" if Code.is_windows else "Fusion" self.x_style_mode = "By default" self.x_style_icons = IconosBase.icons.NORMAL self.style_sheet_default = None # temporary var - self.x_mode_select_lc = Code.is_linux + self.x_mode_select_lc = True self._dic_books = None + self.__theme_num = 2 + @property def dic_books(self): if self._dic_books is None: @@ -409,6 +416,9 @@ class Configuration: def folder_leagues(self): return self.create_base_folder("Leagues") + def folder_swisses(self): + return self.create_base_folder("Swiss") + def folder_openings(self): dic = self.read_variables("OPENING_LINES") folder = dic.get("FOLDER", self.folder_base_openings) @@ -499,7 +509,7 @@ class Configuration: self.file = os.path.join(self.carpeta_config, "lk.pk2") - self.siPrimeraVez = not Util.exist_file(self.file) + self.is_first_time = not Util.exist_file(self.file) self.fichEstadElo = "%s/estad.pkli" % self.carpeta_results self.fichEstadMicElo = "%s/estadMic.pkli" % self.carpeta_results @@ -710,14 +720,17 @@ class Configuration: Translate.install(self.x_translator) @staticmethod - def list_translations(): + def list_translations(others=False): li = [] dlang = Code.path_resource("Locale") for uno in Util.listdir(dlang): fini = os.path.join(dlang, uno.name, "lang.ini") if os.path.isfile(fini): dic = Util.ini_dic(fini) - li.append((uno.name, dic["NAME"], int(dic["%"]), dic["AUTHOR"])) + if others: + li.append((uno.name, dic["NAME"], int(dic["%"]), dic["AUTHOR"], dic.get("OTHERS", ""))) + else: + li.append((uno.name, dic["NAME"], int(dic["%"]), dic["AUTHOR"])) li = sorted(li, key=lambda lng: "AAA" + lng[0] if lng[1] > "Z" else lng[1]) return li @@ -830,7 +843,7 @@ class Configuration: eng.reset_uci_options() dic = self.read_variables("TUTOR_ANALYZER") for key, value in dic.get("TUTOR", []): - eng.ordenUCI(key, value) + eng.set_uci_option(key, value) return eng self.x_tutor_clave = self.tutor_default return self.engine_tutor() @@ -841,13 +854,13 @@ class Configuration: if eng.can_be_tutor() and Util.exist_file(eng.path_exe): eng.reset_uci_options() dic = self.read_variables("TUTOR_ANALYZER") - for key, value in dic.get("TUTOR", []): - eng.ordenUCI(key, value) + for key, value in dic.get("ANALYZER", []): + eng.set_uci_option(key, value) return eng self.x_analyzer_clave = self.analyzer_default return self.engine_analyzer() - def carpetaTemporal(self): + def temporary_folder(self): dirTmp = os.path.join(self.carpeta, "tmp") Util.create_folder(dirTmp) return dirTmp @@ -870,7 +883,7 @@ class Configuration: if not root: os.rmdir(folder) - remove_folder(self.carpetaTemporal(), True) + remove_folder(self.temporary_folder(), True) except: pass @@ -879,48 +892,99 @@ class Configuration: resp = db[nomVar] return resp if resp else {} - # "DicMicElos": Tourney-Elo") - # "ENG_MANAGERSOLO": Create your own game") - # "FICH_MANAGERSOLO": Create your own game") - # "ENG_VARIANTES": Variations") Edition") - # "TRANSSIBERIAN": Transsiberian Railway") - # "STSFORMULA": Formula to calculate elo") - STS: Strategic Test Suite") - # "WindowColores": Colors") - # "PCOLORES": Colors") - # "manual_save": Save positions to FNS/PGN") - # "FOLDER_ENGINES": External engines") - # "MICELO": - # "MICPER": - # "SAVEPGN": - # "STSRUN": - # "crear_torneo": - # "PARAMPELICULA": - # "BLINDFOLD": - # "WBG_MOVES": - # "DBSUMMARY": - # "DATABASE" - # "PATH_PO" + # ENG_VARIANTES + # ANALISIS_GRAPH + # WindowColores + # PCOLORES + # POLYGLOT_IMPORT + # POLYGLOT_EXPORT + # BOOKSTRAININGLO + # DicMicElos + # DicWickerElos + # OPENING_LINES + # DATABASE + # TUTOR_ANALYZER + # AUTO_ROTATE + # COORDINATES + # DBSUMMARY + # databases_columns_default + # SVG_GRAPHICS + # endingsGTB + # STSFORMULA + # FOLDER_ENGINES + # SELECTENGINE_{tipo} + # EXPEDITIONS + # LEARN_GAME_PLAY_AGAINST + # MEMORIZING_GAME + # WIDTH_PIEZES + # challenge101 + # ENG_MANAGERSOLO + # FICH_MANAGERSOLO + # MATE15 + # ODT + # OL_ENGINE_VAR + # MASSIVE_OLINES + # OPENINGLINES + # OL_ENGINE_VAR + # MASSIVE_OLINES + # OPENINGLINES + # REMOVEWORSTLINES + # OL_IMPORTPOLYGLOT + # human_human + # MICELO_TIME + # WICKER_TIME + # BLINDFOLD + # BLANCASNEGRASTIEMPO + # GIF + # PARAMPELICULA + # manual_save + # SAVEPGN + # TRANSSIBERIAN{nlevel} + # TRANSSIBERIAN + # THEMES + # crear_torneo + # BMT_OPTIONS + # PATH_PO + # PATH_MO + # TRANSLATION_HELP + # PATH_PO_OPENINGS + # PATH_PO_OPENINGS_IMPORT def write_variables(self, nomVar, dicValores): with UtilSQL.DictSQL(self.ficheroVariables) as db: db[nomVar] = dicValores + def change_theme_num(self, num): + self.__theme_num = num + def leeConfBoards(self): - db = UtilSQL.DictSQL(self.ficheroConfBoards) - self.dic_conf_boards_pk = db.as_dictionary() - if not ("BASE" in self.dic_conf_boards_pk): - with open(Code.path_resource("IntFiles", "basepk.board"), "rb") as f: - var = pickle.loads(f.read()) - alto = QTUtil.altoEscritorio() - ancho = QTUtil.anchoEscritorio() - base = ancho * 950 / 1495 - if alto > base: - alto = base - var["x_anchoPieza"] = int(alto * 8 / 100) - db["BASE"] = self.dic_conf_boards_pk["BASE"] = var - # with open("../resources/IntFiles/basepk.board", "wb") as f: - # f.write(pickle.dumps(db["BASE"])) - db.close() + with UtilSQL.DictSQL(self.ficheroConfBoards) as db: + self.dic_conf_boards_pk = db.as_dictionary() + if not ("BASE" in self.dic_conf_boards_pk): + with open(Code.path_resource("IntFiles", f"basepk{self.__theme_num}.board"), "rb") as f: + var = pickle.loads(f.read()) + alto = QTUtil.desktop_height() + ancho = QTUtil.desktop_width() + if Code.procesador: + ancho_extra = Code.procesador.main_window.get_noboard_width() + 40 + else: + ancho_extra = 660 + max_ancho_pieza = (ancho - ancho_extra) // 8 + max_alto_pieza = ((alto - 200) * 86 / 100) // 8 + alt_ancho_pieza = min(max_ancho_pieza, max_alto_pieza) + if alt_ancho_pieza > 10: + ancho_pieza = alt_ancho_pieza + else: + base = ancho * 950 / 1495 + if alto > base: + alto = base + ancho_pieza = int(alto * 8 / 100) + + var["x_anchoPieza"] = ancho_pieza + db["BASE"] = self.dic_conf_boards_pk["BASE"] = var + # Para cambiar el tema por defecto por el actual + # with open("../resources/IntFiles/basepk2.board", "wb") as f: + # f.write(pickle.dumps(db["BASE"])) def size_base(self): return self.dic_conf_boards_pk["BASE"]["x_anchoPieza"] @@ -940,12 +1004,12 @@ class Configuration: db.close() self.leeConfBoards() - def config_board(self, xid, tamDef, padre="BASE"): + def config_board(self, xid, tam_def, padre="BASE"): if xid == "BASE": - ct = ConfBoards.ConfigBoard(xid, tamDef) + ct = ConfBoards.ConfigBoard(xid, tam_def) else: - ct = ConfBoards.ConfigBoard(xid, tamDef, padre=padre) - ct.anchoPieza(tamDef) + ct = ConfBoards.ConfigBoard(xid, tam_def, padre=padre) + ct.anchoPieza(tam_def) if xid in self.dic_conf_boards_pk: ct.lee(self.dic_conf_boards_pk[xid]) @@ -954,7 +1018,7 @@ class Configuration: self.dic_conf_boards_pk[xid] = db[xid] = ct.graba() db.close() - ct._anchoPiezaDef = tamDef + ct._anchoPiezaDef = tam_def return ct @@ -984,3 +1048,20 @@ class Configuration: if self.x_style_mode == "By default": owner.setStyleSheet(self.style_sheet_default) owner.setProperty("type", valor) + + def get_auto_rotate(self, game_type): + key = DICT_GAME_TYPES[game_type] + dic = self.read_variables("AUTO_ROTATE") + return dic.get(key, False) + + def set_auto_rotate(self, game_type, auto_rotate): + key = DICT_GAME_TYPES[game_type] + dic = self.read_variables("AUTO_ROTATE") + dic[key] = auto_rotate + self.write_variables("AUTO_ROTATE", dic) + + def wheel_board(self, forward): + return forward if self.x_wheel_board == GO_FORWARD else not forward + + def wheel_pgn(self, forward): + return forward if self.x_wheel_pgn != GO_FORWARD else not forward |