Add a new type of VLC Lua module: Interfaces.
authorAntoine Cellerier <dionoea@videolan.org>
Sun, 4 Nov 2007 21:42:27 +0000 (21:42 +0000)
committerAntoine Cellerier <dionoea@videolan.org>
Sun, 4 Nov 2007 21:42:27 +0000 (21:42 +0000)
commitde31813fc07c398e906346df090bf4680212a85c
treec9aba8a404ea82b8f7859c0a058fbf63150e98ff
parent154d9e74c59590e731abee5cd26ee8a401a4146c
Add a new type of VLC Lua module: Interfaces.
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 :/
24 files changed:
Makefile.am
modules/misc/lua/Modules.am
modules/misc/lua/callbacks.c [new file with mode: 0644]
modules/misc/lua/configuration.c [new file with mode: 0644]
modules/misc/lua/intf.c [new file with mode: 0644]
modules/misc/lua/luameta.c [deleted file]
modules/misc/lua/luaplaylist.c [deleted file]
modules/misc/lua/meta.c [new file with mode: 0644]
modules/misc/lua/net.c [new file with mode: 0644]
modules/misc/lua/objects.c [new file with mode: 0644]
modules/misc/lua/playlist.c [new file with mode: 0644]
modules/misc/lua/variables.c [new file with mode: 0644]
modules/misc/lua/vlc.c [new file with mode: 0644]
modules/misc/lua/vlc.h [new file with mode: 0644]
modules/misc/lua/vlclua.c [deleted file]
modules/misc/lua/vlclua.h [deleted file]
modules/misc/lua/vlm.c [new file with mode: 0644]
share/Makefile.am
share/luaintf/dummy.lua [new file with mode: 0644]
share/luaintf/hotkeys.lua [new file with mode: 0644]
share/luaintf/modules/common.lua [new file with mode: 0644]
share/luaintf/modules/host.lua [new file with mode: 0644]
share/luaintf/rc.lua [new file with mode: 0644]
share/luaintf/telnet.lua [new file with mode: 0644]