From 26f71166a21cc43cc5475f8b11d173cfbe943992 Mon Sep 17 00:00:00 2001 From: Sander Land Date: Tue, 30 Jun 2020 22:00:59 +0200 Subject: [PATCH] display stuff, key prop --- katrain/__main__.py | 2 ++ katrain/core/base_katrain.py | 8 ++++++++ katrain/core/constants.py | 1 + katrain/core/lang.py | 9 +++++++++ katrain/gui.kv | 4 ++-- katrain/gui/controlspanel.py | 7 ++++++- katrain/gui/popups.py | 18 ++++++++++++------ katrain/gui/widgets/graph.py | 15 ++++----------- .../i18n/locales/cn/LC_MESSAGES/katrain.mo | Bin 11126 -> 11123 bytes .../i18n/locales/cn/LC_MESSAGES/katrain.po | 2 +- .../i18n/locales/de/LC_MESSAGES/katrain.mo | Bin 12949 -> 12946 bytes .../i18n/locales/de/LC_MESSAGES/katrain.po | 2 +- .../i18n/locales/en/LC_MESSAGES/katrain.mo | Bin 12041 -> 12038 bytes .../i18n/locales/en/LC_MESSAGES/katrain.po | 2 +- .../i18n/locales/es/LC_MESSAGES/katrain.mo | Bin 12808 -> 12805 bytes .../i18n/locales/es/LC_MESSAGES/katrain.po | 3 ++- .../i18n/locales/fr/LC_MESSAGES/katrain.mo | Bin 13559 -> 13556 bytes .../i18n/locales/fr/LC_MESSAGES/katrain.po | 2 +- .../i18n/locales/ko/LC_MESSAGES/katrain.mo | Bin 13788 -> 13785 bytes .../i18n/locales/ko/LC_MESSAGES/katrain.po | 2 +- .../i18n/locales/ru/LC_MESSAGES/katrain.mo | Bin 17156 -> 17153 bytes .../i18n/locales/ru/LC_MESSAGES/katrain.po | 2 +- katrain/popups.kv | 2 +- 23 files changed, 53 insertions(+), 28 deletions(-) diff --git a/katrain/__main__.py b/katrain/__main__.py index 1d43aee..3fff02e 100644 --- a/katrain/__main__.py +++ b/katrain/__main__.py @@ -123,6 +123,8 @@ class KaTrainGui(Screen, KaTrainBase): def toggle_continuous_analysis(self): self.idle_analysis = not self.idle_analysis + if not self.idle_analysis: + self.controls.set_status("", STATUS_INFO) self.update_state() def start(self): diff --git a/katrain/core/base_katrain.py b/katrain/core/base_katrain.py index a729758..a1cbf1f 100644 --- a/katrain/core/base_katrain.py +++ b/katrain/core/base_katrain.py @@ -5,6 +5,7 @@ import sys from kivy import Config from kivy.storage.jsonstore import JsonStore +from katrain.core.ai import ai_rank_estimation from katrain.core.constants import * from katrain.core.utils import find_package_resource @@ -135,6 +136,13 @@ class KaTrainBase: def update_player(self, bw, **kwargs): self.players_info[bw].update(**kwargs) + self.update_calculated_ranks() + + def update_calculated_ranks(self): + for bw, player_info in self.players_info.items(): + if player_info.player_type == PLAYER_AI: + settings = self.config(f"ai/{player_info.strategy}") + player_info.calculated_rank, _ = ai_rank_estimation(player_info.player_subtype, settings) def reset_players(self): self.update_player("B") diff --git a/katrain/core/constants.py b/katrain/core/constants.py index b331ba7..ec156e3 100644 --- a/katrain/core/constants.py +++ b/katrain/core/constants.py @@ -86,3 +86,4 @@ AI_OPTION_VALUES = { "automatic": "bool", "pda": [(x / 10, f"{'W' if x<0 else 'B'}+{abs(x/10):.1f}") for x in range(-30, 31)], } +AI_KEY_PROPERTIES = {"kyu_rank", "strength", "weaken_fac", "pick_frac", "pick_n", "automatic"} diff --git a/katrain/core/lang.py b/katrain/core/lang.py index 0e286ce..af3299c 100644 --- a/katrain/core/lang.py +++ b/katrain/core/lang.py @@ -77,3 +77,12 @@ class Lang(Observable): DEFAULT_LANGUAGE = "en" i18n = Lang(DEFAULT_LANGUAGE) + + +def rank_label(rank): + if rank is None: + return "??k" + if rank > 0: + return f"{rank:.0f}{i18n._('strength:dan')}" + else: + return f"{1-rank:.0f}{i18n._('strength:kyu')}" \ No newline at end of file diff --git a/katrain/gui.kv b/katrain/gui.kv index 7fd131b..2c03d82 100644 --- a/katrain/gui.kv +++ b/katrain/gui.kv @@ -297,8 +297,8 @@ text_size: self.size halign: 'center' valign: 'middle' - shorten: True - shorten_from: 'right' + shorten: root.player_type==PLAYER_HUMAN # overflow/cut rank off AI names + max_lines: 1 : height: self.width diff --git a/katrain/gui/controlspanel.py b/katrain/gui/controlspanel.py index f0d337f..ff8a53f 100644 --- a/katrain/gui/controlspanel.py +++ b/katrain/gui/controlspanel.py @@ -7,6 +7,7 @@ from kivy.uix.boxlayout import BoxLayout from kivymd.uix.floatlayout import MDFloatLayout from katrain.core.constants import MODE_PLAY, MODE_ANALYZE, STATUS_ERROR, STATUS_ANALYSIS, PLAYER_HUMAN +from katrain.core.lang import rank_label from katrain.gui.kivyutils import AnalysisToggle, CollapsablePanel @@ -80,7 +81,11 @@ class ControlsPanel(BoxLayout): self.players[bw].player_type = player_info.player_type self.players[bw].player_subtype = player_info.player_subtype self.players[bw].name = player_info.name - self.players[bw].rank = player_info.sgf_rank if player_info.player_type == PLAYER_HUMAN else player_info.calculated_rank + self.players[bw].rank = ( + player_info.sgf_rank + if player_info.player_type == PLAYER_HUMAN + else rank_label(player_info.calculated_rank) + ) def set_status(self, msg, status_type, at_node=None): at_node = at_node or self.katrain and self.katrain.game and self.katrain.game.current_node diff --git a/katrain/gui/popups.py b/katrain/gui/popups.py index e0368b8..8f730ac 100644 --- a/katrain/gui/popups.py +++ b/katrain/gui/popups.py @@ -25,9 +25,10 @@ from katrain.core.constants import ( OUTPUT_ERROR, OUTPUT_INFO, STATUS_INFO, + AI_KEY_PROPERTIES, ) from katrain.core.engine import KataGoEngine -from katrain.core.lang import i18n +from katrain.core.lang import i18n, rank_label from katrain.core.utils import PATHS, find_package_resource from katrain.gui.kivyutils import BackgroundMixin, I18NSpinner from katrain.gui.style import DEFAULT_FONT, EVAL_COLORS @@ -138,6 +139,7 @@ class LabelledIntInput(LabelledTextInput): class LabelledSelectionSlider(BoxLayout): input_property = StringProperty("") values = ListProperty([(0, "")]) # (value:numeric,label:string) pairs + key_option = BooleanProperty(False) def set_value(self, v): self.slider.set_value(v) @@ -319,19 +321,17 @@ class ConfigAIPopup(QuickConfigGui): def estimate_rank_from_options(self, *_args): strategy = self.ai_select.selected[1] options = self.collect_properties(self) # [strategy] - print(strategy, options) prefix = f"ai/{strategy}/" options = {k[len(prefix) :]: v for k, v in options.items() if k.startswith(prefix)} - print(options) dan_rank, model_based = ai_rank_estimation(strategy, options) - self.estimated_rank_label.text = ("" if model_based else "~") + RankGraph.rank_label(dan_rank) + self.estimated_rank_label.text = ("" if model_based else "~") + rank_label(dan_rank) def build_ai_options(self, *_args): strategy = self.ai_select.selected[1] mode_settings = self.katrain.config(f"ai/{strategy}") self.options_grid.clear_widgets() self.help_label.text = i18n._(strategy.replace("ai:", "aihelp:")) - for k, v in sorted(mode_settings.items(), key=lambda kv: kv[0]): + for k, v in sorted(mode_settings.items(), key=lambda kv: (kv[0] not in AI_KEY_PROPERTIES, kv[0])): self.options_grid.add_widget(DescriptionLabel(text=k, size_hint_x=0.25)) if k in AI_OPTION_VALUES: values = AI_OPTION_VALUES[k] @@ -344,7 +344,9 @@ class ConfigAIPopup(QuickConfigGui): fixed_values = [(v, re.sub(r"\[(.*?)\]", lambda m: i18n._(m[1]), l)) for v, l in values] else: # just numbers fixed_values = [(v, str(v)) for v in values] - widget = LabelledSelectionSlider(values=fixed_values, input_property=f"ai/{strategy}/{k}") + widget = LabelledSelectionSlider( + values=fixed_values, input_property=f"ai/{strategy}/{k}", key_option=(k in AI_KEY_PROPERTIES) + ) widget.set_value(v) widget.textbox.bind(text=self.estimate_rank_from_options) self.options_grid.add_widget(wrap_anchor(widget)) @@ -356,6 +358,10 @@ class ConfigAIPopup(QuickConfigGui): self.options_grid.add_widget(Label(size_hint_x=None)) Clock.schedule_once(self.estimate_rank_from_options) + def update_config(self, save_to_file=True): + super().update_config(save_to_file=save_to_file) + self.katrain.update_calculated_ranks() + class ConfigPopup(QuickConfigGui): def __init__(self, katrain): diff --git a/katrain/gui/widgets/graph.py b/katrain/gui/widgets/graph.py index 14ea4db..dc7ee6f 100644 --- a/katrain/gui/widgets/graph.py +++ b/katrain/gui/widgets/graph.py @@ -7,7 +7,7 @@ from kivy.properties import BooleanProperty, Clock, ListProperty, NumericPropert from kivymd.app import MDApp from katrain.core.constants import OUTPUT_ERROR -from katrain.core.lang import i18n +from katrain.core.lang import rank_label from katrain.gui.kivyutils import BackgroundMixin @@ -179,13 +179,6 @@ class RankGraph(Graph): self.calculate_trigger = Clock.create_trigger(lambda *args: self.rank_game(), 0.25) self.rank_by_player = {} - @staticmethod - def rank_label(rank): - if rank > 0: - return f"{rank:.0f}{i18n._('strength:dan')}" - else: - return f"{1-rank:.0f}{i18n._('strength:kyu')}" - @staticmethod def calculate_rank_for_player(segment_stats, num_intersec, player): non_obvious_moves = [ @@ -284,9 +277,9 @@ class RankGraph(Graph): min_rank -= 1 rank_range = max_rank - min_rank - self.ids.mid_marker.text = self.rank_label((max_rank + min_rank) / 2) - self.ids.top_marker.text = self.rank_label(max_rank) - self.ids.bottom_marker.text = self.rank_label(min_rank) + self.ids.mid_marker.text = rank_label((max_rank + min_rank) / 2) + self.ids.top_marker.text = rank_label(max_rank) + self.ids.bottom_marker.text = rank_label(min_rank) graph_points = {} for pl, rank_points in self.rank_by_player.items(): diff --git a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.mo index f47d12d23d2ffb380d031e5d360ccc5aa9e2f289..6ad6cb1cd5f46b14cb666e317ac86f807ef98408 100644 GIT binary patch delta 1143 zcmXZbOGwmF6vy#X;8c^^P)$~ojj5HHG)44Uq|if%a$$n2qU-@Jk_hZU1%uE|lO8Jx zS|qrN7!ZOMg}aD|Aqo;Hp+%Gx^rSb^_t*Sj;B(J?oO|!N^Z(xYwX@Kl$d^aN@5K>G zoRNu8JlAGzligxlZHGOG3D$Kx?!f`#UYx+xl86@kh?g-}9Z|s1>d40<8Yh=V^x@WQ z#27wAO}tqXF^ub%MO?vgJcP$q=JPBI0_~MVlS(s>^d* zIu6sJg{SRBPq>Oobj$sBaTf6d)Qz8be9ZA{#~c+LGoxRCe`@{6M5Z%A>XVtHwO4k>DEL(T7U|2bSsdJOZMX*aqbkvlI`E+5AzMJ*>>g_4r>F~j!4y`mERARF228Mj?53f_dr?nt zpfnKO?(ea^r~?hy8_1dCHtIj{43+04k~rQu{%ogE2cO+gnwS1B?_WzpC(of4?nG_0 z2X&Kuj?ddZROzpyHXKDIevH%cIV#V%eT90`x2QkiAJkK&SFxV`W0M-V0~@g&`BLJ7 z`v;LVG3>Z#U!XRcw4dw`JB51MGLmZEI=k7n;8AVdN<*dZ@IaS6hN{E~Jd1hM{GT2# gBfCDsa#Vi?Rmld_jhj(7Z6BFTrc)!+GN)4i0REnHvj6}9 delta 1147 zcmXZbOGwmF6vy#n!7xhd^iXU{GtI2*#Sqa8%Aib$a$&PA%xcj>iNXqMAcPi$>7rH= zv}mAJ#;k%Cg}Z7ILsS&@fEK-j>;V?m_t*Sj;B(J?oO|!N^PkNA%#K}5I}VU2CFYwQ-=X|whqCRo?+cmRip2k|A&T^O+yzu_=u>LbQ*ygqXAfX4BLhzq!F zQN%NRh?;o4F(Qxa7e|cX1omKGQ$!UOF^O+*9)7?|{ENCsWpl|i&L?g~U9{ct?&e&? z96Aoup@paHc~7{EN_5lxcd(rJKI+DgJ^sS+JI7z`A6vepl&2PJSl8@$V~&Or?!;Q` zLLKM`QoT5hdZH`t&to0&ZR8h4$G?!`M5?8y8jHWB_76=n7c=#jm8&G zNH2|`da(+%aTl(}1E@+|LLGS2ao!eCH@l14_zCI)KQM)}TTA0jb^|8ZKlad2;(e$m z=qU|EzxxO5AnHIP_8M~LxP|%;JVoVsjUp_6A&3wNP5 z+Kal$e#d9+5UTW7QHjP;6?ud+@Hr~agnf&8(vPS=;WX;0>Xx&f{bQ3F*nums8~IWq z=l)S-P26x?w69PbeX^5w%9fE#Pn$%|TW2@h?RZEVchXSlvmWTRM^TkHh9~hHYW{DJ lC&{kQuo~6hfU0C0>c;J;n|2r8SJb3tcJwtCrqd@<{{UhJbuIt^ diff --git a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po index 6af9d59..701e8d8 100644 --- a/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/cn/LC_MESSAGES/katrain.po @@ -588,7 +588,7 @@ msgstr "Continuously analyze" #. TODO - ai which handles handicap games better msgid "ai:handicap" -msgstr "KataGo Handicap" +msgstr "KataHandicap" #. TODO msgid "aihelp:handicap" diff --git a/katrain/i18n/locales/de/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/de/LC_MESSAGES/katrain.mo index 0f8649a8162792eb25e8e9e27b0a58dfdb8edfd0..6f262ecd73166e3909d517aa1ec43bf269f76f04 100644 GIT binary patch delta 1143 zcmXZbyH8VL7{~F)OWIOOdn%ws3sgl4cq`h3co~QTAPg)-!$tyiQ9}F!xoab%(+|Jv%!fc^@H{{36teQ59 z;07w*bna<3t0VR>i7i-*Ip;<6hzBr)qp07H;WAF*8lG!0o4{17*%IEuZ`hYH-)xuJ z(ZgmH4%&{GH4ty%d*Vc!*)Z`6ZV-32o87?!*`UxPR0CzK$2S6IesggiRR7 zv#3Tdbx@ySZI}a1cmp-zH1b=!?Y{Wboxes+x{P7`f-11;;$NsjzukGPGiWG{DwxIn zm`81P$af!%B179Xj9?Mf$SkVB18l$&s^PbI8mridUKd-$c1+Z}wghkY*7O)?m zV>kLcJoNIAJ8rfQZ(NyW>mo}s)1h2;RGJUITx2vjeo}s z?jRfVt@UJ(D2poCjeD^Vqd0_0bOrx6h?-~y8QvbECi{T;{#Vpp_<=FpLTxn66t(DK z9j4LK{p;dE6I{SJj-U#TBNx}EQHk!O5TV5%!wE9%nylva6`c$B;jZU3X5R-tiP_qw}bS z9;5P>u%O9a@Sv5vLnW-B60RZtJX^;FjFU~Pe}+o<3ALe$JO6{a1KycnQ+d2hJg~SP M-A*q4OqUw}0ZE&7N&o-= delta 1147 zcmXZbO-R#m9LMqRGM4=}o!fs#xz(nY4@-Me8bnVJAxkpwB84}b(Iq9i|MTRbbt#07 zMHY1^k`d7%qKN2$I#j|ACWT&v1TPU1QtyxZonHU%Z`=3j|J#k?RPjkE9K_7*N7}3w zS1^jJ&hU1#I$|H=*o+bEaUR14;(iR{FzWXs_z}l(9uMy@JCCW1**m<7b6Ch)U=}iK zYc`wZpuNQ`NxX*di4!}`&JfSxGI3X%*)?oxuNJzGYM_ihzCjNw*ntbE0iy)lFpc$i z5Y_0(4(c|`D@gqpK%k;q6&O>@iMB=Z+9N+tTvQE70lrl z%%e6t5V#M9k)iD()?x|O$P}u;9Zcd3s^Pb|7ZW6>H+rQ zbKH+XXt&vM9(pi=S1^y0sDdwX4}L?fuBNNnc>*^RXHf-ns0L2pKD>ZUc+16QRO5@7 z#ZdS91_Nv1L5Xsxg1xvA3+UkhD$!Y7ZxA)nBr?3+MNRez_5FF&U0A{>uAw&SF+~J@ ztiud8=>B!{pb3s*Jr1D?jv^P=CQylPqY^(tZRi!M@G9y~c)X7d7)QlP)E!Bo?nJBe z2=)>WVVL?>;z5aSBF)+~vL*Y1>i8d0!y@c8hKHP|P?McQO+JGBS?rQ?9QBSbqc%E? zYUm*1icEO1V3B!fshPLEFi6tpF^8Pr#T6;Zze!u7WJm2ScPNq+!bEiYu8c8o2 zr7A4qVw}Zl{D}+kFD}C9O3BYRp`YtOkN08-w_*eb@iwOM6ULgPA^d?)abT5Hz-U}q z6=}STOZV|gv-BOuTBPT=eYMoLKw7>=dQE@0RT{^{+ET#l7^Qy~Yw_6bs`IE zGlsDrz0S5^d?)(ucmJQ~{`b*vq6|jx4A$cWI(ZI#;u-Xnd_=0OZ|J~v9M^$cu?*X> z0=v)~Z@>mjq4(K=6kGeTg8g-YMm0_b6W7ppIfFjI?_gZ(OF`Pv&-b7M^rKHai2PVI z5|~C`F>b^cHl$o#?KgE$r%2^32d)5dycU> z^XvnSH+5#u@K)072llQqdyV_*&9WtCHLK00=yx`lox;=_Kj2-A(tm<+oWL*^kymXN z6+F~vR*4Bzzzpgjt&N^p6^(WVmSQhzfjlPhH0p(6RE6&0LL71ZQH;?acjNDI1^ptb zLUS0xK$9OhiW;v(t()@P#AZ~&ov4jEQKj!go#3eREGqC7T!;5j?|nq}vN_kUT5CqJ zY$Iy^AZnc>xCPH3f98$ye;bWiR0V2THG>&cNqevb^Qdp)CaUC*FpMuy6_`Xm7yE>1 z{DTVGu%0zBi|Xf4flgo<``cx|VS}iIH&7*hj6r;gD%qHue}^jZ4065p4;8FF~-S@PFLEYsv>I8q?cxkgAB#nB0J1RgM>ckz$ zkHxy2-KeYVK?S^uA-s+XIE;Nd@ogGWEVzj=)Pk>Y8NS8i_|5gZ_#m|4G1ND65*6ek c>S~6t0!MHczASu?e2tavKAbE}Rd0>Y1HA%yYybcN diff --git a/katrain/i18n/locales/en/LC_MESSAGES/katrain.po b/katrain/i18n/locales/en/LC_MESSAGES/katrain.po index 2843e4f..3854a0b 100644 --- a/katrain/i18n/locales/en/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/en/LC_MESSAGES/katrain.po @@ -520,7 +520,7 @@ msgstr "" #. ai which handles handicap games better msgid "ai:handicap" -msgstr "KataGo Handicap" +msgstr "KataHandicap" msgid "aihelp:handicap" msgstr "" diff --git a/katrain/i18n/locales/es/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/es/LC_MESSAGES/katrain.mo index 3d5b857e3b4a0c6bb0bf549b37dee12249658f6f..54f70c2c6b70a8ea36992219df1dfdb04e7b98f3 100644 GIT binary patch delta 1143 zcmXZbPe@cz6vy%7U^C7%e;mt3O>3%2C!0nia0JOVL6Ng^8$pFeVMvQ0BI0c_Dh67$ zC~Gl75R{ZyL5qo?KbTNRD=A8$Ae0u-w1^1n`|Dj8-sheB?mPF~bKhJV8XJ003VKm9 z8*eqM!#kM7Db)CLjN=^E;{wL;J2v17hA`RY$IYnsb6CNC{DgmS06%OX2X<^U`;DQr zc~(Zsmh z02fgOd`9J4M$P+y%^0V>>OdBQtZxI{#BmV$p6m!R*RHtnCs-h!aj|v#ok^e;XhQ8Q zjr>_G=ggxz)Q#%s2~E;{X5v delta 1147 zcmXZbUr1A77{~EvnwwkGx#jvZXU!IEYPOaaY~61`hy6CbS0S>6h+cSw4g5P`|BJyoX`85z2|wK_j%7QmB-4}alaEW zvl~gXM!btroWU@@z-C;)7F@w5{DCp_wVMU76%{8@@8|F-9>691i-&P(v)Kpi+G6$_ zLn(92=QC^QFni5|z*e&a@mpLb{+2cyCZ69$F~o)KX1CFoaSN%S3VVPX@HwjBMdY%t z+~OF^x`ky?g%&&qvW`1(kO!^&Fy{R*iPT_KT!#y&#Gi2u)-Z^FJR3UM1aSn_fjH{D z4Ek{&s-p+J=OxeM4g(#*SzM2oF^IQN3Gbj1-op^iBF(Zn%;73>8rI%r){6zC+ctvg zz&LKi8Pv|_@enR!KRTV=RL9^XYC;8-_!0i!F|vl$P&-NOa0|(xzJ=YWdHb;qOUPxX zxN*#O9aZ3CRN?PXo&AN4tZ#`PcgJa5%MU%M7WW|&tRK~xBC5b+s2z^tUYx)HzQPc` zK^3})VO;Uz@2LDW3}W3*ZGiI+GtdGFRH8iUqv=CFSSz89Xasep7m&-Yanp{Up^oZ3 z*5OA~0iRI$R#EeQ;wFsJUUi@w{j6_C7&PNi=MD=>i%upK|+9FE|NO=isjv-)Pf z*qboV#u=R0Y?j06q*)rHTg~FQC&h+%GED+_y2We|&u=qR;_q9{V)zkjaml%+&5XS) zhBdew>+vX7;xJa>c$;U|$e`dB+(X^)8h79fs`6D-Wuc7Ufhej|ji}0#?s^8-Gw(tr zbOg(A5Vi3LM(`qrvEVUKpzFvUb_=y|3Ke)3mFXu`0zZ(C{ozOJQ`>1b_M-w`z$Uzc zTd?SS>;7Lrnrc5Wi(Ug|?qhHqRrw9n1`knzXOWMs@S|s+Z1*c_#US%;)b$?RfCrGL zV*|(@b`^P=_6(KqJStwG<9~skbudtidr*P;P=Ryq`Z26zehSsnbI5VAJnqE%?)n_6 zlMARgOQ?c=VFi}4xC&#aGn2+J=g;;tQ06&|;1FuVG34M{9u=U7O5ic7LvJvOi>M6) zoqi#usClik0Tn-iI)qu|99ut@u)keqP=^If;T=?qrf?lDqbd$|`JG9lUeAoP6V<^i z@^aWg=ONt1{4lDcdDOasn@`{wWqOl=D!h#f{0MbwpJFw>!n^nm)tR&1eycB`=ALuH XSw!9c1oz_0$?xS~YbHO$TVnqJ(du+o delta 1147 zcmXZbO-NKx7{>7@nw)e-EiFxRY%CkUvMDW#)PjVJKHP)_LD3=+ix3KmS~OTOt2PF; z2r8)-LC}|NqEUM)4ai!Rg>E7BHX3JXEz5gD84^Df;=qt=*n-R6Ffo(oEBPU=?ODh4;`c8pGu{kFGe{n(Is>`twW&x1u}Pj(i;2 z6Woh!%=e)?I)q-A4fA2_^Gj)ukkL9qdRkYORm+I(DN(7;ou1R Y`KQ>4uSTZ}zLzZS9!!poC+f@p0T#J+(EtDd diff --git a/katrain/i18n/locales/fr/LC_MESSAGES/katrain.po b/katrain/i18n/locales/fr/LC_MESSAGES/katrain.po index 99fde04..bd22511 100644 --- a/katrain/i18n/locales/fr/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/fr/LC_MESSAGES/katrain.po @@ -665,7 +665,7 @@ msgstr "Continuous analysis" #. TODO - ai which handles handicap games better msgid "ai:handicap" -msgstr "KataGo Handicap" +msgstr "KataHandicap" #. TODO msgid "aihelp:handicap" diff --git a/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo b/katrain/i18n/locales/ko/LC_MESSAGES/katrain.mo index 97a171b9cb5bd85d89898e47333fbad2fbc31162..218461af92cf2bd53ad762d8533c84051fa7cfd6 100644 GIT binary patch delta 1143 zcmXZbUr3Wt7{~EnRMV!`=GJDKOQUSMvRX@8h$NI2L0QpN(JEM7SVBgSVGM7riy8zA zqIn}h7g1RRfp`5OFABOSBpXEC41!>R5i#id@E#cN=XuWizUMsWIqw#R=Z7EP^yTU$ zC1O%7?n2A^F@T3Kgc)qW%WixE?YTTQV-Z*2OZ4L_e1adagcIweV|cnvs^BwhUm`td zS58L>-mRDZa%1fV={R|0qxay24rw2GW|Q=j`_pmh4(2<(!s1;LL+V8cIj!#2F_ z@~0RfpTi)2Lwo*rSB^>uY7$=MooG8r;STI`gZI(C zg=w@Sokc&s#Q=W9DC_Gx0UxOTq3x_?yEkDRt>Rv^)}6p0p2r~^!vM~qE&K)T{W4ks zi)ag1(K=g`^fu6pc2p_!vA#wK?98shslwFw&uY=Ty_JmK;lwEy>B%wq;aSV7yFZ>M)ZfcAa@t>tM9 T;}IOib2DZCKxifzdl>x>%;|e( delta 1147 zcmXZbPe@cz6vy#j2$MelG}EY)iQ`Q4PshfrOf1QSYLFmGYZpONg5|;#jUeN-aG5PC zR})0zMqDKlMG&~_54kXCVTdI}5zI<3m=@9Z@GcDRbIyJ5zI*PuZ&rp@hh97g`P(F= z;!-Id#|k`!VZ4A*%wi?pcH@(1&rRb_%wrk8MGxQMJbuPCoNSc(@mfOKz*m^uBF!b` ztB>H*E~&_k#@*5-^1402gTs5J)8yHGQi1!k`&ksHn}Whp%@RZEMk{m>V>p2ceB$z# zSWCWy5&VJn{GVo@N(j7EPNKEx3DQ*ZHubm&<_*a*& z;|}g`puMl$Z;|Q=>aYge(O!HOtFRC4h_0ed7(sj9=Fu$WT)v2%JF0>7{XH{EyJQZvVy`KDu}|$2+SY_2c&!yVG!Cv z5<(#)P>5P66D|^JSIZ#Wl;J`HiJ}%s3m4V@_}=Pw&)hfno^$TG-{-sA=bPxybk<1< zgrqfCidk5W#aQi`#6sdO%*RI<#BsFmrm+A&q3!?1G_DOxbNCh?mUwXm+V{1% z1zRwHJ>KsFSVcUBmgr~4+gL`5P=H-~io+Phlehs}ktXRD?!hN`7C(4#*>0(s_#%>{ zCh-`4MVhD>e=5Oqcn?$9fzC3EE*96T-AupW5#nEHZ(da+(RH0dn~h$yiU!aU8%3T| z6IhQkSc`dk-2|HPDDeo=ba| zzC#3xk%R)!z8w$RWyy4aTbfQ z?x5=h%qQ+at85T6aNP4bwiCZZ>&T{hX(NWw60E^CJ0QVgJzhflumkPDZlp*(#2@$` nZMa@FxGh~o8?Gg^X)onHSgH|Mo(``O52wHRV|nR<(D%rHGVq0f delta 1149 zcmXZaUr1A77{~G7CRj+W&`qX#TiomcLT|{CQNE!V_K~6?^5k&?G zf*6DZ3Q@s?@FJn^>M{s#Y7t?PbyF8f7ee31b1uf`ea?IKp6AayIOMxM9*I6y8 zAS$iII0kSlMzF@S1J@B>$6|bdL7YN+Zx&1NBijC7%wQlUW$_I@#K&>zqED(Sm2TjZ zgdB~rh-{LYai&cAioPwX8MNhSx>1S*t{)0C2>OB%&R~y>h7(}aR7%j00WSq)i zJC1%_n?rpgKSiyRosf!vOcs*M=^?%coN^D zU9Qso?wvS-mhf@3PIY4*Uc)%vL@RIt?Q*`t0N>Y&1MWr<(sd=V9nYgxG>e^>#RxXk zxt_*i;sLbEM$nH_o=>rd_&Hif!u3)SCeRYB#j|!mD~o*WM0@cP+JSvYk-CS!@ExY` pWrN$&1+>exh<4lK%!8#`aCvmtO+23YkyjDQY3_|?ilRT`{{eCch5P^j diff --git a/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po b/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po index 22a574d..87db126 100644 --- a/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po +++ b/katrain/i18n/locales/ru/LC_MESSAGES/katrain.po @@ -628,7 +628,7 @@ msgstr "Continuous analysis" #. TODO - ai which handles handicap games better msgid "ai:handicap" -msgstr "KataGo Handicap" +msgstr "KataHandicap" #. TODO msgid "aihelp:handicap" diff --git a/katrain/popups.kv b/katrain/popups.kv index 589c672..9f16abd 100644 --- a/katrain/popups.kv +++ b/katrain/popups.kv @@ -403,7 +403,7 @@ values: root.values on_select: textbox.text = str(slider.value) track_color: LIGHTGREY - thumb_color: 0.5, 0.6, 0.8, 1 + thumb_color: (0.6, 0.7, 0.9, 1) if root.key_option else (0.3, 0.4, 0.6, 1) LabelledFloatInput: id: textbox