#!/usr/bin/perl use strict; use warnings; package UserInterface; use base 'Tk::MainWindow'; require Tk::HList; my $MinWidth    = 640; my $MinHeight   = 480; sub new {   my ($class) = shift;   my $self = $class->SUPER::new(@_);   $self->build_display;   return ($self); } sub run {   my $self = shift;   $self->SUPER::MainLoop; } sub center {   my $self = shift;   $self->update;   my $w = $self->width;   my $h = $self->height;   my $posx = int(($self->screenwidth - $w) / 2);   my $posy = int(($self->screenheight - $h) / 2);   $self->geometry($w . 'x' . $h . '+' . $posx . '+' . $posy); } sub datalist {   $_[0]->{fl2r_datalist} = $_[1] if @_ > 1;   return $_[0]->{fl2r_datalist} } sub datalist_scroll_y {   $_[0]->{fl2r_datalist_scroll_y} = $_[1] if @_ > 1;   return $_[0]->{fl2r_datalist_scroll_y} } sub build_display {   my $self = shift;     $self->title("");   $self->geometry($MinWidth .'x'. $MinHeight);   $self->minsize($MinWidth, $MinHeight);   $self->center;   $self->build_datalist; } sub build_datalist {   my $self = shift;   $self->datalist_scroll_y(       $self->Scrollbar(           -orient => 'vertical',       )->pack(           -side   => 'right',           -fill   => 'y'       )   );   $self->datalist(       $self->HList(           -columns            => 6,           -header             => 1,           #-height             => '15',           -background         => 'white',           -yscrollcommand => ['set', $self->datalist_scroll_y]       )->pack(           -side   => 'right',           -fill   => 'both',           -expand => 1       )   );   $self->datalist_scroll_y->configure(       -command => ['yview', $self->datalist]   );   my $col = 0;   $self->datalist->headerCreate($col++, -text => '#');   $self->datalist->headerCreate($col++, -text => 'Timestamp');   $self->datalist->headerCreate($col++, -text => 'Thread Id');   $self->datalist->headerCreate($col++, -text => 'Message');   $self->datalist->headerCreate($col++, -text => 'Fipo Start');   $self->datalist->headerCreate($col++, -text => 'Fipo End');     for( (0..100) )   {       $self->datalist->add($_, -text => $_ );   } } 1; my $ui = new UserInterface; $ui->run;