53
53
54
54
55
55
APP_NAME = 'Python Easy Chess GUI'
56
- APP_VERSION = 'v0.74 '
56
+ APP_VERSION = 'v0.75 '
57
57
BOX_TITLE = '{} {}' .format (APP_NAME , APP_VERSION )
58
58
59
59
150
150
1. Copy exe file in the engines directory
151
151
152
152
(H) To show engine search info
153
- 1. Engine->Unhide Search Info
153
+ 1. Press the ENGINE SEARCH INFO text
154
154
155
155
(I) To hide Book 1 and Book 2
156
156
1. Press the Book 1 or Book 2 text
212
212
'User Draws::user_draws_k' ]],
213
213
['FEN' , ['Paste' ]],
214
214
['&Engine' , ['Go' , 'Move Now' , 'Set Engine' , 'Set Depth' ,
215
- 'Set Movetime' , 'Get Settings::engine_info_k' ,
216
- 'Unhide Search Info' ]],
215
+ 'Set Movetime' , 'Get Settings::engine_info_k' ]],
217
216
['&Book' , ['Set Book::book_set_k' ]],
218
217
['&Help' , ['About' ]],
219
218
]
@@ -414,30 +413,6 @@ def __init__(self, gui_book_file, computer_book_file, human_book_file,
414
413
self .psg_board = None
415
414
self .engine_list = self .get_engines ()
416
415
self .menu_elem = None
417
-
418
- def update_play_menu (self , menu , hide ):
419
- """ Change menu entry, Hide/Unhide Search Info """
420
- new_menu = []
421
- new_entry = 'Hide Search Info' if hide else 'Unhide Search Info'
422
- hide = not hide
423
-
424
- # Modify menu and save it to new menu
425
- for e in menu :
426
- # Find the engine menu and modify its sub-menu
427
- if e [0 ] == 'Engine' :
428
- sub_menu = e [1 ]
429
-
430
- # Update the last entry of sub_menu, since the entry that we
431
- # are going to update is found last in the engine sub-menu.
432
- sub_menu [len (sub_menu )- 1 ] = new_entry
433
-
434
- # Rebuild the engine menu
435
- new_menu .append ([e [0 ], sub_menu ])
436
- else :
437
- # Just append the other menu that is not affected
438
- new_menu .append (e )
439
-
440
- return new_menu , hide
441
416
442
417
def update_engine_selection (self , engine_filename ):
443
418
""" """
@@ -871,8 +846,7 @@ def play_game(self, engine_id_name, board):
871
846
872
847
# For saving game
873
848
move_cnt = 0
874
-
875
- is_hide_engine_search_info = True
849
+
876
850
is_user_resigns = False
877
851
is_user_wins = False
878
852
is_user_draws = False
@@ -882,8 +856,13 @@ def play_game(self, engine_id_name, board):
882
856
is_search_stop_for_resign = False
883
857
is_search_stop_for_user_wins = False
884
858
is_search_stop_for_user_draws = False
885
- is_hide_book1 = False
886
- is_hide_book2 = False
859
+ is_hide_book1 = True
860
+ is_hide_book2 = True
861
+ is_hide_search_info = True
862
+
863
+ self .window .Element ('book1_k' ).Update (text_color = 'green' if is_hide_book1 else 'red' )
864
+ self .window .Element ('book2_k' ).Update (text_color = 'green' if is_hide_book2 else 'red' )
865
+ self .window .Element ('search_info_k' ).Update (text_color = 'green' if is_hide_search_info else 'red' )
887
866
888
867
# Game loop
889
868
while not board .is_game_over (claim_draw = True ):
@@ -918,14 +897,6 @@ def play_game(self, engine_id_name, board):
918
897
while True :
919
898
button , value = self .window .Read (timeout = 100 )
920
899
921
- # User can hide/unhide search info when engine is to move
922
- # on its first move in Play mode
923
- if button == 'Hide Search Info' or button == 'Unhide Search Info' :
924
- new_menu , is_hide_engine_search_info = self .update_play_menu (
925
- menu_def_play , is_hide_engine_search_info )
926
- self .menu_elem .Update (new_menu )
927
- continue
928
-
929
900
# Allow user to change book settings when engine is to move
930
901
# on its first move in Play mode
931
902
if button == 'Set Book::book_set_k' :
@@ -1137,21 +1108,21 @@ def play_game(self, engine_id_name, board):
1137
1108
if not is_human_stm :
1138
1109
break
1139
1110
1111
+ if button == 'search_info_k' :
1112
+ is_hide_search_info = not is_hide_search_info
1113
+ self .window .Element ('search_info_k' ).Update (text_color = 'green' if is_hide_search_info else 'red' )
1114
+ break
1115
+
1140
1116
if button == 'book1_k' :
1141
1117
is_hide_book1 = not is_hide_book1
1118
+ self .window .Element ('book1_k' ).Update (text_color = 'green' if is_hide_book1 else 'red' )
1142
1119
break
1143
1120
1144
1121
if button == 'book2_k' :
1145
1122
is_hide_book2 = not is_hide_book2
1123
+ self .window .Element ('book2_k' ).Update (text_color = 'green' if is_hide_book2 else 'red' )
1146
1124
break
1147
1125
1148
- # User can hide/unhide search info when user is to move on Play mode
1149
- if button == 'Hide Search Info' or button == 'Unhide Search Info' :
1150
- new_menu , is_hide_engine_search_info = self .update_play_menu (
1151
- menu_def_play , is_hide_engine_search_info )
1152
- self .menu_elem .Update (new_menu )
1153
- continue
1154
-
1155
1126
if button == 'Get Settings::engine_info_k' :
1156
1127
self .get_engine_settings (engine_id_name )
1157
1128
break
@@ -1306,12 +1277,6 @@ def play_game(self, engine_id_name, board):
1306
1277
if button == 'New::new_game_k' or is_search_stop_for_new_game :
1307
1278
is_new_game = True
1308
1279
self .clear_elements ()
1309
-
1310
- # Restore to hide by default
1311
- if not is_hide_engine_search_info :
1312
- new_menu , is_hide_engine_search_info = self .update_play_menu (
1313
- menu_def_play , is_hide_engine_search_info )
1314
- self .menu_elem .Update (new_menu )
1315
1280
break
1316
1281
1317
1282
if button == 'Save::save_game_k' :
@@ -1349,12 +1314,6 @@ def play_game(self, engine_id_name, board):
1349
1314
if button == 'Neutral' or is_search_stop_for_neutral :
1350
1315
is_exit_game = True
1351
1316
self .clear_elements ()
1352
-
1353
- # Restore to hide by default
1354
- if not is_hide_engine_search_info :
1355
- new_menu , is_hide_engine_search_info = self .update_play_menu (
1356
- menu_def_play , is_hide_engine_search_info )
1357
- self .menu_elem .Update (new_menu )
1358
1317
break
1359
1318
1360
1319
if button == 'About' :
@@ -1537,30 +1496,46 @@ def play_game(self, engine_id_name, board):
1537
1496
while True :
1538
1497
button , value = self .window .Read (timeout = 10 )
1539
1498
1499
+ # Hide/Unhide engine searching info while engine is thinking
1500
+ if button == 'search_info_k' :
1501
+ is_hide_search_info = not is_hide_search_info
1502
+ self .window .Element ('search_info_k' ).Update (text_color = 'green' if is_hide_search_info else 'red' )
1503
+
1504
+ # Hide/Unhide book 1 while engine is searching
1505
+ if button == 'book1_k' :
1506
+ is_hide_book1 = not is_hide_book1
1507
+ self .window .Element ('book1_k' ).Update (text_color = 'green' if is_hide_book1 else 'red' )
1508
+
1509
+ if is_hide_book1 :
1510
+ self .window .Element ('polyglot_book1_k' ).Update ('' )
1511
+ else :
1512
+ ref_book1 = GuiBook (self .computer_book_file , board , self .is_random_book )
1513
+ all_moves , is_found = ref_book1 .get_all_moves ()
1514
+ if is_found :
1515
+ self .window .Element ('polyglot_book1_k' ).Update (all_moves )
1516
+ else :
1517
+ self .window .Element ('polyglot_book1_k' ).Update ('no book moves' )
1518
+
1519
+ # Hide/Unhide book 2 while engine is searching
1520
+ if button == 'book2_k' :
1521
+ is_hide_book2 = not is_hide_book2
1522
+ self .window .Element ('book2_k' ).Update (text_color = 'green' if is_hide_book2 else 'red' )
1523
+
1524
+ if is_hide_book2 :
1525
+ self .window .Element ('polyglot_book2_k' ).Update ('' )
1526
+ else :
1527
+ ref_book2 = GuiBook (self .human_book_file , board , self .is_random_book )
1528
+ all_moves , is_found = ref_book2 .get_all_moves ()
1529
+ if is_found :
1530
+ self .window .Element ('polyglot_book2_k' ).Update (all_moves )
1531
+ else :
1532
+ self .window .Element ('polyglot_book2_k' ).Update ('no book moves' )
1533
+
1540
1534
# Exit app while engine is thinking
1541
1535
if button == 'Exit' :
1542
1536
search .stop ()
1543
1537
logging .info ('Exit app while engine is searching' )
1544
1538
is_search_stop_for_exit = True
1545
-
1546
- # Get the engine search info and display it in GUI text boxes
1547
- try :
1548
- msg = self .queue .get_nowait ()
1549
- except :
1550
- continue
1551
-
1552
- msg_str = str (msg )
1553
- best_move = self .update_text_box (msg , is_hide_engine_search_info )
1554
- if 'bestmove' in msg_str :
1555
- logging .info ('engine msg: {}' .format (msg_str ))
1556
- break
1557
-
1558
- # User can hide/unhide search info while engine is thinking on Play mode
1559
- if button == 'Hide Search Info' or button == 'Unhide Search Info' :
1560
- new_menu , is_hide_engine_search_info = self .update_play_menu (
1561
- menu_def_play , is_hide_engine_search_info )
1562
- self .menu_elem .Update (new_menu )
1563
- continue
1564
1539
1565
1540
# Forced engine to move now and create a new game
1566
1541
if button == 'New::new_game_k' :
@@ -1587,6 +1562,18 @@ def play_game(self, engine_id_name, board):
1587
1562
if button == 'User Draws::user_draws_k' :
1588
1563
search .stop ()
1589
1564
is_search_stop_for_user_draws = True
1565
+
1566
+ # Get the engine search info and display it in GUI text boxes
1567
+ try :
1568
+ msg = self .queue .get_nowait ()
1569
+ except :
1570
+ continue
1571
+
1572
+ msg_str = str (msg )
1573
+ best_move = self .update_text_box (msg , is_hide_search_info )
1574
+ if 'bestmove' in msg_str :
1575
+ logging .info ('engine msg: {}' .format (msg_str ))
1576
+ break
1590
1577
1591
1578
search .join ()
1592
1579
search .quit_engine ()
@@ -1676,12 +1663,6 @@ def play_game(self, engine_id_name, board):
1676
1663
1677
1664
self .clear_elements ()
1678
1665
1679
- # Restore to hide by default
1680
- if not is_hide_engine_search_info :
1681
- new_menu , is_hide_engine_search_info = self .update_play_menu (
1682
- menu_def_play , is_hide_engine_search_info )
1683
- self .menu_elem .Update (new_menu )
1684
-
1685
1666
return False if is_exit_game else is_new_game
1686
1667
1687
1668
def save_game (self ):
@@ -1824,7 +1805,8 @@ def build_main_layout(self):
1824
1805
sg .Multiline ('' , do_not_clear = True , autoscroll = False , size = (2 , 12 ),
1825
1806
font = ('Consolas' , 10 ), key = 'polyglot_book2_k' , disabled = True )],
1826
1807
1827
- [sg .Text ('ENGINE SEARCH INFO' , font = ('Consolas' , 10 ), size = (28 , 1 ))],
1808
+ [sg .Text ('ENGINE SEARCH INFO' , font = ('Consolas' , 10 ), size = (28 , 1 ),
1809
+ click_submits = True , key = 'search_info_k' )],
1828
1810
[sg .Text ('' , key = 'info_score_k' , size = (8 , 1 ), background_color = bc ),
1829
1811
sg .Text ('' , key = 'info_pv_k' , size = (28 , 1 ), background_color = bc )],
1830
1812
0 commit comments