macro_recorder: implement process elevation on linux
parent
542fb36c71
commit
000ad5d55c
|
|
@ -0,0 +1,2 @@
|
|||
def linux_keystroke_recorder():
|
||||
print("Recording")
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
import sys
|
||||
|
||||
from PyQt5.QtCore import QProcess
|
||||
from PyQt5.QtWidgets import QPushButton, QWidget
|
||||
from fbs_runtime.application_context import is_frozen
|
||||
|
||||
from basic_editor import BasicEditor
|
||||
from vial_device import VialKeyboard
|
||||
|
||||
|
||||
class LinuxRecorder:
|
||||
|
||||
def __init__(self):
|
||||
self.process = None
|
||||
|
||||
def start(self):
|
||||
self.process = QProcess()
|
||||
args = [sys.executable]
|
||||
if is_frozen():
|
||||
args += sys.argv[1:]
|
||||
else:
|
||||
args += sys.argv
|
||||
args += ["--linux-recorder"]
|
||||
|
||||
self.process.start("pkexec", args)
|
||||
self.process.waitForFinished()
|
||||
print(self.process.readAll())
|
||||
|
||||
|
||||
class MacroRecorder(BasicEditor):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
self.recorder = LinuxRecorder()
|
||||
self.recording = False
|
||||
|
||||
btn = QPushButton("Record")
|
||||
btn.clicked.connect(self.on_record_clicked)
|
||||
self.addWidget(btn)
|
||||
|
||||
def valid(self):
|
||||
return isinstance(self.device, VialKeyboard)
|
||||
|
||||
def rebuild(self, device):
|
||||
super().rebuild(device)
|
||||
if not self.valid():
|
||||
return
|
||||
|
||||
def on_record_clicked(self):
|
||||
self.recorder.start()
|
||||
|
|
@ -7,6 +7,7 @@ from fbs_runtime.application_context.PyQt5 import ApplicationContext
|
|||
|
||||
import sys
|
||||
|
||||
from linux_keystroke_recorder import linux_keystroke_recorder
|
||||
from main_window import MainWindow
|
||||
from constants import WINDOW_WIDTH, WINDOW_HEIGHT
|
||||
|
||||
|
|
@ -46,10 +47,13 @@ class UncaughtHook(QtCore.QObject):
|
|||
|
||||
|
||||
if __name__ == '__main__':
|
||||
appctxt = ApplicationContext() # 1. Instantiate ApplicationContext
|
||||
qt_exception_hook = UncaughtHook()
|
||||
window = MainWindow()
|
||||
window.resize(WINDOW_WIDTH, WINDOW_HEIGHT)
|
||||
window.show()
|
||||
exit_code = appctxt.app.exec_() # 2. Invoke appctxt.app.exec_()
|
||||
sys.exit(exit_code)
|
||||
if len(sys.argv) == 2 and sys.argv[1] == "--linux-recorder":
|
||||
linux_keystroke_recorder()
|
||||
else:
|
||||
appctxt = ApplicationContext() # 1. Instantiate ApplicationContext
|
||||
qt_exception_hook = UncaughtHook()
|
||||
window = MainWindow()
|
||||
window.resize(WINDOW_WIDTH, WINDOW_HEIGHT)
|
||||
window.show()
|
||||
exit_code = appctxt.app.exec_() # 2. Invoke appctxt.app.exec_()
|
||||
sys.exit(exit_code)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import json
|
|||
from firmware_flasher import FirmwareFlasher
|
||||
from keymap_editor import KeymapEditor
|
||||
from layout_editor import LayoutEditor
|
||||
from macro_recorder import MacroRecorder
|
||||
from util import tr, find_vial_devices
|
||||
|
||||
|
||||
|
|
@ -36,8 +37,9 @@ class MainWindow(QMainWindow):
|
|||
self.layout_editor = LayoutEditor()
|
||||
self.keymap_editor = KeymapEditor(self.layout_editor)
|
||||
self.firmware_flasher = FirmwareFlasher(self)
|
||||
self.macro_recorder = MacroRecorder()
|
||||
|
||||
self.editors = [(self.keymap_editor, "Keymap"), (self.layout_editor, "Layout"),
|
||||
self.editors = [(self.keymap_editor, "Keymap"), (self.layout_editor, "Layout"), (self.macro_recorder, "Macros"),
|
||||
(self.firmware_flasher, "Firmware updater")]
|
||||
|
||||
self.tabs = QTabWidget()
|
||||
|
|
@ -116,7 +118,7 @@ class MainWindow(QMainWindow):
|
|||
if self.current_device is not None:
|
||||
self.current_device.open(self.sideload_json if self.current_device.sideload else None)
|
||||
|
||||
for e in [self.layout_editor, self.keymap_editor, self.firmware_flasher]:
|
||||
for e in [self.layout_editor, self.keymap_editor, self.firmware_flasher, self.macro_recorder]:
|
||||
e.rebuild(self.current_device)
|
||||
|
||||
self.refresh_tabs()
|
||||
|
|
|
|||
Loading…
Reference in New Issue