add new field and remove old fields
							parent
							
								
									29fe93ba37
								
							
						
					
					
						commit
						e407ea84e8
					
				
							
								
								
									
										194
									
								
								settings.py
								
								
								
								
							
							
						
						
									
										194
									
								
								settings.py
								
								
								
								
							|  | @ -25,11 +25,19 @@ import threading | |||
| import subprocess | ||||
| import json | ||||
| 
 | ||||
| import requests | ||||
| import warnings | ||||
| from urllib3.exceptions import InsecureRequestWarning | ||||
| warnings.simplefilter('ignore',InsecureRequestWarning) | ||||
| import ssl | ||||
| ssl._create_default_https_context = ssl._create_unverified_context | ||||
| 
 | ||||
| CONST_APP_VERSION = "MaxBot (2023.6.14)" | ||||
| 
 | ||||
| CONST_MAXBOT_CONFIG_FILE = "settings.json" | ||||
| CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt" | ||||
| CONST_MAXBOT_INT28_FILE = "MAXBOT_INT28_IDLE.txt" | ||||
| CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt" | ||||
| 
 | ||||
| CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom" | ||||
| CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top" | ||||
|  | @ -99,9 +107,10 @@ def load_translate(): | |||
|     en_us["auto_press_next_step_button"] = 'Auto Press Next Step Button' | ||||
|     en_us["auto_fill_ticket_number"] = 'Auto Fill Ticket Number' | ||||
|     en_us["and"] = 'And with' | ||||
| 
 | ||||
|     en_us["online_dictionary_url"] = 'Online Dictionary URL' | ||||
|     en_us["auto_guess_options"] = 'Guess Options in Question' | ||||
|     en_us["user_guess_string"] = 'Fill This Answer in Question' | ||||
|     en_us["presale_code_delimiter"] = 'Answer delimiter' | ||||
|     en_us["user_guess_string"] = 'Fill Answers in Question' | ||||
| 
 | ||||
|     en_us["date_auto_select"] = 'Date Auto Select' | ||||
|     en_us["date_select_order"] = 'Date select order' | ||||
|  | @ -190,9 +199,10 @@ def load_translate(): | |||
|     zh_tw["auto_press_next_step_button"] = '自動點選下一步按鈕' | ||||
|     zh_tw["auto_fill_ticket_number"] = '自動輸入張數' | ||||
|     zh_tw["and"] = '而且(同列)' | ||||
| 
 | ||||
|     zh_tw["online_dictionary_url"] = '線上字典檔網址' | ||||
|     zh_tw["auto_guess_options"] = '自動猜測驗證問題' | ||||
|     zh_tw["user_guess_string"] = '在驗證問題中填寫此答案' | ||||
|     zh_tw["presale_code_delimiter"] = '答案中的分隔符號' | ||||
|     zh_tw["user_guess_string"] = '驗證問題中的答案清單' | ||||
| 
 | ||||
|     zh_tw["date_auto_select"] = '日期自動點選' | ||||
|     zh_tw["date_select_order"] = '日期排序方式' | ||||
|  | @ -280,9 +290,10 @@ def load_translate(): | |||
|     zh_cn["auto_press_next_step_button"] = '自动点选下一步按钮' | ||||
|     zh_cn["auto_fill_ticket_number"] = '自动输入张数' | ||||
|     zh_cn["and"] = '而且(同列)' | ||||
| 
 | ||||
|     zh_cn["online_dictionary_url"] = '在线词典网址' | ||||
|     zh_cn["auto_guess_options"] = '自动猜测验证问题' | ||||
|     zh_cn["user_guess_string"] = '在验证问题中填写此答案' | ||||
|     zh_cn["presale_code_delimiter"] = '答案中的分隔符号' | ||||
|     zh_cn["user_guess_string"] = '验证问题的答案列表' | ||||
| 
 | ||||
|     zh_cn["date_auto_select"] = '日期自动点选' | ||||
|     zh_cn["date_select_order"] = '日期排序方式' | ||||
|  | @ -371,9 +382,10 @@ def load_translate(): | |||
|     ja_jp["auto_press_next_step_button"] = '次を自動で押す' | ||||
|     ja_jp["auto_fill_ticket_number"] = '枚数自動入力' | ||||
|     ja_jp["and"] = 'そして(同列)' | ||||
| 
 | ||||
|     ja_jp["online_dictionary_url"] = 'オンライン辞書のURL' | ||||
|     ja_jp["auto_guess_options"] = '自動推測検証問題' | ||||
|     ja_jp["user_guess_string"] = '質問に回答を記入' | ||||
|     ja_jp["presale_code_delimiter"] = '回答区切り' | ||||
|     ja_jp["user_guess_string"] = '検証用の質問の回答リスト' | ||||
| 
 | ||||
|     ja_jp["date_auto_select"] = '日付自動選択' | ||||
|     ja_jp["date_select_order"] = '日付のソート方法' | ||||
|  | @ -509,7 +521,6 @@ def get_default_config(): | |||
|     config_dict['kktix']={} | ||||
|     config_dict["kktix"]["auto_press_next_step_button"] = True | ||||
|     config_dict["kktix"]["auto_fill_ticket_number"] = True | ||||
|     config_dict["kktix"]["user_guess_string"] = "" | ||||
| 
 | ||||
|     config_dict['tixcraft']={} | ||||
|     config_dict["tixcraft"]["date_auto_select"] = {} | ||||
|  | @ -525,8 +536,6 @@ def get_default_config(): | |||
| 
 | ||||
|     config_dict["tixcraft"]["pass_date_is_sold_out"] = True | ||||
|     config_dict["tixcraft"]["auto_reload_coming_soon_page"] = True | ||||
|     config_dict["tixcraft"]["presale_code"] = "" | ||||
|     config_dict["tixcraft"]["presale_code_delimiter"] = "" | ||||
| 
 | ||||
|     config_dict['advanced']={} | ||||
| 
 | ||||
|  | @ -555,8 +564,10 @@ def get_default_config(): | |||
|     config_dict["advanced"]["headless"] = False | ||||
|     config_dict["advanced"]["verbose"] = False | ||||
|     config_dict["advanced"]["auto_guess_options"] = False | ||||
|     config_dict["advanced"]["user_guess_string"] = "" | ||||
|     config_dict["advanced"]["online_dictionary_url"] = "" | ||||
| 
 | ||||
|     config_dict["advanced"]["auto_reload_page_interval"] = 2.0 | ||||
|     config_dict["advanced"]["auto_reload_page_interval"] = 1.5 | ||||
|     config_dict["advanced"]["auto_reload_random_delay"] = False | ||||
| 
 | ||||
|     return config_dict | ||||
|  | @ -683,7 +694,7 @@ def btn_save_act(language_code, slience_mode=False): | |||
| 
 | ||||
|     global chk_state_auto_press_next_step_button | ||||
|     global chk_state_auto_fill_ticket_number | ||||
|     global txt_kktix_user_guess_string | ||||
|     global txt_user_guess_string | ||||
| 
 | ||||
|     global chk_state_date_auto_select | ||||
|     global txt_date_keyword | ||||
|  | @ -696,8 +707,6 @@ def btn_save_act(language_code, slience_mode=False): | |||
| 
 | ||||
|     global chk_state_pass_date_is_sold_out | ||||
|     global chk_state_auto_reload_coming_soon_page | ||||
|     global txt_presale_code | ||||
|     global txt_presale_code_delimiter | ||||
|     global txt_auto_reload_page_interval | ||||
|     global chk_state_auto_reload_random_delay | ||||
| 
 | ||||
|  | @ -770,7 +779,6 @@ def btn_save_act(language_code, slience_mode=False): | |||
| 
 | ||||
|         config_dict["kktix"]["auto_press_next_step_button"] = bool(chk_state_auto_press_next_step_button.get()) | ||||
|         config_dict["kktix"]["auto_fill_ticket_number"] = bool(chk_state_auto_fill_ticket_number.get()) | ||||
|         config_dict["kktix"]["user_guess_string"] = txt_kktix_user_guess_string.get().strip() | ||||
| 
 | ||||
|         config_dict["tixcraft"]["date_auto_select"]["enable"] = bool(chk_state_date_auto_select.get()) | ||||
|         config_dict["tixcraft"]["date_auto_select"]["mode"] = combo_date_auto_select_mode.get().strip() | ||||
|  | @ -778,8 +786,6 @@ def btn_save_act(language_code, slience_mode=False): | |||
| 
 | ||||
|         config_dict["tixcraft"]["pass_date_is_sold_out"] = bool(chk_state_pass_date_is_sold_out.get()) | ||||
|         config_dict["tixcraft"]["auto_reload_coming_soon_page"] = bool(chk_state_auto_reload_coming_soon_page.get()) | ||||
|         config_dict["tixcraft"]["presale_code"] = txt_presale_code.get().strip() | ||||
|         config_dict["tixcraft"]["presale_code_delimiter"] = txt_presale_code_delimiter.get().strip() | ||||
| 
 | ||||
|         area_keyword = txt_area_keyword.get("1.0",END).strip() | ||||
|         if len(area_keyword) > 0: | ||||
|  | @ -789,6 +795,10 @@ def btn_save_act(language_code, slience_mode=False): | |||
|         if len(area_keyword_exclude) > 0: | ||||
|             if not ('\"' in area_keyword_exclude): | ||||
|                 area_keyword_exclude = '"' + area_keyword_exclude + '"' | ||||
|         user_guess_string = txt_user_guess_string.get("1.0",END).strip() | ||||
|         if len(user_guess_string) > 0: | ||||
|             if not ('\"' in user_guess_string): | ||||
|                 user_guess_string = '"' + user_guess_string + '"' | ||||
| 
 | ||||
|         config_dict["area_auto_select"]["enable"] = bool(chk_state_area_auto_select.get()) | ||||
|         config_dict["area_auto_select"]["mode"] = combo_area_auto_select_mode.get().strip() | ||||
|  | @ -838,6 +848,9 @@ def btn_save_act(language_code, slience_mode=False): | |||
|         config_dict["webdriver_type"] = combo_webdriver_type.get().strip() | ||||
|         config_dict["advanced"]["headless"] = bool(chk_state_headless.get()) | ||||
|         config_dict["advanced"]["verbose"] = bool(chk_state_verbose.get()) | ||||
| 
 | ||||
|         config_dict["advanced"]["user_guess_string"] = user_guess_string | ||||
|         config_dict["advanced"]["online_dictionary_url"] = txt_online_dictionary_url.get().strip() | ||||
|         config_dict["advanced"]["auto_guess_options"] = bool(chk_state_auto_guess_options.get()) | ||||
| 
 | ||||
|         config_dict["advanced"]["auto_reload_page_interval"] = float(txt_auto_reload_page_interval.get().strip()) | ||||
|  | @ -864,6 +877,16 @@ def btn_save_act(language_code, slience_mode=False): | |||
|                 is_all_data_correct = False | ||||
|                 pass | ||||
| 
 | ||||
|     if is_all_data_correct: | ||||
|         user_guess_string = config_dict["advanced"]["user_guess_string"] | ||||
|         if len(user_guess_string) > 0: | ||||
|             try: | ||||
|                 user_guess_string_array = json.loads("["+ user_guess_string +"]") | ||||
|             except Exception as exc: | ||||
|                 messagebox.showinfo(translate[language_code]["save"], "Error:" + translate[language_code]["user_guess_string"]) | ||||
|                 is_all_data_correct = False | ||||
|                 pass | ||||
| 
 | ||||
|     # save config. | ||||
|     if is_all_data_correct: | ||||
|         if not slience_mode: | ||||
|  | @ -934,6 +957,50 @@ def launch_maxbot(): | |||
|                 #messagebox.showinfo(title="Debug2", message=msg) | ||||
|                 pass | ||||
| 
 | ||||
| def show_preview_text(): | ||||
|     app_root = get_app_root() | ||||
|     preview_text_filenpath = os.path.join(app_root, CONST_MAXBOT_ANSWER_ONLINE_FILE) | ||||
| 
 | ||||
|     text = "" | ||||
|     if os.path.exists(preview_text_filenpath): | ||||
|         with open(preview_text_filenpath, "r") as text_file: | ||||
|             text = text_file.readline() | ||||
|         try: | ||||
|             global lbl_online_dictionary_preview | ||||
|             lbl_online_dictionary_preview.config(text=text) | ||||
|         except Exception as exc: | ||||
|             pass | ||||
| 
 | ||||
| def save_url_to_file(new_online_dictionary_url): | ||||
|     if len(new_online_dictionary_url) > 0: | ||||
|         user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' | ||||
|         headers = {"Accept-Language": "zh-TW,zh;q=0.5", 'User-Agent': user_agent} | ||||
|         html_result = None | ||||
|         try: | ||||
|             html_result = requests.get(new_online_dictionary_url , headers=headers, timeout=0.7, allow_redirects=False) | ||||
|         except Exception as exc: | ||||
|             html_result = None | ||||
|             print(exc) | ||||
|         if not html_result is None: | ||||
|             status_code = html_result.status_code | ||||
|             print("status_code:", status_code) | ||||
|             if status_code == 200: | ||||
|                 html_text = html_result.text | ||||
|                 if len(html_text) > 0: | ||||
|                     with open(CONST_MAXBOT_ANSWER_ONLINE_FILE, "w") as text_file: | ||||
|                         text_file.write("%s" % html_text) | ||||
|     else: | ||||
|         with open(CONST_MAXBOT_ANSWER_ONLINE_FILE, "w") as text_file: | ||||
|             text_file.write("") | ||||
| 
 | ||||
| def btn_preview_text_clicked(): | ||||
|     global txt_online_dictionary_url | ||||
|     new_online_dictionary_url = txt_online_dictionary_url.get().strip() | ||||
|     print("new_online_dictionary_url:", new_online_dictionary_url) | ||||
|     save_url_to_file(new_online_dictionary_url) | ||||
|     show_preview_text() | ||||
| 
 | ||||
| 
 | ||||
| def btn_preview_sound_clicked(): | ||||
|     global txt_captcha_sound_filename | ||||
|     new_sound_filename = txt_captcha_sound_filename.get().strip() | ||||
|  | @ -1023,8 +1090,6 @@ def applyNewLanguage(): | |||
| 
 | ||||
|     global lbl_pass_date_is_sold_out | ||||
|     global lbl_auto_reload_coming_soon_page | ||||
|     global lbl_presale_code | ||||
|     global lbl_presale_code_delimiter | ||||
|     global lbl_ocr_captcha | ||||
|     global lbl_ocr_captcha_force_submit | ||||
|     global lbl_ocr_captcha_image_source | ||||
|  | @ -1053,6 +1118,7 @@ def applyNewLanguage(): | |||
|     global chk_adjacent_seat | ||||
|     global chk_headless | ||||
|     global chk_verbose | ||||
|     global lbl_online_dictionary_url | ||||
|     global chk_auto_guess_options | ||||
|     global chk_auto_reload_random_delay | ||||
| 
 | ||||
|  | @ -1091,8 +1157,6 @@ def applyNewLanguage(): | |||
|     lbl_area_keyword_usage.config(text=translate[language_code]["area_keyword_usage"]) | ||||
|     lbl_pass_date_is_sold_out.config(text=translate[language_code]["pass_date_is_sold_out"]) | ||||
|     lbl_auto_reload_coming_soon_page.config(text=translate[language_code]["auto_reload_coming_soon_page"]) | ||||
|     lbl_presale_code.config(text=translate[language_code]["user_guess_string"]) | ||||
|     lbl_presale_code_delimiter.config(text=translate[language_code]["presale_code_delimiter"]) | ||||
|     lbl_ocr_captcha.config(text=translate[language_code]["ocr_captcha"]) | ||||
|     lbl_ocr_captcha_force_submit.config(text=translate[language_code]["ocr_captcha_force_submit"]) | ||||
|     lbl_ocr_captcha_image_source.config(text=translate[language_code]["ocr_captcha_image_source"]) | ||||
|  | @ -1103,6 +1167,8 @@ def applyNewLanguage(): | |||
| 
 | ||||
|     lbl_headless.config(text=translate[language_code]["headless"]) | ||||
|     lbl_verbose.config(text=translate[language_code]["verbose"]) | ||||
| 
 | ||||
|     lbl_online_dictionary_url.config(text=translate[language_code]["online_dictionary_url"]) | ||||
|     lbl_auto_guess_options.config(text=translate[language_code]["auto_guess_options"]) | ||||
| 
 | ||||
|     lbl_maxbot_status.config(text=translate[language_code]["running_status"]) | ||||
|  | @ -1320,14 +1386,12 @@ def showHideAreaBlocks(): | |||
| 
 | ||||
|     area_keyword_index = area_auto_select_mode_index + 1 | ||||
|     area_keyword_exclude_index = area_auto_select_mode_index + 2 | ||||
|     area_keyword_usage_index = area_auto_select_mode_index + 3 | ||||
| 
 | ||||
|     global lbl_area_keyword | ||||
|     global txt_area_keyword | ||||
| 
 | ||||
|     global lbl_area_keyword_exclude | ||||
|     global txt_area_keyword_exclude | ||||
|     global lbl_area_keyword_usage | ||||
| 
 | ||||
|     is_area_set_to_enable = bool(chk_state_area_auto_select.get()) | ||||
| 
 | ||||
|  | @ -1342,7 +1406,6 @@ def showHideAreaBlocks(): | |||
|         lbl_area_keyword_exclude.grid(column=0, row=area_keyword_exclude_index, sticky = E+N) | ||||
|         txt_area_keyword_exclude.grid(column=1, row=area_keyword_exclude_index, sticky = W) | ||||
| 
 | ||||
|         lbl_area_keyword_usage.grid(column=1, row=area_keyword_usage_index, sticky = E) | ||||
|     else: | ||||
|         # hide | ||||
|         lbl_area_auto_select_mode.grid_forget() | ||||
|  | @ -1354,7 +1417,6 @@ def showHideAreaBlocks(): | |||
|         lbl_area_keyword_exclude.grid_forget() | ||||
|         txt_area_keyword_exclude.grid_forget() | ||||
| 
 | ||||
|         lbl_area_keyword_usage.grid_forget() | ||||
| 
 | ||||
| def on_homepage_configure(event): | ||||
|     font = tkfont.nametofont(str(event.widget.cget('font'))) | ||||
|  | @ -1489,18 +1551,6 @@ def PreferenctTab(root, config_dict, language_code, UI_PADDING_X): | |||
|     chk_auto_fill_ticket_number = Checkbutton(frame_group_kktix, text=translate[language_code]['enable'], variable=chk_state_auto_fill_ticket_number) | ||||
|     chk_auto_fill_ticket_number.grid(column=1, row=group_row_count, sticky = W) | ||||
| 
 | ||||
|     group_row_count+=1 | ||||
| 
 | ||||
|     global lbl_user_guess_string | ||||
|     lbl_user_guess_string = Label(frame_group_kktix, text=translate[language_code]['user_guess_string']) | ||||
|     lbl_user_guess_string.grid(column=0, row=group_row_count, sticky = E) | ||||
| 
 | ||||
|     global txt_kktix_user_guess_string | ||||
|     txt_kktix_user_guess_string_value = StringVar(frame_group_kktix, value=config_dict["kktix"]["user_guess_string"].strip()) | ||||
|     txt_kktix_user_guess_string = Entry(frame_group_kktix, width=30, textvariable = txt_kktix_user_guess_string_value) | ||||
|     txt_kktix_user_guess_string.grid(column=1, row=group_row_count, sticky = W) | ||||
| 
 | ||||
| 
 | ||||
|     global frame_group_kktix_index | ||||
|     frame_group_kktix_index = row_count | ||||
|     #PS: don't need show when onload(), because show/hide block will load again. | ||||
|  | @ -1585,34 +1635,6 @@ def PreferenctTab(root, config_dict, language_code, UI_PADDING_X): | |||
|     chk_auto_reload_coming_soon_page = Checkbutton(frame_group_tixcraft, text=translate[language_code]['enable'], variable=chk_state_auto_reload_coming_soon_page) | ||||
|     chk_auto_reload_coming_soon_page.grid(column=1, row=group_row_count, sticky = W) | ||||
| 
 | ||||
|     group_row_count+=1 | ||||
| 
 | ||||
|     global lbl_date_hr | ||||
|     lbl_date_hr = Label(frame_group_tixcraft, text='') | ||||
|     lbl_date_hr.grid(column=0, row=group_row_count, sticky = E, columnspan=2) | ||||
| 
 | ||||
|     group_row_count+=1 | ||||
| 
 | ||||
|     global lbl_presale_code | ||||
|     lbl_presale_code = Label(frame_group_tixcraft, text=translate[language_code]['user_guess_string']) | ||||
|     lbl_presale_code.grid(column=0, row=group_row_count, sticky = E) | ||||
| 
 | ||||
|     global txt_presale_code | ||||
|     txt_presale_code_value = StringVar(frame_group_tixcraft, value=config_dict['tixcraft']["presale_code"]) | ||||
|     txt_presale_code = Entry(frame_group_tixcraft, width=30, textvariable = txt_presale_code_value) | ||||
|     txt_presale_code.grid(column=1, row=group_row_count, sticky = W) | ||||
| 
 | ||||
|     group_row_count+=1 | ||||
| 
 | ||||
|     global lbl_presale_code_delimiter | ||||
|     lbl_presale_code_delimiter = Label(frame_group_tixcraft, text=translate[language_code]['presale_code_delimiter']) | ||||
|     lbl_presale_code_delimiter.grid(column=0, row=group_row_count, sticky = E) | ||||
| 
 | ||||
|     global txt_presale_code_delimiter | ||||
|     txt_presale_code_delemiter_value = StringVar(frame_group_tixcraft, value=config_dict['tixcraft']["presale_code_delimiter"]) | ||||
|     txt_presale_code_delimiter = Entry(frame_group_tixcraft, width=30, textvariable = txt_presale_code_delemiter_value) | ||||
|     txt_presale_code_delimiter.grid(column=1, row=group_row_count, sticky = W) | ||||
| 
 | ||||
|     # final flush. | ||||
|     global frame_group_tixcraft_index | ||||
|     frame_group_tixcraft_index = row_count | ||||
|  | @ -1666,23 +1688,35 @@ def PreferenctTab(root, config_dict, language_code, UI_PADDING_X): | |||
|     txt_area_keyword.grid(column=1, row=group_row_count, sticky = W) | ||||
|     txt_area_keyword.insert("1.0", config_dict["area_auto_select"]["area_keyword"].strip()) | ||||
| 
 | ||||
|     row_count+=1 | ||||
|     group_row_count+=1 | ||||
| 
 | ||||
|     global lbl_area_keyword_exclude | ||||
|     lbl_area_keyword_exclude = Label(frame_group_area, text=translate[language_code]['area_keyword_exclude']) | ||||
|     lbl_area_keyword_exclude.grid(column=0, row=row_count, sticky = E+N) | ||||
|     lbl_area_keyword_exclude.grid(column=0, row=group_row_count, sticky = E+N) | ||||
| 
 | ||||
|     global txt_area_keyword_exclude | ||||
|     txt_area_keyword_exclude = Text(frame_group_area, width=30, height=4) | ||||
|     txt_area_keyword_exclude.grid(column=1, row=row_count, sticky = W) | ||||
|     txt_area_keyword_exclude.grid(column=1, row=group_row_count, sticky = W) | ||||
|     txt_area_keyword_exclude.insert("1.0", config_dict["area_auto_select"]["area_keyword_exclude"].strip()) | ||||
| 
 | ||||
|     row_count+=1 | ||||
|     group_row_count+=1 | ||||
| 
 | ||||
|     global lbl_user_guess_string | ||||
|     lbl_user_guess_string = Label(frame_group_area, text=translate[language_code]['user_guess_string']) | ||||
|     lbl_user_guess_string.grid(column=0, row=group_row_count, sticky =  E+N) | ||||
| 
 | ||||
|     global txt_user_guess_string | ||||
|     txt_user_guess_string = Text(frame_group_area, width=30, height=4) | ||||
|     txt_user_guess_string.grid(column=1, row=group_row_count, sticky = W) | ||||
|     txt_user_guess_string.insert("1.0", config_dict["advanced"]["user_guess_string"].strip()) | ||||
| 
 | ||||
|     group_row_count+=1 | ||||
| 
 | ||||
|     global lbl_area_keyword_usage | ||||
|     lbl_area_keyword_usage = Label(frame_group_area, text=translate[language_code]['area_keyword_usage']) | ||||
|     lbl_area_keyword_usage.grid(column=1, row=row_count, sticky = W) | ||||
|     lbl_area_keyword_usage.grid(column=1, row=group_row_count, sticky = W) | ||||
| 
 | ||||
|     # flush | ||||
|     frame_group_area.grid(column=0, row=row_count, sticky = W, padx=UI_PADDING_X) | ||||
| 
 | ||||
|     showHideAreaBlocks() | ||||
|  | @ -1894,6 +1928,23 @@ def AdvancedTab(root, config_dict, language_code, UI_PADDING_X): | |||
|     chk_verbose = Checkbutton(frame_group_header, text=translate[language_code]['enable'], variable=chk_state_verbose) | ||||
|     chk_verbose.grid(column=1, row=group_row_count, sticky = W) | ||||
| 
 | ||||
|     group_row_count +=1 | ||||
| 
 | ||||
|     global lbl_online_dictionary_url | ||||
|     lbl_online_dictionary_url = Label(frame_group_header, text=translate[language_code]['online_dictionary_url']) | ||||
|     lbl_online_dictionary_url.grid(column=0, row=group_row_count, sticky = E) | ||||
| 
 | ||||
|     global txt_online_dictionary_url | ||||
|     txt_online_dictionary_url_value = StringVar(frame_group_header, value=config_dict['advanced']["online_dictionary_url"]) | ||||
|     txt_online_dictionary_url = Entry(frame_group_header, width=30, textvariable = txt_online_dictionary_url_value) | ||||
|     txt_online_dictionary_url.grid(column=1, row=group_row_count, sticky = W) | ||||
| 
 | ||||
|     group_row_count+=1 | ||||
| 
 | ||||
|     global lbl_online_dictionary_preview | ||||
|     lbl_online_dictionary_preview = Label(frame_group_header, text="") | ||||
|     lbl_online_dictionary_preview.grid(column=1, row=group_row_count, sticky = W) | ||||
| 
 | ||||
|     group_row_count+=1 | ||||
| 
 | ||||
|     global lbl_auto_guess_options | ||||
|  | @ -2112,6 +2163,7 @@ def AutofillTab(root, config_dict, language_code, UI_PADDING_X): | |||
| def settings_timer(): | ||||
|     while True: | ||||
|         update_maxbot_runtime_status() | ||||
|         btn_preview_text_clicked() | ||||
|         time.sleep(0.5) | ||||
| 
 | ||||
| def update_maxbot_runtime_status(): | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue