X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=gtkconsole%2Fgtkconsole;h=ed322fbcab098dcd1c0eb3c5ae36b918136804e4;hb=7bc3b4bda7b8f4faed9c90e671d82dbcc66a65d7;hp=e67ff0c9b6a3568b6ee036701426f645fd53e29c;hpb=3b0eeaaa6152345bcd42380e385c04fb7e50a064;p=spider.git diff --git a/gtkconsole/gtkconsole b/gtkconsole/gtkconsole index e67ff0c9..ed322fbc 100755 --- a/gtkconsole/gtkconsole +++ b/gtkconsole/gtkconsole @@ -49,6 +49,9 @@ die "You cannot connect as your cluster callsign ($main::mycall)\n" if $call eq my $sock = IO::Socket::INET->new(PeerAddr=>$main::clusteraddr, PeerPort=>$main::clusterport); die "Cannot connect to $main::clusteraddr/$main::clusterport ($!)\n" unless $sock; sendmsg('A', 'local'); +sendmsg('G', '2'); +sendmsg('I', 'set/page 500'); +sendmsg('I', 'set/nobeep'); # # start of GTK stuff @@ -67,7 +70,6 @@ $main->set_title("gtkconsole - The DXSpider Console - $call"); my $vbox = new Gtk::VBox(0, 1); $vbox->border_width(1); $main->add($vbox); -$vbox->show; # the menu bar my @menu = ( @@ -84,31 +86,28 @@ my $menu = $itemf->get_widget('
'); $vbox->pack_start($menu, 0, 1, 0); $menu->show; -# create a vertically paned window and stick it in the bottom of the screen -my $paned = new Gtk::VPaned; -$vbox->pack_end($paned, 1, 1, 0); my $top = new Text(1); my $toplist = $top->text; $toplist->set_editable(0); -$paned->pack1($top, 1, 1); # add the handler for incoming messages from the node my $tophandler = Gtk::Gdk->input_add($sock->fileno, ['read'], \&tophandler, $sock); my $rbuf = ""; # used in handler # the bottom handler -my $bot = new Text(1); -my $botlist = $bot->text; -$botlist->set_editable(1); -$botlist->signal_connect('activate', \&bothandler); -$botlist->can_focus(1); -$botlist->can_default(1); -$botlist->grab_focus; -$botlist->grab_default; -$toplist->{signalid} = $toplist->signal_connect(insert_text => \&doinsert); -$paned->pack2($bot, 0, 1); -$paned->show; +my $bot = new Gtk::Entry; +$bot->set_editable(1); +$bot->signal_connect('activate', \&bothandler); +$bot->can_focus(1); +$bot->can_default(1); +$bot->grab_focus; +$bot->grab_default; +$toplist->{signalid} = $toplist->signal_connect(insert_text => \&doinsert, $toplist); +#$bot->{signalid} = $bot->signal_connect(insert_text => \&botinsert, $bot); +$vbox->pack_end($bot, 0, 1, 0); +$vbox->pack_end($top, 1, 1, 0); +$vbox->show; # the main loop $main->show_all; @@ -123,21 +122,30 @@ sub doinsert { # we temporarily block this handler to avoid recursion $self->signal_handler_block($self->{signalid}); - my $pos = $self->insert($self->{font}, undef, undef, $text); + my $pos = $self->insert($self->{font}, $toplist->style->black, $toplist->style->white, $text); $self->signal_handler_unblock($self->{signalid}); # we already inserted the text if it was valid: no need # for the self to process this signal emission $self->signal_emit_stop_by_name('insert-text'); - $self->signal_emit('activate') if $text eq "\n"; + 1; +} + +sub botinsert +{ + my ($self, $text) = @_; + + printf "%s\n", $text; + 1; } sub bothandler { my ($self, $data) = @_; - my ($msg) = $self->get_chars =~ /([^\n]*)\r?\n$/; - $msg ||= ''; + my $msg = $self->get_text; + $msg =~ s/\r?\n$//; + $self->set_text(''); senddata($msg); } @@ -177,6 +185,16 @@ sub handlemsg my ($sort, $call, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/; if ($sort eq 'D') { $toplist->insert($toplist->{font}, undef, undef, "$line\n"); + } elsif ($sort eq 'X') { + $toplist->insert($toplist->{font}, undef, undef, "$line\n"); + } elsif ($sort eq 'Y') { + $toplist->insert($toplist->{font}, undef, undef, "$line\n"); + } elsif ($sort eq 'V') { + $toplist->insert($toplist->{font}, undef, undef, "$line\n"); + } elsif ($sort eq 'N') { + $toplist->insert($toplist->{font}, undef, undef, "$line\n"); + } elsif ($sort eq 'W') { + $toplist->insert($toplist->{font}, undef, undef, "$line\n"); } elsif ($sort eq 'Z') { Gtk->exit(0); }