C.2. A skin fájl

Amint fentebb már említettem, ez a skin konfigurációs fájl. Sor-orientált; a megjegyzést tartalmazó sorok egy ';' karakterrel kezdődnek (csak szóközök és tab-ok lehetnek a ';' előtt).

A fájl szekciókból áll. Minden szekció a skin egy alkalmazását írja le a következő formában:

section = szekció neve
.
.
.
end

Jelenleg csak egy alkalmazás van, vagyis csak egy szekciót kell készítened: a neve movieplayer.

Ebben a szekcióban minden ablakot egy blokk ír le a következő formában:

window = ablak neve
.
.
.
end

Ahol az ablak neve ezen karakterláncok valamelyike lehet:

(Az alablak és menü blokkok opcionálisak - nem kötelező menüt készítened vagy kidekorálni az alablakot.)

Egy ablak blokkon belül az ablak minden elemét definiálhatod, egyet egy sorban, ebbe a formában:

item = parameter

Ahol az item egy karakterlánc, ami azonosítja az adott típusú GUI elemet, a parameter pedig egy numerikus vagy szöveges érték (vagy értékek listája vesszővel elválasztva).

A fentieket összerakva a teljes fájl valahogy így néz ki:

section = movieplayer
  window = main
  ; ... főablak elemei ...
  end

  window = sub
  ; ... alablak elemei ...
  end

  window = menu
  ; ... menü elemei ...
  end

  window = playbar
  ; ... playbar elemei ...
  end
end

Egy kép fájl nevét a hozzá vezető útvonal nélkül kell megadni - a képeknek a skins könyvtárban kell lenniük. A fájl kiterjesztését megadhatod (de nem kötelező). Ha a fájl nem létezik, az MPlayer megpróbálja betölteni a <filename>.<ext> fájlt, ahol png és PNG kerül az <ext> helyére (ebben a sorrendben). Az első megtalált fájlt fogja használni.

Egy példa a tisztánlátáshoz. Tegyük fel, hogy van egy main.png nevű fájlod, amit a fő ablakhoz használsz:

base = main, -1, -1

Az MPlayer megpróbálja betölteni a main, main.png, main.PNG fájlokat.

Végül pár szó a pozícionálásról. A fő ablak és az alablak a képernyő különböző sarkaiba helyezhető az X és Y koordináták megadásával. A 0 fent vagy bal oldalt van, a -1 középen és a -2 jobb oldalt vagy lent, ahogy az itt is látható:

(0, 0)----(-1, 0)----(-2, 0)
  |          |          |
  |          |          |
(0,-1)----(-1,-1)----(-2,-1)
  |          |          |
  |          |          |
(0,-2)----(-1,-2)----(-2,-2)

C.2.1. Fő ablak és a playbar

A következő bejegyzések használhatóak a 'window = main' ... 'end', és a 'window = playbar' ... 'end' blokkokban.

base = image, X, Y

Megadhatod vele a fő ablakban használt háttérképet. Az ablak a megadott X, Y pozícióban fog megjelenni a képernyőn. Az ablak mérete a kép méretével lesz azonos.

Megjegyzés

Ezek a koordináták jelenleg nem működnek a megjelenítő ablak esetében.

Figyelem

A kép transzparens részei (#FF00FF színű) feketeként jelenik meg az XShape kiterjesztés nélküli X szerverek esetében. A kép szélességének 8-cal oszthatónak kell lennie.

button = image, X, Y, width, height, message

Egy width * height méretű gomb megjelenítése az X, Y pozícióban. A megadott message üzenet akkor generálódik, amikor a gombot megnyomják. Az image által megadott képnek három részt kell tartalmaznia egymás alatt (a gomb állapotainak megfelelően), így:

+-------------+
|  benyomott  |
+-------------+
| felengedett |
+-------------+
|  letiltott  |
+-------------+
decoration = enable|disable

Engedélyezi vagy letiltja a főablakban az ablakkezelő dekorációját. Alapértelmezetten disable.

Megjegyzés

Ez nem működik a megjelenítő ablakban, nincs rá szükség.

hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message

vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message

Egy vízszintes (hpotmeter) vagy függőleges (vpotmeter) potméter megjelenítése width * height méretben az X, Y pozícióban. A kép több különböző részre osztható a potméter különböző fázisainak megfelelően (például lehet egy pot-od a hangerő szabályozásához, ami zöldből pirosba vált, ahogy az értéke változik a minimumtól a maximumig). A hpotmeter-nek lehet egy gombja is, amit vízszintesen lehet húzni. A paraméterek:

  • button - a gombként használt kép (három részt kell tartalmaznia egymás alatt, mint a gomb esetében)

  • bwidth, bheight - a gomb mérete

  • phases - a hpotmeter különböző fázisaiban használt kép neve. Speciális értékként a NULL is használható, ha nem akarsz ilyen képet. A képet függőlegesen numphases részre kell felosztani így:

    +------------+
    |  1. fázis  |
    +------------+
    |  2. fázis  |
    +------------+
         ...
    +------------+
    |  n. fázis  |
    +------------+

  • numphases - a phases képen lévő fázisok száma

  • default - a hpotmeter alapértelmezett értéke (0 és 100 között)

  • X, Y - a hpotmeter pozíciója

  • width, height - a hpotmeter szélessége és magassága

  • message - az üzenet, ami a hpotmeter értékének megváltozásakor generálódik

potmeter = phases, numphases, default, X, Y, width, height, message

Egy hpotmeter gomb nélkül. (Gondolom a megfordítása volt az eredeti cél, de csak a vízszintes vonszolásra reagál.) A paraméterek leírását lásd a hpotmeter-nél. A phases lehet NULL, de ez eléggé haszontalan, mivel akkor nem látod, hogy a potmeter hova van állítva.

font = fontfile, fontid

Egy betűt definiál. A fontfile a betű leíró fájl neve egy .fnt kiterjesztéssel (a kiterjesztést ne add meg itt). A fontid-t a betűre történő hivatkozásokhoz lehet használni (lásd dlabel és slabel). 25 betűt lehet definiálni.

slabel = X, Y, fontid, "text"

Egy statikus címkét tesz ki az X, Y pozícióba. A text szöveget jeleníti meg a fontid-vel azonosított betűtípussal. A szöveg egyszerű karakterlánc (az $x változók nem működnek) amit dupla idézőjelek közé kell írni (de a " karakter nem lehet a szöveg része). A címke a fontid-vel azonosított betűtípussal jelenik meg.

dlabel = X, Y, length, align, fontid, "text"

Egy dinamikus címkét tesz ki az X, Y pozícióba. A címke azért dinamikus, mert a szövege periódikusan frissül. A címke maximum hosszát a length szabályozza (a magassága egy karakter magasságával egyezik meg). Ha a megjelenítendő szöveg szélesebb ennél, scrollozva lesz, különben az align paraméter által megadott módon pozícionálódik: 0 jobbra, 1 középre, 2 balra igazítva.

A megjelenítendő szöveget a text adja meg: dupla idézőjelek közé kell írni (de a " karakter nem lehet része a szövegnek). A címke a fontid által meghatározott betűtípussal jelenik meg. A szövegben a következő változókat használhatod:

VáltozóJelentés
$1lejátszási idő hh:mm:ss formátumban
$2lejátszási idő mmmm:ss formátumban
$3lejátszási idő hh formátumban (órák)
$4lejátszási idő mm formátumban (percek)
$5lejátszási idő ss formátumban (másodpercek)
$6film hossza hh:mm:ss formátumban
$7film hossza mmmm:ss formátumban
$8film hossza h:mm:ss formátumban
$vhangerő xxx.xx% formátumban
$Vhangerő xxx.xx formátumban
$bbalansz xxx.xx% formátumban
$Bbalansz xxx.xx formátumban
$$az $ karakter
$aegy karakter az audió típusnak megfelelően (nincs: n, mono: m, sztereo: t)
$tsáv száma (a lejátszási listában)
$ofájlnév
$ffájlnév kisbetűsen
$Ffájlnév nagybetűsen
$T egy karakter a folyam típusnak megfelelően (file: f, Video CD: v, DVD: d, URL: u)
$pa p karakter (ha a film lejátszás alatt van és a betűtípusban van p karakter)
$saz s karakter (ha a film meg van állítva movie és a betűtípusban van s karakter)
$eaz e karakter (ha a lejátszás szünetel és a betűtípusban van e karakter)
$xfilm szélessége
$yfilm magassága
$Chasznált codec neve

Megjegyzés

Az $a, $T, $p, $s és $e változók mind karakterekkel térnek vissza, amiket speciális szimbólumként kell megjeleníteni (például az e a pillanatállj szimbóluma, ami általában valami ilyesmi: ||). Szükséged lesz egy normál karaktereket tartalmazó betűtípusra és egy másikra a szimbólumokhoz. Lásd a szimbólumokról szóló részt a további információkért.

C.2.2. Alablak

A következő bejegyzések használhatóak a 'window = sub' . . . 'end' blokkban.

base = image, X, Y, width, height

Az ablakban megjelenítendő kép. Az ablak a megadott X, Y pozícióban jelenik meg a képernyőn (0,0 a bal felső sarok). A -1 a középre, a -2 a jobbra (X) és le (Y) igazítást jelenti. Az ablak akkora lesz, amekkora a kép. A width és a height az ablak méretét írják elő, opcionálisak (ha hiányoznak, az ablak ugyan akkora méretű lesz, mint a kép).

background = R, G, B

Beállíthatod vele a háttér színét. Hasznos, ha a kép kisebb, mint az ablak mérete. Az R, G és B a szín vörös, zöld és kék komponensét adja meg (mindegyik decimális szám 0-tól 255-ig).

C.2.3. Skin menü

Amint korábban már említettem, a menü két kép segítségével kerül megjelenítésre. A normál menü bejegyzések a base elemmel megadott képen láthatóak, míg az épp aktuálisan kiválasztott elem megjelenítése a selected elemről történik. Meg kell adnod minden egyes menüpont pozícióját és méretét.

A következő bejegyzések használhatóak a 'window = menu'. . .'end' blokkban.

base = image

A normál menüpontokat tartalmazó kép.

selected = image

Az összes menüpontot kiválasztva ábrázoló kép.

menu = X, Y, width, height, message

Megadja egy menüelem X, Y pozícióját és a méretét a képen. A message egy üzenet, ami az egérgomb menüponton történő felengedésekor generálódik.