Skip to content

Latest commit

 

History

History
259 lines (239 loc) · 7.79 KB

File metadata and controls

259 lines (239 loc) · 7.79 KB

EventGhost Rust TODO

UI

  • Main window layout
  • Menu bar
  • Tool bar
  • Status bar
  • Log window
  • Configuration view
    • UI for adding/editing plugins, folders, macros, events, actions
    • Integrate with main window
  • Tree view
    • Hierarchical view of plugins, folders, macros, events, actions
    • Context menu
    • Drag and drop support
    • Parent-child validation
    • Auto-save functionality
  • Basic UI layout
  • Toolbar with icons
    • Fix resource loading for icons in main application
    • Ensure consistent resource handling between test and main binaries
  • Menu bar
  • Status bar
  • Log view
  • Configuration tree view
  • Save/load configuration
    • Command line argument handling for configuration paths
    • Connect file menu actions to save/load functions
    • Support for .egtree XML format
    • Fix path handling for configuration files
    • Enhance .egtree file format support with base64 encoding/decoding
  • Keyboard shortcuts
    • Support for common operations (new, open, save, etc.)
    • Support for editing operations (cut, copy, paste, etc.)
    • Support for configuration operations (add plugin, folder, macro, etc.)

Core

  • Plugin System
    • Plugin traits and registry
    • Plugin discovery and loading infrastructure
    • Dynamic library loading implementation
    • Plugin hot-reloading
    • Route events to/from plugins
    • Error handling
    • Plugin reload process
  • Event Handling
    • Event bus / message passing
    • Event dispatch and routing
  • Macro Execution
    • Macro execution engine
    • Map events to macros
    • Flow control (if/else, loops, waits)
  • Action Execution
    • Execute action sequences
    • Builtin actions
    • Plugin-defined actions
  • Persistence
    • Save/load configuration (partially implemented but not working)
    • Auto-save
    • Import/export

Build and Deployment

  • Fix "export ordinal too large" errors in DLL builds
  • Configure build for different scenarios (testing, production)
  • Separate library (rlib) from dynamically linked library (cdylib)
  • Windows installer
  • Linux packages
  • Mac bundle

Plugins

  • Python plugin loader
  • Example logger plugin
    • Update to latest plugin traits
    • Proper error handling
    • State management
  • Common plugins (to be defined)

Documentation

  • User guide
  • API docs for plugins
  • Contributor guide

Action System Implementation

Core Action Framework

  • Basic action trait and manager implementation
  • Action result handling
  • Action configuration system
  • Action grouping support
  • Action compilation system
    • Pre-execution optimization
    • Caching compiled actions
    • Invalidation mechanism
  • Action thread management
    • Dedicated action execution thread
    • Thread pool for parallel actions
    • Action execution queue
  • Action state management
    • Persistent state storage
    • State restoration on reload
    • State sharing between actions

Action UI Components

  • Action configuration dialog
    • Dynamic form generation based on action parameters
    • Property grid for parameter display and editing
    • Validation feedback
    • Help text integration
  • Action group tree view
    • Hierarchical display of action groups
    • Drag and drop support
    • Context menu integration
  • Action execution feedback
    • Progress indicators
    • Success/failure notifications
    • Execution log integration

Standard Actions

  • Flow Control Actions
    • Conditional execution (If/Else)
    • Loops (While/For)
    • Delay/Wait
    • Jump to macro
  • System Actions
    • Execute program
    • System commands
    • Registry operations
    • File operations
  • Window Actions
    • Window manipulation
    • Send keys
    • Mouse control
    • Mouse recorder (capturing and playback)
  • Variable Actions
    • Set/Get variables
    • Mathematical operations
    • String operations

Plugin Integration

  • Action registration API
    • Plugin action discovery
    • Dynamic action loading
    • Version compatibility checking
  • Action documentation
    • Help page generation
    • Example code
    • Parameter documentation
  • Action testing framework
    • Unit test helpers
    • Integration test support
    • Mock event generation

Persistence

  • Action configuration storage
    • Save/load action parameters
    • Export/import actions
    • Configuration versioning
  • Action state persistence
    • Runtime state serialization
    • State recovery mechanisms
    • Clean shutdown handling

Documentation

  • Action development guide
    • Creating new actions
    • Best practices
    • Example implementations
  • User documentation
    • Action usage guide
    • Configuration examples
    • Troubleshooting guide

Next Steps (Priority Order)

  1. Add action configuration UI
  2. Fix Result unwrapping in main.rs
  3. Fix GTK4 compatibility issues
  4. Enhance .egtree file format support
  5. Fix resource loading for icons
  6. Create system action implementations (in progress)
    • Run Command action implemented
    • File Operations action implemented
    • Additional system actions needed (Registry operations, Window management)
  7. Implement action thread management
  8. Add action persistence
  9. Develop plugin action integration
  10. Write documentation

Future Enhancements

  • Action templates
  • Action recording
  • Action debugging tools
  • Action performance profiling
  • Action security sandbox
  • Remote action execution

Python Compatibility

  • Implement eg.globals equivalent
    • Support for local, MQTT, and Redis backends
    • Serialization of different data types
    • Publish/subscribe functionality
    • Additional compatibility with legacy Python code
  • Support legacy Python plugins
    • Python binding layer
    • Python plugin bridge
    • Support for Python callables in actions
  • Core API compatibility
    • Match Python API function signatures
    • Support for Python events in Rust
  • UI compatibility
    • Support for Python UI elements
    • Python-defined configuration panels
    • Legacy dialog support

Plugin Parity

  • IR Receiver Plugins
    • USB-UIRT
    • LIRC
    • Streamzap
    • Microsoft MCE Remote
  • System Control Plugins
    • Window control
    • Keyboard emulation
    • Mouse control
    • File operations
  • Network Plugins
    • NetworkSender/Receiver
    • Webserver
    • MQTT Client
  • Media Control Plugins
    • VLC
    • Media Player Classic
    • WinAmp
  • Hardware Support
    • Serial port communication
    • USB device support
    • HID device support
  • Utility Plugins
    • Speech (TTS)
    • Sound mixer
    • Timer/Scheduler

Core Functionality Gaps

  • WinAPI integration for hardware/system access
  • Plugin installation/update system
  • Language translation system
  • Remote control functionality
  • Auto-start and tray icon functionality
  • Registry handling

Lessons Learned

  • Rust's ownership model requires careful design of event and plugin systems
  • GTK4 migration takes significant effort but provides a more modern UI framework
  • Mock implementations are crucial for testing in a UI-heavy application
  • Need to balance Python compatibility with modern Rust idioms
  • Consider approach for plugins: native Rust vs Python bridge vs both
  • Resource loading in GTK applications requires proper initialization and path handling
  • Borrow checker issues in GTK applications often require restructuring UI initialization