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

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

Vorheriges Thema - Nächstes Thema

tedgo

#240
Stabilitätsupdate:
DarkOne v1.5.1

- WIEDER BENÖTIGT: foo_uie_tabs zum Umschalten von Normal-/Kompaktmodus
  (keine Verzögerung mehr beim umschalten, hoffentlich...)
- hinzugefügt: eine Option, um die Coveranzeige in der ELPlaylist zu ändern
  (nützlich für foo_covers, siehe "User Guide", Kapitel 3.8.1)
- fixed: Artist Pictures im Hintergrund wurden nicht aktualisiert
- fixed: zufällig auftretende Grafikfehler
- fixed: Fehler in der Lautstärkeregelung
- kleinere Stringoptimierungen
- geändert: Trackinfo jetzt im WSH Panel mod (keine hässliche Scrollbar mehr )
- Kompaktmodus neu gestaltet (ich hoffe, dass es jetzt stabiler läuft...)

Downloadlink im ersten Beitrag ;)

EDIT:
Ich bitte alle Nutzer, die neueste Version von foo_uie_tabs herunterzuladen (Tabbed Panel Stack mod 0.2.8), da der neue DarkOne Kompaktmodus foobar2000 bei der Nutzung von Shortcuts mit der Version foo_uie_tabs 0.2.7 "einfriert"!!!

Und gleich noch hinterher:
DarkOne v1.5.2

DAS IST DIE LETZTE VOLL-VERSION!!!
ICH WERDE EINIGE DINGE AUS GRÜNDEN DER PERFORMANCE IN ZUKÜNFTIGEN VERSION WIEDER ENTFERNEN!

- WIEDER BENÖTIGT: Trackinfo mod 0.8.0beta (für einfacheres editieren der Trackinfos)
- an ELPlaylist 0.6.5.3.1b angepasst
- leichte Änderungen im Kompaktmodus-Design
- User Guide erneuert.

tedgo

Bin gerade dabei, auf Anregung eines Users, einen Volume-Regler einzubauen, anstatt der Tasten.

Was haltet ihr davon?


Mit dem Mute-Button bin ich allerdings nicht wirklich zufrieden.
Sieht ein bisschen aus wie eine Zecke, die sich da oben festgebissen hat...

Habe schon überlegt, den Volumeregler so auszulegen, dass er die Lautstärke mit dem Mausrad regelt und auf Klick Mute ein-/ausschaltet.
Dann ist mir aber eingefallen, dass auf Notebooks ohne Maus die Verwendung eines Mausrades evtl. etwas schwierig ausfallen könnte...
Hat jemand 'ne andere Idee?

DarkOneFan

Hi Tedgo,

Allem voran erst einmal ein großes Dankeschön und LOB für deinen Dark One Theme. In meinen Augen ist er
jetzt schon perfekt. Wenn denn andere User unbedingt einen Volume-Regler benötigen, so scheint dein zuletzt
geposteter Vorschlag doch alle restlichen Wünsche zu erfüllen. Ich würde auch auf den Mute-Knopf verzichten
und die Fkt. bei Klick auf den Regler aktivieren. Für notebooks gibts sicher irgendwelche Shortcuts...

Habe ein letztes Einstellproblem mit der letzten Version 1.5.2 -> In angefügtem Screenshot erkennt man, dass ich einen anderen Font für das Display einstellen musste (das Play-Zeichen wurde als Rechteck angezeigt). Nun ist fast alles perfekt, bis auf das Pausenzeichen, welches immer noch nicht korrekt angezeigt wird (sondern als senkrechter hässlicher breiter Balken). Wie kann ich dies ändern. Am Liebsten wäre mir natürlich, wenn ich deine Config 1:1 hinbekommen würde, das DarkBlack-Font wird bei mir aber noch grausiger dargestellt (unter anderem befinden sich hinter den Zahlen graue Rechtecke, neben dem Problem mit dem Play-Zeichen). Ansonsten bin ich megaglücklich mit dem Theme :)

http://www.abload.de/image.php?img=darkonebugy2x7.jpg

tedgo

#243
Eigentlich sollte die DarkOne.ttf beide Zeichen beherrschen, vorausgesetzt, du hast auf deinem PC die Unicode-Unterstützung aktiviert und die DarkOne.ttf in den WINDOWS\Fonts-Ordner kopiert.

Überprüfe bitte, ob diese sich in dem WINDOWS\Fonts-Ordner befindet. Falls nicht, bitte einfach reinkopieren :)
Und dann natürlich im Script des Displays wieder auf "DarkOne" umstellen.

Wie sieht es denn in der NG Playlist aus (das ist der mittlere Button rechts oberhalb der Playlist)?
Da sollten Sterne zu sehen sein. Falls auch da Rechtecke erscheinen, ist bei dir Unicode abgeschaltet.

Um das zu aktivieren (ich gehe mal davon aus, dass du auf Windows XP bist) gehe bitte in die Systemsteuerung --> Regions- und Sprachoptionen --> Registerkarte "Sprachen" und aktiviere beide Kästchen unter "Zusätzliche Sprachunterstützung".
Dann sollten sowohl das Play-Icon, als auch die Hintergrundkästchen und das Pause-Icon zu sehen sein.

EDIT:
Schöner Name übrigens   ;D

DarkOneFan

Unicode-Unterstützung ist aktiviert (die Aktivierung hatte jedoch keinen Effekt auf die Anzeigen, ich muss doch nicht foobar neu aufsetzen, oder?). Mein Sytem läuft unter XP SP3 korrekt. Bin schon von DarkOne-Font auf Bitstream Cyberbit-Font umgestiegen, um das Playzeichen zu sehen und in der NG Playlist endlich Sterne und das Notensymbol zu sehen (dies hat dann auch geklappt, auch wenn die Sterne in grau nicht so dolle aussehen, aber das liegt ja nicht an deinem Theme). Das letzte übriggebliebene Übel ist das Pausenzeichen. Kannst du mir mal deine Config zeigen, meine sieht so aus (Auszug): Änderungen vom Ausgangszustand sind gelb markiert, ich gebe aber zu, bin nach trial&error vorgegangen, weil kein Profi in diesen Dingen:

var g_font = gdi.Font("Bitstream Cyberbit",19,0);
var prop_font = gdi.Font("Arial Black",7,0);
var inscr_a = pad("TRACK",12) + "TOTAL";
var inscr_b = pad("ELAPSED",18) + pad("REMAIN",20) + "KBPS";
var back_a = "\u2588".repeat(7);
var back_b = "\u2588".repeat(2) + ":" + "\u2588".repeat(5) + ":" + back_a;
var info = new Info();

function on_paint(gr) {
   var play_icon;

   gr.FillSolidRect(0, 0, ww, wh, RGB(19, 30, 38));

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

   gr.DrawRoundRect(0, 0, ww*33/140, 12, 1, 1, 1, info.Colours[0]);
   gr.DrawRoundRect(ww*71/280, 0, ww*33/140, 12, 1, 1, 1, info.Colours[1]);
   gr.DrawRoundRect(ww*71/140, 0, ww*33/140, 12, 1, 1, 1, info.Colours[2]);
   gr.DrawRoundRect(ww*213/280, 0, ww*33/140, 12, 1, 1, 1, info.Colours[3]);
   
   gr.GdiDrawText("LOSSLESS", prop_font, info.Colours[0], 1, 0, ww*33/140, 12, dir_center);
   gr.GdiDrawText("LOSSY", prop_font, info.Colours[1], ww*9/35, 0, ww*33/140, 12, dir_center);
   gr.GdiDrawText("AUDIO MD5", prop_font, info.Colours[2], ww*18/35, 0, ww*33/140, 12, dir_center);
   gr.GdiDrawText("REPLAYGAIN", prop_font, info.Colours[3], ww*107/140, 0, ww*33/140, 12, dir_center);

   gr.GdiDrawText(inscr_a, prop_font, info.Colours[4], 1, 20, 70, 10, dir_left);
   gr.GdiDrawText(inscr_b, prop_font, info.Colours[4], ww-159, 20, 159, 10, dir_right);

   gr.GdiDrawText(back_a, g_font, col1, 0, 285, 70, 19, dir_left);
   gr.GdiDrawText("\u2588", g_font, col1, (ww/2)-42, 285, 10, 19, dir_center);
   gr.GdiDrawText(back_b, g_font, col1, ww-159, 285, 159, 19, dir_right);

   gr.GdiDrawText(info.TrackNo, g_font, col2, 0, 28, 70, 19, dir_center);
   gr.GdiDrawText(play_icon, g_font, col2, (ww/2)-42, 28, 10, 19, dir_center);
   gr.GdiDrawText(info.PBTime + info.Bitrate, g_font, col2, ww-159, 28, 159, 19, dir_right);

tedgo

#245
Lade einfach die FCL neu, dann hast du das Original-Script wieder.

Trotzdem, hier mal das Original-Script:

// ===== Display Panel =============================================
// ===== Code by fbuser and tedGo

var dir_left = 0x00000000 | 0x00000004 | 0x00000020;
var dir_center = 0x00000001 | 0x00000004 | 0x00000020;
var dir_right = 0x00000002 | 0x00000004 | 0x00000020;

var col1 = RGB(31, 50, 63);
var col2 = RGB(128, 192, 255);

var ww, wh;

StopReason = {
user: 0,
eof: 1,
starting_another: 2,
shutting_down: 3
}

function RGB(r,g,b) {
return (0xff000000|(r<<16)|(g<<8)|(b));
}

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

function pad(x, y, z) {
if (!z) z = ' ';
if (x.length < y)
return x + z.repeat(y - x.length);
else
return x;
}

function pad_right(x, y, z) {
if (!z) z = ' ';
if (x.length < y)
return z.repeat(y - x.length) + x;
else
return x;
}

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

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

Info.prototype.setColours = function() {
var metaDb = fb.GetNowPlaying();
   
if(metaDb) {
var fileInfo = metaDb.GetFileInfo();

this.Colours[0] = fileInfo.InfoValue(fileInfo.InfoFind("encoding")) == "lossless" ? col2 : col1;
this.Colours[1] = fileInfo.InfoValue(fileInfo.InfoFind("encoding")) == "lossless" ? col1 : col2;
this.Colours[2] = fileInfo.InfoValue(fileInfo.InfoFind("md5")).length > 0 ? col2 : col1;
this.Colours[3] = fb.TitleFormat("[%replaygain_track_gain%]").Eval() ? col2 : col1;
this.Colours[4] = RGB(192, 192, 192);
} else {
for (var i = 0; i < this.Colours.length; i++)
this.Colours[i] = col1;
   }
}

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

if(metaDb) {
var fileInfo = metaDb.GetFileInfo();

var track_no = fileInfo.MetaValue(fileInfo.MetaFind("tracknumber"), 0);
var total_no = fileInfo.MetaValue(fileInfo.MetaFind("totaltracks"), 0);
var str_track = track_no ? pad_right(track_no, 2, "0") : "";
var str_total = total_no ? pad_right(total_no, 2, "0") : "";

this.TrackNo = pad(str_track, 4) + str_total;
} else {
this.TrackNo = "";
}
}

Info.prototype.setPBTime = function() {
this.PBTime = fb.TitleFormat("%playback_time%$if(%length%,$pad_right(%playback_time_remaining%,6),   :  )").Eval();
}

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

var g_font = gdi.Font("DarkOne",19,0);
var prop_font = gdi.Font("Arial Black",7,0);
var inscr_a = pad("TRACK",12) + "TOTAL";
var inscr_b = pad("ELAPSED",18) + pad("REMAIN",20) + "KBPS";
var back_a = "\u2588".repeat(7);
var back_b = "\u2588".repeat(2) + ":" + "\u2588".repeat(5) + ":" + back_a;
var info = new Info();

function on_paint(gr) {
var play_icon;

gr.FillSolidRect(0, 0, ww, wh, RGB(19, 30, 38));

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

gr.DrawRoundRect(0, 0, ww*33/140, 12, 1, 1, 1, info.Colours[0]);
gr.DrawRoundRect(ww*71/280, 0, ww*33/140, 12, 1, 1, 1, info.Colours[1]);
gr.DrawRoundRect(ww*71/140, 0, ww*33/140, 12, 1, 1, 1, info.Colours[2]);
gr.DrawRoundRect(ww*213/280, 0, ww*33/140, 12, 1, 1, 1, info.Colours[3]);

gr.GdiDrawText("LOSSLESS", prop_font, info.Colours[0], 1, 0, ww*33/140, 12, dir_center);
gr.GdiDrawText("LOSSY", prop_font, info.Colours[1], ww*9/35, 0, ww*33/140, 12, dir_center);
gr.GdiDrawText("AUDIO MD5", prop_font, info.Colours[2], ww*18/35, 0, ww*33/140, 12, dir_center);
gr.GdiDrawText("REPLAYGAIN", prop_font, info.Colours[3], ww*107/140, 0, ww*33/140, 12, dir_center);

gr.GdiDrawText(inscr_a, prop_font, info.Colours[4], 1, 20, 70, 10, dir_left);
gr.GdiDrawText(inscr_b, prop_font, info.Colours[4], ww-160, 20, 159, 10, dir_right);

gr.GdiDrawText(back_a, g_font, col1, 0, 28, 70, 19, dir_left);
gr.GdiDrawText("\u2588", g_font, col1, (ww/2)-42, 28, 10, 19, dir_center);
gr.GdiDrawText(back_b, g_font, col1, ww-159, 28, 159, 19, dir_right);

gr.GdiDrawText(info.TrackNo, g_font, col2, 0, 28, 70, 19, dir_left);
gr.GdiDrawText(play_icon, g_font, col2, (ww/2)-42, 28, 10, 19, dir_center);
gr.GdiDrawText(info.PBTime + info.Bitrate, g_font, col2, ww-159, 28, 159, 19, dir_right);
}

function on_size() {
ww = window.Width;
wh = window.Height;
}

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

function on_playback_time(time) {
info.setPBTime();
window.RepaintRect(ww-159, 28, 109, 19);
}

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

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

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

function on_playback_stop(reason) {
if (reason != StopReason.starting_another)
info.setInfo();
window.Repaint();
}


Bist du auch sicher, dass die DarkOne.ttf im WINDOWS\Fonts Ordner liegt?

EDIT:
Falsches Script gepostet  ::)

EDIT2:
So wie ich sehe, hast du die Hintergrundblöcke einfach aus dem Fenster "geschoben".
Wenn der DarkOne-Font installiert wäre, hättest du genau wie im Original, keine "Blöcke", sondern eher abgedunkelte Kästchen (ok, ist eigentlich dasselbe ;)).
Ich gehe also davon aus, dass du die DarkOne.ttf nicht installiert hast.

DarkOneFan

Ja liegt im Windows\Fonts - Ordner heisst aber Dark Black. Hatte mich wegen des Skript schon gewundert   ;)
Werde das mal wieder einfügen und berichten, vorab schon einmal danke für die flotte Antwort  :crazy:

tedgo

#247
Dann schau noch mal in den DarkOne-Ordner. Eine Schriftart "Dark Black" ist nicht von mir.
Für die DarkOne Konfiguration brauchst du die DarkOne.ttf aus dem DarkOne Ordner.
Die sollte im Fonts Ordner nach der Installation als "DarkOne Standard" vorzufinden sein.

EDIT:
Hab jetzt mal im Netz gesucht und es gibt tatsächlich noch einen Font, der "Dark Black Schriftart" heißt und dessen True Type Datei ebenfalls DARKONE.TTF betitelt ist.
Die wirst du wohl erst entfernen müssen, bevor du meine DarkOne.ttf installieren kannst.
Wusste nicht, dass es schon so eine Schriftart gibt...

DarkOneFan

#248
Perfekt! Hatte wohl einfach den falschen Font-Typ ausgewählt.  :-[

Vielen Dank für deine Hilfe.

Noch ein Feedback zum Compact-Modus. Die Herausnahme solltest du wirklich überdenken. Bei mir (auf einer alten 2Ghz AMD Kiste) läuft die "Vollversion" wie eine 1, auch das Hin-und Herswitchen funktioniert ohne Verzögerung. Habe übrigens eine n-lite XP-Version. Dein Theme läuft auch unter abgespeckter XP-Version super. Das Starten von foobar ist nur unwesentlich langsamer als vorher, vielleicht ein oder zwei Sek, stört also nicht.

Großes Lob an dieser Stelle auch für deine Supportfähigkeiten!!!!! :top:

EDIT: Nein es kam keine Fehlermeldung, alles in Ordnung. Wie du gesagt hast, heisst dein Font DarkOne Standard, es kam deshalb zu keinem Konflikt mit dem DarkOne (=Black) Font.

tedgo

#249
Für den Kompaktmodus ist es schon zu spät ;)
Der ist bereits in einer eigenen Konfiguration als CompactOne v1.0.1
http://tedgo.deviantart.com/art/CompactOne-v1-0-1-122490274

Passt vom Design auch nicht 100%ig zu DarkOne (war eigentlich ursprünglich als Design-Studie für eine neue Konfiguration gedacht).
Ich denke, wer was kompaktes will, kann sich ja an CompactOne halten.
Ich habe den Modus ohnehin nur auf Anfrage eingebaut und ihn nie benutzt.

EDIT:
Konntest du die DarkOne.ttf einfach in den Fonts-Ordner kopieren oder kam eine Fehlermeldung?
Dann müsste ich sie nämlich umbenennen...

huber71

@tedgo:
just for info, da gefragt wurde: volume-regler halte ich grundsätzlich für überflüssig - da lautstärke am verstärker geregelt wird

tedgo

Ja, aber nicht jeder hat seinen PC an einen externen Verstärker angestöpselt ;)

Ich nutze die Lautstärkeregelung innerhalb von foobar2000 sehr häufig.
"Mute" hingegen eigentlich nie, ich drück dann lieber auf "Pause"...

huber71


tedgo

Deshalb bleibt es für mich erst mal dabei, dass ich die Lösung mit dem ändern der Lautstärke über das Mouse-Wheel und ein-/ausschalten von "Mute" per Klick auf das "Lautstärkerad" zwar am elegantesten finde, aber für Notebooks nur bedingt geeignet.

Die "Mute"-Zecke gefällt mir jedenfalls nicht...

tedgo

So, hier mal ein Screenshot vom aktuellen Stand der v1.6:


Nur minimale optische Änderungen.
Funktionell wird der Kompaktmodus aber definitiv nicht mehr enthalten sein.
Habe dafür aber mit foo_title experimentiert. Vielleicht nehme ich das für eine spätere Version "ins Programm".

Außerdem habe ich den Peakmeter im Display wieder auf foo_uie_vis_peakmeter_spectrum.dll geändert, da weniger CPU-Last nötig als für ein zweites Channel Spectrum Panel.

Und das "Volume-Wheel" wird funktionell noch etwas aufgebessert (muss noch meine eigene Class dafür schreiben. Momentan habe ich mir dafür den Code von Br3tt "ausgeliehen", aber der funktioniert nicht exakt so, wie ich es will).

Im Display wird zudem die Änderung der Lautstärke und die "Seek-Time" angezeigt werden.
Muss aber noch reinkodiert werden :).