1
0
Fork 0
forked from len0rd/rockbox

almost finished... copy fonts, backdrops, icon files, skins. last thing to do is copy the images from inside the skins

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26511 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jonathan Gordon 2010-06-03 13:44:41 +00:00
parent 6e39dc9e27
commit 30804e5a3f

View file

@ -39,7 +39,7 @@ my $has_remote;
if(!$wpslist) { if(!$wpslist) {
print "Usage: wpsbuilds.pl <WPSLIST> <target>\n", print "Usage: buildtheme.pl <WPSLIST> <target>\n",
"Run this script in the root of the target build, and it will put all the\n", "Run this script in the root of the target build, and it will put all the\n",
"stuff in $rbdir/wps/\n"; "stuff in $rbdir/wps/\n";
exit; exit;
@ -101,8 +101,8 @@ STOP
} }
# Get the LCD sizes first # Get the LCD sizes first
($main_height, $main_width, $main_depth) = (320,240,16);#getlcdsizes(); ($main_height, $main_width, $main_depth) = getlcdsizes();
($remote_height, $remote_width, $remote_depth) = ();#getlcdsizes(1); ($remote_height, $remote_width, $remote_depth) = getlcdsizes(1);
#print "LCD: ${main_width}x${main_height}x${main_depth}\n"; #print "LCD: ${main_width}x${main_height}x${main_depth}\n";
$has_remote = 1 if ($remote_height && $remote_width && $remote_depth); $has_remote = 1 if ($remote_height && $remote_width && $remote_depth);
@ -134,6 +134,8 @@ sub mkdirs
mkdir "$rbdir", 0777; mkdir "$rbdir", 0777;
mkdir "$rbdir/wps", 0777; mkdir "$rbdir/wps", 0777;
mkdir "$rbdir/themes", 0777; mkdir "$rbdir/themes", 0777;
mkdir "$rbdir/icons", 0777;
mkdir "$rbdir/backdrops", 0777;
if( -d "$rbdir/wps/$themename") { if( -d "$rbdir/wps/$themename") {
# print STDERR "wpsbuild warning: directory wps/$themename already exists!\n"; # print STDERR "wpsbuild warning: directory wps/$themename already exists!\n";
@ -150,7 +152,7 @@ sub buildcfg {
push @out, <<MOO push @out, <<MOO
\# \#
\# generated by wpsbuild.pl \# generated by buildtheme.pl
\# $themename is made by $theme{"Author"} \# $themename is made by $theme{"Author"}
\# \#
MOO MOO
@ -175,14 +177,31 @@ MOO
{ {
# do nothing # do nothing
} }
elsif ($k =~ "/WPS|RWPS|FMS|RFMF|SBS|RSBS/" && exists($theme{$k})) elsif ($k =~ /WPS|RWPS|FMS|RFMS|SBS|RSBS/ && exists($theme{$k}))
{ {
push (@out, "$v: $themename.$v\n"); push (@out, "$v: $themename.$v\n");
} }
elsif ($k =~ /backdrop/ )
{
if (exists($theme{$k}))
{
my $dst = $theme{$k};
$dst =~ s/(\.[0-9]*x[0-9]*x[0-9]*)//;
push (@out, "$v: $theme{$k}\n");
}
else
{
push (@out, "$v: -\n");
}
}
elsif (exists($theme{$k})) elsif (exists($theme{$k}))
{ {
push (@out, "$v: $theme{$k}\n"); push (@out, "$v: $theme{$k}\n");
} }
else
{
push (@out, "$v: -\n");
}
} }
# if(-f "$rbdir/themes/$themename.cfg") { # if(-f "$rbdir/themes/$themename.cfg") {
@ -195,6 +214,101 @@ MOO
# } # }
} }
sub copythemefont
{
my ($font) = @_;
#copy the font specified by the theme
my $o=$font;
$o =~ s/\.fnt/\.bdf/;
mkdir "$rbdir/fonts";
my $cmd ="$ROOT/tools/convbdf -f -o \"$rbdir/fonts/$font\" \"$ROOT/fonts/$o\" ";
# print "$cmd\n";
`$cmd`;
}
sub copyiconset
{
my ($iconset) = @_;
#copy the icon specified by the theme
if ($iconset ne '') {
$iconset =~ s/.rockbox/$rbdir/;
$iconset =~ /\/(.*icons\/(.*))/i;
`cp $ROOT/icons/$2 $1`;
}
}
sub copybackdrop
{
my ($backdrop) = @_;
#copy the backdrop file into the build dir
if ($backdrop ne '')
{
my $dst = $backdrop;
$dst =~ s/(\.[0-9]*x[0-9]*x[0-9]*)//;
my $cmd = "cp $ROOT/$backdrop $rbdir/$dst";
# print "$cmd\n";
`$cmd`;
}
}
sub copyskin
{
my ($themename, $skin, $ext) = @_;
# we assume that we copy the WPS files from the same dir the WPSLIST
# file is located in
my $dir;
my @filelist;
my $src;
my $dest;
if($wpslist =~ /(.*)OUT/) {
$dir = $1;
# first try the actual filename given to us
# then $skin.widthxheightxdepths.ext
# then $skin.ext
$src = "${dir}$skin.$ext";
if ( -e $src )
{
my $cmd = "cp $src $rbdir/wps/$themename.$ext";
`$cmd`;
}
else
{
my $is_remote = ($ext =~ /^r.../i);
my $width = $is_remote ? $remote_width : $main_width;
my $height = $is_remote ? $remote_height : $main_height;
my $depth = $is_remote ? $remote_depth : $main_depth;
foreach my $d (@depthlist)
{
next if ($d > $depth);
$src = "${dir}$skin.${width}x${height}x${d}.$ext";
last if (-e $src);
}
if (-e $src)
{
my $cmd = "cp $src $rbdir/wps/$themename.$ext";
print "$cmd\n";
`$cmd`;
}
elsif (-e "${dir}$skin.$ext")
{
my $cmd = "cp ${dir}$skin.$ext $rbdir/wps/$themename.$ext";
`$cmd`;
}
else
{
#print STDERR "buildtheme warning: No suitable skin file for $ext\n";
}
}
}
}
open(WPS, "<$wpslist"); open(WPS, "<$wpslist");
while(<WPS>) { while(<WPS>) {
my $l = $_; my $l = $_;
@ -222,8 +336,22 @@ while(<WPS>) {
mkdirs($theme{Name}); mkdirs($theme{Name});
buildcfg($theme{Name}); buildcfg($theme{Name});
copyskin($theme{"Name"}, $theme{"WPS"}, "wps") if exists($theme{"WPS"});
copyskin($theme{"Name"}, $theme{"RWPS"}, "rwps") if exists($theme{"RWPS"});
copyskin($theme{"Name"}, $theme{"FMS"}, "fms") if exists($theme{"FMS"});
copyskin($theme{"Name"}, $theme{"RFMS"}, "rfms") if exists($theme{"RFMS"});
copyskin($theme{"Name"}, $theme{"SBS"}, "sbs") if exists($theme{"SBS"});
copyskin($theme{"Name"}, $theme{"RSBS"}, "rsbs") if exists($theme{"RSBS"});
copyiconset($theme{"iconset"}) if exists($theme{"iconset"});
copyiconset($theme{"remote iconset"}) if exists($theme{"remote iconset"});
copyiconset($theme{"viewers iconset"}) if exists($theme{"viewers iconset"});
copyiconset($theme{"remote viewers iconset"}) if exists($theme{"remote viewers iconset"});
copythemefont($theme{"Font"}) if exists($theme{"Font"});
copythemefont($theme{"Remote Font"}) if exists($theme{"Remote Font"});
copybackdrop($theme{"backdrop"}) if exists($theme{"backdrop"});
@ -238,7 +366,7 @@ while(<WPS>) {
($extra && (match($target, $extra) || matchdisplaystring($extra)))) ($extra && (match($target, $extra) || matchdisplaystring($extra))))
{ {
$theme{$var} = $value; $theme{$var} = $value;
# print "\'$var\': $value\n"; #print "\'$var\': $value\n";
} }
} }
} }