MCPcopy Create free account
hub / github.com/NyarchLinux/DesktopPuppet / Live2DDesktopPuppet

Class Live2DDesktopPuppet

src/puppets/live2d.py:8–178  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6
7
8class Live2DDesktopPuppet(DesktopPuppet):
9 _wait_js : threading.Event
10 _wait_js2 : threading.Event
11 def __init__(self) -> None:
12 super().__init__()
13 self._wait_js = threading.Event()
14 self._wait_js2 = threading.Event()
15 self._expressions_raw = []
16 self._motions_raw = []
17 self.loaded = False
18 # Extra settings
19 self.address = "http://127.0.0.1:8000"
20 self.extra_scale_w = 0.56
21 self.extra_scale_h = 1
22 self.model = None
23 self.scale = 100
24
25 def get_gtk_widget(self):
26 self.box = Gtk.Box()
27 return self.box
28
29 def load_webview(self):
30 webview = WebKit.WebView()
31 color = Gdk.RGBA()
32 color.red = 0
33 color.green = 0
34 color.blue = 0
35 color.alpha = 0
36 webview.set_background_color(color)
37
38 scale = int(self.scale)/100
39 q = urlencode({"model": self.model, "bg": "transparent", "scale": scale})
40 print(q)
41 webview.load_uri(urljoin(self.address, f"?{q}"))
42 webview.set_hexpand(True)
43 webview.set_vexpand(True)
44 def monitor_loading(wb, event):
45 if event == WebKit.LoadEvent.FINISHED:
46 self.loaded = True
47 webview.connect("load-changed", monitor_loading)
48 self.webview = webview
49
50 def change_address(self):
51 if hasattr(self, "webview"):
52 self.box.remove(self.webview)
53 self.load_webview()
54 self.box.append(self.webview)
55
56 def look(self, x, y):
57 if not self.loaded:
58 return
59 script = "model_proxy.focus({x}, {y});"
60 script = script.format(x=x, y=y)
61 self.webview.evaluate_javascript(script, len(script))
62
63 def update_area(self):
64 if not self.loaded:
65 return

Callers 1

on_activateFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected