tedgo's "Dark One"-Theme für CUI

Begonnen von tedgo, 28. November 2008, 20:43:46

Vorheriges Thema - Nächstes Thema

tedgo

Kommt drauf an...
Normalerweise auf der Registerkarte "PanelList". Da werden die Größenverhältnisse für jedes Panel unter top, left, width, height - oft unter Zuhilfenahme der Variablen %ps_height% und %ps_width%, die ja die aktuellen Werte wiedergeben - errechnet/eingetragen.
Nur im rechten Panel mit den Tabs sind die Werte im Script festgelegt (weil die Anzahl der Panel bis zu 8 variabel ist).

phaidros

Zitat von: tedgo in 18. März 2012, 20:48:40
Kommt drauf an...
Normalerweise auf der Registerkarte "PanelList". Da werden die Größenverhältnisse für jedes Panel unter top, left, width, height - oft unter Zuhilfenahme der Variablen %ps_height% und %ps_width%, die ja die aktuellen Werte wiedergeben - errechnet/eingetragen.
Nur im rechten Panel mit den Tabs sind die Werte im Script festgelegt (weil die Anzahl der Panel bis zu 8 variabel ist).

Genau diese Felder habe ich gemeint. Die Größe der Panels wird unter Bezugnahme auf die Variablen %ps_height% und %ps_width% festgelegt, aber wo bekommen diese Variablen ihre Werte her? Vielleicht bin ich ja gerade zu blöd, um das zu kapieren...



tedgo

Schrieb ich ja schon: die Werte der Variablen werden automatisch ermittelt und geben die aktuelle Breite und Höhe des jeweiligen Panel Stack Splitters, in dem du gerade arbeitest, wieder.

phaidros

Zitat von: tedgo in 18. März 2012, 22:44:01
Schrieb ich ja schon: die Werte der Variablen werden automatisch ermittelt und geben die aktuelle Breite und Höhe des jeweiligen Panel Stack Splitters, in dem du gerade arbeitest, wieder.

Dann anders gefragt: wo werden die relativen Größen der Panels festgelegt? Was muss ich ändern, damit z.B. der rechte Panel Stack Splitter, der die Album list enthält, breiter wird?

tedgo

Das ist nicht so leicht...
Ich habe die Config so angelegt, dass sich die Größe aller Panel dynamisch ändert, wenn sich die Fenstergröße ändert.
Willst du eine Seite vergrößern, müsstest du die Größe ALLER anderen Panel auch angleichen, was sehr aufwändig ist.
Dazu müsstest du auf die Playlist-Ansicht-Buttons (rechts oberhalb der Wiedergabelisten) rechtsklicken --> Splitter Settings --> PanelList jeweils die Werte für left und width ändern und zwar für sämtliche Panel (entweder machst du fixe Werte oder musst die Breiten neu berechnen).

phaidros

Zitat von: tedgo in 18. März 2012, 22:53:47
Das ist nicht so leicht...
Ich habe die Config so angelegt, dass sich die Größe aller Panel dynamisch ändert, wenn sich die Fenstergröße ändert.
Willst du eine Seite vergrößern, müsstest du die Größe ALLER anderen Panel auch angleichen, was sehr aufwändig ist.
Dazu müsstest du auf die Playlist-Ansicht-Buttons (rechts oberhalb der Wiedergabelisten) rechtsklicken --> Splitter Settings --> PanelList jeweils die Werte für left und width ändern und zwar für sämtliche Panel (entweder machst du fixe Werte oder musst die Breiten neu berechnen).

Danke, ich werde es probieren.

phaidros

Scheint doch relativ einfach zu gehen - fast alles habe ich hinbekommen. Das einzige, was ich nicht ändern konnte, ist die Lage der drei Playlist-Ansicht-Buttons. Wenn ich die Width des Panels "Menubar" kleiner mache, wandern zwar die drei Buttons "Activate Now Playing", "Stop after current" und "Playback order" nach links, aber die Playlist-Ansicht-Buttons verändern ihre Position nicht (und werden dementsprechend überdeckt, wenn das rechte Panel breiter wird). Wie kann ich deren relative Position verändern?

Und das ist nun die letzte Frage, versprochen  :-[

tedgo

Deren Position (zumindest "left") findest du im Script unter //-----BUTTONS (die Zeile $puts(button.x,...)).
Ich hoffe, du hast es dir nicht zu einfach gemacht, wenn du sagst, dass es gar nicht schwer war...
Passen denn die Panel auch noch beim Resizen des Fensters? Oder hast du nun einfach fixe Werte für die Breite vorgegeben (wie grausam! Dahin ists mit der Symmetrie...  :'()? :)

phaidros

Keine Angst, ich habe keine festen Werte vergeben. Ich habe einfach für Menubar, Playlist und EL Playlist in dem String

$sub($ifgreater(%ps_width%,1280,$muldiv(%ps_width%,33,64),$sub(%ps_width%,620)),122)

die 620 durch einen größeren Wert ersetzt (z.B. 700), damit werden die Panels schmaler, bleiben aber dynamisch. Entsprechende Veränderung bei Right Panel führt dazu, dass dieses Panel breiter wird.

Ehrlich gesagt verstehe ich nicht genau, was da berechnet wird, ich habe einfach herumprobiert.

Das Skript ändere ich morgen, jetzt ist es Zeit fürs Bett...

tedgo

#954
Vergiss nicht, im Script diesen Wert auch für das Cover Panel zu ändern:

Zitat
// ----- SHOWPANEL ---------------------------------------------------------------------------------------------

$showpanel_c(ELPlaylist,$ifequal(%do.playlist.switch%,1,1,0))
$showpanel_c(Playlist,$ifequal(%do.playlist.switch%,2,1,0))
$showpanel_c(MiniPlaylist,$ifequal(%do.playlist.switch%,3,1,0))

$ifequal(%do.playlist.switch%,3,
   $movepanel_c(Cover,$ifgreater(%ps_width%,1280,$muldiv(%ps_width%,31,128),310),108,$ifgreater(%ps_width%,1280,$muldiv(%ps_width%,33,64),$sub(%ps_width%,620)),$sub(%ps_height%,118))
,
   $movepanel_c(Cover,$ifgreater(%ps_width%,1280,$div(%ps_width%,128),10),$ifgreater(%ps_width%,1280,$sub(%ps_height%,$add($muldiv(%ps_width%,7,32),10)),$sub(%ps_height%,290)),$ifgreater(%ps_width%,1280,$muldiv(%ps_width%,7,32),280),$ifgreater(%ps_width%,1280,$muldiv(%ps_width%,7,32),280))
)

Denn in der "Großbildansicht" wird das Panel einfach von links unten in die Mitte verschoben!

P.S.: Diese Änderung bewirkt aber nur eine Verbreiterung des rechten Panels, wenn das Fenster schmaler als 1280px ist...

ArethusA^Q

#955
Zitat von: ArethusA^Q in 14. März 2012, 18:32:50
Hallo,
könnte mir bitte jemand sagen, was ich hierfür:

für ein Plugin installieren muss? Hab dazu leider noch nichts gefunden (ehrlicherhalber muss ich hinzufügen, dass ich nicht alle 63 Seiten dieses Threads durchgesehen habe ::) ).
Meine Vorstellung ist, das Teil in mein Foobar irgendwie einzufügen. ColumnsUI-Oberfläche ist installiert.
Danke Euch!

Zitat von: tedgo in 18. März 2012, 20:37:07
@ArethusA^Q
Das ist keine einzelnes Plugin.
Das habe ich damals im Panel Stack Splitter erstellt (heute - ohne das "Displayglas" - im WSH Panel mod) und die Peakanzeige war damals ein Channel Spectrum Panel (heute das ebenso alte und leider nicht mehr weiterentwickelte Peakmeter Spectrum).
Um das nachzubilden müsstest du dir die daamalige Config herunterladen und den Scriptteil im Panel Stack Splitter einfügen (sowohl den betreffenden Teil unter PerTrack als auch den unter PerSecond).

Hallo tedgo,
danke erstmal für deine Antwort! Ich bin mir nicht sicher, ob ich sie richtig verstanden habe, teilweise denke ich aber schon. :)
Ich habe jetzt den WSH Panel mod installiert (da ich nur deine neueste Config habe) und ein neues Panel erstellt. Nun muss ich dort welches Script einfügen?
Wenn ich ein Skript aus dem Ordner "WSH Scripts" aus deinem Theme einfüge (egal welches), produziert mir der WSH Panel mod jedesmal einen Fehler. Das ist dann wohl der Teil, den ich nicht verstehe... ::)
Kenne mich mit JScripten (oder was auch immer sie sind) nun gar nicht aus, könne also dort auch nichts verändern, damit es möglicherw. passt.
Könntest du mir viell. bitte ein Script nennen, welches ich nehmen könnte, damit es wie in deiner Config aussieht?

PS: Achso, das Channel Spectrum Panel hatte ich schon länger benutzt, ist also drin...
Aussehn tut's so (habe testweise mal 'nen Coverflow-Script in den WSH mod eingefügt. Das klappt.):

tedgo

Mit dem WSH Panel mod bekommst du das so wie du willst nicht hin, da du damit kein panelübergreifendes "Displayglas" hinbekommst.
Du müsstest es schon im Panel Stack Splitter machen, so wie in der alten Config.

ArethusA^Q

Aaaah, jetzt sehe ich erst deine Seite auf Deviantart mit der alten Version 2.1! :-[
Habe die jetzt runtergeladen und entpackt, dazu noch den Panel Stack Splitter installiert.
Da gibt es ja massig Einstellungen... Ok, ich denke mal es ist dein Script "DO21 Display Panel.txt" für das Display zuständig?
Sollte ich den gesamten Text unter PerTrack als auch PerSecond einfügen? Denke mal, du meintest etwas anderes, denn dabei passiert bei mir leider nichts.
Welchen Teil müsste ich denn wo einfügen?
Das Channel Spectrum Panel habe ich durch Import deiner Settings wie im Diplay hinbekommen (allerdings an falscher Stelle).

Danke dir wirklich für deine Mühe!! Deine Anleitungen für dein Theme sind auch Spitze!

tedgo

Nein, die Datei ist fürs WSH Panel mod (hatte ich das da drin erstellt? Erinnere mich nicht mehr...).
Ich denke, die Version mit dem Displayglas war in v1.6, die gibt's aber nicht mehr...

Wenn du dich mit einem Display a la v3.0.1 (oder auch 2.1) arrangieren kannst - ohne Displayglas - musst du das Script in ein WSH Panel mod einfügen und den Pfad zur "DO Global Script.js" Datei, auf die sich das Script bezieht, im Script oben (unter dem Punkt @import) anpassen.

ArethusA^Q

#959
Hi tedgo,
du verwirrst mich... :crazy:, viell. liegt es auch daran, dass ich nicht verstanden habe, was du überhaupt immer mit "ohne Displayglas" meintest!
Ich habe mich immer an den Bildern im ersten Post (und von einigen anderen Usern auf den letzten Seiten hier im Thread) orientiert und da sieht dieses Display eben so aus, wie von mir gepostet (ok, auf dem ersten Bild in Post 1 ist anstatt der Trackeigenschafts-Anzeige wohl die Waveform Seekbar zu sehen).

Jedenfalls habe ich getan, was du geschrieben hast:
- WSH Panel Mod - Panel eingefügt
- Script aus DO21 Display Panel.txt reinkopiert (unter Rechtsklick > Configure...)
- Pfad im Script bei @import zur Datei DO21 Global Script.js angepasst
- Apply > OK

Nun sah es bei mir so aus:

...also leider nicht wie gewünscht.
Ich habe das gleiche dann nochmal mit dem Script und der js-Datei von Version 3.0.1 probiert, mit dem selben Ergebnis.
Muss ich noch irgendwas anderes anpassen?? Andere Dateipfade, zB. zu SliderPlay.png oder den configPath in der DO Global Script.js? Oder was ist mit der PEAKdefault.pmf? Die kann ich gar nicht laden. Der Peakmeter sollte doch ohne zusätzliches Panel dafür zu sehen sein?
Mein Script sieht momentan so aus:
// ==PREPROCESSOR==
// @name "DarkOne Display Panel"
// @version "3.0"
// @author "super-gau and tedGo, includes partial codes by fbuser and T.P Wang"
// @import "C:\Users\Audio- u. Video-PC\AppData\Roaming\foobar2000\DO Global Script.js"
// ==/PREPROCESSOR==

window.MinWidth = 280;

var g_down = false, v_change = false;
var g_timer = null, v_timer = null;
var g_interval, fileinfo;

// ----- CREATE HELPERS --------------------------------------------
String.prototype.repeat = function(n) {
return (new Array(n + 1)).join(this);
}

function pad(x, y, z) {
z || (z = ' ');
return x.length < y ? x + z.repeat(y - x.length) : x;
}

function pad_right(x, y, z) {
z || (z = ' ');
return x.length < y ? z.repeat(y - x.length) + x : x
}

function TimeFmt(t) {
var zpad = function(n) {
var str = n.toString();
return str.length < 2 ? "0" + str : str;
}

var h = Math.floor(t / 3600);
t -= h * 3600;
var m = Math.floor(t / 60);
t -= m * 60;
var s = Math.floor(t);

if (h > 0) return h.toString() + "h" + zpad(m) + "m";

return m.toString() + ":" + zpad(s);
}

// ----- CREATE SEEKBAR --------------------------------------------
var g_img1 = gdi.Image(configPath + "Images\\SliderPlay.png");
var g_img2 = gdi.Image(configPath + "Images\\Slider.png");

function Seekbar(x, y, w, h) {
this.left = x;
this.top = y;
this.w = w;
this.h = h;
this.right = x + w;
this.bottom = y + h;
this.g_drag_seek = 0;
this.margin = 30;
this.area = this.w - (this.margin * 2);

this.traceMouse = function(x, y, onlyWidth) {
if (onlyWidth == null) onlyWidth = true;
return this.left < x && x < this.right && (onlyWidth || this.top < y && y < this.bottom);
}

this.draw = function(gr) {
var c, f;

if (this.active) {
f = g_down ? this.g_drag_seek : fb.PlaybackTime / fb.PlaybackLength;
c = g_img1;
f = this.margin + this.area * f;
f = f > 0 ? f : this.margin;
} else {
c = g_img2;
f = this.margin;
}

gr.DrawRoundRect(this.left + 2, this.top + 1, this.w - 3, this.h - 1, 2, 2, 1, RGBA(255, 255, 255, 32));
gr.DrawRoundRect(this.left, this.top, this.w - 2, this.h - 1, 2, 2, 1, RGBA(0, 0, 0, 255));
gr.DrawRect(this.left + 1, this.top + 1, this.w - 4, this.h - 3, 1, RGBA(0, 0, 0, 255));
gr.DrawRect(this.left + 2, this.top + 2, this.w - 4, this.h - 3, 1, RGBA(25, 40, 51, 255));
if (!window.IsTransparent) gr.FillSolidRect(this.left + 2, this.top + 2, this.w - 4, this.h - 3, ui_backcol);
c && gr.DrawImage(c, f - 28, this.top + 2, 56, this.h - 2, 0, 0, c.Width, c.Height);
}

this.Repaint = function() {
window.RepaintRect(this.left, this.top, this.w, this.h);
}

this.calcDragSeek = function(x, y) {
this.g_drag_seek = (x - this.margin) / this.area;
this.g_drag_seek = this.g_drag_seek < 0 ? 0 : this.g_drag_seek < 1 ? this.g_drag_seek : 1;
}

this.on_mouse_lbtn_down = function(x, y) {
if (this.traceMouse(x, y, false) && this.active) {
g_down = true;
this.calcDragSeek(x, y);
this.Repaint();
}
}

this.on_mouse_lbtn_up = function(x, y) {
if (g_down && this.active) {
this.calcDragSeek(x, y);
fb.PlaybackTime = fb.PlaybackLength * this.g_drag_seek;
}
}

this.on_mouse_move = function(x, y) {
if (g_down && this.traceMouse(x, y) && this.active) {
this.calcDragSeek(x, y);
window.Repaint();
}

this.mouseX = x;
this.mouseY = y;
}

this.on_mouse_wheel = function(delta) {
if (this.traceMouse(this.mouseX, this.mouseY, false) && this.active) fb.PlaybackTime += delta
}

this.on_playback_new_track = function(metadb) {
if (metadb) this.active = fb.PlaybackLength <= 0 || metadb.RawPath.indexOf("FOO_LASTFM") == 0 ? false : true;

if (g_timer) {
g_timer.Dispose();
g_timer = null;
}

if (this.active) {
g_interval = Math.max(Math.round(fb.PlaybackLength / (this.area / 100)), 40);
g_timer = window.CreateTimerInterval(g_interval);
}
}

this.getElapseTime = function() {
return TimeFmt(this.g_drag_seek * fb.PlaybackLength);
}

this.getRemainTime = function() {
return TimeFmt(fb.PlaybackLength - (this.g_drag_seek * fb.PlaybackLength));
}

this.init = function() {
this.on_playback_new_track(fb.GetNowPlaying());
}
}

// ----- CREATE INFO OPTIONS ---------------------------------------
var i_active = window.GetProperty("Indicator Colour: Active", "128-192-255-255");
var g_acol = CustomColour(i_active);

var i_inactive = window.GetProperty("Indicator Colour: Inactive", "31-50-63-255");
var g_bcol = CustomColour(i_inactive);

Info.prototype.setColours = function() {
var metadb = fb.GetNowPlaying();

if (metadb) {
fileinfo = metadb.GetFileInfo();
this.Colours[0] = fileinfo.InfoValue(fileinfo.InfoFind("encoding")) == "lossless" ? g_acol : g_bcol;
this.Colours[1] = fileinfo.InfoValue(fileinfo.InfoFind("encoding")) == "lossless" ? g_bcol : g_acol;
this.Colours[2] = fileinfo.InfoValue(fileinfo.InfoFind("md5")) ? g_acol : g_bcol;
this.Colours[3] = fb.TitleFormat("[%replaygain_track_gain%]").Eval() ? g_acol : g_bcol;
this.Colours[4] = fileinfo.MetaValue(fileinfo.MetaFind("tracknumber"), 0) ? ui_btntxtcol : g_bcol;
this.Colours[5] = fileinfo.MetaValue(fileinfo.MetaFind("totaltracks"), 0) ? ui_btntxtcol : g_bcol;
this.Colours[6] = fb.PlaybackLength <= 0 ? g_bcol : ui_btntxtcol;
this.Colours[7] = ui_btntxtcol;
} else for (var i = 0; i < this.Colours.length; i++) this.Colours[i] = g_bcol;
}

Info.prototype.setTrackNo = function() {
var metadb = fb.GetNowPlaying();
var a;

if (metadb) {
fileinfo = metadb.GetFileInfo();
var b = fileinfo.MetaValue(fileinfo.MetaFind("tracknumber"), 0);
var c = fileinfo.MetaValue(fileinfo.MetaFind("totaltracks"), 0);
var d = b ? pad_right(b, 2, "0") : "";
var e = c ? pad_right(c, 2, "0") : "";
if (b) a = pad(d, 4) + e;
else if (fb.PlaybackLength <= 0) a = "Stream";
else if (metadb.RawPath.indexOf("FOO_LASTFM") == 0) a = "last.fm";
else if (fileinfo.InfoValue(fileinfo.InfoFind("codec")) == "PCM") a = "PCM-Wave";
this.TrackNo = a;
} else this.TrackNo = "";
}

Info.prototype.setPBTime = function() {
this.Elapse = TimeFmt(fb.PlaybackTime);
this.Remain = fb.PlaybackLength > 0 ? TimeFmt(fb.PlaybackLength - fb.PlaybackTime) : "";
}

Info.prototype.setBitrate = function() {
this.Bitrate = fb.TitleFormat("%bitrate%").Eval();
}

Info.prototype.setInfo = function() {
this.setColours();
this.setTrackNo();
this.setPBTime();
this.setBitrate();
}

function Info() {
this.Colours = new Array(8);
this.setInfo();
}

info = new Info();

// ----- DRAW ------------------------------------------------------
function on_paint(gr) {
var t_elp = g_down && seekbar.active ? seekbar.getElapseTime() : info.Elapse;
var t_rem = g_down && seekbar.active ? seekbar.getRemainTime() : info.Remain;
var p_icon;

if (!window.IsTransparent) gr.FillSolidRect(0, 0, ww, wh, ui_backcol);
seekbar.draw(gr);

if (fb.IsPlaying) p_icon = fb.IsPaused ? "\u258c" : "\u25ba";

gr.DrawRect(1, 18, ww * 17 / 70, 10, 1, info.Colours[0]);
gr.DrawRect(ww * 71 / 280, 18, ww * 17 / 70, 10, 1, info.Colours[1]);
gr.DrawRect(ww * 141 / 280, 18, ww * 17 / 70, 10, 1, info.Colours[2]);
gr.DrawRect(ww * 211 / 280, 18, ww * 17 / 70, 10, 1, info.Colours[3]);

gr.GdiDrawText("LOSSLESS", btn_font, info.Colours[0], 2, 18, ww * 17 / 70, 10, 37);
gr.GdiDrawText("LOSSY", btn_font, info.Colours[1], ww * 9 / 35, 18, ww * 17 / 70, 10, 37);
gr.GdiDrawText("AUDIO MD5", btn_font, info.Colours[2], ww * 71 / 140, 18, ww * 17 / 70, 10, 37);
gr.GdiDrawText("REPLAYGAIN", btn_font, info.Colours[3], ww * 53 / 70, 18, ww * 17 / 70, 10, 37);

gr.GdiDrawText("TRACK", btn_font, info.Colours[4], 1, 30, 27, 10, 37);
gr.GdiDrawText("TOTAL", btn_font, info.Colours[5], 41, 30, 27, 10, 37);
gr.GdiDrawText("ELAPSED", btn_font, v_change ? g_bcol : info.Colours[7], ww - 155, 30, 35, 10, 38);
gr.GdiDrawText("REMAIN", btn_font, v_change ? g_bcol : info.Colours[6], ww - 90, 30, 30, 10, 38);
gr.GdiDrawText("dB", btn_font, v_change ? ui_btntxtcol : g_bcol, ww - 45, 30, 10, 10, 37);
gr.GdiDrawText("KBPS", btn_font, v_change ? g_bcol : info.Colours[7], ww - 20, 30, 20, 10, 37);
   
gr.GdiDrawText("\u2588".repeat(Math.ceil(ww / 10)), dsp_font, g_bcol, 0, 38, ww, 19, 37);
gr.GdiDrawText(info.TrackNo, dsp_font, g_acol, 0, 38, 90, 19, 36);
gr.GdiDrawText(p_icon, dsp_font, g_acol, (ww / 2) - 50, 38, 10, 19, 37);
if (v_change) gr.GdiDrawText("Volume " + fb.Volume.toFixed(2), dsp_font, g_acol, ww - 180, 38, 180, 19, 38);
else {
fb.IsPlaying && gr.GdiDrawText(t_elp, dsp_font, g_acol, ww - 180, 38, 60, 19, 38);
gr.GdiDrawText(t_rem, dsp_font, g_acol, ww - 120, 38, 60, 19, 38);
gr.GdiDrawText(info.Bitrate, dsp_font, g_acol, ww - 60, 38, 60, 19, 38);
}
}

// ----- MOUSE ACTIONS ---------------------------------------------
function on_mouse_move(x, y) {
seekbar.on_mouse_move(x, y);
}

function on_mouse_lbtn_down(x, y) {
seekbar.on_mouse_lbtn_down(x, y);
window.RepaintRect(ww - 180, 38, 120, 19);
}

function on_mouse_lbtn_up(x, y) {
seekbar.on_mouse_lbtn_up(x, y);
g_down = false;
}

function on_mouse_wheel(delta) {
seekbar.on_mouse_wheel(delta);

if (seekbar.traceMouse(seekbar.mouseX, seekbar.mouseY, false)) {
info.setPBTime();
window.RepaintRect(ww - 180, 38, 120, 19);
}
}

// ----- EVENTS ----------------------------------------------------
function on_size() {
ww = window.Width;
wh = window.Height;
seekbar = new Seekbar(0, 0, ww, 8);
seekbar.init();
}

function on_timer(id) {
if (v_timer && id == v_timer.ID) {
window.RepaintRect(ww - 180, 30, 180, 27);
v_timer.Dispose();
v_timer = null;
v_change = false;
} else g_timer && id == g_timer.ID && seekbar.Repaint();
}

function on_volume_change(val) {
if (v_timer) {
v_timer.Dispose();
v_timer = null;
}

v_timer = window.CreateTimerTimeout(3000);
v_change = true;
window.RepaintRect(ww - 180, 30, 180, 27);
}

function on_playback_seek(time) {
seekbar.Repaint();
}

function on_playback_time(time) {
info.setPBTime();
window.RepaintRect(ww - 180, 38, 120, 19);
}

function on_playback_dynamic_info() {
info.setBitrate()
window.RepaintRect(ww - 60, 38, 60, 19);
}

function on_playback_edited() {
info.setInfo();
window.Repaint();
}

function on_playback_new_track(metadb) {
seekbar.on_playback_new_track(metadb);
info.setInfo();
window.Repaint();
}

function on_playback_pause(state) {
window.RepaintRect((ww / 2) - 50, 38, 10, 19);
}

function on_playback_stop(reason) {
if (fileinfo) fileinfo.Dispose();

if (g_timer) {
g_timer.Dispose();
g_timer = null;
}

if (reason != 2) {
seekbar.active = false;
info.setInfo();
}

window.Repaint();
}

...also eigentl. nur der eine Pfad geändert.

Bin ich zu blöde für die Sache...? :^^: Ich will ja nun auch nicht nerven, viell. haben wir uns aber auch nur missverstanden - also ich wollte das "Display"(?) so, wie im 2. Bild des 1. Post dieses Threads bzw. im untersten Bild deiner Seite auf Deviantart (http://tedgo.deviantart.com/art/DarkOne-v3-0-1-187628705). Das ist doch die Version 3.0.1, oder?
Habe das betr. Element mal markiert: :)

Was meinst du den mit "Display a la v3.0.1 (oder auch 2.1)" für ein Teil?