(self)
| 304 | |
| 305 | @background_task |
| 306 | async def load_translator(self): |
| 307 | self.translator_loading = True |
| 308 | |
| 309 | provider = Settings.get().active_translator |
| 310 | |
| 311 | # Show loading view |
| 312 | self.main_stack.props.visible_child_name = "loading" |
| 313 | |
| 314 | # Translator object |
| 315 | self.provider["trans"] = TRANSLATORS[provider]() |
| 316 | # Get saved languages |
| 317 | self.src_langs = self.provider["trans"].recent_src_langs |
| 318 | self.dest_langs = self.provider["trans"].recent_dest_langs |
| 319 | # Connect to provider settings changes |
| 320 | self.provider["trans"].settings.connect( |
| 321 | "changed::instance-url", self._on_provider_changed, self.provider["trans"].name |
| 322 | ) |
| 323 | self.provider["trans"].settings.connect( |
| 324 | "changed::api-key", self._on_provider_changed, self.provider["trans"].name |
| 325 | ) |
| 326 | |
| 327 | try: |
| 328 | # Do provider init |
| 329 | await self.provider["trans"].init_trans() |
| 330 | |
| 331 | # Update navigation UI |
| 332 | self._check_navigation_enabled() |
| 333 | # Check mistakes support |
| 334 | self._check_mistakes() |
| 335 | # Check pronunciation support |
| 336 | self._check_pronunciation() |
| 337 | # Check suggestions support and update UI |
| 338 | self._on_suggest_cancel_action() |
| 339 | self.edit_btn.props.visible = self.provider["trans"].supports_suggestions |
| 340 | |
| 341 | # Update langs |
| 342 | self.src_lang_model.set_langs(self.provider["trans"].src_languages) |
| 343 | self.dest_lang_model.set_langs(self.provider["trans"].dest_languages) |
| 344 | |
| 345 | # Update selected langs |
| 346 | set_auto = Settings.get().src_auto and self.provider["trans"].supports_detection |
| 347 | src_lang = self.provider["trans"].src_languages[0] |
| 348 | if self.src_langs and self.src_langs[0] in self.provider["trans"].src_languages: |
| 349 | src_lang = self.src_langs[0] |
| 350 | self.src_lang_selector.selected = "auto" if set_auto else src_lang |
| 351 | |
| 352 | dest_lang = self.provider["trans"].dest_languages[1] |
| 353 | if self.dest_langs and self.dest_langs[0] in self.provider["trans"].dest_languages: |
| 354 | dest_lang = self.dest_langs[0] |
| 355 | self.dest_lang_selector.selected = dest_lang |
| 356 | |
| 357 | # Update chars limit |
| 358 | if self.provider["trans"].chars_limit == -1: # -1 means unlimited |
| 359 | self.char_counter.props.label = "" |
| 360 | else: |
| 361 | count = f"{str(self.src_buffer.get_char_count())}/{self.provider['trans'].chars_limit}" |
| 362 | self.char_counter.props.label = count |
| 363 |
no test coverage detected