]> git.sesse.net Git - vlc/blobdiff - doc/skins/skins2-howto.xml
* doc/skins/skins2-howto.xml: Documented the DVD-related actions
[vlc] / doc / skins / skins2-howto.xml
index df813fa80fbc9b03de21791748d2be703dd9210a..ada1f3217c54bf824170eb8bea19ff5803156c75 100644 (file)
@@ -101,7 +101,7 @@ difficulty to understand how VLC skins work.</para>
 
 <para>XML is a markup language, like HTML. It won't be explained here any further, please use Google if you don't know what XML is. You'll see, it is rather easy to understand.</para>
 
-<para>The XML file used for the VLC skins follows a predefined DTD. You can find this DTD in VLC CVS, and its reading is strongly advised, since it contains the default values used for the parameters. A skin that does not follow the DTD with which VLC was compiled won't be loaded by VLC (and it might even crash it...).</para>
+<para>The XML file used for the VLC skins follows a predefined DTD. You can find this DTD <link linkend="http://trac.videolan.org/vlc/file/trunk/share/skins2/skin.dtd">in VLC SVN</link>, and its reading is strongly advised, since it contains the default values used for the parameters. A skin that does not follow the DTD with which VLC was compiled won't be loaded by VLC (and it might even crash it...).</para>
 
 <para>For a better undestanding of what follows, you should have a look at the DTD <!--(the last version is available on <ulink url="FIXME">TODO</ulink>) -->and/or at an example of valid XML skin<!-- TODO: link to the current DTD -->.</para>
 
@@ -110,30 +110,30 @@ difficulty to understand how VLC skins work.</para>
 <sect3 id="Theme">
   <title>Theme</title>
   <para>Main tag, for global attributes</para>
-      <sect4 id="version">
+      <sect4 id="themeversion">
       <title>version</title>
       <para>Version of the DTD used when making the skin, such as "2.0" (you can find the version in the <!--TODO: link-->DTD itself). This number might be used in the future to provide a better backward compatibility with older skins.</para>
       <para><emphasis>Required.</emphasis></para>
     </sect4>
-    <sect4 id="tooltipfont">
+    <sect4 id="themetooltipfont">
       <title>tooltipfont</title>
       <para>Identifiant of a <link linkend="Font">Font</link> or <link linkend="BitmapFont">BitmapFont</link>, used for the tooltips (beware that any character not present in a <link linkend="BitmapFont">BitmapFont</link> will be printed as a space, so will be invisible). The default value uses a font provided with VLC, so you don't need to provide it with your skin.</para>
       <para>Default value: defaultfont</para>
     </sect4>
-    <sect4 id="magnet">
+    <sect4 id="thememagnet">
       <title>magnet</title>
       <para>Allows to select the range of action (in pixels) of magnetism with borders of the screen: when the distance between the border of the screen and an anchor of a window is less than this value, the window will stick to the border. 0 disables magnetism with the screen borders.</para>
       <para>Default value: 15</para>
     </sect4>
-    <sect4 id="alpha">
+    <sect4 id="themealpha">
       <title>alpha</title>
       <para>Sets the alpha transparency of the windows. The value must be between 1 (nearly total transparency) and 255 (total opacity). Low values should be avoided.</para>
 <note><para>This only works if transparency is not disabled in the preferences of the skins2 module.</para></note>
       <para>Default value: 255</para>
     </sect4>
-    <sect4 id="movealpha">
+    <sect4 id="thememovealpha">
       <title>movealpha</title>
-      <para>Sets the alpha transparency of the windows when they are moving. Same range as <link linkend="alpha">alpha</link>.</para>
+      <para>Sets the alpha transparency of the windows when they are moving. Same range as <link linkend="themealpha">alpha</link>.</para>
       <note><para>This only works if transparency is not disabled in the preferences of the skins2 module.</para></note>
       <para>Default value: 255</para>
     </sect4>
@@ -142,22 +142,22 @@ difficulty to understand how VLC skins work.</para>
 <sect3 id="ThemeInfo">
   <title>ThemeInfo</title>
   <para>You can enter here some information about you (but this information is currently unused by VLC...)</para>
-      <sect4 id="name">
+      <sect4 id="themeinfoname">
       <title>name</title>
       <para>Skin name. Not supported yet.</para>
       <para><emphasis>Implied.</emphasis></para>
     </sect4>
-    <sect4 id="author">
+    <sect4 id="themeinfoauthor">
       <title>author</title>
       <para>Author of the skin. Not supported yet.</para>
       <para><emphasis>Implied.</emphasis></para>
     </sect4>
-    <sect4 id="email">
+    <sect4 id="themeinfoemail">
       <title>email</title>
       <para>Email of the author. Not supported yet.</para>
       <para><emphasis>Implied.</emphasis></para>
     </sect4>
-    <sect4 id="webpage">
+    <sect4 id="themeinfowebpage">
       <title>webpage</title>
       <para>Web page in relation with the skin. Not supported yet.</para>
       <para>Default value: http://www.videolan.org/vlc/</para>
@@ -177,12 +177,23 @@ difficulty to understand how VLC skins work.</para>
     <para>Indicates the path and name of the bitmap file used. This path can be absolute (but you should definitely avoid it), or relative to the path of the XML file.</para>
     <para><emphasis>Required.</emphasis></para>
   </sect4>
-  <sect4 id="alphacolor">
+  <sect4 id="bitmapalphacolor">
     <title>alphacolor</title>
     <para>Transparency color of the bitmap. It must be indicated with the following format: "#RRGGBB", where RR stands for the hexadecimal value of the red component, GG for the green one, and BB for the blue one.</para>
     <note><para>If your PNG file specifies a transparency mask, it will be taken into account too.</para></note>
     <para>Default value: #000000</para><!--XXX: should we change it into a less often used color?-->
   </sect4>
+  <sect4 id="bitmapnbframes">
+    <title>nbframes</title>
+    <para>This attribute is needed to define animated bitmaps; it is the number of frames (images) contained in your animation. All the different frames are just images laid vertically in the bitmap. Animated GIFs are not supported at the moment. (since VLC 0.8.5)</para>
+    <para>Default value: 1</para>
+  </sect4>
+  <sect4 id="bitmapfps">
+    <title>fps</title>
+    <para>Only used in animated bitmaps; it is the number of frames (images) per seconds of the animation. (since VLC 0.8.5)</para>
+    <para>Default value: 0</para>
+  </sect4>
+
 </sect3>
 
 <sect3 id="SubBitmap">
@@ -213,6 +224,16 @@ difficulty to understand how VLC skins work.</para>
     <para>Height of the SubBitmap, in pixels.</para>
     <para><emphasis>Required.</emphasis></para>
   </sect4>
+  <sect4 id="subbitmapnbframes">
+    <title>nbframes</title>
+    <para>Same as in <link linkend="bitmapnbframes">Bitmap</link> tag.</para>
+    <para>Default value: 1</para>
+  </sect4>
+  <sect4 id="subbitmapfps">
+    <title>fps</title>
+    <para>Same as in <link linkend="bitmapfps">Bitmap</link> tag.</para>
+  </sect4>
+
 </sect3>
 
 <sect3 id="Font">
@@ -228,7 +249,7 @@ difficulty to understand how VLC skins work.</para>
     <para>This is the file containing a TrueType font.</para>
     <para><emphasis>Required.</emphasis></para>
   </sect4>
-  <sect4 id="size">
+  <sect4 id="fontsize">
     <title>size</title>
     <para>This is the size of the font, in points.</para>
     <para>Default value: 12</para>
@@ -248,7 +269,7 @@ difficulty to understand how VLC skins work.</para>
     <para>This is the file containing a bitmap font, à la Winamp.</para>
     <para><emphasis>Required.</emphasis></para>
   </sect4>
-  <sect4 id="type">
+  <sect4 id="bitmapfonttype">
     <title>type</title>
     <para>Type of font, one of "digits" or "text".</para>
     <para>Default value: digits</para>
@@ -278,14 +299,14 @@ difficulty to understand how VLC skins work.</para>
     <para>Initial top position of the window.</para>
     <para>Default value: 0</para>
   </sect4>
-  <sect4 id="dragdrop">
+  <sect4 id="windowdragdrop">
     <title>dragdrop</title>
     <para>Indicates whether drag and drop of media files is allowed on this window.</para>
     <para>Default value: true</para>
   </sect4>
-  <sect4 id="playondrop">
+  <sect4 id="windowplayondrop">
     <title>playondrop</title>
-    <para>Indicates whether a dropped file is played directly (true) or only enqueued (false). This attribute has no effect if <link linkend="dragdrop">dragdrop</link> is set to "false".</para>
+    <para>Indicates whether a dropped file is played directly (true) or only enqueued (false). This attribute has no effect if <link linkend="windowdragdrop">dragdrop</link> is set to "false".</para>
     <para>Default value: true</para>
   </sect4>
 </sect3>
@@ -342,7 +363,7 @@ difficulty to understand how VLC skins work.</para>
 
 <sect3 id="Anchor">
   <title>Anchor</title>
-  <para>Create a "magnetic point" (or curve) in the current window. If an anchor of another window enters in the range of action of this anchor, the 2 anchors will automatically be on the same place, and the windows are "sticked". Each anchor has a priority (<link linkend="priority">priority</link> attribute), and the anchor with the highest priority is the winner, which means that when moving its window all the other anchored windows will move too. To break the effect of 2 anchored windows, you need to move the window whose anchor has the lower priority.</para>
+  <para>Create a "magnetic point" (or curve) in the current window. If an anchor of another window enters in the range of action of this anchor, the 2 anchors will automatically be on the same place, and the windows are "sticked". Each anchor has a priority (<link linkend="anchorpriority">priority</link> attribute), and the anchor with the highest priority is the winner, which means that when moving its window all the other anchored windows will move too. To break the effect of 2 anchored windows, you need to move the window whose anchor has the lower priority.</para>
   <sect4 id="anchorx">
     <title>x</title>
     <para>Is it really necessary to explain ?</para>
@@ -353,7 +374,7 @@ difficulty to understand how VLC skins work.</para>
     <para>...</para>
     <para>Default value: 0</para>
   </sect4>
-  <sect4 id="priority">
+  <sect4 id="anchorpriority">
     <title>priority</title>
     <para>Priority of anchor (see the previous description).</para>
     <para><emphasis>Required.</emphasis></para>
@@ -364,7 +385,7 @@ difficulty to understand how VLC skins work.</para>
     <note><para>You don't need to change this parameter if all you want is a ponctual anchor.</para></note>
     <para>Default value: (0,0)</para>
   </sect4>
-  <sect4 id="range">
+  <sect4 id="anchorrange">
     <title>range</title>
     <para>Range of action of the anchor, in pixels. Default is "10".</para>
     <para>Default value: 10</para>
@@ -421,7 +442,7 @@ difficulty to understand how VLC skins work.</para>
     <para>Identifiant of a <link linkend="Bitmap">Bitmap</link>.</para>
     <para><emphasis>Required.</emphasis></para>
   </sect4>
-  <sect4 id="resize">
+  <sect4 id="imageresize">
     <title>resize</title>
     <para>Since VLC 0.8.2. Specify the behaviour of the image when it is resized. Possible values are 'mosaic' (the image is repeated as many times as necessary to reach the wanted dimensions) and 'scale' (the image is actually rescaled). Beware that the 'scale' behaviour is much slower than the 'mosaic' one, so make sure to use it only when it's really needed.</para>
     <para>Default value: mosaic.</para>
@@ -431,6 +452,11 @@ difficulty to understand how VLC skins work.</para>
     <para>Action triggered by a click on the control. Possible values are 'move', to move the window, 'resizeE', to resize horizontally, 'resizeS' to resize vertically, and 'resizeSE' to resize both horizontally and vertically. Mnemonics: S, E and SE stand for South, East, and South-East. The 'resizeS' and 'resizeE' actions are available since VLC 0.8.5 only.</para>
     <para>Default value: none</para>
   </sect4>
+  <sect4 id="imageaction2">
+    <title>action2</title>
+    <para>Action triggered by a double-click on the control. See <link linkend="actions">Actions</link> for a list of possible actions. (Since VLC 0.8.5).</para>
+    <para>Default value: none</para>
+  </sect4>
 </sect3>
 
 <sect3 id="Button">
@@ -580,14 +606,14 @@ difficulty to understand how VLC skins work.</para>
     <para>Points defining the <link linkend="bezier">Bezier curve</link> followed by the slider cursor.</para>
     <para>Default value: none</para>
   </sect4>
-  <sect4 id="thickness">
+  <sect4 id="sliderthickness">
     <title>thickness</title>
     <para>Thickness of the slider curve. This attribute is used to determine whether the mouse is over the slider (hence whether a mouse click will have an effect on the cursor position).</para>
     <para>Default value: 10</para>
   </sect4>
   <sect4 id="slidervalue">
     <title>value</title>
-    <para>Variable controlled by the slider. Recognized values are "volume" and "time" (only exception: the <link linkend="Slider">Slider</link> defined inside the <link linkend="Playlist">Playlist</link> tag does not need to set this attribute).</para>
+    <para>Variable controlled by the slider. This must be a <link linkend="percent">percentage variable</link>, e.g "volume" or "time" (only exception: the <link linkend="Slider">Slider</link> defined inside the <link linkend="Playlist">Playlist</link> tag does not need to set this attribute).</para>
     <para>Default value: none</para>
   </sect4>
   <sect4 id="slidertooltiptext">
@@ -623,7 +649,7 @@ difficulty to understand how VLC skins work.</para>
   </sect4>
   <sect4 id="radialslidervalue">
     <title>value</title>
-    <para>Variable controlled by the slider. Recognized values are "volume" and "time".</para>
+    <para>Variable controlled by the slider. This must be a <link linkend="percent">percentage variable</link>, e.g "volume" or "time".</para>
     <para>Default value: none</para>
   </sect4>
   <sect4 id="radialslidertooltiptext">
@@ -647,6 +673,11 @@ difficulty to understand how VLC skins work.</para>
     <para>Initial height of the control, in pixels.<!--XXX: cannot be deduced?--></para>
     <para>Default value: 0</para>
   </sect4>
+  <sect4 id="videoautoresize">
+    <title>autoresize</title>
+    <para>Indicate whether the layout should be automatically resized to fit the dimensions of the played video.</para>
+    <para>Default value: true</para>
+  </sect4>
 </sect3>
 
 <sect3 id="Playlist">
@@ -749,6 +780,12 @@ difficulty to understand how VLC skins work.</para>
   <listitem><para>
     <emphasis>dialogs.popup()</emphasis>: Show the popup menu, (already available with a right-click on a <link linkend="Image">Image</link> control).
   </para></listitem>
+  <listitem><para>
+    <emphasis>equalizer.enable()</emphasis>: Enable the equalizer audio filter (since VLC 0.8.5).
+  </para></listitem>
+  <listitem><para>
+    <emphasis>equalizer.disable()</emphasis>: Disable the equalizer audio filter (since VLC 0.8.5).
+  </para></listitem>
   <listitem><para>
     <emphasis>vlc.play()</emphasis>: Play the current playlist item.
   </para></listitem>
@@ -824,6 +861,21 @@ difficulty to understand how VLC skins work.</para>
   <listitem><para>
     <emphasis>playlist.save()</emphasis>: Save the current playlist (since VLC 0.8.0).
   </para></listitem>
+  <listitem><para>
+    <emphasis>dvd.nextTitle()</emphasis>: Go to the next title of the DVD (since VLC 0.8.5).
+  </para></listitem>
+  <listitem><para>
+    <emphasis>dvd.previousTitle()</emphasis>: Go to the previous title of the DVD (since VLC 0.8.5).
+  </para></listitem>
+  <listitem><para>
+    <emphasis>dvd.nextChapter()</emphasis>: Go to the next chapter of the DVD (since VLC 0.8.5).
+  </para></listitem>
+  <listitem><para>
+    <emphasis>dvd.previousTitle()</emphasis>: Go to the previous chapter of the DVD (since VLC 0.8.5).
+  </para></listitem>
+  <listitem><para>
+    <emphasis>dvd.rootMenu()</emphasis>: Go to the root menu of the DVD (since VLC 0.8.5).
+  </para></listitem>
   <listitem><para>
     <emphasis>WindowID.show()</emphasis>: Show the <link linkend="Window">Window</link> whose <link linkend="windowid">id</link> attribute is 'WindowID'.
   </para></listitem>
@@ -857,6 +909,9 @@ difficulty to understand how VLC skins work.</para>
   <listitem><para>
     <emphasis>$D</emphasis>: Duration of the stream, when available (the output format is H:MM:SS).
   </para></listitem>
+  <listitem><para>
+    <emphasis>$t, $l, $d</emphasis>: Same as $T, $L and $D, except that the hour in the format is displayed only if its value is different from 0. These text variables were needed to support Winamp2 skins, but it is advised to use the uppercase ones. (Since VLC 0.8.5).
+  </para></listitem>
   <listitem><para>
     <emphasis>$H</emphasis>: Value of the <link linkend="help">help</link> attribute of the control that is under the mouse. The main use of this escape character is to create a kind of status bar, providing contextual help.</para>
     <note><para>Escape sequences in the help string are also transformed (except $H itself, it would generate an infinite loop!).</para></note>
@@ -881,6 +936,9 @@ difficulty to understand how VLC skins work.</para>
 <para>Here is a list of all the dynamic statuses that can be used in boolean expressions:</para>
 
 <itemizedlist>
+  <listitem><para>
+    <emphasis>equalizer.isEnabled</emphasis>: True if the equalizer audio filter is enabled (since VLC 0.8.5).
+  </para></listitem>
   <listitem><para>
     <emphasis>vlc.isPlaying</emphasis>: True when VLC is playing, false otherwise.
   </para></listitem>
@@ -918,6 +976,31 @@ difficulty to understand how VLC skins work.</para>
 
 </sect1>
 
+<sect1 id="percent">
+<title>Percentage variables</title>
+
+<para>Every <link linkend="Slider">slider</link> is associated to a percentage variable, which corresponds to the position of the cursor (between 0 and 100%)</para>
+
+<para>Here is a list of predefined percentage variables:</para>
+
+<itemizedlist>
+  <listitem><para>
+    <emphasis>equalizer.band(n)</emphasis>: Where 'n' is an integer between 0 and 9. When the equalizer audio filter is enabled, this value corresponds to the amplification factor of the n'th frequency band: 0% means -20 dB, and 100% means +20 dB. The frequencies corresponding to the 10 bands are: 60Hz, 170Hz, 310Hz, 600Hz, 1kHz, 3kHz, 6kHz, 12kHz, 14kHz, 16kHz. (Since VLC 0.8.5)
+  </para></listitem>
+  <listitem><para>
+    <emphasis>equalizer.preamp</emphasis>: Preamplification value (if the equalizer audio filter is enabled). A value of 0% means -20 dB, and 100% means +20 dB. (Since VLC 0.8.5)
+  </para></listitem>
+  <listitem><para>
+    <emphasis>time</emphasis>: Position of the stream being played.
+  </para></listitem>
+  <listitem><para>
+    <emphasis>volume</emphasis>: Value of the volume.
+  </para></listitem>
+</itemizedlist>
+
+</sect1>
+
+
 <sect1>
 
 <title>Compression</title>
@@ -928,10 +1011,12 @@ difficulty to understand how VLC skins work.</para>
 
 <para>On Linux, creating a .tar.gz archive is rather straight-forward using the 'tar' and 'gzip' commands. On Windows, it can be done using Winzip, UltimateZip, or any other (well, almost) compression software...</para>
 
-<para>It is advised to rename your .tar.gz archive with the .vlt extention, for 2 main reasons:</para>
+<para>Since VLC 0.8.5, it is also possible to archive your skin in a zip file.</para>
+
+<para>It is advised to rename your .tar.gz (or .zip) archive with the .vlt extension, for 2 main reasons:</para>
 
 <itemizedlist>
-  <listitem><para>on some systems, the "Change skin" dialog box only displays files which have a .vlt or .xml extention,</para></listitem>
+  <listitem><para>on some systems, the "Change skin" dialog box only displays files which have a .vlt or .xml extension,</para></listitem>
   <listitem><para>in the future, .vlt files could be associated to VLC in such a way that double-clicking a .vlt file would automatically load the skin in VLC.</para></listitem>
 </itemizedlist>