popup fixes, isorting, etc

This commit is contained in:
Sander Land committed 2020-06-02 19:55:22 +02:00
1 parent cb5ec1ceb4
commit 7156705cdd
18 files changed
+73 -98

No files matched your search

+1
View File
@@ -8,6 +8,7 @@ Matthew Allred ("Kameone") for design of the v1.1 UI and providing MacOS install
Additional thanks to: Additional thanks to:
"Seventeen" for explanatory youtube videos. "Seventeen" for explanatory youtube videos.
"wonderingabout" for helping with the French translation.
+2
View File
@@ -73,6 +73,8 @@ This section describes the available AIs, with strength based on their current O
The Engine based AIs (KataGo, ScoreLoss, KataJigo) are affected by both the model and choice of visits and maximum time, The Engine based AIs (KataGo, ScoreLoss, KataJigo) are affected by both the model and choice of visits and maximum time,
while the policy net based AIs are affected by the choice of model file, but work identically with 1 visit. while the policy net based AIs are affected by the choice of model file, but work identically with 1 visit.
Further technical details and discussion on these AIs can be found on [this](https://lifein19x19.com/viewtopic.php?f=10&t=17488&sid=b11e42c005bb6f4f48c83771e6a27eff) thread at the life in 19x19 forums.
## Analysis ## Analysis
AI moves, teaching mode and timers are suspended in analysis mode, AI moves, teaching mode and timers are suspended in analysis mode,
+1 -1
View File
@@ -30,7 +30,7 @@ for lang in locales:
strings_to_langs[entry.msgid][lang] = entry.msgstr strings_to_langs[entry.msgid][lang] = entry.msgstr
strings_to_keys[entry.msgid][lang] = set(re.findall("{.*?}", entry.msgstr)) strings_to_keys[entry.msgid][lang] = set(re.findall("{.*?}", entry.msgstr))
if entry.msgid in lang_to_strings[lang]: if entry.msgid in lang_to_strings[lang]:
print('duplicate',entry.msgid,'in',lang ) print("duplicate", entry.msgid, "in", lang)
errors = True errors = True
lang_to_strings[lang].add(entry.msgid) lang_to_strings[lang].add(entry.msgid)
if num_todo[lang]: if num_todo[lang]:
Binary file not shown.
+1
View File
@@ -24,6 +24,7 @@ from kivy.resources import resource_add_path
from kivy.uix.popup import Popup from kivy.uix.popup import Popup
from kivy.uix.screenmanager import Screen from kivy.uix.screenmanager import Screen
from katrain.core.ai import ai_move from katrain.core.ai import ai_move
from kivy.core.window import Window
from katrain.core.lang import DEFAULT_LANGUAGE, i18n from katrain.core.lang import DEFAULT_LANGUAGE, i18n
from katrain.core.constants import ( from katrain.core.constants import (
+2 -1
View File
@@ -18,7 +18,8 @@ from katrain.core.constants import (
AI_INFLUENCE, AI_INFLUENCE,
AI_LOCAL, AI_LOCAL,
AI_TENUKI, AI_TENUKI,
AI_TERRITORY, AI_PICK, AI_TERRITORY,
AI_PICK,
) )
from katrain.core.engine import EngineDiedException from katrain.core.engine import EngineDiedException
from katrain.core.game import Game, GameNode, Move from katrain.core.game import Game, GameNode, Move
+7 -5
View File
@@ -1,9 +1,11 @@
from kivy import Config import os
from kivy.properties import ObjectProperty import shutil
from kivy.storage.jsonstore import JsonStore import sys
import os, sys, shutil
from katrain.core.constants import *
from kivy import Config
from kivy.storage.jsonstore import JsonStore
from katrain.core.constants import *
from katrain.core.utils import find_package_resource from katrain.core.utils import find_package_resource
+10 -12
View File
@@ -1,6 +1,5 @@
import copy import copy
import json import json
import shlex
import subprocess import subprocess
import sys import sys
import threading import threading
@@ -39,16 +38,11 @@ class KataGoEngine:
else: # e.g. MacOS after brewing else: # e.g. MacOS after brewing
executable = "katago" executable = "katago"
modelfile, configfile, exefile = ( model = find_package_resource(config["model"])
find_package_resource(config["model"]), cfg = find_package_resource(config["config"])
find_package_resource(config["config"]), exe = find_package_resource(executable)
find_package_resource(executable),
) self.command = f'"{exe}" analysis -model "{model}" -config "{cfg}" -analysis-threads {config["threads"]}'
self.command = (
f'"{exefile}" analysis -model "{modelfile}" -config "{configfile}" -analysis-threads {config["threads"]}'
)
if not sys.platform.startswith("win"):
self.command = shlex.split(self.command)
self.queries = {} # outstanding query id -> start time and callback self.queries = {} # outstanding query id -> start time and callback
self.config = config self.config = config
self.query_counter = 0 self.query_counter = 0
@@ -127,6 +121,7 @@ class KataGoEngine:
return return
if not line: if not line:
continue continue
try:
analysis = json.loads(line) analysis = json.loads(line)
if analysis["id"] not in self.queries: if analysis["id"] not in self.queries:
self.katrain.log(f"Query result {analysis['id']} discarded -- recent new game?", OUTPUT_DEBUG) self.katrain.log(f"Query result {analysis['id']} discarded -- recent new game?", OUTPUT_DEBUG)
@@ -145,7 +140,8 @@ class KataGoEngine:
del self.queries[query_id] del self.queries[query_id]
time_taken = time.time() - start_time time_taken = time.time() - start_time
self.katrain.log( self.katrain.log(
f"[{time_taken:.1f}][{analysis['id']}] KataGo Analysis Received: {analysis.keys()}", OUTPUT_DEBUG f"[{time_taken:.1f}][{analysis['id']}] KataGo Analysis Received: {analysis.keys()}",
OUTPUT_DEBUG,
) )
self.katrain.log(line, OUTPUT_EXTRA_DEBUG) self.katrain.log(line, OUTPUT_EXTRA_DEBUG)
try: try:
@@ -154,6 +150,8 @@ class KataGoEngine:
self.katrain.log(f"Error in engine callback for query {query_id}: {e}", OUTPUT_ERROR) self.katrain.log(f"Error in engine callback for query {query_id}: {e}", OUTPUT_ERROR)
if getattr(self.katrain, "update_state", None): # easier mocking etc if getattr(self.katrain, "update_state", None): # easier mocking etc
self.katrain.update_state() self.katrain.update_state()
except Exception as e:
self.katrain.log(f"Unexpected exception while processing KataGo output {line}", OUTPUT_ERROR)
def send_query(self, query, callback, error_callback, next_move=None): def send_query(self, query, callback, error_callback, next_move=None):
with self._lock: with self._lock:
+4 -4
View File
@@ -3,14 +3,14 @@ import os
import re import re
import threading import threading
from datetime import datetime from datetime import datetime
from typing import Dict, List, Union, Optional from typing import Dict, List, Optional, Union
from katrain.core.utils import var_to_grid from katrain.core.constants import HOMEPAGE, OUTPUT_DEBUG, OUTPUT_INFO
from katrain.core.lang import i18n
from katrain.core.constants import OUTPUT_INFO, OUTPUT_DEBUG, HOMEPAGE
from katrain.core.engine import KataGoEngine from katrain.core.engine import KataGoEngine
from katrain.core.game_node import GameNode from katrain.core.game_node import GameNode
from katrain.core.lang import i18n
from katrain.core.sgf_parser import SGF, Move from katrain.core.sgf_parser import SGF, Move
from katrain.core.utils import var_to_grid
class IllegalMoveException(Exception): class IllegalMoveException(Exception):
+1 -1
View File
@@ -2,9 +2,9 @@ import copy
import random import random
from typing import Dict, List, Optional, Tuple from typing import Dict, List, Optional, Tuple
from katrain.core.utils import evaluation_class, var_to_grid
from katrain.core.lang import i18n from katrain.core.lang import i18n
from katrain.core.sgf_parser import Move, SGFNode from katrain.core.sgf_parser import Move, SGFNode
from katrain.core.utils import evaluation_class, var_to_grid
from katrain.gui.style import INFO_PV_COLOR from katrain.gui.style import INFO_PV_COLOR
+1 -1
View File
@@ -71,7 +71,7 @@ class Lang(Observable):
except ReferenceError: except ReferenceError:
pass # proxy no longer exists pass # proxy no longer exists
except Exception as e: except Exception as e:
print("Error in switching languages",e) print("Error in switching languages", e)
for cb in self.callbacks: for cb in self.callbacks:
try: try:
cb(self) cb(self)
View File
Whitespace-only changes.
+7 -28
View File
@@ -4,42 +4,21 @@ import time
from typing import List, Optional from typing import List, Optional
from kivy.clock import Clock from kivy.clock import Clock
from kivy.core.window import Window
from kivy.graphics.context_instructions import Color from kivy.graphics.context_instructions import Color
from kivy.graphics.vertex_instructions import Ellipse, Line, Rectangle from kivy.graphics.vertex_instructions import Ellipse, Line, Rectangle
from kivy.metrics import sp from kivy.properties import ListProperty
from kivy.properties import ListProperty, StringProperty, NumericProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.widget import Widget from kivy.uix.widget import Widget
from kivymd.app import MDApp from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.floatlayout import MDFloatLayout from kivymd.uix.floatlayout import MDFloatLayout
from kivymd.uix.menu import MDDropdownMenu, RightContent from kivymd.uix.menu import MDDropdownMenu
from katrain.core.utils import evaluation_class from katrain.core.constants import MODE_PLAY, OUTPUT_DEBUG
from katrain.core.lang import i18n
from katrain.core.constants import OUTPUT_DEBUG, MODE_PLAY
from katrain.core.game import Move from katrain.core.game import Move
from katrain.core.lang import i18n
from katrain.core.utils import evaluation_class, var_to_grid
from katrain.gui.kivyutils import draw_circle, draw_text from katrain.gui.kivyutils import draw_circle, draw_text
from katrain.core.utils import var_to_grid from katrain.gui.style import *
from kivy.core.window import Window
from katrain.gui.style import (
EVAL_COLORS,
LINE_COLOR,
POLICY_COLOR,
GHOST_ALPHA,
TOP_MOVE_ALPHA,
STONE_COLORS,
OUTLINE_COLORS,
CHILD_SCALE,
EVAL_DOT_MIN_SIZE,
EVAL_DOT_MAX_SIZE,
BOARD_COLOR,
STARPOINT_SIZE,
STONE_SIZE,
VISITS_FRAC_SMALL,
ENGINE_DOWN_COL,
)
class BadukPanWidget(Widget): class BadukPanWidget(Widget):
+10 -23
View File
@@ -1,46 +1,33 @@
import json
import random
import re
from kivy.clock import Clock from kivy.clock import Clock
from kivy.core.window import Window from kivy.core.text import Label as CoreLabel
from kivy.graphics import * from kivy.graphics import *
from kivy.properties import ( from kivy.properties import (
BooleanProperty, BooleanProperty,
ListProperty, ListProperty,
NumericProperty, NumericProperty,
StringProperty,
OptionProperty,
ObjectProperty, ObjectProperty,
OptionProperty,
StringProperty,
) )
from kivy.uix.behaviors import ToggleButtonBehavior, ButtonBehavior from kivy.uix.behaviors import ButtonBehavior, ToggleButtonBehavior
from kivy.uix.boxlayout import BoxLayout from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button from kivy.uix.button import Button
from kivy.uix.checkbox import CheckBox
from kivy.uix.filechooser import FileChooserLayout, FileChooserListLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label from kivy.uix.label import Label
from kivy.uix.scrollview import ScrollView from kivy.uix.scrollview import ScrollView
from kivy.uix.spinner import Spinner from kivy.uix.spinner import Spinner
from kivy.uix.textinput import TextInput
from kivy.uix.widget import Widget from kivy.uix.widget import Widget
# --new
from kivymd.app import MDApp from kivymd.app import MDApp
from kivymd.uix.behaviors import RectangularRippleBehavior, CircularRippleBehavior from kivymd.uix.behaviors import CircularRippleBehavior, RectangularRippleBehavior
from kivymd.uix.boxlayout import MDBoxLayout from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.button import BasePressedButton, BaseFlatButton from kivymd.uix.button import BaseFlatButton, BasePressedButton
from kivymd.uix.navigationdrawer import MDNavigationDrawer from kivymd.uix.navigationdrawer import MDNavigationDrawer
from kivy.core.text import Label as CoreLabel
from katrain.core.constants import GAME_TYPES, AI_STRATEGIES_RECOMMENDED_ORDER, PLAYER_HUMAN, PLAYER_AI from katrain.core.constants import AI_STRATEGIES_RECOMMENDED_ORDER, GAME_TYPES, PLAYER_AI
from katrain.core.lang import i18n from katrain.core.lang import i18n
from katrain.gui.style import DEFAULT_FONT, WHITE
#
# --- new mixins # -- mixins
from katrain.gui.style import WHITE, DEFAULT_FONT
class BackgroundMixin(Widget): class BackgroundMixin(Widget):
@@ -177,7 +164,7 @@ class BGBoxLayout(BoxLayout, BackgroundMixin):
pass pass
# -- new gui elements # -- gui elements
class I18NSpinner(Spinner): class I18NSpinner(Spinner):
+10 -9
View File
@@ -1,8 +1,9 @@
import re, os import os
from typing import Dict, Tuple, Any, Union, List import re
from typing import Any, Dict, List, Tuple, Union
from kivy.clock import Clock from kivy.clock import Clock
from kivy.properties import StringProperty, BooleanProperty, NumericProperty from kivy.properties import BooleanProperty, NumericProperty, StringProperty
from kivy.uix.anchorlayout import AnchorLayout from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.boxlayout import BoxLayout from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label from kivy.uix.label import Label
@@ -13,17 +14,17 @@ from kivymd.uix.selectioncontrol import MDCheckbox
from kivymd.uix.textfield import MDTextField from kivymd.uix.textfield import MDTextField
from katrain.core.constants import ( from katrain.core.constants import (
OUTPUT_ERROR,
OUTPUT_DEBUG,
OUTPUT_INFO,
AI_DEFAULT,
AI_CONFIG_DEFAULT, AI_CONFIG_DEFAULT,
AI_DEFAULT,
AI_STRATEGIES_RECOMMENDED_ORDER, AI_STRATEGIES_RECOMMENDED_ORDER,
OUTPUT_DEBUG,
OUTPUT_ERROR,
OUTPUT_INFO,
) )
from katrain.core.engine import KataGoEngine from katrain.core.engine import KataGoEngine
from katrain.core.utils import find_package_resource
from katrain.core.lang import i18n from katrain.core.lang import i18n
from katrain.gui.kivyutils import I18NSpinner, BackgroundMixin from katrain.core.utils import find_package_resource
from katrain.gui.kivyutils import BackgroundMixin, I18NSpinner
from katrain.gui.style import DEFAULT_FONT, EVAL_COLORS from katrain.gui.style import DEFAULT_FONT, EVAL_COLORS
+12 -11
View File
@@ -37,19 +37,20 @@ a shortcut to the Documents directory added to the favorites bar::
.. image:: _static/filebrowser.png .. image:: _static/filebrowser.png
:align: right :align: right
""" """
from kivy import Config
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.treeview import TreeViewLabel, TreeView
from kivy.uix.filechooser import FileChooserListView, FileChooserListLayout
from kivy.properties import ObjectProperty, StringProperty, OptionProperty, ListProperty, BooleanProperty
from kivy.lang import Builder
from kivy.utils import platform
from kivy.clock import Clock
import string import string
from os.path import sep, dirname, expanduser, isdir, join, getmtime
from os import walk
from functools import partial
import warnings import warnings
from functools import partial
from os import walk
from os.path import dirname, expanduser, getmtime, isdir, join, sep
from kivy import Config
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.properties import BooleanProperty, ListProperty, ObjectProperty, OptionProperty, StringProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.filechooser import FileChooserListLayout, FileChooserListView
from kivy.uix.treeview import TreeView, TreeViewLabel
from kivy.utils import platform
from katrain.gui.style import DEFAULT_FONT from katrain.gui.style import DEFAULT_FONT
+1 -1
View File
@@ -1,6 +1,6 @@
import math import math
from kivy.properties import ListProperty, NumericProperty, BooleanProperty from kivy.properties import BooleanProperty, ListProperty, NumericProperty
from katrain.gui.kivyutils import BackgroundMixin from katrain.gui.kivyutils import BackgroundMixin
+3 -1
View File
@@ -2,6 +2,7 @@
#:import i18n katrain.core.lang.i18n #:import i18n katrain.core.lang.i18n
#:import expanduser os.path.expanduser #:import expanduser os.path.expanduser
#:import abspath os.path.abspath #:import abspath os.path.abspath
#:import kivy_version kivy.__version__
#:set CP_SPACING 6 #:set CP_SPACING 6
#:set CP_SMALL_SPACING 3 #:set CP_SMALL_SPACING 3
@@ -52,7 +53,8 @@
font_size: DESC_FONT_SIZE font_size: DESC_FONT_SIZE
<I18NPopup>: <I18NPopup>:
background_color: [*[c*255/66 for c in BACKGROUND_COLOR[:3]], 1] background_color: BACKGROUND_COLOR
background: self.background if kivy_version < '2.0' else ''
title: i18n._(self.title_key) title: i18n._(self.title_key)
title_size: DESC_FONT_SIZE title_size: DESC_FONT_SIZE
title_font: self.font_name title_font: self.font_name