Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6974947028 | |||
| 517ee943a9 | |||
| c9d0c9812d | |||
| 3521f777e9 | |||
| 8ce09fcaf6 | |||
| a1a7334772 |
@@ -1,6 +1,6 @@
|
||||
# Configuration and constants for MacroPad Server
|
||||
|
||||
VERSION = "0.9.0"
|
||||
VERSION = "0.9.3"
|
||||
DEFAULT_PORT = 40000
|
||||
|
||||
# UI Theme colors
|
||||
|
||||
@@ -243,7 +243,15 @@ class CommandBuilder(QWidget):
|
||||
|
||||
elif cmd_type == "app":
|
||||
from PySide6.QtWidgets import QInputDialog
|
||||
cmd, ok = QInputDialog.getText(self, "App Command", "Enter application command:")
|
||||
cmd, ok = QInputDialog.getText(
|
||||
self, "App Command",
|
||||
"Enter application command:\n\n"
|
||||
"Examples:\n"
|
||||
" Windows: notepad.exe\n"
|
||||
" Windows: \"C:\\Program Files\\App\\app.exe\"\n"
|
||||
" Linux: firefox https://example.com\n"
|
||||
" macOS: open -a Safari"
|
||||
)
|
||||
if not ok or not cmd:
|
||||
return
|
||||
command["command"] = cmd
|
||||
@@ -314,7 +322,13 @@ class CommandBuilder(QWidget):
|
||||
|
||||
elif cmd_type == "app":
|
||||
text, ok = QInputDialog.getText(
|
||||
self, "Edit App", "Enter application command:",
|
||||
self, "Edit App",
|
||||
"Enter application command:\n\n"
|
||||
"Examples:\n"
|
||||
" Windows: notepad.exe\n"
|
||||
" Windows: \"C:\\Program Files\\App\\app.exe\"\n"
|
||||
" Linux: firefox https://example.com\n"
|
||||
" macOS: open -a Safari",
|
||||
text=cmd.get("command", "")
|
||||
)
|
||||
if ok and text:
|
||||
|
||||
@@ -540,13 +540,20 @@ class MainWindow(QMainWindow):
|
||||
|
||||
def show_about(self):
|
||||
"""Show about dialog."""
|
||||
QMessageBox.about(
|
||||
self, "About MacroPad Server",
|
||||
f"MacroPad Server v{VERSION}\n\n"
|
||||
"A cross-platform macro management application\n"
|
||||
"with desktop and web interfaces.\n\n"
|
||||
"PWA-enabled for mobile devices."
|
||||
about_box = QMessageBox(self)
|
||||
about_box.setWindowTitle("About MacroPad Server")
|
||||
about_box.setTextFormat(Qt.RichText)
|
||||
about_box.setTextInteractionFlags(Qt.TextBrowserInteraction)
|
||||
about_box.setText(
|
||||
f"<h2>MacroPad Server v{VERSION}</h2>"
|
||||
"<p>A cross-platform macro management application<br>"
|
||||
"with desktop and web interfaces.</p>"
|
||||
"<p><b>Author:</b> <a href='https://shadowdao.com'>ShadowDao</a></p>"
|
||||
"<p><b>Updates:</b> <a href='https://shadowdao.com'>shadowdao.com</a></p>"
|
||||
"<p><b>Donate:</b> <a href='https://liberapay.com/GoTakeAKnapp/'>Liberapay</a></p>"
|
||||
)
|
||||
about_box.setStandardButtons(QMessageBox.Ok)
|
||||
about_box.exec()
|
||||
|
||||
def closeEvent(self, event):
|
||||
"""Handle window close."""
|
||||
|
||||
@@ -302,7 +302,12 @@ class MacroManager:
|
||||
# Press key combination
|
||||
keys = cmd.get("keys", [])
|
||||
if keys:
|
||||
pyautogui.hotkey(*keys)
|
||||
# Ensure keys is a list, not a string
|
||||
if isinstance(keys, str):
|
||||
keys = [k.strip().lower() for k in keys.split(",")]
|
||||
# Small delay before hotkey for reliability on Windows
|
||||
time.sleep(0.05)
|
||||
pyautogui.hotkey(*keys, interval=0.05)
|
||||
|
||||
elif cmd_type == "wait":
|
||||
# Delay in milliseconds
|
||||
|
||||
@@ -86,7 +86,7 @@ app = BUNDLE(
|
||||
icon='Macro Pad.png',
|
||||
bundle_identifier='com.macropad.server',
|
||||
info_plist={
|
||||
'CFBundleShortVersionString': '0.9.0',
|
||||
'CFBundleShortVersionString': '0.9.2',
|
||||
'CFBundleName': 'MacroPad Server',
|
||||
'NSHighResolutionCapable': True,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user