• Antoine Cellerier's avatar
    Add a new type of VLC Lua module: Interfaces. · de31813f
    Antoine Cellerier authored
    Two things led me to add this new type of Lua modules:
     * Most interfaces duplicate code from one another (rc and telnet both deal
       with sockets, rc and hotkeys duplicate VLC interfacing code)
     * It's easier to code in Lua than in C (for high level stuff)
    (* Users can code their own module easily, all they need is a text editor.)
    
    Most of the changes in modules/misc/ are Lua wrappers for different C APIs
    in VLC. I'd say that 90% of those wrappers won't change, the other 10% might
     need small changes (mostly to simplify the C code).
    
    The VLC Lua "interface" module will look for lua scripts in the
    *share*/luaintf/ directory. Files in *share*/luaintf/modules/ are lua modules
    which can be used by multiple VLC Lua modules (using require "modulename").
    
    This commit includes 4 Lua interface modules:
     * dummy.lua: the default module. Prints error messages and quits.
     * rc.lua: equivalent to the legacy rc.c module. Also includes a bunch of
       new features (+ multiple socket connections at a time work!). See file for
       more details.
     * telnet.lua: equivalent to the legacy telnet.c module. See file for more
       details.
     * hotkeys.lua: a rewrite of the hotkey handling module. This module is still
       experimental. I'll need to change VLC core hotkeys stuff to make it work
       like I want (ie: 1 hotkey triggers 1 action instead of the current 1 action
       can have 1 hotkey). This version executes 3 dummy actions when keys 'q',
       'w' or 'x' are pressed.
    
    What's left to do:
     * Port the http interface plugin to this framework (at least for the
       macros/rpn part ... using <?vlc some lua code ?> à la PHP would be way
       easier than what we currently have).
     * Finish work on the hotkeys module.
     * Code a real telnet/rc module with autocompletion and all the cool features
       usually found in a telnet/terminal interface.
     * Trash the legacy C modules.
    
    Stuff to test (which I can't test myself):
     * Win32 and Mac OS X specific changes to Makefile.am
     * Console interface under Win32. I expect it not to work.
    
    Other stuff included in this changeset are:
     * Code cleanup (I'm sure that it's still possible to simplify some of the old lua bindings code).
     * That's pretty much it in fact :/
    de31813f
telnet.lua 7.01 KB