This file is indexed.

/usr/share/perl5/AMC/Gui/Avancement.pm is in auto-multiple-choice-common 1.3.0-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#
# Copyright (C) 2008-2014 Alexis Bienvenue <paamc@passoire.fr>
#
# This file is part of Auto-Multiple-Choice
#
# Auto-Multiple-Choice 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.
#
# Auto-Multiple-Choice 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 Auto-Multiple-Choice.  If not, see
# <http://www.gnu.org/licenses/>.

package AMC::Gui::Avancement;

use AMC::Basic;

sub new {
    my ($entier,%o)=(@_);
    my $self={'entier'=>$entier,
	      'progres'=>0,
	      'debug'=>0,
	      'epsilon'=>0.02,
	      'lastshown'=>0,
	      'id'=>'',
	      'bar'=>'',
	  };

    for (keys %o) {
	$self->{$_}=$o{$_} if(defined($self->{$_}));
    }

    debug "Create progression pipe for <".$self->{id}."> up to $entier".
      ($self->{bar}?" (progress bar side)":"");

    bless $self;
    $|++ if($self->{'id'});
    return($self);
}

sub progres {
    my ($self,$suite)=(@_);
    $suite *=  $self->{'entier'};
    $self->{'progres'}+=$suite;
    if($self->{'progres'}>$self->{'entier'}) {
	$suite-=$self->{'progres'}-$self->{'entier'};
	$self->{'progres'}=$self->{'entier'};
    }
    print "===<".$self->{'id'}.">=+$suite\n" if($self->{'id'});
}

sub text {
  my ($self,$text)=(@_);
  print "===<".$self->{'id'}.">=T($text)\n" if($self->{'id'});
}

sub progres_abs {
    my ($self,$suite)=(@_);
    $self->progres($suite-$self->{'progres'});
}

sub fin {
    my ($self,$suite)=(@_);
    $self->progres_abs(1);
}

sub etat {
    my ($self)=@_;
    return($self->{'progres'});
}

sub lit {
    my ($self,$s,$oo)=(@_);
    my $r=-1;
    if($s =~ /===<(.*)>=\+([0-9,.]+(?:e[+-]?[0-9]+)?)/) {
	my $id=$1;
	my $suite=$2;
	$suite =~ s/,/./;
	$self->{'progres'}+=$suite;

	if($self->{'progres'}<0) {
	    debug("progres($id)=$self->{'progres'}");
	    $self->{'progres'}=0;
	}
	if($self->{'progres'}>1) {
	    debug("progres($id)=$self->{'progres'}");
	    $self->{'progres'}=1;
	}

	$r=$self->{'progres'};
    }
    if($s =~ /===<(.*)>=T\((.*)\)$/) {
      if($oo->{'bar'}) {
	$oo->{'bar'}->set_text($2);
      }
      $self->{'progres'}=0;
      $r=0;
    }
    if($r>=0 && $oo->{'bar'}) {
      $oo->{'bar'}->set_fraction($r);
      if($r==0 || $r>=$self->{'lastshown'}+$self->{'epsilon'}) {
	Gtk2->main_iteration while ( Gtk2->events_pending );
	$self->{'lastshown'}=$r;
      }
    }
    return($r);
}

1;