# This relies on all icons being requested using one of the convenience constructors in
# (K)IconLoader, like this:
# widget->setIcon(SmallIcon("fubar"));
-# Additional icons can be specified in extra-icons; you can also blacklist icons.
+# Additional icons can be specified in whitelist-icons; you can also blacklist icons.
#
-# NOTE: Unless you are a Quassel developer and need to bump the icons we ship, you shouldn'y
+# NOTE: Unless you are a Quassel developer and need to bump the icons we ship, you shouldn't
# need to use this script!
# USAGE: ./import/import_theme.pl $systhemefolder $themename
$themename = $themename ? $themename : "oxygen";
my $qrcfile_kde = $themename . ".qrc";
-my $extrafile = "import/extra-icons";
+my $whitelistfile = "import/whitelist-icons";
my $blacklistfile = "import/blacklisted-icons";
+my $extrafile = "import/extra-icons.qrc." . $themename;
my %req_icons;
my %found_icons;
my %blacklist;
-my %extra;
+my %themeblacklist;
+my %whitelist;
+my $extrafilecontent;
# First, load the icon blacklist
open BLACKLIST, "<$blacklistfile" or die "Could not open $blacklistfile\n";
s/#.*//;
next unless my ($name) = /([-\w]+)\s*/;
$blacklist{$name} = 1;
+ $themeblacklist{$name} = 1;
}
close BLACKLIST;
} else {
unless exists $blacklist{$name};
}
-# Add extra icons
-open EXTRA, "<$extrafile" or die "Could not open $extrafile\n";
-while(<EXTRA>) {
+# Add whitelist icons
+open WHITELIST, "<$whitelistfile" or die "Could not open $whitelistfile\n";
+while(<WHITELIST>) {
s/#.*//;
next unless my ($name) = /([-\w]+)\s*/;
- $req_icons{$name} = 1;
+ $req_icons{$name} = 1
+ unless exists $themeblacklist{$name};
+}
+close WHITELIST;
+
+# Read in extra-icons
+my $hasthemeextrafile = 1;
+local $/;
+open EXTRAFILE, "<$extrafile" or $hasthemeextrafile = 0;
+if($hasthemeextrafile) {
+ binmode EXTRAFILE;
+ $extrafilecontent = <EXTRAFILE>;
+ close EXTRAFILE;
+} else {
+ $extrafilecontent = "";
}
-close EXTRA;
# Clean old output dir
print "Removing old $themename...\n";
# Generate .qrc
my @file_list;
-generate_qrc($themename, $qrcfile_kde);
+generate_qrc($themename, $qrcfile_kde, $extrafilecontent);
print "Done.\n";
@file_list = ();
find(\&push_icon_path, $dir);
+ @file_list = sort(@file_list );
my $files = join "\n", @file_list;
my $qrc = "<RCC>\n"
." <qresource prefix=\"/icons\">\n"
."$files\n"
+ ."$extrafilecontent\n"
." </qresource>\n"
."</RCC>\n";