1from tkinter import ttk 2 3from thonny import get_workbench, ui_utils 4from thonny.config_ui import ConfigurationPage 5from thonny.languages import tr 6from thonny.tktextext import TextFrame 7from thonny.ui_utils import scrollbar_style 8 9 10class AssistantConfigPage(ConfigurationPage): 11 def __init__(self, master): 12 super().__init__(master) 13 14 self.add_checkbox( 15 "assistance.open_assistant_on_errors", 16 tr("Open Assistant automatically when program crashes with an exception"), 17 row=2, 18 columnspan=2, 19 ) 20 21 self.add_checkbox( 22 "assistance.open_assistant_on_warnings", 23 tr("Open Assistant automatically when it has warnings for your code"), 24 row=3, 25 columnspan=2, 26 ) 27 28 if get_workbench().get_option("assistance.use_pylint", "missing") != "missing": 29 self.add_checkbox( 30 "assistance.use_pylint", tr("Perform selected Pylint checks"), row=4, columnspan=2 31 ) 32 33 if get_workbench().get_option("assistance.use_mypy", "missing") != "missing": 34 self.add_checkbox("assistance.use_mypy", tr("Perform MyPy checks"), row=5, columnspan=2) 35 36 disabled_checks_label = ttk.Label(self, text=tr("Disabled checks (one id per line)")) 37 disabled_checks_label.grid(row=8, sticky="nw", pady=(10, 0), columnspan=2) 38 39 self.disabled_checks_box = TextFrame( 40 self, 41 vertical_scrollbar_style=scrollbar_style("Vertical"), 42 horizontal_scrollbar_style=scrollbar_style("Horizontal"), 43 horizontal_scrollbar_class=ui_utils.AutoScrollbar, 44 wrap="word", 45 font="TkDefaultFont", 46 # cursor="arrow", 47 padx=5, 48 pady=5, 49 height=4, 50 borderwidth=1, 51 relief="groove", 52 ) 53 self.disabled_checks_box.grid(row=9, sticky="nsew", pady=(0, 10), columnspan=2) 54 self.disabled_checks_box.text.insert( 55 "1.0", "\n".join(get_workbench().get_option("assistance.disabled_checks")) 56 ) 57 58 self.columnconfigure(1, weight=1) 59 self.rowconfigure(9, weight=1) 60 61 def apply(self): 62 disabled_checks_str = ( 63 self.disabled_checks_box.text.get("1.0", "end") 64 .replace("\r", "") 65 .replace('"', "") 66 .replace("'", "") 67 .strip() 68 ) 69 get_workbench().set_option("assistance.disabled_checks", disabled_checks_str.splitlines()) 70 71 72def load_plugin(): 73 get_workbench().add_configuration_page("assistant", tr("Assistant"), AssistantConfigPage, 80) 74