diff -Nru gcstar-1.4.3/bin/gcstar gcstar-1.5.0/bin/gcstar --- gcstar-1.4.3/bin/gcstar 2008-10-11 12:08:15.000000000 +0100 +++ gcstar-1.5.0/bin/gcstar 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -33,7 +33,7 @@ eval '$initTime = [Time::HiRes::gettimeofday()]'; } -my $VERSION = '1.4.3'; +my $VERSION = '1.5.0'; my $MULTI_PROCESS = ((!exists $ENV{GCS_PROFILING}) || ($ENV{GCS_PROFILING} == 0)); @@ -55,29 +55,52 @@ # For win32, redirect all the output to files if ($^O =~ /win32/i) { - (my $logdir = $ENV{GCS_BIN_DIR}) =~s/bin/log/; + my $logdir = $ENV{'APPDATA'}; + $logdir =~ s/\\/\//g; mkpath $logdir; close(STDOUT); close(STDERR); - open(STDOUT, ">$logdir/out.log"); + open(STDOUT, ">$logdir/gcstar.log"); open STDERR, ">&STDOUT"; select STDERR; $| = 1; } #XDG stuff my $home = $ENV{'HOME'}; +$home = $ENV{'APPDATA'} if ($^O =~ /win32/i); $home =~ s/\\/\//g if ($^O =~ /win32/i); -$ENV{XDG_CONFIG_HOME} = $RealBin.'/../config' if ($^O =~ /win32/i); +$ENV{XDG_CONFIG_HOME} = $home.'/gcstar/config' if ($^O =~ /win32/i); $ENV{XDG_CONFIG_HOME} = $home.'/.config' if ! exists $ENV{XDG_CONFIG_HOME}; -mkpath $ENV{XDG_CONFIG_HOME}; -$ENV{XDG_DATA_HOME} = $RealBin.'/../data' if ($^O =~ /win32/i); +$ENV{XDG_DATA_HOME} = $home.'/gcstar' if ($^O =~ /win32/i); $ENV{XDG_DATA_HOME} = $home.'/.local/share' if ! exists $ENV{XDG_DATA_HOME}; -mkpath $ENV{XDG_DATA_HOME}; $ENV{GCS_CONFIG_HOME} = $ENV{XDG_CONFIG_HOME}.'/gcstar'; $ENV{GCS_CONFIG_HOME} = $ENV{XDG_CONFIG_HOME} if ($^O =~ /win32/i); + +# Migrate settings from old windows data path if required +if (($^O =~ /win32/i) && !(-d $ENV{XDG_DATA_HOME})) +{ + if (-d $RealBin.'/../config') + { + print ("Need to migrate settings from old gcstar data store\n"); + mkpath $ENV{XDG_CONFIG_HOME}; + mkpath $ENV{XDG_DATA_HOME}; + my $winRealBin = $RealBin; + $winRealBin =~ s/\//\\/g; + my $winXDGConfig = $ENV{XDG_CONFIG_HOME}; + $winXDGConfig =~ s/\//\\/g; + my $winXDGData = $ENV{XDG_CONFIG_HOME}; + $winXDGData =~ s/\//\\/g; + system "xcopy /Y \"".$winRealBin."\\..\\config\" \"".$winXDGConfig."\""; + system "xcopy /Y \"".$winRealBin."\\..\\data\" \"".$winXDGData."\""; + } +} + +mkpath $ENV{XDG_CONFIG_HOME}; +mkpath $ENV{XDG_DATA_HOME}; + mkdir $ENV{GCS_CONFIG_HOME}; mkdir $ENV{GCS_CONFIG_HOME}.'/GCModels/'; $ENV{GCS_CONFIG_FILE} = $ENV{GCS_CONFIG_HOME}.'/GCstar.conf'; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/bin/.svn/dir-prop-base /tmp/sL6inpqcYo/gcstar-1.5.0/bin/.svn/dir-prop-base --- gcstar-1.4.3/bin/.svn/dir-prop-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/bin/.svn/dir-prop-base 2009-11-21 08:51:05.000000000 +0000 @@ -0,0 +1,8 @@ +K 10 +svn:ignore +V 27 +profile +tmon.out +tree.prof + +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/bin/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/bin/.svn/entries --- gcstar-1.4.3/bin/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/bin/.svn/entries 2009-11-21 08:51:05.000000000 +0000 @@ -0,0 +1,62 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/bin +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-11-19T21:23:14.562353Z +1799 +tian +has-props + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +gcstar +file + + + + +2009-11-21T08:51:05.127386Z +51207cebf111d2d30e4c21a5ae485184 +2009-11-19T21:23:14.562353Z +1799 +tian +has-props + + + + + + + + + + + + + + + + + + + + +10670 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/bin/.svn/prop-base/gcstar.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/bin/.svn/prop-base/gcstar.svn-base --- gcstar-1.4.3/bin/.svn/prop-base/gcstar.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/bin/.svn/prop-base/gcstar.svn-base 2009-11-21 08:51:05.000000000 +0000 @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/bin/.svn/text-base/gcstar.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/bin/.svn/text-base/gcstar.svn-base --- gcstar-1.4.3/bin/.svn/text-base/gcstar.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/bin/.svn/text-base/gcstar.svn-base 2009-11-21 08:51:05.000000000 +0000 @@ -0,0 +1,358 @@ +#!/usr/bin/perl + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use utf8; + +my $initTime; +$ENV{GCS_PROFILING} = 0 if ! exists $ENV{GCS_PROFILING}; +if ($ENV{GCS_PROFILING} > 0) +{ + eval 'use Time::HiRes'; + eval '$initTime = [Time::HiRes::gettimeofday()]'; +} + +my $VERSION = '1.5.0'; + +my $MULTI_PROCESS = ((!exists $ENV{GCS_PROFILING}) || ($ENV{GCS_PROFILING} == 0)); + +use Getopt::Long; +use File::Path; +use File::Spec; +use FindBin qw($RealBin); +use POSIX qw(locale_h); + +$ENV{GCS_BIN_DIR} = $RealBin; +($ENV{GCS_LIB_DIR} = $ENV{GCS_BIN_DIR}) =~ s/bin\/?$/lib\/gcstar/; +($ENV{GCS_SHARE_DIR} = $ENV{GCS_BIN_DIR}) =~ s/bin\/?$/share\/gcstar/; +use lib File::Spec->canonpath("$RealBin/../lib/gcstar"); +if (exists $ENV{PAR_TEMP}) +{ + unshift @INC, "$RealBin/../lib/gcstar"; +} + +# For win32, redirect all the output to files +if ($^O =~ /win32/i) +{ + my $logdir = $ENV{'APPDATA'}; + $logdir =~ s/\\/\//g; + mkpath $logdir; + close(STDOUT); + close(STDERR); + open(STDOUT, ">$logdir/gcstar.log"); + open STDERR, ">&STDOUT"; + select STDERR; $| = 1; +} + +#XDG stuff +my $home = $ENV{'HOME'}; +$home = $ENV{'APPDATA'} if ($^O =~ /win32/i); +$home =~ s/\\/\//g if ($^O =~ /win32/i); + +$ENV{XDG_CONFIG_HOME} = $home.'/gcstar/config' if ($^O =~ /win32/i); +$ENV{XDG_CONFIG_HOME} = $home.'/.config' if ! exists $ENV{XDG_CONFIG_HOME}; + +$ENV{XDG_DATA_HOME} = $home.'/gcstar' if ($^O =~ /win32/i); +$ENV{XDG_DATA_HOME} = $home.'/.local/share' if ! exists $ENV{XDG_DATA_HOME}; + +$ENV{GCS_CONFIG_HOME} = $ENV{XDG_CONFIG_HOME}.'/gcstar'; +$ENV{GCS_CONFIG_HOME} = $ENV{XDG_CONFIG_HOME} if ($^O =~ /win32/i); + +# Migrate settings from old windows data path if required +if (($^O =~ /win32/i) && !(-d $ENV{XDG_DATA_HOME})) +{ + if (-d $RealBin.'/../config') + { + print ("Need to migrate settings from old gcstar data store\n"); + mkpath $ENV{XDG_CONFIG_HOME}; + mkpath $ENV{XDG_DATA_HOME}; + my $winRealBin = $RealBin; + $winRealBin =~ s/\//\\/g; + my $winXDGConfig = $ENV{XDG_CONFIG_HOME}; + $winXDGConfig =~ s/\//\\/g; + my $winXDGData = $ENV{XDG_CONFIG_HOME}; + $winXDGData =~ s/\//\\/g; + system "xcopy /Y \"".$winRealBin."\\..\\config\" \"".$winXDGConfig."\""; + system "xcopy /Y \"".$winRealBin."\\..\\data\" \"".$winXDGData."\""; + } +} + +mkpath $ENV{XDG_CONFIG_HOME}; +mkpath $ENV{XDG_DATA_HOME}; + +mkdir $ENV{GCS_CONFIG_HOME}; +mkdir $ENV{GCS_CONFIG_HOME}.'/GCModels/'; +$ENV{GCS_CONFIG_FILE} = $ENV{GCS_CONFIG_HOME}.'/GCstar.conf'; +$ENV{GCS_DATA_HOME} = $ENV{XDG_DATA_HOME}.'/gcstar'; +$ENV{GCS_DATA_HOME} = $ENV{XDG_DATA_HOME} if ($^O =~ /win32/i); +mkdir $ENV{GCS_DATA_HOME}; + +use GCOptions; +my $options = new GCOptionLoader($ENV{GCS_CONFIG_FILE}, 1); + +my $lang = $options->getFullLang; +$ENV{LANG} = $lang; +$ENV{LANGUAGE} = $lang; +$ENV{LC_ALL} = $lang; +$ENV{LC_CTYPE} = $lang; +setlocale(LC_ALL, $lang); + +sub usage +{ + print "Usage: $0 [-u UPDATE-OPTIONS] [-x EXECUTE-OPTIONS] [FILENAME] + +Launch GCstar, a personal collection manager. Without any option, it will open +FILENAME if specified or the previously opened file. + +Update options: + + -u, --update Tell GCstar to look for available updates + -a, --all Update all components + -c, --collection Update collection models + -w, --website Update plugins to download information + -i, --import Update plugins to import data + -e, --export Update plugins to export data + -l, --lang Update translations + -n, --noproxy Don't ask for a proxy + +Execute options: + + -x, --execute Enter non-interactive mode + -c, --collection MODEL Specify the collection type + -w, --website PLUGIN Specify the plugin to use to download information + -i, --import PLUGIN Specify the plugin to use to import a collection + -e, --export PLUGIN Specify the plugin to use to export the collection + -f, --fields FILENAME File containing fields list to use for import/export + -o, --output FILENAME Write output in FILENAME instead of standard output + --download TITLE Search for the item with TITLE as name + --importprefs PREFERENCES Preferences for the import plugin + --exportprefs PREFERENCES Preferences for the export plugin + --list-plugins List all the plugins available to download information + + Preferences for import/export plugins are specified using this schema: + \"Key1=>Value1,Key2=>Value2\" + +Environment variables: + + \$HOME Used to define following variables if needed + \$XDG_CONFIG_HOME Where configuration files should be stored + If not defined: \$HOME/.config + \$XDG_DATA_HOME Where some data will be stored + If not defined: \$HOME/.local/share + +Bugs reporting: + + To report bugs, please use this forum: + http://forums.gcstar.org/viewforum.php?id=4 + +"; +} + +sub version +{ + print "GCstar $VERSION\n"; +} + +Getopt::Long::Configure ('bundling'); +my ($help, $version, $update, $toBeUpdated, $noProxy, $listPlugins) = (0, 0, 0, {}, 0); +my ($collection, $website, $import, $export) = (undef, undef, undef, undef); +my ($execute, $title, $output, $inPrefs, $outPrefs, $fields) = (0, '', '', '', '', ''); +(usage, exit 1) if !GetOptions("h|help" => \$help, + "v|version" => \$version, + "u|update" => \$update, + "x|execute" => \$execute, + "a|all" => \$toBeUpdated->{all}, + "c|collection:s" => \$collection, + "w|website:s" => \$website, + "i|import:s" => \$import, + "e|export:s" => \$export, + "l|lang" => \$toBeUpdated->{lang}, + "n|noproxy" => \$noProxy, + "download=s" => \$title, + "o|output=s" => \$output, + "importprefs=s" => \$inPrefs, + "exportprefs=s" => \$outPrefs, + "f|fields=s" => \$fields, + "list-plugins" => \$listPlugins, + ); + +my $atLeastOne = 0; +foreach (keys %$toBeUpdated) +{ + $atLeastOne = 1 if $toBeUpdated->{$_}; +} +(usage, exit 1) if $help || ($atLeastOne && !$update); +(version, exit 0) if $version; + +if ($update) +{ + eval ' + use GCUpdater; + use GCLang; + '; + my $langContainer = $GCLang::langs{$options->lang}; + $toBeUpdated->{all} = 1 if !$atLeastOne; + $toBeUpdated->{models} = defined($collection); + $toBeUpdated->{plugins} = defined($website); + $toBeUpdated->{import} = defined($import); + $toBeUpdated->{export} = defined($export); + my $updater = new GCTextUpdater($langContainer, + $ENV{GCS_LIB_DIR}, + $toBeUpdated, + $noProxy, + $VERSION); + $updater->update; + exit 0; +} +elsif ($execute) +{ + use GCCommandLine; + + my $execution = new GCCommandExecution($options, + $collection, + $website, + $import, + $export, + $output); + if ($listPlugins) + { + if ($collection) + { + $execution->listPlugins; + exit 0; + } + else + { + print "A kind of collection should be specified (with -c) when using --list-plugins\n"; + exit 1; + } + } + + if ($ARGV[0]) + { + if ($import) + { + $execution->import($ARGV[0], $inPrefs); + } + else + { + $execution->open($ARGV[0]); + } + } + $execution->setFields($fields) if $fields; + $execution->load($title) if $title; + if ($export) + { + $execution->export($outPrefs); + } + else + { + $execution->save; + } + exit 0; +} +if ($ARGV[0]) +{ + # We have to make it absolute if needed + my $file = $ARGV[0]; + $file = File::Spec->rel2abs($file) + if (!File::Spec->file_name_is_absolute($file)); + $options->file($file); +} + +my $pid; +if ($MULTI_PROCESS) +{ + pipe(RCOMMAND, WCOMMAND); + pipe(RDATA, WDATA); + if ($^O !~ /win32/i) + { + if (!($pid = fork)) + { + use GCPlugins; + close WCOMMAND; + close RDATA; + my $searchJob = new GCPluginJob(\*RCOMMAND, \*WDATA); + + $searchJob->run; + } + } +} + +use Gtk2; +use GCMainWindow; + +my %searchJob = (); + +if ($MULTI_PROCESS) +{ + close RCOMMAND; + close WDATA; + %searchJob = ( + pid => $pid, + command => \*WCOMMAND, + data => \*RDATA + ); + + if ($^O =~ /win32/i) + { + close WCOMMAND; + close RDATA; + } +} +Gtk2->init; +my $window = new GCFrame($options, $VERSION, \%searchJob); + +#Gtk2->set_locale; +Gtk2->main; + +if ($^O =~ /win32/i) +{ + # We store the language in .bat file if possible + + my $batch = 'gcstar.bat'; + if (-w $batch) + { + local $/ = undef; + open BATCH, "<$batch"; + my $lang = $options->lang; + my $bat = ; + $bat =~ s/LANG=.*$/LANG=$lang/m; + close BATCH; + open BATCH, ">$batch" or die "Cannot open .bat to save language\n"; + print BATCH $bat; + close BATCH; + } + close(STDOUT); + close(STDERR); +} + +if ($ENV{GCS_PROFILING} > 0) +{ + my $elapsed; + eval '$elapsed = Time::HiRes::tv_interval($initTime)'; + print "Elapsed : $elapsed\n"; +} + +0; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/CHANGELOG /tmp/sL6inpqcYo/gcstar-1.5.0/CHANGELOG --- gcstar-1.4.3/CHANGELOG 2008-10-11 17:02:31.000000000 +0100 +++ gcstar-1.5.0/CHANGELOG 2009-11-21 08:51:05.000000000 +0000 @@ -1,3 +1,125 @@ +1.5.0 + + * User interface changes + - When too many fields are shown in the dialog box to select which of + them should be displayed, scrollbars are used. + * Collection changes + - Added an optional attribute to collection fields, sorttype, which + overrides the sorting method for that field. Can be either 'number' + or 'date'. + * Bugs fixed + - Preview when fetching information was broken. + - Button to open the web page associated to an item was disabled when + locking a collection. + - It was not possible to modify the title to search for on websites. + - Some collections may not be opened if custom fields were added. + - The groups of fields were shown more than once in some places when + adding custom fields. + - Many bugs fixed for image mode. + - Cast was not fetched for every title when using imdb with an import + plugin + - Sorting by movie release date was not working with non 'yyyy-mm-dd' + formats + - On Windows systems, GCstar now stores its configuration files in the + users Application Data folder, rather than in the GCstar program + folder. This should stop GCstar needing admin rights to run. On first + run of the new version, GCstar should copy the configuration from the + old path. + - Exporting only visible items now works properly with "items matching + any of the criteria" type filters. + - Searching OFDB with German characters works properly + - No more storable warnings when searching from plugins + - Fix star rating widget display with small screen sizes + - Better sizing of image display window + - GCstar now correctly installs icons in the hicolor theme, and now includes + a scalable svg icon + +------------------------------------------------------------------- + +1.5.0 beta1 + + * User interface changes + - Items can be grouped in picture mode as in detailed mode. + - Pictures are resized if needed when displayed in a window. + - User filters can be added to toolbar. + - A right-click on the "Fetch information" button displays a menu + where the mode to use can be selected. + - Column used for quick searches is the one used for ordering in + detailed mode. + - File associated to an item can be a URL (http or ftp) instead of a + local file. + - Search box displays a message when no field have been selected in + personal model. + + * Export/Import/Fetch/Extract changes + - User can choose for each field from which sites information should be + fetched and in which order (if missing from 1st, choose 2nd, etc...). + - FolderImport changes (by BubbleGum) + Can add only recent items from a folder. + Can update path from moved files. + Parse filename to retrieve infos and test for subtitle file. + Remove custom regular expression from filename. + More options when no or many results. + + * Default collections changes + - New default collections: + Stamps (by Bigoud) + Periodicals (by yggdrasiil) + Mini vehicles (by jimjim92) + - Rank in series added to books collections + - Press rating added to movies collections + + * New plugins to fetch information from websites: + - Video games: + Amazon (CA - EN) and NextGame (IT) provided by TPF. + - Movies: + Internet Bookshop (IT) provided by t-storm. + Alpacine and CartelesMetropoliGlobal (ES) provided by DoVerMan. + Kinopoisk (RU) provided by Nazarov Pavel. + - Books: + Saraiva (PT) provided by nirev. + - Comics: + Manga-Sanctuary (FR) provided by Biggriffon. + + * Bugs fixed + - Collections with invalid characters are auto-repaired instead of + generating error message and being unusable. + - Prevent data corruption if a crash occurs while saving collection. + - Histories were lost when editing the collection model. + - Issues fixed with grouping when there are some spaces in lists. + - Default size for history of opened files is 5 instead of 1. + - Item window was shown after closing a picture window. + - Fixed problems when saving searches with numeric comparisons. + - Fixed issues with suffixes in plugin to import from a folder. + - Disable items in popup menu for pictures when collection is locked. + - Correctly export value in options fields when using personal models. + - Bug fixed when performing a search while the current item has been + modified. + - Bug fixed in some website plugins: + All Amazon plugins + All Tvdb plugins (TV shows episodes) + Adlibris (Books - FI, SV) + Alapage (Books - FR) + Alapage (Video Games - FR) + Allocine (Movies - FR) + Bedetheque (Comics - FR) + Bol (Books - IT) + Buscape (Books - PT) + Cinemotions (Movies - FR) + DicoDuNet (Video Games - FR) + Discogs (Music - EN) + FilmWeb (Movies - PL) + Fnac (Books - FR) + GameSpot (Video Games - EN) + IMDb (Movies - EN) + ISBNdb (Books - EN) + JeuxVideo.com (Video games - FR) + MobyGames (Video games - EN) + nooSFere (Books - FR) + OFDb (Movies - DE) + +------------------------------------------------------------------- + 1.4.3 * New translations diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/CHANGELOG.fr /tmp/sL6inpqcYo/gcstar-1.5.0/CHANGELOG.fr --- gcstar-1.4.3/CHANGELOG.fr 2008-10-11 17:04:22.000000000 +0100 +++ gcstar-1.5.0/CHANGELOG.fr 2009-11-21 08:51:05.000000000 +0000 @@ -1,3 +1,149 @@ +1.5.0 + + * Changements dans l'interface utilisateur + - Quand trop de champs sont affichés dans la boîte de dialogue + permettant de choisir lesquels doivent être affichés, des barres + de défilement sont utilisées. + * Changements dans les collections + - Ajout d'un attribut optionnel sur les champs d'une collection, + sorttype, qui impose la méthode de tri pour ce champ. Peut contenir + la valeur 'number' ou 'date'. + * Corrections de problèmes + - La prévisualition lors du téléchargement d'informations ne + fonctionnait plus. + - Le bouton pour ouvrir la page web associée à un élément était + désactivée quand la collection était verrouillée. + - Il était impossible de changer le titre à rechercher sur les sites + web. + - Certaines collections ne pouvaient plus être ouvertes si des champs + personnalisés étaient utilisés. + - Les groupes des champs étaient affichés plus d'une fois lors de + l'ajout de champs personnalisés. + - Plusieurs corrections pour le mode image. + - La liste des acteurs n'était pas récupérée lors de l'utilisation + d'imdb avec un module d'importation. + - Le tri par date de sortie ne fonctionnait pas avec des formats + différents de 'yyyy-mm-dd'. + - Sur les systèmes Windows, GCstar store à présent sa configuration + dans le répertoire des données applicatives de l'utilisateur, plutôt + que dans le répertoire d'installation. Cela permet d'arrêter que + GCstar ait besoind des droits administrateur pour fonctionner. Au + premier lancement de cette nouvelle version, GCstar va + automatiquement copier la configuration depuis l'ancien emplacement. + - Exporter seulement les élément visibles fonctionne à présent + correctement avec les filtres de type "Éléments correspondants à au + moins un critère". + - La recherche OFDB avec des caractères allemands fonctionne + correctement. + - Plus de message d'avertissement dans la console lors d'une recherche. + - Correction avec l'affichage sous forme d'étoile pour les petits + écrans. + - Meilleur redimensionnement des images lorsqu'affichées dans une + fenêtre. + - GCstar installe maintenant correctement les icones dans le thème + hicolor et contient aussi maintenant une icône vectorielle SVG. + +------------------------------------------------------------------- + +1.5.0 beta1 + + * Changements dans l'interface utilisateur + - Les éléments peuvent être groupés en mode image comme en mode + détaillé. + - Les images sont redimensionnées si nécessaires lorsqu'elles sont + affichées dans une fenêtre. + - Les filtres utilisateurs peuvent être ajoutés à la barre d'outils. + - Un clic droit sur le bouton "Télécharger" affiche un menu permettant + de choisir le mode de récupération des données. + - La colonne utilisée pour la recherche rapide en mode détaillée est + celle utilisée pour ordonner. + - Le fichier associé à un élément peut être une URL (http ou ftp) au + lieu d'un fichier local. + - La boîte de recherche affiche un message quand aucun champ n'a été + sélectionné pour un modèle personnalisé. + + * Changement pour l'exportation, l'importation, la récupération Internet et + l'extraction + - L'utilisateur peut choisir pour chaque champ de quel site + l'information doit être récupérée et dans quel ordre. + - Module d'importation depuis un répertoire modifié par BubbleGum + Possibilité d'ajouter seulement les éléments récents. + Le chemin peut être mis à jour si le fichier a été déplacé. + Le nom de fichier est analysé pour retrouver des informations. + Les fichiers sous-titres sont recherchés. + Des expressions régulières définies par l'utilisateur permettent + d'enlever des éléments des noms des fichiers. + Plus de possibilités quand plusieurs ou aucun résultat. + + * Changements dans les collections par défaut + - Nouveaux types de collections : + Timbres (par Bigoud). + Périodiques/Magazines (par yggdrasiil). + Véhicules Miniatures (par jimjim92). + - Le rang a été ajouté aux collections de livres. + - La note presse a été ajoutée aux collections de films. + + * Nouveaux modules pour récupérer des informations depuis des sites web : + - Jeux vidéos: + Amazon (CA - EN) et NextGame (IT) écrits par TPF. + - Films: + Internet Bookshop (IT) écrit par t-storm. + Alpacine et CartelesMetropoliGlobal (ES) écrits par DoVerMan. + Kinopoisk (RU) écrit par Nazarov Pavel. + - Livres: + Saraiva (PT) écrit par nirev. + - Bandes dessinées: + Manga-Sanctuary (FR) écrit par Biggriffon. + + * Corrections de problèmes + - Les collections contenant des caractères invalides sont + automatiquement réparées au lieu d'afficher un message d'erreur et + d'être inutilisables. + - Protections contre la corruption des données si un problème arrive + au moment de la sauvegarde. + - Les historiques étaient perdus lors de la modification du modèle de + collection. + - Problèmes corrigés lorsque le regroupement était utilisé et que des + espaces étaient présents dans la liste. + - La taille par défaut de l'historique des fichiers ouverts est 5 au + lieu de 1. + - La fenêtre de l'élément était affiché après la fermeture de l'image + si affichée dans une fenêtre. + - Les recherches avec une comparaison numérique n'était pas bien + sauvegardées. + - Des problèmes avec les suffixes ont été corrigés dans le module + d'importation depuis un répertoire. + - Quand une collection est verrouillée, les éléments dans le menu + contextuel d'une image sont désactivés si nécessaire. + - Les valeurs dans les champs d'options n'étaient pas correctement + exportées avec les modèles personnels. + - Problème corrigé si une recherche était lancé alors que l'élément + courant était modifié. + - Problèmes corrigés dans certains modules de recherche : + Tous les modules Amazon + Tous les modules Tvdb (Episodes de séries TV) + Adlibris (Livres - FI, SV) + Alapage (Livres - FR) + Alapage (Jeux vidéos - FR) + Allocine (Films - FR) + Bedetheque (Bandes dessinées - FR) + Bol (Livres - IT) + Buscape (Livres - PT) + Cinemotions (Films - FR) + DicoDuNet (Jeux vidéos - FR) + Discogs (Musique - EN) + FilmWeb (Films - PL) + Fnac (Livres - FR) + GameSpot (Jeux vidéos - EN) + IMDb (Films - EN) + ISBNdb (Livres - EN) + JeuxVideo.com (Jeux vidéos - FR) + MobyGames (Jeux vidéos - EN) + nooSFere (Livres - FR) + OFDb (Films - DE) + +------------------------------------------------------------------- + 1.4.3 * Nouvelles traductions @@ -150,7 +296,7 @@ minuscules. - Meilleures performances. - * Changement dans l'interface utilisateur + * Changements dans l'interface utilisateur - Nouvelles images par défaut quand aucun n'est indiquée. - L'utilisateur peut changer l'image par défaut dans les propriétés de la collection. diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/changelog /tmp/sL6inpqcYo/gcstar-1.5.0/debian/changelog --- gcstar-1.4.3/debian/changelog 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/changelog 2009-11-21 17:10:38.000000000 +0000 @@ -1,120 +1,5 @@ -gcstar (1.4.3-2) unstable; urgency=low +gcstar (1.5.0) karmic; urgency=low - * Add a fix for crashes in GCGraphicComponents.pm - (Closes: #530821). Thanks rto David Weinehall for grabbing the patch - - -- Alexander Wirt Sat, 13 Jun 2009 09:33:59 +0200 - -gcstar (1.4.3-1) unstable; urgency=low - - [ Clément Hermann ] - * New upstream release (Closes: #484629, #491545, #507100) - * remove 10-fix-storable-crash.dpatch (fixed upstream) - * adapt 01-set_usr_lib.dpatch - * adapt 07_fix_manpath.dpatch - * add 11_fix_allocine_plugin.dpatch: - updated GCAllocine.pm module from upstream SVN - - [ Alexander Wirt ] - * Bump standards version - * Update copyright file - * Call dh_desktop from rules file - - -- Alexander Wirt Sun, 22 Mar 2009 11:46:48 +0100 - -gcstar (1.3.2-2) unstable; urgency=low - - * Really activate 10-fix-storable-crash.dpatch this time. - - -- Alexander Wirt Mon, 12 Jan 2009 22:22:47 +0100 - -gcstar (1.3.2-1.1) unstable; urgency=low - - * Non-maintainer upload. - * Backport Storage:::forgive_me change from new upstream version - to prevent Gcstar freeze when trying to retrieve data from a - website (Closes: #510685) - - -- Neil Williams Sun, 04 Jan 2009 15:44:40 +0000 - -gcstar (1.3.2-1) unstable; urgency=low - - * New upstream version - * Add Homepage to control file - * Dump debhelper compat to 5 (Closes: #451035) - - -- Alexander Wirt Sat, 26 Jan 2008 22:09:02 +0100 - -gcstar (1.3.1-1) unstable; urgency=low - - * New upstream version (Closes: #452032) - * Removed 08_fix_desktop_file (adopted by upstream) - * Bumpd standards version - - -- Alexander Wirt Tue, 11 Dec 2007 13:35:52 +0100 - -gcstar (1.2.2-1) unstable; urgency=low - - * Update menu icon - * New upstream release - * Backported desktop file from cvs - * Removed 05_fix_xml_enoding (fixed upstream) - - -- Alexander Wirt Fri, 21 Sep 2007 13:59:27 +0200 - -gcstar (1.2.0-1) unstable; urgency=low - - * New upstream release - - Fixes HTML output (Closes: #419791) - * Updated 03_change_default_browser.dpatch - * Removed 08_cvs_imdbplugin and 04_dont_check_permissions (adopted by - upstream) - * Fix desktop file (08_fix_desktop_file.dpatch) - * Adapt menu file to new specification - - -- Alexander Wirt Sat, 08 Sep 2007 22:25:00 +0200 - -gcstar (1.1.1-2) unstable; urgency=low - - * Backport imdb plugin from cvs (Closes: #419792) - - -- Alexander Wirt Wed, 18 Apr 2007 07:51:20 +0200 - -gcstar (1.1.1-1) unstable; urgency=low - - * New upstream version (Closes: #411825) - - Fixed a typo in the italian translation which caused segfault in gcstar - (Closes: #405973, #403069) - * Updated 03_change_default_browser.dpatch - * 08_workaround_for_HTML::Parser.dpatch (included upstream) - - -- Alexander Wirt Wed, 21 Feb 2007 10:44:07 +0100 - -gcstar (1.0.0-1) unstable; urgency=low - - * New upstream release (Closes: #409273) - * Backport a patch from CVS to get 1.0 work with HTML::Parser 3.56-1 - (Closes: #409280) - - -- Alexander Wirt Thu, 1 Feb 2007 20:39:56 +0100 - -gcstar (0.5.0-1) unstable; urgency=low - - * New upstream release - * Add dep on libxml-parser-perl (Closes: #398816) - - -- Alexander Wirt Sat, 18 Nov 2006 01:22:59 +0100 - -gcstar (0.4.1-2) unstable; urgency=low - - * Add libxml-parser-perl and libxml-simple-perl to build deps - (Closes: #396887) - - -- Alexander Wirt Fri, 3 Nov 2006 15:58:04 +0100 - -gcstar (0.4.1-1) unstable; urgency=low - - * Initial release (Closes: #381669) - - -- Alexander Wirt Sat, 9 Jul 2005 17:26:18 +0200 + * Initial release + -- Nyall Dawson Sat, 21 Nov 2009 18:07:33 -0300 diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/compat /tmp/sL6inpqcYo/gcstar-1.5.0/debian/compat --- gcstar-1.4.3/debian/compat 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/compat 2009-09-20 14:28:38.000000000 +0100 @@ -1 +1 @@ -5 +7 diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/control /tmp/sL6inpqcYo/gcstar-1.5.0/debian/control --- gcstar-1.4.3/debian/control 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/control 2009-09-20 23:42:04.000000000 +0100 @@ -1,25 +1,25 @@ Source: gcstar Section: x11 Priority: optional -Maintainer: Alexander Wirt -Build-Depends-Indep: libgtk2-perl, libwww-perl, libxml-parser-perl, libxml-simple-perl, libmp3-tag-perl, libogg-vorbis-header-pureperl-perl -Build-Depends: debhelper (>= 4.0.0), dpatch -Standards-Version: 3.8.1 +Maintainer: Alexander Wirt , Nyall +Build-Depends-Indep: libgtk2-perl, libwww-perl, libxml-parser-perl, libxml-simple-perl, libmp3-tag-perl, libogg-vorbis-header-pureperl-perl +Build-Depends: debhelper (>= 7), dpatch +Standards-Version: 3.8.0 Homepage: http://www.gcstar.org/ Package: gcstar Architecture: all Depends: libgtk2-perl, libwww-perl, libarchive-tar-perl, libxml-simple-perl, libxml-parser-perl, libarchive-zip-perl, libmp3-tag-perl, libogg-vorbis-header-pureperl-perl, ${perl:Depends} -Recommends: libgtk2-spell-perl +Recommends: libgtk2-spell-perl, libdatetime-format-strptime-perl, libmp3-info-perl, libcddb-perl, libnet-freedb-perl Provides: gcfilms Replaces: gcfilms Conflicts: gcfilms (<= 6.4) -Description: An application for managing your movie collection - GCstar is a free application for managing your collections. +Description: Manage your collections of movies, games, books, music and more + GCstar is an application for managing your collections. It supports + many types of collections, including movies, books, games, comics, + stamps, coins, and many more. You can even create your own + collection type for whatever unique thing it is that you collect! Detailed information on each item can be automatically retrieved from the internet and you can store additional data, such as the location or who you've lent it to. You may also search and filter - your collection by many criteria. - . - GCstar is the successor GCfilms and is compatible to its databases. - As GCfilms isn't developed any more GCstars replaces GCfilms. + your collections by many criteria. diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/copyright /tmp/sL6inpqcYo/gcstar-1.5.0/debian/copyright --- gcstar-1.4.3/debian/copyright 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/copyright 2009-09-20 21:02:12.000000000 +0100 @@ -3,7 +3,7 @@ It was downloaded from http://download.gna.org/gcstar/ -Copyright Holder: © 2005-2009 Tian +Copyright Holder: Tian tian@c-sait.net License: @@ -24,4 +24,3 @@ On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'. - diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/menu /tmp/sL6inpqcYo/gcstar-1.5.0/debian/menu --- gcstar-1.4.3/debian/menu 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/menu 2009-10-05 14:13:29.000000000 +0100 @@ -2,7 +2,7 @@ section="Applications/Data Management" \ hints="Gnome" \ title="GCstar" \ - longtitle="Gtk2 Collections Catalogue" \ + longtitle="Personal Collections Manager" \ command="/usr/bin/gcstar" \ - icon="/usr/share/pixmaps/gcstar_logo.xpm" + icon="/usr/share/gcstar/icons/gcstar_64x64" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/patches/00list /tmp/sL6inpqcYo/gcstar-1.5.0/debian/patches/00list --- gcstar-1.4.3/debian/patches/00list 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/patches/00list 2009-09-21 00:51:37.000000000 +0100 @@ -1,6 +1,5 @@ 01-set_usr_lib.dpatch 02gzip-manpage.dpatch 03_change_default_browser.dpatch +04-install-set_usr_lib 07_fix_manpath.dpatch -11_fix_allocine_plugin.dpatch -12_Fix_GCGraphicComponents.pm.dpatch diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/patches/01-set_usr_lib.dpatch /tmp/sL6inpqcYo/gcstar-1.5.0/debian/patches/01-set_usr_lib.dpatch --- gcstar-1.4.3/debian/patches/01-set_usr_lib.dpatch 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/patches/01-set_usr_lib.dpatch 2009-09-20 21:30:10.000000000 +0100 @@ -1,14 +1,14 @@ #! /bin/sh /usr/share/dpatch/dpatch-run -## 01-set_usr_lib.dpatch by Alexander Wirt +## test.dpatch by ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: No description. @DPATCH@ -diff -urNad gcstar-1.4.3~/bin/gcstar gcstar-1.4.3/bin/gcstar ---- gcstar-1.4.3~/bin/gcstar 2008-10-11 13:08:15.000000000 +0200 -+++ gcstar-1.4.3/bin/gcstar 2009-02-28 18:55:56.710196397 +0100 -@@ -44,9 +44,9 @@ +diff -urNad gcstarzombiepig-1.6~/bin/gcstar gcstarzombiepig-1.6/bin/gcstar +--- gcstarzombiepig-1.6~/bin/gcstar 2009-09-20 17:12:25.000000000 -0300 ++++ gcstarzombiepig-1.6/bin/gcstar 2009-09-20 17:29:43.000000000 -0300 +@@ -44,12 +44,12 @@ use POSIX qw(locale_h); $ENV{GCS_BIN_DIR} = $RealBin; @@ -19,18 +19,8 @@ +use lib File::Spec->canonpath("$RealBin/../share/gcstar/lib"); if (exists $ENV{PAR_TEMP}) { - unshift @INC, "$RealBin/../lib/gcstar"; -diff -urNad gcstar-1.4.3~/install gcstar-1.4.3/install ---- gcstar-1.4.3~/install 2008-07-17 19:31:01.000000000 +0200 -+++ gcstar-1.4.3/install 2009-02-28 18:55:56.710196397 +0100 -@@ -196,8 +196,8 @@ - chmod 0755, $baseDir.'/bin/'.$binName; +- unshift @INC, "$RealBin/../lib/gcstar"; ++ unshift @INC, "$RealBin/../share/gcstar/lib"; + } - #Copying lib -- verbosePrint $lang{InstallCopyDirectory}, $baseDir.'/lib/gcstar'; -- recursiveCopy('lib/gcstar', $baseDir.'/lib/gcstar'); -+ verbosePrint $lang{InstallCopyDirectory}, $baseDir.'/share/gcstar/lib'; -+ recursiveCopy('lib/gcstar', $baseDir.'/share/gcstar/lib'); - - #Copying share - verbosePrint $lang{InstallCopyDirectory}, $baseDir.'/share/gcstar'; + # For win32, redirect all the output to files diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/patches/04-install-set_usr_lib.dpatch /tmp/sL6inpqcYo/gcstar-1.5.0/debian/patches/04-install-set_usr_lib.dpatch --- gcstar-1.4.3/debian/patches/04-install-set_usr_lib.dpatch 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/debian/patches/04-install-set_usr_lib.dpatch 2009-09-21 00:50:53.000000000 +0100 @@ -0,0 +1,21 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## test.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad gcstar~/install gcstar/install +--- gcstar~/install 2009-09-20 20:49:02.000000000 -0300 ++++ gcstar/install 2009-09-20 20:50:50.000000000 -0300 +@@ -196,8 +196,8 @@ + chmod 0755, $baseDir.'/bin/'.$binName; + + #Copying lib +- verbosePrint $lang{InstallCopyDirectory}, $baseDir.'/lib/gcstar'; +- recursiveCopy('lib/gcstar', $baseDir.'/lib/gcstar'); ++ verbosePrint $lang{InstallCopyDirectory}, $baseDir.'/share/gcstar/lib'; ++ recursiveCopy('lib/gcstar', $baseDir.'/share/gcstar/lib'); + + #Copying share + verbosePrint $lang{InstallCopyDirectory}, $baseDir.'/share/gcstar'; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/patches/07_fix_manpath.dpatch /tmp/sL6inpqcYo/gcstar-1.5.0/debian/patches/07_fix_manpath.dpatch --- gcstar-1.4.3/debian/patches/07_fix_manpath.dpatch 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/patches/07_fix_manpath.dpatch 2009-09-20 21:34:10.000000000 +0100 @@ -1,32 +1,19 @@ #! /bin/sh /usr/share/dpatch/dpatch-run -## 07_fix_manpath.dpatch by Alexander Wirt +## test.dpatch by ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: No description. @DPATCH@ -diff -urNad gcstar-1.4.3~/install gcstar-1.4.3/install ---- gcstar-1.4.3~/install 2009-02-28 18:56:29.674198841 +0100 -+++ gcstar-1.4.3/install 2009-02-28 18:58:05.402193838 +0100 +diff -urNad gcstarzombiepig-1.6~/install gcstarzombiepig-1.6/install +--- gcstarzombiepig-1.6~/install 2009-09-20 17:32:03.000000000 -0300 ++++ gcstarzombiepig-1.6/install 2009-09-20 17:33:56.000000000 -0300 @@ -107,7 +107,7 @@ } unlink $baseDir.'/bin/'.$binName; - unlink $baseDir.'/man/man1/'.$binName.'.1.gz'; -+ unlink $baseDir.'share/man/man1/'.$binName.'.1.gz'; ++ unlink $baseDir.'/share/man/man1/'.$binName.'.1.gz'; # remove menu and mime items -@@ -187,9 +187,9 @@ - mkpath $baseDir.'/bin'; - copy 'bin/gcstar', $baseDir.'/bin/'.$binName; - -- verbosePrint $lang{InstallCopyDirectory}, $baseDir.'/man/man1'; -- mkpath $baseDir.'/man/man1'; -- my $manPage = "$baseDir/man/man1/$binName.1"; -+ verbosePrint $lang{InstallCopyDirectory}, $baseDir.'/share/man/man1'; -+ mkpath $baseDir.'/share/man/man1'; -+ my $manPage = "$baseDir/share/man/man1/$binName.1"; - copy 'man/gcstar.1', $manPage; - `gzip -f -9 $manPage 2>&1 >/dev/null`; - diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/patches/11_fix_allocine_plugin.dpatch /tmp/sL6inpqcYo/gcstar-1.5.0/debian/patches/11_fix_allocine_plugin.dpatch --- gcstar-1.4.3/debian/patches/11_fix_allocine_plugin.dpatch 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/patches/11_fix_allocine_plugin.dpatch 1970-01-01 01:00:00.000000000 +0100 @@ -1,245 +0,0 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## 11_fix_allocine_plugin.dpatch by Clément Hermann (nodens) -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: No description. - -@DPATCH@ -diff -urNad gcstar-1.4.3~/lib/gcstar/GCPlugins/GCfilms/GCAllocine.pm gcstar-1.4.3/lib/gcstar/GCPlugins/GCfilms/GCAllocine.pm ---- gcstar-1.4.3~/lib/gcstar/GCPlugins/GCfilms/GCAllocine.pm 2008-08-15 13:55:14.000000000 +0200 -+++ gcstar-1.4.3/lib/gcstar/GCPlugins/GCfilms/GCAllocine.pm 2009-03-01 01:35:05.622195296 +0100 -@@ -2,7 +2,7 @@ - - ################################################### - # --# Copyright 2005-2007 Tian -+# Copyright 2005-2009 Tian - # - # This file is part of GCstar. - # -@@ -54,11 +54,16 @@ - } - else - { -- if ($tagname eq "h4") -+ if ($tagname eq "h3") - { - $self->{insideActors} = 0; - $self->{insideDirector} = 0; -- if ($attr->{style} =~ /color:#D20000/) -+ $self->{insideCast}=0; -+ $self->{insideCastLine}=0; -+ $self->{insideRole}=0; -+ $self->{insideActor}=0; -+ $self->{insideDate}=0; -+ if ($attr->{style} =~ /color:\s*#D20000/) - { - $self->{insideAge} = 1; - } -@@ -70,7 +75,11 @@ - elsif ($tagname eq "img") - { - my $src = $attr->{src}; -- if (!$self->{curInfo}->{image}) -+ if($self->{insidePressRating} == 1 && $attr->{class}=~/etoile_(\d)/){ -+ $self->{curInfo}->{ratingpress}=2+2*$1; -+ $self->{insidePressRating} = 0; -+ } -+ elsif (!$self->{curInfo}->{image}) - { - if ($src =~ /\/nmedia\//) - { -@@ -78,9 +87,9 @@ - { - my $pageUrl = $self->{loadedUrl}; - $pageUrl =~ s/fichefilm_/galerievignette_/; -- my $page = $self->loadPage($pageUrl); -+ my $page = $self->loadPage($pageUrl, 0, 1); - $page =~ m/{curInfo}->{image} = $src; - } -@@ -90,6 +99,23 @@ - } - } - } -+ elsif (($tagname eq "table") && ($attr->{cast} eq "1")) -+ { -+ $self->{insideCast}=1; -+ } -+ elsif (($tagname eq "tr") && ($self->{insideCast})) -+ { -+ $self->{insideCastLine}=1; -+ } -+ elsif (($tagname eq "h5") && ($self->{insideCastLine})) -+ { -+ $self->{insideRole}=1; -+ } -+ elsif (($tagname eq "a") && ($self->{insideCastLine})) -+ { -+ $self->{insideRole}=0; -+ $self->{insideActor}=1; -+ } - elsif ($tagname eq "br") - { - if ($self->{insideSynopsis}) -@@ -109,6 +135,24 @@ - { - $self->{insideSynopsis} = 0; - } -+ elsif (($tagname eq "td") && ($self->{isInfo})) -+ { -+ #work around bad date for last search result -+ $self->{isInfo}=0; -+ } -+ elsif (($tagname eq "td") && ($self->{insideCastLine})) -+ { -+ $self->{insideRole}=0; -+ $self->{insideActor}=0; -+ } -+ elsif (($tagname eq "tr") && ($self->{insideCastLine})) -+ { -+ $self->{insideCastLine}=0; -+ } -+ elsif (($tagname eq "table") && ($self->{insideCast})) -+ { -+ $self->{insideCast}=0; -+ } - } - - sub text -@@ -153,21 +197,46 @@ - $origtext =~ s/[\r\n]//g; - $self->{curInfo}->{title} = $origtext if length($origtext) > 2; - } -- if ($self->{inside}->{h3}) -+ if ($self->{inside}->{h2}) - { -- $self->{insideSynopsis} = 1 if $origtext =~ /Synopsis/ -+ $self->{insideSynopsis} = 1 if $origtext =~ /Synopsis/; - } -- if ($self->{inside}->{h4}) -- { -- if ($self->{insideSynopsis}) -+ if ($self->{inside}->{h4}){ -+ if ($self->{insideActors}) - { - $self->{curInfo}->{synopsis} .= $origtext; - } -- elsif ($self->{insideActors}) -+ elsif ($self->{insideSynopsis}) -+ { -+ $self->{curInfo}->{synopsis} .= $origtext; -+ } -+ elsif ( $origtext =~ /^Saga /) - { -+ $origtext =~ s/Saga //; -+ $self->{curInfo}->{serie}=$origtext; -+ } -+ } -+ elsif ($self->{inside}->{h3}) -+ { -+ if ($self->{insideActors}) -+ { -+ #Actors from fichefilm page - $self->{curInfo}->{actors} .= $origtext; - $self->{curInfo}->{actors} =~ s/^\s*//; - } -+ elsif ($self->{insideRole}) -+ { -+ #Roles from casting page -+ push @{$self->{curInfo}->{actors}}, [$origtext,$origtext] -+ if ($self->{actorsCounter} <= $GCPlugins::GCfilms::GCfilmsCommon::MAX_ACTORS); -+ } -+ elsif ($self->{insideActor}) -+ { -+ #Actors from casting page -+ $self->{curInfo}->{actors}->[$self->{actorsCounter}]->[0]=$origtext -+ if ($self->{actorsCounter} <= $GCPlugins::GCfilms::GCfilmsCommon::MAX_ACTORS); -+ $self->{actorsCounter}++; -+ } - elsif ($self->{insideDirector}) - { - $self->{curInfo}->{director} .= $origtext; -@@ -177,6 +246,18 @@ - $origtext =~ s/.*?([0-9]+).*/$1/; - $self->{curInfo}->{age} = $origtext; - } -+ elsif ($self->{insideDate}) -+ { -+ $origtext =~ s/^[\s\n]*//; -+ $origtext =~ s/\s*$//; -+ $self->{curInfo}->{date} = $origtext; -+ $self->{insideDate}=0; -+ } -+ elsif (( $origtext =~ /^Date de sortie/ ) -+ && ( !$self->{curInfo}->{date} ) ) -+ { -+ $self->{insideDate}=1; -+ } - elsif ( $origtext =~ /^Genre/ ) - { - $origtext =~ s/^Genre : //; -@@ -193,14 +274,6 @@ - $origtext =~ s/^Durée : (.*)?/$1/; - $self->{curInfo}->{time} = $origtext; - } -- elsif (( $origtext =~ /Date de sortie/ ) -- && ( !$self->{curInfo}->{date} ) ) -- { -- $origtext =~ s/Date de sortie : (.*)/$1/; -- $origtext =~ s/^[\s\n]*//; -- $origtext =~ s/\s*$//; -- $self->{curInfo}->{date} = $origtext; -- } - elsif ( $origtext =~ /^Titre original/ ) - { - $origtext =~ s/^Titre original : .*?/$1/; -@@ -208,13 +281,18 @@ - } - elsif (($origtext =~ /^Avec/ ) && (! $self->{curInfo}->{actors})) - { -+ #Detecting actors from fichefilm page - $self->{insideActors} = 1; - } - elsif ( $origtext =~ /^Réalisé par/ ) - { - $self->{insideDirector} = 1; - } -- } -+ } -+ elsif ( $origtext =~ /^Presse$/ ) -+ { -+ $self->{insidePressRating} = 1; -+ } - } - } - -@@ -235,6 +313,7 @@ - $self->{isMovie} = 0; - $self->{curName} = undef; - $self->{curUrl} = undef; -+ $self->{actorsCounter}=0; - - bless ($self, $class); - return $self; -@@ -252,8 +331,15 @@ - - if (!$self->{parsingList}) - { -- # Remove link "Plus" in list of actors -- $html =~ s| +Abstract: This manual describes what gcfilms is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/gcfilms/gcfilms.sgml.gz + +Format: postscript +Files: /usr/share/doc/gcfilms/gcfilms.ps.gz + +Format: text +Files: /usr/share/doc/gcfilms/gcfilms.text.gz + +Format: HTML +Index: /usr/share/doc/gcfilms/html/index.html +Files: /usr/share/doc/gcfilms/html/*.html + + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/.svn/text-base/gcfilms.postinst.debhelper.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/debian/.svn/text-base/gcfilms.postinst.debhelper.svn-base --- gcstar-1.4.3/debian/.svn/text-base/gcfilms.postinst.debhelper.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/debian/.svn/text-base/gcfilms.postinst.debhelper.svn-base 2009-09-20 20:53:06.000000000 +0100 @@ -0,0 +1,5 @@ +# Automatically added by dh_installmenu +if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ]; then + update-menus +fi +# End automatically added section diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/.svn/text-base/gcfilms.postrm.debhelper.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/debian/.svn/text-base/gcfilms.postrm.debhelper.svn-base --- gcstar-1.4.3/debian/.svn/text-base/gcfilms.postrm.debhelper.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/debian/.svn/text-base/gcfilms.postrm.debhelper.svn-base 2009-09-20 20:53:06.000000000 +0100 @@ -0,0 +1,3 @@ +# Automatically added by dh_installmenu +if [ -x "`which update-menus 2>/dev/null`" ]; then update-menus ; fi +# End automatically added section diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/.svn/text-base/menu.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/debian/.svn/text-base/menu.svn-base --- gcstar-1.4.3/debian/.svn/text-base/menu.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/debian/.svn/text-base/menu.svn-base 2009-09-20 20:53:06.000000000 +0100 @@ -0,0 +1 @@ +?package(gcfilms):needs="X11" section="Apps/Office" title="gcfilms" command="/usr/bin/gcfilms" icon="/usr/share/gcfilms/gcfilms.png" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/.svn/text-base/rules.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/debian/.svn/text-base/rules.svn-base --- gcstar-1.4.3/debian/.svn/text-base/rules.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/debian/.svn/text-base/rules.svn-base 2009-09-20 20:53:06.000000000 +0100 @@ -0,0 +1,96 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + + touch configure-stamp + + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + #docbook-to-man debian/gcfilms.sgml > gcfilms.1 + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/gcfilms. + ./install --prefix=$(CURDIR)/debian/gcfilms/usr + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install + dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/debian/watch /tmp/sL6inpqcYo/gcstar-1.5.0/debian/watch --- gcstar-1.4.3/debian/watch 2009-11-21 17:24:11.000000000 +0000 +++ gcstar-1.5.0/debian/watch 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ -# Example watch control file for uscan -# Rename this file to "watch" and then you can run the "uscan" command -# to check for upstream updates and more. -# See uscan(1) for format - -# Compulsory line, this is a version 3 file -version=3 - -# Uncomment to examine a Webpage -# -#http://www.example.com/downloads.php gcstar-(.*)\.tar\.gz - -# Uncomment to examine a Webserver directory -http://download.gna.org/gcstar/gcstar-(.*)\.tar\.gz - -# Uncommment to examine a FTP server -#ftp://ftp.example.com/pub/gcstar-(.*)\.tar\.gz debian uupdate - -# Uncomment to use Roland's hack for sourceforge based projects - YMMV! -#http://people.debian.org/~lolando/sfdlr.php?project=gcstar gcstar-([\d.]*).tar.gz - - diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/install /tmp/sL6inpqcYo/gcstar-1.5.0/install --- gcstar-1.4.3/install 2008-07-17 18:31:01.000000000 +0100 +++ gcstar-1.5.0/install 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -113,16 +113,46 @@ if (-w '/usr/share/applications') { - unlink '/usr/share/applications/gcstar.desktop'; + unlink '/usr/share/applications/gcstar.desktop'; } else { - unlink $home.'/.local/share/applications/gcstar.desktop'; + unlink $home.'/.local/share/applications/gcstar.desktop'; } unlink '/usr/share/pixmaps/gcstar.png' - if (-w '/usr/share/pixmaps'); - + if (-w '/usr/share/pixmaps'); + + # Remove icons + unlink '/usr/share/icons/hicolor/16x16/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/16x16/apps'); + unlink '/usr/share/icons/hicolor/22x22/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/16x16/apps'); + unlink '/usr/share/icons/hicolor/24x24/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/24x24/apps'); + unlink '/usr/share/icons/hicolor/32x32/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/32x32/apps'); + unlink '/usr/share/icons/hicolor/36x36/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/36x36/apps'); + unlink '/usr/share/icons/hicolor/48x48/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/48x48/apps'); + unlink '/usr/share/icons/hicolor/64x64/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/64x64/apps'); + unlink '/usr/share/icons/hicolor/72x72/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/72x72/apps'); + unlink '/usr/share/icons/hicolor/96x96/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/96x96/apps'); + unlink '/usr/share/icons/hicolor/128x128/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/128x128/apps'); + unlink '/usr/share/icons/hicolor/192x192/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/192x192/apps'); + unlink '/usr/share/icons/hicolor/256x256/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/256x256/apps'); + unlink '/usr/share/icons/hicolor/scalable/apps/gcstar.svg' + if (-w '/usr/share/icons/hicolor/scalable/apps'); + system 'gtk-update-icon-cache /usr/share/icons/hicolor'; + + # Remove mime type unlink '/usr/share/mime/packages/gcstar.xml' if (-w '/usr/share/mime/packages'); @@ -167,11 +197,40 @@ copy 'share/gcstar/icons/gcstar_48x48.png', '/usr/share/pixmaps/gcstar.png' if (-w '/usr/share/pixmaps'); - copy 'share/applications/gcstar.xml', '/usr/share/mime/packages' + copy 'share/gcstar/icons/gcstar_16x16.png', '/usr/share/icons/hicolor/16x16/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/16x16/apps'); + copy 'share/gcstar/icons/gcstar_22x22.png', '/usr/share/icons/hicolor/22x22/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/16x16/apps'); + copy 'share/gcstar/icons/gcstar_24x24.png', '/usr/share/icons/hicolor/24x24/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/24x24/apps'); + copy 'share/gcstar/icons/gcstar_32x32.png', '/usr/share/icons/hicolor/32x32/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/32x32/apps'); + copy 'share/gcstar/icons/gcstar_36x36.png', '/usr/share/icons/hicolor/36x36/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/36x36/apps'); + copy 'share/gcstar/icons/gcstar_48x48.png', '/usr/share/icons/hicolor/48x48/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/48x48/apps'); + copy 'share/gcstar/icons/gcstar_64x64.png', '/usr/share/icons/hicolor/64x64/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/64x64/apps'); + copy 'share/gcstar/icons/gcstar_72x72.png', '/usr/share/icons/hicolor/72x72/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/72x72/apps'); + copy 'share/gcstar/icons/gcstar_96x96.png', '/usr/share/icons/hicolor/96x96/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/96x96/apps'); + copy 'share/gcstar/icons/gcstar_128x128.png', '/usr/share/icons/hicolor/128x128/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/128x128/apps'); + copy 'share/gcstar/icons/gcstar_192x192.png', '/usr/share/icons/hicolor/192x192/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/192x192/apps'); + copy 'share/gcstar/icons/gcstar_256x256.png', '/usr/share/icons/hicolor/256x256/apps/gcstar.png' + if (-w '/usr/share/icons/hicolor/256x256/apps'); + copy 'share/gcstar/icons/gcstar_scalable.svg', '/usr/share/icons/hicolor/scalable/apps/gcstar.svg' + if (-w '/usr/share/icons/hicolor/scalable/apps'); + system 'gtk-update-icon-cache /usr/share/icons/hicolor'; + + copy 'share/applications/gcstar.xml', '/usr/share/mime/packages' if (-w '/usr/share/mime/packages'); - system 'update-desktop-database'; - system 'update-mime-database /usr/share/mime'; + system 'update-desktop-database'; + system 'update-mime-database /usr/share/mime'; + } diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCBackend/GCBackendLibXml.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCBackend/GCBackendLibXml.pm --- gcstar-1.4.3/lib/gcstar/GCBackend/GCBackendLibXml.pm 2008-07-17 18:30:57.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCBackend/GCBackendLibXml.pm 1970-01-01 01:00:00.000000000 +0100 @@ -1,295 +0,0 @@ -package GCBackend::GCBackendLibXml; - -################################################### -# -# Copyright 2005-2007 Tian -# -# This file is part of GCstar. -# -# GCstar is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# GCstar is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GCstar; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -################################################### - -use strict; -use utf8; - -use XML::LibXML; - - - -{ - package GCBackend::GCBeLibXml; - - sub new - { - my ($proto) = @_; - my $class = ref($proto) || $proto; - my $self = {}; - bless $self, $class; - return $self; - } - - sub load - { - my ($self, $modelLoader, $file, $splash, $caller) = @_; - my @data = (); - - my $parser = XML::LibXML->new; - my $doc = $parser->parse_file($file); - my $root = $doc->getDocumentElement(); - - # Get Model - my $model = $root->getAttribute('type'); - if ($model eq 'inline') - { - } - else - { - $modelLoader->setCurrentModel($model); - } - - tie @data, 'GCDomTie', $root; -# for my $i(0..$#data - 1) -# { -# $caller->{toBeDisplayed}->{$i} = 1; -# } - return (\@data); - } - - sub save - { - my ($self, $splash) = @_; - } - -} - - - -{ - package GCDomTie; - use base qw(Tie::Array); - - sub TIEARRAY - { - my ($class, $root) = @_; - - my @nodes = $root->getChildrenByTagName('item'); - my $self = {nodes => \@nodes}; - - bless $self, $class; - return $self; - } - - sub FETCH - { - my ($self, $index) = @_; - - my $data = $self->{nodes}->[$index]; - if (ref($data) eq 'HASH') - { - return $data; - } - else - { - my %tiedElement; - tie %tiedElement, 'GCElementTie', $data; - $self->{nodes}->[$index] = \%tiedElement; - return \%tiedElement; - } - } - - sub STORE - { - my ($self, $index, $data) = @_; - - $self->{nodes}->[$index] = $data; - } - - sub DELETE - { - my ($self, $index) = @_; - delete $self->{nodes}->[$index]; - } - - sub EXISTS - { - my ($self, $index) = @_; - return exists $self->{nodes}->[$index]; - } - - sub FETCHSIZE - { - my ($self) = @_; - return scalar @{$self->{nodes}}; - } - - sub STORESIZE - { - my ($self, $count) = @_; - my $currentNumber = $self->FETCHSIZE; - if ($count > $currentNumber) - { - foreach ($count - $currentNumber .. $count) - { - $self->STORE($_, {}); - } - } - elsif ($count < $currentNumber) - { - foreach (0 .. $currentNumber - $count - 2) - { - $self->POP; - } - } - } - - sub POP - { - my ($self) = @_; - return pop @{$self->{nodes}}; - } - - sub PUSH - { - my ($self, @values) = @_; - push @{$self->{nodes}}, @values; - } -} - -# TIEHASH, FETCH, STORE, EXISTS, DELETE, CLEAR, FIRSTKEY, NEXTKEY, SCALAR -{ - package GCElementTie; - use base qw(Tie::Hash); - - sub TIEHASH - { - my ($class, $element) = @_; - - my $self = {element => $element, cached => {}}; - bless $self, $class; - return $self; - } - - sub FETCH - { - my ($self, $key) = @_; - - # We return cached value if it exists. - # We only cache on write. Read are made from DOM until modified. - if (! exists $self->{cached}->{$key}) - { - # Build cache - my $child = $self->{element}->firstChild; - while ($child = $child->nextSibling) - #foreach my $child($self->{element}->childNodes) - { - next if $child->nodeType != XML::LibXML::XML_ELEMENT_NODE; - next if $child->nodeName ne $key; - - if ($child->firstChild->nextSibling) - { - my @lines = $child->getChildrenByTagName('line'); - my @multipleList; - foreach my $line(@lines) - { - my @lineArray; - foreach my $col($line->getChildrenByTagName('col')) - { - push @lineArray, $col->textContent; - } - push @multipleList, \@lineArray; - } - $self->{cached}->{$child->nodeName} = \@multipleList; - } - else - { - $self->{cached}->{$child->nodeName} = $child->textContent; - } - last; - } - } - return $self->{cached}->{$key}; - } - - sub STORE - { - my ($self, $key, $value) = @_; - - $self->{cached}->{$key} = $value; - } - - sub EXISTS - { - my ($self, $key) = @_; - - # First look if it exists into cache - return 1 if exists $self->{cached}->{$key}; - # Then look if we have a child with this tag - return scalar $self->{element}->getChildrenByTagName($key); - } - - sub DELETE - { - my ($self, $key) = @_; - - # First delete from cache - delete $self->{cached}->{$key}; - # As we didn't remove it when adding it to cache (for performance - # issues), we should have to do it now - my $node = $self->{element}->getChildrenByTagName($key)->pop; - $self->{element}->removeChild($node) - if defined $node; - } - - sub CLEAR - { - my ($self) = @_; - $self->{cached} = {}; - $self->{element}->removeChildNodes; - } - - sub FIRSTKEY - { - my ($self) = @_; - - # Initialize key list - # As we don't remove from DOM when adding to cache - # all the keys could be retrieved from DOM - my @xmlTags; - foreach ($self->{element}->childNodes) - { - push @xmlTags, $_->nodeName - if $_->nodeType == XML::LibXML::XML_ELEMENT_NODE; - } - $self->{keys} = \@xmlTags; - return shift @{$self->{keys}}; - } - - sub NEXTKEY - { - my ($self, $previous) = @_; - return shift @{$self->{keys}}; - } - - sub SCALAR - { - my ($self) = @_; - return scalar $self->{element}->childNodes; - } -} - - - -1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCBackend/GCBackendXmlCommon.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCBackend/GCBackendXmlCommon.pm --- gcstar-1.4.3/lib/gcstar/GCBackend/GCBackendXmlCommon.pm 2008-10-11 09:52:27.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCBackend/GCBackendXmlCommon.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -29,6 +29,9 @@ { package GCBackend::GCBeXmlBase; + use File::Temp qw/ tempfile /; + use File::Copy; + my %xmlConv = ( '&' => '&', '"' => '"', @@ -130,13 +133,16 @@ sub save { my ($self, $data, $info, $splash) = @_; - if (!open DATA, '>'.$self->{file}) + + # Save into a new file to prevent crashes during saving + (my ($tmpFd, $tmpFile)) = tempfile(); + if (!$tmpFd) { my @error = ('SaveError', ''); return {error => \@error}; } - - binmode(DATA, ':utf8'); + + binmode($tmpFd, ':utf8'); my $xmlModel = ''; my $xmlPreferences = ''; @@ -207,7 +213,7 @@ my $number = 0; $number = scalar @$data; - print DATA ' + print $tmpFd ' ',$information,' ',$xmlModel,' @@ -224,7 +230,7 @@ = $self->{modelLoader}->transformPicturePath($_->{$pic}, undef, $_, $pic); } - print DATA ' {$field}) =~ s/([$toBeReplaced])/$xmlConv{$1}/go; #" - print DATA ' ', $field, '="', $data, '" + print $tmpFd ' ', $field, '="', $data, '" '; } } - print DATA ' > + print $tmpFd ' > '; foreach my $field(@longFields) { @@ -261,17 +267,17 @@ #$data =~ s/"/"/g; (my $data = $_->{$field}) =~ s/([$toBeReplaced])/$xmlConv{$1}/go; #" - print DATA ' <', $field, '>', $data, ' + print $tmpFd ' <', $field, '>', $data, ' '; } foreach my $field(@complexFields) { - print DATA ' <', $field, '> + print $tmpFd ' <', $field, '> ', listToXml($_->{$field}), ' '; } - print DATA ' + print $tmpFd ' '; $splash->setProgressForItemsDisplay($i) if $splash; @@ -280,9 +286,16 @@ $i++; } - print DATA ' + print $tmpFd ' '; - close DATA; + close $tmpFd; + + # Now everything is OK, we move the temporary file over the correct one + if (!move($tmpFile, $self->{file})) + { + my @error = ('SaveError', $!); + return {error => \@error}; + } return {error => undef}; } diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCBackend/GCBackendXmlParser.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCBackend/GCBackendXmlParser.pm --- gcstar-1.4.3/lib/gcstar/GCBackend/GCBackendXmlParser.pm 2008-10-11 09:52:34.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCBackend/GCBackendXmlParser.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -25,12 +25,14 @@ use strict; use utf8; use filetest 'access'; - use GCBackend::GCBackendXmlCommon; { package GCBackend::GCBeXmlParser; + use File::Temp qw/ tempfile /; + use File::Copy; + use base 'GCBackend::GCBeXmlBase'; my $globalInstance; @@ -74,15 +76,49 @@ # re-entrant. Then when we begin parsing, we cannot parse the model $self->prepareModel($self->{file}); my $error = undef; - eval { - $parser->parsefile($self->{file}); - }; - if ($@) + while (1) { - my $errorDesc = $@; - $errorDesc =~ s/^\n*//; - my @errorArray = ('OpenFormatError', $errorDesc); - $error = \@errorArray; + eval { + $parser->parsefile($self->{file}); + }; + if ($@) + { + my $errorDesc = $@; + + # Here we will fix the collection if an invalid character was found by trying to remove it. + # There should be room for optimisation here + + if ($errorDesc =~ /not\s*well-formed\s*\(invalid\s*token\)\s*.*?byte\s*(\d+)/) + { + my $charPosition = $1; + # We would have failed before if it cannot be opened, so we don't check that. + open COL, $self->{file}; + seek COL, $charPosition, 0; + my $badChar; + read COL, $badChar, 1; + seek COL, 0, 0; + (my ($newCol, $tmpFile)) = tempfile(); + while () + { + s/$badChar//g; + print $newCol $_; + } + close $newCol; + close COL; + move($tmpFile, $self->{file}); + } + else + { + $errorDesc =~ s/^\n*//; + my @errorArray = ('OpenFormatError', $errorDesc); + $error = \@errorArray; + last; + } + } + else + { + last; + } } # TODO : Compare performances with and without the compact below because the duplicates are checked diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCBackend/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCBackend/.svn/entries --- gcstar-1.4.3/lib/gcstar/GCBackend/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCBackend/.svn/entries 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/lib/gcstar/GCBackend +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-04-18T10:19:19.698609Z +1635 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +GCBackendXmlCommon.pm +file + + + + +2009-11-21T08:50:57.747382Z +47ff098352020ed00f9b19709e7d61f4 +2009-04-18T10:19:19.698609Z +1635 +tian + + + + + + + + + + + + + + + + + + + + + +8650 + +GCBackendXmlParser.pm +file + + + + +2009-11-21T08:50:57.747382Z +3c4d506901b295ca3f737ecb740840d8 +2009-04-08T19:44:01.822873Z +1628 +tian + + + + + + + + + + + + + + + + + + + + + +14846 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCBackend/.svn/text-base/GCBackendXmlCommon.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCBackend/.svn/text-base/GCBackendXmlCommon.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCBackend/.svn/text-base/GCBackendXmlCommon.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCBackend/.svn/text-base/GCBackendXmlCommon.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,304 @@ +package GCBackend::GCBackendXmlCommon; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use utf8; +use filetest 'access'; + +{ + package GCBackend::GCBeXmlBase; + + use File::Temp qw/ tempfile /; + use File::Copy; + + my %xmlConv = ( + '&' => '&', + '"' => '"', + '<' => '<', + '>' => '>', + '' => '', + ); + my $toBeReplaced = join '', keys %xmlConv; + + sub new + { + my ($proto, $modelLoader) = @_; + my $class = ref($proto) || $proto; + my $self = {modelLoader => $modelLoader}; + bless $self, $class; + return $self; + } + + sub getVersion + { + my $self = shift; + my $version = undef; + return $version if (! -r $self->{file}); + open DATA, $self->{file}; + binmode(DATA, ':utf8'); + while () + { + next if ! /^\s*) + { + if (/type="(.*?)"/) + { + $model = $1; + last; + } + } + close COLLECTION; + $self->{modelLoader}->preloadModel($model); + } + + sub setParameters + { + my ($self, %options) = @_; + $self->{$_} = $options{$_} foreach keys %options; + } + + sub hashToXMLString + { + my %hash = @_; + my $result = ''; + foreach (keys %hash) + { + $result .= " $_=\"".$hash{$_}.'"'; + } + return $result; + } + + sub listToXml + { + my $value = shift; + my $xml = ''; + my $col; + foreach (@{$value}) + { + $xml .= ' +'; + foreach $col(@{$_}) + { + (my $newCol = $col) =~ s/([$toBeReplaced])/$xmlConv{$1}/go; + #" + $xml .= " $newCol\n"; + } + $xml .= ' +'; + } + return $xml; + } + + sub setHistories + { + my ($self, $histories) = @_; + + $self->{histories} = $histories; + } + + sub save + { + my ($self, $data, $info, $splash) = @_; + + # Save into a new file to prevent crashes during saving + (my ($tmpFd, $tmpFile)) = tempfile(); + if (!$tmpFd) + { + my @error = ('SaveError', ''); + return {error => \@error}; + } + + binmode($tmpFd, ':utf8'); + + my $xmlModel = ''; + my $xmlPreferences = ''; + my $collectionType; + my $versionString = ''; + + if (exists $self->{version}) + { + $versionString = ' version="'.$self->{version}.'"'; + } + + if (($self->{modelLoader}->{model}->isInline) + || ($self->{modelLoader}->{model}->isPersonal && $self->{standAlone})) + { + $xmlModel = $self->{modelLoader}->{model}->toString('collectionInlineDescription', 1); + $xmlPreferences = $self->{modelLoader}->{model}->{preferences}->toXmlString; + $collectionType = 'inline'; + } + else + { + $collectionType = $self->{modelLoader}->{model}->getName; + $xmlModel = $self->{modelLoader}->{model}->toStringAddedFields('userCollection'); + } + my $information = ' +'; + $information .= " <$_>".GCUtils::encodeEntities($info->{$_})."\n" + foreach (sort keys %{$info}); + $information .= ' '; + + # Change this to 1 to save history. Not fully functional yet + # Because we don't remove item that are no more present in data. + my $withHistory = 0; + my $histories; + if ($withHistory) + { + $histories = ' +'; + foreach (keys %{$self->{histories}}) + { + $histories .= " \n"; + foreach my $value(@{$self->{histories}->{$_}}) + { + if (ref($value) eq 'ARRAY') + { + $histories .= ' +'; + foreach my $entry(@$value) + { + next if $entry eq ''; + $entry =~ GCUtils::encodeEntities($entry); + $histories .= " $entry\n"; + } + $histories .= ' +'; + } + else + { + next if $value eq ''; + $histories .= ' '.GCUtils::encodeEntities($value)."\n"; + } + } + $histories .= ' +'; + } + $histories .= ' '; + } + + my $number = 0; + $number = scalar @$data; + + print $tmpFd ' + +',$information,' +',$xmlModel,' +',$xmlPreferences,' +',$histories,' +'; + my $i = 1; + foreach (@$data) + { + #Perform the transformation for each image value + foreach my $pic(@{$self->{modelLoader}->{model}->{managedImages}}) + { + $_->{$pic} + = $self->{modelLoader}->transformPicturePath($_->{$pic}, undef, $_, $pic); + } + + print $tmpFd ' {modelLoader}->{model}->{fieldsNames}}) + { + if (ref($_->{$field}) eq 'ARRAY') + { + push @complexFields, $field; + } + elsif ($self->{modelLoader}->{model}->{fieldsInfo}->{$field}->{type} + eq 'long text') + { + push @longFields, $field; + } + else + { + #(my $data = $_->{$field}) =~ s/&/&/g; + #$data =~ s//>/g; + #$data =~ s/"/"/g; + (my $data = $_->{$field}) =~ s/([$toBeReplaced])/$xmlConv{$1}/go; + #" + print $tmpFd ' ', $field, '="', $data, '" +'; + } + } + print $tmpFd ' > +'; + foreach my $field(@longFields) + { + #(my $data = $_->{$field}) =~ s/&/&/g; + #$data =~ s//>/g; + #$data =~ s/"/"/g; + (my $data = $_->{$field}) =~ s/([$toBeReplaced])/$xmlConv{$1}/go; + #" + print $tmpFd ' <', $field, '>', $data, ' +'; + } + foreach my $field(@complexFields) + { + print $tmpFd ' <', $field, '> +', listToXml($_->{$field}), ' +'; + } + + print $tmpFd ' +'; + $splash->setProgressForItemsDisplay($i) if $splash; + + $self->{modelLoader}->restoreInfo($_) + if $self->{wantRestore}; + + $i++; + } + print $tmpFd ' +'; + close $tmpFd; + + # Now everything is OK, we move the temporary file over the correct one + if (!move($tmpFile, $self->{file})) + { + my @error = ('SaveError', $!); + return {error => \@error}; + } + + return {error => undef}; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCBackend/.svn/text-base/GCBackendXmlParser.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCBackend/.svn/text-base/GCBackendXmlParser.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCBackend/.svn/text-base/GCBackendXmlParser.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCBackend/.svn/text-base/GCBackendXmlParser.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,491 @@ +package GCBackend::GCBackendXmlParser; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use utf8; +use filetest 'access'; +use GCBackend::GCBackendXmlCommon; + +{ + package GCBackend::GCBeXmlParser; + + use File::Temp qw/ tempfile /; + use File::Copy; + + use base 'GCBackend::GCBeXmlBase'; + + my $globalInstance; + my $globalSplash; + my $globalModelLoader; + #my @data; + #my %information; + #my %histories; + my $maxId; + my $savedMaxId; + my $historyInline; + + sub load + { + my ($self, $splash) = @_; + + if (! -r $self->{file}) + { + my @error = ('OpenError', ''); + return {error => \@error}; + } + + $self->{data} = []; + $self->{information} = {}; + $self->{histories} = (); + $maxId = 0; + $savedMaxId = 0; + + $globalInstance = $self; + $globalSplash = $splash; + $globalModelLoader = $self->{modelLoader}; + + my $parser = XML::Parser->new(Handlers => { + Init => \&StartDocument, + Final => \&EndDocument, + Start => \&StartTag, + End => \&EndTag, + Char => \&Text, + }); + # We have to preload the model into cache because XML::Parser is not + # re-entrant. Then when we begin parsing, we cannot parse the model + $self->prepareModel($self->{file}); + my $error = undef; + while (1) + { + eval { + $parser->parsefile($self->{file}); + }; + if ($@) + { + my $errorDesc = $@; + + # Here we will fix the collection if an invalid character was found by trying to remove it. + # There should be room for optimisation here + + if ($errorDesc =~ /not\s*well-formed\s*\(invalid\s*token\)\s*.*?byte\s*(\d+)/) + { + my $charPosition = $1; + # We would have failed before if it cannot be opened, so we don't check that. + open COL, $self->{file}; + seek COL, $charPosition, 0; + my $badChar; + read COL, $badChar, 1; + seek COL, 0, 0; + (my ($newCol, $tmpFile)) = tempfile(); + while () + { + s/$badChar//g; + print $newCol $_; + } + close $newCol; + close COL; + move($tmpFile, $self->{file}); + } + else + { + $errorDesc =~ s/^\n*//; + my @errorArray = ('OpenFormatError', $errorDesc); + $error = \@errorArray; + last; + } + } + else + { + last; + } + } + + # TODO : Compare performances with and without the compact below because the duplicates are checked + # also when adding to the graphical components + # Compact histories. We didn't filtered previously for performances issues + #GCUtils::compactHistories(\%histories); + + $self->{information}->{maxId} = $maxId + if ! exists $self->{information}->{maxId}; + + # gotHistory: + # 0: Nothing done + # 1: Returning history + # 2: Already initialized + + return { + error => $error, + data => $self->{data}, + information => $self->{information}, + histories => \$self->{histories}, + gotHistory => (1 + ($historyInline ? 0 : 1)), # We always have an initalized history with this BE. + }; + } + + # Parser routines + + # Some globals to speed up things + my $inCol; + my $inLine; + my $currentTag; + my $currentCol; + my $currentCount; + my $currentIsList; + my $isItem; + my $isInfo; + my $newItem; + my $modCap; + my $prefCap; + my $anyCap; + my $isInline; + my $inlineModel; + my $inlinePreferences; + + my $inHistories; + my $historyField; + # history type : + # 1 : Single list + # 2 : Multiple list + my $historyType; + my $historyCap; + + sub StartDocument + { + $isItem = 0; + $inLine = 0; + $inCol = 0; + $currentCol = ''; + $currentCount = 0; + $modCap = 0; + $prefCap = 0; + $anyCap = 0; + $inlineModel = ''; + $inlinePreferences = ''; + +# SAVED HISTORIES DEACTIVATED +# $inHistories = 0; +# $historyField = ''; +# $historyCap = 0; + $historyInline = 0; + } + + sub EndDocument + { + if (($inlineModel) && ($isInline)) + { + $globalModelLoader->setCurrentModelFromInline({inlineModel => $inlineModel, + inlinePreferences => $inlinePreferences}); + } + } + + sub StartTag + { + #my ($expat, $tag, %attrs) = @_; + if ($isItem) + { + if ($inLine) + { + #Only a col could start in a line + $inCol = 1; + } + elsif ($_[1] eq 'line') + { + $inLine = 1; + $currentIsList = 1; + $newItem->{$currentTag} = [] if (ref($newItem->{$currentTag}) ne 'ARRAY'); + push @{$newItem->{$currentTag}}, []; + } + else + { + $currentIsList = 0; + $currentTag = $_[1]; + } + } + elsif ($isInfo) + { + $currentTag = $_[1]; + $savedMaxId = 1 if $currentTag eq 'maxId'; + } + else + { + my ($expat, $tag, %attrs) = @_; + if ($modCap) + { + $tag =~ s/^user(.)/\L$1\E/;; + $inlineModel .= "<$tag".GCBackend::GCBeXmlBase::hashToXMLString(%attrs).'>'; + } + elsif ($prefCap) + { + $inlinePreferences .= "<$tag".GCBackend::GCBeXmlBase::hashToXMLString(%attrs).'>'; + } + elsif ($tag eq 'item') + { + $newItem = \%attrs; + $isItem = 1; + } + elsif ($tag eq 'information') + { + $isInfo = 1; + } + elsif (($tag eq 'collectionInlineDescription') || ($tag eq 'userCollection')) + { + $modCap = 1; + $anyCap = 1; + $inlineModel = '\n"; + } + elsif ($tag eq 'collectionInlinePreferences') + { + $prefCap = 1; + $anyCap = 1; + $inlinePreferences = '\n"; + } + elsif ($tag eq 'collection') + { + $globalSplash->setItemsTotal($attrs{items}) + if $globalSplash; + if ($attrs{type} eq 'inline') + { + $isInline = 0; + } + else + { + if (! $globalModelLoader->setCurrentModel($attrs{type})) + { + die $globalModelLoader->{lang}->{ErrorModelNotFound}.$attrs{type} + ."\n\n" + .$globalModelLoader->getUserModelsDirError."\n"; + } + } + } +# SAVED HISTORIES DEACTIVATED +# elsif ($tag eq 'histories') +# { +# $inHistories = 1; +# $historyInline = 1; +# } +# elsif ($inHistories) +# { +# if ($tag eq 'history') +# { +# $historyField = $attrs{name}; +# # Default is single +# $historyType = 1; +# } +# elsif ($tag eq 'values') +# { +# push @{$globalInstance->{histories}->{$historyField}}, []; +# $historyType = 2; +# } +# elsif ($tag eq 'value') +# { +# if ($historyType == 1) +# { +# push @{$globalInstance->{histories}->{$historyField}}, ''; +# } +# else +# { +# push @{$globalInstance->{histories}->{$historyField}->[-1]}, ''; +# } +# $historyCap = 1; +# } +# } + } + } + + sub EndTag + { + if ($anyCap) + { + if ($modCap) + { + if (($_[1] eq 'collectionInlineDescription') || ($_[1] eq 'userCollection')) + { + $anyCap = $prefCap; + $modCap = 0; + $inlineModel .= ''; + if ($inlinePreferences) + { + $globalModelLoader->setCurrentModelFromInline({inlineModel => $inlineModel, + inlinePreferences => $inlinePreferences}); + $inlineModel = undef; + } + elsif($_[1] eq 'userCollection') + { + $globalModelLoader->addFieldsToDefaultModel($inlineModel); + $inlineModel = undef; + } + + } + else + { + (my $tag = $_[1]) =~ s/^user(.)/\L$1\E/; + $inlineModel .= "\n"; + } + return; + } + else + { + if ($_[1] eq 'collectionInlinePreferences') + { + $anyCap = $modCap; + $prefCap = 0; + $inlinePreferences .= ''; + if ($inlineModel) + { + $globalModelLoader->setCurrentModelFromInline({inlineModel => $inlineModel, + inlinePreferences => $inlinePreferences}); + $inlineModel = ''; + } + } + else + { + $inlinePreferences .= '\n"; + } + return; + } + } + + if ($_[1] eq 'item') + { + push @{$globalInstance->{data}}, $newItem; + $currentCount++; +# SAVED HISTORIES DEACTIVATED +# if (!$historyInline) +# { + #foreach (@{$globalModelLoader->{model}->{fieldsHistory}}) + #{ + # push @{$globalInstance->{histories}->{$_}}, $newItem->{$_}; + #} + if ($globalModelLoader->{panel}) + { + foreach (@{$globalModelLoader->{model}->{fieldsHistory}}) + { + $globalModelLoader->{panel}->{$_}->addHistory($newItem->{$_}, 1); + } + } +# } + foreach (@{$globalModelLoader->{model}->{fieldsNotNull}}) + { + $newItem->{$_} = $globalModelLoader->{model}->{fieldsInfo}->{$_}->{init} if ! $newItem->{$_}; + } + + if (!$savedMaxId) + { + my $id = $newItem->{$globalModelLoader->{model}->{commonFields}->{id}}; + $maxId = $id + if $id > $maxId; + } + + $globalSplash->setProgressForItemsLoad($currentCount) + if $globalSplash; + + $isItem = 0; + } + elsif ($_[1] eq 'information') + { + $isInfo = 0 if !$isItem; + } + elsif ($inCol) + { + # We are closing a col as it could not have tags inside + push @{$newItem->{$currentTag}->[-1]}, $currentCol; + $currentCol = ''; + $inCol = 0; + } +# SAVED HISTORIES DEACTIVATED +# elsif ($inHistories) +# { +# $inHistories = 0 if $_[1] eq 'histories'; +# $historyField = '' if $_[1] eq 'history'; +# $historyCap = 0 if $_[1] eq 'value'; +# +# } + else + { + # The only tag that could prevent us from closing a line is col, but it has + # already been managed + if ($inLine) + { + $inLine = 0; + } + else + { + $currentTag = ''; + } + } + } + + sub Text + { + if ($isItem) + { + if ((! $currentTag) + || $inLine + || $currentIsList + || ((!$newItem->{$currentTag}) && ($_[1] =~ /^\s*$/oms))) + { + if ($inCol) + { + return if $_[1] =~ /^\s*$/oms; + $currentCol .= $_[1]; + } + } + else + { + $newItem->{$currentTag} .= $_[1]; + } + } + elsif ($isInfo) + { + return if $_[1] =~ /^\s*$/oms; + $globalInstance->{information}->{$currentTag} .= $_[1]; + } + else + { + if ($modCap) + { + $inlineModel .= $_[1]; + } + elsif ($prefCap) + { + $inlinePreferences .= $_[1]; + } +# elsif ($historyCap) +# { +# if ($historyType == 1) +# { +# $globalInstance->{histories}->{$historyField}->[-1] .= $_[1]; +# } +# else +# { +# $globalInstance->{histories}->{$historyField}->[-1]->[-1] .= $_[1]; +# } +# } + } + } + +} + + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCBookmarks.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCBookmarks.pm --- gcstar-1.4.3/lib/gcstar/GCBookmarks.pm 2008-07-17 18:31:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCBookmarks.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCBorrowings.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCBorrowings.pm --- gcstar-1.4.3/lib/gcstar/GCBorrowings.pm 2008-07-17 18:31:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCBorrowings.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -458,7 +458,7 @@ my ($self, $data, $model) = @_; $self->setModel($model); - my $items = $data->getItemsList; + my $items = $data->getItemsListFiltered; $self->{data} = $data; $self->{itemsList} = []; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCCommandLine.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCCommandLine.pm --- gcstar-1.4.3/lib/gcstar/GCCommandLine.pm 2008-08-27 19:58:43.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCCommandLine.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -345,7 +345,7 @@ $self->{exportOptions}->{file} = $self->{file}; $self->{exportOptions}->{collection} = $self->{original}; $self->{exportOptions}->{fieldsInfo} = $self->{model}->{fieldsInfo}; - $self->{exportOptions}->{items} = $self->{data}->getItemsList; + $self->{exportOptions}->{items} = $self->{data}->getItemsListFiltered; $self->{exportOptions}->{defaultImage} = $ENV{GCS_SHARE_DIR}.'/logos/no.png'; $self->parsePrefs($prefs, $self->{exportOptions}); $self->{data}->{model} = $self->{model} diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCData.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCData.pm --- gcstar-1.4.3/lib/gcstar/GCData.pm 2008-08-28 19:24:54.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCData.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -27,7 +27,9 @@ { package GCItems; - + # + # This is seen as $main->{items} + # use XML::Parser; use Storable; use File::Copy; @@ -61,9 +63,11 @@ sub initModel { - my ($self, $model) = @_; + #if $modelChanged is set, that means we updated the currently used model + # and not that we changed the model + my ($self, $model, $modelUpdated) = @_; $self->{model} = $model; - $self->{parent}->notifyModelChange; + $self->{parent}->notifyModelChange($modelUpdated); } sub setPanel @@ -79,16 +83,16 @@ $self->{currentItem} = -1; } - sub updateCurrentFromPanel + sub updateSelectedItemInfoFromGivenPanel { my ($self, $panel) = @_; my $previousPanel = $self->{panel}; $self->{panel} = $panel; - $self->updateCurrent(1); + $self->updateSelectedItemInfoFromPanel(1); $self->{panel} = $previousPanel; } - sub updateCurrent + sub updateSelectedItemInfoFromPanel { my ($self, $withSelect, $forced) = @_; my $selectedChanged = 0; @@ -101,7 +105,7 @@ } else { - $info = ($self->getItemsList)->[$self->{currentItem}]; + $info = ($self->getItemsListFiltered)->[$self->{currentItem}]; } my $idField = $self->{model}->{commonFields}->{id}; @@ -145,8 +149,8 @@ # Propagate the changes to all the items foreach (@{$self->{multipleCurrentItems}}) { - my $previous = Storable::dclone(($self->getItemsList)->[$_]); - my $item = ($self->getItemsList)->[$_]; + my $previous = Storable::dclone(($self->getItemsListFiltered)->[$_]); + my $item = ($self->getItemsListFiltered)->[$_]; for my $field (keys %$info) { $item->{$field} = $info->{$field}; @@ -197,7 +201,7 @@ my $realIdx = $idx; $realIdx = $self->{currentItem} if ! defined $idx; - return ($self->getItemsList)->[$realIdx]->{$self->{model}->{commonFields}->{title}}; + return ($self->getItemsListFiltered)->[$realIdx]->{$self->{model}->{commonFields}->{title}}; } sub getCurrent @@ -222,7 +226,7 @@ my %fields = map {$_ => 1} @{$self->{model}->{fieldsNotFormatted}}; foreach (@{$self->{multipleCurrentItems}}) { - my $item = ($self->getItemsList)->[$_]; + my $item = ($self->getItemsListFiltered)->[$_]; for my $field (keys %fields) { if (exists $info->{$field}) @@ -250,7 +254,7 @@ { $idx = $self->{currentItem} if ! defined $idx; return if $self->{currentItem} < 0; - $info = ($self->getItemsList)->[$idx]; + $info = ($self->getItemsListFiltered)->[$idx]; } for my $field (@{$self->{model}->{fieldsNotFormatted}}) { @@ -292,7 +296,7 @@ if ((!$noUpdate) && ($self->{currentItem} > -1) && !($self->{hasBeenDeleted})) { - ($selectedHasChanged, $filtered) = $self->updateCurrent($withSelect); + ($selectedHasChanged, $filtered) = $self->updateSelectedItemInfoFromPanel($withSelect); } else { @@ -310,7 +314,10 @@ sub valueToDisplayed { my ($self, $value, $field) = @_; - return $self->{model}->getDisplayedValue($self->{model}->{fieldsInfo}->{$field}->{values}, $value); + my $displayed = $self->{model}->getDisplayedValue($self->{model}->{fieldsInfo}->{$field}->{values}, $value); + return $displayed if $displayed; + # For personal models, it won't return a value. Then we keep the original one. + return $value; } sub transformValue @@ -331,14 +338,14 @@ { my ($self, $idx, $field) = @_; - return ($self->getItemsList)->[$idx]->{$field}; + return ($self->getItemsListFiltered)->[$idx]->{$field}; } sub setValue { my ($self, $idx, $field, $value) = @_; - ($self->getItemsList)->[$idx]->{$field} = $value; + ($self->getItemsListFiltered)->[$idx]->{$field} = $value; if ($idx == $self->{currentItem}) { $self->{panel}->$field($value); @@ -346,7 +353,7 @@ } } - sub getItemsList + sub getItemsListFiltered { my ($self, $filter) = @_; @@ -738,6 +745,13 @@ return (0, $self->{loaded}->{error}); } + # Perform Models Change if needed + if(!$self->{model}->{isInline} && ($backend->getVersion() ne $backend->{version})) + { + my $modelFormatUpdater=GCModelsChanges->new($self,$self->{model}->{collection}->{name}); + $modelFormatUpdater->applyChanges($self->{itemArray}, $backend->getVersion(), $backend->{version}); + } + # Hide the panel if no item if (! scalar @{$self->{itemArray}}) { @@ -786,7 +800,7 @@ mkpath $self->{newImagesDirectory}; my $file; my $dataFile = $self->{previousFile} ? $self->{previousFile} : $self->{options}->file; - foreach (@{$self->getItemsList}) + foreach (@{$self->getItemsListFiltered}) { foreach my $pic(@{$self->{model}->{fieldsImage}}) { @@ -834,7 +848,7 @@ eval '$initTime = [Time::HiRes::gettimeofday()]'; } - $self->updateCurrent if ($self->{currentItem} > -1); + $self->updateSelectedItemInfoFromPanel if ($self->{currentItem} > -1); # TODO : Use progress bar for this operation also my $moveError = $self->movePictures diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCDialogs.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCDialogs.pm --- gcstar-1.4.3/lib/gcstar/GCDialogs.pm 2008-10-11 12:21:25.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCDialogs.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -46,7 +46,13 @@ sub activateOkButton { my ($self, $value) = @_; - ($self->action_area->get_children)[0]->set_sensitive($value); + ($self->action_area->get_children)[$self->{okPosition}]->set_sensitive($value); + } + + sub activateExtraButton + { + my ($self, $value) = @_; + ($self->action_area->get_children)[$self->{extraPosition}]->set_sensitive($value); } sub setOkLabel @@ -73,10 +79,21 @@ { @buttons = @GCDialogs::okCancelButtons; } + my ($okPosition, $extraPosition) = (0, -1); if (@extraButtons) { - push @buttons, @extraButtons if $extraAfter; - unshift @buttons, @extraButtons if !$extraAfter; + if ($extraAfter) + { + $okPosition = 1; + $extraPosition = 0; + push @buttons, @extraButtons; + } + else + { + $okPosition = 0; + $extraPosition = 2; + unshift @buttons, @extraButtons; + } } my $self = $class->SUPER::new($title, $parent, @@ -84,7 +101,9 @@ @buttons ); bless ($self, $class); - + + ($self->{okPosition}, $self->{extraPosition}) = ($okPosition, $extraPosition); + $self->setOkLabel($okLabel) if $okLabel; $self->set_default_response('ok'); @@ -264,6 +283,18 @@ $self->SUPER::show(); $self->show_all; $self->set_position('center-always'); + $self->{scrollArea}->signal_connect('size-allocate' => sub { + return if !$self->{scrollArea}; + my ($width, $height) = $self->get_size; + return if ($width == $self->{width}) && ($height == $self->{height}); + my $allocation = $self->{scrollArea}->allocation; + return if $allocation->height < 10; + $self->{image}->parent->set_size_request(-1, -1); + $self->set_position('center'); + my $pixbuf = GCUtils::scaleMaxPixbuf($self->{originalPixbuf}, $allocation->width, $allocation->height); + $self->{image}->set_from_pixbuf($pixbuf); + ($self->{width}, $self->{height}) = ($width, $height); + }) if $self->{scrollArea}; my $code = $self->run; $self->hide; } @@ -283,8 +314,55 @@ if (-f $file) { - my $image = Gtk2::Image->new_from_file($file); - $self->vbox->pack_start($image,0,0,0); + $self->{image} = Gtk2::Image->new; + $self->{originalPixbuf} = Gtk2::Gdk::Pixbuf->new_from_file($file); + $self->{image}->set_from_pixbuf($self->{originalPixbuf}); + $self->{image}->set_size_request(0,0); + $self->{scrollArea} = new Gtk2::ScrolledWindow; + $self->{scrollArea}->set_policy ('automatic', 'automatic'); + $self->{scrollArea}->set_shadow_type('none'); + $self->{scrollArea}->add_with_viewport($self->{image}); + $self->vbox->pack_start($self->{scrollArea},1,1,0); + my ($screenWidth, $screenHeight) = ($self->get_screen->get_width, $self->get_screen->get_height); + my ($pixWidth, $pixHeight) = ($self->{originalPixbuf}->get_width, $self->{originalPixbuf}->get_height); + + # Minimum amount of spacing we want to leave for panels, window decorations, borders, etc + my $heightMargin = 150; + my $widthMargin = 30; + + my $ratio = $pixWidth / $pixHeight; + + # Check if picture will fit into screen, or if we'll need to resize + if (($pixHeight > ($screenHeight - $heightMargin)) && ($pixWidth <= ($screenWidth - $widthMargin))) + { + # Image is higher than vertical space we have available, but not wider + $pixHeight = $screenHeight - $heightMargin; + $pixWidth = $pixHeight * $ratio; + } + elsif (($pixHeight <= ($screenHeight - $heightMargin)) && ($pixWidth > ($screenWidth - $widthMargin))) + { + # Image is wider than horizontal space we have available, but not taller + $pixWidth = $screenWidth - $widthMargin; + $pixHeight = $pixWidth / $ratio; + } + elsif (($pixHeight > ($screenHeight - $heightMargin)) && ($pixWidth > ($screenWidth - $widthMargin))) + { + # Image is both too high and too wide for space we have, so see which direction will be + # affected the most + if ($screenHeight - $heightMargin - $pixHeight < $screenWidth - $widthMargin - $pixWidth) + { + # Constrained by vertical height + $pixHeight = $screenHeight - $heightMargin; + $pixWidth = $pixHeight * $ratio; + } + else + { + # Constrained by horizontal width + $pixWidth = $screenWidth - $widthMargin; + $pixHeight = $pixWidth / $ratio; + } + } + $self->{image}->parent->set_size_request($pixWidth, $pixHeight); } else { diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCDisplay.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCDisplay.pm --- gcstar-1.4.3/lib/gcstar/GCDisplay.pm 2008-07-17 18:31:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCDisplay.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -153,8 +153,10 @@ sub getComparisonFunction { my ($self, $type) = @_; - my ($comparison, $numeric) = @$type; + $numeric = 1 if $numeric eq 'true'; + $numeric = 0 if $numeric eq 'false'; + if ($comparison eq 'eq') { return \&compareExact; @@ -169,28 +171,28 @@ } elsif ($comparison eq 'lt') { - return \&compareLessStrings if ($numeric ne 'true'); - return \&compareLessNumbers if ($numeric eq 'true'); + return \&compareLessStrings if (!$numeric); + return \&compareLessNumbers if ($numeric); } elsif ($comparison eq 'le') { - return \&compareLessOrEqualStrings if ($numeric ne 'true'); - return \&compareLessOrEqualNumbers if ($numeric eq 'true'); + return \&compareLessOrEqualStrings if (!$numeric); + return \&compareLessOrEqualNumbers if ($numeric); } elsif ($comparison eq 'gt') { - return \&compareGreaterStrings if ($numeric ne 'true'); - return \&compareGreaterNumbers if ($numeric eq 'true'); + return \&compareGreaterStrings if (!$numeric); + return \&compareGreaterNumbers if ($numeric); } elsif ($comparison eq 'ge') { - return \&compareGreaterOrEqualStrings if ($numeric ne 'true'); - return \&compareGreaterOrEqualNumbers if ($numeric eq 'true'); + return \&compareGreaterOrEqualStrings if (!$numeric); + return \&compareGreaterOrEqualNumbers if ($numeric); } elsif ($comparison eq 'range') { - return \&compareRangeStrings if ($numeric ne 'true'); - return \&compareRangeNumbers if ($numeric eq 'true'); + return \&compareRangeStrings if (!$numeric); + return \&compareRangeNumbers if ($numeric); } elsif ($comparison eq 'regexp') { @@ -271,6 +273,7 @@ my ($self, $info) = @_; return 1 if $self->{cleared}; my $testAnd = $self->{mode} eq 'and'; + foreach my $field(keys %{$self->{info}}) { my $value = ''; @@ -434,6 +437,8 @@ $self->initValues; $self->SUPER::show(); $self->show_all; + $self->activateOkButton($self->{notEmpty}); + $self->activateExtraButton($self->{notEmpty}); $self->{search} = undef; my $ended = 0; while (!$ended) @@ -538,8 +543,17 @@ my @filtersTotal = @{$model->{filters}}; my $row = 0; - return if ($#filtersTotal + (2 * $#filtersGroup)) <= 0; - $self->{layoutTable}->resize($#filtersTotal + (2 * $#filtersGroup), 3); + my $nbLines = @filtersTotal + (2 * @filtersGroup); + if ($nbLines <= 0) + { + $self->{notEmpty} = 0; + $self->{layoutTable}->resize(1, 1); + my $label = new GCLabel($self->{parent}->{lang}->{SearchNoField}); + $self->{layoutTable}->attach($label, 0, 1, 0, 1, 'expand', 'expand', $GCUtils::margin, $GCUtils::margin); + return; + } + $self->{notEmpty} = 1; + $self->{layoutTable}->resize($nbLines, 3); $self->{fields} = []; foreach my $group(@filtersGroup) @@ -636,6 +650,7 @@ $self->{layoutTable}->remove(pop @{$self->{fields}}); $self->{layoutTable}->remove(pop @{$self->{comps}}); $self->{layoutTable}->remove(pop @{$self->{values}}); + delete $self->{isNumeric}->[$self->{nbFields}]; $self->{layoutTable}->resize(--$self->{nbFields}, 3); $self->{remove}->set_sensitive(0) if $self->{nbFields} < 2; } @@ -649,11 +664,21 @@ { my $field = $_->getValue; next if !$field; + my $numeric = 'false'; + if ($self->{model}->{fieldsInfo}->{$field}->{type} eq 'number') + { + $numeric = 'true'; + } + # We check we still have the same field in case it was changed + elsif ($self->{isNumeric}->[$i]->[0] eq $field) + { + $numeric = $self->{isNumeric}->[$i]->[1]; + } push @info, { field => $field, value => $self->{values}->[$i]->getValue, filter => [$self->{comps}->[$i]->getValue, - $self->{model}->{fieldsInfo}->{$field}->{type} eq 'number', + $numeric, undef] } if ! $self->{values}->[$i]->isEmpty; @@ -665,10 +690,18 @@ sub initSearch { my ($self, $filter) = @_; - $self->{testAnd}->set_active(($filter->{mode} eq 'and') ? 1 : 0); + if ($filter->{mode} eq 'and') + { + $self->{testAnd}->set_active(1); + } + elsif ($filter->{mode} eq 'or') + { + $self->{testOr}->set_active(1); + } $self->{useCase}->set_active($filter->{case}); $self->{ignoreDiacritics}->set_active($filter->{ignoreDiacritics}); $self->removeItem while $self->{nbFields} > 1; + $self->{isNumeric} = []; my $first = 1; foreach my $line(@{$filter->{info}}) { @@ -677,6 +710,8 @@ $self->{fields}->[-1]->setValue($line->{field}); $self->{comps}->[-1]->setValue($line->{filter}->[0]); $self->{values}->[-1]->setValue($line->{value}); + # We also add the field name to be able to check it later + push @{$self->{isNumeric}}, [$line->{field}, $line->{filter}->[1]]; } } @@ -875,7 +910,7 @@ $self->vbox->pack_start($allTable,1,1,0); - $self->set_size_request(-1, 450); + $self->set_size_request(-1, 400); return $self; } diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/GCExportBase.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/GCExportBase.pm --- gcstar-1.4.3/lib/gcstar/GCExport/GCExportBase.pm 2008-08-27 19:35:38.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/GCExportBase.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/GCExportCSV.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/GCExportCSV.pm --- gcstar-1.4.3/lib/gcstar/GCExport/GCExportCSV.pm 2008-07-17 18:30:57.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/GCExportCSV.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/GCExportHTML.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/GCExportHTML.pm --- gcstar-1.4.3/lib/gcstar/GCExport/GCExportHTML.pm 2008-07-17 18:30:57.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/GCExportHTML.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/GCExportSQL.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/GCExportSQL.pm --- gcstar-1.4.3/lib/gcstar/GCExport/GCExportSQL.pm 2008-07-17 18:30:57.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/GCExportSQL.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/GCExportTarGz.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/GCExportTarGz.pm --- gcstar-1.4.3/lib/gcstar/GCExport/GCExportTarGz.pm 2008-07-17 18:46:57.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/GCExportTarGz.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/GCExportTellico.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/GCExportTellico.pm --- gcstar-1.4.3/lib/gcstar/GCExport/GCExportTellico.pm 2008-07-17 18:30:57.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/GCExportTellico.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/GCExportXML.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/GCExportXML.pm --- gcstar-1.4.3/lib/gcstar/GCExport/GCExportXML.pm 2008-07-17 18:30:57.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/GCExportXML.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/.svn/entries --- gcstar-1.4.3/lib/gcstar/GCExport/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/.svn/entries 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,300 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/lib/gcstar/GCExport +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +GCExportBase.pm +file + + + + +2009-11-21T08:50:57.608394Z +77a345a4c6e3bf5f5e566f308fa2fdf5 +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +10191 + +GCExportCSV.pm +file + + + + +2009-11-21T08:50:57.608394Z +d86ec8c0d1a2b9237f9ddfeb3dae3cad +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +4466 + +GCExportTellico.pm +file + + + + +2009-11-21T08:50:57.608394Z +323ed79ae4850adc197b69d6e56c19ef +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +14354 + +GCExportLatex.pm +file + + + + +2009-11-21T08:50:57.612383Z +b5ac260cc3593a511ec16cbe280c3c1f +2007-11-04T11:59:39.000000Z +1033 +tian + + + + + + + + + + + + + + + + + + + + + +5686 + +GCExportSQL.pm +file + + + + +2009-11-21T08:50:57.612383Z +483f57ca1f21d14626560666bd766440 +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +3940 + +GCExportXML.pm +file + + + + +2009-11-21T08:50:57.612383Z +d110a617eac47a7a1ac4e6e737689964 +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +7405 + +GCExportHTML.pm +file + + + + +2009-11-21T08:50:57.612383Z +fd98ed237e4fdf6ceaf11671eccf584a +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +17337 + +GCExportTarGz.pm +file + + + + +2009-11-21T08:50:57.612383Z +19018c2843235cff0210b005e8c13d99 +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +5138 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportBase.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportBase.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportBase.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportBase.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,362 @@ +package GCExport::GCExportBase; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCExportImport; + +{ + package GCExport::GCExportBaseClass; + + use base 'GCExportImportBase'; + + use File::Basename; + use File::Copy; + use GCUtils 'glob'; + + #Methods to be overriden in specific classes + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new; + + bless ($self, $class); + return $self; + } + + sub getSuffix + { + return ''; + } + + sub getModels + { + return []; + } + + sub needsUTF8 + { + return 0; + } + + sub getOptions + { + } + + sub wantsDirectorySelection + { + return 0; + } + + sub wantsFieldsSelection + { + return 0; + } + + sub wantsImagesSelection + { + return 0; + } + + sub wantsFileSelection + { + return 1; + } + + sub getHeader + { + } + + sub getItem + { + } + + sub getFooter + { + } + + sub postProcess + { + } + + sub preProcess + { + } + + sub getEndInfo + { + } + + sub wantsOsSeparator + { + return 1; + } + + sub wantsSort + { + return 0; + } + + sub getNewPictureHeight + { + return 0; + } + + #End of methods to be overriden + + sub getUniqueImageFileName + { + my ($self, $suffix, $dir, $title) = @_; + + return $self->{options}->{parent}->getUniqueImageFileName($suffix, $title, $dir); + } + + sub duplicatePicture + { + my ($self, $orig, $field, $dir, $title, $newHeight) = @_; + $self->{saved}->{$field} = $orig; + my $newPic = $orig; + if ($orig && $self->{options}->{withPictures}) + { + $newPic = GCUtils::getDisplayedImage($orig, + $self->{options}->{defaultImage}, + $self->{original}); + if ($newPic eq $self->{options}->{defaultImage}) + { + $newPic = $self->{defaultImage}; + } + else + { + $newPic =~ /.*?(\.[^.]*)$/; + my $suffix = $1; + my $dest = $self->getUniqueImageFileName($suffix, + $dir, + $title); + my $picHeight = $self->getNewPictureHeight; + if ($picHeight) + { + my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file($newPic); + my ($width, $height) = ($pixbuf->get_width, $pixbuf->get_height); + my $picWidth = $width * ($picHeight / $height); + $pixbuf = GCUtils::scaleMaxPixbuf($pixbuf, $picWidth, $picHeight, 1); + my $format; + if ($suffix =~ /png/i) + { + $format = 'png'; + } + else + { + $dest =~ s/\.[^.]*$/\.jpg/; + $format = 'jpeg'; + } + $pixbuf->save($dest, $format); + } + else + { + copy($newPic, $dest); + } + $newPic = basename($dir).'/'.basename($dest); + } + } + else + { + $newPic = basename($dir).'/'.basename($self->{options}->{defaultImage}); + } + $newPic =~ s/\//\\/g if ($^O =~ /win32/i) && $self->wantsOsSeparator; + return $newPic; + } + + sub restorePicture + { + my $self = shift; + return $self->{saved}->{image}; + } + + sub restoreInfo + { + my ($self, $info) = @_; + + foreach (keys %{$self->{saved}}) + { + $info->{$_} = $self->{saved}->{$_}; + } + } + + sub transformValue + { + my ($self, $value, $field) = @_; + if ($self->{options}->{fieldsInfo}->{$field}->{type} eq 'image') + { + if ($self->{copyPictures}) + { + $value = $self->duplicatePicture($value, $field, + $self->{dirName}, + $self->{currentItem}->{ + $self->{model}->{commonFields}->{title} + }); + } + return $value; + } + return $self->{options}->{originalList}->transformValue($value, $field); + } + + sub getStockLabel + { + my ($self, $stock) = @_; + my $item = Gtk2::Stock->lookup($stock); + my $label = ''; + ($label = $item->{label}) =~ s/_// + if $item; + return $label; + } + + # If you need really specific processing, you can instead override the process method + sub process + { + my ($self, $options) = @_; + + $self->{saved} = {}; + $self->{currentItem} = undef; + + $self->{options} = $options; + + $options->{file} .= $self->getSuffix + if ($self->getSuffix) + && ($options->{file} !~ /\.\w*$/); + $self->{fileName} = $options->{file}; + $self->{original} = $options->{collection}; + $self->{origDir} = dirname($self->{original}); + $options->{collectionDir} = $self->{origDir}; + + ($self->{dirName} = $self->{fileName}) =~ s/\.[^.]*?$//; + $self->{dirName} .= '_images'; + if ( -e $self->{dirName}) + { + my @images = glob $self->{dirName}.'/*'; + unlink foreach (@images); + rmdir $self->{dirName}; + unlink $self->{dirName} if ( -e $self->{dirName}); + } + if ($self->{options}->{withPictures}) + { + mkdir $self->{dirName}; + #Get a copy of default picture + copy($self->{options}->{defaultImage},$self->{dirName}); + $self->{defaultImage} = basename($self->{dirName}).'/' + .basename($self->{options}->{defaultImage}); + } + + if (! $self->preProcess) + { + return $self->getEndInfo; + } + + my @tmpArray = @{$options->{items}}; + if ($self->wantsSort) + { + my $sorter = $self->{options}->{sorter}; + use locale; + if ($self->{model}->{fieldsInfo}->{$sorter}->{type} eq 'number') + { + @tmpArray = sort { + my $val1 = $a->{$sorter}; + my $val2 = $b->{$sorter}; + return $val1 <=> $val2; + } @tmpArray; + } + elsif ($self->{model}->{fieldsInfo}->{$sorter}->{type} eq 'date') + { + @tmpArray = sort { + my $val1 = GCPreProcess::reverseDate($a->{$sorter}); + my $val2 = GCPreProcess::reverseDate($b->{$sorter}); + return $val1 <=> $val2; + } @tmpArray; + } + else + { + @tmpArray = sort { + my $val1 = uc $self->{options}->{originalList}->transformValue($a->{$sorter}, $sorter); + my $val2 = uc $self->{options}->{originalList}->transformValue($b->{$sorter}, $sorter); + return $val1 cmp $val2; + } @tmpArray; + } + @tmpArray = reverse @tmpArray if $self->{options}->{order} eq 'desc'; + } + + $self->{sortedArray} = \@tmpArray; + + my $header = $self->getHeader($#tmpArray + 1); + my $body = ''; + + my $item; + my $idx = 0; + my $copyPictures = 0; + my @copiedPicturesFields; + if ($self->{options}->{withPictures}) + { + # If we don't specify fields, the pictures will be copied with transform value + # This one is used now + $copyPictures = 1 + if $self->wantsFieldsSelection; + # This one will be used by transform value + $self->{copyPictures} = !$copyPictures; + foreach my $field(@{$self->{options}->{fields}}) + { + push @copiedPicturesFields, $field + if $self->{options}->{fieldsInfo}->{$field}->{type} eq 'image'; + } + } + foreach $item(@tmpArray) + { + $self->{currentItem} = $item; + if ($copyPictures) + { + foreach my $pic(@copiedPicturesFields) + { + $item->{$pic} = $self->duplicatePicture($item->{$pic}, $pic, $self->{dirName}, + $item->{$self->{model}->{commonFields}->{title}}); + } + } + $body .= $self->getItem($item, $idx); + $self->restoreInfo($item); + $idx++; + } + $self->{currentItem} = undef; + my $footer = $self->getFooter($#tmpArray + 1); + + $self->postProcess(\$header, \$body); + + open EXPORTFILE, ">".$options->{file}; + binmode( EXPORTFILE, ':utf8') if $self->needsUTF8; + print EXPORTFILE "$header"; + print EXPORTFILE "$body"; + print EXPORTFILE "$footer"; + close EXPORTFILE; + + return $self->getEndInfo; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportCSV.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportCSV.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportCSV.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportCSV.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,198 @@ +package GCExport::GCExportCSV; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; + +use GCExport::GCExportBase; + +{ + package GCExport::GCExporterCSV; + + use base qw(GCExport::GCExportBaseClass); + use Encode; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + + bless ($self, $class); + return $self; + } + + sub getName + { + my $self = shift; + + return "CSV"; + } + + sub getOptions + { + my $self = shift; + + my $charsets = ''; + my @charsetList = Encode->encodings(':all'); + foreach (@charsetList) + { + $charsets .= $_.','; + } + + return [ + { + name => 'sep', + type => 'short text', + label => 'Separator', + default => ';' + }, + + { + name => 'rep', + type => 'short text', + label => 'Replacement', + default => ',' + }, + + { + name => 'charset', + type => 'options', + label => 'Charset', + valuesList => $charsets, + default => 'utf8', + }, + + { + name => 'withHeader', + type => 'yesno', + label => 'Header', + default => '1' + }, + + ]; + + } + + sub wantsFieldsSelection + { + return 1; + } + + sub wantsImagesSelection + { + return 1; + } + + sub wantsSort + { + return 1; + } + + sub needsUTF8 + { + my $self = shift; + return $self->{options}->{charset} eq 'utf8'; + } + + sub preProcess + { + my $self = shift; + return 1; + } + + sub transformValue + { + my ($self, $value, $field) = @_; + + if ($field) + { + $value = $self->SUPER::transformValue($value, $field); + } + $value =~ s/,+$//; + $value =~ s /$self->{options}->{sep}/$self->{options}->{rep}/g; + $value =~ s/\n|\r//g; + $value =~ s// /g; + $value = encode($self->{options}->{charset}, $value) + if $self->{options}->{charset} ne 'utf8'; + return $value; + } + + sub getHeader + { + my ($self, $number) = @_; + my $result = ''; + + if ($self->{options}->{withHeader}) + { + foreach (@{$self->{options}->{fields}}) + { + #my $column = $self->{options}->{lang}->{FieldsList}->{$_}; + my $column = $self->{model}->{fieldsInfo}->{$_}->{displayed}; + $result .= $self->transformValue($column).$self->{options}->{sep}; + } + $result =~ s/$self->{options}->{sep}$//; + $result .= "\n"; + } + + return $result; + } + + sub getItem + { + my ($self, $item, $number) = @_; + my $result; + foreach (@{$self->{options}->{fields}}) + { + my $value = $item->{$_}; + $result .= $self->transformValue($value, $_).$self->{options}->{sep}; + } + $result =~ s/$self->{options}->{sep}$//; + $result .= "\n"; + + return $result; + } + + sub getFooter + { + my $self = shift; + my $result; + + return $result; + } + + sub postProcess + { + my ($self, $header, $body) = @_; + } + + sub getEndInfo + { + my $self = shift; + my $message; + + return $message; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportHTML.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportHTML.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportHTML.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportHTML.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,574 @@ +package GCExport::GCExportHTML; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; + +use GCExport::GCExportBase; + +{ + package GCExport::GCExporterHTML; + + + use File::Copy; + use File::Basename; + use XML::Simple; + use base qw(GCExport::GCExportBaseClass); + use GCUtils 'glob'; + + our $FieldsList = 'GCSfields'; + our $GroupsList = 'GCSgroups'; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + + $self->{genericModels} = 0; + + bless ($self, $class); + return $self; + } + + sub getName + { + my $self = shift; + + return "HTML"; + } + + sub getSuffix + { + my $self = shift; + + return ".html"; + } + + sub needsUTF8 + { + my $self = shift; + + return 1; + } + + sub getModels + { + my $self = shift; + + return []; + } + + sub setModelsDir + { + my $self = shift; + $self->{genericModelsDir} = $ENV{GCS_SHARE_DIR}.'/html_models/GCstar'; + if ($self->{model}) + { + $self->{modelsDir} = $ENV{GCS_SHARE_DIR}.'/html_models/'.$self->{model}->getName; + if ((! $self->{model}->getName) || (! -e $self->{modelsDir})) + { + $self->{modelsDir} = $self->{genericModelsDir}; + $self->{genericModels} = 1; + } + } + } + + sub getOptions + { + my $self = shift; + $self->{modelsFiles} = ''; + + $self->setModelsDir; + + my $defaultModel = ''; + $self->{isGeneric} = {}; + foreach (glob $self->{modelsDir}.'/*') + { + next if ($_ =~ /\/CVS$/) || ($_ =~ /\.png$/); + (my $mod = basename($_)) =~ s/_/ /g; + $self->{modelsFiles} .= $mod.','; + $defaultModel = $mod if !$defaultModel; + $self->{isGeneric}->{$mod} = $self->{genericModels}; + } + $self->{genericAdded} = 0; + if (!$self->{genericModels}) + { + # Previous one was specific, we also add the generic ones. + foreach (glob $self->{genericModelsDir}.'/*') + { + next if ($_ =~ /\/CVS$/) || ($_ =~ /\.png$/); + (my $mod = basename($_)) =~ s/_/ /g; + + next if exists $self->{isGeneric}->{$mod}; + $self->{modelsFiles} .= $mod.','; + $self->{isGeneric}->{$mod} = 1; + $self->{genericAdded} = 1; + } + } + $self->{modelsFiles} .= 'UseFile,'; + return [ + { + name => 'template', + type => 'options', + label => 'FileTemplate', + valuesList => $self->{modelsFiles}, + default => $defaultModel, + changedCallback => sub {shift; $self->checkFileField(@_)}, + buttonLabel => 'Preview', + buttonCallback => sub {shift; $self->preview(@_)} + }, + + { + name => 'modelFile', + type => 'file', + label => 'TemplateExternalFile', + default => '', + insensitive => 1, + }, + + { + name => 'title', + type => 'short text', + label => 'Title', + default => 'Items list', + }, + + { + name => 'imgHeight', + type => 'number', + label => 'HeightImg', + default => 160, + min => 50, + max => 250, + }, + + { + name => 'withJs', + type => 'yesno', + label => 'WithJS', + default => '1' + }, + + { + name => 'open', + type => 'yesno', + label => 'OpenFileInBrowser', + default => '0' + }, + + ] + } + + sub getNewPictureHeight + { + my $self = shift; + return $self->{options}->{imgHeight}; + } + + sub checkFileField + { + my ($self, $data) = @_; + my ($parent, $list) = @{$data}; + return if ! $parent->{options}->{modelFile}; + my $model = $list->getValue ; + $parent->{options}->{modelFile}->set_sensitive($model eq 'UseFile'); + $parent->{fieldsSelection}->set_sensitive($self->{isGeneric}->{$model}) + if $parent->{fieldsSelection}; + } + + sub preview + { + my ($self, $data) = @_; + my ($parent, $list) = @{$data}; + (my $template = $list->getValue) =~ s/ /_/g; + my $dialog = new Gtk2::Dialog($self->getLang->{Preview}.' - '.$list->getValue, + $parent, + [qw/modal destroy-with-parent/], + 'gtk-ok' => 'ok', + ); + + my $picFile; + if ($self->{isGeneric}->{$template}) + { + $picFile = $self->{genericModelsDir}.'/'.$template.'.png'; + } + else + { + $picFile = $self->{modelsDir}.'/'.$template.'.png'; + } + if (-f $picFile) + { + my $image = Gtk2::Image->new_from_file($picFile); + $image->set_padding(10,10); + $dialog->vbox->pack_start($image,0,0,0); + } + else + { + my $label = new Gtk2::Label; + $label->set_markup(''.$self->getLang->{NoPreview}.''); + $dialog->vbox->pack_start($label,1,1,0); + $dialog->set_default_size(300,300); + } + $dialog->vbox->show_all; + $dialog->run; + $dialog->destroy; + } + + sub wantsFieldsSelection + { + my $self = shift; + return 1; + return $self->{genericAdded} || $self->{genericModels}; + } + + sub wantsImagesSelection + { + return 1; + } + + sub wantsOsSeparator + { + return 0; + } + + sub wantsSort + { + return 1; + } + + sub transformData + { + my ($self, $item, $field, $asATable) = @_; + + my $data = $item->{$field}; + if ($asATable) + { + return '' if !$data; + my $result = ''; + my $i = 1; + foreach (@{$data}) + { + my $class = ($i % 2) ? 'even' : 'odd'; + $result .= " \n"; + foreach my $item(@{$_}) + { + $result .= " $item\n"; + } + $result .= " \n"; + $i++; + } + return $result; + } + else + { + my $value = $self->transformValue($data, $field); + $value =~ s|\n|
|g; + return $value; + } + } + + sub getValues + { + my ($self, $values, $filter) = @_; + my $needFilter = (length($filter) > 2); + my @result; + if ($values eq $GroupsList) + { + # We generate the list of group for the selected fields + my %groups; + foreach (@{$self->{options}->{fields}}) + { + my $group = $self->{options}->{fieldsInfo}->{$_}->{group}; + $groups{$group} = 1; + } + foreach (@{$self->{model}->{groups}}) + { + my $group = $_->{id}; + push @result, $group if $groups{$group}; + } + } + else + { + # We could have a group name or a list of fields types + my $type; + my $group; + foreach (@{$self->{options}->{fields}}) + { + $type = $self->{options}->{fieldsInfo}->{$_}->{type}; + $group = $self->{options}->{fieldsInfo}->{$_}->{group}; + push @result, $_ + if ($type ne 'triple list') + && (($group =~ /^$values$/i) || ($values eq $FieldsList)) + && (!$needFilter || ($needFilter && ($filter =~ /$type/))); + } + } + return \@result; + } + + sub preProcess + { + my $self = shift; + + $self->{errors} = 0; + $self->setModelsDir; + my $template = $self->{options}->{template}; + my $file; + my $model; + if ($template eq 'UseFile') + { + $file = $self->{options}->{modelFile}; + if ( ! -e $file) + { + $self->{errors} = $self->getLang->{ModelNotFound}; + return 0; + } + } + else + { + $template =~ s/ /_/; + if ($self->{isGeneric}->{$template}) + { + $file = $self->{genericModelsDir}.'/'.$self->{options}->{template}; + } + else + { + $file = $self->{modelsDir}.'/'.$self->{options}->{template}; + } + + $file =~ s/"//g; + #" + } + # The problem should only happen when using command line, so a die is enough. + open FILE, $file or die "\nModel $template doesn't exist for this kind of collection"; + binmode(FILE, ':utf8' ); + $model = do { local $/; }; + close FILE; + + if ($model =~ /^/) + { + my $xs = XML::Simple->new; + my $meta = $xs->XMLin($model, + ForceArray => ['field']); + open FILE, $self->{genericModelsDir}.'/'.$meta->{model}; + binmode(FILE, ':utf8' ); + $model = do { local $/; }; + close FILE; + $self->{options}->{fields} = $meta->{fields}->{field}; + } + + if ($self->{options}->{withJs}) + { + $model =~ s/(\[JAVASCRIPT\])|(\[\/JAVASCRIPT\])//gms; + $model =~ s/\[NOJAVASCRIPT\].*?\[\/NOJAVASCRIPT\]//gms; + } + else + { + $model =~ s/\[JAVASCRIPT\].*?\[\/JAVASCRIPT\]//gms; + $model =~ s/(\[NOJAVASCRIPT\])|(\[\/NOJAVASCRIPT\])//gms; + } + + # If collection does not manage lendings, remove the LENDING blocks + $model =~ s|\[LENDING\](.*?)\[/LENDING\]| $self->{model}->{hasLending} ? $1 : '' |ems; + + #Loops + while ($model =~ m/\[LOOP([0-9]+)?\s+values=([^\s]*?)\s+idx=([^\s]*?)(\s+filter=([^\s]*?))?\]\n?(.*?)\n\s*\[\/LOOP\1\]/gms) + { + my $loopNumber = $1; + my $values = $2; + my $index = $3; + my $filter = ','.$5.','; + my $motif = $6; + my $valuesArray = $self->getValues($values, $filter); + my $string; + foreach my $value(@$valuesArray) + { + (my $line = $motif) =~ s/$index/$value/gms; + $string .= $line; + } + $model =~ s/(\n?)\s*\[LOOP$loopNumber\s+values=$values\s+idx=$index(\s+filter=$filter)?\].*?\[\/LOOP$loopNumber\]/$1$string/gms; + } + $model =~ s/TITLE_FIELD/$self->{model}->{commonFields}->{title}/eg; + $model =~ s/COVER_FIELD/$self->{model}->{commonFields}->{cover}/eg; + + $model =~ m{ + \[HEADER\]\n?(.*?)\n?\[\/HEADER\].*? + \[ITEM\]\n?(.*?)\n?\[\/ITEM\].*? + \[FOOTER\]\n?(.*?)\n?\[\/FOOTER\].*? + \[POST\]\n?(.*?)\n?\[\/POST\] + }xms; + $self->{header} = $1; + $self->{item} = $2; + $self->{footer} = $3; + $self->{post} = $4; + return 1; + } + + sub getHeader + { + my ($self, $total) = @_; + + my $result = $self->{header}; + + $self->{total} = $total; + $result =~ s/\$\$PAGETITLE\$\$/$self->{options}->{title}/g; + $result =~ s/\$\$TOTALNUMBER\$\$/$total/g; + $result =~ s/\$\$ITEMS\$\$/$self->{model}->getDisplayedItems/eg; + + #Search form + $result =~ s/\$\$FORM_INPUT\$\$/$self->getLang->{InputTitle}/eg; + $result =~ s/\$\$FORM_SEARCH1\$\$/$self->getLang->{SearchType1}/eg; + $result =~ s/\$\$FORM_SEARCH2\$\$/$self->getLang->{SearchType2}/eg; + $result =~ s/\$\$FORM_SEARCHBUTTON\$\$/$self->getLang->{SearchButton}/eg; + $result =~ s/\$\$FORM_SEARCHTITLE\$\$/$self->getLang->{SearchTitle}/eg; + $result =~ s/\$\$FORM_ALLBUTTON\$\$/$self->getLang->{AllButton}/eg; + $result =~ s/\$\$FORM_ALLTITLE\$\$/$self->getLang->{AllTitle}/eg; + $result =~ s/\$\$FORM_EXPAND\$\$/$self->getLang->{Expand}/eg; + $result =~ s/\$\$FORM_EXPANDTITLE\$\$/$self->getLang->{ExpandTitle}/eg; + $result =~ s/\$\$FORM_COLLAPSE\$\$/$self->getLang->{Collapse}/eg; + $result =~ s/\$\$FORM_COLLAPSETITLE\$\$/$self->getLang->{CollapseTitle}/eg; + + #Labels + $result =~ s/\$\$([a-zA-Z0-9_]*)_LABEL\$\$/$self->{model}->getDisplayedLabel($1)/eg; + + return $result."\n"; + } + + sub getFooter + { + my ($self, $item) = @_; + + my $total = $self->{total}; + my $result = $self->{footer}; + $result =~ s/\$\$PAGETITLE\$\$/$self->{options}->{title}/g; + $result =~ s/\$\$TOTALNUMBER\$\$/$total/g; + $result =~ s/\$\$GENERATOR_NOTE\$\$/$self->getLang->{Note}/eg; + $result =~ s/\$\$BORROWED_ITEMS\$\$/$self->{options}->{lang}->{BorrowedTitle}/g; + + return $result."\n"; + } + + sub getItem + { + my ($self, $item, $idx) = @_; + my $total = $self->{total}; + my $result = $self->{item}; + + #Separator + $result =~ s/\$\$SEPARATOR\$\$/$self->{options}->{lang}->{Separator}/g; + + #Labels that need a special process + $result =~ s/\$\$URL_LABEL\$\$/$self->{options}->{lang}->{PanelWeb}/g; + + #Other labels + $result =~ s/\$\$([a-zA-Z0-9_]*)_LABEL\$\$/$self->{model}->getDisplayedLabel($1)/eg; + + #Fields that need a special process + $result =~ s/\$\$HEIGHT_PIC\$\$/$self->{options}->{imgHeight}/g; + my $url = $item->{$self->{model}->{commonFields}->{url}} || '#'; + $result =~ s/\$\$URL\$\$/$url/g; + + #Borrower + my $borrowerField = $self->{model}->{commonFields}->{borrower}->{name}; + my $tmpBorrower = $item->{$borrowerField}; + my $borrowerFlag = 1; + my $borrowerYesNo = $self->getLang->{Borrowed}; + my $borrowerOrEmpty = $tmpBorrower; + if (!$tmpBorrower || ($tmpBorrower eq 'none')) + { + $tmpBorrower = $self->{options}->{lang}->{PanelNobody}; + $borrowerFlag = 0; + $borrowerYesNo = $self->getLang->{NotBorrowed}; + $borrowerOrEmpty = ''; + } + elsif ($tmpBorrower eq 'unknown') + { + $tmpBorrower = $self->{options}->{lang}->{PanelUnknown}; + } + $result =~ s/\$\$borrower\$\$/$tmpBorrower/g; + $result =~ s/\$\$borrower_OREMPTY\$\$/$borrowerOrEmpty/g; + $result =~ s/\$\$borrower_FLAG\$\$/$borrowerFlag/g; + $result =~ s/\$\$borrower_YESNO\$\$/$borrowerYesNo/g; + + $result =~ s/\$\$IDX\$\$/$idx/g; + $result =~ s/\$\$TOP\$\$/$self->getLang->{Top}/eg; + $result =~ s/\$\$BOTTOM\$\$/$self->getLang->{Bottom}/eg; + $result =~ s/\$\$TOTALNUMBER\$\$/$total/g; + + # Stock labels + $result =~ s/\$\$(gtk-[^\$]*)\$\$/$self->getStockLabel($1)/eg; + + #Multiple list displayed as a table + $result =~ s/\$\$([a-zA-Z0-9_]*)_TABLE\$\$/$self->transformData($item, $1, 1)/eg; + + #Other fields + #$result =~ s/\$\$([A-Z_]*)\$\$/$item->{lc $1}/eg; + $result =~ s/\$\$([a-zA-Z0-9_]*)\$\$/$self->transformData($item, $1, 0)/eg; + return $result."\n"; + } + + sub postProcess + { + my ($self, $headerRef, $bodyRef) = @_; + + #Variables to be used in POST section + my $header = $$headerRef; + my $body = $$bodyRef; + my @items = @{$self->{sortedArray}}; + + eval $self->{post}; + print "Errors with HTML template in POST:\n $@\n" if $@; + + $$headerRef = $header; + $$bodyRef = $body; + } + + sub getEndInfo + { + my $self = shift; + + if ($self->{errors}) + { + return ($self->{errors}, 'error'); + } + + my $message = ''; + + if ($self->{options}->{open}) + { + $self->{options}->{parent}->launch($self->{fileName}, 'url'); + } + else + { + $message = $self->getLang->{InfoFile}.$self->{fileName}; + $message .= ' + +'.$self->getLang->{InfoDir}.$self->{dirName} + if $self->{options}->{withPictures}; + } + + return $message; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportLatex.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportLatex.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportLatex.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportLatex.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,204 @@ +package GCExport::GCExportLatex; +use utf8; + +use strict; + +use GCExport::GCExportBase; + +{ + package GCExport::GCExporterLatex; + + use base qw(GCExport::GCExportBaseClass); + + sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + + bless ($self, $class); + return $self; + } + + sub getName { + my $self = shift; + return "Latex"; + } + + sub getOptions { + my $self = shift; + return [ + { + name => 'one', + type => 'yesno', + label => 'Export One Media', + default => '0', + }, + { + name => 'disc', + type => 'number', + label => '# of Media', + default => '1', + min => '0', + max => '10000', + }, + ]; + + } + + sub wantsFieldsSelection { + return 0; + } + + sub wantsImagesSelection { + return 0; + } + + sub needsUTF8 { + return 1; + } + + sub preProcess { + my $self = shift; + return 1; + } + + sub transformValue { + my ($self, $value, $field) = @_; + + if ($field) { + $value = $self->SUPER::transformValue($value, $field); + } + $value =~ s/,+$//; + $value =~ s/\n|\r//g; + $value =~ s// /g; + $value =~ s/\^/\\^{}/g; + $value =~ s/\&/\\\&/g; + $value =~ s/\"/\'\'/g; + return $value; + } + + sub getHeader { + my ($self, $number) = @_; + my $result = ''; + $result = "\\documentclass[a4paper]{article} +\\usepackage{ucs} +\\usepackage[utf8]{inputenc} +\\usepackage[russian]{babel} +\\usepackage{geometry} +\\geometry{a4paper,top=1cm,bottom=1cm,left=1cm,right=1cm} +\\pagestyle{empty} +\\linespread{0.6} +\\sloppy + +\\newcommand{\\dvd}[2]{ +\\framebox[12cm]{ +\\begin{tabular}{p{0pt}\@{}p{11.9cm}} +\\rule[-6cm]{0pt}{11.7cm}&\\begin{minipage}{11.7cm} +{\\bf DVD #1} +\\begin{itemize} +\\setlength{\\parskip}{-3pt} +#2 +\\end{itemize}\\vspace{-3pt} +\\end{minipage} +\\end{tabular}}} + +\\begin{document} +\\footnotesize +"; + $result .= "\\dvd{$self->{options}->{disc}}{\n" + if $self->{options}->{one}; + return $result; + } + + sub getItem { + my ($self, $item, $number) = @_; + my $result; + return '' if ($self->{options}->{one} && + $item->{number} ne $self->{options}->{disc}); + $result .= '\item {\bf ' . $self->transformValue ($item->{title}, "title") . "}"; + $result .= ' / ' . $self->transformValue ($item->{original}, 'original') if $item->{original}; + $result .= " ($item->{date})" if $item->{date}; + # one line for russian cartoons + if ($self->transformValue ($item->{genre}, 'genre') =~ + m/Мультфильм/) { + $result .= ' м/ф'; + } elsif ($item->{genre} || $item->{director} || + $item->{audio} || $item->{time}) { + $result .= "\\\\\n\\begin{tabular}{ll}\n"; + $result .= $self->getLocal('genre') . ': & ' . + $self->transformValue ($item->{genre}, 'genre') . '\\\\' + if $item->{genre}; + $result .= $self->getLocal('director') . ": & $item->{director}\\\\" + if $item->{director}; + my $audio = $self->transformValue ($item->{audio}, 'audio') + if $item->{audio}; + $audio =~ s/\([\w\ ]+\)//g; + $audio =~ s/\([\w\ ]+\)//g; + $audio =~ s/\ ,/,/g; + $audio =~ s/\s+$//g; + $result .= $self->getLocal('audio') . ": & $audio" if length ($audio) > 0; + $result .= "; " . $self->transformValue ($item->{subt}, 'subt') . + ' (' . $self->getLocal('subt') . ')' + if $item->{subt}; + $result .= '\\\\'; + $result .= $self->getLocal('time') . ": & $item->{time} мин.\\\\" if $item->{time}; + $result .= $self->getLocal('country') . ": & $item->{country}" if $item->{country}; + $result .= "\n\\end{tabular}\n"; + } + # don't include information about media # 0 + if ((!$self->{options}->{one}) && $item->{number} != 0) { + $self->{expdata}->{$item->{number}} .= $result; + $self->{expdata}->{all} .= $self->{expdata}->{all} ? ',' . $item->{number} : $item->{number} if $self->{expdata}->{all} !~ m/$item->{number}/; + return ''; + } elsif ($self->{options}->{one}) { + return $result; + } + return ''; + } + + sub getFooter { + my $self = shift; + my $result = ''; + if ($self->{options}->{one}) { + $result = "\n}\n\\end{document}\n"; + } else { + my @data = split (/,/, $self->{expdata}->{all}); + foreach my $key (sort @data) { + $result .= "\n\n\\dvd{$key}{\n$self->{expdata}->{$key}}"; + } + $result .= "\n\\end{document}\n"; + } + return $result; + } + + sub getLocal { + my ($self, $name) = @_; + # some abbreviations for russian language + if ($self->{options}->{lang}->{LangName} eq "Russian") { + return "Реж." if $name eq "director"; + return "Звук" if $name eq "audio"; + return "Время" if $name eq "time"; + return "суб." if $name eq "subt"; + return $self->{model}->getDisplayedLabel($name); + } else { + return $self->{model}->getDisplayedLabel($name); + } + } + + sub getModels { + return ['GCfilms']; + } + + sub postProcess { + my ($self, $header, $body) = @_; + } + + sub getEndInfo { + my $self = shift; + my $message; + + return $message; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportSQL.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportSQL.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportSQL.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportSQL.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,172 @@ +package GCExport::GCExportSQL; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; + +use GCExport::GCExportBase; + +{ + package GCExport::GCExporterSQL; + use base qw(GCExport::GCExportBaseClass); + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + + + bless ($self, $class); + return $self; + } + + sub getSuffix + { + my $self = shift; + + return ""; + } + + sub getOptions + { + my $self = shift; + + return [ + { + name => 'table', + type => 'short text', + label => 'TableName', + default => 'items' + }, + { + name => 'withDrop', + type => 'yesno', + label => 'WithDrop', + default => '1' + }, + { + name => 'withCreate', + type => 'yesno', + label => 'WithCreate', + default => '1' + }, + ] + } + + sub wantsFieldsSelection + { + return 1; + } + + sub wantsImagesSelection + { + return 1; + } + + sub getName + { + my $self = shift; + + return "SQL"; + } + + sub preProcess + { + my $self = shift; + return 1; + } + + sub getHeader + { + my ($self, $number) = @_; + + my $result = ''; + + if ($self->{options}->{withDrop}) + { + $result .= 'DROP TABLE '.$self->{options}->{table}.";\n"; + } + if ($self->{options}->{withCreate}) + { + $result .= 'CREATE TABLE '.$self->{options}->{table}.' ('; + + foreach (@{$self->{options}->{fields}}) + { + my $type = $self->{model}->{fieldsInfo}->{$_}->{type}; + my $format = 'TEXT'; + $format = 'NUMBER' if ($type eq 'number') || ($type eq 'yesno'); + $result .= "$_ $format, "; + } + $result =~ s/, $//; + $result .= ");\n"; + } + + return $result; + } + + sub getFooter + { + my $self = shift; + + my $result = "COMMIT;\n"; + return $result; + } + + sub getItem + { + my ($self, $item, $number) = @_; + my $result; + + $result = 'INSERT INTO '.$self->{options}->{table}.' ('; + my $values = ''; + foreach (@{$self->{options}->{fields}}) + { + $result .= "$_, "; + my $value = $self->transformValue($item->{$_}, $_); + $value =~ s/'/''/g; + #' + $values .= "'".$value."', "; + } + $result =~ s/, $//; + $values =~ s/, $//; + + $result .= ") VALUES ($values);\n"; + return $result; + } + + sub postProcess + { + my ($self, $value, $body) = @_; + + } + + sub getEndInfo + { + my $self = shift; + my $message = $self->getLang->{InfoFile}.$self->{fileName}; + return $message; + } +} + +1; \ No newline at end of file diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportTarGz.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportTarGz.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportTarGz.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportTarGz.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,174 @@ +package GCExport::GCExportTarGz; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; + +use GCExport::GCExportBase; + +{ + package GCExport::GCExporterTarGz; + + use File::Copy; + use File::Basename; + use Cwd; + use XML::Simple; + use GCUtils 'glob'; + use GCBackend::GCBackendXmlParser; + use base qw(GCExport::GCExportBaseClass); + + sub new + { + my ($proto, $parent) = @_; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new($parent); + bless ($self, $class); + + $self->checkModule('Compress::Zlib'); + $self->checkModule('Archive::Tar'); + + return $self; + } + + sub wantsOsSeparator + { + return 0; + } + + sub transformPicturePath + { + my ($self, $path, $file, $item, $field) = @_; + return $self->duplicatePicture($path, + $field, + $self->{currentDir}.'/'.$self->{imageDir}, + $item->{$self->{model}->{commonFields}->{title}}); + } + + sub process + { + my ($self, $options) = @_; + $self->{parsingError} = ''; + $self->{options} = $options; + $self->{options}->{withPictures} = 1; + $self->{fileName} = $options->{file}; + $self->{fileName} .= '.tar.gz' if ($self->{fileName} !~ m/\.tar\.gz$/); + + my $listFile = 'collection.gcs'; + my $baseDir = 'tmp_items_tar_gz'; + my $imagesSubDir = 'images'; + $self->{imageDir} = $baseDir.'/'.$imagesSubDir; + $self->{original} = $options->{collection}; + #$self->{original} =~ s/\\/\//g if ($^O =~ /win32/i); + $self->{origDir} = dirname($self->{original}); + (my $tarfile = $self->{fileName}) =~ s/\.gz$//; + + eval { + chdir dirname($self->{fileName}); + die 'Directory not writable' if !-w '.'; + mkdir $baseDir; + mkdir $self->{imageDir}; + + $self->{currentDir} = getcwd; + + my $backend = new GCBackend::GCBeXmlParser($self); + $backend->setParameters(file => $baseDir.'/'.$listFile, + version => $self->{options}->{parent}->{version}, + wantRestore => 1, + standAlone => 1); + + my $result = $backend->save($options->{items}, + $options->{originalList}->getInformation, + undef); + + if ($result->{error}) + { + die $result->{error}->[1]; + } + + chdir $self->{currentDir}; + + my $tar = Archive::Tar->new(); + chdir $baseDir; + + $tar->add_files($listFile, $imagesSubDir); + my @images = glob $imagesSubDir.'/*'; + $tar->add_files($_) foreach (@images); + $tar->write($tarfile); + + my $gz = Compress::Zlib::gzopen($self->{fileName}, "wb"); + $gz or die 'Cannot write'; + open(TAR, $tarfile) or die "Cannot open $tarfile"; + binmode(TAR); + my $buff; + while (read(TAR, $buff, 8 * 2**10)) + { + $gz->gzwrite($buff); + } + $gz->gzclose; + close TAR; + unlink foreach (@images); + }; + + if ($@) + { + $self->{parsingError} = GCUtils::formatOpenSaveError( + $self->{options}->{parent}->{lang}, + $self->{fileName}, + ['SaveError', $@] + ); + } + + eval { + unlink $listFile; + rmdir $imagesSubDir; + chdir '..'; + rmdir $baseDir; + $tarfile =~ s/\\/\//g if ($^O =~ /win32/i); + unlink $tarfile; + }; + return $self->getEndInfo; + } + + sub getOptions + { + my $self = shift; + my @options; + return \@options; + } + + sub getName + { + my $self = shift; + + return ".tar.gz"; + } + + sub getEndInfo + { + my $self = shift; + return ($self->{parsingError}, 'error') + if $self->{parsingError}; + + return ($self->getLang->{Info}.$self->{fileName}, 'info'); + } +} diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportTellico.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportTellico.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportTellico.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportTellico.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,512 @@ +package GCExport::GCExportTellico; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; + +use GCExport::GCExportBase; + +{ + package GCExport::GCExporterTellico; + + use base qw(GCExport::GCExportBaseClass); + use GCUtils; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + bless ($self, $class); + + $self->checkModule('MIME::Base64'); + $self->checkModule('Digest::MD5'); + + #List of collections: http://www.periapsis.org/tellico/doc/collection-type-values.html + # [ entryTitle, type, extra fields ] + $self->{models} = { + GCbooks => ['Books', '2', ''], + GCfilms => ['Videos', '3', ''], + GCmusics => ['Music', '4', ''], + GCcoins => ['Coin', '8', ''], + GCgames => ['Games', '11', ''] + }; + + return $self; + } + + sub getName + { + my $self = shift; + + return "Tellico"; + } + + sub getModels + { + my $self = shift; + + my @models = keys %{$self->{models}}; + return \@models; + } + + sub needsUTF8 + { + my $self = shift; + + return 1; + } + + sub getOptions + { + my $self = shift; + + return []; + } + + sub wantsFieldsSelection + { + return 0; + } + + sub preProcess + { + my $self = shift; + + $self->{imagesInfos} = {}; + return 1; + } + + sub getHeader + { + my ($self, $number) = @_; + my $result; + + my $model = $self->{model}; + my $title = $model->getDescription; + my $info = $self->{models}->{$model->getName}; + + $result = ' + + + + + + '.$info->[2].' + +'; + + return $result; + } + + sub transformData + { + my ($self, $data) = @_; + + $data =~ s/&/&/g; + + return $data; + } + + sub transformList + { + my ($self, $list, $tag) = @_; + + my $result = ''; + if (ref($list) eq 'ARRAY') + { + foreach (@{$list}) + { + $result .= " <$tag>".$self->transformData($_->[0]) + ."\n"; + } + } + else + { + foreach (split ',', $list) + { + s/;.*$//; + $result .= " <$tag>".$self->transformData($_)."\n"; + } + } + return $result; + } + + sub encodeImage + { + my ($self, $file) = @_; + my $image = GCUtils::getDisplayedImage($file, $self->{options}->{defaultImage}, $self->{original}); + (my $suffix = $image) =~ s/.*?\.([^.]*)$/$1/; + $suffix = 'jpeg' if $suffix eq 'jpg'; + open PIC, "<$image" or return (undef,undef,undef); + my $data = do {local $/; }; + close PIC; + my $pictureId = Digest::MD5::md5_hex($data).'.'.$suffix; + my %infos; + $infos{id} = $pictureId; + $infos{format} = uc $suffix; + $infos{width} = 120; + $infos{height} = 160; + $infos{data} = MIME::Base64::encode_base64($data); + return \%infos; + } + + sub getItem + { + my ($self, $item, $number) = @_; + + my $methodName = 'get'.$self->{model}->getName.'Item'; + + return $self->$methodName($item); + } + + sub getGCfilmsItem + { + my ($self, $movie, $number) = @_; + my $result; + + #(my $synopsis = $movie->{synopsis}) =~ s/
/\n/gm; + #(my $comments = $movie->{comment}) =~ s/
/\n/gm; + + use integer; + my $rating = $movie->{rating} / 2; + no integer; + + my $age = $movie->{age}; + my $certification; + + if ($age == 1) + { + $certification = 'U (USA)'; + } + elsif ($age == 2) + { + $certification = 'G (USA)'; + } + elsif ($age <= 5) + { + $certification = 'PG (USA)'; + } + elsif ($age <= 13) + { + $certification = 'PG-13 (USA)'; + } + elsif ($age <= 17) + { + $certification = 'R (USA)'; + } + + my $imageInfos = $self->encodeImage($movie->{image}); + $self->{imagesInfos}->{$imageInfos->{id}} = $imageInfos; + + my $year = GCPreProcess::extractYear($movie->{date}); + + $result = ' + '.$self->transformData($movie->{title}).' + '.$self->transformData($movie->{format}).' + '.$year.' + '.$certification.' + +'; + $result .= $self->transformList($movie->{genre}, 'genre'); + $result .= ' + + '.$self->transformData($movie->{country}).' + + +'; + foreach (split ',', $movie->{actors}) + { + $result .= " ".$self->transformData($_)."\n"; + } + $result .= ' + + '.$self->transformData($movie->{director}).' + + +'; + $result .= $self->transformList($movie->{audio}, 'language'); + $result .= ' + '.$self->transformData($movie->{time}).' + '.$self->transformData($movie->{synopsis}).' + '.$rating.' + '.$self->transformData($movie->{comments}).' +'; + if (($movie->{borrower}) && ($movie->{borrower} ne 'none')) + { + $result .= ' true +'; + } + + $result .= ' '.$imageInfos->{id}.' +'; + + $result .= ' +'; + + return $result; + } + + sub getGCgamesItem + { + my ($self, $item, $number) = @_; + my $result; + + use integer; + my $rating = $item->{rating} / 2; + no integer; + + my $imageInfos = $self->encodeImage($item->{boxpic}); + $self->{imagesInfos}->{$imageInfos->{id}} = $imageInfos; + + my $year = GCPreProcess::extractYear($item->{released}); + + $result = ' + '.$self->transformData($item->{name}).' + '.$self->transformData($item->{platform}).' + '.$self->transformData($item->{description}).' + '.$year.' + '.$self->transformData($item->{added}).' + +'; + $result .= $self->transformList($item->{genre}, 'genre'); + $result .= ' + + '.$self->transformData($item->{editor}).' + + '.$rating.' +'; + if (($item->{borrower}) && ($item->{borrower} ne 'none')) + { + $result .= ' true +'; + } + if ($item->{completion} >= 100) + { + $result .= ' true +'; + } + + $result .= ' '.$imageInfos->{id}.' +'; + + $result .= ' +'; + + return $result; + } + + sub getGCbooksItem + { + my ($self, $item, $number) = @_; + my $result; + + use integer; + my $rating = $item->{rating} / 2; + no integer; + + my $imageInfos = $self->encodeImage($item->{cover}); + $self->{imagesInfos}->{$imageInfos->{id}} = $imageInfos; + + my $year = GCPreProcess::extractYear($item->{publication}); + + $result = ' + '.$self->transformData($item->{title}).' + '.$self->transformData($item->{isbn}).' + '.$self->transformData($item->{serie}).' + '.$self->transformData($item->{edition}).' + '.$self->transformData($item->{format}).' + '.$self->transformData($item->{description}).' + '.$self->transformData($item->{pages}).' + '.$self->transformData($item->{acquisition}).' + '.$year.' + '.$self->transformData($item->{publisher}).' + +'; + $result .= $self->transformList($item->{authors}, 'author'); + $result .= ' + +'; + $result .= $self->transformList($item->{language}, 'language'); + $result .= ' + +'; + $result .= $self->transformList($item->{genre}, 'genre'); + $result .= ' + '.$rating.' +'; + if (($item->{borrower}) && ($item->{borrower} ne 'none')) + { + $result .= ' true +'; + } + if ($item->{read}) + { + $result .= ' true +'; + } + + $result .= ' '.$imageInfos->{id}.' +'; + + $result .= ' +'; + + return $result; + } + + sub getGCmusicsItem + { + my ($self, $item, $number) = @_; + my $result; + + use integer; + my $rating = $item->{rating} / 2; + no integer; + + my $imageInfos = $self->encodeImage($item->{cover}); + $self->{imagesInfos}->{$imageInfos->{id}} = $imageInfos; + + my $year = GCPreProcess::extractYear($item->{release}); + + $result = ' + '.$self->transformData($item->{title}).' + '.$self->transformData($item->{format}).' + '.$year.' + + '.$self->transformData($item->{comment}).' + +'; + $result .= $self->transformList($item->{artist}, 'artist'); + $result .= ' + +'; + $result .= $self->transformList($item->{genre}, 'genre'); + $result .= ' + '.$rating.' + '; + foreach (@{$item->{tracks}}) + { + $result .= ' + + '.$self->transformData($_->[1]).' + '.$self->transformData($item->{artist}).' + '.$self->transformData($_->[2]).' + ' + } + $result .= ' + +'; + + + if (($item->{borrower}) && ($item->{borrower} ne 'none')) + { + $result .= ' true +'; + } + $result .= ' '.$imageInfos->{id}.' +'; + + $result .= ' +'; + + return $result; + } + + sub getGCcoinsItem + { + my ($self, $item, $number) = @_; + my $result; + + my $frontInfos = $self->encodeImage($item->{front}); + $self->{imagesInfos}->{$frontInfos->{id}} = $frontInfos; + my $backInfos = $self->encodeImage($item->{back}); + $self->{imagesInfos}->{$backInfos->{id}} = $backInfos; + + $result = ' + '.$self->transformData($item->{name}).' + '.$self->transformData($item->{currency}).' + '.$self->transformData($item->{value}).' + '.$self->transformData($item->{year}).' + '.$self->transformData($item->{country}).' + '.(($item->{type} eq 'coin') ? 'true' : 'false').' + '.$self->transformData($item->{added}).' + '.$self->transformData($item->{estimate}).' + '.$self->transformData($item->{location}).' + '.$self->transformData($item->{comments}).' + '.$frontInfos->{id}.' + '.$backInfos->{id}.' + +'; + return $result; + } + + sub getFooter + { + my $self = shift; + my $result; + + $result = ' +'; + foreach (values %{$self->{imagesInfos}}) + { + $result .= ' '. + $_->{data}.''; + } + $result .=' +
+
+'; + + return $result; + } + + # postProcess + # Called after all processing. Use it if you need to perform extra stuff on the header. + # $header is a reference to the header string. + sub postProcess + { + my ($self, $header, $body) = @_; + + # Your code here + # As header is a reference, it can be modified on place with $$header + } + + # getEndInfo + # Used to display some information to user when export is ended. + # To localize your message, use $self->{options}->{lang}. + # Returns a string that will be displayed in a message box. + sub getEndInfo + { + my $self = shift; + my $message; + + # Your code here + # Don't do put anything in message if you don't want information to be displayed. + + return $message; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportXML.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportXML.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExport/.svn/text-base/GCExportXML.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport/.svn/text-base/GCExportXML.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,287 @@ +package GCExport::GCExportXML; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; + +use GCExport::GCExportBase; + +{ + package GCExport::GCExporterXML; + use base qw(GCExport::GCExportBaseClass); + + use File::Basename; + use GCUtils 'glob'; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + + + bless ($self, $class); + return $self; + } + + sub transformValue + { + my ($self, $value, $field) = @_; + + $value = $self->SUPER::transformValue($value, $field); + $value =~ s/&(\W)/&$1/g; + $value =~ s/"/"/g; + #" + $value =~ s/'/'/g; + #' + return $value; + } + + sub getName + { + my $self = shift; + + return "XML"; + } + + sub getSuffix + { + my $self = shift; + + return ""; + } + + sub needsUTF8 + { + my $self = shift; + + return 1; + } + + sub getOptions + { + my $self = shift; + + $self->{modelsFiles} = ''; + + if ($self->{model}->getName) + { + $self->{modelsDir} = $ENV{GCS_SHARE_DIR}.'/xml_models/'.$self->{model}->getName; + foreach (glob $self->{modelsDir}.'/*') + { + next if $_ =~ /\/CVS$/; + (my $mod = basename($_)) =~ s/_/ /g; + $self->{modelsFiles} .= ','.$mod; + } + } + + return [ + { + name => 'models', + type => 'options', + label => 'Models', + default => 'UseModel', + valuesList => 'UseModel,UseFile'.$self->{modelsFiles} + }, + + { + name => 'templatefile', + type => 'file', + label => 'ModelFile', + default => '' + }, + + { + name => 'model', + type => 'long text', + label => 'ModelText', + default => '', + height => 100 + }, + + ]; + } + + sub wantsFieldsSelection + { + return 0; + } + + sub wantsImagesSelection + { + return 1; + } + + sub preProcess + { + my $self = shift; + + my $model; + + if ($self->{options}->{models} eq 'UseModel') + { + $model = $self->{options}->{model}; + } + else + { + my $file; + if ($self->{options}->{models} eq 'UseFile') + { + $file = $self->{options}->{templatefile}; + } + else + { + (my $fileName = $self->{options}->{models}) =~ s/ /_/g; + $file = $self->{modelsDir}.'/'.$fileName; + $file =~ s/"//g; + #" + } + open FILE, $file; + #Read full file + $model = do { local $/; }; + close FILE; + } + $model =~ m{ + \[HEADER\]\n?(.*?)\n?\[\/HEADER\].*? + \[ITEM\]\n?(.*?)\n?\[\/ITEM\].*? + \[FOOTER\]\n?(.*?)\n?\[\/FOOTER\] + }xms; + $self->{header} = $1; + $self->{item} = $2; + $self->{footer} = $3; + return 1; + } + + sub getHeader + { + my ($self, $number) = @_; + my $result = $self->{header}; + + $result =~ s/\$\{file\}/$self->{options}->{collection}/g; + $result =~ s/\$\{number\}/$number/g; + + return $result."\n"; + } + + sub getItem + { + my ($self, $item, $number) = @_; + my $result = $self->{item}; + + while ($result =~ m/\[LOOP\s+(.*?)\]\n?(.*?)\n\s*\[\/LOOP\]/gms) + { + my $values = $self->transformValue($item->{$1}, $1); + my $motif = $2; + my $string; + foreach my $value(split /,/, $values) + { + $value =~ s/^\s*//; + (my $line = $motif) =~ s/\$\$/$value/gms; + $string .= $line; + } + $result =~ s/(\n?)\s*\[LOOP\s+$1\].*?\[\/LOOP\]/$1$string/gms; + } + + while ($result =~ m/\[SPLIT\s+value=(.*?)\s+sep=(.)\]\n?(.*?)\n\s*\[\/SPLIT\]/gms) + { + my $values = $1; + $values = $item->{$values} if exists $item->{$values}; + $values = $self->transformValue($values, $1); + my $sep = ${2}; + my $motif = ${3}; + my $i = 0; + foreach my $value(split /$sep/, $values) + { + $value =~ s/^\s*//; + $motif =~ s/\$$i/$value/gms; + $i++; + } + do {$motif =~ s/\s*\$[0-9]+//mgs;}; + $result =~ s/(\n?)\s*\[SPLIT\s+value=\Q$1\E\s+sep=($sep)\].*?\[\/SPLIT\]/$1$motif/gms; + } + + foreach (keys %$item) + { + my $value = $self->transformValue($item->{$_}, $_); + $result =~ s/\$\{$_\}/$value/g; + } + + if ($item->{time}) + { + my $min = 0; + my $time = $item->{time}; + $min = ($1 * 60) + $2 if ($time =~ /([0-9]*)h\.?\s+([0-9]*)m/) + || ($time =~ /([0-9]*):([0-9]*)/); + $min = $1 if !$min && ($time =~ /([0-9]*)/); + $result =~ s/\$\{length\}/$min/g; + } + + if ($item->{date}) + { + my $year = 0; + $item->{date} =~ /([0-9]{4})/; + $year = $1; + $result =~ s/\$\{year\}/$year/g; + } + + $result =~ s/\$\{.*?\}//g; + + return $result."\n"; + } + + sub getFooter + { + my $self = shift; + my $result = $self->{footer}; + + return $result."\n"; + } + + # postProcess + # Called after all processing. Use it if you need to perform extra stuff on the header. + # $header is a reference to the header string. + sub postProcess + { + my ($self, $header, $body) = @_; + + # Your code here + # As header is a reference, it can be modified on place with $$header + } + + # getEndInfo + # Used to display some information to user when export is ended. + # To localize your message, use $self->{options}->{lang}. + # Returns a string that will be displayed in a message box. + sub getEndInfo + { + my $self = shift; + my $message; + + # Your code here + # Don't do put anything in message if you don't want information to be displayed. + + return $message; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExportImport.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExportImport.pm --- gcstar-1.4.3/lib/gcstar/GCExportImport.pm 2008-08-27 19:59:09.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExportImport.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -252,12 +252,18 @@ { $widget = new GCCheckBox($label); $self->{optionsTable}->attach($widget, 0, 2, $row, $row + 1, 'fill', 'fill', 0, 0); + if ($option->{changedCallback}) + { + $widget->signal_connect('toggled' => $option->{changedCallback}, [$self,$widget]); + push @widgetSignals, [$widget, 'toggled']; + } } elsif ( ($type eq 'short text') || ($type eq 'long text') || ($type eq 'number') || ($type eq 'options') || - ($type eq 'file')) + ($type eq 'file') || + ($type eq 'history text')) { my $labelWidget = GCLabel->new($label); $self->{optionsTable}->attach($labelWidget, 0, 1, $row, $row + 1, 'fill', 'fill', 0, 0); @@ -275,6 +281,7 @@ elsif ($type eq 'number') { $widget = new GCNumeric($value, $option->{min}, $option->{max}, $option->{step}); + } elsif ($type eq 'file') { @@ -284,16 +291,35 @@ { $widget = new GCMenuList; my @valuesList; - my @values = split m/,/, $option->{valuesList}; - foreach (@values) + if (UNIVERSAL::isa( $option->{valuesList}, "HASH" )) + { + foreach $value(keys %{$option->{valuesList}}) + { + my $item = { + value => $value, + displayed => $option->{valuesList}->{$value} + }; + $item->{displayed} = $module->getLang->{$item->{displayed}} + if ($module->getLang->{$item->{displayed}}); + push @valuesList, $item; + } + } + else { - my $item = { - value => $_, - displayed => $_ - }; - $item->{displayed} = $module->getLang->{$_} - if ($module->getLang->{$_}); - push @valuesList, $item; + my @values; + @values=split m/,/,$option->{valuesList} if(scalar($option->{valuesList})); + @values=@{$option->{valuesList}} if (UNIVERSAL::isa( $option->{valuesList}, "ARRAY" )); + print ref $option->{valuesList}; + foreach $value(@values) + { + my $item = { + value => $value, + displayed => $value + }; + $item->{displayed} = $module->getLang->{$item->{displayed}} + if ($module->getLang->{$item->{displayed}}); + push @valuesList, $item; + } } $widget->setValues(\@valuesList); if ($option->{changedCallback}) @@ -302,6 +328,17 @@ push @widgetSignals, [$widget, 'changed']; } } + elsif ($type eq 'history text') + { + $widget = new GCHistoryText; + my @initValues = @{$option->{initValues}} if $option->{initValues}; + $widget->setValues(\@initValues); + } + if ($option->{changedCallback}) + { + $widget->signal_connect('changed' => $option->{changedCallback}, [$self,$widget]); + push @widgetSignals, [$widget, 'changed']; + } if ($option->{buttonLabel}) { my $button = Gtk2::Button->new($module->getLang->{$option->{buttonLabel}}); diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExport.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExport.pm --- gcstar-1.4.3/lib/gcstar/GCExport.pm 2008-08-27 19:19:50.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExport.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -63,7 +63,7 @@ { my ($self, $options) = @_; my $filter = ($self->{filter}->get_active) ? 1 : 0; - $options->{items} = $self->{parent}->{items}->getItemsList($filter); + $options->{items} = $self->{parent}->{items}->getItemsListFiltered($filter); $options->{collection} = $self->{parent}->{options}->file; $options->{defaultImage} = $self->{parent}->{defaultImage}; $options->{sorter} = $self->{sorter}->getValue; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExtract/GCExtractFilms.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExtract/GCExtractFilms.pm --- gcstar-1.4.3/lib/gcstar/GCExtract/GCExtractFilms.pm 2008-10-08 18:26:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExtract/GCExtractFilms.pm 2009-11-21 08:50:58.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExtract/GCExtractMusics.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExtract/GCExtractMusics.pm --- gcstar-1.4.3/lib/gcstar/GCExtract/GCExtractMusics.pm 2008-07-17 18:30:57.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExtract/GCExtractMusics.pm 2009-11-21 08:50:58.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExtract/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExtract/.svn/entries --- gcstar-1.4.3/lib/gcstar/GCExtract/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExtract/.svn/entries 2009-11-21 08:50:58.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/lib/gcstar/GCExtract +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +GCExtractMusics.pm +file + + + + +2009-11-21T08:50:58.087388Z +6981548da1ecd7cedc7169bf64bad82d +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +10755 + +GCExtractFilms.pm +file + + + + +2009-11-21T08:50:58.087388Z +47382381dff27594d408b21df60e9386 +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +14229 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExtract/.svn/text-base/GCExtractFilms.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExtract/.svn/text-base/GCExtractFilms.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExtract/.svn/text-base/GCExtractFilms.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExtract/.svn/text-base/GCExtractFilms.pm.svn-base 2009-11-21 08:50:58.000000000 +0000 @@ -0,0 +1,476 @@ +package GCExtract::GCExtractFilms; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCExtract; + +{ + package GCExtract::GCfilmsExtracter; + use base 'GCItemExtracter'; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(@_); + bless ($self, $class); + + return $self; + } + + sub readInt + { + my ($self, $size) = @_; + my $buf; + + $size = 4 if !$size; + + read $self->{file},$buf,$size; + return unpack "i",$buf; + } + + sub getAviInfo + { + my $self = shift; + + my $info = {}; + + my @audioCodecs; + $audioCodecs[0x0001] = 'PCM'; + $audioCodecs[0x0002] = 'ADPCM'; + $audioCodecs[0x0030] = 'Dolby AC2'; + $audioCodecs[0x0050] = 'MPEG'; + $audioCodecs[0x0055] = 'MP3'; + $audioCodecs[0x0092] = 'Dolby AC3 SPDIF'; + $audioCodecs[0x2000] = 'Dolby AC3'; + $audioCodecs[0x2001] = 'Dolby DTS'; + $audioCodecs[0x2002] = 'WAVE'; + $audioCodecs[0x2003] = 'WAVE'; + $audioCodecs[0x2004] = 'WAVE'; + $audioCodecs[0x2005] = 'WAVE'; + $audioCodecs[0x674F] = 'Ogg Vorbis', + $audioCodecs[0x6750] = 'Ogg Vorbis', + $audioCodecs[0x6751] = 'Ogg Vorbis', + $audioCodecs[0x676F] = 'Ogg Vorbis', + $audioCodecs[0x6770] = 'Ogg Vorbis', + $audioCodecs[0x6771] = 'Ogg Vorbis', + + my $chunkName; + seek $self->{file},8,0; + read $self->{file},$chunkName,8; + return $info if ($chunkName ne 'AVI LIST'); + seek $self->{file},4,1; + read $self->{file},$chunkName,8; + + $self->readInt; + my $dwMicroSecPerFrame = $self->readInt; + my $dwMaxBytesPerSec = $self->readInt; + my $dwReserved1 = $self->readInt; + my $dwFlags = $self->readInt; + my $dwTotalFrames = $self->readInt; + my $dwInitialFrames = $self->readInt; + my $dwStreams = $self->readInt; + my $dwSuggestedBufferSize = $self->readInt; + $info->{width} = $self->readInt; + $info->{height} = $self->readInt; + my $dwScale = $self->readInt; + my $dwRate = $self->readInt; + my $dwStart = $self->readInt; + my $dwLength = $self->readInt; + + $info->{length} = ($dwTotalFrames * $dwMicroSecPerFrame) / 60000000; + $info->{length} = GCUtils::round($info->{length}); + + my $buff; + my ($gotVids, $gotAuds) = (0,0); + while (! eof($self->{file})) + { + read $self->{file},$chunkName,4; + if ($chunkName eq 'strl') + { + seek $self->{file},8,1; + read $self->{file},$buff,4; + if ($buff eq 'vids') + { + read $self->{file},$info->{type},4; + $gotVids = 1; + } + elsif ($buff eq 'auds') + { + read $self->{file},$info->{audioEncoding},4; + $info->{audioEncoding} =~ s/^.*?\w*\W*?$/$1/g; + if (!$info->{audioEncoding}) + { + read $self->{file},$chunkName,4 while ($chunkName ne 'strf'); + seek $self->{file},4,1; + my $codec; + read $self->{file}, $codec, 2; + $codec = unpack "v",$codec; + $codec = $audioCodecs[$codec]; + seek $self->{file}, 2, 1; + my $hz = $self->readInt; + $info->{audioEncoding} = $codec if $codec; + $info->{audioEncoding} .= " ($hz Hz)" if $hz; + } + $gotAuds = 1; + } + last if $gotVids && $gotAuds; + } + last if ($chunkName eq 'movi'); + } + + return {} if ($buff ne 'vids') && ($buff ne 'auds'); + + return $info; + } + + sub getMovAtom + { + my ($self, $wanted, $subAtom) = @_; + + my $copy = $subAtom; + + my ($header, $type, $length); + my $atom = 0; + + if ($subAtom) + { + while ($copy) + { + $header = substr($copy, 0, 8, ''); + ($length, $type) = unpack("Na4", $header); + last if $type eq $wanted; + substr($copy, 0 , $length - 8, ''); + } + if ($copy) + { + $atom = substr($copy, 0 , $length - 8, ''); + } + } + else + { + while (!eof ($self->{file})) + { + read $self->{file}, $header, 8; + ($length, $type) = unpack("Na4", $header); + last if $type eq $wanted; + seek $self->{file},$length - 8, 1; + } + if ($self->{file}) + { + read $self->{file}, $atom, $length - 8; + } + } + + return $atom; + } + + sub getMovInfo + { + #Inspired from Video::Info::Quicktime_PL + + my $self = shift; + + my $info = {}; + + seek $self->{file},0,0; + + my $header; + + my $atom = $self->getMovAtom('moov'); + + + if ($atom) + { + while (length($atom) > 0) + { + my ($sublen) = unpack("Na4", substr( $atom, 0, 4, '') ); + my ($subatom) = substr($atom, 0, $sublen-4, ''); + my($type) = substr($subatom, 0, 4, ''); + + if ($type eq 'mvhd') + { + my $timeScale = unpack( "Na4", substr($subatom,12,4)); + my $duration = unpack( "Na4", substr($subatom,16,4)); + $info->{length} = GCUtils::round($duration / ($timeScale * 60)); + } + elsif ($type eq 'trak') + { + my $tkhd = $self->getMovAtom('tkhd', $subatom); + my $mdia = $self->getMovAtom('mdia', $subatom); + next if !$mdia; + my $minf = $self->getMovAtom('minf', $mdia); + next if !$minf; + my $vmhd = $self->getMovAtom('vmhd', $minf); + my $smhd = $self->getMovAtom('smhd', $minf); + if ($vmhd || $smhd) + { + my $stbl = $self->getMovAtom('stbl', $minf); + my $stsd = $self->getMovAtom('stsd', $stbl); + + if ($vmhd) + { + my $width = unpack("Na4", substr($tkhd,74,4)); + my $height = unpack("Na4", substr($tkhd,78,4)); + ($info->{width}, $info->{height}) = ($width, $height); + ($info->{type} = substr($stsd,12,8)) =~ s/\W(.*?)\W/$1/g; + } + else + { + ($info->{audioEncoding}= substr($stsd,12,8)) =~ s/\W(.*?)\W/$1/g; + } + } + } + } + } + return $info; + } + + sub getMpgInfo + { + #Inspired from MPEG::Info + + my $self = shift; + + my @frameRates = ( + 0, + 24000/1001, + 24, + 25, + 30000/1001, + 30, + 50, + 60000/1001, + 60, + ); + + my $info = {}; + $info->{type} = 'MPEG'; + $info->{audioEncoding} = 'MPEG'; + + my $magic; + my $numMagic = unpack("N",$self->{magic}); + while (!eof($self->{file}) && $numMagic != 0x000001b3) + { + read $self->{file},$magic,4; + $numMagic = unpack("N",$magic); + seek $self->{file},-3, 1; + } + seek $self->{file},3, 1; + my $size; + read $self->{file},$size,3; + + $info->{width} = ((unpack "n",substr($size,0,2)) >> 4); + $info->{height} = ((unpack "n",substr($size,1,2)) & 0x0fff); + + my $fps; + read $self->{file},$fps,1; + $fps = $frameRates[ord($fps) & 0x0f]; + + my ($buff1, $buff2); + read $self->{file}, $buff1, 2; + $buff1 = unpack 'n', $buff1; + $buff1 <<= 2; + read $self->{file}, $buff2, 1; + $buff2 = unpack 'C', $buff2; + $buff2 >>=6; + my $bitRate = ( ( $buff1 | $buff2 ) * 400); + + $info->{length} = GCUtils::round((($self->{fileSize} * 8 ) / $bitRate) / 60) if $bitRate; + + return $info; + } + + sub findOgmPage + { + #Inspired from Ogg::Vorbis::Header::PurePerl + + my $self = shift; + my $char; + my $curStr = ''; + + my $i = 0; + while (read($self->{file}, $char, 1)) + { + $curStr = $char . $curStr; + $curStr = substr($curStr, 0, 4); + if ($curStr eq 'SggO') + { + seek $self->{file}, 8, 1; + my $serial = $self->readInt(4); + return $serial; + } + } + return -1; + } + + sub findLastOgmPage + { + my $self = shift; + my $buff; + my $curStr = ''; + + seek $self->{file}, -5, 2; + + my $i = 0; + while (read($self->{file}, $buff, 4)) + { + if ($buff eq 'OggS') + { + seek $self->{file}, 2, 1; + my $granulePos = $self->readInt; + return $granulePos; + } + seek $self->{file}, -5, 1; + } + return -1; + } + + sub getOgmInfo + { + my $info = {}; + my $self = shift; + + my $buff; + my ($gotAudio, $gotVideo) = (0,0); + seek $self->{file}, 0, 0; + my $serial = 0; + my $videoSerial = -1; + my $fps; + my $iteration = 0; + while ($serial != -1) + { + $serial = $self->findOgmPage; + + seek $self->{file}, 13, 1; + read $self->{file}, $buff, 8; + if ($buff =~ /^video/) + { + read $self->{file}, $info->{type}, 4; + my $size = $self->readInt; + my $timeUnit = $self->readInt(8); + my $spu = $self->readInt(8); + $fps = (10000000.0 * $spu) / $timeUnit; + my $defaultLen = $self->readInt; + my $bufferSize = $self->readInt; + my $bbp = $self->readInt; + $info->{width} = $self->readInt; + $info->{height} = $self->readInt; + + $gotVideo = 1; + $videoSerial = $serial; + } + elsif ($buff =~ /vorbis/) + { + $info->{audioEncoding} = 'Vorbis'; + seek $self->{file}, 3, 1; + my $hz = $self->readInt; + $info->{audioEncoding} .= " ($hz Hz)" if $hz; + $gotAudio = 1; + } + else + { + last if $iteration > 5; + } + last if $gotAudio && $gotVideo; + $iteration++; + } + if ($gotVideo) + { + my $biggestGranulePos = $self->findLastOgmPage; + $info->{length} = GCUtils::round(($biggestGranulePos / $fps) / 60); + } + + return $info; + } + + sub getInfo + { + my $self = shift; + + open FILE, '<'.$self->{fileName}; + binmode FILE; + + my $info = {}; + + $self->{file} = \*FILE; + my $magic; + $self->{magic} = $magic; + read FILE,$magic,4; + my $numMagic = unpack("N",$magic); + + if ($magic eq 'RIFF') + { + $info = $self->getAviInfo; + } + elsif ($magic eq 'OggS') + { + $info = $self->getOgmInfo; + } + elsif (($numMagic == 0x000001ba) || ($numMagic == 0x000001b3)) + { + $info = $self->getMpgInfo; + } + else + { + my $magic2; + read FILE,$magic2,4; + if ($magic2 =~ /(moov|notp|wide|ftyp)/) + { + $info = $self->getMovInfo; + } + } + + close FILE; + my $result; + + $result->{time} = {displayed => $info->{length}, value => $info->{length}}; + $result->{video} = {displayed => $info->{type}, value => $info->{type}}; + my $currentAudio = $self->{panel}->audio; + if ($info->{audioEncoding}) + { + $currentAudio->[0]->[1] = $info->{audioEncoding}; + $result->{audio}->{value} = $currentAudio; + $result->{audio}->{displayed} = $info->{audioEncoding}; + } + if ($info->{width} && $info->{height}) + { + my $comment = $self->{panel}->comment; + $comment .= "\n" if $comment && ($comment !~ /\n$/m); + $result->{comment}->{displayed} = + $self->{model}->getDisplayedText('ExtractSize').$self->{parent}->{lang}->{Separator}. + $info->{width}.'*'.$info->{height}; + $result->{comment}->{value} = $comment . $result->{comment}->{displayed}; + } + + return $result; + } + + sub getFields + { + return ['time', 'video', 'audio', 'comment']; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExtract/.svn/text-base/GCExtractMusics.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExtract/.svn/text-base/GCExtractMusics.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCExtract/.svn/text-base/GCExtractMusics.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExtract/.svn/text-base/GCExtractMusics.pm.svn-base 2009-11-21 08:50:58.000000000 +0000 @@ -0,0 +1,370 @@ +package GCExtract::GCExtractMusics; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCExtract; + +use GCDialogs; +{ + package GCExtractMusicsResultsDialog; + use base 'GCModalDialog'; + + sub show + { + my $self = shift; + + $self->SUPER::show(); + $self->show_all; + my $response = $self->run; + my $idx = ($self->{results}->get_selected_indices)[0]; + $self->hide; + return -1 if $response ne 'ok'; + return $idx; + } + + sub setData + { + my ($self, @cddbData) = @_; + my @listData; + foreach(@cddbData) + { + push @listData, [$_->{genre}, $_->title, $_->artist, $_->year]; + } + @{$self->{results}->{data}} = @listData; + $self->{results}->select(0); + $self->{results}->columns_autosize; + } + + sub new + { + my ($proto, $parent, $model) = @_; + my $class = ref($proto) || $proto; + + my $self = $class->SUPER::new($parent, + $model->getDisplayedText('ResultsDialog')); + $self->{parent} = $parent; + + my $hbox = new Gtk2::HBox(0,0); + + $self->{results} = new Gtk2::SimpleList( + $model->getDisplayedText('Genre') => 'text', + $model->getDisplayedText('Title') => 'text', + $model->getDisplayedText('Artist') => 'text', + $model->getDisplayedText('Release') => 'text', + ); + + $self->{results}->set_rules_hint(1); + $self->{results}->set_headers_clickable(1); + for my $i (0..3) + { + my $column = $self->{results}->get_column($i); + $column->set_resizable(1); + $column->set_sort_column_id($i); + } + $self->{results}->signal_connect(row_activated => sub { + $self->response('ok'); + }); + + my $scrollPanelList = new Gtk2::ScrolledWindow; + $scrollPanelList->set_policy ('never', 'automatic'); + $scrollPanelList->set_shadow_type('etched-in'); + $scrollPanelList->set_border_width($GCUtils::margin); + $scrollPanelList->add($self->{results}); + + $self->vbox->pack_start($scrollPanelList,1,1,0); + + $self->set_default_size(-1,300); + return $self; + } +} + +{ + package GCExtract::GCmusicsExtracter; + use base 'GCItemExtracter'; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(@_); + bless ($self, $class); + + $self->{hasMP3Info} = $self->checkModule('MP3::Info'); + $self->{hasMP3Tag} = $self->checkModule('MP3::Tag'); + $self->{hasOggVorbisHeader} = $self->checkModule('Ogg::Vorbis::Header::PurePerl'); + $self->{hasNetFreeDB} = $self->checkModule('Net::FreeDB'); + # Even if previous check fails, we want to use it for tracks feature + $self->{errors} = 0; + + $self->{fields} = ['title', 'artist', 'release', 'genre', 'running', 'tracks']; + return $self; + } + + sub resetTracks + { + my $self = shift; + $self->{tracks} = []; + $self->{totalTime} = 0; + $self->{currentTrack} = 0; + $self->{firstTrack} = ''; + } + + sub addTrack + { + my ($self, $title, $time, $number) = @_; + $self->{currentTrack}++; + $self->{totalTime} += $time; + $number = $self->{currentTrack} if !defined $number; + push @{$self->{tracks}}, + [$number, $title, $self->secondsToString($time)]; + } + + sub getTracks + { + my $self = shift; + return $self->{tracks}; + } + + sub secondsToString + { + my ($self, $time) = @_; + return int($time / 60) .':'. sprintf '%02d', ($time %60); + } + + sub getTotalTime + { + my $self = shift; + return $self->secondsToString($self->{totalTime}); + } + + sub getM3UInfo + { + my ($self) = @_; + my $file = $self->{file}; + my $info = {}; + while (<$file>) + { + chomp; + s/\r//; + if (/^#/) + { + next if ! /^#EXTINF:(.*)/; + my @values = split /,/, $1; + $self->addTrack($values[1], $values[0]); + } + else + { + $self->{firstTrack} = $_ + if !$self->{firstTrack}; + } + } + $info->{tracks} = $self->getTracks; + $info->{running} = $self->getTotalTime; + return $info; + } + + sub getPLSInfo + { + my ($self) = @_; + my $file = $self->{file}; + my $info = {}; + my @tracks; + while (<$file>) + { + chomp; + s/\r//; + next if ! /(File|Title|Length)(\d+)=(.*)$/; + $tracks[$2]->{$1} = $3; + $tracks[$2]->{Number} = $2; + } + foreach (@tracks) + { + next if !$_->{Title}; + $self->addTrack($_->{Title}, $_->{Length}, $_->{Number}); + } + + $info->{tracks} = $self->getTracks; + $info->{running} = $self->getTotalTime; + $self->{firstTrack} = $tracks[1]->{File}; + return $info; + } + + sub getFreeDB + { + my @genres = qw(blues classical country data folk jazz newage reggae rock soundtrack misc); + my ($self) = @_; + my $file = $self->{fileName}; + my $info = {}; + return $info if ! -e $file; + return $info if ! $self->{hasNetFreeDB}; + + my $freedb = Net::FreeDB->new; + my $discdata = $freedb->getdiscdata($file); + return if !$discdata; + my $cddb_file_object; + my @results; + + foreach (@genres) + { + my $tmpCddb = $freedb->read($_, $discdata->{ID}); + if ($tmpCddb) + { + $tmpCddb->{genre} = $tmpCddb->genre || $_; + push @results, $tmpCddb; + } + } + + if ($#results == -1) + { + return; + } + elsif ($#results == 0) + { + $cddb_file_object = $results[0]; + } + else + { + my $dialog = new GCExtractMusicsResultsDialog( + $self->{parent}, + $self->{model} + ); + $dialog->setData(@results); + my $selected = $dialog->show; + $dialog->destroy; + return if $selected == -1; + $cddb_file_object = $results[$selected]; + } + + foreach my $track ($cddb_file_object->tracks) + { + $self ->addTrack($track->title,$track->length,$track->number); + } + + $info->{tracks} = $self->getTracks; + $info->{running} = $self->getTotalTime; + $info->{title} = $cddb_file_object->title; + $info->{artist} = $cddb_file_object->artist; + $info->{release} = $cddb_file_object->year; + $info->{genre} = $cddb_file_object->{genre}; + + return $info; + } + + sub addFirstTrackInfo + { + my ($self, $info) = @_; + + if ($^O =~ /win32/i) + { + $self->{firstTrack} =~ s|\\|/|g; + $self->{fileName} =~ /^(.{2})/; + my $drive = $1; + $self->{firstTrack} = $drive.$self->{firstTrack} + if $self->{firstTrack} =~ m|^/|; + } + + if ($self->{firstTrack} =~ /mp3$/i) + { + if ($self->{hasMP3Info}) + { + MP3::Info::use_mp3_utf8(1); + my $song = MP3::Info::get_mp3tag($self->{firstTrack}); + $info->{title} = $song->{ALBUM}; + $info->{artist} = $song->{ARTIST}; + $info->{release} = $song->{YEAR}; + $info->{genre} = $song->{GENRE}; + } + elsif ($self->{hasMP3Tag}) + { + my $song = MP3::Tag->new($self->{firstTrack}); + (undef, undef, $info->{artist}, $info->{title}) = $song->autoinfo; + } + } + elsif ($self->{firstTrack} =~ /ogg$/i) + { + if ($self->{hasOggVorbisHeader}) + { + my $song = Ogg::Vorbis::Header::PurePerl->new($self->{firstTrack}); + $info->{title} = ($song->comment('album'))[0]; + $info->{artist} .= $_.', ' foreach $song->comment('artist'); + $info->{artist} =~ s/, $//; + ($info->{release} = ($song->comment('date'))[0]) =~ s|^(\d{4})-(\d{2})-(\d{2}).*$|$3/$2/$1|; + $info->{genre} .= $_.', ' foreach $song->comment('genre'); + $info->{genre} =~ s/, $//; + } + } + } + + sub getInfo + { + my $self = shift; + my $info = {}; + $self->resetTracks; + + if ((!$self->{fileName}) || ($self->{fileName} =~ /\/dev\//)) + { + if (!$self->{fileName}) + { + $self->{fileName} = $self->{parent}->{options}->cdDevice; + } + $info = $self->getFreeDB; + } + else + { + + open FILE, '<'.$self->{fileName}; + binmode FILE; + + $self->{file} = \*FILE; + my $header = ; + + $info = $self->getM3UInfo + if ($self->{fileName} =~ /m3u$/) || ($header =~ /^#EXTM3U/); + $info = $self->getPLSInfo + if ($self->{fileName} =~ /pls$/) || ($header =~ /^\[playlist\]/); + close FILE; + } + + $self->addFirstTrackInfo($info); + + return if !defined $info; + my $result; + my $firstTrackName = $info->{tracks}->[0]->[1]; + $result->{tracks} = {displayed => $firstTrackName, value => $info->{tracks}}; + foreach (@{$self->{fields}}) + { + next if /^tracks$/; + $result->{$_} = {displayed => $info->{$_}, value => $info->{$_}}; + } + return $result; + } + + sub getFields + { + my $self = shift; + return $self->{fields}; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCExtract.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCExtract.pm --- gcstar-1.4.3/lib/gcstar/GCExtract.pm 2008-07-17 18:31:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCExtract.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCGenres.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCGenres.pm --- gcstar-1.4.3/lib/gcstar/GCGenres.pm 2008-07-17 18:31:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCGenres.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCGraphicComponents.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCGraphicComponents.pm --- gcstar-1.4.3/lib/gcstar/GCGraphicComponents.pm 2008-08-15 15:42:28.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCGraphicComponents.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -220,7 +220,9 @@ { package GCPseudoHistoryComponent; - + # + # This is an abstract package handling a little history + # sub initHistory { my ($self, $listType) = @_; @@ -1110,7 +1112,7 @@ sub setWidth { my ($self, $value) = @_; - $self->set_width_chars($value); + $self->{entry}->set_width_chars($value); } sub lock @@ -1385,6 +1387,44 @@ my ($self, $value) = @_; $self->set_size_request($value, -1); } + sub setContextMenu + { + my ($self, $menu) = @_; + $self->{popupContextMenu}=new Gtk2::Menu if !$self->{popupContextMenu}; + for my $i(0..$#{$self->{popupContextMenu}->{items}}) + { + $self->{popupContextMenu}->remove($self->{popupContextMenu}->{items}->[$i]); + $self->{popupContextMenu}->{items}->[$i]->destroy; + } + delete $self->{popupContextMenu}->{items}; + for my $i(0..$#$menu) + { + $self->{popupContextMenu}->{items}->[$i]=$menu->[$i]; + $self->{popupContextMenu}->append($self->{popupContextMenu}->{items}->[$i]); + } + $self->{popupContextMenu}->show_all; + } + sub enableContextMenu + { + my ($self,$button) = @_; + #TODO enabled context for one button mouses + $button=3 if !$button; + $self->{contextMenuSignalHandler}=$self->signal_connect('button_press_event' => sub { + my ($widget, $event) = @_; + return 0 if $event->button ne $button; + $self->{popupContextMenu}->popup(undef, undef, undef, undef, $event->button, $event->time); + return 0; + }) if !$self->{contextMenuSignalHandler}; + } + sub disableContextMenu + { + my $self = shift; + if($self->{contextMenuSignalHandler}) + { + $self->signal_handler_disconnect($self->{contextMenuSignalHandler}); + delete $self->{contextMenuSignalHandler}; + } + } } { @@ -1402,10 +1442,12 @@ my $class = ref($proto) || $proto; my $self = $class->SUPER::new($label); + $self->{opener}=$opener; $self->{defaultLabel} = $label; - $self->signal_connect('clicked' => sub { - $opener->launch($self->{url}, 'url'); + $self->{clicSignalHandler}=$self->signal_connect('clicked' => sub { + $self->{opener}->launch($self->{url}, 'url'); }); + bless ($self, $class); return $self; @@ -1423,18 +1465,44 @@ my ($self, $value) = @_; $self->{hasChanged} = 1; - if ($value =~ /^(.*?)##(.*)$/) + my @urls=split ';',$value; + if(scalar(@urls)>1) { - $self->{url} = $1; - $self->setLabel($2); + my (@menu,$i,$url); + foreach my $urlName(@urls) + { + $urlName =~ /^(.*?)##(.*)$/; + my $name=$2; + my $menuItem=Gtk2::MenuItem->new_with_label($name); + $menuItem->signal_connect("activate" ,sub { + $self->{opener}->launch($_[1], 'url') + },$1); + push @menu,$menuItem; + } + $self->{url} =''; + $self->setContextMenu(\@menu); + $self->enableContextMenu(1); + $self->lock(0); + #$self->signal_handler_block($self->{clicSignalHandler}); + $self->setLabel($self->{defaultLabel}); } else { - $self->{url} = $value; - $self->setLabel($self->{defaultLabel}); + if ($value =~ /^(.*?)##(.*)$/) + { + $self->{url} = $1; + $self->setLabel($2); + } + else + { + $self->{url} = $value; + $self->setLabel($self->{defaultLabel}); + } + $self->lock(!$self->{url}); + $self->disableContextMenu; + #$self->signal_handler_unblock($self->{clicHandler}); } $self->{value} = $value; - $self->lock(!$self->{url}); } sub setLabel @@ -1606,7 +1674,7 @@ sub new { - my ($proto, $parent, $number, $labels, $withHistory, $readonly, $useFiles) = @_; + my ($proto, $parent, $number, $labels, $withHistory, $readonly, $useFiles,$types) = @_; my $class = ref($proto) || $proto; my $self = $class->SUPER::new(0,0); @@ -1634,7 +1702,16 @@ } else { - if ($withHistory) + if($types && $types->[$i] eq 'date') + { + $self->{entries}->[$i] = GCDate->new($parent, $parent->{lang}, 1,$parent->{options}->dateFormat); + $self->{entries}->[$i]->{entry}->signal_connect('activate' => sub { + $self->addValues; + $self->{entries}->[0]->grab_focus; + }); + $self->{withHistoryField}->[$i]=0; + } + elsif ($withHistory && (!$types || $types->[$i] eq 'history')) { $self->{entries}->[$i] = GCHistoryText->new; $self->{entries}->[$i]->entry->signal_connect('activate' => sub { @@ -1647,6 +1724,7 @@ } $widget->entry->signal_stop_emission_by_name('activate'); }); + $self->{withHistoryField}->[$i]=1; } else { @@ -1655,6 +1733,7 @@ $self->addValues; $self->{entries}->[0]->grab_focus; }); + $self->{withHistoryField}->[$i]=0 if $withHistory; } } $self->{entries}->[$i]->setWidth(12); @@ -1664,6 +1743,17 @@ $self->{histories} = [\@histories]; $self->{box} = new Gtk2::VBox(0,0); + + # If list belongs to an expander, set box size to a reasonable size + $self->{box}->{signalHandler} = $self->{box}->signal_connect('size-allocate' => sub { + if ($self->{realParent}->isa('GCExpander')) + { + my $width = $self->allocation->width - ( 2 * $GCUtils::margin) ; + $self->{box}->set_size_request(($width >= -1) ? $width : -1 , -1); + return 0; + } + }); + $self->{list} = new Gtk2::SimpleList(@listColumns); for $i (0..($number - 1)) { @@ -1686,11 +1776,11 @@ $self->{box}->pack_start($scroll, 1, 1, 2); if (!$readonly) { - $self->{addButton} = GCButton->newFromStock('gtk-add', 1); + $self->{addButton} = GCButton->newFromStock('gtk-add', 0); $self->{addButton}->signal_connect('clicked' => sub { $self->addValues; }); - $self->{removeButton} = GCButton->newFromStock('gtk-remove', 1); + $self->{removeButton} = GCButton->newFromStock('gtk-remove', 0); $hboxActions->pack_start($self->{addButton}, 0, 0, 6); $hboxActions->pack_start($self->{removeButton}, 0, 0, 6); } @@ -1764,7 +1854,7 @@ { $values[$i] = $self->{entries}->[$i]->getValue if !$values[$i]; $self->{entries}->[$i]->addHistory($values[$i]) - if $self->{withHistory}; + if $self->{withHistory} && $self->{withHistoryField}->[$i]; $self->{entries}->[$i]->clear; } } @@ -1876,7 +1966,7 @@ $i = 0; foreach $item(@$_) { - $self->{entries}->[$i]->addHistory($item, $noUpdate); + $self->{entries}->[$i]->addHistory($item, $noUpdate) if $self->{withHistoryField}->[$i]; $i++; } } @@ -1892,7 +1982,7 @@ $i = 0; foreach my $item(@items) { - $self->{entries}->[$i]->addHistory($item, $noUpdate); + $self->{entries}->[$i]->addHistory($item, $noUpdate) if $self->{withHistoryField}->[$i]; $i++; } #push @{$self->{list}->{data}}, \@items; @@ -1904,9 +1994,11 @@ { my $self = shift; + my $i = 0; foreach (@{$self->{entries}}) { - $_->setDropDown; + $_->setDropDown if $self->{withHistoryField}->[$i]; + $i++; } } @@ -1915,9 +2007,12 @@ my $self = shift; return [] if $self->{readonly}; my @array; + my $i=0; foreach (@{$self->{entries}}) { - push @array, $_->getValues; + my $val=[]; + $val=$_->getValues if ($self->{withHistoryField}->[$i++]); + push @array, $val; } # = sort keys %{$self->{history}}; return \@array; @@ -1930,7 +2025,7 @@ my $i = 0; foreach (@$values) { - $self->{entries}->[$i]->setValues($_); + $self->{entries}->[$i]->setValues($_) if ($self->{withHistoryField}->[$i]); $i++; } } @@ -2188,6 +2283,7 @@ my $response = $imageDialog->run; $fileName = $imageDialog->get_filename; $imageDialog->destroy; + $self->{parent}->showMe; if ($response eq 'ok') { @@ -2232,7 +2328,7 @@ $self->setActualValue($value, $keepWatcher, $self->{flipped}); if ($self->{isCover} && !$self->{flipped}) { - $self->{mainParent}->{items}->updateCurrent(0, [$self->{name}]); + $self->{mainParent}->{items}->updateSelectedItemInfoFromPanel(0, [$self->{name}]); $self->{hasChanged} = 0 if $self->{parent} eq $self->{mainParent}->{panel} && !$keepWatcher; } } @@ -2379,6 +2475,8 @@ $self->signal_connect('query_tooltip' => sub { my ($window, $x, $y, $keyboard_mode, $tip) = @_; + return if $self->{settingTip}; + $self->{settingTip} = 1; if ($self->{flipActivated} && ($x > $self->{flipX}) && ($y > $self->{flipY})) { $self->{tooltips}->set_tip($self, $self->{flipped} ? @@ -2389,6 +2487,7 @@ { $self->{tooltips}->set_tip($self, $self->{tip}); } + $self->{settingTip} = 0; return 0; }); @@ -2500,6 +2599,8 @@ $self->{itemOpen} = Gtk2::ImageMenuItem->new_with_mnemonic($parent->{lang}->{ContextChooseImage}); my $itemOpenImage = Gtk2::Image->new_from_stock('gtk-open', 'menu'); $self->{itemOpen}->set_image($itemOpenImage); + # This item will be deactivated if the component is locked + $self->{itemOpen}->set_sensitive(!$self->{locked}); $self->{itemOpen}->signal_connect("activate" , sub { $self->changeImage; }); @@ -2524,6 +2625,8 @@ } $self->{itemClear} = Gtk2::ImageMenuItem->new_from_stock('gtk-clear',undef); + # This item will be deactivated if the component is locked + $self->{itemClear}->set_sensitive(!$self->{locked}); $self->{itemClear}->signal_connect("activate" , sub { $self->clearImage; }); @@ -2611,13 +2714,6 @@ my ($self, $locked) = @_; $self->{locked} = $locked; - - # Probably not required anymore, now that menus are generated on the fly: - -# for my $menu('Open', 'Clear') -# { -# $self->{'item'.$menu}->set_sensitive(!$locked); -# } } sub showImage @@ -2805,6 +2901,11 @@ sub setValues { my ($self, $values, $separatorPosition, $preserveValue) = @_; + if ($self->{title}) + { + $separatorPosition = 1; + unshift @$values, {value => -1, displayed => $self->{title}}; + } my $model = $self->{listModel}; my $previous = $self->getValue if $preserveValue; $self->{values} = $values; @@ -2835,7 +2936,13 @@ my $self = shift; $self->{default} = -1; } - + + sub setTitle + { + my ($self, $title) = @_; + $self->{title} = $title; + } + sub new { my ($proto, $values, $separatorPosition) = @_; @@ -3124,7 +3231,7 @@ { $self->{firstRow}++; my $top = new GCColorLabel($headerStyle->{bgColor}); - $top->set_padding(6,6); + $top->set_padding($GCUtils::halfMargin,$GCUtils::halfMargin); $top->setMarkup('{style}.'>'.$topHeader.''); $self->attach($top, 0, $columns, 0, 1, ['expand', 'fill'], 'fill', 0, 0); } @@ -3134,7 +3241,7 @@ for $i(0..($columns - 1)) { my $header = new GCColorLabel($headerStyle->{bgColor}); - $header->set_padding(6,6); + $header->set_padding($GCUtils::halfMargin,$GCUtils::halfMargin); $header->setMarkup('{style}.'>'.$labels->[$i].''); $self->attach($header, $i, $i + 1, $self->{firstRow}, $self->{firstRow} + 1, ['expand', 'fill'], 'fill', 0, 0); } @@ -3190,7 +3297,7 @@ # TODO Optimize GCColorLongLabel. It offers a better display (no scrollbar) # but it slows down the display. my $label = new GCColorLabel($self->{style}->{bgColor}); - $label->set_padding(6,6); + $label->set_padding($GCUtils::halfMargin,$GCUtils::halfMargin); #my $label = new GCColorLongLabel($self->{style}->{bgColor}, '2em'); $label->setMarkup('{style}->{style}.'>'.$col.''); $self->attach($label, $j, $j + 1, $i, $i + 1, ['expand', 'fill'], 'fill', 0, 0); diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportAlexandria.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportAlexandria.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportAlexandria.pm 2008-07-17 18:30:56.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportAlexandria.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportAMC.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportAMC.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportAMC.pm 2008-08-16 07:43:16.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportAMC.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportBase.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportBase.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportBase.pm 2008-07-17 18:30:56.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportBase.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -123,7 +123,7 @@ my ($self, $options) = @_; $self->{options} = $options; - $options->{parent}->{items}->updateCurrent; + $options->{parent}->{items}->updateSelectedItemInfoFromPanel; my $alreadySaved = 0; if ($options->{newList}) { @@ -160,7 +160,7 @@ $options->{parent}->checkPanelVisibility; $options->{parent}->selectFirst; $options->{parent}->markAsUpdated; - $options->{parent}->allItems; + $options->{parent}->viewAllItems; return $self->getEndInfo; } diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportCSV.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportCSV.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportCSV.pm 2008-07-17 18:30:56.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportCSV.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportDVDProfiler.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportDVDProfiler.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportDVDProfiler.pm 2008-07-17 18:30:56.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportDVDProfiler.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportFolder.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportFolder.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportFolder.pm 2008-10-08 18:27:02.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportFolder.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # @@ -75,11 +75,11 @@ { my $self = shift; - my $pluginsList = ''; + my $pluginsList; foreach (@{$self->{model}->getPluginsNames}) { my $plugin = $GCPlugins::pluginsMap{$self->{model}->getName}->{$_}; - $pluginsList .= $plugin->getName . ','; + push @$pluginsList,$plugin->getName; } @@ -90,14 +90,22 @@ label => 'Plugin', valuesList => $pluginsList }, - { - name => 'first', - type => 'yesno', - label => 'UseFirst', - default => '1' + name => 'multipleResult', + type => 'options', + label => 'MultipleResult', + tooltip => 'MultipleResultTooltip', + valuesList => 'Ask,AskEnd,AddWithoutInfo,DontAdd,TakeFirst', + default => 'Ask', + }, + { + name => 'noResult', + type => 'options', + label => 'NoResult', + tooltip => 'NoResultTooltip', + valuesList => 'AddWithoutInfo,DontAdd', # TODO AskNewName AskNewPlugin at End + default => 'AddEmpty', }, - { name => 'recursive', type => 'yesno', @@ -120,6 +128,43 @@ tooltip => 'RemoveTooltip', default => '', }, + { + name => 'removeWholeWord', + type => 'yesno', + label => 'RemoveWholeWord', + tooltip => 'RemoveTooltipWholeWord', + default => '1', + }, + { + name => 'removeRegularExpr', + type => 'yesno', + label => 'RemoveRegularExpr', + tooltip => 'RemoveTooltipRegularExpr', + changedCallback => sub { + my ($self,$widget) =@_; + $widget->[0]->{options}->{removeWholeWord}->lock($self->getValue); + }, + default => '0', + }, + { + name => 'skipFileAlreadyInCollection', + type => 'options', + label => 'SkipFileAlreadyInCollection', + tooltip => 'SkipFileAlreadyInCollectionTooltip', + valuesList => 'SkipFileNo,SkipFileFullPath,SkipFileFileName,SkipFileFileNameAndUpdate', + default => 'SkipFileNo', + }, + { + name => 'infoFromFileNameRegExp', + type => 'history text', + label => 'InfoFromFileNameRegExp', + tooltip => 'InfoFromFileNameRegExpTooltip', + initValues => ['', + '^$A\s*([[\(]part $x( of $y)?[)\]])?\s*([[\(]$Y[)\]])?\s*$', + '^$N\s+[^\w ]\s+S$SE$E\s+[^\w ]\s+$T\s+([[(]part $x( of $y)?[)\]])?\s*$', + ], + default => '', + }, ]; @@ -152,7 +197,7 @@ # Required by extracter $self->{lang} = $self->{options}->{lang}; - (my $suffixes = $self->{options}->{suffixes}) =~ s/,;/\|/g; + (my $suffixes = $self->{options}->{suffixes}) =~ s/[,; ]/\|/g; $suffixes =~ s/\*\.//g; # Create list of files if ($self->{options}->{recursive}) @@ -160,7 +205,8 @@ find(sub { return if -d $File::Find::name; return if ! /$suffixes$/; - push @filesList, $File::Find::name; + my $name=Encode::decode_utf8($File::Find::name); + push @filesList, $name; }, $directory); } else @@ -173,25 +219,170 @@ } } my $resultsDialog; - if (!$self->{options}->{first}) + # initialize choose good result dialog if needed + if (($self->{options}->{multipleResult} ne 'Ask') || ($self->{options}->{multipleResult} ne 'AskEnd')) { $resultsDialog = $self->{options}->{parent}->getDialog('Results'); $resultsDialog->setModel($self->{model}, $self->{model}->{fieldsInfo}); $resultsDialog->setMultipleSelection(0); } - - (my $removed = $self->{options}->{remove}) =~ s/[,; ]/\|/g; - foreach my $file(@filesList) + #Initialize stuff to retrieve info from name with regexp + my $infoFromName; + if ($self->{options}->{infoFromFileNameRegExp} ne '') + { + my %knownParam=($titleField=>'T',alphabTitle=>'A',year=>'Y',season=>'S',episode=>'E',alphabSeries=>'N',number=>'x',totNumber=>'y'); + my $orderStr= $self->{options}->{infoFromFileNameRegExp}; + $orderStr=~ s/(?{options}->{infoFromFileNameRegExp}; + # avoid capturing something else than $T,$A ... make already present () not capturing + $myRegExp =~ s/(?{model}->{parent}->{articles}}).')\'?\b'; + my $myRegExpArt=qr/^(.*?)(?:, ?($articles))?$/i; + + $myRegExp =~ s/\$A/(.*?(?:, ?$articles)?)/g; + $myRegExp =~ s/\$N/(.*?(?:, ?$articles)?)/g; + $myRegExp =~ s/\$T/(.*?)/; + $myRegExp =~ s/\$Y/(\\d{2}|\\d{4}?)/; + $myRegExp =~ s/\$x/(\\d{1,2})/; + $myRegExp =~ s/\$y/(\\d{1,2})/; + $myRegExp =~ s/\$E/(\\d{1,4}?)/; + $myRegExp =~ s/\$S/(\\d{1,2}?)/; + sub deAlpha{ + my $s; + $_[0]=~$myRegExpArt; + $s=$1; + my $a=$2.' ' if $2 && (substr($2,-1) ne '\''); + $s=$a.$s if $a; + return $s; + } + # Check if regexp is good + my $pattern = shift; + my $test = eval { $myRegExp=qr/$myRegExp/i }; + #print $myRegExp; + # + if ($@) + { + $myRegExp= qr/./ ;print $@; + } + my $i=2; + $infoFromName=sub { + my $n=$_[0] ; + $n=~ $myRegExp; + my %info; # TODO Can be more readable in Perl 5.10 by using named capturing + $info{$places{1}}=$1 if $1;$info{$places{2}}=$2 if $2;$info{$places{3}}=$3 if $3;$info{$places{4}}=$4 if $4;$info{$places{5}}=$5 if $5; + $info{$places{6}}=$6 if $6;$info{$places{7}}=$7 if $7;$info{$places{8}}=$8 if $8;$info{$places{9}}=$9 if $9;$info{$places{10}}=$10 if $10; + $info{$places{11}}=$11 if $11;$info{$places{12}}=$12 if $12;$info{$places{13}}=$13 if $13;$info{$places{14}}=$14 if $14;$info{$places{15}}=$15 if $15; + $info{$places{16}}=$16 if $16;$info{$places{17}}=$17 if $17;$info{$places{18}}=$18 if $18;$info{$places{19}}=$19 if $19;$info{$places{20}}=$20 if $20; + + $info{$titleField}=deAlpha($info{alphabTitle}) if($info{alphabTitle}); + $info{series}=deAlpha($info{alphabSeries}) if($info{alphabSeries}); + return \%info; + } + } + # initialize regexp word to remove + my $removed =$self->{options}->{remove}; + if(!$self->{options}->{removeRegularExpr}) + { + $removed =~ s/[,; ]/\|/g; + if($self->{options}->{removeWholeWord}) + { + $removed=~s/\|/\\b\|\\b/g ; + $removed='\b'.$removed.'\b'; + } + } + # if we want to ignore files already in the list + # we initialize a hash with filenames to be fast ! + my %fileNameKnown; + if($self->{options}->{skipFileAlreadyInCollection} ne 'SkipFileNo') + { + if($self->{options}->{skipFileAlreadyInCollection} eq 'SkipFileFullPath') + { + foreach my $originalFilm(@{$self->{options}->{originalList}->{itemArray}}) + { + $fileNameKnown{$originalFilm->{$fileField}}=$originalFilm; + } + } + else + { + foreach my $originalFilm(@{$self->{options}->{originalList}->{itemArray}}) + { + $fileNameKnown{basename($originalFilm->{$fileField})}=$originalFilm; + } + } + } + my $hasFileWaiting=0;my $inWaitingQueue=0; + # Main loop on files entries + file: foreach my $file(@filesList) { + if($file eq 'WaitingList') + { + $inWaitingQueue=1; + next file; + } + # Skip file already in the collection + next file if(($self->{options}->{skipFileAlreadyInCollection} eq 'SkipFileFullPath') && (exists $fileNameKnown{$file})); + next file if(($self->{options}->{skipFileAlreadyInCollection} eq 'SkipFileFileName') && (exists $fileNameKnown{basename($file)})); + if(($self->{options}->{skipFileAlreadyInCollection} eq 'SkipFileFileNameAndUpdate') && (exists $fileNameKnown{basename($file)})) + { + # if filename already in collection, and collection full path invalid : correct it + if (!(-e $fileNameKnown{basename($file)}->{$fileField})) + { + print "Path updated : ",$fileNameKnown{basename($file)}->{$fileField},"\n"; + print " --> ",$file,"\n"; + $fileNameKnown{basename($file)}->{$fileField}=$file; + } + next file; + } + + # Get info from the file (avi, mp3, ...) my $extracter = $self->{model}->getExtracter($self, $file, $self, $self->{model}); my $extracted = $extracter->getInfo; - + # Add info from file + my $infoFromFile={$fileField => $file}; + foreach my $field(keys %$extracted) + { + $infoFromFile->{$field} = $extracted->{$field}->{value}; + } + + # Test if subtitle is present + if ($self->{model}->getName eq 'GCfilms') + { + my @subtitlesExt=qw(sub srt); + my @subtitlesFiles; + my $startFileName=$file; + $startFileName=~s/\.[^.]*$//; + for my $ext(@subtitlesExt) + { + my $fileSubsName=$startFileName.'.'.$ext; + if(-e $fileSubsName) + { + #TODO Try to guess the language see cpan + my $lang=["Yes"]; + push @subtitlesFiles,$lang; + } + } + $infoFromFile->{subt}=\@subtitlesFiles if (@subtitlesFiles); + } + my $infoFromFileName; my $name = basename($file); # Filter the name # Remove suffix $name =~ s/\.[^.]*$//; + # Try to apply regexp on filename + if ($self->{options}->{infoFromFileNameRegExp} ne '') + { + $infoFromFileName=&$infoFromName($name); + $name = $infoFromFileName->{$titleField} if ($infoFromFileName->{$titleField} ne ''); + #TODO: Use this known info to search with plugin + } # Remove everything between () {} [] - $name =~ s/[\(\[\{].*?[\)\]\}]//g; + $name =~ s/[\(\[\{].*?[\)\]\}]/ /g; # Remove special characters $name =~ s/[-\._,#@"']/ /g; #'" @@ -210,22 +401,44 @@ $plugin->{urlField} = $self->{model}->{commonFields}->{url}; #Initialize what will be pushed in the array - my $info = {$titleField => $name}; + my $infoPlugin = {$titleField => $name}; $self->{options}->{parent}->setWaitCursor($self->{options}->{lang}->{StatusSearch}.' ('.$name.')'); $plugin->load; my $itemNumber = $plugin->getItemsNumber; - if ($itemNumber != 0) + if ($itemNumber == 0) + { + goto endPluginGetItemInfo if (($self->{options}->{noResult} eq 'AddEmpty')); + next file if (($self->{options}->{noResult} eq 'DontAdd')); + } + else { $plugin->{type} = 'info'; - if (($itemNumber == 1) || ($self->{options}->{first})) + if (($itemNumber == 1) || ($self->{options}->{multipleResult} eq 'TakeFirst')) { $plugin->{wantedIdx} = 0; } + elsif($self->{options}->{multipleResult} eq 'AddWithoutInfo' ) + { + goto endPluginGetItemInfo; + } + elsif($self->{options}->{multipleResult} eq 'DontAdd' ) + { + next file; + } + elsif($self->{options}->{multipleResult} eq 'AskEnd' && !$inWaitingQueue) + { + # re push the filename at the end of the list, to be proceded + push @filesList,'WaitingList' if !$hasFileWaiting; + push @filesList,$file; + $hasFileWaiting=1; + next file; + } else { + # Ask the user to choose my $withNext = 0; my @items = $plugin->getItems; $resultsDialog->setWithNext(0); @@ -237,16 +450,17 @@ $plugin->{wantedIdx} = $resultsDialog->getItemsIndexes->[0]; } } - $info = $plugin->getItemInfo; - my $title = $info->{$titleField}; + $infoPlugin = $plugin->getItemInfo; + my $title = $infoPlugin->{$titleField}; $self->{options}->{parent}->{defaultPictureSuffix} = $plugin->getDefaultPictureSuffix; foreach my $field(@{$self->{model}->{managedImages}}) { - $info->{$field} = '' if $info->{$field} eq 'empty'; - next if !$info->{$field}; - ($info->{$field}) = $self->{options}->{parent}->downloadPicture($info->{$field}, $title); + $infoPlugin->{$field} = '' if $infoPlugin->{$field} eq 'empty'; + next if !$infoPlugin->{$field}; + ($infoPlugin->{$field}) = $self->{options}->{parent}->downloadPicture($infoPlugin->{$field}, $title); } - $info->{comment} = $self->getLang->{CommentAuto} + $infoPlugin->{plugin} =$plugin->getName(); + $infoPlugin->{comment} = $self->getLang->{CommentAuto} . "\n" . $self->getLang->{CommentSite} . $plugin->getName() @@ -255,26 +469,22 @@ . $name . "\n" . $extracted->{comment}->{displayed}; - - } - + endPluginGetItemInfo: + # Add the default value my $defaultInfo = $self->{model}->getInitInfo; - foreach my $field(keys %$defaultInfo) - { - next if exists $info->{$field}; - $info->{$field} = $defaultInfo->{$field}; - } - - # Addd info from file - $info->{$fileField} = $file; - foreach my $field(keys %$extracted) + + my $info; + # TODO : ask the user for order, or even for order on each fields + my @order=($defaultInfo,$infoFromFile,$infoFromFileName,$infoPlugin); + for my $infoSource(@order) { - next if $field eq 'comment'; - $info->{$field} = $extracted->{$field}->{value}; + foreach my $field(keys %$infoSource) + { + $info->{$field} =$infoSource->{$field} if $infoSource->{$field}; + } } - push @result, $info; $self->{options}->{parent}->restoreCursor; } diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportGCfilms.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportGCfilms.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportGCfilms.pm 2008-07-17 18:30:56.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportGCfilms.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportGCstar.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportGCstar.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportGCstar.pm 2008-07-17 18:30:56.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportGCstar.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportList.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportList.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportList.pm 2008-08-26 18:00:13.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportList.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportTarGz.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportTarGz.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportTarGz.pm 2008-08-27 18:15:22.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportTarGz.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/GCImportTellico.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/GCImportTellico.pm --- gcstar-1.4.3/lib/gcstar/GCImport/GCImportTellico.pm 2008-07-17 18:30:56.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/GCImportTellico.pm 2009-11-21 08:50:57.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/entries --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/entries 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,436 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/lib/gcstar/GCImport +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-05-21T01:30:01.148613Z +1674 +bubblegum + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +GCImportAMC.pm +file + + + + +2009-11-21T08:50:57.303382Z +05d82ba4f370cd3512bfd075824c876f +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +6983 + +GCImportDVDProfiler.pm +file + + + + +2009-11-21T08:50:57.307383Z +4a7a5fceeb66203b0b0a97b0c5929e87 +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +4959 + +GCImportGCstar.pm +file + + + + +2009-11-21T08:50:57.307383Z +f9f0209208bf0e4ef560597950084ffe +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +2554 + +GCImportGCfilms.pm +file + + + + +2009-11-21T08:50:57.307383Z +33890f131de247f216c4cd8159a4362c +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +5626 + +GCImportTarGz.pm +file + + + + +2009-11-21T08:50:57.307383Z +b2d3b20edda08ac7cc61f2b6f646ce2d +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +3808 + +GCImportAlexandria.pm +file + + + + +2009-11-21T08:50:57.311382Z +5b4bb1574523265b1e6043da83e18e44 +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +4665 + +GCImportMyMovies.pm +file + + + + +2009-11-21T08:50:57.311382Z +e0b6d38f18a445848a0b9cc60135ebb7 +2008-07-17T17:44:48.516738Z +1476 +tian + + + + + + + + + + + + + + + + + + + + + +5358 + +GCImportBase.pm +file + + + + +2009-11-21T08:50:57.311382Z +39cb81d3d262409521f7f0c9894083dd +2009-05-20T23:33:50.459446Z +1673 +bubblegum + + + + + + + + + + + + + + + + + + + + + +5373 + +GCImportCSV.pm +file + + + + +2009-11-21T08:50:57.311382Z +2e91f94d0893c84282b259eea3498014 +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +3673 + +GCImportFolder.pm +file + + + + +2009-11-21T08:50:57.311382Z +c768e486f72565db4635bf8a8c1b8797 +2009-05-21T01:30:01.148613Z +1674 +bubblegum + + + + + + + + + + + + + + + + + + + + + +18881 + +GCImportList.pm +file + + + + +2009-11-21T08:50:57.315380Z +c9c8390b094657f2a39f3e1db90355ab +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +5934 + +GCImportTellico.pm +file + + + + +2009-11-21T08:50:57.315380Z +206392bae58234ad7af73f68d236be2a +2009-01-01T19:14:14.110401Z +1595 +tian + + + + + + + + + + + + + + + + + + + + + +14539 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportAlexandria.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportAlexandria.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportAlexandria.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportAlexandria.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,205 @@ +package GCImport::GCImportAlexandria; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterAlexandria; + + use base qw(GCImport::GCImportBaseClass); + use File::Copy; + use Encode; + use GCUtils 'glob'; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + bless ($self, $class); + $self->{errors} = ''; + + return $self; + } + + sub getName + { + return "Alexandria"; + } + + sub getOptions + { + my $self = shift; + return [ + { + name => 'where', + type => 'options', + label => 'Where', + default => 'Default', + valuesList => 'Default,Specified' + } + ]; + } + + sub getFilePatterns + { + my $self = shift; + + return (); + } + + #Return supported models name + sub getModels + { + return ['GCbooks']; + } + + sub getModelName + { + my $self = shift; + + return 'GCbooks'; + } + + sub wantsFieldsSelection + { + return 0; + } + + sub wantsFileSelection + { + return 0; + } + + sub wantsDirectorySelection + { + return 1; + } + + sub getEndInfo + { + my $self = shift; + + return ''; + } + + sub getItemsArray + { + my ($self, $directory) = @_; + + my @result = (); + + my @files; + $directory = $ENV{HOME}.'/.alexandria' + if $self->{options}->{where} eq 'Default'; + + foreach (glob "$directory/*") + { + if (-d $_) + { + my @array = glob "$_/*"; + foreach my $file(glob "$_/*") + { + push @files, $file if $file =~ /yaml$/; + } + } + push @files, $_ if /yaml$/; + } + + foreach (@files) + { + push @result, $self->getBook($_); + } + + return \@result; + } + + sub transformValue + { + my ($self, $value) = @_; + + $value =~ s/^"(.*)"$/$1/; + $value =~ s/\\x([0-9a-fA-F]{2})/pack("H2",$1)/ge; + $value = decode('UTF-8', $value); + + return $value; + } + + sub getBook + { + my ($self, $file) = @_; + + my %book; + open BOOK, "<$file"; + binmode(BOOK, ':utf8'); + # 1st line contain ruby information + my $line = ; + my $current = ''; + my $value = ''; + foreach () + { + next if /^#/; + if (/^([a-z_]*): (.*)$/) + { + $current = $1; + next if $current eq 'saved_ident'; + # Tag conversion + $current = 'lendDate' if $current eq 'loaned_since'; + $current = 'borrower' if $current eq 'loaned_to'; + $book{$current} = $self->transformValue($2); + } + elsif (/^\s*- (.*)$/) + { + $book{$current} ||= []; + push @{$book{$current}}, [$self->transformValue($1)]; + } + } + close BOOK; + #Some adjustments + $book{rating} *= 2; + $book{lendDate} =~ s|^([0-9]{4})-([0-9]{2})-([0-9]{2}).*$|$3/$2/$1|; + if ($book{loaned} eq 'false') + { + $book{borrower} = 'none'; + $book{lendDate} = ''; + } + delete $book{loaned}; + #cover + $file =~ s/yaml$/cover/; + if (-e $file) + { + my $pic = $self->{options}->{parent}->getUniqueImageFileName('jpg', $book{title}); + copy $file, $pic; + $book{cover} = $pic; + } + return \%book; + } + +} + + + + +1; \ No newline at end of file diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportAMC.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportAMC.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportAMC.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportAMC.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,234 @@ +package GCImport::GCImportAMC; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterAMC; + use base qw(GCImport::GCImportBaseClass); + + use File::Basename; + use File::Copy; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + $self->{fileId} = " AMC_X.Y Ant Movie Catalog 3.5.x www.buypin.com www.antp.be "; + + bless ($self, $class); + return $self; + } + + sub getName + { + return "Ant Movie Catalog (.amc)"; + } + + sub getFilePatterns + { + return (['Ant Movie Catalog (.amc)', '*.amc']); + } + + #Return supported models name + sub getModels + { + return ['GCfilms']; + } + + #Return current model name + sub getModelName + { + return 'GCfilms'; + } + + sub getOptions + { + my $self = shift; + my @options; + return \@options; + } + + # Ignored for the moment + sub wantsFieldsSelection + { + return 0; + } + sub getEndInfo + { + return ""; + } + + sub readBool + { + my $self = shift; + + my $value; + read $self->{file}, $value, 1; + return unpack('C',$value); + } + + sub readInt + { + my $self = shift; + + my $value; + read $self->{file}, $value, 4; + $value = unpack('L',$value); + return undef if $value == 4294967295; + return $value; + } + + sub readString + { + my $self = shift; + my $binary = shift; + + my $length = $self->readInt; + my $string; + + return '' if $length == 0; + read $self->{file}, $string, $length; + + #$string =~ s/\n//gm if !$binary; + $string =~ s/\|/,/gm if !$binary; + + return $string; + } + + sub getItemsArray + { + my ($self, $file) = @_; + my @result; + + open ITEMS, $file; + binmode ITEMS; + $self->{file} = \*ITEMS; + + my $identifier; + read ITEMS, $identifier, length($self->{fileId}); + ($self->{AMCVersion} = $identifier) =~ s/.*?AMC_(\d+)\.(\d+).*/$1.$2/; + my @versions = split m/\./, $self->{AMCVersion}; + $self->{AMCMajorVersion} = $versions[0]; + $self->{AMCMinorVersion} = $versions[1]; + + $self->readString; # name + $self->readString; # mail + if (($self->{AMCMinorVersion} <= 3) && ($self->{AMCMinorVersion} < 5)) + { + $self->readString; # icq + } + $self->readString; # site + $self->readString; # description + + my $baseDir = dirname($file); + + my $i = 0; + + while (! eof ITEMS) + { + $result[$i]->{identifier} = $self->readInt; #Id + $self->readInt; #Add date + $result[$i]->{rating} = $self->readInt; + + if (($self->{AMCMinorVersion} >= 3) && ($self->{AMCMinorVersion} >= 5)) + { + use integer; + $result[$i]->{rating} /= 10; + } + + $result[$i]->{date} = $self->readInt; + $result[$i]->{time} = $self->readInt; + my $ vb = $self->readInt; #Video bitrate + my $ab = $self->readInt; #Audio bitrate + $result[$i]->{number} = $self->readInt; + + $self->readBool; #Checked + + $result[$i]->{place} = $self->readString; #Media label + $result[$i]->{format} = $self->readString; + $self->readString; #Source + $result[$i]->{borrower} = $self->readString; + $result[$i]->{borrower} = 'none' if ! $result[$i]->{borrower}; + $result[$i]->{original} = $self->readString; + $result[$i]->{title} = $self->readString; + $result[$i]->{title} = $result[$i]->{original} if !$result[$i]->{title}; + + $result[$i]->{director} = $self->readString; + $self->readString; #Producer + $result[$i]->{country} = $self->readString; + $result[$i]->{genre} = [[$self->readString]]; + $result[$i]->{actors} = $self->readString; + $result[$i]->{webPage} = $self->readString; + $result[$i]->{synopsis} = $self->readString; + $result[$i]->{comment} = $self->readString; + $result[$i]->{video} = $self->readString; + my $encodings = $self->readString; #Audio format + my $res = $self->readString; #Resolution + $self->readString; #Framerate + $result[$i]->{audio} = $self->readString; + if ($result[$i]->{audio}) + { + my @encodings = split /,/,$encodings; + $result[$i]->{audio} =~ s/(^|,)([^;]*?)(,|$)/$1$2;$_$3/ foreach (@encodings); + $result[$i]->{audio} =~ s/, +/,/g; + $result[$i]->{audio} =~ s/; +/;/g; + } + $result[$i]->{subt} = [[$self->readString]]; + $self->readString; #File size + $result[$i]->{image} = $self->readString; + + my $picture = $self->readString(1); + + if ($result[$i]->{image} =~ /^\..{3}/) + { + my $pictureName = $self->{options}->{parent}->getUniqueImageFileName($result[$i]->{image}, + $result[$i]->{title}); + open PIC, "> $pictureName"; + binmode PIC; + print PIC $picture; + close PIC; + $result[$i]->{image} = $self->{options}->{parent}->transformPicturePath($pictureName); + } + else + { + if (! File::Spec->file_name_is_absolute($result[$i]->{image})) + { + $result[$i]->{image} = $baseDir . $result[$i]->{image}; + } + #copy $result[$i]->{image}, $pictureName; + } + + $i++; + } + + close ITEMS; + + return \@result; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportBase.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportBase.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportBase.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportBase.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,210 @@ +package GCImport::GCImportBase; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCExportImport; + +{ + package GCImport::GCImportBaseClass; + + use base 'GCExportImportBase'; + use File::Basename; + use File::Copy; + + #Methods to be overriden in specific classes + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new; + + $self->{parsingError} = ''; + $self->{modelAlreadySet} = 0; + + bless ($self, $class); + return $self; + } + + sub getFilePatterns + { + return (['*.*', '*.*']); + } + + sub getSuffix + { + my $self = shift; + return '' if ! ($self->getFilePatterns)[0]; + (my $pattern = ($self->getFilePatterns)[0]->[1]) =~ s/.*?([[:alnum:]]+)/$1/; + return $pattern; + } + + #Return supported models name + sub getModels + { + return []; + } + + #Return current model name + sub getModelName + { + return 'GCfilms'; + } + + sub getOptions + { + } + + sub wantsFieldsSelection + { + return 0; + } + + sub wantsIgnoreField + { + return 0; + } + + sub wantsImagesSelection + { + return 0; + } + + sub wantsFileSelection + { + return 1; + } + + sub wantsDirectorySelection + { + return 0; + } + + sub generateId + { + return 1; + } + + sub getEndInfo + { + } + + sub getItemsArray + { + } + + #End of methods to be overriden + + # If you need really specific processing, you can instead override the process method + + sub process + { + my ($self, $options) = @_; + $self->{options} = $options; + + $options->{parent}->{items}->updateSelectedItemInfoFromPanel; + my $alreadySaved = 0; + if ($options->{newList}) + { + return if !$options->{parent}->checkAndSave; + $alreadySaved = 1; + $options->{parent}->setFile(''); + } + $self->{options}->{parent}->setWaitCursor($self->{options}->{lang}->{ImportListTitle}.' ('.$options->{file}.')'); + my @tmpArray = @{$self->getItemsArray($options->{file})}; + + if ($self->{parsingError}) + { + $self->{options}->{parent}->restoreCursor; + return $self->getEndInfo; + } + + my $realModel = $self->getModelName; + + # Here we really know the model so we force a new list if needed + if (($options->{newList}) + || ($options->{parent}->{model}->getName ne $realModel)) + { + $options->{parent}->newList($realModel, $self->{modelAlreadySet}, $alreadySaved); + } + + my $generateId = $self->generateId; + foreach (@tmpArray) + { + $options->{parent}->{items}->addItem($_, !$generateId, 1); + } + $options->{parent}->{items}->unselect; + $self->{options}->{parent}->restoreCursor; + + $options->{parent}->checkPanelVisibility; + $options->{parent}->selectFirst; + $options->{parent}->markAsUpdated; + $options->{parent}->viewAllItems; + return $self->getEndInfo; + } + + # This method could only be use if $self->{model} has been initialized + sub copyPictures + { + my ($self, $itemsArray, $file) = @_; + return if !$self->{model}; + foreach my $item(@$itemsArray) + { + my $title = $item->{$self->{model}->{commonFields}->{title}}; + foreach my $field(@{$self->{model}->{fieldsImage}}) + { + (my $suffix = $item->{$field}) =~ s/.*?(\.[^.]*)$/$1/; + my $imageFile = $self->{options}->{parent}->getUniqueImageFileName($suffix, $title); + copy(GCUtils::getDisplayedImage($item->{$field}, '', $file), + $imageFile) + if $item->{$field}; + $item->{$field} = $imageFile; + } + } + } + + # 3 methods below are created to implement interface + # from GCFrame plugins could need to simulate if using + # some backends + sub preloadModel + { + my ($self, $model) = @_; + # Preload the model into the factory cache + $self->{modelsFactory}->getModel($model); + } + + sub setCurrentModel + { + my ($self, $model) = @_; + $self->{model} = $self->{modelsFactory}->getModel($model); + } + + sub setCurrentModelFromInline + { + my ($self, $container) = @_; + $self->{model} = GCModelLoader->newFromInline($self, $container); + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportCSV.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportCSV.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportCSV.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportCSV.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,169 @@ +package GCImport::GCImportCSV; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use utf8; + +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterCSV; + + use base qw(GCImport::GCImportBaseClass); + use Encode; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + + bless ($self, $class); + return $self; + } + + sub wantsFieldsSelection + { + return 1; + } + + sub wantsIgnoreField + { + return 1; + } + + sub wantsFileSelection + { + return 1; + } + + sub getName + { + my $self = shift; + + return "CSV"; + } + + sub getFilePatterns + { + return (['CSV (*.csv)', '*.csv']); + } + + sub getOptions + { + my $self = shift; + + my $charsets = ''; + my @charsetList = Encode->encodings(':all'); + foreach (@charsetList) + { + $charsets .= $_.','; + } + + return [ + { + name => 'sep', + type => 'short text', + label => 'Separator', + default => ';' + }, + + { + name => 'charset', + type => 'options', + label => 'Charset', + valuesList => $charsets, + default => 'utf8', + }, + + { + name => 'withHeader', + type => 'yesno', + label => 'Header', + default => '1' + }, + + ]; + } + + sub getModelName + { + my $self = shift; + return $self->{model}->getName; + } + + sub getItemsArray + { + my ($self, $file) = @_; + my @result; + + open ITEMS, $file; + binmode(ITEMS, ':utf8') + if $self->{options}->{charset} eq 'utf8';; + + my $i = 0; + my $sep = $self->{options}->{sep}; + my $ignoreFirstLine = $self->{options}->{withHeader}; + + while () + { + if ($ignoreFirstLine) + { + $ignoreFirstLine = 0; + next; + } + + chomp; + # Special characters are escaped + my @values = split m/\Q$sep\E/; + + $result[$i] = {}; + my $j = 0; + foreach (@{$self->{options}->{fields}}) + { + $values[$j] = decode($self->{options}->{charset}, $values[$j]) + if $self->{options}->{charset} ne 'utf8'; + $result[$i]->{$_} = $values[$j]; + $j++; + } + + $i++; + } + close ITEMS; + + + return \@result; + } + + + sub getEndInfo + { + my $self = shift; + my $message; + + return $message; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportDVDProfiler.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportDVDProfiler.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportDVDProfiler.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportDVDProfiler.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,192 @@ +package GCImport::GCImportDVDProfiler; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterDVDProfiler; + + use base qw(GCImport::GCImportBaseClass); + + use XML::Simple; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + bless ($self, $class); + + return $self; + } + + sub getName + { + return "DVDProfiler (.xml)"; + } + + sub getOptions + { + my $self = shift; + my @options; + return \@options; + } + + sub getFilePatterns + { + return (['DVDProfiler (.xml)', '*.xml']); + } + + #Return supported models name + sub getModels + { + return ['GCfilms']; + } + + # Ignored for the moment + sub wantsFieldsSelection + { + return 0; + } + sub getEndInfo + { + return ""; + } + + sub getItemsArray + { + my ($self, $file) = @_; + my $xml; + my $data; + # creer un objet + $xml = XML::Simple->new; # sans keyAttr les dvd seront dans une liste ou chaque dvd sera identifie par l'emplacement qu'il a dans cette liste + $data = $xml->XMLin ("$file"); + + + my @result; + my $film; + + foreach $film(@{$data->{DVD}}){ + my $item; + + $item->{title} = $film->{Title}; + $item->{date} = $film->{ProductionYear}; + $item->{time} = $film->{RunningTime}.' mn'; + $item->{synopsis} = $film->{Overview}; + ####### DIRECTOR ######### + my $director; + + if (ref ($film->{Credits}->{Credit}) eq "ARRAY") { + foreach $director(@{$film->{Credits}->{Credit}}){ + if (($director->{CreditType}) eq 'Direction') { + $item->{director} .= $director->{FirstName}.' '.$director->{LastName}.', '; + + } + } + } + else { + if (($film->{Credits}->{Credit}->{CreditType}) eq 'Direction') { + $item->{director} .= $film->{Credits}->{Credit}->{FirstName}.' '.$film->{Credits}->{Credit}->{LastName}; + } + } + ###### END DIRECTOR ###### + + ####### ACTORS ######### + my $actor; + if (ref ($film->{Actors}->{Actor}) eq "ARRAY") { + foreach $actor(@{$film->{Actors}->{Actor}}){ + $item->{actors} .= $actor->{FirstName}.' '.$actor->{LastName}.' '.'('.$actor->{Role}.')'.', '; + + } + } + else { + $item->{actors} .= $film->{Actors}->{Actor}->{'FirstName'}.' '.$film->{Actors}->{Actor}->{LastName}.' '.'('.$film->{Actors}->{Actor}->{Role}.')'; + } + ###### END ACTORS ###### + + ####### AUDIO ######### + my $audio; + if (ref ($film->{Audio}->{AudioFormat}) eq "ARRAY"){ + foreach $audio(@{$film->{Audio}->{AudioFormat}}){ + $item->{audio} .= $audio->{AudioLanguage}.', '; + + } + } + else { + $item->{audio} .= $film->{Audio}->{AudioFormat}->{'AudioLanguage'}; + } + ###### END AUDIO ###### + ####### SUBT ######### + my $subt; + if (ref ($film->{Subtitles}->{Subtitle}) eq "ARRAY"){ + foreach $subt(@{$film->{Subtitles}->{Subtitle}}){ + $item->{subt} .= $subt.', '; + + } + } + else { + $item->{subt} = $film->{Subtitles}->{Subtitle}; + } + ####### END SUBT ######### + ####### TYPE ######### + my $type; + if (ref ($film->{Genres}->{Genre}) eq "ARRAY"){ + foreach $type(@{$film->{Genres}->{Genre}}){ + $item->{type} .= $type.','; + + } + } + else { + $item->{type} = $film->{Genres}->{Genre}; + } + ####### END TYPE ######### + + #$item->{original} = $film->{Title}; + #$item->{subt} = $film->{Subtitles}->{Subtitle}; + #$item->{borrower} = $film->{Title}; + #$item->{lendDate} = $film->{Title}; + #$item->{history} = $film->{Title}; + #$item->{seen} = $film->{Title};# non par defaut ? + #$item->{comment} = $film->{Title}; + #$item->{image} = $film->{Title}; + #$item->{country} = $film->{Title}; + #$item->{number} = $film->{CollectionNumber}; + #$item->{rating} = $film->{Title};# note par defaut + #$item->{format} = $film->{Title};#DVD par d�faut ? + #$item->{webPage} = $film->{Title}; + #$item->{place} = $film->{Title}; + $item->{director} =~ s/, $//; + $item->{actors} =~ s/, $//; + $item->{audio} =~ s/, $//; + $item->{subt} =~ s/, $//; + $item->{type} =~ s/, $//; + push @result, $item; + } + return \@result; + + } +} + +1; \ No newline at end of file diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportFolder.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportFolder.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportFolder.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportFolder.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,504 @@ +package GCImport::GCImportFolder; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; + +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterFolder; + + use File::Find; + use File::Basename; + use base qw(GCImport::GCImportBaseClass); + + use GCPlugins; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + + bless ($self, $class); + return $self; + } + + sub wantsFieldsSelection + { + return 0; + } + + sub wantsFileSelection + { + return 1; + } + + sub wantsDirectorySelection + { + return 1; + } + + sub getFilePatterns + { + return (); + } + + #Return supported models name + sub getModels + { + return ['GCfilms', 'GCMusics']; + } + + sub getOptions + { + my $self = shift; + + my $pluginsList; + foreach (@{$self->{model}->getPluginsNames}) + { + my $plugin = $GCPlugins::pluginsMap{$self->{model}->getName}->{$_}; + push @$pluginsList,$plugin->getName; + } + + + return [ + { + name => 'plugin', + type => 'options', + label => 'Plugin', + valuesList => $pluginsList + }, + { + name => 'multipleResult', + type => 'options', + label => 'MultipleResult', + tooltip => 'MultipleResultTooltip', + valuesList => 'Ask,AskEnd,AddWithoutInfo,DontAdd,TakeFirst', + default => 'Ask', + }, + { + name => 'noResult', + type => 'options', + label => 'NoResult', + tooltip => 'NoResultTooltip', + valuesList => 'AddWithoutInfo,DontAdd', # TODO AskNewName AskNewPlugin at End + default => 'AddEmpty', + }, + { + name => 'recursive', + type => 'yesno', + label => 'Recursive', + default => '1' + }, + + { + name => 'suffixes', + type => 'short text', + label => 'Suffixes', + tooltip => 'SuffixesTooltip', + default => '', + }, + + { + name => 'remove', + type => 'short text', + label => 'Remove', + tooltip => 'RemoveTooltip', + default => '', + }, + { + name => 'removeWholeWord', + type => 'yesno', + label => 'RemoveWholeWord', + tooltip => 'RemoveTooltipWholeWord', + default => '1', + }, + { + name => 'removeRegularExpr', + type => 'yesno', + label => 'RemoveRegularExpr', + tooltip => 'RemoveTooltipRegularExpr', + changedCallback => sub { + my ($self,$widget) =@_; + $widget->[0]->{options}->{removeWholeWord}->lock($self->getValue); + }, + default => '0', + }, + { + name => 'skipFileAlreadyInCollection', + type => 'options', + label => 'SkipFileAlreadyInCollection', + tooltip => 'SkipFileAlreadyInCollectionTooltip', + valuesList => 'SkipFileNo,SkipFileFullPath,SkipFileFileName,SkipFileFileNameAndUpdate', + default => 'SkipFileNo', + }, + { + name => 'infoFromFileNameRegExp', + type => 'history text', + label => 'InfoFromFileNameRegExp', + tooltip => 'InfoFromFileNameRegExpTooltip', + initValues => ['', + '^$A\s*([[\(]part $x( of $y)?[)\]])?\s*([[\(]$Y[)\]])?\s*$', + '^$N\s+[^\w ]\s+S$SE$E\s+[^\w ]\s+$T\s+([[(]part $x( of $y)?[)\]])?\s*$', + ], + default => '', + }, + ]; + + + } + + sub getModelName + { + my $self = shift; + return $self->{model}->getName; + } + + # Required by extracter to make this class acts as a panel + sub AUTOLOAD + { + return []; + } + + sub getItemsArray + { + my ($self, $directory) = @_; + my @result; + my @filesList; + + #First we try to get the correct plugin + my $plugin = $GCPlugins::pluginsMap{$self->{model}->getName}->{$self->{options}->{plugin}}; + $plugin->{bigPics} = $self->{options}->{parent}->{options}->bigPics; + my $titleField = $self->{model}->{commonFields}->{title}; + my $fileField = $self->{model}->{commonFields}->{play}; + + # Required by extracter + $self->{lang} = $self->{options}->{lang}; + + (my $suffixes = $self->{options}->{suffixes}) =~ s/[,; ]/\|/g; + $suffixes =~ s/\*\.//g; + # Create list of files + if ($self->{options}->{recursive}) + { + find(sub { + return if -d $File::Find::name; + return if ! /$suffixes$/; + my $name=Encode::decode_utf8($File::Find::name); + push @filesList, $name; + }, $directory); + } + else + { + foreach (glob "$directory/*") + { + next if -d $_; + next if ! /$suffixes$/; + push @filesList, $_; + } + } + my $resultsDialog; + # initialize choose good result dialog if needed + if (($self->{options}->{multipleResult} ne 'Ask') || ($self->{options}->{multipleResult} ne 'AskEnd')) + { + $resultsDialog = $self->{options}->{parent}->getDialog('Results'); + $resultsDialog->setModel($self->{model}, $self->{model}->{fieldsInfo}); + $resultsDialog->setMultipleSelection(0); + } + #Initialize stuff to retrieve info from name with regexp + my $infoFromName; + if ($self->{options}->{infoFromFileNameRegExp} ne '') + { + my %knownParam=($titleField=>'T',alphabTitle=>'A',year=>'Y',season=>'S',episode=>'E',alphabSeries=>'N',number=>'x',totNumber=>'y'); + my $orderStr= $self->{options}->{infoFromFileNameRegExp}; + $orderStr=~ s/(?{options}->{infoFromFileNameRegExp}; + # avoid capturing something else than $T,$A ... make already present () not capturing + $myRegExp =~ s/(?{model}->{parent}->{articles}}).')\'?\b'; + my $myRegExpArt=qr/^(.*?)(?:, ?($articles))?$/i; + + $myRegExp =~ s/\$A/(.*?(?:, ?$articles)?)/g; + $myRegExp =~ s/\$N/(.*?(?:, ?$articles)?)/g; + $myRegExp =~ s/\$T/(.*?)/; + $myRegExp =~ s/\$Y/(\\d{2}|\\d{4}?)/; + $myRegExp =~ s/\$x/(\\d{1,2})/; + $myRegExp =~ s/\$y/(\\d{1,2})/; + $myRegExp =~ s/\$E/(\\d{1,4}?)/; + $myRegExp =~ s/\$S/(\\d{1,2}?)/; + sub deAlpha{ + my $s; + $_[0]=~$myRegExpArt; + $s=$1; + my $a=$2.' ' if $2 && (substr($2,-1) ne '\''); + $s=$a.$s if $a; + return $s; + } + # Check if regexp is good + my $pattern = shift; + my $test = eval { $myRegExp=qr/$myRegExp/i }; + #print $myRegExp; + # + if ($@) + { + $myRegExp= qr/./ ;print $@; + } + my $i=2; + $infoFromName=sub { + my $n=$_[0] ; + $n=~ $myRegExp; + my %info; # TODO Can be more readable in Perl 5.10 by using named capturing + $info{$places{1}}=$1 if $1;$info{$places{2}}=$2 if $2;$info{$places{3}}=$3 if $3;$info{$places{4}}=$4 if $4;$info{$places{5}}=$5 if $5; + $info{$places{6}}=$6 if $6;$info{$places{7}}=$7 if $7;$info{$places{8}}=$8 if $8;$info{$places{9}}=$9 if $9;$info{$places{10}}=$10 if $10; + $info{$places{11}}=$11 if $11;$info{$places{12}}=$12 if $12;$info{$places{13}}=$13 if $13;$info{$places{14}}=$14 if $14;$info{$places{15}}=$15 if $15; + $info{$places{16}}=$16 if $16;$info{$places{17}}=$17 if $17;$info{$places{18}}=$18 if $18;$info{$places{19}}=$19 if $19;$info{$places{20}}=$20 if $20; + + $info{$titleField}=deAlpha($info{alphabTitle}) if($info{alphabTitle}); + $info{series}=deAlpha($info{alphabSeries}) if($info{alphabSeries}); + return \%info; + } + } + # initialize regexp word to remove + my $removed =$self->{options}->{remove}; + if(!$self->{options}->{removeRegularExpr}) + { + $removed =~ s/[,; ]/\|/g; + if($self->{options}->{removeWholeWord}) + { + $removed=~s/\|/\\b\|\\b/g ; + $removed='\b'.$removed.'\b'; + } + } + # if we want to ignore files already in the list + # we initialize a hash with filenames to be fast ! + my %fileNameKnown; + if($self->{options}->{skipFileAlreadyInCollection} ne 'SkipFileNo') + { + if($self->{options}->{skipFileAlreadyInCollection} eq 'SkipFileFullPath') + { + foreach my $originalFilm(@{$self->{options}->{originalList}->{itemArray}}) + { + $fileNameKnown{$originalFilm->{$fileField}}=$originalFilm; + } + } + else + { + foreach my $originalFilm(@{$self->{options}->{originalList}->{itemArray}}) + { + $fileNameKnown{basename($originalFilm->{$fileField})}=$originalFilm; + } + } + } + my $hasFileWaiting=0;my $inWaitingQueue=0; + # Main loop on files entries + file: foreach my $file(@filesList) + { + if($file eq 'WaitingList') + { + $inWaitingQueue=1; + next file; + } + # Skip file already in the collection + next file if(($self->{options}->{skipFileAlreadyInCollection} eq 'SkipFileFullPath') && (exists $fileNameKnown{$file})); + next file if(($self->{options}->{skipFileAlreadyInCollection} eq 'SkipFileFileName') && (exists $fileNameKnown{basename($file)})); + if(($self->{options}->{skipFileAlreadyInCollection} eq 'SkipFileFileNameAndUpdate') && (exists $fileNameKnown{basename($file)})) + { + # if filename already in collection, and collection full path invalid : correct it + if (!(-e $fileNameKnown{basename($file)}->{$fileField})) + { + print "Path updated : ",$fileNameKnown{basename($file)}->{$fileField},"\n"; + print " --> ",$file,"\n"; + $fileNameKnown{basename($file)}->{$fileField}=$file; + } + next file; + } + + # Get info from the file (avi, mp3, ...) + my $extracter = $self->{model}->getExtracter($self, $file, $self, $self->{model}); + my $extracted = $extracter->getInfo; + # Add info from file + my $infoFromFile={$fileField => $file}; + foreach my $field(keys %$extracted) + { + $infoFromFile->{$field} = $extracted->{$field}->{value}; + } + + # Test if subtitle is present + if ($self->{model}->getName eq 'GCfilms') + { + my @subtitlesExt=qw(sub srt); + my @subtitlesFiles; + my $startFileName=$file; + $startFileName=~s/\.[^.]*$//; + for my $ext(@subtitlesExt) + { + my $fileSubsName=$startFileName.'.'.$ext; + if(-e $fileSubsName) + { + #TODO Try to guess the language see cpan + my $lang=["Yes"]; + push @subtitlesFiles,$lang; + } + } + $infoFromFile->{subt}=\@subtitlesFiles if (@subtitlesFiles); + } + my $infoFromFileName; + my $name = basename($file); + # Filter the name + # Remove suffix + $name =~ s/\.[^.]*$//; + # Try to apply regexp on filename + if ($self->{options}->{infoFromFileNameRegExp} ne '') + { + $infoFromFileName=&$infoFromName($name); + $name = $infoFromFileName->{$titleField} if ($infoFromFileName->{$titleField} ne ''); + #TODO: Use this known info to search with plugin + } + # Remove everything between () {} [] + $name =~ s/[\(\[\{].*?[\)\]\}]/ /g; + # Remove special characters + $name =~ s/[-\._,#@"']/ /g; + #'" + # Remove info from extracter for movies + if ($self->{model}->getName eq 'GCfilms') + { + my $info = $extracted->{video}->{value}.'|'.$extracted->{audio}->{value}->[0]->[1]; + $info =~ s/ (.*?)//g; + $name =~ s/$info//g; + } + $name =~ s/$removed//gi; + + # $name contains the title to search + $plugin->{title} = $name; + $plugin->{type} = 'load'; + $plugin->{urlField} = $self->{model}->{commonFields}->{url}; + + #Initialize what will be pushed in the array + my $infoPlugin = {$titleField => $name}; + + $self->{options}->{parent}->setWaitCursor($self->{options}->{lang}->{StatusSearch}.' ('.$name.')'); + $plugin->load; + + my $itemNumber = $plugin->getItemsNumber; + + if ($itemNumber == 0) + { + goto endPluginGetItemInfo if (($self->{options}->{noResult} eq 'AddEmpty')); + next file if (($self->{options}->{noResult} eq 'DontAdd')); + } + else + { + $plugin->{type} = 'info'; + if (($itemNumber == 1) || ($self->{options}->{multipleResult} eq 'TakeFirst')) + { + $plugin->{wantedIdx} = 0; + } + elsif($self->{options}->{multipleResult} eq 'AddWithoutInfo' ) + { + goto endPluginGetItemInfo; + } + elsif($self->{options}->{multipleResult} eq 'DontAdd' ) + { + next file; + } + elsif($self->{options}->{multipleResult} eq 'AskEnd' && !$inWaitingQueue) + { + # re push the filename at the end of the list, to be proceded + push @filesList,'WaitingList' if !$hasFileWaiting; + push @filesList,$file; + $hasFileWaiting=1; + next file; + } + else + { + # Ask the user to choose + my $withNext = 0; + my @items = $plugin->getItems; + $resultsDialog->setWithNext(0); + $resultsDialog->setSearchPlugin($plugin); + $resultsDialog->setList($name, @items); + $resultsDialog->show; + if ($resultsDialog->{validated}) + { + $plugin->{wantedIdx} = $resultsDialog->getItemsIndexes->[0]; + } + } + $infoPlugin = $plugin->getItemInfo; + my $title = $infoPlugin->{$titleField}; + $self->{options}->{parent}->{defaultPictureSuffix} = $plugin->getDefaultPictureSuffix; + foreach my $field(@{$self->{model}->{managedImages}}) + { + $infoPlugin->{$field} = '' if $infoPlugin->{$field} eq 'empty'; + next if !$infoPlugin->{$field}; + ($infoPlugin->{$field}) = $self->{options}->{parent}->downloadPicture($infoPlugin->{$field}, $title); + } + $infoPlugin->{plugin} =$plugin->getName(); + $infoPlugin->{comment} = $self->getLang->{CommentAuto} + . "\n" + . $self->getLang->{CommentSite} + . $plugin->getName() + . "\n" + . $self->getLang->{CommentTitle} + . $name + . "\n" + . $extracted->{comment}->{displayed}; + } + endPluginGetItemInfo: + + # Add the default value + my $defaultInfo = $self->{model}->getInitInfo; + + my $info; + # TODO : ask the user for order, or even for order on each fields + my @order=($defaultInfo,$infoFromFile,$infoFromFileName,$infoPlugin); + for my $infoSource(@order) + { + foreach my $field(keys %$infoSource) + { + $info->{$field} =$infoSource->{$field} if $infoSource->{$field}; + } + } + push @result, $info; + $self->{options}->{parent}->restoreCursor; + } + return \@result; + } + + + sub getEndInfo + { + my $self = shift; + my $message; + + return $message; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportGCfilms.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportGCfilms.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportGCfilms.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportGCfilms.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,190 @@ +package GCImport::GCImportGCfilms; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterGCfilms; + use base qw(GCImport::GCImportBaseClass); + use File::Basename; + use File::Copy; + use GCUtils; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + + bless ($self, $class); + $self->{errors} = ''; + + #The fields as they were in GCfilms 6.1 + # If name has changed in GCstar, the comment contains the original one + $self->{fields} = [ + 'id', + 'title', + 'date', + 'time', + 'director', + 'country', # nat + 'genre', # type + 'image', + 'actors', + 'original', # orig + 'synopsis', + 'webPage', # url + 'seen', + 'format', + 'number', + 'place', + 'rating', + 'comment', + 'audio', + 'subt', + 'borrower', + 'lendDate', + 'borrowings', # history + 'age', + 'video', + 'serie', # collection + 'rank', + 'trailer', + ]; + + return $self; + } + + sub getName + { + return "GCfilms (.gcf)"; + } + + sub getFilePatterns + { + return (['GCfilms (.gcf)', '*.gcf']); + } + + #Return supported models name + sub getModels + { + return ['GCfilms']; + } + + sub getOptions + { + my $self = shift; + return [ + { + name => 'generate', + type => 'yesno', + label => 'ImportGenerateId', + default => '1' + }, + ]; + } + + # Ignored for the moment + sub wantsFieldsSelection + { + return 0; + } + sub generateId + { + my $self = shift; + return $self->{options}->{generate}; + } + sub getEndInfo + { + return ""; + } + + sub getItemsArray + { + my ($self, $file) = @_; + my @result; + + open MOVIES, "<$file"; + my $gotFirstLine = 0; + my $i = 0; + while () + { + chomp; + my @values = split m/\|/; + + if (!$gotFirstLine) + { + $gotFirstLine = 1; + if ($values[0] eq 'GCfilms') + { + binmode( MOVIES, ':utf8' ) if $values[2] eq 'UTF8'; + next; + } + } + my $idx = 0; + for my $field (@{$self->{fields}}) + { + my $value = $values[$idx]; + if ($field eq 'image') + { + my $origPath = GCUtils::getDisplayedImage($value, '', $file); + my $origFile = basename($origPath); + $origFile = $origPath = '' if ! -f $origPath; + # We copy the image only if it was a generated one and if we use the default path + if ($origFile =~ /^gcfilms_/) + { + # We don't change the filename as gcstar has a different pattern for automatic files + my $destPath = $self->{options}->{parent}->getImagesDir; + copy($origPath, $destPath) if $origPath ne $destPath; + $result[$i]->{image} = $destPath.$origFile; + } + else + { + # We use the full path + $result[$i]->{image} = $origPath; + } + } + else + { + $value =~ s|:|;|gm if $field eq 'borrowings'; + $value =~ s|
|\n|gm; + $value =~ s|<.*?>||gm; + if (!$value) + { + $value = 0 if $field eq 'age'; + $value = 'none' if $field eq 'borrower'; + } + $result[$i]->{$field} = $value; + } + $idx++; + } + $i++; + } + return \@result; + + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportGCstar.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportGCstar.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportGCstar.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportGCstar.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,106 @@ +package GCImport::GCImportGCstar; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterGCstar; + use base qw(GCImport::GCImportBaseClass); + + use GCBackend::GCBackendXmlParser; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + bless ($self, $class); + return $self; + } + + sub getName + { + return "GCstar (.gcs)"; + } + + sub getFilePatterns + { + return (['GCstar (.gcs)', '*.gcs']); + } + + sub getModelName + { + my $self = shift; + return $self->{model}->getName; + } + + sub getOptions + { + my $self = shift; + return [ + { + name => 'copyPics', + type => 'yesno', + label => 'CopyPictures', + default => '1' + }]; + } + + # Ignored for the moment + sub wantsFieldsSelection + { + return 0; + } + sub getEndInfo + { + return ""; + } + + sub getItemsArray + { + my ($self, $file) = @_; + + my $parent = $self->{options}->{parent}; + $self->{modelsFactory} = $parent->{modelsFactory}; + $self->{modelAlreadySet} = 0; + + my $copyPics = 1; + $copyPics = $self->{options}->{copyPics} + if exists $self->{options}->{copyPics}; + + my $backend = new GCBackend::GCBeXmlParser($self); + $backend->setParameters(file => $file); + my $loaded = $backend->load(0); + my $itemsArray = $loaded->{data}; + if ($copyPics) + { + $self->copyPictures($itemsArray, $file); + } + return $itemsArray; + + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportList.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportList.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportList.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportList.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,203 @@ +package GCImport::GCImportList; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; + +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterList; + + use base qw(GCImport::GCImportBaseClass); + + use GCPlugins; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + + bless ($self, $class); + return $self; + } + + sub wantsFieldsSelection + { + return 0; + } + + sub wantsFileSelection + { + return 1; + } + + sub getFilePatterns + { + return (); + } + + sub getOptions + { + my $self = shift; + + my $pluginsList = ''; + foreach (@{$self->{model}->getPluginsNames}) + { + my $plugin = $GCPlugins::pluginsMap{$self->{model}->getName}->{$_}; + $pluginsList .= $plugin->getName . ','; + } + + + return [ + { + name => 'plugin', + type => 'options', + label => 'Plugin', + valuesList => $pluginsList + }, + + { + name => 'first', + type => 'yesno', + label => 'UseFirst', + default => '1' + }, + ]; + + + } + + sub getModelName + { + my $self = shift; + return $self->{model}->getName; + } + + sub getItemsArray + { + my ($self, $file) = @_; + my @result; + + #First we try to get the correct plugin + my $plugin = $GCPlugins::pluginsMap{$self->{model}->getName}->{$self->{options}->{plugin}}; + $plugin->{bigPics} = $self->{options}->{parent}->{options}->bigPics; + + my $titleField = $self->{model}->{commonFields}->{title}; + + open ITEMS, $file; + binmode(ITEMS, ':utf8'); + + my $i = 0; + + my $resultsDialog; + if (!$self->{options}->{first}) + { + $resultsDialog = $self->{options}->{parent}->getDialog('Results'); + $resultsDialog->setModel($self->{model}, $self->{model}->{fieldsInfo}); + $resultsDialog->setMultipleSelection(0); + } + while () + { + chomp; + next if ! $_; + + # $_ contains the title to search + $plugin->{title} = $_; + $plugin->{type} = 'load'; + $plugin->{urlField} = $self->{model}->{commonFields}->{url}; + + #Initialize what will be pushed in the array + my $info = {$titleField => $_}; + + $self->{options}->{parent}->setWaitCursor($self->{options}->{lang}->{StatusSearch}.' ('.$_.')'); + $plugin->load; + + my $itemNumber = $plugin->getItemsNumber; + + if ($itemNumber != 0) + { + $plugin->{type} = 'info'; + if (($itemNumber == 1) || ($self->{options}->{first})) + { + $plugin->{wantedIdx} = 0; + } + else + { + my $withNext = 0; + my @items = $plugin->getItems; + $resultsDialog->setWithNext(0); + $resultsDialog->setSearchPlugin($plugin); + $resultsDialog->setList($_, @items); + $resultsDialog->show; + if ($resultsDialog->{validated}) + { + $plugin->{wantedIdx} = $resultsDialog->getItemsIndexes->[0]; + } + } + $info = $plugin->getItemInfo; + my $title = $info->{$titleField}; + $self->{options}->{parent}->{defaultPictureSuffix} = $plugin->getDefaultPictureSuffix; + foreach my $field(@{$self->{model}->{managedImages}}) + { + $info->{$field} = '' if $info->{$field} eq 'empty'; + next if !$info->{$field}; + ($info->{$field}) = $self->{options}->{parent}->downloadPicture($info->{$field}, $title); + } + $info->{comment} = $self->getLang->{CommentAuto} + . "\n" + . $self->getLang->{CommentSite} + . $plugin->getName() + . "\n" + . $self->getLang->{CommentTitle} + . $_ + . "\n"; + + # Add the default value + my $defaultInfo = $self->{model}->getInitInfo; + foreach my $field(keys %$defaultInfo) + { + next if exists $info->{$field}; + $info->{$field} = $defaultInfo->{$field}; + } + } + + push @result, $info; + $self->{options}->{parent}->restoreCursor; + } + close ITEMS; + return \@result; + } + + + sub getEndInfo + { + my $self = shift; + my $message; + + return $message; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportMyMovies.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportMyMovies.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportMyMovies.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportMyMovies.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,212 @@ +package GCImport::GCImportMyMovies; + +################################################################################# +# +# Created by Rob Maas rob@progob.nl | http://www.robmaas.eu (2008) +# +# +# This file is strongly based op the already existing DVDProfiler +# import class. It is also my first perl script :-) +# +# Since MyMovies has some different fields then GCStar, there are some work +# arounds to get as much of the original data. +# +# If the field ExtraFeatures is filled, it will appear in the General tab in +# the synopsis. +# +# The rating system will be calculated back to the Dutch rating system. +# +# If data was imported from IMDB, the webpage button will link to the specific +# movie site on IMDB. +# +# Cause GCstar hasn´t (yet?) a real EAN field, the EAN code is placed on the +# details tab under comments. +# +# Special thanks goes to Tian who helped me with some array trouble :-P and +# for creating this software. +# +################################################################################# + +use strict; +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterMyMovies; + + use base qw(GCImport::GCImportBaseClass); + + use XML::Simple; + use Switch; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + bless ($self, $class); + + return $self; + } + + sub getName + { + return "MyMovies (.xml)"; + } + + sub getOptions + { + my $self = shift; + my @options; + return \@options; + } + + sub getFilePatterns + { + return (['MyMovies (.xml)', '*.xml']); + } + + #Return supported models name + sub getModels + { + return ['GCfilms']; + } + + # Ignored for the moment + sub wantsFieldsSelection + { + return 0; + } + sub getEndInfo + { + return ""; + } + + sub getItemsArray + { + my ($self, $file) = @_; + my $xml; + my $data; + # Creates an object / Skip empty ellements + $xml = new XML::Simple(suppressempty => 1); + $data = $xml->XMLin ("$file"); + + my @result; + my $film; + + # For each "Title" in the XML file + foreach $film(@{$data->{Title}}){ + my $item; + + #General fields + $item->{title} = $film->{LocalTitle}; + $item->{original} = $film->{OriginalTitle}; + $item->{date} = $film->{ProductionYear}; + $item->{time} = $film->{RunningTime}.' min'; + $item->{synopsis} = $film->{Description}; + + #Extra's on the disc + if ($film->{ExtraFeatures}->{content}){ + $item->{synopsis} .= "\n\nEXTRA\n"; + $item->{synopsis} .= $film->{ExtraFeatures}->{content}; + } + + #Based on the Dutch ratings! + switch ($film->{ParentalRating}->{Value}){ + case 1 {$item->{age} = 1} + case 2 {$item->{age} = 2} + case 3 {$item->{age} = 5} + case 4 {$item->{age} = 12} + case [5..7] {$item->{age} = 16} + } + + if ($film->{DataProvider} eq 'IMDB.com'){ + $item->{webPage} = 'http://www.imdb.com/title/'.$film->{DataProviderId}; + } + $item->{country} = $film->{Country}; + + ###### GENRE ######### + my $type; + if (ref ($film->{Genres}->{Genre}) eq "ARRAY"){ + foreach $type(@{$film->{Genres}->{Genre}}){ + $item->{genre} .= $type.','; + } + } + else{ + $item->{genre} = $film->{Genres}->{Genre}; + } + ###### END GENRE ######### + ####### DIRECTOR AND ACTORS ######### + my $actor; + if (ref ($film->{Persons}->{Person}) eq "ARRAY") { + foreach $actor(@{$film->{Persons}->{Person}}){ + if ($actor->{Type} eq 'Director'){ + $item->{director} = $actor->{Name}; + } + else{ + $item->{actors}.= $actor->{Name}.' ('.$actor->{Role}.'), '; + } + } + } + else{ + $item->{actors}.= $film->{Persons}->{Person}->{Name}.' ('.$film->{Persons}->{Person}->{Role}.')'; + } + ###### END DIRECTOR AND ACTORS ###### + + ##DETAIL + $item->{format} = $film->{Type}; + $item->{video} = $film->{VideoStandard}; + $item->{added} = $film->{Added}; + $item->{identifier} = $film->{CollectionNumber}; + + #Temporately cause a real barcode field is missing + if (length($film->{Barcode}) gt 0){ + $item->{comment} = 'EAN: '.$film->{Barcode}; + } + + ###### AUDIO ######### + my $audio; + my @audioTracks; + if (ref ($film->{AudioTracks}->{AudioTrack}) eq "ARRAY"){ + foreach $audio(@{$film->{AudioTracks}->{AudioTrack}}){ + push @audioTracks, [$audio->{Language}, $audio->{Type}.' '.$audio->{Channels}]; + } + $item->{audio} = \@audioTracks; + } + else{ + $item->{audio} = [[$audio->{Language}, $audio->{Type}]]; + } + ###### END AUDIO ######### + ###### SUBTITLES ######### + my $subt; + if (ref ($film->{Subtitles}->{Subtitle}) eq "ARRAY"){ + foreach $subt(@{$film->{Subtitles}->{Subtitle}}){ + $item->{subt} .= $subt->{Language}.','; + } + } + else{ + $item->{subt} = $subt->{Language}; + } + ###### END SUBTITLES ######### + + #$item->{borrower} = $film->{Title}; + #$item->{lendDate} = $film->{Title}; + #$item->{history} = $film->{Title}; + #$item->{seen} = $film->{Title};# non par defaut ? + #$item->{image} = $film->{Title}; + #$item->{number} = $film->{CollectionNumber}; + #$item->{rating} = $film->{Title};# note par defaut + #$item->{place} = $film->{Title}; + + $item->{director} =~ s/, $//; + $item->{actors} =~ s/, $//; + $item->{audio} =~ s/, $//; + $item->{subt} =~ s/, $//; + $item->{genre} =~ s/, $//; + push @result, $item; + } + return \@result; + + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportTarGz.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportTarGz.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportTarGz.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportTarGz.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,152 @@ +package GCImport::GCImportTarGz; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterTarGz; + + use base qw(GCImport::GCImportBaseClass); + + use GCBackend::GCBackendXmlParser; + + use File::Spec; + use File::Temp qw/ tempfile tempdir /; + use Cwd; + use File::Copy; + + #use GCData; + + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + bless ($self, $class); + + $self->checkModule('Compress::Zlib'); + $self->checkModule('Archive::Tar'); + $self->checkModule('File::Path'); + + return $self; + } + + sub getName + { + return ".tar.gz"; + } + + sub getFilePatterns + { + return (['Tar gzip (.tar.gz)', '*.tar.gz']); + } + + sub getModelName + { + my $self = shift; + + return $self->{model}->getName; + } + + sub getOptions + { + my $self = shift; + my @options; + return \@options; + } + + # Ignored for the moment + sub wantsFieldsSelection + { + return 0; + } + sub getEndInfo + { + my $self = shift; + return ($self->{parsingError}, 'error'); + } + + sub addFieldsToDefaultModel + { + my ($self, $inlineModel) = @_; + my $model = GCModelLoader->newFromInline($self, {inlineModel => $inlineModel, defaultModifier => 1}); + $self->{model}->addFields($model); + $self->{options}->{parent}->setCurrentModel($self->{model}); + $self->{modelAlreadySet} = 1; + } + + sub getItemsArray + { + my ($self, $file) = @_; + + my ($tarFh, $tarFilename) = tempfile(); + my $gz = Compress::Zlib::gzopen($file, "rb"); + my $buffer; + print $tarFh $buffer while $gz->gzread($buffer) > 0 ; + close $tarFh; + $gz->gzclose; + + my $tmpDir = tempdir(); + my $oldCwd = getcwd; + chdir $tmpDir; + my $tar = Archive::Tar->new($tarFilename); + $tar->extract; + my $listFile = './collection.gcs'; + + my $parent = $self->{options}->{parent}; + $self->{modelsFactory} = $parent->{modelsFactory}; + $self->{modelAlreadySet} = 0; + + my $backend = new GCBackend::GCBeXmlParser($self); + $backend->setParameters(file => $listFile); + my $loaded = $backend->load(0); + my $itemsArray = []; + if ($loaded->{error}) + { + $self->{parsingError} = GCUtils::formatOpenSaveError( + $parent->{lang}, + $file, + $loaded->{error} + ); + } + else + { + $itemsArray = $loaded->{data}; + + #Copying pictures + $self->copyPictures($itemsArray, $file); + } + + #Cleaning + chdir $oldCwd; + File::Path::rmtree($tmpDir); + unlink $tarFilename; + + return $itemsArray; + } +} + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportTellico.pm.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportTellico.pm.svn-base --- gcstar-1.4.3/lib/gcstar/GCImport/.svn/text-base/GCImportTellico.pm.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport/.svn/text-base/GCImportTellico.pm.svn-base 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,486 @@ +package GCImport::GCImportTellico; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use GCImport::GCImportBase; + +{ + package GCImport::GCImporterTellico; + + use base qw(GCImport::GCImportBaseClass); + use File::Spec; + + sub new + { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(); + bless ($self, $class); + + $self->checkModule('Archive::Zip'); + $self->checkModule('MIME::Base64'); + + # Associate a Tellico type to a GCstar model + $self->{models} = { + 2 => 'GCbooks', + 3 => 'GCfilms', + 4 => 'GCmusics', + 8 => 'GCcoins', + 11 => 'GCgames' + }; + + return $self; + } + + sub getName + { + return "Tellico (.tc)"; + } + + sub getOptions + { + my $self = shift; + my @options; + return \@options; + } + + sub getFilePatterns + { + my $self = shift; + + return (['Tellico Format (.tc)', '*.tc'], ['Tellico XML (.xml)', '*.xml']); + } + + #Return supported models name + sub getModels + { + my $self = shift; + my @models = values %{$self->{models}}; + return \@models; + } + + sub getModelName + { + my $self = shift; + + return $self->{extractedModel}; + } + + sub wantsFieldsSelection + { + return 0; + } + + sub getEndInfo + { + my $self = shift; + + return $self->{parsingError}; + } + + sub getItemsArray + { + my ($self, $file) = @_; + + my @result = (); + + my $xml; + + # File type is based on suffix + # T is for Tellico (zipped file) + # X is for XML + $self->{type} = ($file =~ m/tc$/) ? 'T' : 'X'; + #Then we test to be sure + eval + { + $self->{zip} = Archive::Zip->new($file); + }; + #First we uncompress file + if (($self->{type} eq 'T') && ($self->{zip})) + { + $xml = $self->{zip}->contents('tellico.xml'); + } + else + { + $self->{type} = 'X'; + open XML, $file; + $xml = do {local $/; }; + close XML; + } + + #Then we parse XML data + my $xs = XML::Simple->new; + my $tellico = $xs->XMLin($xml, + SuppressEmpty => '', + ForceArray => 1); + my $collection = $tellico->{collection}->[0]; + + $self->{extractedModel} = $self->{models}->{$collection->{type}}; + #We check we know this model + if (! $self->{extractedModel}) + { + $self->{parsingError} = $self->getLang->{NotSupported}; + return \@result; + } + + my %tmpMap; + # If there are no ids, we have an array in $collection + if (ref ($collection->{entry}) eq 'ARRAY') + { + my $i = 0; + #Then we prepare a map + foreach (@{$collection->{entry}}) + { + $tmpMap{$i} = $_; + $i++; + } + } + else + { + %tmpMap = %{$collection->{entry}}; + } + #Loop on entries + my $i = 0; + + my $methodName = 'get'.$self->{extractedModel}.'Item'; + + while (my ($id, $entry) = each (%tmpMap)) + { + $result[$i] = $self->$methodName($entry, $collection); + $i++; + } + return \@result; + + } + + sub getGCfilmsItem + { + my ($self, $entry, $collection) = @_; + + my %result; + + $result{title} = $entry->{title}->[0]; + $result{format} = $entry->{medium}->[0]; + $result{date} = $entry->{year}->[0]; + my $certification = $entry->{certification}->[0]; + if ($certification eq 'U (USA)') + { + $result{age} = 1; + } + elsif ($certification eq 'G (USA)') + { + $result{age} = 2; + } + elsif ($certification eq 'PG (USA)') + { + $result{age} = 5; + } + elsif ($certification eq 'PG-13 (USA)') + { + $result{age} = 13; + } + elsif ($certification eq 'R (USA)') + { + $result{age} = 17; + } + $result{genre} = []; + if ($entry->{genres}->[0]) + { + for my $genre(@{$entry->{genres}->[0]->{genre}}) + { + push @{$result{genre}}, [$genre]; + } + } + if ($entry->{nationalitys}->[0]) + { + for my $country(@{$entry->{nationalitys}->[0]->{nationality}}) + { + $result{country} .= $country.', '; + } + } + $result{country} =~ s/, $//; + + $result{video} = $entry->{format}->[0]; + if ($entry->{casts}->[0]) + { + for my $cast(@{$entry->{casts}->[0]->{cast}}) + { + $result{actors} .= $cast->{column}->[0]; + $result{actors} .= ' ('.$cast->{column}->[1].')' if $cast->{column}->[1]; + $result{actors} .= ', '; + } + } + $result{actors} =~ s/, $//; + + if ($entry->{directors}->[0]) + { + for my $director(@{$entry->{directors}->[0]->{director}}) + { + $result{director} .= $director.', '; + } + } + $result{director} =~ s/, $//; + + $result{audio} = []; + if ($entry->{languages}->[0]) + { + for my $language(@{$entry->{languages}->[0]->{language}}) + { + push @{$result{audio}}, [$language]; + } + } + $result{subt} = []; + if ($entry->{subtitles}->[0]) + { + for my $subtitle(@{$entry->{subtitles}->[0]->{subtitle}}) + { + push @{$result{subt}}, [$subtitle]; + } + } + $result{time} = $entry->{'running-time'}->[0]; + $result{synopsis} = $entry->{plot}->[0]; + $result{synopsis} =~ s{(<|<)br/>}{\n}g; + + $result{rating} = $self->convertRating($entry->{rating}->[0]); + #$result{borrower} = 'none' if (! $entry->{loaned}); + $result{borrower} = 'Unknown' if ($entry->{loaned}->[0] eq 'true'); + $result{comment} = $entry->{comments}->[0]; + + #Picture management + $result{image} = $self->getPicture($collection, $entry->{cover}->[0], $result{title}); + + return \%result; + } + + sub getGCgamesItem + { + my ($self, $entry, $collection) = @_; + + my %result; + + $result{name} = $entry->{title}->[0]; + $result{platform} = $entry->{platform}->[0]; + $result{released} = $entry->{year}->[0]; + $result{genre} = []; + if ($entry->{genres}->[0]) + { + for my $genre(@{$entry->{genres}->[0]->{genre}}) + { + push @{$result{genre}}, [$genre]; + } + } + if ($entry->{publishers}->[0]) + { + for my $editor(@{$entry->{publishers}->[0]->{publisher}}) + { + $result{editor} .= $editor.', '; + } + $result{editor} =~ s/, $//; + } + $result{description} = $entry->{description}->[0]; + $result{rating} = $self->convertRating($entry->{rating}->[0]); + $result{completion} = 100 if $entry->{completed}->[0] eq 'true'; + $result{borrower} = 'Unknown' if ($entry->{loaned}->[0] eq 'true'); + $result{boxpic} = $self->getPicture($collection, $entry->{cover}->[0], $result{name}); + return \%result; + } + + sub getGCbooksItem + { + my ($self, $entry, $collection) = @_; + + my %result; + + $result{title} = $entry->{title}->[0]; + $result{authors} = []; + if ($entry->{authors}->[0]) + { + for my $author(@{$entry->{authors}->[0]->{author}}) + { + push @{$result{authors}}, [$author]; + } + } + $result{publisher} = $entry->{publisher}->[0]; + $result{publication} = $entry->{pub_year}->[0]; + if ($entry->{languages}->[0]) + { + for my $language(@{$entry->{languages}->[0]->{language}}) + { + $result{language} .= $language.', '; + } + $result{language} =~ s/, $//; + } + $result{serie} = $entry->{series}->[0]; + $result{edition} = $entry->{edition}->[0]; + $result{format} = $entry->{binding}->[0]; + $result{description} = $entry->{comments}->[0]; + $result{pages} = $entry->{pages}->[0]; + $result{read} = 1 if ($entry->{read}->[0] eq 'true'); + $result{acquisition} = $entry->{pur_date}->[0]; + $result{genre} = []; + if ($entry->{genres}->[0]) + { + for my $genre(@{$entry->{genres}->[0]->{genre}}) + { + push @{$result{genre}}, [$genre]; + } + } + $result{rating} = $self->convertRating($entry->{rating}->[0]); + $result{borrower} = 'Unknown' if ($entry->{loaned}->[0] eq 'true'); + $result{cover} = $self->getPicture($collection, $entry->{cover}->[0], $result{title}); + return \%result; + } + + sub getGCmusicsItem + { + my ($self, $entry, $collection) = @_; + + my %result; + + $result{title} = $entry->{title}->[0]; + $result{format} = $entry->{medium}->[0]; + if ($entry->{artists}->[0]) + { + for my $artist(@{$entry->{artists}->[0]->{artist}}) + { + $result{artist} .= $artist.', '; + } + $result{artist} =~ s/, $//; + } + if ($entry->{labels}->[0]) + { + for my $label(@{$entry->{labels}->[0]->{label}}) + { + $result{label} .= $label.', '; + } + $result{label} =~ s/, $//; + } + $result{release} = $entry->{year}->[0]; + $result{genre} = []; + if ($entry->{genres}->[0]) + { + for my $genre(@{$entry->{genres}->[0]->{genre}}) + { + push @{$result{genre}}, [$genre]; + } + } + if ($entry->{tracks}->[0]) + { + my $trackNum = 1; + for my $track(@{$entry->{tracks}->[0]->{track}}) + { + push @{$result{tracks}}, [$trackNum, + $track->{column}->[0], + $track->{column}->[2]]; + $trackNum++; + } + } + $result{comment} = $entry->{comments}->[0]; + $result{rating} = $self->convertRating($entry->{rating}->[0]); + $result{borrower} = 'Unknown' if ($entry->{loaned}->[0] eq 'true'); + $result{cover} = $self->getPicture($collection, $entry->{cover}->[0], $result{title}); + return \%result; + } + + sub getGCcoinsItem + { + my ($self, $entry, $collection) = @_; + + my $i = 0; + my %result; + + #$result{name} = $entry->{title}->[0]; + + $result{currency} = $entry->{type}->[0]; + $result{value} = $entry->{denomination}->[0]; + $result{year} = $entry->{years}->[0]->{year}->[0]; + $result{country} = $entry->{country}->[0]; + $result{type} = ($entry->{set}->[0] eq 'true') ? 'coin' : 'banknote'; + # TODO: Import grade + $result{added} = $entry->{pur_date}->[0]; + $result{estimate} = $entry->{pur_price}->[0]; + $result{location} = $entry->{location}->[0]; + + $result{comments} = $entry->{comments}->[0]; + + $result{name} = $result{currency}.' '.$result{value}.' ('.$result{year}.')'; + + $result{picture} = $self->getPicture($collection, $entry->{obverse}->[0], $result{name}); + $result{front} = $self->getPicture($collection, $entry->{obverse}->[0], $result{name}.'_front'); + $result{back} = $self->getPicture($collection, $entry->{reverse}->[0], $result{name}.'_back'); + return \%result; + } + + sub getPicture + { + my ($self, $collection, $imageId, $title) = @_; + + my $result = undef; + if ($imageId && (ref($imageId) ne 'HASH')) + { + (my $suffix = $imageId) =~ s/.*?(\.[^.]*)$/$1/; + my $fileName = $self->{options}->{parent}->getUniqueImageFileName($suffix, $title); + if ((exists $collection->{images}->[0]->{image}->{$imageId}) && + (exists $collection->{images}->[0]->{image}->{$imageId}->{content})) + { + # Picture is embedded + my $data = MIME::Base64::decode_base64($collection->{images}->[0]->{image}->{$imageId}->{content}); + open PIC, ">$fileName"; + print PIC $data; + close PIC; + } + else + { + if ($self->{type} eq 'T') + { + # Only zipped file may have external pictures + my $picName = 'images/'.$imageId; + $self->{zip}->extractMember($picName, $fileName); + } + else + { + $fileName = ''; + } + } + $result = $self->{options}->{parent}->transformPicturePath($fileName); + } + return $result; + } + + sub convertRating + { + my ($self, $rating) = @_; + return 10 if $rating =~ /^5/; + return 7 if $rating =~ /^4/; + return 3 if $rating =~ /^2/; + return 0 if $rating =~ /^1/; + return 5; #if ($rating =~ /^3/) || ($rating == undef); + } + +} + + + + +1; diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCImport.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCImport.pm --- gcstar-1.4.3/lib/gcstar/GCImport.pm 2008-07-19 16:56:04.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCImport.pm 2009-11-21 08:51:05.000000000 +0000 @@ -2,7 +2,7 @@ ################################################### # -# Copyright 2005-2007 Tian +# Copyright 2005-2009 Tian # # This file is part of GCstar. # diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/lib/gcstar/GCItemsLists/GCImageLists.pm /tmp/sL6inpqcYo/gcstar-1.5.0/lib/gcstar/GCItemsLists/GCImageLists.pm --- gcstar-1.4.3/lib/gcstar/GCItemsLists/GCImageLists.pm 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/lib/gcstar/GCItemsLists/GCImageLists.pm 2009-11-21 08:51:05.000000000 +0000 @@ -0,0 +1,2417 @@ +package GCImageLists; + +################################################### +# +# Copyright 2005-2009 Tian +# +# This file is part of GCstar. +# +# GCstar is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# GCstar is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCstar; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +################################################### + +use strict; +use locale; + +# Number of ms to wait before enhancing the next picture +my $timeOutBetweenEnhancements = 50; + +{ + package GCBaseImageList; + + use File::Basename; + use GCUtils; + use GCStyle; + use base "Gtk2::VBox"; + use File::Temp qw/ tempfile /; + + sub new + { + my ($proto, $container, $columns) = @_; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(0,0); + bless ($self, $class); + + my $parent = $container->{parent}; + + $self->{preferences} = $parent->{model}->{preferences}; + $self->{coverField} = $parent->{model}->{commonFields}->{cover}; + $self->{titleField} = $parent->{model}->{commonFields}->{title}; + $self->{borrowerField} = $parent->{model}->{commonFields}->{borrower}->{name}; + $self->{selectedIndexes} = {}; + $self->{previousSelectedDisplayed} = 0; + $self->{displayedToItemsArray} = {}; + $self->{container} = $container; + $self->{scroll} = $container->{scroll}; + $self->{searchEntry} = $container->{searchEntry}; + + + $self->{preferences}->sortOrder(1) + if ! $self->{preferences}->exists('sortOrder'); + + $self->{parent} = $container->{parent}; + + $self->{tooltips} = Gtk2::Tooltips->new(); + + $self->{columns} = $columns; + $self->{dynamicSize} = ($columns == 0); + $self->clearCache; + + + $self->set_border_width(0); + + $self->signal_connect('button_press_event' => sub { + my ($widget, $event) = @_; + $self->{parent}->{context}->popup(undef, undef, undef, undef, $event->button, $event->time) + if $event->button eq 3; + }); + + $self->can_focus(1); + + return $self; + } + + sub couldExpandAll + { + my $self = shift; + + return 0; + } + + sub getCurrentIdx + { + my $self = shift; + return $self->{displayedToIdx}->{$self->{current}}; + } + + sub getCurrentItems + { + my $self = shift; + my @indexes = keys %{$self->{selectedIndexes}}; + return \@indexes; + } + + sub isSelected + { + my ($self, $idx) = @_; + foreach (keys %{$self->{selectedIndexes}}) + { + return 1 if $_ == $idx; + } + return 0; + } + + sub DESTROY + { + my $self = shift; + + #unlink $self->{style}->{tmpBgPixmap}; + $self->SUPER::DESTROY; + } + + sub isUsingDate + { + my ($self) = @_; + return 0; + } + + sub setSortOrder + { + my ($self, $order) = @_; + $order = 0 if !defined $order; + $self->{currentOrder} = ($order == -1) ? (1 - $self->{currentOrder}) + : $self->{preferences}->sortOrder; + + if ($self->{itemsArray}) + { + if ($order == -1) + { + @{$self->{itemsArray}} = reverse @{$self->{itemsArray}}; + } + else + { + sub compare + { + return ( + $a->{title} + cmp + $b->{title} + ); + } + if ($self->{currentOrder} == 1) + { + @{$self->{itemsArray}} = sort compare @{$self->{itemsArray}}; + } + else + { + @{$self->{itemsArray}} = reverse sort compare @{$self->{itemsArray}}; + } + } + } + $self->refresh if ! $self->{initializing}; + $self->{initializing} = 0; + } + + sub setFilter + { + my ($self, $filter, $items, $refresh, $splash) = @_; + $self->{displayedNumber} = 0; + $self->{filter} = $filter; + $self->{displayedToItemsArray} = {}; + my $current = $self->{current}; + $self->restorePrevious; + my $i = 0; + foreach (@{$self->{itemsArray}}) + { + $_->{displayed} = $filter->test($items->[$_->{idx}]); + if ($_->{displayed}) + { + $self->{displayedToItemsArray}->{$self->{displayedNumber}} = $i; + $self->{displayedNumber}++; + } + $self->{container}->setDisplayed($_->{idx}, $_->{displayed}); + $i++; + } + my $newIdx = $self->getFirstVisibleIdx($current); + my $conversionNeeded = 0; + $conversionNeeded = 1 if ! exists $self->{boxes}->[$current]; + + if ($refresh) + { + $self->refresh(1, $splash); + $self->enhanceAllPictures; + } + + $self->{initializing} = 0; + return $self->displayedToItemsArrayIdx($newIdx) + if $conversionNeeded; + return $newIdx; + } + + sub getFirstVisibleIdx + { + my ($self, $displayed) = @_; + return $displayed if ! exists $self->{boxes}->[$displayed]; + my $currentIdx = $self->{boxes}->[$displayed]->{info}->{idx}; + my $info = $self->{boxes}->[$displayed]->{info}; + + return $currentIdx if (! exists $self->{boxes}->[$displayed]) + || ($self->{boxes}->[$displayed]->{info}->{displayed}); + my $previous = -1; + my $after = 0; + foreach my $item(@{$self->{itemsArray}}) + { + $after = 1 if $item->{idx} == $currentIdx; + if ($after) + { + return $item->{idx} if $item->{displayed}; + } + else + { + $previous = $item->{idx} if $item->{displayed}; + } + } + return $previous; + } + + sub refresh + { + my ($self, $forceClear, $splash) = @_; + return if $self->{columns} == 0; + + # Store current item index + my $currentIdx = $self->{displayedToIdx}->{$self->{current}}; + $self->{boxes} = []; + $self->{displayedToIdx} = {}; + $self->{idxToDisplayed} = {}; + + $self->clearView if (! $self->{initializing}) || $forceClear; + $self->{number} = 0; + my $idx = 0; + $self->{collectionDir} = dirname($self->{parent}->{options}->file); + foreach (@{$self->{itemsArray}}) + { + $splash->setProgressForItemsSort($idx++) if $splash; + next if ! $_->{displayed}; + $self->addDisplayedItem($_); + } + delete $self->{collectionDir}; + # Determine new current displayed + $self->{current} = $self->{idxToDisplayed}->{$currentIdx}; + #$self->show_all; + } + + sub getNbItems + { + my $self = shift; + return $self->{displayedNumber}; + } + + sub clearCache + { + my $self = shift; + + if ($self->{cache}) + { + foreach (@{$self->{cache}}) + { + $_->{eventBox}->destroy + if $_->{eventBox}; + } + } + $self->{cache} = []; + } + + sub reset + { + my $self = shift; + #Restore current picture if modified + $self->restorePrevious; + + $self->{itemsArray} = []; + $self->{boxes} = []; + $self->{number} = 0; + $self->{count} = 0; + $self->{displayedNumber} = 0; + $self->{current} = 0; + $self->{previous} = 0; + $self->clearView; + } + + sub clearView + { + my $self = shift; + + # TODO : This will be different with many lists + #my $parent = $self->parent; + #$self->parent->remove($self) + # if $parent; + + my @children = $self->get_children; + foreach (@children) + { + my @children2 = $_->get_children; + foreach my $child(@children2) + { + $_->remove($child); + } + $self->remove($_); + $_->destroy; + } + $self->{rowContainers} = []; + $self->{enhanceInformation} = []; + + # TODO : This will be different with many lists + #$self->{scroll}->add_with_viewport($self) + # if $parent; + + $self->{initializing} = 1; + } + + sub done + { + my ($self, $splash, $refresh) = @_; + if ($refresh) + { + $self->refresh(0, $splash); + Glib::Timeout->add(1000, + \&enhanceAllPictures, + $self); + } + $self->{initializing} = 0; + } + + sub setColumnsNumber + { + my ($self, $columns, $refresh) = @_; + $self->{columns} = $columns; + my $init = $self->{initializing}; + $self->{initializing} = 1; + $self->refresh($refresh); + $self->enhanceAllPictures; + $self->{initializing} = $init; + } + + sub createPixbuf + { + my ($self, $displayedImage, $borrower, $favourite, $forceEnhancement) = @_; + my $pixbuf = undef; + if ($displayedImage) + { + eval { + $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file($displayedImage); + }; + } + if ($@ || !$pixbuf) + { + $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file($self->{parent}->{defaultImage}); + } + + my $width; + my $height; + my $boxWidth = $self->{style}->{imgWidth}; + my $boxHeight = $self->{style}->{imgHeight}; + + my $overlayPaddingLeft; + my $overlayPaddingRight; + my $overlayPaddingTop; + my $overlayPaddingBottom; + my $targetOverlayHeight; + my $targetOverlayWidth; + my $pixbufTempHeight; + my $pixbufTempWidth; + my $alpha = 1; + + if ($self->{style}->{useOverlays}) + { + + # Calculate size of list image with proportional size of overlay padding added + $pixbufTempHeight = (($self->{style}->{overlayPaddingTop} + $self->{style}->{overlayPaddingBottom})/$self->{style}->{overlayPixbuf}->get_height + 1) * $pixbuf->get_height; + $pixbufTempWidth = (($self->{style}->{overlayPaddingLeft} + $self->{style}->{overlayPaddingRight})/$self->{style}->{overlayPixbuf}->get_width + 1) * $pixbuf->get_width; + + # Find out target size of overlay, keeping the same ratio as the size calculated above (ie, list image + relative padding) + my $ratio = $pixbufTempHeight / $pixbufTempWidth; + if (($pixbufTempWidth > $boxWidth) || ($pixbufTempHeight > $boxHeight)) + { + if (($pixbufTempWidth * $boxHeight/$pixbufTempHeight) < $boxWidth ) + { + $targetOverlayHeight = $boxHeight; + $targetOverlayWidth = int($boxHeight / $ratio); + } + else + { + $targetOverlayHeight = int($boxWidth * $ratio); + $targetOverlayWidth = $boxWidth; + } + } + else + { + # Special case when image is small enough and doesn't need to be resized + $targetOverlayHeight = $pixbufTempHeight; + $targetOverlayWidth = $pixbufTempWidth; + } + + # Calculate final offset amounts for target size of overlay + $overlayPaddingLeft = int($self->{style}->{overlayPaddingLeft} * $targetOverlayWidth / $self->{style}->{overlayPixbuf}->get_width); + $overlayPaddingRight = int($self->{style}->{overlayPaddingRight} * $targetOverlayWidth / $self->{style}->{overlayPixbuf}->get_width); + $overlayPaddingTop = int($self->{style}->{overlayPaddingTop} * $targetOverlayHeight / $self->{style}->{overlayPixbuf}->get_height); + $overlayPaddingBottom = int($self->{style}->{overlayPaddingBottom} * $targetOverlayHeight / $self->{style}->{overlayPixbuf}->get_height); + + # Resize the list image to fit into the correct space + $pixbuf = GCUtils::scaleMaxPixbuf($pixbuf, + $boxWidth - $overlayPaddingLeft - $overlayPaddingRight, + $boxHeight - $overlayPaddingTop - $overlayPaddingBottom, + 0, + $self->{initializing} && !$forceEnhancement); + } + else + { + # No overlays, simple case + $pixbuf = GCUtils::scaleMaxPixbuf($pixbuf, + $boxWidth, + $boxHeight, + 0, + $self->{initializing} && !$forceEnhancement); + } + $width = $pixbuf->get_width; + $height = $pixbuf->get_height; + + # Do the composition + + if ($self->{style}->{useOverlays}) + { + if ($self->{style}->{withImage}) + { + # Using background, so center accordingly + my $offsetX = 5 * $self->{style}->{factor} + (($boxWidth - ($width + $overlayPaddingLeft + $overlayPaddingRight)) / 2); + my $offsetY = 15 * $self->{style}->{factor} + ($boxHeight - ($height + $overlayPaddingTop + $overlayPaddingBottom)); + + # Make an empty pixbuf to work within + my $tempPixbuf =Gtk2::Gdk::Pixbuf->new('rgb', 1, 8, + $self->{style}->{backgroundPixbuf}->get_width, + $self->{style}->{backgroundPixbuf}->get_height); + $tempPixbuf->fill(0x00000000); + + # Place cover in pixbuf + $pixbuf->composite($tempPixbuf, + $offsetX + $overlayPaddingLeft, $offsetY + $overlayPaddingTop, + $width , $height, + $offsetX + $overlayPaddingLeft, $offsetY + $overlayPaddingTop, + 1, 1, + 'nearest', 255); + $pixbuf = $tempPixbuf; + + # Composite overlay picture + $self->{style}->{overlayPixbuf}->composite($pixbuf, + $offsetX, $offsetY, + $width + $overlayPaddingLeft + $overlayPaddingRight, + $height + $overlayPaddingTop + $overlayPaddingBottom, + $offsetX, $offsetY, + ($width + $overlayPaddingLeft + $overlayPaddingRight) / $self->{style}->{overlayPixbuf}->get_width, + ($height + $overlayPaddingTop + $overlayPaddingBottom) / $self->{style}->{overlayPixbuf}->get_height, + 'nearest', 255); + + # Overlay borrower image if required + if ($borrower && ($borrower ne 'none')) + { + # De-saturate borrowed items + $pixbuf->saturate_and_pixelate($pixbuf, .1, 0); + $self->{style}->{lendPixbuf}->composite($pixbuf, + $pixbuf->get_width - $self->{style}->{lendPixbuf}->get_width - $offsetX, + $offsetY + $height + $overlayPaddingTop + $overlayPaddingBottom - $self->{style}->{lendPixbuf}->get_height, + $self->{style}->{lendPixbuf}->get_width, $self->{style}->{lendPixbuf}->get_height, + $pixbuf->get_width - $self->{style}->{lendPixbuf}->get_width - $offsetX, + $offsetY + $height + $overlayPaddingTop + $overlayPaddingBottom - $self->{style}->{lendPixbuf}->get_height, + 1, 1, + 'nearest', 255); + } + + # Overlay favourite image if required + if ($favourite) + { + $self->{style}->{favPixbuf}->composite($pixbuf, + $pixbuf->get_width - $self->{style}->{favPixbuf}->get_width - $offsetX, + $offsetY, + $self->{style}->{favPixbuf}->get_width, $self->{style}->{favPixbuf}->get_height, + $pixbuf->get_width - $self->{style}->{favPixbuf}->get_width - $offsetX, + $offsetY, + 1, 1, + 'nearest', 255); + } + + # Create and apply reflection if required + if ($self->{style}->{withReflect}) + { + my $reflect; + $reflect = $pixbuf->flip(0); + $reflect->composite( + $pixbuf, + 0, 2 * ($offsetY + $height + $overlayPaddingTop + $overlayPaddingBottom) - $pixbuf->get_height, + $pixbuf->get_width, + 2 * ($pixbuf->get_height - $height - $offsetY - $overlayPaddingTop - $overlayPaddingBottom) - (10 * $self->{style}->{factor}), + 0, 2 * ($offsetY + $height + $overlayPaddingTop + $overlayPaddingBottom) - $pixbuf->get_height, + 1, 1, + 'nearest', 100 + ); + + # Apply foreground fading + $self->{style}->{foregroundPixbuf}->composite( + $pixbuf, + 0, 0, + $pixbuf->get_width, $pixbuf->get_height, + 0, 0, + 1, 1, + 'nearest', 255 + ); + } + + # Heft created pixbuf onto background + my $bgPixbuf = $self->{style}->{backgroundPixbuf}->copy; + $pixbuf->composite($bgPixbuf, + 0,0, + $pixbuf->get_width , $pixbuf->get_height, + 0,0, + 1, 1, + 'nearest', 255); + $pixbuf = $bgPixbuf; + + } + else + { + # Not using background, so we need to make an empty pixbuf which is right size for overlay first + my $tempPixbuf =Gtk2::Gdk::Pixbuf->new('rgb', 1, 8, + $width + $overlayPaddingLeft + $overlayPaddingRight, + $height + $overlayPaddingTop + $overlayPaddingBottom); + $tempPixbuf->fill(0x00000000); + + # Now, place list image inside empty pixbuf + $pixbuf->composite($tempPixbuf, + $overlayPaddingLeft, $overlayPaddingTop, + $width , $height, + $overlayPaddingLeft, $overlayPaddingTop, + 1, 1, + 'nearest', 255 * $alpha); + $pixbuf = $tempPixbuf; + + # Place overlay on top of pixbuf + $self->{style}->{overlayPixbuf}->composite($pixbuf, + 0, 0, + $width + $overlayPaddingLeft + $overlayPaddingRight, + $height + $overlayPaddingTop + $overlayPaddingBottom, + 0, 0, + ($width + $overlayPaddingLeft + $overlayPaddingRight) / $self->{style}->{overlayPixbuf}->get_width, + ($height + $overlayPaddingTop + $overlayPaddingBottom) / $self->{style}->{overlayPixbuf}->get_height, + 'nearest', 255 * $alpha); + + # Overlay borrower image if required + if ($borrower && ($borrower ne 'none')) + { + # De-saturate borrowed items + $pixbuf->saturate_and_pixelate($pixbuf, .1, 0); + + $self->{style}->{lendPixbuf}->composite($pixbuf, + $pixbuf->get_width - $self->{style}->{lendPixbuf}->get_width, + $pixbuf->get_height - $self->{style}->{lendPixbuf}->get_height, + $self->{style}->{lendPixbuf}->get_width, $self->{style}->{lendPixbuf}->get_height, + $pixbuf->get_width - $self->{style}->{lendPixbuf}->get_width, + $pixbuf->get_height - $self->{style}->{lendPixbuf}->get_height, + 1, 1, + 'nearest', 255); + } + + # Overlay favourite image if required + if ($favourite) + { + $self->{style}->{favPixbuf}->composite($pixbuf, + $pixbuf->get_width - $self->{style}->{favPixbuf}->get_width, + 0, + $self->{style}->{favPixbuf}->get_width, $self->{style}->{favPixbuf}->get_height, + $pixbuf->get_width - $self->{style}->{favPixbuf}->get_width, + 0, + 1, 1, + 'nearest', 255); + } + + } + } + else + { + # No overlays, nice and simple + + # Overlay borrower image if required + if ($borrower && ($borrower ne 'none')) + { + # De-saturate borrowed items + $pixbuf->saturate_and_pixelate($pixbuf, .1, 0); + $self->{style}->{lendPixbuf}->composite($pixbuf, + $width - $self->{style}->{lendPixbuf}->get_width - $self->{style}->{factor}, + $height - $self->{style}->{lendPixbuf}->get_height - $self->{style}->{factor}, + $self->{style}->{lendPixbuf}->get_width, $self->{style}->{lendPixbuf}->get_height, + $width - $self->{style}->{lendPixbuf}->get_width - $self->{style}->{factor}, + $height - $self->{style}->{lendPixbuf}->get_height - $self->{style}->{factor}, + 1, 1, + 'nearest', 255); + } + + # Overlay favourite image if required + if ($favourite) + { + $self->{style}->{favPixbuf}->composite($pixbuf, + $width - $self->{style}->{favPixbuf}->get_width - $self->{style}->{factor}, + $self->{style}->{factor}, + $self->{style}->{favPixbuf}->get_width, $self->{style}->{favPixbuf}->get_height, + $width - $self->{style}->{favPixbuf}->get_width - $self->{style}->{factor}, + $self->{style}->{factor}, + 1, 1, + 'nearest', 255); + } + + my $reflect; + $reflect = $pixbuf->flip(0) + if $self->{style}->{withReflect}; + + my $offsetX = 5 * $self->{style}->{factor} + (($boxWidth - $width) / 2); + my $offsetY = 15 * $self->{style}->{factor} + ($boxHeight - $height); + if ($self->{style}->{withImage}) + { + my $bgPixbuf = $self->{style}->{backgroundPixbuf}->copy; + $pixbuf->composite($bgPixbuf, + $offsetX, $offsetY, + $width, $height, + $offsetX, $offsetY, + 1, 1, + 'nearest', 255); + $pixbuf = $bgPixbuf; + } + + if ($self->{style}->{withReflect}) + { + $reflect->composite( + $pixbuf, + $offsetX, $height + $offsetY, + $width, $pixbuf->get_height - $height - $offsetY - (10 * $self->{style}->{factor}), + $offsetX, $height + $offsetY, + 1, 1, + 'nearest', 100 + ); + + # Apply foreground fading + $self->{style}->{foregroundPixbuf}->composite( + $pixbuf, + 0, 0, + $pixbuf->get_width, $pixbuf->get_height, + 0, 0, + 1, 1, + 'nearest', 255 + ); + } + } + + + return $pixbuf; + } + + sub enhanceAllPictures + { + my $self = shift; + $self->show_all; + my $i = 1; + foreach (@{$self->{enhanceInformation}}) + { + Glib::Timeout->add($self->{offset} + ($i * $timeOutBetweenEnhancements), + \&enhancePicture, + $_); + + $i++; + } + $self->{enhanced} = 1; + return 0; + } + + sub enhancePicture + { + my $data = shift; + my $eventBox = $data->[1]; + return if ! $eventBox->child; + my $self = $data->[0]; + my $pixbuf = $self->createPixbuf($data->[2], $data->[3], $data->[4], 1); + $eventBox->child->set_from_pixbuf($pixbuf); + $self->{tooltips}->set_tip($eventBox, $data->[5], ''); + + if ($eventBox->{selected}) + { + $self->clearPrevious; + $self->{previousPixbufs}->{$eventBox->{idx}} = $pixbuf; + $self->select($self->{displayedToIdx}->{$self->{current}}, 1, 1); + } + return 0; + } + + sub createEventBox + { + my ($self, $info) = @_; + my $eventBox = new Gtk2::EventBox; + $eventBox->can_focus(1); + # We store the index of the displayed data + my $image = new Gtk2::Image; + + my $displayedImage = GCUtils::getDisplayedImage($info->{picture}, + undef, + $self->{parent}->{options}->file, + $self->{collectionDir}); + + my $pixbuf = $self->createPixbuf($displayedImage, $info->{borrower}, $info->{favourite}); + + #$self->{tooltips}->set_tip($eventBox, $info->{title}, ''); + + if (! $self->{style}->{withImage}) + { + $eventBox->modify_bg('normal', $self->{style}->{inactiveBg}); + } + + $image->set_from_pixbuf($pixbuf); + # ONLY FOR DEBUG + $eventBox->{picture} = $displayedImage; + $eventBox->add($image); + $eventBox->set_size_request($self->{style}->{vboxWidth}, $self->{style}->{vboxHeight}); + if ($self->{initializing}) + { + push @{$self->{enhanceInformation}}, [$self, $eventBox, $displayedImage, $info->{borrower}, $info->{favourite}, $info->{title}]; + } + else + { + $eventBox->show_all; + } + + return $eventBox; + } + + sub getFromCache + { + my ($self, $info) = @_; + if (! $self->{cache}->[$info->{idx}]) + { + my $item = {}; + $item->{eventBox} = $self->createEventBox($info); + $item->{keyHandler} = 0; + $item->{mouseHandler} = 0; + $self->{cache}->[$info->{idx}] = $item; + } + return $self->{cache}->[$info->{idx}]; + } + + sub findPlace + { + my ($self, $item, $title) = @_; + my $refTitle = $title || $item->{title}; + $refTitle = uc($refTitle); + # First search where it should be inserted + my $place = 0; + my $itemsIdx = 0; + if ($self->{currentOrder} == 1) + { + foreach my $followingItem(@{$self->{itemsArray}}) + { + my $testTitle = uc($followingItem->{title}); + my $cmp = ($testTitle gt $refTitle); + $itemsIdx++ if ! $cmp; + + next if !$followingItem->{displayed}; + last if $cmp; + $place++; + } + } + else + { + foreach my $followingItem(@{$self->{itemsArray}}) + { + my $cmp = (uc($followingItem->{title}) + lt + $refTitle); + $itemsIdx++ if ! $cmp; + next if !$followingItem->{displayed}; + last if $cmp; + $place++; + } + } + return ($place, $itemsIdx) if wantarray; + return $place; + } + + sub addItem + { + my ($self, $info, $immediate, $idx, $keepConversionTables) = @_; + my $item = { + idx => $idx, + title => $self->{parent}->transformTitle($info->{$self->{titleField}}), + picture => $info->{$self->{coverField}}, + borrower => $info->{$self->{borrowerField}}, + favourite => $info->{favourite}, + displayed => 1, + }; + + if ($immediate) + { + # When the flag is set, that means we modified an item and that it had + # to be added to that group. In this case, we don't want to de-select + # the current one. + if (!$keepConversionTables) + { + $self->restorePrevious; + # To force the selection + $self->{current} = -1; + } + # First search where it should be inserted + my ($place, $itemsArrayIdx) = $self->findPlace($item); + # Prepare the conversions displayed <-> index + if (!$keepConversionTables) + { + $self->{displayedToIdx}->{$place} = $idx; + $self->{idxToDisplayed}->{$idx} = $place; + } + # Then we insert it at correct position + $self->addDisplayedItem($item, $place); + splice @{$self->{itemsArray}}, $itemsArrayIdx, 0, $item; + } + else + { + # Here we know it will be sorted after + push @{$self->{itemsArray}}, $item; + } + + $self->{count}++; + $self->{displayedNumber}++; + $self->{header}->show_all if $self->{header} && $self->{displayedNumber} > 0; + } + + # Params: + # $info: Information already formated for this class + # $place: Optional value to indicate where it should be inserted + sub addDisplayedItem + { + # info is an iternal info generated + my ($self, $info, $place) = @_; + return if ! $self->{columns}; + my $item = $self->getFromCache($info); + my $eventBox = $item->{eventBox}; + my $i = $info->{idx}; + if (!defined $place) + { + $self->{displayedToIdx}->{$self->{number}} = $i; + $self->{idxToDisplayed}->{$i} = $self->{number}; + } + # We store it here to be sure we have the correct one + $eventBox->{idx} = $i; + $eventBox->{info} = $info; + + $eventBox->signal_handler_disconnect($item->{mouseHandler}) + if $item->{mouseHandler}; + $item->{mouseHandler} = $eventBox->signal_connect('button_press_event' => sub { + my ($widget, $event) = @_; + if ($event->type ne '2button-press') + { + my $state = $event->get_state; + my $keepPrevious = 0; + if ($state =~ /control-mask/) + { + $self->select($widget->{idx}, 0, 1); + } + elsif ($state =~ /shift-mask/) + { + $self->restorePrevious; + my ($min, $max); + if ($self->{previousSelectedDisplayed} > $self->{idxToDisplayed}->{$widget->{idx}}) + { + $min = $self->{idxToDisplayed}->{$widget->{idx}}; + $max = $self->{previousSelectedDisplayed}; + } + else + { + $min = $self->{previousSelectedDisplayed}; + $max = $self->{idxToDisplayed}->{$widget->{idx}}; + } + foreach my $displayed($min..$max) + { + $self->select($self->{displayedToIdx}->{$displayed}, 0, 1); + } + } + else + { + $self->select($widget->{idx}); + } + $self->{previousSelectedDisplayed} = $self->{idxToDisplayed}->{$widget->{idx}}; + + #$self->{parent}->display($widget->{idx}) unless $event->type eq '2button-press'; + $self->{parent}->display(keys %{$self->{selectedIndexes}}); + } + + $self->{parent}->displayInWindow if $event->type eq '2button-press'; + $self->{parent}->{context}->popup(undef, undef, undef, undef, $event->button, $event->time) + if $event->button eq 3; + $widget->grab_focus; + $self->{container}->setCurrentList($self); + }); + + $eventBox->signal_handler_disconnect($item->{keyHandler}) + if $item->{keyHandler}; + + $item->{keyHandler} = $eventBox->signal_connect('key-press-event' => sub { + my ($widget, $event) = @_; + my $displayed = $self->{idxToDisplayed}->{$widget->{idx}}; + my $key = Gtk2::Gdk->keyval_name($event->keyval); + if ($key eq 'Delete') + { + $self->{parent}->deleteCurrentItem; + return 1; + } + if (($key eq 'Return') || ($key eq 'space')) + { + $self->{parent}->displayInWindow; + return 1; + } + my $unicode = Gtk2::Gdk->keyval_to_unicode($event->keyval); + if ($unicode) + { + $self->showSearch(pack('U',$unicode)); + $self->{searchTimeOut} = Glib::Timeout->add(4000, sub { + $self->hideSearch; + $self->{searchTimeOut} = 0; + return 0; + }); + } + else + { + ($key eq 'Right') ? $displayed++ : + ($key eq 'Left') ? $displayed-- : + ($key eq 'Down') ? $displayed += $self->{columns} : + ($key eq 'Up') ? $displayed -= $self->{columns} : + ($key eq 'Page_Down') ? $displayed += ($self->{style}->{pageCount} * $self->{columns}): + ($key eq 'Page_Up') ? $displayed -= ($self->{style}->{pageCount} * $self->{columns}): + ($key eq 'Home') ? $displayed = 0 : + ($key eq 'End') ? $displayed = $self->{displayedNumber} - 1 : + return 1; + + return 1 if ($displayed < 0) || ($displayed >= scalar @{$self->{boxes}}); + my $column = $displayed % $self->{columns}; + my $valueIdx = $self->{displayedToIdx}->{$displayed}; +# my $keepPrevious = 0; + my $state = $event->get_state; + if ($state =~ /control-mask/) + { + $self->select($valueIdx, 0, 1); + delete $self->{previousSelectedDisplayed}; + } + elsif ($state =~ /shift-mask/) + { + $self->{previousSelectedDisplayed} = $self->{idxToDisplayed}->{$widget->{idx}} + if !exists $self->{previousSelectedDisplayed}; + $self->restorePrevious; + my ($min, $max); + if ($self->{previousSelectedDisplayed} > $displayed) + { + $min = $displayed; + $max = $self->{previousSelectedDisplayed}; + } + else + { + $min = $self->{previousSelectedDisplayed}; + $max = $displayed; + } + foreach my $disp($min..$max) + { + $self->select($self->{displayedToIdx}->{$disp}, 0, 1); + } + } + else + { + $self->select($valueIdx); + delete $self->{previousSelectedDisplayed}; + } + + $self->{parent}->display($valueIdx); + $self->{container}->setCurrentList($self); + $self->{boxes}->[$displayed]->grab_focus; + $self->showCurrent unless (($key eq 'Left') && ($column != ($self->{columns} - 1))) + || (($key eq 'Right') && ($column != 0)); + } + return 1; + + }); + + if (($self->{number} % $self->{columns}) == 0) + { + #New row begin + $self->{currentRow} = new Gtk2::HBox(0,0); + push @{$self->{rowContainers}}, $self->{currentRow}; + $self->pack_start($self->{currentRow},0,0,0); + $self->{currentRow}->show_all if ! $self->{initializing}; + } + + if (defined($place)) + { + # Get the row and col where it should be inserted + my $itemLine = int $place / $self->{columns}; + my $itemCol = $place % $self->{columns}; + # Insert it at correct place + $self->{rowContainers}->[$itemLine]->pack_start($eventBox,0,0,0); + $self->{rowContainers}->[$itemLine]->reorder_child($eventBox, $itemCol); + $eventBox->show_all; + $self->shiftItems($place, 1, 0, scalar @{$self->{boxes}}); + splice @{$self->{boxes}}, $place, 0, $eventBox; + $self->initConversionTables; + } + else + { + $self->{currentRow}->pack_start($eventBox,0,0,0); + $self->{idxToDisplayed}->{$i} = $self->{number}; + push @{$self->{boxes}}, $eventBox; + } + + $self->{number}++; + } + + sub grab_focus + { + my $self = shift; + $self->SUPER::grab_focus; + $self->{boxes}->[$self->{current}]->grab_focus; + } + + sub displayedToItemsArrayIdx + { + my ($self, $displayed) = @_; + return 0 if ! exists $self->{boxes}->[$displayed]; + # If we have nothing, that means we have no filter. So displayed and idx are the same + return $displayed if ! exists $self->{displayedToItemsArray}->{$displayed}; + return $self->{displayedToItemsArray}->{$displayed}; + } + + sub shiftItems + { + my ($self, $place, $direction, $justFromView, $maxPlace) = @_; + my $idx = $self->{displayedToIdx}->{$place}; + my $itemLine = int $place / $self->{columns}; + my $itemCol = $place % $self->{columns}; + # Did we already remove or add the item ? + my $alreadyChanged = ($direction < 0) || (defined $maxPlace); + # Useful to always have the same comparison a few lines below + # Should be >= for $direction == 1 + # This difference is because we didn't added it yet while it has + # already been removed in the other direction + #$itemCol-- if ! (defined $maxPlace); + $itemCol++ if ($direction < 0); + # Same here + $idx-- if $alreadyChanged; + my $newDisplayed = 0; + my $currentLine = 0; + my $currentCol; + my $shifting = 0; + # Limit indicates which value for column should make use take action + # For backward, it's the 1st one. For forward, the last one + my $limit = 0; + $limit = ($self->{columns} - 1) if $direction > 0; + foreach my $item(@{$self->{itemsArray}}) + { + if (!$item->{displayed}) + { + $item->{idx} += $direction if ((!defined $maxPlace) && ($item->{idx} > $idx)); + next; + } + $currentLine = int $newDisplayed / $self->{columns}; + $currentCol = $newDisplayed % $self->{columns}; + $shifting = $direction if (!$shifting) + && ( + ($currentLine > $itemLine) + || (($currentLine == $itemLine) + && ($currentCol >= $itemCol)) + ); + $shifting = 0 if (defined $maxPlace) && ($newDisplayed > $maxPlace); + # When using maxPlace, we are only moving in view + if ((!defined $maxPlace) && ($item->{idx} > $idx)) + { + $item->{idx} += $direction; + $self->{cache}->[$item->{idx}]->{eventBox}->{idx} = $item->{idx} + if ($item->{idx} > 0) && $self->{cache}->[$item->{idx}]; + } + if ($shifting) + { + # Is this the first/last one in the line? + if ($currentCol == $limit) + { + $self->{rowContainers}->[$currentLine]->remove( + $self->{cache}->[$item->{idx}]->{eventBox} + ); + $self->{rowContainers}->[$currentLine + $direction]->pack_start( + $self->{cache}->[$item->{idx}]->{eventBox}, + 0,0,0 + ); + # We can't directly insert on the beginning. + # So we need a little adjustement here + if ($direction > 0) + { + $self->{rowContainers}->[$currentLine + $direction]->reorder_child( + $self->{cache}->[$item->{idx}]->{eventBox}, + 0 + ); + } + } + } + $newDisplayed++; + } + } + + sub shiftIndexes + { + my ($self, $indexes) = @_; + my $nbIndexes = scalar @$indexes; + my $nbLower; + my $currentIdx; + my @cache; + foreach my $box(@{$self->{boxes}}) + { + # Find how many are lowers in our indexes + # We suppose they are sorted + $nbLower = 0; + $currentIdx = $box->{info}->{idx}; + foreach (@$indexes) + { + last if $_ > $currentIdx; + $nbLower++; + } + $box->{info}->{idx} -= $nbLower; + $cache[$box->{info}->{idx}] = $self->{cache}->[$box->{info}->{idx} + $nbLower]; + } + $self->{cache} = \@cache; + } + + sub initConversionTables + { + my $self = shift; + my $displayed = 0; + $self->{displayedToIdx} = {}; + $self->{idxToDisplayed} = {}; + foreach (@{$self->{boxes}}) + { + $self->{displayedToIdx}->{$displayed} = $_->{info}->{idx}; + $self->{idxToDisplayed}->{$_->{info}->{idx}} = $displayed; + $_->{idx} = $_->{info}->{idx}; + $displayed++; + } + } + + sub removeItem + { + my ($self, $idx, $justFromView) = @_; + $self->{count}--; + $self->{displayedNumber}--; + $self->{header}->hide if $self->{displayedNumber} <= 0; + my $displayed = $self->{idxToDisplayed}->{$idx}; + my $itemLine = int $displayed / $self->{columns}; + #my $itemCol = $displayed % $self->{columns}; + $self->{rowContainers}->[$itemLine]->remove( + $self->{cache}->[$idx]->{eventBox} + ); + + # Remove event box from cache + my $itemsArrayIdx = $self->displayedToItemsArrayIdx($displayed); + + $self->{cache}->[$idx]->{eventBox}->destroy; + $self->{cache}->[$idx]->{eventBox} = 0; + + splice @{$self->{cache}}, $idx, 1 if !$justFromView; + splice @{$self->{boxes}}, $self->{idxToDisplayed}->{$idx}, 1; + + if ($justFromView) + { + $self->shiftItems($displayed, -1, 0, scalar @{$self->{boxes}}); + } + else + { + $self->shiftItems($displayed, -1); + } + $self->initConversionTables; + + splice @{$self->{itemsArray}}, $itemsArrayIdx, 1; + my $next = $self->{displayedToIdx}->{$displayed}; + if ($displayed >= (scalar(@{$self->{boxes}}))) + { + $next = $self->{displayedToIdx}->{--$displayed} + } + $self->{current} = $displayed; + #$self->select($next, 1); + + my $last = scalar @{$self->{itemsArray}}; + #delete $self->{idxToDisplayed}->{$self->{displayedToIdx}->{$last}}; + delete $self->{displayedToIdx}->{$last}; + # To be sure we still have consistent data, we re-initialize the other hash by swapping keys and values. + $self->{idxToDisplayed} = {}; + my ($k,$v); + $self->{idxToDisplayed}->{$v} = $k while (($k,$v) = each %{$self->{displayedToIdx}}); + + $self->{number}--; + return $next; + } + + sub removeCurrentItems + { + my ($self) = @_; + my @indexes = sort {$a <=> $b} keys %{$self->{selectedIndexes}}; + my $nbRemoved = 0; + $self->restorePrevious; + my $next; + foreach my $idx(@indexes) + { + $next = $self->removeItem($idx - $nbRemoved); + $nbRemoved++; + } + $self->{selectedIndexes} = {}; + $self->select($next, 1); + + return $next; + } + + sub restoreItem + { + my ($self, $idx) = @_; + my $previous = $self->{idxToDisplayed}->{$idx}; + return if $previous == -1; + $self->{boxes}->[$previous]->modify_bg('normal', $self->{style}->{inactiveBg}) + if (! $self->{style}->{withImage}) && $self->{boxes}->[$previous]; + $self->{boxes}->[$previous]->child->set_from_pixbuf($self->{previousPixbufs}->{$idx}) + if $self->{previousPixbufs}->{$idx} && $self->{boxes}->[$previous] && $self->{boxes}->[$previous]->child; + $self->{boxes}->[$previous]->{selected} = 0; + delete $self->{selectedIndexes}->{$idx}; + + } + + sub restorePrevious + { + my ($self, $fromContainer) = @_; + foreach my $idx(keys %{$self->{selectedIndexes}}) + { + $self->restoreItem($idx); + } + $self->clearPrevious; + $self->{container}->clearSelected($self) if !$fromContainer; + } + + sub clearPrevious + { + my $self = shift; + return if ! $self->{previousPixbufs}; + #$self->{previousPixbuf}->destroy; + $self->{previousPixbufs} = {}; + } + + sub selectAll + { + my $self = shift; + + $self->restorePrevious; + $self->select($self->{displayedToIdx}->{0}, 1, 0); + foreach my $displayed(1..scalar(@{$self->{boxes}}) - 1) + { + $self->select($self->{displayedToIdx}->{$displayed}, 0, 1); + } + $self->{parent}->display(keys %{$self->{selectedIndexes}}); + } + + sub select + { + my ($self, $idx, $init, $keepPrevious) = @_; + $idx = $self->{displayedToIdx}->{0} if $idx == -1; + my $displayed = $self->{idxToDisplayed}->{$idx}; + my @boxes = @{$self->{boxes}}; + return $displayed if ! scalar(@boxes); + my $alreadySelected = 0; + $alreadySelected = $boxes[$displayed]->{selected} + if exists $boxes[$displayed]; + my $nbSelected = scalar keys %{$self->{selectedIndexes}}; + + return $displayed if $alreadySelected && ($nbSelected < 2) && (!$init); + if ($keepPrevious) + { + if (($alreadySelected) && ($nbSelected > 1)) + { + $self->restoreItem($idx); + return; + } + $self->{selectedIndexes}->{$idx} = 1; + } + else + { + $self->restorePrevious; + $self->{selectedIndexes} = {$idx => 1}; + } + $self->{current} = $displayed; + if (! $self->{style}->{withImage}) + { + $boxes[$displayed]->modify_bg('normal', $self->{style}->{activeBg}); + + } + my $pixbuf = $boxes[$displayed]->child->get_pixbuf + if exists $boxes[$displayed]; + $self->clearPrevious unless $keepPrevious; + $self->{previousPixbufs}->{$idx} = $pixbuf->copy; + $pixbuf->saturate_and_pixelate($pixbuf, 1.8, 0); + $pixbuf = $pixbuf->composite_color_simple ($pixbuf->get_width, $pixbuf->get_height, 'nearest',220, 128, $self->{style}->{activeBgValue}, $self->{style}->{activeBgValue}); + $boxes[$displayed]->child->set_from_pixbuf($pixbuf); + $boxes[$displayed]->{selected} = 1; + $self->grab_focus; + $self->{container}->setCurrentList($self) + if $self->{container}; + return $idx; + } + + sub setHeader + { + my ($self, $header) = @_; + $self->{header} = $header; + } + + sub showCurrent + { + my $self = shift; + return if ! $self->{columns}; + if ($self->{initializing}) + { + Glib::Timeout->add(100 ,\&showCurrent, $self); + return; + } + + my $adj = $self->{scroll}->get_vadjustment; + my $totalRows = int $self->{number} / $self->{columns}; + my $row = (int $self->{current} / $self->{columns}); + + my $ypos = 0; + if ($self->{header}) + { + $ypos = $self->{header}->allocation->y; + # We scroll also the size of the header. + # But we don't do that for the 1st row to have it displayed then. + $ypos += $self->{header}->allocation->height + if $row; + } + # Add the items before + $ypos += (($row - 1) * $self->{style}->{vboxHeight}); + + $adj->set_value($ypos); + return 0; + } + + sub changeItem + { + my ($self, $idx, $previous, $new, $withSelect) = @_; + return $self->changeCurrent($previous, $new, $idx, 0); + } + + sub changeCurrent + { + my ($self, $previous, $new, $idx, $wantSelect) = @_; + my $forceSelect = 0; + #To ease comparison, do some modifications. + #empty borrower is equivalent to 'none'. + $previous->{$self->{borrowerField}} = 'none' if $previous->{$self->{borrowerField}} eq ''; + $new->{$self->{borrowerField}} = 'none' if $new->{$self->{borrowerField}} eq ''; + my $previousDisplayed = $self->{idxToDisplayed}->{$idx}; + my $newDisplayed = $previousDisplayed; + if ($new->{$self->{titleField}} ne $previous->{$self->{titleField}}) + { + # Adjust title + my $newTitle = $self->{parent}->transformTitle($new->{$self->{titleField}}); + $self->{boxes}->[$previousDisplayed]->{info}->{title} = $newTitle; + $self->{tooltips}->set_tip($self->{boxes}->[$previousDisplayed], $newTitle, ''); + my $newItemsArrayIdx; + ($newDisplayed, $newItemsArrayIdx) = $self->findPlace(undef, $newTitle); + # We adjust the index as we'll remove an item + $newDisplayed-- if $newDisplayed > $previousDisplayed; + if ($previousDisplayed != $newDisplayed) + { + #$self->restorePrevious; + my $itemPreviousLine = int $previousDisplayed / $self->{columns}; + my $itemNewLine = int $newDisplayed / $self->{columns}; + my $itemNewCol = $newDisplayed % $self->{columns}; + my ($direction, $origin, $limit); + if ($previousDisplayed > $newDisplayed) + { + $direction = 1; + $origin = $newDisplayed; + $limit = $previousDisplayed - 1; + } + else + { + $direction = -1; + $origin = $previousDisplayed; + $limit = $newDisplayed; + $itemNewCol++ if ($itemNewLine > $itemPreviousLine) && ($itemNewCol != 0) + } + my $box = $self->{cache}->[$idx]->{eventBox}; + my $previousItemsArrayIdx = $self->displayedToItemsArrayIdx($previousDisplayed); + #my $newItemsArrayIdx = $self->displayedToItemsArrayIdx($newDisplayed); + $self->{rowContainers}->[$itemPreviousLine]->remove($box); + splice @{$self->{boxes}}, $previousDisplayed, 1; + $self->{rowContainers}->[$itemNewLine]->pack_start($box,0,0,0); + $self->{rowContainers}->[$itemNewLine]->reorder_child($box, $itemNewCol); + + $self->shiftItems($origin, $direction, 0, $limit); + my $item = splice @{$self->{itemsArray}}, $previousItemsArrayIdx, 1; + $newItemsArrayIdx-- if $previousItemsArrayIdx < $newItemsArrayIdx; + splice @{$self->{itemsArray}}, $newItemsArrayIdx, 0, $item; + splice @{$self->{boxes}}, $newDisplayed, 0, $box; + $self->initConversionTables; + } + } + + if (($previous->{$self->{coverField}} ne $new->{$self->{coverField}}) + || ($previous->{$self->{borrowerField}} ne $new->{$self->{borrowerField}}) + || ($previous->{favourite} ne $new->{favourite})) + { + my ($image, $borrower, $favourite) = ($new->{$self->{coverField}}, $new->{$self->{borrowerField}}, $new->{favourite}); + my @boxes = @{$self->{boxes}}; + my $displayedImage = GCUtils::getDisplayedImage($image, + undef, + $self->{parent}->{options}->file); + + my $pixbuf = $self->createPixbuf($displayedImage, $borrower, $favourite); + $self->{previousPixbufs}->{$idx} = $pixbuf->copy; + $boxes[$newDisplayed]->child->set_from_pixbuf($pixbuf); + $forceSelect = 1; + $wantSelect = 1 if $wantSelect ne ''; + } + if ($self->{filter}) + { + # Test visibility + my $visible = $self->{filter}->test($new); + if (! $visible) + { + $self->{displayedNumber}--; + $self->restorePrevious if $wantSelect; + my $itemLine = int $newDisplayed / $self->{columns}; + $self->{rowContainers}->[$itemLine]->remove( + $self->{cache}->[$idx]->{eventBox} + ); + my $info = $self->{boxes}->[$newDisplayed]->{info}; + splice @{$self->{boxes}}, $newDisplayed, 1; + $self->shiftItems($newDisplayed, -1, 0, scalar @{$self->{boxes}}); + $self->initConversionTables; + $info->{displayed} = $visible; + $idx = $self->getFirstVisibleIdx($newDisplayed); + $wantSelect = 0 if ! scalar @{$self->{boxes}} + } + } + $self->select($idx, $forceSelect) if $wantSelect; + return $idx; + } + + sub showSearch + { + my ($self, $char) = @_; + $self->{searchEntry}->set_text($char); + $self->{searchEntry}->show_all; + $self->activateSearch; + } + + sub activateSearch + { + my ($self) = @_; + $self->{searchEntry}->grab_focus; + $self->{searchEntry}->select_region(length($self->{searchEntry}->get_text), -1); + } + + sub hideSearch + { + my $self = shift; + $self->{searchEntry}->set_text(''); + $self->{searchEntry}->hide; + $self->grab_focus; + $self->{previousSearch} = ''; + } + + sub internalSearch + { + my $self = shift; + + my $query = $self->{searchEntry}->get_text; + return if !$query; + my $newDisplayed = -1; + + my $current = 0; + my $length = length($query); + if ($self->{currentOrder}) + { + if (($length > 1) && ($length > length($self->{previousSearch}))) + { + $current = $self->{idxToDisplayed}->{$self->{itemsArray}->[$self->{current}]->{idx}}; + } + foreach(@{$self->{itemsArray}}[$current..$self->{count} - 1]) + { + next if !$_->{displayed}; + if ($_->{title} ge $query) + { + $newDisplayed = $self->{idxToDisplayed}->{$_->{idx}}; + last; + } + } + } + else + { +# if (length($query) > 1) +# { +# $current = $self->{idxToDisplayed}->{$self->{itemsArray}->[$self->{current}]->{idx}}; +# } + foreach(@{$self->{itemsArray}}[$current..$self->{count} - 1]) + { + next if !$_->{displayed}; + if (($_->{title} =~ m/^\Q$query\E/i) || ($_->{title} lt $query)) + { + $newDisplayed = $self->{idxToDisplayed}->{$_->{idx}}; + last; + } + } + } + + if ($newDisplayed != -1) + { + my $valueIdx = $self->{displayedToIdx}->{$newDisplayed}; + $self->select($valueIdx); + $self->{parent}->display($valueIdx); + $self->{boxes}->[$newDisplayed]->grab_focus; + $self->showCurrent; + $self->activateSearch; + } + $self->{previousSearch} = $query; + } + +} + +{ + package GCImageList; + + use base "Gtk2::VBox"; + use File::Temp qw/ tempfile /; + + my $defaultGroup = 'GCMAINDEFAULTGROUP'; + + sub new + { + my ($proto, $parent, $columns) = @_; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(0,0); + bless ($self, $class); + + $self->{preferences} = $parent->{model}->{preferences}; + $self->{parent} = $parent; + $self->{columns} = $columns; + + $self->{borrowerField} = $parent->{model}->{commonFields}->{borrower}->{name}; + + $self->{scroll} = new Gtk2::ScrolledWindow; + $self->{scroll}->set_policy ('automatic', 'automatic'); + $self->{scroll}->set_shadow_type('none'); + + $self->{searchEntry} = new Gtk2::Entry; + #$self->{list} = new GCBaseImageList($self, $columns); + + $self->{orderSet} = 0; + $self->{sortButton} = Gtk2::Button->new; + $self->setSortButton($self->{preferences}->sortOrder); + $self->{searchEntry}->signal_connect('changed' => sub { + return if ! $self->{searchEntry}->get_text; + $self->internalSearch; + }); + $self->{searchEntry}->signal_connect('key-press-event' => sub { + my ($widget, $event) = @_; + Glib::Source->remove($self->{searchTimeOut}) + if $self->{searchTimeOut}; + return if ! $self->{searchEntry}->get_text; + my $key = Gtk2::Gdk->keyval_name($event->keyval); + if ($key eq 'Escape') + { + $self->hideSearch; + return 1; + } + $self->{searchTimeOut} = Glib::Timeout->add(4000, sub { + $self->hideSearch; + $self->{searchTimeOut} = 0; + return 0; + }); + + return 0; + }); + + #$self->{scroll}->add_with_viewport($self->{list}); + $self->{mainList} = new Gtk2::VBox(0,0); + $self->{scroll}->add_with_viewport($self->{mainList}); + #$self->{list}->initPixmaps; + + $self->pack_start($self->{sortButton},0,0,0); + $self->pack_start($self->{scroll},1,1,0); + $self->pack_start($self->{searchEntry},0,0,0); + + $self->{sortButton}->signal_connect('clicked' => sub { + $self->setSortOrder(-1); + $self->setSortButton; + }); + + $self->initStyle; + $self->setGroupingInformation; + $self->{empty} = 1; + $self->{orderedLists} = []; + $self->{displayed} = {}; + return $self; + } + + sub setSortButton + { + my ($self, $order) = @_; + $order = $self->{currentOrder} + if !defined $order; + my $image = Gtk2::Image->new_from_stock($order + ? 'gtk-sort-descending' + : 'gtk-sort-ascending', + 'button'); + my $stockItem = Gtk2::Stock->lookup($order + ? 'gtk-sort-ascending' + : 'gtk-sort-descending'); + $stockItem->{label} =~ s/_//g; + $self->{sortButton}->set_label($stockItem->{label}); + $self->{sortButton}->set_image($image); + + } + + sub show_all + { + my $self = shift; + $self->SUPER::show_all; + $self->{mainList}->show_all; + $self->{searchEntry}->hide; + } + + sub done + { + my $self = shift; + foreach (values %{$self->{lists}}) + { + $_->done; +# $self->{style}->{vboxWidth} = $_->{style}->{vboxWidth} +# if !exists $self->{style}->{vboxWidth}; + } + # We set a number of ms to wait before enhancing the pictures + my $offset = 0; + foreach (@{$self->{orderedLists}}) + { + $self->{lists}->{$_}->{offset} = $offset; + $offset += $timeOutBetweenEnhancements * ($self->{lists}->{$_}->{displayedNumber} + 1); + } + if ($self->{columns} == 0) + { + $self->signal_connect('size-allocate' => sub { + $self->computeAllocation; + }); + $self->computeAllocation; + } + else + { + foreach (values %{$self->{lists}}) + { + $_->setColumnsNumber($self->{columns}, 0); + } + } + } + + sub computeAllocation + { + my $self = shift; + return if !$self->{style}->{vboxWidth}; + my $width = $self->{scroll}->child->allocation->width - 15; + return if $width < 0; + if (($self->{scroll}->get_hscrollbar->visible) + || ($width > (($self->{columns} + 1) * $self->{style}->{vboxWidth}))) + { + my $columns = int ($width / $self->{style}->{vboxWidth}); + if ($columns) + { + return if $columns == $self->{columns}; + $self->{columns} = $columns; + foreach (values %{$self->{lists}}) + { + $_->setColumnsNumber($columns, 1); + } + # TODO : We should maybe select an item here + #$self->{parent}->display($self->select(-1, 1)) + # if !$self->{current}; + } + else + { + $self->{columns} = 1; + } + } + + } + + sub initStyle + { + my $self = shift; + my $parent = $self->{parent}; + + my $size = $parent->{options}->listImgSize; + $self->{style}->{withImage} = $parent->{options}->listBgPicture; + $self->{style}->{useOverlays} = ($parent->{options}->useOverlays) && ($parent->{model}->{collection}->{options}->{overlay}->{image}); + $parent->{options}->listImgSkin($GCStyle::defaultList) if ! $parent->{options}->exists('listImgSkin'); + $self->{style}->{skin} = $parent->{options}->listImgSkin; + $self->{style}->{withReflect} = ($self->{style}->{withImage} && ($self->{style}->{skin} =~ /Glass/ )) ? 1 : 0; + $parent->{options}->listImgSize(2) if ! $parent->{options}->exists('listImgSize'); + # Sets image width/height (for size = 2), getting value from the collection model or setting to + # default values of 120, 160 if not specified in model file + $self->{style}->{imgWidth} = (exists $parent->{model}->{collection}->{options}->{defaults}->{listImageWidth}) + ? $parent->{model}->{collection}->{options}->{defaults}->{listImageWidth} + : 120; + $self->{style}->{imgHeight} = (exists $parent->{model}->{collection}->{options}->{defaults}->{listImageHeight}) + ? $parent->{model}->{collection}->{options}->{defaults}->{listImageHeight} + : 160; + + $self->{style}->{vboxWidth} = $self->{style}->{imgWidth} + 10; + $self->{style}->{vboxHeight} = $self->{style}->{imgHeight} + 10; + $self->{style}->{vboxHeight} += 20 if $self->{style}->{withImage}; + + $self->{style}->{factor} = ($size == 0) ? 0.5 + : ($size == 1) ? 0.8 + : ($size == 3) ? 1.5 + : ($size == 4) ? 2 + : 1; + $self->{style}->{imgWidth} *= $self->{style}->{factor}; + $self->{style}->{imgHeight} *= $self->{style}->{factor}; + $self->{style}->{vboxWidth} = $self->{style}->{imgWidth} + (10 * $self->{style}->{factor}); + $self->{style}->{vboxHeight} = $self->{style}->{imgHeight} + (10 * $self->{style}->{factor}); + $self->{style}->{vboxHeight} += (20 * $self->{style}->{factor}) if $self->{style}->{withImage}; + $self->{style}->{vboxHeight} += (30 * $self->{style}->{factor}) if $self->{style}->{withReflect}; + $self->{style}->{pageCount} = int 5 / $self->{style}->{factor}; + + # Pixbuf for lending icon + my $lendImageFile = $ENV{GCS_SHARE_DIR}.'/overlays/lend_'; + $lendImageFile .= ($size < 1) ? 'verysmall' + : ($size < 2) ? 'small' + : ($size < 3) ? 'med' + : ($size < 4) ? 'large' + : 'xlarge'; + $self->{style}->{lendPixbuf} = Gtk2::Gdk::Pixbuf->new_from_file($lendImageFile.'.png'); + + # Pixbuf for favourite icon + my $favImageFile = $ENV{GCS_SHARE_DIR}.'/overlays/favourite_'; + $favImageFile .= ($size < 1) ? 'verysmall' + : ($size < 2) ? 'small' + : ($size < 3) ? 'med' + : ($size < 4) ? 'large' + : 'xlarge'; + $self->{style}->{favPixbuf} = Gtk2::Gdk::Pixbuf->new_from_file($favImageFile.'.png'); + + if ($self->{style}->{useOverlays}) + { + $self->{style}->{overlayImage} = $ENV{GCS_SHARE_DIR}.'/overlays/'.$parent->{model}->{collection}->{options}->{overlay}->{image}; + $self->{style}->{overlayPixbuf} = Gtk2::Gdk::Pixbuf->new_from_file($self->{style}->{overlayImage}); + + $self->{style}->{overlayPaddingLeft} = $parent->{model}->{collection}->{options}->{overlay}->{paddingLeft}; + $self->{style}->{overlayPaddingRight} = $parent->{model}->{collection}->{options}->{overlay}->{paddingRight}; + $self->{style}->{overlayPaddingTop} = $parent->{model}->{collection}->{options}->{overlay}->{paddingTop}; + $self->{style}->{overlayPaddingBottom} = $parent->{model}->{collection}->{options}->{overlay}->{paddingBottom}; + } + + # Default value for align + $self->{style}->{groupAlign} = 'center'; + + if ($self->{style}->{withImage}) + { + my $bgdir = $ENV{GCS_SHARE_DIR}.'/list_bg/'.$self->{style}->{skin}; + + $self->{style}->{bgPixmap} = $bgdir.'/list_bg.png'; + + my $tmpPixbuf = Gtk2::Gdk::Pixbuf->new_from_file($self->{style}->{bgPixmap}); + $tmpPixbuf = GCUtils::scaleMaxPixbuf($tmpPixbuf, + $self->{style}->{vboxWidth}, + $self->{style}->{vboxHeight}, + 1); + (my $fh, $self->{style}->{tmpBgPixmap}) = tempfile(UNLINK => 1); + close $fh; + if ($^O =~ /win32/i) + { + # It looks like Win32 version only supports JPEG pictures for background + $tmpPixbuf->save($self->{style}->{tmpBgPixmap}, 'jpeg', quality => '100'); + } + else + { + $tmpPixbuf->save($self->{style}->{tmpBgPixmap}, 'png'); + } + GCUtils::setWidgetPixmap($self->{mainList}->parent, $self->{style}->{tmpBgPixmap}); + + $self->{style}->{backgroundPixbuf} = Gtk2::Gdk::Pixbuf->new_from_file($self->{style}->{bgPixmap}); + $self->{style}->{backgroundPixbuf} = GCUtils::scaleMaxPixbuf($self->{style}->{backgroundPixbuf}, + $self->{style}->{vboxWidth}, + $self->{style}->{vboxHeight}, + 1); + my @colors = split m/,/, $self->{parent}->{options}->listFgColor; + ($colors[0], $colors[1], $colors[2]) = (65535, 65535, 65535) if !@colors; + my $red = int($colors[0] / 257); + my $green = int($colors[1] / 257); + my $blue = int($colors[2] / 257); + $self->{style}->{activeBgValue} = ($red << 16) + ($green << 8) + $blue; + + + if ($self->{style}->{withReflect}) + { + $self->{style}->{foregroundPixbuf} = Gtk2::Gdk::Pixbuf->new_from_file($bgdir.'/list_fg.png'); + $self->{style}->{foregroundPixbuf} = GCUtils::scaleMaxPixbuf($self->{style}->{foregroundPixbuf}, + $self->{style}->{vboxWidth}, + $self->{style}->{vboxHeight}, + 1); + } + if (open STYLE, $bgdir.'/style') + { + while ( + + +

$$PAGETITLE$$

+[JAVASCRIPT] +
+
+ + + + +
+
+ + +
+
+[/JAVASCRIPT] + +
+[/HEADER] +[ITEM] +
+[JAVASCRIPT] + +[/JAVASCRIPT] + $$TITLE_FIELD$$ | ($$TOP$$) + $$borrower_YESNO$$$$borrower_OREMPTY$$ +
+
+ +
+[/ITEM] +[FOOTER] +
+
$$GENERATOR_NOTE$$ - Modèle Piwi - Adapté de Tian
+ + +[/FOOTER] +[POST] + + my %letters = (); + my $idx = 0; foreach (@items) + { + my $firstLetter = uc(substr($_->{name}, 0, 1)); + $firstLetter =~ s/[^A-Z]/_/; + if (!$letters{$firstLetter}) + { + $body =~ s/$_<\/a> |/; + } + $header =~ s/\| ([^<|]) /| $1<\/span> /g; + #$header =~ s/\| ([^<]) \|/| $1<\/span> |/g; +[/POST] \ No newline at end of file diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/NellistosDark /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/NellistosDark --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/NellistosDark 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/NellistosDark 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,67 @@ +[HEADER] + + + + + + $$PAGETITLE$$ + + + +

$$PAGETITLE$$

+
+
    +[/HEADER] +[ITEM] +
  • +
    + +
    +
    Book cover
    +
    +
      +
    • $$authors$$
    • +
    • $$publisher$$
    • +
    • $$publication$$
    • +
    • $$format$$
    • +
    • $$tags$$
    • +
    +
    +
    +
    $$description$$
    +
    +
    +
  • +[/ITEM] +[FOOTER] +
+
+
Design Nellistos +
+ based on microFormats Spec
+ + +[/FOOTER] +[POST] +[/POST] + + + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/NellistosDark.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/NellistosDark.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/NellistosLight /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/NellistosLight --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/NellistosLight 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/NellistosLight 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,66 @@ +[HEADER] + + + + + + $$PAGETITLE$$ + + + +

$$PAGETITLE$$

+
+
    +[/HEADER] +[ITEM] +
  • +
    + +
    +
    Book cover
    +
    +
      +
    • $$authors$$
    • +
    • $$publisher$$
    • +
    • $$publication$$
    • +
    • $$format$$
    • +
    • $$tags$$
    • +
    +
    +
    +
    $$description$$
    +
    +
    +
  • +[/ITEM] +[FOOTER] +
+
+
Design Nellistos +
+ based on microFormats Spec
+ + +[/FOOTER] +[POST] +[/POST] + + + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/NellistosLight.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/NellistosLight.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/entries --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/entries 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,368 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/html_models/GCbooks +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-09-01T20:23:56.447815Z +1739 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +FloFred +file + + + + +2009-11-21T08:50:55.672404Z +42f8e4c8ea363555c8c472eba7b5b625 +2007-02-09T21:00:39.000000Z +479 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1998 + +NellistosDark.png +file + + + + +2009-11-21T08:50:55.672404Z +09eeacb60b04bc2bab2e161515d1a8c4 +2009-09-01T20:23:56.447815Z +1739 +tian +has-props + + + + + + + + + + + + + + + + + + + + +26138 + +Shelf +file + + + + +2009-11-21T08:50:55.672404Z +d333f418685ccf129fbb073bac04ba58 +2006-08-11T22:31:59.000000Z +182 +tian + + + + + + + + + + + + + + + + + + + + + +254 + +FloFred.png +file + + + + +2009-11-21T08:50:55.676383Z +4e76220bd1c4eaf4ee303bf90cb0bfc4 +2006-11-20T19:21:36.000000Z +334 +tian +has-props + + + + + + + + + + + + + + + + + + + + +69747 + +NellistosLight +file + + + + +2009-11-21T08:50:55.676383Z +f9f54a724835a0659d607b65ae58098f +2009-09-01T20:23:56.447815Z +1739 +tian + + + + + + + + + + + + + + + + + + + + + +2119 + +Shelf.png +file + + + + +2009-11-21T08:50:55.676383Z +3aefa5defaaab4d22e731ecfcffc0bee +2006-08-13T00:00:01.000000Z +183 +tian +has-props + + + + + + + + + + + + + + + + + + + + +62375 + +NellistosLight.png +file + + + + +2009-11-21T08:50:55.680383Z +f06aff9b799dcfead5c1264e74092877 +2009-09-01T20:23:56.447815Z +1739 +tian +has-props + + + + + + + + + + + + + + + + + + + + +30503 + +Simple +file + + + + +2009-11-21T08:50:55.680383Z +9531cb6e05918cff3b1304e1e47a929a +2006-08-11T22:31:59.000000Z +182 +tian + + + + + + + + + + + + + + + + + + + + + +196 + +Simple.png +file + + + + +2009-11-21T08:50:55.684384Z +230c0660796b0179b8883c966c272d0e +2006-08-10T20:47:55.000000Z +180 +tian +has-props + + + + + + + + + + + + + + + + + + + + +29817 + +NellistosDark +file + + + + +2009-11-21T08:50:55.684384Z +47d61178e508b363ca3cf7d2edbfd960 +2009-09-01T20:23:56.447815Z +1739 +tian + + + + + + + + + + + + + + + + + + + + + +2153 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/FloFred.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/FloFred.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/FloFred.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/FloFred.png.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/FloFred.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/FloFred.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/FloFred.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/FloFred.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/NellistosDark.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/NellistosDark.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/NellistosDark.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/NellistosDark.png.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/NellistosLight.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/NellistosLight.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/NellistosLight.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/NellistosLight.png.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/Shelf.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/Shelf.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/Shelf.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/Shelf.png.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/Simple.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/Simple.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/prop-base/Simple.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/prop-base/Simple.png.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/FloFred.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/FloFred.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/FloFred.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/FloFred.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/FloFred.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/FloFred.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,73 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + + + +

$$PAGETITLE$$

+ + +[/HEADER] +[ITEM] + + +[/ITEM] +[FOOTER] +


+ + + + + + + + +
$$title$$
$$title$$
$$authors_LABEL$$$$SEPARATOR$$$$authors$$ 
$$publisher_LABEL$$$$SEPARATOR$$$$publisher$$
$$publication_LABEL$$$$SEPARATOR$$$$publication$$
$$format_LABEL$$$$SEPARATOR$$$$format$$
$$description$$
+


+

$$GENERATOR_NOTE$$ - Design Florent

+ + +[/FOOTER] +[POST] +[/POST] + + + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosDark.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosDark.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosDark.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosDark.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosDark.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosDark.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,67 @@ +[HEADER] + + + + + + $$PAGETITLE$$ + + + +

$$PAGETITLE$$

+
+
    +[/HEADER] +[ITEM] +
  • +
    + +
    +
    Book cover
    +
    +
      +
    • $$authors$$
    • +
    • $$publisher$$
    • +
    • $$publication$$
    • +
    • $$format$$
    • +
    • $$tags$$
    • +
    +
    +
    +
    $$description$$
    +
    +
    +
  • +[/ITEM] +[FOOTER] +
+
+
Design Nellistos +
+ based on microFormats Spec
+ + +[/FOOTER] +[POST] +[/POST] + + + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosLight.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosLight.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosLight.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosLight.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosLight.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/NellistosLight.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,66 @@ +[HEADER] + + + + + + $$PAGETITLE$$ + + + +

$$PAGETITLE$$

+
+
    +[/HEADER] +[ITEM] +
  • +
    + +
    +
    Book cover
    +
    +
      +
    • $$authors$$
    • +
    • $$publisher$$
    • +
    • $$publication$$
    • +
    • $$format$$
    • +
    • $$tags$$
    • +
    +
    +
    +
    $$description$$
    +
    +
    +
  • +[/ITEM] +[FOOTER] +
+
+
Design Nellistos +
+ based on microFormats Spec
+ + +[/FOOTER] +[POST] +[/POST] + + + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/Shelf.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/Shelf.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/Shelf.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/Shelf.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/Shelf.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/Shelf.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,12 @@ + + Shelf + + authors + publisher + publication + description + format + rating + acquisition + + \ No newline at end of file Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/Simple.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/Simple.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/Simple.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/Simple.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCbooks/.svn/text-base/Simple.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCbooks/.svn/text-base/Simple.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,10 @@ + + Simple + + title + authors + publisher + publication + format + + \ No newline at end of file diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCcoins/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCcoins/.svn/entries --- gcstar-1.4.3/share/gcstar/html_models/GCcoins/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCcoins/.svn/entries 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/html_models/GCcoins +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2007-01-29T18:08:23.000000Z +454 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +Simple +file + + + + +2009-11-21T08:50:54.283965Z +a0e68bf59a4f2b964374ccab83f50f3b +2007-01-29T18:08:23.000000Z +454 +tian + + + + + + + + + + + + + + + + + + + + + +213 + +Simple.png +file + + + + +2009-11-21T08:50:54.288380Z +70c11e761d68c6323acc9ebd73a1b69d +2007-01-29T18:08:23.000000Z +454 +tian +has-props + + + + + + + + + + + + + + + + + + + + +20252 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCcoins/.svn/prop-base/Simple.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCcoins/.svn/prop-base/Simple.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCcoins/.svn/prop-base/Simple.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCcoins/.svn/prop-base/Simple.png.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCcoins/.svn/text-base/Simple.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCcoins/.svn/text-base/Simple.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCcoins/.svn/text-base/Simple.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCcoins/.svn/text-base/Simple.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCcoins/.svn/text-base/Simple.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCcoins/.svn/text-base/Simple.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,11 @@ + + Simple + + type + currency + value + year + country + condition + + \ No newline at end of file diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/entries --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/entries 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,606 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/html_models/GCfilms +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-01-01T19:06:05.402814Z +1594 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +rootII_design.png +file + + + + +2009-11-21T08:50:54.152411Z +a7775e6c651af394dedf52646410d752 +2006-04-23T21:36:14.000000Z +27 +tian +has-props + + + + + + + + + + + + + + + + + + + + +49787 + +Tian-Mario.png +file + + + + +2009-11-21T08:50:54.152411Z +4bcc91b937d9e3006003e8b8d3a07323 +2006-05-12T18:23:05.000000Z +42 +tian +has-props + + + + + + + + + + + + + + + + + + + + +30879 + +Shelf.png +file + + + + +2009-11-21T08:50:54.156384Z +866fbdf969d8feae0711f277a16ab223 +2006-04-23T21:36:14.000000Z +27 +tian +has-props + + + + + + + + + + + + + + + + + + + + +86073 + +Flat +file + + + + +2009-11-21T08:50:54.156384Z +cf5230445c5eb51f65aceb18667bdfc4 +2007-02-09T21:00:39.000000Z +479 +tian + + + + + + + + + + + + + + + + + + + + + +1912 + +float.png +file + + + + +2009-11-21T08:50:54.156384Z +807c9aeb1e8c1140e6c17337edc9b9a2 +2008-01-12T16:32:21.000000Z +1139 +tian +has-props + + + + + + + + + + + + + + + + + + + + +67698 + +Simple +file + + + + +2009-11-21T08:50:54.160390Z +326b4f22488fe4d63d040759a991e4c4 +2007-02-09T21:00:39.000000Z +479 +tian + + + + + + + + + + + + + + + + + + + + + +1588 + +Tabs +file + + + + +2009-11-21T08:50:54.160390Z +07b25007a1393a40ceb1018dc407c28f +2007-02-09T21:00:39.000000Z +479 +tian + + + + + + + + + + + + + + + + + + + + + +4885 + +Tian +file + + + + +2009-11-21T08:50:54.160390Z +0c0c9147252f9157f8b4c455015040c6 +2008-05-26T16:57:31.000000Z +1460 +tian + + + + + + + + + + + + + + + + + + + + + +7022 + +rootII_design +file + + + + +2009-11-21T08:50:54.160390Z +3424559e5bebe788d2f6ba337c83243f +2007-02-09T21:00:39.000000Z +479 +tian + + + + + + + + + + + + + + + + + + + + + +3818 + +Tian-Mario +file + + + + +2009-11-21T08:50:54.164382Z +5a7ea3193800b4ac1848c5440f201cb2 +2008-05-26T16:57:31.000000Z +1460 +tian + + + + + + + + + + + + + + + + + + + + + +6975 + +Shelf +file + + + + +2009-11-21T08:50:54.164382Z +53736acf0524874d7ffbd81343b50548 +2007-10-25T19:25:37.000000Z +982 +tian + + + + + + + + + + + + + + + + + + + + + +5750 + +float +file + + + + +2009-11-21T08:50:54.164382Z +7698d72c92834e662766a4ef70f29b94 +2008-01-23T19:15:47.000000Z +1154 +tian + + + + + + + + + + + + + + + + + + + + + +2450 + +Flat.png +file + + + + +2009-11-21T08:50:54.164382Z +7b0076a0d249c05f6d22c6fcaf5b47b0 +2006-05-12T18:23:05.000000Z +42 +tian +has-props + + + + + + + + + + + + + + + + + + + + +77945 + +Simple.png +file + + + + +2009-11-21T08:50:54.168381Z +800def7ffe954e35d7ad92d0b483d74a +2006-04-23T21:36:14.000000Z +27 +tian +has-props + + + + + + + + + + + + + + + + + + + + +28419 + +Tabs.png +file + + + + +2009-11-21T08:50:54.168381Z +0f6a6e73170424ad765ac6a323c05f50 +2006-04-23T21:36:14.000000Z +27 +tian +has-props + + + + + + + + + + + + + + + + + + + + +51681 + +Tian.png +file + + + + +2009-11-21T08:50:54.172383Z +6146d982daa77da7ade8964d5e388e0e +2006-04-23T21:36:14.000000Z +27 +tian +has-props + + + + + + + + + + + + + + + + + + + + +43774 + +Tian-Mario-Kim +file + + + + +2009-11-21T08:50:54.172383Z +02342b59ab79f4ab6ec79ee870e97bf3 +2009-01-01T19:06:05.402814Z +1594 +tian + + + + + + + + + + + + + + + + + + + + + +7308 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Flat.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Flat.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Flat.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Flat.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/float.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/float.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/float.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/float.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/rootII_design.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/rootII_design.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/rootII_design.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/rootII_design.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Shelf.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Shelf.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Shelf.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Shelf.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Simple.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Simple.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Simple.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Simple.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Tabs.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Tabs.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Tabs.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Tabs.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Tian-Mario.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Tian-Mario.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Tian-Mario.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Tian-Mario.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Tian.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Tian.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/prop-base/Tian.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/prop-base/Tian.png.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Flat.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Flat.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Flat.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Flat.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Flat.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Flat.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,109 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + + + +
$$TOTALNUMBER$$ $$ITEMS$$
+

$$PAGETITLE$$

+ +[/HEADER] +[ITEM] + + + + +[/ITEM] +[FOOTER] +
+ $$title$$ + +
$$genre$$ - $$country$$ - $$time$$
+ $$date$$
+ +
$$title$$
+ $$director$$
+ +
$$actors_LABEL$$$$SEPARATOR$$$$actors$$
+ $$synopsis$$ +
+ +
+ + + +[/FOOTER] +[POST] +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/float.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/float.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/float.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/float.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/float.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/float.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,120 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + + + + +
$$PAGETITLE$$ - $$TOTALNUMBER$$ $$ITEMS$$


+ +[/HEADER] +[ITEM] + + + + +[/ITEM] +[FOOTER] +
+ $$title$$ + +
$$time_LABEL$$: $$time$$
+ $$genre_LABEL$$: $$genre$$
+
$$title$$
+
$$director_LABEL$$:
$$director$$ +

$$actors_LABEL$$:
$$actors$$ +

$$synopsis_LABEL$$:
$$synopsis$$ +

+ + + + + + + +
$$TOP$$$$gtk-media-play$$$$BOTTOM$$
+
+
+ + + + +[/FOOTER] +[POST] +[/POST] \ No newline at end of file Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/rootII_design.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/rootII_design.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/rootII_design.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/rootII_design.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/rootII_design.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/rootII_design.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,118 @@ +[HEADER] + + + + + + $$PAGETITLE$$ +[JAVASCRIPT] + +[/JAVASCRIPT] + + + + +
+

$$PAGETITLE$$

+
+ + + + +
+[/HEADER] +[ITEM] + + + + + + + + + + + + +
$$title$$
$$title$$$$original_LABEL$$$$SEPARATOR$$$$original$$
$$director_LABEL$$$$SEPARATOR$$$$director$$
$$date_LABEL$$$$SEPARATOR$$$$date$$
$$time_LABEL$$$$SEPARATOR$$$$time$$
$$country_LABEL$$$$SEPARATOR$$$$country$$
$$genre_LABEL$$$$SEPARATOR$$$$genre$$
$$actors_LABEL$$$$SEPARATOR$$$$actors$$
$$synopsis$$

+[/ITEM] +[FOOTER] +
$$TOTALNUMBER$$ films
+




design by + rootII design department
+
$$GENERATOR_NOTE$$
+ + +[/FOOTER] +[POST] +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Shelf.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Shelf.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Shelf.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Shelf.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Shelf.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Shelf.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,284 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + +

$$PAGETITLE$$

+
+[/HEADER] +[ITEM] +
+
+ $$title$$ +
+
+

$$title$$

+
+

$$info_LABEL$$

+ + + + + + + + + + + +
+ $$title$$ + $$date_LABEL$$$$date$$
$$director_LABEL$$$$director$$
$$time_LABEL$$$$time$$
$$genre_LABEL$$$$genre$$
$$actors_LABEL$$$$actors$$
+

+ $$synopsis$$ +

+
+

$$details_LABEL$$

+ + + + +
$$rating_LABEL$$$$rating$$/10
$$format_LABEL$$$$format$$ ($$number$$)
$$borrower_LABEL$$$$borrower$$
+
+
+
+[/ITEM] +[FOOTER] +
 
+
+

$$GENERATOR_NOTE$$

+ + +[/FOOTER] +[POST] +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Simple.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Simple.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Simple.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Simple.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Simple.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Simple.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,100 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + + + +

$$PAGETITLE$$

+ + + + + + + + +[/HEADER] +[ITEM] + + + + + + + +[/ITEM] +[FOOTER] +
$$title_LABEL$$$$director_LABEL$$$$genre_LABEL$$$$date_LABEL$$$$time_LABEL$$
$$title$$$$director$$$$genre$$$$date$$$$time$$
+

$$BORROWED_ITEMS$$

+

$$GENERATOR_NOTE$$

+ + +[/FOOTER] +[POST] +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tabs.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tabs.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tabs.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tabs.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tabs.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tabs.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,245 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + +

$$PAGETITLE$$

+[/HEADER] +[ITEM] +
+

$$title$$

+
+ $$title$$ +
+
+ $$info_LABEL$$ +
+
$$date_LABEL$$
+
$$date$$
+
$$director_LABEL$$
+
$$director$$
+
$$time_LABEL$$
+
$$time$$
+
$$genre_LABEL$$
+
$$genre$$
+
$$actors_LABEL$$
+
$$actors$$
+
+
+
+ $$details_LABEL$$ +
+
$$rating_LABEL$$
+
$$rating$$/10
+
$$format_LABEL$$
+
$$format$$ ($$number$$)
+
$$audio_LABEL$$
+
$$audio$$
+
$$borrower_LABEL$$
+
$$borrower$$
+
+
+
+ $$synopsis_LABEL$$ +

$$synopsis$$

+
+
+[/ITEM] +[FOOTER] +
$$GENERATOR_NOTE$$
+ + +[/FOOTER] +[POST] +[/POST] diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario-Kim.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario-Kim.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario-Kim.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario-Kim.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,281 @@ +[HEADER] + + + + + $$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + + +

$$PAGETITLE$$

+[JAVASCRIPT] +
+
+ + + + +
+
+ + +
+
+[/JAVASCRIPT] + +
+[/HEADER] +[ITEM] +
+[JAVASCRIPT] + +[/JAVASCRIPT] + $$title$$ | ($$TOP$$) + $$borrower_YESNO$$$$borrower_OREMPTY$$ +
+
+ +
+[/ITEM] +[FOOTER] +
+
$$GENERATOR_NOTE$$
+ + +[/FOOTER] +[POST] + + my %letters = (); + my $idx = 0; + + foreach (@items) + { + my $title = $self->{options}->{originalList}->transformValue($_->{title}, 'title'); + my $firstLetter = uc(substr($title, 0, 1)); + $firstLetter =~ s/[^A-Z]/_/; + if (!$letters{$firstLetter}) + { + $body =~ s/$_<\/a> |/; + } +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tian-Mario.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,276 @@ +[HEADER] + + + + + $$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + + +

$$PAGETITLE$$

+[JAVASCRIPT] +
+
+ + + + +
+
+ + +
+
+[/JAVASCRIPT] + +
+[/HEADER] +[ITEM] +
+[JAVASCRIPT] + +[/JAVASCRIPT] + $$title$$ | ($$TOP$$) + $$borrower_YESNO$$$$borrower_OREMPTY$$ +
+
+ +
+[/ITEM] +[FOOTER] +
+
$$GENERATOR_NOTE$$
+ + +[/FOOTER] +[POST] + + my %letters = (); + my $idx = 0; + + foreach (@items) + { + my $title = $self->{options}->{originalList}->transformValue($_->{title}, 'title'); + my $firstLetter = uc(substr($title, 0, 1)); + $firstLetter =~ s/[^A-Z]/_/; + if (!$letters{$firstLetter}) + { + $body =~ s/$_<\/a> |/; + } +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tian.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tian.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tian.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tian.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCfilms/.svn/text-base/Tian.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCfilms/.svn/text-base/Tian.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,276 @@ +[HEADER] + + + + + $$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + + +

$$PAGETITLE$$

+[JAVASCRIPT] +
+
+ + + + +
+
+ + +
+
+[/JAVASCRIPT] + +
+[/HEADER] +[ITEM] +
+[JAVASCRIPT] + +[/JAVASCRIPT] + $$title$$ | ($$TOP$$) + $$borrower_YESNO$$$$borrower_OREMPTY$$ +
+
+ +
+[/ITEM] +[FOOTER] +
+
$$GENERATOR_NOTE$$
+ + +[/FOOTER] +[POST] + + my %letters = (); + my $idx = 0; + + foreach (@items) + { + my $title = $self->{options}->{originalList}->transformValue($_->{title}, 'title'); + my $firstLetter = uc(substr($title, 0, 1)); + $firstLetter =~ s/[^A-Z]/_/; + if (!$letters{$firstLetter}) + { + $body =~ s/$_<\/a> |/; + } + $header =~ s/\| ([^<|]) /| $1<\/span> /g; + #$header =~ s/\| ([^<]) \|/| $1<\/span> |/g; +[/POST] diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/entries --- gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/entries 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,232 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/html_models/GCgames +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2007-06-20T21:14:09.000000Z +660 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +Flat +file + + + + +2009-11-21T08:50:54.959393Z +bc8a6a1f0830443baecbd19394f5059c +2007-06-20T21:14:09.000000Z +660 +tian + + + + + + + + + + + + + + + + + + + + + +1909 + +Flat.png +file + + + + +2009-11-21T08:50:54.963384Z +8f302149761c633530079f3612b75360 +2007-06-20T21:14:09.000000Z +660 +tian +has-props + + + + + + + + + + + + + + + + + + + + +91347 + +Simple +file + + + + +2009-11-21T08:50:54.963384Z +f621a42103eca170797fc61525bde7c1 +2006-12-05T21:45:55.000000Z +359 +tian + + + + + + + + + + + + + + + + + + + + + +189 + +Tabs +file + + + + +2009-11-21T08:50:54.967384Z +9346f3fd06692c65f4aa79e3d6b6a046 +2007-02-09T21:00:39.000000Z +479 +tian + + + + + + + + + + + + + + + + + + + + + +5755 + +Simple.png +file + + + + +2009-11-21T08:50:54.967384Z +01f6309a1d5b9cb7e2791ae6ce3c5b59 +2006-06-08T16:10:08.000000Z +73 +tian +has-props + + + + + + + + + + + + + + + + + + + + +28909 + +Tabs.png +file + + + + +2009-11-21T08:50:54.971382Z +cc5074525bb29deb4df9586260b12304 +2006-06-08T16:10:08.000000Z +73 +tian +has-props + + + + + + + + + + + + + + + + + + + + +46938 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/prop-base/Flat.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/prop-base/Flat.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/prop-base/Flat.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/prop-base/Flat.png.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/prop-base/Simple.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/prop-base/Simple.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/prop-base/Simple.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/prop-base/Simple.png.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/prop-base/Tabs.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/prop-base/Tabs.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/prop-base/Tabs.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/prop-base/Tabs.png.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/text-base/Flat.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/text-base/Flat.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/text-base/Flat.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/text-base/Flat.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/text-base/Flat.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/text-base/Flat.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,111 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + + + +
$$TOTALNUMBER$$ $$ITEMS$$
+

$$PAGETITLE$$

+ +[/HEADER] +[ITEM] + + + + +[/ITEM] +[FOOTER] +
+ + $$name$$ + + +
$$platform$$ - $$editor$$
+ $$genre$$
+ +
$$name$$
+ +
+ $$description$$ +
+ +
+ + + +[/FOOTER] +[POST] +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/text-base/Simple.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/text-base/Simple.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/text-base/Simple.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/text-base/Simple.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/text-base/Simple.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/text-base/Simple.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,10 @@ + + Simple + + name + editor + platform + genre + players + + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/text-base/Tabs.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/text-base/Tabs.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/text-base/Tabs.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/text-base/Tabs.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCgames/.svn/text-base/Tabs.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCgames/.svn/text-base/Tabs.svn-base 2009-11-21 08:50:54.000000000 +0000 @@ -0,0 +1,284 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + +

$$PAGETITLE$$

+[/HEADER] +[ITEM] +
+

$$name$$

+
+ $$name$$ +
+
+ $$info_LABEL$$ +
+
$$platform_LABEL$$
+
$$platform$$
+
$$genre_LABEL$$
+
$$genre$$
+
$$players_LABEL$$
+
$$players$$
+
$$editor_LABEL$$
+
$$editor$$
+
$$released_LABEL$$
+
$$released$$
+
$$rating_LABEL$$
+
$$rating$$/10
+
$$completion_LABEL$$
+
$$completion$$
+
$$borrower_LABEL$$
+
$$borrower$$
+
+
+
+ $$description_LABEL$$ + + + + +
$$screenshot1_LABEL$$$$screenshot2_LABEL$$

$$description$$

+
+
+ $$tips_LABEL$$ +
+ + + $$code_TABLE$$ +
$$code_LABEL$$$$Effect_LABEL$$
+ + + $$unlockable_TABLE$$ +
$$unlockable_LABEL$$$$Howto_LABEL$$
+

$$secrets$$

+
+
+
+[/ITEM] +[FOOTER] +
$$GENERATOR_NOTE$$
+ + +[/FOOTER] +[POST] +[/POST] diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCminicars/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCminicars/.svn/entries --- gcstar-1.4.3/share/gcstar/html_models/GCminicars/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCminicars/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/html_models/GCminicars +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-09-01T19:50:59.567603Z +1736 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +Tian-Jim +file + + + + +2009-11-21T08:50:53.827381Z +16f3926fcff421c170057ea1317b26b6 +2009-09-01T19:50:59.567603Z +1736 +tian + + + + + + + + + + + + + + + + + + + + + +7196 + +Tian-Jim.png +file + + + + +2009-11-21T08:50:53.827381Z +7f47d03a7148a8b073fec28b101ed8ef +2009-09-01T19:50:59.567603Z +1736 +tian +has-props + + + + + + + + + + + + + + + + + + + + +39085 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCminicars/.svn/prop-base/Tian-Jim.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCminicars/.svn/prop-base/Tian-Jim.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCminicars/.svn/prop-base/Tian-Jim.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCminicars/.svn/prop-base/Tian-Jim.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCminicars/.svn/text-base/Tian-Jim.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCminicars/.svn/text-base/Tian-Jim.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCminicars/.svn/text-base/Tian-Jim.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCminicars/.svn/text-base/Tian-Jim.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCminicars/.svn/text-base/Tian-Jim.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCminicars/.svn/text-base/Tian-Jim.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,279 @@ +[HEADER] + + + + + $$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + + +

$$PAGETITLE$$

+[JAVASCRIPT] +
+
+ + + + +
+
+ + +
+
+[/JAVASCRIPT] + +
+[/HEADER] +[ITEM] +
+[JAVASCRIPT] + +[/JAVASCRIPT] + $$name$$ | ($$TOP$$) + $$borrower_YESNO$$$$borrower_OREMPTY$$ +
+
+ +
+[/ITEM] +[FOOTER] +
+
$$GENERATOR_NOTE$$
+ + +[/FOOTER] +[POST] + + my %letters = (); + my $idx = 0; + + foreach (@items) + { + my $name = $self->{options}->{originalList}->transformValue($_->{name}, 'name'); + my $firstLetter = uc(substr($name, 0, 1)); + $firstLetter =~ s/[^A-Z]/_/; + if (!$letters{$firstLetter}) + { + $body =~ s/$_<\/a> |/; + } + $header =~ s/\| ([^<|]) /| $1<\/span> /g; + #$header =~ s/\| ([^<]) \|/| $1<\/span> |/g; +[/POST] diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCminicars/Tian-Jim /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCminicars/Tian-Jim --- gcstar-1.4.3/share/gcstar/html_models/GCminicars/Tian-Jim 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCminicars/Tian-Jim 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,279 @@ +[HEADER] + + + + + $$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + + +

$$PAGETITLE$$

+[JAVASCRIPT] +
+
+ + + + +
+
+ + +
+
+[/JAVASCRIPT] + +
+[/HEADER] +[ITEM] +
+[JAVASCRIPT] + +[/JAVASCRIPT] + $$name$$ | ($$TOP$$) + $$borrower_YESNO$$$$borrower_OREMPTY$$ +
+
+ +
+[/ITEM] +[FOOTER] +
+
$$GENERATOR_NOTE$$
+ + +[/FOOTER] +[POST] + + my %letters = (); + my $idx = 0; + + foreach (@items) + { + my $name = $self->{options}->{originalList}->transformValue($_->{name}, 'name'); + my $firstLetter = uc(substr($name, 0, 1)); + $firstLetter =~ s/[^A-Z]/_/; + if (!$letters{$firstLetter}) + { + $body =~ s/$_<\/a> |/; + } + $header =~ s/\| ([^<|]) /| $1<\/span> /g; + #$header =~ s/\| ([^<]) \|/| $1<\/span> |/g; +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCminicars/Tian-Jim.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCminicars/Tian-Jim.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/entries --- gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/entries 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,164 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/html_models/GCmusics +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2007-10-25T19:25:37.000000Z +982 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +Shelf +file + + + + +2009-11-21T08:50:56.059386Z +ffa3b561869cf83e920f63a03bf475df +2007-10-25T19:25:37.000000Z +982 +tian + + + + + + + + + + + + + + + + + + + + + +5788 + +Shelf.png +file + + + + +2009-11-21T08:50:56.063385Z +29dd553b3276a86cdea8c37cbf7d74a5 +2006-11-20T19:21:36.000000Z +334 +tian +has-props + + + + + + + + + + + + + + + + + + + + +62357 + +Simple +file + + + + +2009-11-21T08:50:56.063385Z +7e6664c539ad3ae090da587a88e1fc41 +2006-12-05T21:45:55.000000Z +359 +tian + + + + + + + + + + + + + + + + + + + + + +187 + +Simple.png +file + + + + +2009-11-21T08:50:56.067385Z +164a69623c0fada7c2107700121e8db5 +2006-11-20T19:21:36.000000Z +334 +tian +has-props + + + + + + + + + + + + + + + + + + + + +24463 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/prop-base/Shelf.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/prop-base/Shelf.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/prop-base/Shelf.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/prop-base/Shelf.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/prop-base/Simple.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/prop-base/Simple.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/prop-base/Simple.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/prop-base/Simple.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/text-base/Shelf.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/text-base/Shelf.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/text-base/Shelf.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/text-base/Shelf.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/text-base/Shelf.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/text-base/Shelf.svn-base 2009-11-21 08:50:55.000000000 +0000 @@ -0,0 +1,298 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + +

$$PAGETITLE$$

+
+[/HEADER] +[ITEM] +
+
+ $$TITLE_FIELD$$ +
+
+

$$TITLE_FIELD$$

+
+

$$main_LABEL$$

+ + + + + + +
$$artist_LABEL$$$$artist$$
$$label_LABEL$$$$label$$
$$release_LABEL$$$$release$$
$$running_LABEL$$$$running$$
$$genre_LABEL$$$$genre$$
+ +

$$details_LABEL$$

+ + + + +
$$producer_LABEL$$$$producer$$
$$composer_LABEL$$$$composer$$
$$comments_LABEL$$$$comments$$
+ +

$$tracks_LABEL$$

+ + $$tracks_TABLE$$ +
+
+
+
+[/ITEM] +[FOOTER] +
 
+
+

$$GENERATOR_NOTE$$

+ + +[/FOOTER] +[POST] +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/text-base/Simple.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/text-base/Simple.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/text-base/Simple.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/text-base/Simple.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCmusics/.svn/text-base/Simple.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCmusics/.svn/text-base/Simple.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,10 @@ + + Simple + + title + artist + running + label + genre + + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/entries --- gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,164 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/html_models/GCstar +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2007-10-25T19:25:37.000000Z +982 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +Shelf +file + + + + +2009-11-21T08:50:53.859381Z +d9bf08f2a0814615c6269e82bbaa8f77 +2007-10-25T19:25:37.000000Z +982 +tian + + + + + + + + + + + + + + + + + + + + + +5266 + +Shelf.png +file + + + + +2009-11-21T08:50:53.859381Z +866fbdf969d8feae0711f277a16ab223 +2006-08-13T00:00:01.000000Z +183 +tian +has-props + + + + + + + + + + + + + + + + + + + + +86073 + +Simple +file + + + + +2009-11-21T08:50:53.863382Z +cc4510e282e91bd50717a244b917a3a4 +2007-02-09T21:00:39.000000Z +479 +tian + + + + + + + + + + + + + + + + + + + + + +1508 + +Simple.png +file + + + + +2009-11-21T08:50:53.863382Z +800def7ffe954e35d7ad92d0b483d74a +2006-08-13T00:00:01.000000Z +183 +tian +has-props + + + + + + + + + + + + + + + + + + + + +28419 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/prop-base/Shelf.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/prop-base/Shelf.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/prop-base/Shelf.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/prop-base/Shelf.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/prop-base/Simple.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/prop-base/Simple.png.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/prop-base/Simple.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/prop-base/Simple.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/text-base/Shelf.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/text-base/Shelf.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/text-base/Shelf.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/text-base/Shelf.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/text-base/Shelf.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/text-base/Shelf.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,282 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + +[JAVASCRIPT] + +[/JAVASCRIPT] + + +

$$PAGETITLE$$

+
+[/HEADER] +[ITEM] +
+
+ $$TITLE_FIELD$$ +
+
+

$$TITLE_FIELD$$

+
+ [LOOP0 values=GCSgroups idx=GROUP] +

$$GROUP_LABEL$$

+ + [LOOP1 values=GROUP idx=VALUE] + + [/LOOP1] +
$$VALUE_LABEL$$$$VALUE$$
+ [/LOOP0] +
+
+
+[/ITEM] +[FOOTER] +
 
+
+

$$GENERATOR_NOTE$$

+ + +[/FOOTER] +[POST] +[/POST] Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/text-base/Simple.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/text-base/Simple.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/text-base/Simple.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/text-base/Simple.svn-base --- gcstar-1.4.3/share/gcstar/html_models/GCstar/.svn/text-base/Simple.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/GCstar/.svn/text-base/Simple.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,96 @@ +[HEADER] + + + + + +$$PAGETITLE$$ + + + +

$$PAGETITLE$$

+ + + [LOOP1 values=GCSfields idx=title] + + [/LOOP1] + +[/HEADER] +[ITEM] + + [LOOP2 values=GCSfields idx=field] + + [/LOOP2] + +[/ITEM] +[FOOTER] +
$$title_LABEL$$
$$field$$
+[LENDING]

$$BORROWED_ITEMS$$

[/LENDING] +

$$GENERATOR_NOTE$$

+ + +[/FOOTER] +[POST] +[/POST] diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/html_models/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/html_models/.svn/entries --- gcstar-1.4.3/share/gcstar/html_models/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/html_models/.svn/entries 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,52 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/html_models +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-09-01T20:23:56.447815Z +1739 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +GCminicars +dir + +GCstar +dir + +GCfilms +dir + +GCcoins +dir + +GCgames +dir + +GCbooks +dir + +GCmusics +dir + +GCboardgames +dir + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_128x128.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_128x128.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_16x16.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_16x16.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_192x192.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_192x192.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_22x22.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_22x22.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_24x24.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_24x24.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_256x256.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_256x256.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_32x32.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_32x32.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_36x36.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_36x36.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_48x48.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_48x48.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_64x64.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_64x64.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_72x72.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_72x72.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_96x96.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_96x96.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/gcstar_scalable.svg /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/gcstar_scalable.svg --- gcstar-1.4.3/share/gcstar/icons/gcstar_scalable.svg 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/gcstar_scalable.svg 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/entries --- gcstar-1.4.3/share/gcstar/icons/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/entries 2009-11-21 08:50:57.000000000 +0000 @@ -0,0 +1,708 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/icons +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-11-18T17:46:22.614236Z +1792 +zombiepig + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +gcstar_36x36.png +file + + + + +2009-11-21T08:50:56.980392Z +8161327fc90bddc3eb4a5d4c67fee9b1 +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +2398 + +gcstar_72x72.png +file + + + + +2009-11-21T08:50:56.976385Z +b97a1b30c37f722ad9775d6669ad3834 +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +6158 + +gcstar_64x64.png +file + + + + +2009-11-21T08:50:56.980392Z +8c2abc9876138a99415d50c161abce96 +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +5092 + +gcstar_128x128.png +file + + + + +2009-11-21T08:50:56.984400Z +1051c3fca2f378855851a691de1091b6 +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +13072 + +gcstar_192x192.png +file + + + + +2009-11-21T08:50:56.984400Z +110cdadb91e9241f014fb66ebd6b583d +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +21943 + +gcstar_48x48.png +file + + + + +2009-11-21T08:50:56.984400Z +bd05c2c40819d9d56e9e4e9bf7adf8a0 +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +3528 + +web.ico +file + + + + +2009-11-21T08:50:56.988384Z +95fe3638fb3bd6c6e34c7fa67feed9e8 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +9662 + +gcstar_256x256.png +file + + + + +2009-11-21T08:50:56.988384Z +0a26c3f31207db39209e7622231c4635 +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +32260 + +icon_install.ico +file + + + + +2009-11-21T08:50:56.988384Z +a0cbb1225f1a492b59b0c872490e4daf +2006-07-15T22:42:46.000000Z +128 +tian +has-props + + + + + + + + + + + + + + + + + + + + +16958 + +gcstar_96x96.png +file + + + + +2009-11-21T08:50:56.992387Z +ad0015537d99088aaf28cd7c288a6408 +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +9134 + +GCstar.ico +file + + + + +2009-11-21T08:50:56.996384Z +5b019eb4943b75c5ccd0b8b7c7207dbe +2005-12-12T18:43:56.000000Z +17 +tian +has-props + + + + + + + + + + + + + + + + + + + + +25214 + +star.png +file + + + + +2009-11-21T08:50:56.992387Z +02589dd62834dd03b0256757f328d210 +2008-03-20T08:03:10.000000Z +1298 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +982 + +stardark.png +file + + + + +2009-11-21T08:50:56.996384Z +87339e0226e0f8c69f90f57a54565da4 +2008-03-20T08:03:10.000000Z +1298 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1056 + +star_hover.png +file + + + + +2009-11-21T08:50:56.996384Z +262b773c95e73e6fa566b2269c389112 +2008-03-20T08:03:10.000000Z +1298 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1515 + +stardark_hover.png +file + + + + +2009-11-21T08:50:57.000382Z +aed2a4bfd0c099d918f6dab2d010400d +2008-03-20T08:03:10.000000Z +1298 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1553 + +gcstar_22x22.png +file + + + + +2009-11-21T08:50:57.000382Z +b348c33a68fb8225e0dae92bb055580c +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1266 + +gcstar_scalable.svg +file + + + + +2009-11-21T08:50:57.004383Z +45b0486659ec5d6fdceccd474b4ab20a +2009-11-18T17:46:22.614236Z +1792 +zombiepig + + + + + + + + + + + + + + + + + + + + + +12433 + +gcstar_32x32.png +file + + + + +2009-11-21T08:50:57.004383Z +e65a062d3854fe213ede89db15ee7826 +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +2018 + +gcstar_24x24.png +file + + + + +2009-11-21T08:50:57.004383Z +2693e1804256bbcd8ebde8e6be8017dd +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1419 + +gcstar_16x16.png +file + + + + +2009-11-21T08:50:57.007380Z +69ceafd2402eb8bd8c9044bc49e2a94a +2009-11-18T17:46:22.614236Z +1792 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +838 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_128x128.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_128x128.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_128x128.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_128x128.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_16x16.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_192x192.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_192x192.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_192x192.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_192x192.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_22x22.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_22x22.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_22x22.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_22x22.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_24x24.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_256x256.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_256x256.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_256x256.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_256x256.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_32x32.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_36x36.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_36x36.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_36x36.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_36x36.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_48x48.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_48x48.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_48x48.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_48x48.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_64x64.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_64x64.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_64x64.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_64x64.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_72x72.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_72x72.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_72x72.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_72x72.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_96x96.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_96x96.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/gcstar_96x96.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/gcstar_96x96.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/GCstar.ico.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/GCstar.ico.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/GCstar.ico.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/GCstar.ico.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/icon_install.ico.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/icon_install.ico.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/icon_install.ico.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/icon_install.ico.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/stardark_hover.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/stardark_hover.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/stardark_hover.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/stardark_hover.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/stardark.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/stardark.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/stardark.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/stardark.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/star_hover.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/star_hover.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/star_hover.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/star_hover.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/star.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/star.png.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/star.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/star.png.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/web.ico.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/web.ico.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/prop-base/web.ico.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/prop-base/web.ico.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_128x128.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_128x128.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_192x192.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_192x192.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_22x22.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_22x22.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_256x256.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_256x256.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_32x32.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_36x36.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_36x36.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_48x48.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_48x48.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_64x64.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_64x64.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_72x72.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_72x72.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_96x96.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_96x96.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/GCstar.ico.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/GCstar.ico.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_scalable.svg.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_scalable.svg.svn-base --- gcstar-1.4.3/share/gcstar/icons/.svn/text-base/gcstar_scalable.svg.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/icons/.svn/text-base/gcstar_scalable.svg.svn-base 2009-11-21 08:50:56.000000000 +0000 @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/icon_install.ico.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/icon_install.ico.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/stardark_hover.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/stardark_hover.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/stardark.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/stardark.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/star_hover.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/star_hover.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/star.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/star.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/icons/.svn/text-base/web.ico.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/icons/.svn/text-base/web.ico.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Box/group.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Box/group.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Box/style /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Box/style --- gcstar-1.4.3/share/gcstar/list_bg/Box/style 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Box/style 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#000000'" +groupAlign="center" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/entries --- gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/list_bg/Box +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +group.png +file + + + + +2009-11-21T08:50:53.415383Z +61fbf815f2d13aaf84b33d66cc900f57 +2009-05-08T23:02:43.755683Z +1647 +tian +has-props + + + + + + + + + + + + + + + + + + + + +190 + +style +file + + + + +2009-11-21T08:50:53.419382Z +14fc4a0d3cf24b8d0863a261cbc5c8af +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + + + + + + + + +63 + +list_bg.png +file + + + + +2009-11-21T08:50:53.419382Z +f0fa29842b954ecb331a1261e23cea63 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +497 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/prop-base/group.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/prop-base/group.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/prop-base/group.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/prop-base/group.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/prop-base/list_bg.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/prop-base/list_bg.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/prop-base/list_bg.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/prop-base/list_bg.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/text-base/group.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/text-base/group.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/text-base/list_bg.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/text-base/list_bg.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/text-base/style.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/text-base/style.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Box/.svn/text-base/style.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Box/.svn/text-base/style.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#000000'" +groupAlign="center" Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/group.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/group.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/style /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/style --- gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/style 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/style 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#ffffff' size='large'" +groupAlign="center" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/entries --- gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,164 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/list_bg/Dark_Glass +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +group.png +file + + + + +2009-11-21T08:50:53.511381Z +9c89923fe78c86f851e44a7593e88fe7 +2009-05-08T23:02:43.755683Z +1647 +tian +has-props + + + + + + + + + + + + + + + + + + + + +269 + +style +file + + + + +2009-11-21T08:50:53.511381Z +f8f5af7cf26afcd791b8ea3c3fa06a86 +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + + + + + + + + +76 + +list_bg.png +file + + + + +2009-11-21T08:50:53.511381Z +4a3a64aa447a14c605c9bb6c6faf1971 +2007-11-05T19:13:33.000000Z +1046 +tian +has-props + + + + + + + + + + + + + + + + + + + + +8186 + +list_fg.png +file + + + + +2009-11-21T08:50:53.515383Z +8e7f8874f76edf0610bb07f907164b08 +2007-11-07T04:23:44.000000Z +1052 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +10759 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/group.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/group.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/group.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/group.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/list_bg.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/list_bg.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/list_bg.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/list_bg.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/list_fg.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/list_fg.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/list_fg.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/prop-base/list_fg.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/text-base/group.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/text-base/group.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/text-base/list_bg.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/text-base/list_bg.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/text-base/list_fg.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/text-base/list_fg.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/text-base/style.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/text-base/style.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Dark_Glass/.svn/text-base/style.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Dark_Glass/.svn/text-base/style.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#ffffff' size='large'" +groupAlign="center" Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/group.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/group.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/style /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/style --- gcstar-1.4.3/share/gcstar/list_bg/Glass/style 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Glass/style 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#ffffff'" +groupAlign="center" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/entries --- gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,164 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/list_bg/Glass +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +group.png +file + + + + +2009-11-21T08:50:53.479382Z +473726b73abd34d28923dc1936470711 +2009-05-08T23:02:43.755683Z +1647 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1161 + +style +file + + + + +2009-11-21T08:50:53.479382Z +104f112a1be0652b8905d3de1755990c +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + + + + + + + + +63 + +list_bg.png +file + + + + +2009-11-21T08:50:53.479382Z +ec7e04cd743b6a18bbfb5a0424909a5a +2007-11-02T17:29:21.000000Z +1022 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1443 + +list_fg.png +file + + + + +2009-11-21T08:50:53.483381Z +e39157f0903e7aa328da3eb7c9c0784c +2007-11-07T04:23:44.000000Z +1052 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +3001 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/prop-base/group.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/prop-base/group.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/prop-base/group.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/prop-base/group.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/prop-base/list_bg.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/prop-base/list_bg.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/prop-base/list_bg.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/prop-base/list_bg.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/prop-base/list_fg.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/prop-base/list_fg.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/prop-base/list_fg.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/prop-base/list_fg.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/text-base/group.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/text-base/group.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/text-base/list_bg.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/text-base/list_bg.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/text-base/list_fg.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/text-base/list_fg.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/text-base/style.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/text-base/style.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Glass/.svn/text-base/style.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Glass/.svn/text-base/style.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#ffffff'" +groupAlign="center" Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Marble/group.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Marble/group.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Marble/style /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Marble/style --- gcstar-1.4.3/share/gcstar/list_bg/Marble/style 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Marble/style 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#ffffff'" +groupAlign="center" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/entries --- gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/list_bg/Marble +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +group.png +file + + + + +2009-11-21T08:50:53.391383Z +f192cd784b0a24542794b79e2de654c5 +2009-05-08T23:02:43.755683Z +1647 +tian +has-props + + + + + + + + + + + + + + + + + + + + +11233 + +style +file + + + + +2009-11-21T08:50:53.395383Z +104f112a1be0652b8905d3de1755990c +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + + + + + + + + +63 + +list_bg.png +file + + + + +2009-11-21T08:50:53.395383Z +0cb8290d3133470ff18790d6d29c0051 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +25456 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/prop-base/group.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/prop-base/group.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/prop-base/group.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/prop-base/group.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/prop-base/list_bg.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/prop-base/list_bg.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/prop-base/list_bg.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/prop-base/list_bg.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/text-base/group.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/text-base/group.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/text-base/list_bg.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/text-base/list_bg.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/text-base/style.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/text-base/style.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Marble/.svn/text-base/style.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Marble/.svn/text-base/style.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#ffffff'" +groupAlign="center" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/.svn/entries --- gcstar-1.4.3/share/gcstar/list_bg/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,46 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/list_bg +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +Marble +dir + +Box +dir + +Wood +dir + +Glass +dir + +Dark_Glass +dir + +Wood2 +dir + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood/group.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood/group.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood/style /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood/style --- gcstar-1.4.3/share/gcstar/list_bg/Wood/style 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood/style 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#ffffff' size='large'" +groupAlign="center" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/entries --- gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/list_bg/Wood +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +group.png +file + + + + +2009-11-21T08:50:53.451384Z +7e44e57538ee173ceace57b14e10603c +2009-05-08T23:02:43.755683Z +1647 +tian +has-props + + + + + + + + + + + + + + + + + + + + +3329 + +style +file + + + + +2009-11-21T08:50:53.455383Z +f8f5af7cf26afcd791b8ea3c3fa06a86 +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + + + + + + + + +76 + +list_bg.png +file + + + + +2009-11-21T08:50:53.455383Z +56bba195a98b4183287816ad5faa7520 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +33245 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/prop-base/group.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/prop-base/group.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/prop-base/group.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/prop-base/group.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/prop-base/list_bg.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/prop-base/list_bg.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/prop-base/list_bg.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/prop-base/list_bg.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/text-base/group.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/text-base/group.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/text-base/list_bg.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/text-base/list_bg.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/text-base/style.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/text-base/style.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Wood/.svn/text-base/style.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood/.svn/text-base/style.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#ffffff' size='large'" +groupAlign="center" Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood2/group.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood2/group.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood2/style /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood2/style --- gcstar-1.4.3/share/gcstar/list_bg/Wood2/style 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood2/style 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#000000' size='large'" +groupAlign="center" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/entries --- gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/list_bg/Wood2 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +group.png +file + + + + +2009-11-21T08:50:53.539384Z +20bda0cf10b5f59bc4c6e5fc002526b8 +2009-05-08T23:02:43.755683Z +1647 +tian +has-props + + + + + + + + + + + + + + + + + + + + +6667 + +style +file + + + + +2009-11-21T08:50:53.543382Z +761503f658bc1828c142e003cf994c01 +2009-05-08T23:02:43.755683Z +1647 +tian + + + + + + + + + + + + + + + + + + + + + +76 + +list_bg.png +file + + + + +2009-11-21T08:50:53.543382Z +cbbe62840144927cfa4367dacc267f44 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +34508 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/prop-base/group.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/prop-base/group.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/prop-base/group.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/prop-base/group.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/prop-base/list_bg.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/prop-base/list_bg.png.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/prop-base/list_bg.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/prop-base/list_bg.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/text-base/group.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/text-base/group.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/text-base/list_bg.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/text-base/list_bg.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/text-base/style.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/text-base/style.svn-base --- gcstar-1.4.3/share/gcstar/list_bg/Wood2/.svn/text-base/style.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/list_bg/Wood2/.svn/text-base/style.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,2 @@ +groupStyle="weight='bold' color='#000000' size='large'" +groupAlign="center" Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/button.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/button.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/no_minicars.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/no_minicars.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/no_stamp.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/no_stamp.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/entries --- gcstar-1.4.3/share/gcstar/logos/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,572 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/logos +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-11-18T17:47:05.788649Z +1793 +zombiepig + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +Peri_main_logo.svg +file + + + + +2009-11-21T08:50:53.643383Z +cac99408149ae335e04b25ce712f2a31 +2005-12-12T18:43:56.000000Z +17 +tian +has-props + + + + + + + + + + + + + + + + + + + + +271018 + +Peri.png +file + + + + +2009-11-21T08:50:53.643383Z +ef9b4d36d3fabcd070d61bcf8fcf60b3 +2006-11-27T17:50:37.000000Z +347 +tian +has-props + + + + + + + + + + + + + + + + + + + + +11580 + +no_minicars.png +file + + + + +2009-11-21T08:50:53.643383Z +fd87ec849aee1d50746f568c13416b9f +2009-09-01T19:50:59.567603Z +1736 +tian +has-props + + + + + + + + + + + + + + + + + + + + +34678 + +install.png +file + + + + +2009-11-21T08:50:53.643383Z +b10e2b108d663ac39091bd86ccc24d64 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +4087 + +about.png +file + + + + +2009-11-21T08:50:53.647381Z +253bbb5d30c6cd79398a1823de4665cb +2006-05-30T21:07:11.000000Z +61 +tian +has-props + + + + + + + + + + + + + + + + + + + + +13470 + +button.png +file + + + + +2009-11-21T08:50:53.647381Z +bd05c2c40819d9d56e9e4e9bf7adf8a0 +2009-11-18T17:47:05.788649Z +1793 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +3528 + +no.png +file + + + + +2009-11-21T08:50:53.647381Z +b58f46c341f2c94670f30f0db9e24d8c +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +10747 + +find.png +file + + + + +2009-11-21T08:50:53.651380Z +b49936abba91e26f457e1fa80c65b5a0 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1258 + +no_stamp.png +file + + + + +2009-11-21T08:50:53.651380Z +cda6b49f00d1412ab4836fbdd3d5552c +2009-02-18T22:23:36.631713Z +1619 +tian +has-props + + + + + + + + + + + + + + + + + + + + +14581 + +cd_no.png +file + + + + +2009-11-21T08:50:53.651380Z +aede674441a94b5b24a78a164e5de38f +2008-04-19T04:45:13.000000Z +1344 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +5234 + +Peri_main_logo.png +file + + + + +2009-11-21T08:50:53.655384Z +72575e915b9d9822bd75874c2bc79f53 +2005-12-12T18:43:56.000000Z +17 +tian +has-props + + + + + + + + + + + + + + + + + + + + +18759 + +film_no.png +file + + + + +2009-11-21T08:50:53.655384Z +2ec358a9bd11a7fde7893ff45dfed06b +2008-02-18T11:22:27.000000Z +1218 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +9744 + +bg_no.png +file + + + + +2009-11-21T08:50:53.659382Z +ad74f202526ffa1b799457f968d7512e +2008-03-07T04:32:19.000000Z +1254 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +7541 + +book_no.png +file + + + + +2009-11-21T08:50:53.659382Z +690b8fdd16962a637b389ceab5fc4a53 +2008-03-07T04:32:19.000000Z +1254 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +7141 + +periscope_main_logo.svg +file + + + + +2009-11-21T08:50:53.663383Z +48ada5a7d0e63b63c5ac9f9afe4e9f4a +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +88694 + +splash.png +file + + + + +2009-11-21T08:50:53.663383Z +37c42795b71d8887525be2d9b7dcb82c +2006-07-24T21:57:56.000000Z +153 +tian +has-props + + + + + + + + + + + + + + + + + + + + +7061 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/about.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/about.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/about.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/about.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/bg_no.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/bg_no.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/bg_no.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/bg_no.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/book_no.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/book_no.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/book_no.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/book_no.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/button.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/button.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/button.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/button.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/cd_no.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/cd_no.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/cd_no.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/cd_no.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/film_no.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/film_no.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/film_no.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/film_no.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/find.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/find.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/find.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/find.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/install.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/install.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/install.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/install.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/no_minicars.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/no_minicars.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/no_minicars.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/no_minicars.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/no.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/no.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/no.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/no.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/no_stamp.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/no_stamp.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/no_stamp.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/no_stamp.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/Peri_main_logo.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/Peri_main_logo.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/Peri_main_logo.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/Peri_main_logo.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/Peri_main_logo.svg.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/Peri_main_logo.svg.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/Peri_main_logo.svg.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/Peri_main_logo.svg.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/Peri.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/Peri.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/Peri.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/Peri.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/periscope_main_logo.svg.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/periscope_main_logo.svg.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/periscope_main_logo.svg.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/periscope_main_logo.svg.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/splash.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/splash.png.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/prop-base/splash.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/prop-base/splash.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/about.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/about.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/bg_no.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/bg_no.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/book_no.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/book_no.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/button.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/button.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/cd_no.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/cd_no.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/film_no.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/film_no.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/find.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/find.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/install.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/install.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/no_minicars.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/no_minicars.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/no.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/no.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/no_stamp.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/no_stamp.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/Peri_main_logo.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/Peri_main_logo.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/Peri_main_logo.svg.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/Peri_main_logo.svg.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/text-base/Peri_main_logo.svg.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/text-base/Peri_main_logo.svg.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,3436 @@ + + + + + + + + + + + + + +]> + + + + + + image/svg+xml + + + Adobe Illustrator CS2 + 2005-11-07T17:36:23+01:00 + 2005-11-07T17:36:23+01:00 + 2005-11-07T17:36:23+01:00 + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 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 wG3COqcfc1p7Vrm37I12efoI4x3np8XSdvdm6bH64ngl/NA2PuG1efTyY9+XXkC58wX8d5eRMmiw Nyldqr6xU/3aHwqPiI6fPM7tTtIYI8MT+8P2ef6nW9jdjy1MhKY/dDn5+Q/T+t79nEPozsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSnV/Kfl3WLu C81KxS5uLcUidy1KA8qMoIVxXswOZWDW5cUTGEqBcHU9m4M8xPJHilH8b948imkUUUMSRRIscUah Y41AVVVRQAAbAAZjEkmzzcyMREAAUAuwMnYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYqhX1SzQkc+RHgCcmMZYHIFP8AS9t2Vz9A/rh8Mo8UO/SsR6I34Y+GV8QL hqSH9g/fg4F8RcNQQ/sHHgTxrxexnsfwwcKeJcLmI+IwcKeJUV1boa4KS3irsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVU3t4JDV41Y+JArhEigxCmdPsz/uofQSP1HD xlHAGv0dadkP3nDxlHAG/wBH247H78HGV4A2LKAdj9+PEU8AXC1hH7P4nHiKeELhDEOi4LWl4AHQ UwJdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdir/9k= + + + + + + uuid:0D242DA2AC4FDA11B312AE4ADC8A7260 + uuid:0E242DA2AC4FDA11B312AE4ADC8A7260 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 +exu5jAnf3Nq45urqBsOWChn4d5r9PPwoaJb8yL4RvNg7c6O7OKdLbMJx6a9//TEqfr6xqa3C/moP +ZEv8xgnmvbh9dsAw5t2l+aBK+1Q4V8+vHpzsDP9q9/LZ4YX+vCMbf3OAz+syOGl0NF8DTTw8Pjoh +fv799putfwZwvz8/fnHz5WXgAmhHFY8V95h497sbMG32lT6M2CIhE/OUSuoT1BImdQD8y6dP3le/ +kD9SNm799fDpp129PShbijv//KN6+4fq77/4t4+yF//t6/8P//lR/8nf/d7+otx0Zdf87+bl//7l +e/+2v23/ucxeiKd98u1huL//6PLm4+tf//7Z5t8+/8f1+hc3+e8+/Pv81932py9e7eBltsMn//q7 +/H+s25v6J8O7/1g9lH/3jz//+18/ez97/+efF9Uv//GDD8u//+Zxs/2u//gPn/z0q/95uf0u++1H +5rfFz//nV80PP/nvd9/835/84offf/KTnz+/+NlPfvHti3/5yS+K/dc/eeeTB/Vu1E9+e1F+1v/k +5x/9z7uf0cv88Fh+dPfuL+/goP/hJR305Vcb+u7f/uHv8d1cvP9Q/1/47uu74CHwDh+6/c03xTv9 +b/8OXgZOVY5v5At7bPf/+vB9By/dvfr5Rx//5L9VD8XD57xv93H5zx/+9Dv458fX8Nzfbvmtf/Zw +f//hw/++/92HX36RvV99/Q4eLL6qehn9wh/n/1r95ofPfhF91d99v/kk+apN8fv3f5J61Wf3/+f9 +n/+zehn3helVf7V596f/dHf9WexVH376f5pN6lU/+egf25tfe6+KL4MvXL37m59/+PyLz2Ovev/q +3z5453/87Jc/+bfYq2b77O9/mXjV5qd/1334Xa8v6MjbrX77r9n+m80/Rt/r/7u/++BnX1x9/lX0 +VT/+6e1n3qvyfYMv/N//4bPq89RJ/qf/n7337IpbidKFv89a/AfAgdiNSlk4k22wjQM2OIAxxtnG +Jtw78+X97e9+nl1Sq9WSWh3OPXfdmQk+dEmquGvncP7uxH2EUed6dnhz+rV3I7ickc/8s55zXb4O +ELAD787MFI7Wfxlt/uSocqs+rneP+v78/auPzytGXT4K9j59WeqMKsPkBj5svXxSOWq09PnFTPmo +t6fmzi+WFy7KR92NDjGMBeOe5V7M3D0wFaMGX+dmVk43y0f1594v3L71K7dWDJM/2uPg2t/w6nHZ +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 +R15h0bHgq6/+6m9/9fOf/X/OP/pG + + + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/Peri.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/Peri.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/periscope_main_logo.svg.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/periscope_main_logo.svg.svn-base --- gcstar-1.4.3/share/gcstar/logos/.svn/text-base/periscope_main_logo.svg.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/logos/.svn/text-base/periscope_main_logo.svg.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,1230 @@ + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/logos/.svn/text-base/splash.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/logos/.svn/text-base/splash.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/canevas-timbre.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/canevas-timbre.png differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/minicars.png and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/minicars.png differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/entries --- gcstar-1.4.3/share/gcstar/overlays/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,640 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/overlays +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-09-01T19:50:59.567603Z +1736 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +favourite_small.png +file + + + + +2009-11-21T08:50:53.779382Z +e8f5e4691bb1fcf228c9a42ce5cc34b7 +2007-10-30T05:38:09.000000Z +1006 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1156 + +lend_large.png +file + + + + +2009-11-21T08:50:53.779382Z +9eaddfc93463a89c6540bca6a242c56c +2007-11-01T00:14:23.000000Z +1016 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1743 + +subtle.png +file + + + + +2009-11-21T08:50:53.779382Z +125aa6090a090d66739f2095cf100189 +2007-09-27T19:29:06.000000Z +896 +tian +has-props + + + + + + + + + + + + + + + + + + + + +8322 + +canevas-timbre.png +file + + + + +2009-11-21T08:50:53.783381Z +6240c738ba2fcda93ebf190049394d55 +2009-02-18T22:23:36.631713Z +1619 +tian +has-props + + + + + + + + + + + + + + + + + + + + +28427 + +favourite_verysmall.png +file + + + + +2009-11-21T08:50:53.783381Z +8d4c841feb6b2e19a03d3800c446d8ee +2007-10-30T05:38:09.000000Z +1006 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +868 + +minicars.png +file + + + + +2009-11-21T08:50:53.783381Z +d2a22356daf27876ff6e5013e8642850 +2009-09-01T19:50:59.567603Z +1736 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1554 + +favourite_xlarge.png +file + + + + +2009-11-21T08:50:53.787381Z +c119b3bfce2dd413e4936790911106b7 +2007-10-30T05:38:09.000000Z +1006 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +3713 + +lend_med.png +file + + + + +2009-11-21T08:50:53.787381Z +a2a0e33a41cffe8d1f4fe873cfc2fed8 +2007-11-01T00:14:23.000000Z +1016 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1250 + +lend_small.png +file + + + + +2009-11-21T08:50:53.787381Z +c14e99ad0120836ff5f2fa0a025c7638 +2007-11-01T00:14:23.000000Z +1016 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1003 + +flip2.png +file + + + + +2009-11-21T08:50:53.791382Z +c40e1d8aad3e02117078081079a011b1 +2008-05-18T12:25:16.000000Z +1430 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1745 + +dvd.png +file + + + + +2009-11-21T08:50:53.791382Z +fec0ea43577944c52e9ec4481609caf9 +2007-09-27T19:29:06.000000Z +896 +tian +has-props + + + + + + + + + + + + + + + + + + + + +9206 + +favourite_large.png +file + + + + +2009-11-21T08:50:53.795382Z +db198a1640d2ee41a859208cc925db54 +2007-10-30T05:38:09.000000Z +1006 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +2209 + +lend_verysmall.png +file + + + + +2009-11-21T08:50:53.795382Z +b53ada6e747ba44ac0e51d52df95865d +2007-11-01T00:14:23.000000Z +1016 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +744 + +lend_xlarge.png +file + + + + +2009-11-21T08:50:53.795382Z +ec0a3a32e3591bf09da12de77a8a33cf +2007-11-01T00:14:23.000000Z +1016 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +2956 + +cd.png +file + + + + +2009-11-21T08:50:53.799382Z +2b1448fbbfa155a630e8927ebfddce70 +2007-10-04T06:26:39.000000Z +921 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +12950 + +film.png +file + + + + +2009-11-21T08:50:53.799382Z +686c480ce432d334a976454505a3b656 +2008-02-18T11:22:27.000000Z +1218 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +34689 + +favourite_med.png +file + + + + +2009-11-21T08:50:53.799382Z +c399c92d84234805849b98b99de777e8 +2007-10-30T05:38:09.000000Z +1006 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1480 + +flip.png +file + + + + +2009-11-21T08:50:53.803383Z +3535d34f8f040419259ecfb4c1c825ec +2008-05-18T11:53:59.000000Z +1428 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1734 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/canevas-timbre.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/canevas-timbre.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/canevas-timbre.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/canevas-timbre.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/cd.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/cd.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/cd.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/cd.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/dvd.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/dvd.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/dvd.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/dvd.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_large.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_large.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_large.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_large.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_med.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_med.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_med.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_med.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_small.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_small.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_small.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_small.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_verysmall.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_verysmall.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_verysmall.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_verysmall.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_xlarge.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_xlarge.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/favourite_xlarge.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/favourite_xlarge.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/film.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/film.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/film.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/film.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/flip2.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/flip2.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/flip2.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/flip2.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/flip.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/flip.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/flip.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/flip.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_large.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_large.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_large.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_large.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_med.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_med.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_med.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_med.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_small.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_small.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_small.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_small.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_verysmall.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_verysmall.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_verysmall.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_verysmall.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_xlarge.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_xlarge.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/lend_xlarge.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/lend_xlarge.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/minicars.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/minicars.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/minicars.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/minicars.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/subtle.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/subtle.png.svn-base --- gcstar-1.4.3/share/gcstar/overlays/.svn/prop-base/subtle.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/overlays/.svn/prop-base/subtle.png.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/canevas-timbre.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/canevas-timbre.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/cd.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/cd.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/dvd.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/dvd.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/favourite_large.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/favourite_large.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/favourite_med.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/favourite_med.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/favourite_small.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/favourite_small.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/favourite_verysmall.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/favourite_verysmall.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/favourite_xlarge.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/favourite_xlarge.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/film.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/film.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/flip2.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/flip2.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/flip.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/flip.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/lend_large.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/lend_large.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/lend_med.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/lend_med.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/lend_small.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/lend_small.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/lend_verysmall.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/lend_verysmall.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/lend_xlarge.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/lend_xlarge.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/minicars.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/minicars.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/overlays/.svn/text-base/subtle.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/overlays/.svn/text-base/subtle.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/panels/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/panels/.svn/entries --- gcstar-1.4.3/share/gcstar/panels/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/panels/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/panels +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2007-11-04T14:55:09.000000Z +1038 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +Classic +file + + + + +2009-11-21T08:50:53.343382Z +774685767f7fd161885c16125dd55412 +2007-11-04T14:54:49.000000Z +1037 +tian + + + + + + + + + + + + + + + + + + + + + +591 + +Dark +file + + + + +2009-11-21T08:50:53.343382Z +118b175ed5ede584689b4029bacfab77 +2007-11-04T14:55:09.000000Z +1038 +tian + + + + + + + + + + + + + + + + + + + + + +578 + +WebSite +file + + + + +2009-11-21T08:50:53.343382Z +fbd7075e76f193041d97eed37d7cf045 +2007-11-04T14:54:49.000000Z +1037 +tian + + + + + + + + + + + + + + + + + + + + + +589 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/panels/.svn/text-base/Classic.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/panels/.svn/text-base/Classic.svn-base --- gcstar-1.4.3/share/gcstar/panels/.svn/text-base/Classic.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/panels/.svn/text-base/Classic.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,29 @@ +pageBg = "#ffffff" + +boxBg = "#e9e9e9" +boxColor = "#000000" +boxStyle = "weight='bold'" +boxJustify = "center" + +headerBg = "#ffffff" +headerColor = "#000000" +headerStyle = "size='xx-large' weight='bold'" +headerJustify = "center" + +subheaderBg = "#ffffff" +subheaderColor = "#000000" +subheaderStyle = "size='x-large' weight='bold'" +subheaderJustify = "center" + +labelBg = "#e9e9e9" +labelColor = "#000000" +labelStyle = "weight='bold'" + +fieldBg = "#afafaf" +fieldColor = "#ffffff" +fieldStyle = "" + +expanderBg = "#ffffff" +expanderColor = "#000000" +expanderArrow = "#afafaf" +expanderPrelight = "#e9e9e9" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/panels/.svn/text-base/Dark.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/panels/.svn/text-base/Dark.svn-base --- gcstar-1.4.3/share/gcstar/panels/.svn/text-base/Dark.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/panels/.svn/text-base/Dark.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,29 @@ +pageBg = "#000000" + +boxBg = "#333333" +boxColor = "#eeeeee" +boxStyle = "weight='bold'" +boxJustify = "center" + +headerBg = "#000000" +headerColor = "#ffffff" +headerStyle = "size='xx-large' weight='bold'" +headerJustify = "center" + +subheaderBg = "#000000" +subheaderColor = "#ffffff" +subheaderStyle = "size='x-large' weight='bold'" +subheaderJustify = "center" + +labelBg = "#333333" +labelColor = "#eeeeee" +labelStyle = "" + +fieldBg = "#333333" +fieldColor = "#eeeeee" +fieldStyle = "" + +expanderBg = "#000000" +expanderColor = "#ffffff" +expanderArrow = "#ffffff" +expanderPrelight = "#333333" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/panels/.svn/text-base/WebSite.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/panels/.svn/text-base/WebSite.svn-base --- gcstar-1.4.3/share/gcstar/panels/.svn/text-base/WebSite.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/panels/.svn/text-base/WebSite.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,29 @@ +pageBg = "#ffffff" + +boxBg = "#eeeeee" +boxColor = "#000000" +boxStyle = "weight='bold'" +boxJustify = "center" + +headerBg = "#ffd700" +headerColor = "#ffffff" +headerStyle = "size='xx-large' weight='bold'" +headerJustify = "left" + +subheaderBg = "#ffffff" +subheaderColor = "#1c86ee" +subheaderStyle = "size='x-large' weight='bold'" +subheaderJustify = "center" + +labelBg = "#eeeeee" +labelColor = "#1c86ee" +labelStyle = "weight='bold'" + +fieldBg = "#778899" +fieldColor = "#ffffff" +fieldStyle = "" + +expanderBg = "#ffffff" +expanderColor = "#000000" +expanderArrow = "#1c86ee" +expanderPrelight = "#eeeeee" diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/schemas/gcm.xsd /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/schemas/gcm.xsd --- gcstar-1.4.3/share/gcstar/schemas/gcm.xsd 2008-07-17 18:30:53.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/schemas/gcm.xsd 2009-11-21 08:50:53.000000000 +0000 @@ -226,6 +226,14 @@ + + + + + + + + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/schemas/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/schemas/.svn/entries --- gcstar-1.4.3/share/gcstar/schemas/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/schemas/.svn/entries 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,62 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/schemas +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2009-10-05T15:13:39.100301Z +1750 +zombiepig + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +gcm.xsd +file + + + + +2009-11-21T08:50:53.675380Z +67c0dfeb6137a4d1458e7906fcf20d64 +2009-10-05T15:13:39.100301Z +1750 +zombiepig + + + + + + + + + + + + + + + + + + + + + +17610 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/schemas/.svn/text-base/gcm.xsd.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/schemas/.svn/text-base/gcm.xsd.svn-base --- gcstar-1.4.3/share/gcstar/schemas/.svn/text-base/gcm.xsd.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/schemas/.svn/text-base/gcm.xsd.svn-base 2009-11-21 08:50:53.000000000 +0000 @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/about/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/about/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/about/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/about/.svn/entries 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/about +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +16x16.png +file + + + + +2009-11-21T08:50:52.915382Z +2853f5b892e87795d4cfd498f9593bfb +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +903 + +64x64.png +file + + + + +2009-11-21T08:50:52.915382Z +33763e288175534f4bdca4cd6ed3dcba +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +5254 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/about/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/about/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/about/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/about/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/about/.svn/prop-base/64x64.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/about/.svn/prop-base/64x64.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/about/.svn/prop-base/64x64.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/about/.svn/prop-base/64x64.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/about/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/about/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/about/.svn/text-base/64x64.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/about/.svn/text-base/64x64.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/add +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:50.323383Z +d4cee93aa96c2bb340cfd0a236aa3e78 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1782 + +24x24.png +file + + + + +2009-11-21T08:50:50.323383Z +5cee9fd3a55ef84e795a51cf2320065a +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1404 + +16x16.png +file + + + + +2009-11-21T08:50:50.323383Z +c860fbda7e599a1b1283ed723875e6f8 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +700 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/add/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/add/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/cancel/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/cancel/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/cancel/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/cancel/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/cancel +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:50.119383Z +fff29168538a8e66947dd2ecd67dd875 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2582 + +24x24.png +file + + + + +2009-11-21T08:50:50.123384Z +5ac52e1c7b74cdd06ebaf5cd48d6abab +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1469 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/cancel/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/cancel/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/cancel/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/cancel/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/cancel/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/cancel/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/cancel/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/cancel/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/cancel/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/cancel/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/cancel/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/cancel/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/clear/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/clear/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/clear/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/clear/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/clear +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:50.183383Z +d38452f77d1226766014fe5bf709435f +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2509 + +24x24.png +file + + + + +2009-11-21T08:50:50.183383Z +f1cc7d39a3aef646d1892883b7b4689e +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1644 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/clear/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/clear/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/clear/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/clear/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/clear/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/clear/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/clear/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/clear/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/clear/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/clear/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/clear/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/clear/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/entries 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/convert +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2006-09-10T22:10:50.000000Z +219 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:49.923385Z +d339df1fadf448aa219a1d7b396306b7 +2006-09-10T22:10:50.000000Z +219 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2330 + +24x24.png +file + + + + +2009-11-21T08:50:49.923385Z +0e94da37eaaa1dc36e6c4a26e4364eb7 +2006-09-10T22:10:50.000000Z +219 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1547 + +16x16.png +file + + + + +2009-11-21T08:50:49.927386Z +b19187147d0d670e9076575c01a01eff +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +750 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/convert/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/convert/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/entries 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/delete +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:52.635385Z +b881f465d242025f9e22c8ebde446ebc +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2815 + +24x24.png +file + + + + +2009-11-21T08:50:52.635385Z +0736a515ec67bf72e51d6a2ece1fc241 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1855 + +16x16.png +file + + + + +2009-11-21T08:50:52.639383Z +c9ceaa9a80aa915f34f4a302cfb10451 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +946 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/delete/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/delete/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/directory/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/directory/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/directory/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/directory/.svn/entries 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,62 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/directory +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:49.872028Z +e848d1c53750dd324537b2e126e82b31 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2052 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/directory/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/directory/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/directory/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/directory/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/directory/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/directory/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/dnd/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/dnd/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/dnd/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/dnd/.svn/entries 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,62 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/dnd +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +16x16.png +file + + + + +2009-11-21T08:50:52.655384Z +65f2c0539e7c68503dfe77d4ca0ccac9 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +818 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/dnd/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/dnd/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/dnd/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/dnd/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/dnd/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/dnd/.svn/text-base/16x16.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/error/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/error/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/error/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/error/.svn/entries 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,62 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/error +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +64x64.png +file + + + + +2009-11-21T08:50:48.919384Z +cc96f6534c111e988a3963a24710c0ea +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +4918 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/error/.svn/prop-base/64x64.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/error/.svn/prop-base/64x64.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/error/.svn/prop-base/64x64.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/error/.svn/prop-base/64x64.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/error/.svn/text-base/64x64.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/error/.svn/text-base/64x64.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/entries 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/execute +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2008-05-02T08:39:24.000000Z +1366 +zombiepig + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:49.384385Z +58d06b64beed04d49207f81244ec900e +2008-05-02T08:39:24.000000Z +1366 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +2729 + +24x24.png +file + + + + +2009-11-21T08:50:49.388381Z +067f53a42e13995884bb53b575a4fb34 +2008-05-02T08:39:24.000000Z +1366 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +1772 + +16x16.png +file + + + + +2009-11-21T08:50:49.388381Z +576b37f28c3de777ca5e8cd47996a484 +2008-05-02T08:39:24.000000Z +1366 +zombiepig +has-props + + + + + + + + + + + + + + + + + + + + +936 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/execute/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/execute/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/entries 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/find +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:49.955383Z +1df384863688070427820eb98f39beb1 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2489 + +24x24.png +file + + + + +2009-11-21T08:50:49.955383Z +a57728986ee519ef96e619f0c58ecec4 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1700 + +16x16.png +file + + + + +2009-11-21T08:50:49.955383Z +4b2792d0f950522eff510748d701a62a +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +871 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/find/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/find/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-back/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-back/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-back/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-back/.svn/entries 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/go-back +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-12-12T18:43:56.000000Z +17 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +24x24.png +file + + + + +2009-11-21T08:50:49.416381Z +3299d437ae8e242fdc250f3efc700569 +2005-12-12T18:43:56.000000Z +17 +tian +has-props + + + + + + + + + + + + + + + + + + + + +572 + +16x16.png +file + + + + +2009-11-21T08:50:49.420386Z +c1cff15163cfb37f76cbf81f1372d279 +2005-12-12T18:43:56.000000Z +17 +tian +has-props + + + + + + + + + + + + + + + + + + + + +387 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-back/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-back/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-back/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-back/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-back/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-back/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-back/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-back/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-back/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-back/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-back/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-back/.svn/text-base/24x24.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-down/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-down/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-down/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-down/.svn/entries 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/go-down +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2006-05-26T19:13:44.000000Z +59 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +24x24.png +file + + + + +2009-11-21T08:50:52.939401Z +c3bf7f8f7536fdba3f484d6c50a6c925 +2006-05-26T19:13:44.000000Z +59 +tian +has-props + + + + + + + + + + + + + + + + + + + + +616 + +16x16.png +file + + + + +2009-11-21T08:50:52.939401Z +8a2b24ea1ad9b3bce6af8a46182e83a6 +2006-05-26T19:13:44.000000Z +59 +tian +has-props + + + + + + + + + + + + + + + + + + + + +402 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-down/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-down/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-down/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-down/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-down/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-down/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-down/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-down/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-down/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-down/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-down/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-down/.svn/text-base/24x24.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-forward/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-forward/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-forward/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-forward/.svn/entries 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/go-forward +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-12-12T18:43:56.000000Z +17 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +24x24.png +file + + + + +2009-11-21T08:50:52.831385Z +56eae5d190d17893896b1ed8182016ae +2005-12-12T18:43:56.000000Z +17 +tian +has-props + + + + + + + + + + + + + + + + + + + + +593 + +16x16.png +file + + + + +2009-11-21T08:50:52.831385Z +19b8ac07aca9d05a9db1e0993a5cbdc8 +2005-12-12T18:43:56.000000Z +17 +tian +has-props + + + + + + + + + + + + + + + + + + + + +380 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-forward/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-forward/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-forward/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-forward/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-forward/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-forward/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-forward/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-forward/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-forward/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-forward/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-forward/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-forward/.svn/text-base/24x24.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-up/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-up/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-up/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-up/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/go-up +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-12-12T18:43:56.000000Z +17 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +24x24.png +file + + + + +2009-11-21T08:50:50.243383Z +8062cc5fbf8a349c5edfd39c01fe3413 +2005-12-12T18:43:56.000000Z +17 +tian +has-props + + + + + + + + + + + + + + + + + + + + +571 + +16x16.png +file + + + + +2009-11-21T08:50:50.243383Z +369129bf2e192e09d831b31b9d1dc7e1 +2005-12-12T18:43:56.000000Z +17 +tian +has-props + + + + + + + + + + + + + + + + + + + + +308 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-up/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-up/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-up/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-up/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-up/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-up/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-up/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-up/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-up/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-up/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/go-up/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/go-up/.svn/text-base/24x24.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/help +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:50.355383Z +f7d7e1e83443d336c33b4d944fcce3e8 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2326 + +16x16.png +file + + + + +2009-11-21T08:50:50.355383Z +0af7b0f35e2b4b1062ce52a74915e46c +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +923 + +64x64.png +file + + + + +2009-11-21T08:50:50.359382Z +198caa12706d7dae9fd332a2a58c633b +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +5393 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/prop-base/64x64.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/prop-base/64x64.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/prop-base/64x64.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/prop-base/64x64.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/text-base/32x32.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/help/.svn/text-base/64x64.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/help/.svn/text-base/64x64.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/home/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/home/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/home/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/home/.svn/entries 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,62 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/home +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:48.775393Z +74cab811982e8ffee31fbbd2178a469e +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2771 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/home/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/home/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/home/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/home/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/home/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/home/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/jump-to/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/jump-to/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/jump-to/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/jump-to/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/jump-to +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:50.671385Z +967a0c4bc922339bf65e3300353e1641 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2835 + +24x24.png +file + + + + +2009-11-21T08:50:50.675393Z +6393cc81e889a05eda37a408d4f9dbc0 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1850 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/jump-to/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/jump-to/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/jump-to/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/jump-to/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/jump-to/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/jump-to/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/jump-to/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/jump-to/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/jump-to/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/jump-to/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/jump-to/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/jump-to/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-next/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-next/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-next/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-next/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/media-next +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:50.579781Z +93f4dd2ae912250b218fde93dd0b907e +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1751 + +24x24.png +file + + + + +2009-11-21T08:50:50.579781Z +4346af6eb70f9432d3fc4eeaf88878f9 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1195 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-next/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-next/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-next/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-next/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-next/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-next/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-next/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-next/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-next/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-next/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-next/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-next/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/entries 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/media-play +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:48.567395Z +66212182ea5a071a00495f14de629426 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1401 + +24x24.png +file + + + + +2009-11-21T08:50:48.567395Z +84d1b352fa4223d148818984fe7b2a9a +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1050 + +16x16.png +file + + + + +2009-11-21T08:50:48.571390Z +2eda180ed5937141e39a2804f6caf879 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +704 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/media-play/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/media-play/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/network/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/network/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/network/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/network/.svn/entries 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,62 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/network +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:48.891385Z +6a6f41fbd0ac2f7a25883244c3daa749 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2631 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/network/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/network/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/network/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/network/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/network/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/network/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/new +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:50.395382Z +ac491c6e6249bf3320e056c07bc488f1 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +999 + +24x24.png +file + + + + +2009-11-21T08:50:50.399383Z +9946668cc1c44b51801f34b34133d8ec +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +775 + +16x16.png +file + + + + +2009-11-21T08:50:50.399383Z +f153b0f0b933faa3ef1ee672915d98e4 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +475 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/new/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/new/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/ok/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/ok/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/ok/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/ok/.svn/entries 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/ok +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:52.859385Z +8dff5132aa59012de8b47f5c2ab835b1 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2365 + +24x24.png +file + + + + +2009-11-21T08:50:52.859385Z +1eacb348be6afd10bcb097d42a0234b0 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1589 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/ok/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/ok/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/ok/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/ok/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/ok/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/ok/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/ok/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/ok/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/ok/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/ok/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/ok/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/ok/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/entries 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/open +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:52.448389Z +7c98c379d0b51c48d826cc434b8f64aa +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2311 + +24x24.png +file + + + + +2009-11-21T08:50:52.452380Z +f4750b9c9f6d70d879426bc305e69159 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1546 + +16x16.png +file + + + + +2009-11-21T08:50:52.452380Z +ee35027ba2c2fa090860d365a09e8981 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +562 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/open/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/open/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/entries 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/preferences +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:51.216383Z +3352eebc30b4b83ec36d6d8e0a1307a6 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2764 + +24x24.png +file + + + + +2009-11-21T08:50:51.220382Z +1381daf0e1aaea57c76e8bc4db90b897 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1553 + +16x16.png +file + + + + +2009-11-21T08:50:51.220382Z +91ac5d3611361d948671efea3b4645f5 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +3535 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/preferences/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/preferences/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/properties/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/properties/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/properties/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/properties/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/properties +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:50.916384Z +44ac09dd4594558874a859a3bf6e7c60 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +3048 + +24x24.png +file + + + + +2009-11-21T08:50:50.916384Z +29891cf3633fb01c0757af2c96e1f7bc +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1893 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/properties/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/properties/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/properties/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/properties/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/properties/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/properties/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/properties/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/properties/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/properties/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/properties/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/properties/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/properties/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/quit/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/quit/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/quit/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/quit/.svn/entries 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/quit +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:48.468385Z +ca6de8854621da8d7600f11d70231f48 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +3118 + +16x16.png +file + + + + +2009-11-21T08:50:48.468385Z +276541e4c7deedb48b2dac5c3936307c +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1039 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/quit/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/quit/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/quit/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/quit/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/quit/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/quit/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/quit/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/quit/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/quit/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/quit/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/quit/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/quit/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/entries 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/refresh +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:51.136387Z +d7f8ac4ad7844dcbf666ae574c5bd377 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2846 + +24x24.png +file + + + + +2009-11-21T08:50:51.136387Z +8dba8f82072b5052fd58a1abb505ca9c +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1760 + +16x16.png +file + + + + +2009-11-21T08:50:51.136387Z +648d900028df7194ac3d8d90084dae3a +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +983 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/refresh/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/refresh/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/remove/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/remove/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/remove/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/remove/.svn/entries 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,96 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/remove +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:51.028383Z +aae59b462cee30dfdb87190d4242f137 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +625 + +24x24.png +file + + + + +2009-11-21T08:50:51.028383Z +10065947a5888e134ea7bfe930b30c5c +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +480 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/remove/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/remove/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/remove/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/remove/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/remove/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/remove/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/remove/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/remove/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:51.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/remove/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/remove/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/remove/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/remove/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/entries 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/revert-to-saved +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2006-09-10T22:10:50.000000Z +219 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:48.652384Z +f6d939ed250bbd5af3bab45bc682d75e +2006-09-10T22:10:50.000000Z +219 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2247 + +24x24.png +file + + + + +2009-11-21T08:50:48.652384Z +f82132c800c9d3e717dc8449b7a382de +2006-09-10T22:10:50.000000Z +219 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1473 + +16x16.png +file + + + + +2009-11-21T08:50:48.652384Z +2eb8cf5fc2afbad6dfdc8f606781bd5c +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +736 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/revert-to-saved/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/entries 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/save +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:49.012384Z +d21a4df86abfb347b1c87b037023ce41 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1512 + +24x24.png +file + + + + +2009-11-21T08:50:49.012384Z +22c769d08ce50ff9a13b9f8c2249b982 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1166 + +16x16.png +file + + + + +2009-11-21T08:50:49.016384Z +70ca0a41245f8c796c78557ac08bf9a7 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +515 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/entries 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,130 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/save-as +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:49.183383Z +af2c40d64d8b34d5f533aef8251aad53 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1957 + +24x24.png +file + + + + +2009-11-21T08:50:49.183383Z +5daa1ee15f1396ed30bb5317e3ff912c +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1410 + +16x16.png +file + + + + +2009-11-21T08:50:49.183383Z +29c60f391fefeb763dd2ba75bc3894f4 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +674 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/16x16.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/16x16.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/16x16.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/16x16.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/24x24.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/24x24.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/24x24.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/24x24.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:49.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/text-base/16x16.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/text-base/16x16.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/text-base/24x24.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/text-base/24x24.png.svn-base differ Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/save-as/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/save-as/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/select-color/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/select-color/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/select-color/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/select-color/.svn/entries 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,62 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons/select-color +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2005-11-14T18:27:59.000000Z +6 +tian + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +32x32.png +file + + + + +2009-11-21T08:50:50.735383Z +71580d32012f2a7979dae03015173d9f +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +1904 + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/select-color/.svn/prop-base/32x32.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/select-color/.svn/prop-base/32x32.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/select-color/.svn/prop-base/32x32.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/select-color/.svn/prop-base/32x32.png.svn-base 2009-11-21 08:50:50.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END Binary files /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/select-color/.svn/text-base/32x32.png.svn-base and /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/select-color/.svn/text-base/32x32.png.svn-base differ diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/icons/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/icons/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/icons/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/icons/.svn/entries 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,127 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar/icons +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2008-05-02T08:39:24.000000Z +1366 +zombiepig + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +quit +dir + +media-play +dir + +revert-to-saved +dir + +home +dir + +network +dir + +error +dir + +save +dir + +save-as +dir + +execute +dir + +go-back +dir + +directory +dir + +convert +dir + +find +dir + +cancel +dir + +clear +dir + +go-up +dir + +help +dir + +add +dir + +new +dir + +select-color +dir + +jump-to +dir + +media-next +dir + +properties +dir + +remove +dir + +refresh +dir + +open +dir + +preferences +dir + +delete +dir + +dnd +dir + +go-forward +dir + +ok +dir + +about +dir + +go-down +dir + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/.svn/entries /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/.svn/entries --- gcstar-1.4.3/share/gcstar/style/GCstar/.svn/entries 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/.svn/entries 2009-11-21 08:50:52.000000000 +0000 @@ -0,0 +1,99 @@ +10 + +dir +1801 +svn+ssh://zombiepig@svn.gna.org/svn/gcstar/tags/GCstar_1_5_0/share/gcstar/style/GCstar +svn+ssh://zombiepig@svn.gna.org/svn/gcstar + + + +2008-05-02T08:39:24.000000Z +1366 +zombiepig + + + + + + + + + + + + + + +ecefd43e-c926-4240-8ed2-f9055617d85f + +lend.png +file + + + + +2009-11-21T08:50:52.944384Z +8cf5a6e81ade18719ac1df9891e8cef6 +2005-11-14T18:27:59.000000Z +6 +tian +has-props + + + + + + + + + + + + + + + + + + + + +2910 + +gtkrc +file + + + + +2009-11-21T08:50:52.948384Z +7ca2d340d70a91c27878f3563cfd3f82 +2006-11-21T20:18:23.000000Z +336 +tian + + + + + + + + + + + + + + + + + + + + + +7766 + +icons +dir + diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/.svn/prop-base/lend.png.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/.svn/prop-base/lend.png.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/.svn/prop-base/lend.png.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/.svn/prop-base/lend.png.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff -Nru /tmp/upG5hBYUlb/gcstar-1.4.3/share/gcstar/style/GCstar/.svn/text-base/gtkrc.svn-base /tmp/sL6inpqcYo/gcstar-1.5.0/share/gcstar/style/GCstar/.svn/text-base/gtkrc.svn-base --- gcstar-1.4.3/share/gcstar/style/GCstar/.svn/text-base/gtkrc.svn-base 1970-01-01 01:00:00.000000000 +0100 +++ gcstar-1.5.0/share/gcstar/style/GCstar/.svn/text-base/gtkrc.svn-base 2009-11-21 08:50:48.000000000 +0000 @@ -0,0 +1,277 @@ +# style [= ] +# { +#