mirror of
https://github.com/theupriser/steamify-cachyos-dev.git
synced 2026-10-05 12:45:56 +02:00
This commit is contained in:
1 parent
dd24eadad7
commit
3d005b3412
2 files changed
+43
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import sys, os, importlib.machinery, importlib.util, json
|
||||
os.environ["QT_QPA_PLATFORM"] = "offscreen"
|
||||
sys.argv = ["steamify-ui"]
|
||||
loader = importlib.machinery.SourceFileLoader("ui", sys.argv[0] if False else os.environ["UI"])
|
||||
spec = importlib.util.spec_from_loader("ui", loader); ui = importlib.util.module_from_spec(spec); loader.exec_module(ui)
|
||||
from PySide6.QtGui import QGuiApplication
|
||||
from PySide6.QtQml import QQmlApplicationEngine
|
||||
from PySide6.QtCore import QTimer, QObject, QMetaObject, Q_ARG, Qt
|
||||
app = QGuiApplication(sys.argv)
|
||||
backend = ui.Backend(ui.find_script()); pad = ui.Gamepad(); engine = QQmlApplicationEngine()
|
||||
engine.setInitialProperties({"backend": backend, "gamepad": pad, "fullscreen": False, "fromSteam": False, "iconUrl": ""})
|
||||
engine.load(os.path.join(ui.HERE, "qml", "Main.qml"))
|
||||
assert engine.rootObjects(), "QML did not load"
|
||||
root = engine.rootObjects()[0]; backend.refresh()
|
||||
def find_state():
|
||||
for o in root.findChildren(QObject):
|
||||
if o.property("want") is not None and o.property("resolution") is not None: return o
|
||||
state = None
|
||||
def step():
|
||||
global state
|
||||
state = find_state(); assert state, "no AppState"
|
||||
def want(): return {k for k, v in state.property("want").toVariant().items() if v} if hasattr(state.property("want"),"toVariant") else {k for k,v in state.property("want").items() if v}
|
||||
def toggle(i): QMetaObject.invokeMethod(state, "toggle", Qt.DirectConnection, Q_ARG("QVariant", i))
|
||||
def vis():
|
||||
r = state.property("resolution"); r = r.toVariant() if hasattr(r,"toVariant") else r
|
||||
return set(r["visible"])
|
||||
def plan():
|
||||
r = state.property("resolution"); r = r.toVariant() if hasattr(r,"toVariant") else r
|
||||
return [(p["id"], p["action"]) for p in r["plan"]]
|
||||
print("start want", want(), "plan", plan(), "canApply", state.property("canApply"))
|
||||
assert want() == {"theme"}
|
||||
toggle("single"); print("after single", want(), plan())
|
||||
assert want() == {"theme", "single", "gaming"} and plan() == [("gaming","on"),("single","on")]
|
||||
assert "silent" in vis() and "poweroff" not in vis()
|
||||
toggle("machine"); print("after machine", want(), vis())
|
||||
assert "poweroff" in want() and "poweroff" in vis()
|
||||
toggle("gaming"); print("after gaming off", want())
|
||||
assert want() == {"theme", "machine", "poweroff"}
|
||||
assert state.property("canApply") is True
|
||||
print("UI OK"); app.quit()
|
||||
QTimer.singleShot(4000, step)
|
||||
sys.exit(app.exec())
|
||||
Reference in new issue
Block a user