diff options
author | etienne | 2015-12-30 15:00:21 +0000 |
---|---|---|
committer | etienne | 2015-12-30 15:00:21 +0000 |
commit | 6265c3a3a8dc28a04f4e76893c22bcf6f0664b77 (patch) | |
tree | 289e209cc53637c873952830a2de7f2b94b7bc97 /src/ivyreplay | |
parent | 4ff70bb45789dc21d853f6539c4b000401cded03 (diff) | |
download | ivymon-6265c3a3a8dc28a04f4e76893c22bcf6f0664b77.zip ivymon-6265c3a3a8dc28a04f4e76893c22bcf6f0664b77.tar.gz ivymon-6265c3a3a8dc28a04f4e76893c22bcf6f0664b77.tar.bz2 ivymon-6265c3a3a8dc28a04f4e76893c22bcf6f0664b77.tar.xz |
* ivymon :
. New option -buf for bufferizing messages from the begining. Use this
option to minimize processings when ivymon is intended to receive very
large flows of messages. You can always display them later using the
"Scroll" button.
. The -history option now accepts 3 types of value :
. N => only the N first received messages are kept (unchanged)
. Nm => only the messages received during the N first minutes are kept
. infinite => all received messages are kept (according to memory
capacity)
. New option -verbose.
. Improved bufferized mode management (in save function, etc.).
. Fix : crash during input file loading.
. Loggued ivymon bindings changes.
. Added a button to enlarge the "Bindings" frame.
. Added a status bar.
. Added some ballon help informations.
. Minor fixes.
* ivyreplay :
. Updated code to take into account new ivymon tags.
. Minor fixes.
Diffstat (limited to 'src/ivyreplay')
-rwxr-xr-x | src/ivyreplay | 79 |
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; |