X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=gtkconsole%2Fgtkconsole;h=cfa771b0b39f7a8d6e17e78051d1dda812e7a270;hb=fb0e0b573ae07055a92bbfb8bac7e22b3e578344;hp=4b3a34eda8c8b891b6a3058bd5bb86dd1bb1292a;hpb=ae313f260d904cd45b58e4d1e620a49aef1a42c9;p=spider.git diff --git a/gtkconsole/gtkconsole b/gtkconsole/gtkconsole index 4b3a34ed..cfa771b0 100755 --- a/gtkconsole/gtkconsole +++ b/gtkconsole/gtkconsole @@ -2,11 +2,15 @@ # # A GTK based console program # -# Copyright (c) 2001 Dirk Koopman G1TLH +# Copyright (c) 2001-6 Dirk Koopman G1TLH # # $Id$ # +use strict; + +our $root; + # search local then perl directories BEGIN { # root of directory tree for this system @@ -18,13 +22,13 @@ BEGIN { unshift @INC, "$root/local"; } -use strict; - use Glib; use Gtk2 qw(-init); use Gtk2::Helper; use Gtk2::SimpleList; +use Text::Wrap; + use vars qw(@modules $font); @modules = (); # is the list of modules that need init calling @@ -33,9 +37,14 @@ use vars qw(@modules $font); use DXVars; use DXUtil; use IO::Socket::INET; -use Text; -use DebugHandler; +# +# read in gtkconsole file + +Gtk2::Rc->set_default_files("$root/gtkconsole/gtkconsolerc", "$ENV{HOME}/.gtkconsolerc", ".gtkconsolerc"); +print join(', ', Gtk2::Rc->get_default_files), "\n"; +Gtk2::Rc->reparse_all; + # # main initialisation # @@ -50,8 +59,8 @@ if ($ssid) { die "You cannot connect as your cluster callsign ($main::mycall)\n" if $call eq $main::mycall; -my $host = 'localhost'; -my $port = 7301; +my $host = 'gb7djk.dxcluster.net'; +my $port = 7300; my $sock = IO::Socket::INET->new(PeerAddr=>$host, PeerPort=>$port); die "Cannot connect to $host/$port ($!)\n" unless $sock; @@ -74,7 +83,10 @@ sendmsg('I', 'set/nobeep'); # # main window my $main = new Gtk2::Window('toplevel'); -$main->set_default_size(600, 600); +my $scr = $main->get_screen; +my $scr_width = $scr->get_width; +my $scr_height = $scr->get_height; +$main->set_default_size($scr_width, $scr_height/2); $main->signal_connect('delete_event', sub { Gtk2->main_quit; }); $main->set_title("gtkconsole - The DXSpider Console - $call"); @@ -96,19 +108,18 @@ my $menu = $itemf->get_widget('
'); $vbox->pack_start($menu, 0, 1, 0); -# another hbox is packed as the bottom of the vbox -my $bhbox = Gtk2::HBox->new(0, 1); -$vbox->pack_end($bhbox, 1, 1, 0); +# a paned hbox is packed as the bottom of the vbox +my $bhpane = Gtk2::HPaned->new; +$vbox->pack_end($bhpane, 1, 1, 0); -# now pack two vboxes into the hbox -my $lhvbox = Gtk2::VBox->new(0, 1); -my $rhvbox = Gtk2::VBox->new(0, 1); -$bhbox->pack_start($lhvbox, 1, 1, 5); -$bhbox->pack_start(Gtk2::VSeparator->new, 0, 1, 0); -$bhbox->pack_end($rhvbox, 1, 1, 5); +# now create the lh and rh panes +my $lhvpane = Gtk2::VPaned->new; +my $rhvpane = Gtk2::VPaned->new; +$bhpane->pack1($lhvpane, 1, 0); +$bhpane->pack2($rhvpane, 1, 0); # first add a column type for the QRG -my $font = 'monospace 10'; +my $font = 'monospace 9'; my $oddbg = 'light blue'; my $evenbg = 'white'; @@ -118,7 +129,7 @@ Gtk2::SimpleList->add_column_type( 'qrg', attr => sub { my ($treecol, $cell, $model, $iter, $col_num) = @_; my $info = $model->get ($iter, $col_num); - $cell->set(text => sprintf("%.1f", $info), font => $font); + $cell->set(text => sprintf("%.1f", $info), font => $font, xalign => 1.0); } ); @@ -133,6 +144,39 @@ Gtk2::SimpleList->add_column_type( 'tt', } ); +Gtk2::SimpleList->add_column_type( 'ttlong', + type => 'Glib::Scalar', + renderer => 'Gtk2::CellRendererText', + attr => sub { + my ($treecol, $cell, $model, $iter, $col_num) = @_; + my $info = $model->get ($iter, $col_num); + $Text::Wrap::columns = 80; + $cell->set(text => join("\n",wrap("","",$info)), font => $font); + } + ); + +Gtk2::SimpleList->add_column_type( 'ttlesslong', + type => 'Glib::Scalar', + renderer => 'Gtk2::CellRendererText', + attr => sub { + my ($treecol, $cell, $model, $iter, $col_num) = @_; + my $info = $model->get ($iter, $col_num); + $Text::Wrap::columns = 65; + $cell->set(text => join("\n",wrap("","",$info)), font => $font); + } + ); + +Gtk2::SimpleList->add_column_type( 'ttshort', + type => 'Glib::Scalar', + renderer => 'Gtk2::CellRendererText', + attr => sub { + my ($treecol, $cell, $model, $iter, $col_num) = @_; + my $info = $model->get ($iter, $col_num); + $Text::Wrap::columns = 30; + $cell->set(text => join("\n",wrap("","",$info)), font => $font); + } + ); + # # LEFT HAND SIDE @@ -144,36 +188,36 @@ my $dxlist = Gtk2::SimpleList->new( 'QRG' => 'qrg', 'DX Call' => 'tt', 'Grid' => 'tt', - 'Remarks' => 'tt', + 'Remarks' => 'ttshort', 'By' => 'tt', 'Grid' => 'tt', 'TxTime' => 'tt', ); +$dxlist->set_rules_hint(1); my $dxscroll = Gtk2::ScrolledWindow->new (undef, undef); $dxscroll->set_shadow_type ('etched-out'); $dxscroll->set_policy ('never', 'automatic'); #$dxscroll->set_size_request (700, 400); $dxscroll->add($dxlist); $dxscroll->set_border_width(5); -$lhvbox->pack_start($dxscroll, 1, 1, 0); + +$lhvpane->pack1($dxscroll, 1, 0); # The command list +my $lhvbox = Gtk2::VBox->new(0, 1); my $cmdlist = Gtk2::SimpleList->new( RxTime => 'tt', - Information => 'tt', + Information => 'ttlong', ); my $cmdscroll = Gtk2::ScrolledWindow->new (undef, undef); $cmdscroll->set_shadow_type ('etched-out'); -$cmdscroll->set_policy ('never', 'automatic'); +$cmdscroll->set_policy ('automatic', 'automatic'); #$cmdscroll->set_size_request (700, 400); $cmdscroll->add($cmdlist); $cmdscroll->set_border_width(5); $lhvbox->pack_start($cmdscroll, 1, 1, 0); -# nice little separator -$lhvbox->pack_start(Gtk2::HSeparator->new, 0, 1, 0 ); - # callsign and current date and time my $hbox = new Gtk2::HBox; my $calllabel = new Gtk2::Label($call); @@ -190,6 +234,7 @@ $bot->set_editable(1); $bot->signal_connect('activate', \&bothandler); $bot->can_default(1); $lhvbox->pack_end($bot, 0, 1, 0); +$lhvpane->pack2($lhvbox, 1, 0); $bot->grab_default; # @@ -201,26 +246,30 @@ my $annlist = Gtk2::SimpleList->new( RxTime => 'tt', From => 'tt', To => 'tt', - Announcement => 'tt', + Announcement => 'ttlesslong', ); +$annlist->set_rules_hint(1); my $annscroll = Gtk2::ScrolledWindow->new (undef, undef); $annscroll->set_shadow_type ('etched-out'); $annscroll->set_policy ('automatic', 'automatic'); #$annscroll->set_size_request (700, 400); $annscroll->add($annlist); $annscroll->set_border_width(5); -$rhvbox->pack_start($annscroll, 0, 1, 0); +$rhvpane->pack1($annscroll, 1, 0); # The wwv list +my $rhvbox = Gtk2::VBox->new(0, 1); + my $wwvlist = Gtk2::SimpleList->new( RxTime => 'tt', From => 'tt', SFI => 'int', A => 'int', K => 'int', - Remarks => 'tt', + Remarks => 'ttshort', Hour => 'tt' ); +$wwvlist->set_rules_hint(1); my $wwvscroll = Gtk2::ScrolledWindow->new (undef, undef); $wwvscroll->set_shadow_type ('etched-out'); $wwvscroll->set_policy ('never', 'automatic'); @@ -241,15 +290,19 @@ my $wcylist = Gtk2::SimpleList->new( SA => 'tt', GMF => 'tt', Aurora => 'tt', - Time => 'tt' + Hour => 'tt' ); +$wcylist->set_rules_hint(1); my $wcyscroll = Gtk2::ScrolledWindow->new (undef, undef); $wcyscroll->set_shadow_type ('etched-out'); $wcyscroll->set_policy ('never', 'automatic'); -#$wcyscroll->set_size_request (700, 200); $wcyscroll->add($wcylist); $wcyscroll->set_border_width(5); $rhvbox->pack_start($wcyscroll, 1, 1, 0); +$rhvbox->set_size_request (-1, $scr_height / 4); + + +$rhvpane->pack2($rhvbox, 1, 0); my $sock_helper = Gtk2::Helper->add_watch($sock->fileno, 'in', \&tophandler, $sock); @@ -322,7 +375,7 @@ sub handlemsg if (__PACKAGE__->can($handle)) { __PACKAGE__->$handle($list); } else { - push @$list, $cmd; + unshift @$list, $cmd; __PACKAGE__->handle_def($list); } } @@ -336,9 +389,9 @@ sub handle_cmd my $s; $s = ref $ref ? join ', ',@$ref : $ref; - if (exists $cmdlist->{lasttime} != $t) { + if (($cmdscroll->{lasttime}||0) != $t) { $ts = tim($t); - $cmdlist->{lasttime} = $t; + $cmdscroll->{lasttime} = $t; } chomp $s; @@ -353,9 +406,9 @@ sub handle_def $s = ref $ref ? join ', ',@$ref : $ref; my ($t, $ts) = (time, ''); - if (exists $cmdlist->{lasttime} != $t) { + if (($cmdscroll->{lasttime}||0) != $t) { $ts = tim($t); - $cmdlist->{lasttime} = $t; + $cmdscroll->{lasttime} = $t; } chomp $s; @@ -368,9 +421,9 @@ sub handle_dx my $ref = shift; my ($t, $ts) = (time, ''); - if (exists $dxlist->{lasttime} != $t) { + if (($dxscroll->{lasttime}||0) != $t) { $ts = tim($t); - $dxlist->{lasttime} = $t; + $dxscroll->{lasttime} = $t; } push @{$dxlist->{data}}, [$ts, @$ref[0,1,15,3,4,16], stim($ref->[2]) ]; @@ -384,13 +437,13 @@ sub handle_ann my $s; $s = ref $ref ? join ', ',@$ref : $ref; - if (exists $cmdlist->{lasttime} != $t) { + if (($annscroll->{lasttime}||0) != $t) { $ts = tim($t); - $cmdlist->{lasttime} = $t; + $annscroll->{lasttime} = $t; } chomp $s; - push @{$cmdlist->{data}}, [$ts, @$ref[0,1,2]]; + push @{$annlist->{data}}, [$ts, @$ref[3,1,2]]; } sub handle_wcy @@ -401,7 +454,7 @@ sub handle_wcy $s = ref $ref ? join ', ',@$ref : $ref; chomp $s; - push @{$cmdlist->{data}}, [tim(), @$ref[10,4,5,3,6,2,7,8,9,1] ]; + push @{$wcylist->{data}}, [tim(), @$ref[10,4,5,3,6,2,7,8,9,1] ]; } sub handle_wwv @@ -412,7 +465,7 @@ sub handle_wwv $s = ref $ref ? join ', ',@$ref : $ref; chomp $s; - push @{$cmdlist->{data}}, [tim(), @$ref[6,2,3,4,5,1] ]; + push @{$wwvlist->{data}}, [tim(), @$ref[6,2,3,4,5,1] ]; } #