summaryrefslogtreecommitdiff
path: root/src/ivyreplay
diff options
context:
space:
mode:
Diffstat (limited to 'src/ivyreplay')
-rwxr-xr-xsrc/ivyreplay79
1 files changed, 35 insertions, 44 deletions
diff --git a/src/ivyreplay b/src/ivyreplay
index e1ab41b..b4d9adb 100755
--- a/src/ivyreplay
+++ b/src/ivyreplay
@@ -23,7 +23,7 @@ use vars qw/$opt_help $opt_b $opt_bus
$opt_repeat $opt_startregexp $opt_padding
$opt_stopregexp $opt_timegranularity $opt_debug/;
-our $VERSION = '1.24';
+our $VERSION = '1.25';
# geometry
@@ -62,8 +62,8 @@ my $replay_fg = 'black';
my $replay_bg_orig;
my $replay_fg_orig;
my $replay_hour;
-$opt_startregexp = '^ClockStart\$';
-$opt_stopregexp = '^ClockStop\$';
+$opt_startregexp = '^ClockStart$';
+$opt_stopregexp = '^ClockStop$';
my $padding = 2;
#----------------------------------------------------------------------------------
@@ -114,20 +114,9 @@ if ($opt_bus) {
} elsif ($opt_b) {
$ivy_port = $opt_b;
}
-my $title;
-my $ivy_version = $Ivy::VERSION;
-my $ivy_cvsrevision = 0;
-my $ivy_versionstring = "v$ivy_version";
-if ($ivy_version =~ s/Revision: (.*)//) {
- $ivy_version = $1;
- $ivy_cvsrevision = 1;
- $ivy_versionstring = "v$ivy_version (cvs revision)";
-}
-if ($ivy_port) {
- $title = "Ivyreplay ($ivy_port) - Ivy $ivy_versionstring";
-} else {
- $title = "Ivyreplay (default port) - Ivy $ivy_versionstring";
-}
+my $title = "Ivyreplay v$VERSION ";
+$title .= ($ivy_port) ? "($ivy_port)" : "(default port)";
+
$replay_time_granularity = $opt_timegranularity if $opt_timegranularity > 0;
if ($replay_time_granularity >= 1) {
$replay_time_decimalplaces = 0;
@@ -202,34 +191,35 @@ $ivy->start;
# load input files
my @files = @ARGV;
-my $lines = 0;
my $steps = 0;
if (@files == 0) {
$mw->Tk::Error("Error : an input file is expected");
} else {
- &showProgressbar();
- for my $file (@files) {
- if (not open(IN, $file)) {
- $mw->Tk::Error("Can't open file '$file' ($!)");
- next;
- } else {
- my ($l, $timefound) = &stepsnumber;
- $lines += $l;
- if ($timefound) {
+ &showProgressbar("Loading file...");
+ my $file = $files[0];
+ if (not open(IN, $file)) {
+ $mw->Tk::Error("Can't open file '$file' ($!)");
+ } else {
+ my ($lines, $timefound) = &stepsnumber;
+ $title .= " - $lines messages";
+ $mw->title($title);
+ $steps = int($lines/10);
+ $progressbar->configure(-to => $steps*10);
+ if ($timefound) {
&loadfileForReplay();
- } else {
+ &hideProgressbar();
+ } else {
$mw->Tk::Error("No time information in file '$file'. ".
"Can't be replayed.");
- next;
- }
+ }
}
close(IN);
- }
- $steps = int($lines/10);
- $progressbar->configure(-to => 10);
- &displayMessages() unless $opt_light;
- &hideProgressbar();
- &replayStart() if $opt_autostart;
+ unless ($opt_light) {
+ &showProgressbar("Displaying msgs...");
+ &displayMessages();
+ &hideProgressbar();
+ }
+ &replayStart() if $opt_autostart;
}
MainLoop;
@@ -255,7 +245,7 @@ sub stepsnumber {
while(<IN>) {
chomp;
next if (/^applications=/ or /^(marker\d+)$/ or /^(messages_number=)/
- or /^\#/ or /^delay=/);
+ or /^\#/ or /^delay=/ or /^comment=/ or /^\s*$/);
my ($sender, $message) = split(/\s+/, $_, 2);
if ($message =~ /^(\d[\d\.]+\d)\s+.*/) {
$timefound = 1;
@@ -387,15 +377,15 @@ sub build {
sub loadfileForReplay {
-
# display messsages to replay
my ($sender, $time, $message);
my $delay = 0;
+ my $line = 0;
while(<IN>) {
chomp;
next if /^\#/ or /^applications=/ or /^messages_number=/
- or /^\s*$/ or /^(marker\d+)$/;
+ or /^\s*$/ or /^(marker\d+)$/ or /^comment=/;
if (/^delay=(\d.*)/) {
if ($1 < 0) {
carp "delay (=$1) must be >=0\n";
@@ -405,6 +395,7 @@ sub loadfileForReplay {
#print "delay=$delay\n";
next;
}
+ $line++;
($sender, $time, $message) = split(/\s+/, $_, 3);
$time += $delay;
if ($replay_time_granularity >= 1) {
@@ -425,6 +416,7 @@ sub loadfileForReplay {
$message =~ s/^\"//;
$message =~ s/\"$//;
push(@{$replay_msg{$time}}, $message);
+ &setProgressbar($line);
}
$mw->raise;
$replay_time = $replay_min_time;
@@ -446,9 +438,7 @@ sub displayMessages {
$replay_text->insert('end', &replayTime($time)." ".$message."\n", $time);
$line++;
- if ($steps != 0) {
- &setProgressbar($line/$steps) if $line % $steps == 0;
- }
+ &setProgressbar($line);
# when user click on a message the begin time changes.
$replay_text->tagBind($time, '<1>', [sub {
my $ti = $_[1];
@@ -478,13 +468,13 @@ sub displayMessages {
}
$replay_text->configure(-state => 'disabled') if $replay_text;
-
}
sub showProgressbar {
+ $progressbar->toplevel->title(shift);
$progressbar->value(0);
- $progressbar->toplevel->deiconify;
+ $progressbar->toplevel->Popup(-popover => $mw, -popanchor => 'c');
$progressbar->toplevel->raise($mw);
} # end showProgressbar
@@ -500,6 +490,7 @@ sub hideProgressbar {
sub setProgressbar {
my ($line) = @_;
+ return unless ($steps == 0 or $line % $steps == 0);
$progressbar->value($line);
$progressbar->toplevel->raise($mw);
$progressbar->update;