Start the viewer webserver.
(self, model, scale, bg, extra_w, extra_h)
| 144 | return True, "Viewer installed" |
| 145 | |
| 146 | def start_viewer_webserver(self, model, scale, bg, extra_w, extra_h): |
| 147 | """Start the viewer webserver.""" |
| 148 | folder_path = self.webview_path |
| 149 | |
| 150 | class CustomHTTPRequestHandler(SimpleHTTPRequestHandler): |
| 151 | def translate_path(self, path): |
| 152 | path = super().translate_path(path) |
| 153 | return os.path.join(folder_path, os.path.relpath(path, os.getcwd())) |
| 154 | def log_message(self, format, *args): |
| 155 | pass # Suppress HTTP logs |
| 156 | |
| 157 | self.httpd = HTTPServer(('127.0.0.1', 0), CustomHTTPRequestHandler) |
| 158 | port = self.httpd.server_address[1] |
| 159 | |
| 160 | def run_server(): |
| 161 | self.httpd.serve_forever() |
| 162 | |
| 163 | thread = threading.Thread(target=run_server, daemon=True) |
| 164 | thread.start() |
| 165 | |
| 166 | viewer_url = f"http://localhost:{port}?{urlencode({'model': model, 'bg': bg, 'scale': scale})}" |
| 167 | return viewer_url |
| 168 | |
| 169 | def start_puppet(self): |
| 170 | """Start the puppet main process.""" |