Pass drap&drop coordinates over to visual controls.
This feature will be used to allow users to finely insert items in the
playtree control instead of just appending them at the end.
- remove the awkward global lock and serializer mechanism
- adapt to latest module API (fix compil errors)
- be more specific about hwnd or xid depending on port
- set display.x11 on Linux port
This rework includes:
- activation with mouse move
- transparency and fading out supported if the WM allows it
- fsc no longer a child window
(this latter point should work out the refresh problems
often mentioned on Vista and Win7)
This singleton is based on the same pattern as VlcManager or VoutManager.
It is intended to load and cache art for the whole skin.
Caching makes sense because 1/ several controls within a skin can display
the current art, and 2/ art is likely to be reused by successive inputs
(music album, repeat). Yet, caching is limited to two art for memory reason.
This patch gives skins developpers the possibility to display the art file
associated to the current input in an image control.
It features the following :
- a new 'art' boolean parameter is added for the Image control (skin.dtd)
- when set to true, the skin engine will reuse this control to display
the current art file
- in addition to 'scale' and 'mosaic', the resize parameter can now accept
a new 'scale2' value, that respects the original aspect ratio of art files
This patch does the following :
- as a vout window provider, make sure skins functions run by vout thread(s)
don't issue any calls to the GUI. (skins on Linux runs fine at last !)
- prepare support for SET_VOUT_SET_FULLSCREEN new control
- implement hotkeys (no longer available at the vout level)
- modify a show() method not consistent across platform
- cleanup (dead code)
What is currently broken:
* Some playlist demuxers (shout, dvb and pls)
* DAAP
* BeOS playlist
* GPE playlist, I suppose
What has some trouble:
* Meta handling in several demuxers (most notably TS)
* Skins2 playlist (doesn't refresh correctly)
* OS X playlist (see bigben's latest commits)
with id "pledit" (defined in the new tag "<IniFile>" contains:
[Text]
Normal=#FFFFFF
it will create a constant "pledit.Text.Normal" with value "#FFFFFF"
* winamp2.xml: use the "pledit.txt" file to have correct playlist colors
is it ok to backport in 0.8.5 ?
You can use the following actions in the XML file:
- dvd.nextTitle()
- dvd.previousTitle()
- dvd.nextChapter()
- dvd.previousChapter()
- dvd.rootMenu()
XML example:
<PopupMenu id="sample_menu">
<MenuItem label="Play" action="vlc.play()" />
<MenuItem label="Pause" action="vlc.pause()" />
<MenuSeparator />
<MenuItem label="Show playlist" action="playlist_window.show()" />
<MenuItem label="Hide playlist" action="playlist_window.hide()" />
<MenuSeparator />
<MenuItem label="Quick open file" action="dialogs.fileSimple()" />
</PopupMenu>
To call the menu:
<Button action="sample_menu.show()" ... />
Known bug: the popup disappears when the user clicks "too fast" on the
button: the control refreshes itself in an asynchronous way, and the popup
dislikes it... so click slowly :)
"nbFrames" and "fps" in the (Sub)Bitmap elements to set the number
of frames and the frame rate in a bitmap. As in the radialslider,
the different frames are just laid vertically in the bitamp (and
all the frames must have the same size)
At the moment animated bitmaps are only supported in Button controls.
Borrowed code from Gilles Vollant for the unzip part
(I guess this code should be put elsewhere in vlc, but it was
the easy way for me at the moment;) I hope it compiles fine
everywhere, I've tested only on linux.
Now, everything's ready for winamp skins ;)
It can be defined in the XML with usual sliders, using the new
variables equalizer.band(0), ..., equalizer.band(9)
(0% means -20dB, and 100% means +20 dB).
More things to come, but it is already working as is.
* all: AsyncQueue::push() now does also a remove() by default, as
the two methods are always called together
- vlcproc.cpp: update $N and $F variables on an item/playlist change
_ async_queue.cpp: fixed a deadlock between the VLC playlist and the command
queue
(a bit "C-style-coded" at the moment ;)
* utils/var_bool.*: added true and false boolean variables, and the "OR"
composite variable
* src/var_manager.*: support for anonymous variables
* parser/interpreter.cpp: use the RPN evaluator to resolve boolean
expressions in the XML. Any well-parenthesized expression using "not",
"or", "and", "true", "false" and boolean variables should be understood
(not much tested yet).
skins are not reentrant (at least with x11). Put commands in the queue
instead.
* commands/cmd_vars: commands to change variables
* controls/ctrl_list.cpp: automatic scroll when the stream changes
* src/bitmap.cpp: removed the scandinavian characters from the
text font, they don't belong to ASCII (caused a stack corruption)
- new "Video" element in the XML
- of course it doesn't work if the vout is launched before
the interface
- known bugs:
- no refresh of the area when there is no vout
- BadDrawable X11 error at exit because the vout still uses
a destroyed window
- hardcoded size
* modules/gui/skins2/src/var_manager.cpp: delete the variables in the
right order to avoid invalid reads in the destructor
* modules/gui/skins2/parser/xmlparser: skeleton of a new parser based
on the text reader API of libxml2
(not writing); use VarBoolImpl instead to instanciate read/write variables.
Bool variables can now be combined with VarNotBool and VarBoolAndBool
(TODO: VarBoolOrBool)
* commands/cmd_show_window.hpp: the commands now call directly
GenericWindow::show/hide, because the visibility variable of a
window is a VarBool (so, read-only)
* commands/cmd_input.hpp: added Play and Pause commands
* parser/interpreter.cpp: beginning of support of boolean expressions,
like "vlc.isSeekable and not vlc.isStopped" (operator precedence is
not really well handled yet)
* src/vlcproc.*: new variables "vlc.isSeekable", "vlc.isStopped" and
"vlc.isPaused"
* controls/ctrl_checkbox.cpp: the "state" variable of a checkbox is
now a passive VarBool, so actions must be explicitely set with
'action1="..." action2="..."' in the xml file
* removed src/vlcvars.* => "vlc.isMute" doesn't work any more
(anyway it didn't work well...)
* theme/theme.xml: updated with the new VarBool behaviour