ver Jan17th
updated the existing task configs
This commit is contained in:
@@ -14,7 +14,7 @@ import pyautogui
|
||||
import requests
|
||||
from PIL import Image
|
||||
from Xlib import display, X
|
||||
from flask import Flask, request, jsonify, send_file, abort, send_from_directory
|
||||
from flask import Flask, request, jsonify, send_file, abort #, send_from_directory
|
||||
from lxml.etree import _Element
|
||||
from pyatspi import Accessible, StateType
|
||||
from pyatspi import Action as ATAction
|
||||
@@ -579,39 +579,114 @@ def open_file():
|
||||
def activate_window():
|
||||
data = request.json
|
||||
window_name = data.get('window_name', None)
|
||||
if not window_name:
|
||||
return "window_name required", 400
|
||||
strict: bool = data.get("strict", False) # compare case-sensitively and match the whole string
|
||||
by_class_name: bool = data.get("by_class", False)
|
||||
|
||||
os_name = platform.system()
|
||||
|
||||
if os_name == 'Windows':
|
||||
import pygetwindow as gw
|
||||
try:
|
||||
# Find the VS Code window
|
||||
vscode_window = gw.getWindowsWithTitle(window_name)[0]
|
||||
# Activate the window, bringing it to the front
|
||||
vscode_window.activate()
|
||||
except IndexError:
|
||||
return "VS Code window not found.", 404
|
||||
if by_class_name:
|
||||
return "Get window by class name is not supported on Windows currently.", 500
|
||||
windows: List[gw.Window] = gw.getWindowsWithTitle(window_name)
|
||||
|
||||
window: Optional[gw.Window] = None
|
||||
if len(windows)==0:
|
||||
return "Window {:} not found (empty results)".format(window_name), 404
|
||||
elif strict:
|
||||
for wnd in windows:
|
||||
if wnd.title==wnd:
|
||||
window = wnd
|
||||
if window is None:
|
||||
return "Window {:} not found (strict mode).".format(window_name), 404
|
||||
else:
|
||||
window = windows[0]
|
||||
window.activate()
|
||||
|
||||
elif os_name == 'Darwin':
|
||||
import pygetwindow as gw
|
||||
try:
|
||||
# Find the VS Code window
|
||||
vscode_window = gw.getWindowsWithTitle(window_name)[0]
|
||||
# Un-minimize the window and then bring it to the front
|
||||
vscode_window.unminimize()
|
||||
vscode_window.activate()
|
||||
except IndexError:
|
||||
return "VS Code window not found.", 404
|
||||
if by_class_name:
|
||||
return "Get window by class name is not supported on macOS currently.", 500
|
||||
# Find the VS Code window
|
||||
windows = gw.getWindowsWithTitle(window_name)
|
||||
|
||||
window: Optional[gw.Window] = None
|
||||
if len(windows)==0:
|
||||
return "Window {:} not found (empty results)".format(window_name), 404
|
||||
elif strict:
|
||||
for wnd in windows:
|
||||
if wnd.title==wnd:
|
||||
window = wnd
|
||||
if window is None:
|
||||
return "Window {:} not found (strict mode).".format(window_name), 404
|
||||
else:
|
||||
window = windows[0]
|
||||
|
||||
# Un-minimize the window and then bring it to the front
|
||||
window.unminimize()
|
||||
window.activate()
|
||||
|
||||
elif os_name == 'Linux':
|
||||
# Attempt to activate VS Code window using wmctrl
|
||||
subprocess.Popen(["wmctrl", "-a", window_name])
|
||||
subprocess.run( [ "wmctrl"
|
||||
, "-{:}{:}a".format( "x" if by_class_name else ""
|
||||
, "F" if strict else ""
|
||||
)
|
||||
, window_name
|
||||
]
|
||||
)
|
||||
|
||||
else:
|
||||
return f"Operating system {os_name} not supported.", 400
|
||||
|
||||
return "File opened successfully", 200
|
||||
return "Window activated successfully", 200
|
||||
|
||||
@app.route("/setup/close_window", methods=["POST"])
|
||||
def close_window():
|
||||
data = request.json
|
||||
if "window_name" not in data:
|
||||
return "window_name required", 400
|
||||
window_name: str = data["window_name"]
|
||||
strict: bool = data.get("strict", False) # compare case-sensitively and match the whole string
|
||||
by_class_name: bool = data.get("by_class", False)
|
||||
|
||||
os_name: str = platform.system()
|
||||
if os_name == "Windows":
|
||||
import pygetwindow as gw
|
||||
|
||||
if by_class_name:
|
||||
return "Get window by class name is not supported on Windows currently.", 500
|
||||
windows: List[gw.Window] = gw.getWindowsWithTitle(window_name)
|
||||
|
||||
window: Optional[gw.Window] = None
|
||||
if len(windows)==0:
|
||||
return "Window {:} not found (empty results)".format(window_name), 404
|
||||
elif strict:
|
||||
for wnd in windows:
|
||||
if wnd.title==wnd:
|
||||
window = wnd
|
||||
if window is None:
|
||||
return "Window {:} not found (strict mode).".format(window_name), 404
|
||||
else:
|
||||
window = windows[0]
|
||||
window.close()
|
||||
elif os_name == "Linux":
|
||||
subprocess.run( [ "wmctrl"
|
||||
, "-{:}{:}c".format( "x" if by_class_name else ""
|
||||
, "F" if strict else ""
|
||||
)
|
||||
, window_name
|
||||
]
|
||||
)
|
||||
elif os_name=="Darwin":
|
||||
import pygetwindow as gw
|
||||
return "Currently not supported on macOS.", 500
|
||||
else:
|
||||
return "Not supported platform {:}".format(os_name), 500
|
||||
|
||||
return "Window closed successfully.", 200
|
||||
|
||||
@app.route('/start_recording', methods=['POST'])
|
||||
def start_recording():
|
||||
@@ -639,7 +714,7 @@ def end_recording():
|
||||
|
||||
recording_process.terminate()
|
||||
recording_process.wait()
|
||||
return_code = recording_process.returncode
|
||||
#return_code = recording_process.returncode
|
||||
output, error = recording_process.communicate()
|
||||
recording_process = None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user