diff options
author | Jörg Frings-Fürst <jff@merkur> | 2014-07-06 15:20:38 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <jff@merkur> | 2014-07-06 15:20:38 +0200 |
commit | 126bb8cb6b93240bb4d3a2b816b74c286c3d422b (patch) | |
tree | e66e1dfe77d53a52539489765c88d23e4423ae27 /lib/gcstar/GCExport.pm |
Imported Upstream version 1.7.0upstream/1.7.0
Diffstat (limited to 'lib/gcstar/GCExport.pm')
-rw-r--r-- | lib/gcstar/GCExport.pm | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/lib/gcstar/GCExport.pm b/lib/gcstar/GCExport.pm new file mode 100644 index 0000000..b32c58e --- /dev/null +++ b/lib/gcstar/GCExport.pm @@ -0,0 +1,118 @@ +package GCExport; + +################################################### +# +# Copyright 2005-2010 Christian Jodar +# +# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# +################################################### + +use strict; + +use File::Basename; +use GCUtils 'glob'; + +use base 'Exporter'; +our @EXPORT = qw(@exportersArray); + +our @exportersArray; + +sub loadExporters +{ + foreach (glob $ENV{GCS_LIB_DIR}.'/GCExport/*.pm') + { + my $export = basename($_, '.pm')."\n"; + next if $export =~ /GCExportBase/; + eval "use GCExport::$export"; + (my $exporter = $export) =~ s/^GCExport/GCExporter/; + my $obj; + eval "\$obj = new GCExport::$exporter"; + die "Fatal error with exporter $export\n$@" if $@; + push @exportersArray, $obj if ! $obj->{errors}; + } +} + +use Gtk2; +use GCExportImport; + +{ + package GCExportDialog; + + use Glib::Object::Subclass + Gtk2::Dialog:: + ; + + @GCExportDialog::ISA = ('GCExportImportDialog'); + + sub addOptions + { + my ($self, $options) = @_; + my $filter = ($self->{filter}->get_active) ? 1 : 0; + $options->{items} = $self->{parent}->{items}->getItemsListFiltered($filter); + $options->{collection} = $self->{parent}->{options}->file; + $options->{defaultImage} = $self->{parent}->{defaultImage}; + $options->{sorter} = $self->{sorter}->getValue; + $options->{order} = $self->{order}->getValue; + } + + sub setModel + { + my $self = shift; + $self->{fieldsDialog} = new GCFieldsSelectionDialog($self, $self->{parent}->{lang}->{ExportFieldsTitle}); + } + + sub new + { + my ($proto, $parent) = @_; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new($parent, $parent->{lang}->{ExportTitle}, 'export'); + bless ($self, $class); + + $self->{fieldsButtonLabel} = $parent->{lang}->{ExportFieldsTitle}; + $self->{fieldsTip} = $parent->{lang}->{ExportFieldsTip}; + $self->{filter} = new Gtk2::CheckButton($parent->{lang}->{ExportFilter}); + $self->{sortLabel} = GCLabel->new($parent->{lang}->{ExportSortBy}); + $self->{sorter} = new GCFieldSelector(0, undef, 0); + $self->{orderLabel} = GCLabel->new($parent->{lang}->{ExportOrder}); + my $ascStock = Gtk2::Stock->lookup('gtk-sort-ascending'); + (my $ascStockLabel = $ascStock->{label}) =~ s/_//; + my $descStock = Gtk2::Stock->lookup('gtk-sort-descending'); + (my $descStockLabel = $descStock->{label}) =~ s/_//; + $self->{order} = new GCMenuList([ + {value => 'asc', displayed => $ascStockLabel}, + {value => 'desc', displayed => $descStockLabel}, + ]); + $self->{dataTable}->resize(4, 2); + $self->{dataTable}->attach($self->{filter}, 0, 2, 0, 1, 'fill', 'fill', 0, 0); + $self->{dataTable}->attach($self->{sortLabel}, 0, 1, 1, 2, 'fill', 'fill', 0, 0); + $self->{dataTable}->attach($self->{sorter}, 1, 2, 1, 2, 'fill', 'fill', 0, 0); + $self->{dataTable}->attach($self->{orderLabel}, 0, 1, 2, 3, 'fill', 'fill', 0, 0); + $self->{dataTable}->attach($self->{order}, 1, 2, 2, 3, 'fill', 'fill', 0, 0); + $self->{dataTable}->attach($self->{labelFile}, 0, 1, 3, 4, 'fill', 'fill', 0, 0); + $self->{dataTable}->attach($self->{file}, 1, 2, 3, 4, ['fill', 'expand'], 'fill', 0, 0); + +# $self->vbox->pack_start(new Gtk2::HSeparator, 0, 0, 5); +# $self->vbox->pack_start($self->{filter},0,0,0); + + return $self; + } + +} + + +1; |