Mercurial > libervia-desktop-kivy
comparison libervia/desktop_kivy/core/cagou_main.py @ 498:3b627382e681
core: support async methods and bridge
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 02 Oct 2023 17:24:01 +0200 |
parents | 232a723aae45 |
children | bbef1a413515 |
comparison
equal
deleted
inserted
replaced
497:232a723aae45 | 498:3b627382e681 |
---|---|
15 | 15 |
16 # You should have received a copy of the GNU Affero General Public License | 16 # You should have received a copy of the GNU Affero General Public License |
17 # along with this program. If not, see <http://www.gnu.org/licenses/>. | 17 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
18 | 18 |
19 | 19 |
20 import asyncio | |
20 import os.path | 21 import os.path |
21 import glob | 22 import glob |
22 import sys | 23 import sys |
23 from pathlib import Path | 24 from pathlib import Path |
24 from urllib import parse as urlparse | 25 from urllib import parse as urlparse |
303 # we don't want default Kivy's behaviour of displaying | 304 # we don't want default Kivy's behaviour of displaying |
304 # a settings screen when pressing F1 or platform specific key | 305 # a settings screen when pressing F1 or platform specific key |
305 return | 306 return |
306 | 307 |
307 def build(self): | 308 def build(self): |
309 # we connect async bridge here as we must have a running loop | |
310 self.host.a_bridge.bridge_connect() | |
311 | |
308 Window.bind(on_keyboard=self.key_input) | 312 Window.bind(on_keyboard=self.key_input) |
309 Window.bind(on_dropfile=self.on_dropfile) | 313 Window.bind(on_dropfile=self.on_dropfile) |
310 wid = LiberviaDesktopKivyRootWidget(Label(text=_("Loading please wait"))) | 314 wid = LiberviaDesktopKivyRootWidget(Label(text=_("Loading please wait"))) |
311 local_platform.on_app_build(wid) | 315 local_platform.on_app_build(wid) |
312 return wid | 316 return wid |
416 if bridge_module is None: | 420 if bridge_module is None: |
417 log.error(f"Can't import {bridge_name} bridge") | 421 log.error(f"Can't import {bridge_name} bridge") |
418 sys.exit(3) | 422 sys.exit(3) |
419 else: | 423 else: |
420 log.debug(f"Loading {bridge_name} bridge") | 424 log.debug(f"Loading {bridge_name} bridge") |
421 super(LiberviaDesktopKivy, self).__init__(bridge_factory=bridge_module.bridge, | 425 super(LiberviaDesktopKivy, self).__init__( |
422 xmlui=xmlui, | 426 bridge_factory=bridge_module.bridge, |
423 check_options=quick_utils.check_options, | 427 xmlui=xmlui, |
424 connect_bridge=False) | 428 check_options=quick_utils.check_options, |
429 connect_bridge=False, | |
430 async_bridge_factory = bridge_module.AIOBridge | |
431 ) | |
425 self._import_kv() | 432 self._import_kv() |
426 self.app = LiberviaDesktopKivyApp() | 433 self.app = LiberviaDesktopKivyApp() |
427 self.app.host = self | 434 self.app.host = self |
428 log_level = config.config_get( | 435 log_level = config.config_get( |
429 main_config, | 436 main_config, |
526 super(LiberviaDesktopKivy, self)._bridge_eb(failure) | 533 super(LiberviaDesktopKivy, self)._bridge_eb(failure) |
527 | 534 |
528 def run(self): | 535 def run(self): |
529 self.connect_bridge() | 536 self.connect_bridge() |
530 self.app.bind(on_stop=self.onStop) | 537 self.app.bind(on_stop=self.onStop) |
531 self.app.run() | 538 loop = asyncio.get_event_loop() |
539 loop.run_until_complete( | |
540 self.app.async_run("asyncio") | |
541 ) | |
532 | 542 |
533 def onStop(self, obj): | 543 def onStop(self, obj): |
534 try: | 544 try: |
535 libervia_instance = self.libervia_backend | 545 libervia_instance = self.libervia_backend |
536 except AttributeError: | 546 except AttributeError: |