From 06cc24419fdc912b977ea46eb386a3bd02a30067 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Tue, 20 Jan 2015 02:27:31 -0800 Subject: [PATCH] Parse PLEDIT.txt Fixes #128 --- css/playlist.css | 3 --- js/skin.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/css/playlist.css b/css/playlist.css index c5de9a0e..1500138c 100644 --- a/css/playlist.css +++ b/css/playlist.css @@ -7,7 +7,6 @@ margin-left: -137px; top: 40%; left: 20%; - background-color: black; /* Background-image: pledit.bmp */ } #playlist.closed { display: none; } @@ -33,11 +32,9 @@ } #playlist #tracks li { white-space: nowrap; - color: lightgreen; font-size: 8px; } #playlist #tracks li.selected { - background-color: red; } #playlist .top { diff --git a/js/skin.js b/js/skin.js index 4bdd4d4f..7722f1c2 100644 --- a/js/skin.js +++ b/js/skin.js @@ -36,6 +36,24 @@ SkinManager = { } }, this); + // Extract PLEDIT.txt values + var plRules = { + "Normal": { selector:'#tracks li', attribute:'color' }, + "Current": { selector:'#tracks li.current', attribute:'color' }, + "Current": { selector:'#tracks li.current', attribute:'color' }, + "Font": { selector:'#tracks li', attribute:'font-family' }, + "NormalBG": { selector:'#tracks, #tracks li', attribute:'background-color' }, + "SelectedBG": { selector:'#tracks li.selected', attribute:'background-color' } + } + + var plValues = this._parsePlEdit(zip); + for(key in plRules) { + var rule = plRules[key]; + if(plValues[key]) { + promisedCssRules.push(rule.selector + "{" + rule.attribute + ":" + plValues[key] + "}"); + } + } + // Extract sprite images Promise.all(promisedCssRules).then(function(newCssRules) { this._createNewStyleNode(); @@ -64,6 +82,19 @@ SkinManager = { this.visualizer.setColors(colors); }, + _parsePlEdit: function(zip) { + var entries = this._findFileInZip("PLEDIT.TXT", zip).asText().split("\n"); + var regex = /^([^=]*)=([^=\r]*)\r?$/ + var results = {}; + for(var i = 0; i < entries.length; i++) { + var matches = regex.exec(entries[i]); + if(matches) { + results[matches[1]] = matches[2]; + } + } + return results; + }, + _findFileInZip: function(name, zip) { return zip.filter(function (relativePath, file){ return new RegExp("(^|/)" + name, 'i').test(relativePath);