outleap 0.6.1__tar.gz → 0.6.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. {outleap-0.6.1 → outleap-0.6.2}/PKG-INFO +1 -1
  2. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/api_wrappers.py +101 -0
  3. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/scripts/agent.py +1 -0
  4. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/scripts/inspector.py +1 -2
  5. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/scripts/repl.py +1 -0
  6. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/version.py +2 -2
  7. {outleap-0.6.1 → outleap-0.6.2}/src/outleap.egg-info/PKG-INFO +1 -1
  8. {outleap-0.6.1 → outleap-0.6.2}/.coveragerc +0 -0
  9. {outleap-0.6.1 → outleap-0.6.2}/.github/workflows/cis.yml +0 -0
  10. {outleap-0.6.1 → outleap-0.6.2}/.github/workflows/pypi_publish.yml +0 -0
  11. {outleap-0.6.1 → outleap-0.6.2}/.gitignore +0 -0
  12. {outleap-0.6.1 → outleap-0.6.2}/COPYING +0 -0
  13. {outleap-0.6.1 → outleap-0.6.2}/MANIFEST.in +0 -0
  14. {outleap-0.6.1 → outleap-0.6.2}/README.md +0 -0
  15. {outleap-0.6.1 → outleap-0.6.2}/codecov.yml +0 -0
  16. {outleap-0.6.1 → outleap-0.6.2}/examples/README.md +0 -0
  17. {outleap-0.6.1 → outleap-0.6.2}/examples/complex_leap_script.py +0 -0
  18. {outleap-0.6.1 → outleap-0.6.2}/examples/simple_leap_script.py +0 -0
  19. {outleap-0.6.1 → outleap-0.6.2}/pyproject.toml +0 -0
  20. {outleap-0.6.1 → outleap-0.6.2}/setup.cfg +0 -0
  21. {outleap-0.6.1 → outleap-0.6.2}/setup.py +0 -0
  22. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/__init__.py +0 -0
  23. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/bridge.py +0 -0
  24. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/client.py +0 -0
  25. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/protocol.py +0 -0
  26. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/qt_helpers.py +0 -0
  27. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/scripts/__init__.py +0 -0
  28. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/scripts/ui/inspector.ui +0 -0
  29. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/ui_elems.py +0 -0
  30. {outleap-0.6.1 → outleap-0.6.2}/src/outleap/utils.py +0 -0
  31. {outleap-0.6.1 → outleap-0.6.2}/src/outleap.egg-info/SOURCES.txt +0 -0
  32. {outleap-0.6.1 → outleap-0.6.2}/src/outleap.egg-info/dependency_links.txt +0 -0
  33. {outleap-0.6.1 → outleap-0.6.2}/src/outleap.egg-info/entry_points.txt +0 -0
  34. {outleap-0.6.1 → outleap-0.6.2}/src/outleap.egg-info/requires.txt +0 -0
  35. {outleap-0.6.1 → outleap-0.6.2}/src/outleap.egg-info/top_level.txt +0 -0
  36. {outleap-0.6.1 → outleap-0.6.2}/static/inspector_screenshot.png +0 -0
  37. {outleap-0.6.1 → outleap-0.6.2}/tests/__init__.py +0 -0
  38. {outleap-0.6.1 → outleap-0.6.2}/tests/test_client.py +0 -0
  39. {outleap-0.6.1 → outleap-0.6.2}/tests/test_protocol.py +0 -0
  40. {outleap-0.6.1 → outleap-0.6.2}/tests/test_stdio.py +0 -0
  41. {outleap-0.6.1 → outleap-0.6.2}/tests/test_ui_elems.py +0 -0
  42. {outleap-0.6.1 → outleap-0.6.2}/tests/test_wrappers.py +0 -0
  43. {outleap-0.6.1 → outleap-0.6.2}/tests/ui_paths.txt +0 -0
  44. {outleap-0.6.1 → outleap-0.6.2}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: outleap
3
- Version: 0.6.1
3
+ Version: 0.6.2
4
4
  Summary: Tools for using asyncio to control a Second Life viewer over the LEAP protocol
5
5
  Author-email: Salad Dais <83434023+SaladDais@users.noreply.github.com>
6
6
  License: MIT License
@@ -466,6 +466,101 @@ class LLFloaterRegAPI(LEAPAPIWrapper):
466
466
  )
467
467
 
468
468
 
469
+ class LLURLDispatcher(LEAPAPIWrapper):
470
+ PUMP_NAME = "LLUrlDispatcher"
471
+
472
+ def dispatch(self, url: str, trusted: bool = True):
473
+ """At startup time or on clicks in internal web browsers, teleport, open map, or run requested command."""
474
+ self._client.void_command(self._pump_name, "dispatch", {"url": url, "trusted": trusted})
475
+
476
+ def dispatch_right_click(self, url: str):
477
+ """Dispatch ["url"] as if from a right-click on a hot link."""
478
+ self._client.void_command(self._pump_name, "dispatchRightClick", {"url": url})
479
+
480
+ def dispatch_from_text_editor(self, url: str):
481
+ """Dispatch ["url"] as if from an edit field"""
482
+ self._client.void_command(self._pump_name, "dispatchFromTextEditor", {"url": url})
483
+
484
+
485
+ class LLFloaterAbout(LEAPAPIWrapper):
486
+ PUMP_NAME = "LLFloaterAbout"
487
+
488
+ def get_info(self) -> Awaitable[dict]:
489
+ """Request an LLSD::Map containing information used to populate About box"""
490
+ return self._client.command(self._pump_name, "getInfo")
491
+
492
+
493
+ class LLGesture(LEAPAPIWrapper):
494
+ PUMP_NAME = "LLGesture"
495
+
496
+ def get_active_gestures(self) -> Awaitable[list]:
497
+ """
498
+ Return information about the agent's available gestures
499
+
500
+ Returns a list of dicts with the following dict values for each entry:
501
+ ["name"]: name of the gesture, may be empty
502
+ ["trigger"]: trigger string used to invoke via user chat, may be empty
503
+ ["playing"]: true or false indicating the playing state
504
+ """
505
+ fut = self._client.command(self._pump_name, "getActiveGestures")
506
+ return _data_unwrapper(fut, "gestures")
507
+
508
+ def is_gesture_playing(self, gesture_id: uuid.UUID) -> Awaitable[bool]:
509
+ fut = self._client.command(self._pump_name, "isGesturePlaying", {"id": gesture_id})
510
+ return _data_unwrapper(fut, "playing")
511
+
512
+ def start_gesture(self, gesture_id: uuid):
513
+ self._client.void_command(self._pump_name, "startGesture", {"id": gesture_id})
514
+
515
+ def stop_gesture(self, gesture_id: uuid):
516
+ self._client.void_command(self._pump_name, "stopGesture", {"id": gesture_id})
517
+
518
+
519
+ class GroupChat(LEAPAPIWrapper):
520
+ PUMP_NAME = "GroupChat"
521
+
522
+ def start_im(self, group_id: uuid.UUID) -> Awaitable[uuid.UUID]:
523
+ """Start an IM session for the specified group, returning the session ID"""
524
+ fut = self._client.command(self._pump_name, "startIM", {"id": group_id})
525
+ return _data_unwrapper(fut, "session_id")
526
+
527
+ def end_im(self, group_id: uuid.UUID):
528
+ """End an IM session with the specified group"""
529
+ self._client.void_command(self._pump_name, "endIM", {"id": group_id})
530
+
531
+ def send_im(self, group_id: uuid.UUID, session_id: uuid.UUID, text: str):
532
+ """Send an IM to the specified group with the specified chatterbox session ID"""
533
+ self._client.void_command(
534
+ self._pump_name, "sendIM", {"id": group_id, "session_id": session_id, "text": text}
535
+ )
536
+
537
+
538
+ class LLFloaterIMNearbyChat(LEAPAPIWrapper):
539
+ PUMP_NAME = "LLChatBar"
540
+
541
+ def send_chat(self, message: str, channel: int = 0, chat_type: str = "normal"):
542
+ """
543
+ Send chat to the simulator
544
+
545
+ :param message: chat message text [required]
546
+ :param channel: chat channel number [default = 0]
547
+ :param chat_type: "whisper", "normal", "shout" [default = "normal"]
548
+ """
549
+ self._client.void_command(
550
+ self._pump_name, "sendChat", {"message": message, "channel": channel, "chat_type": chat_type}
551
+ )
552
+
553
+
554
+ class LLAppViewer(LEAPAPIWrapper):
555
+ PUMP_NAME = "LLAppViewer"
556
+
557
+ def request_quit(self):
558
+ self._client.void_command(self._pump_name, "requestQuit")
559
+
560
+ def force_quit(self):
561
+ self._client.void_command(self._pump_name, "forceQuit")
562
+
563
+
469
564
  class LLPuppetryAPI(LEAPAPIWrapper):
470
565
  PUMP_NAME = "puppetry"
471
566
  OP_KEY: str = "command"
@@ -511,6 +606,12 @@ __all__ = [
511
606
  "LLViewerWindowAPI",
512
607
  "LLCommandDispatcherAPI",
513
608
  "LLFloaterRegAPI",
609
+ "LLURLDispatcher",
610
+ "LLFloaterAbout",
611
+ "LLGesture",
612
+ "GroupChat",
613
+ "LLFloaterIMNearbyChat",
614
+ "LLAppViewer",
514
615
  "LLPuppetryAPI",
515
616
  "LEAPAPIWrapper",
516
617
  ]
@@ -7,6 +7,7 @@ Hint: uncomment https://vcs.firestormviewer.org/phoenix-firestorm/files/cf85e854
7
7
  Usage: While an outleap TCP receiver is running
8
8
  ./firestorm --leap outleap-agent
9
9
  """
10
+
10
11
  import asyncio
11
12
  import multiprocessing
12
13
  import os
@@ -285,8 +285,7 @@ def inspector_main():
285
285
  print(
286
286
  "Running in direct LEAP execution mode.\n"
287
287
  "If you're seeing this anywhere other than the viewer logs, "
288
- "you probably messed up, the viewer should be executing this!\n"
289
- "Try adding a '--tcp' argument!",
288
+ "you probably messed up, the viewer should be executing this!\n",
290
289
  file=sys.stderr,
291
290
  )
292
291
 
@@ -1,6 +1,7 @@
1
1
  """
2
2
  Interactive REPL that handles connect-back connections from outleap-agent
3
3
  """
4
+
4
5
  import asyncio
5
6
  import logging
6
7
  import multiprocessing
@@ -5,7 +5,7 @@ from collections import namedtuple
5
5
  #: A namedtuple of the version info for the current release.
6
6
  _version_info = namedtuple("_version_info", "major minor micro status")
7
7
 
8
- parts = "0.6.1".split(".", 3)
8
+ parts = "0.6.2".split(".", 3)
9
9
  version_info = _version_info(
10
10
  int(parts[0]),
11
11
  int(parts[1]),
@@ -16,4 +16,4 @@ version_info = _version_info(
16
16
  # Remove everything but the 'version_info' from this module.
17
17
  del namedtuple, _version_info, parts
18
18
 
19
- __version__ = "0.6.1"
19
+ __version__ = "0.6.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: outleap
3
- Version: 0.6.1
3
+ Version: 0.6.2
4
4
  Summary: Tools for using asyncio to control a Second Life viewer over the LEAP protocol
5
5
  Author-email: Salad Dais <83434023+SaladDais@users.noreply.github.com>
6
6
  License: MIT License
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes