--- kgsueme/kgsueme/game.pl 2003/06/01 16:51:38 1.29 +++ kgsueme/kgsueme/game.pl 2003/06/01 20:12:13 1.30 @@ -211,14 +211,14 @@ $vbox->pack_start((my $frame = new Gtk2::Frame), 0, 1, 0); { - # grrr... $frame->add(my $vbox = new Gtk2::VBox); $vbox->add($self->{title} = new Gtk2::Label $title); - $self->{moveadj} = new Gtk2::Adjustment 1, 0, 1, 0.001, 0.05, 0; + $self->{moveadj} = new Gtk2::Adjustment 0, 0, 0, 1, 1, 0; $vbox->add(my $scale = new Gtk2::HScale $self->{moveadj}); $scale->set_draw_value (0); + $scale->set_digits (0); $self->{moveadj}->signal_connect (value_changed => sub { $self->update_board }); } @@ -250,10 +250,7 @@ $hbox->add (($self->{userpanel}[WHITE] = new game::userpanel colour => WHITE)->widget); $hbox->add (($self->{userpanel}[BLACK] = new game::userpanel colour => BLACK)->widget); - $vbox->pack_start((my $sw = new Gtk2::ScrolledWindow), 1, 1, 0); - $sw->set_policy("never", "always"); - - $sw->add(($self->{text} = new gtk::text)->widget); + $vbox->pack_start(($self->{text} = new gtk::text)->widget, 1, 1, 0); $vbox->pack_start(($self->{entry} = new Gtk2::Entry), 0, 1, 0); $self->{entry}->signal_connect(activate => sub { @@ -635,7 +632,7 @@ my ($self) = @_; return unless $self->{path}; - my $move = int (@{$self->{path}} * $self->{moveadj}->get_value); + my $move = int $self->{moveadj}->get_value; my $running = $move == @{$self->{path}}; @@ -658,20 +655,43 @@ my ($self) = @_; $self->{path} = $self->get_path; + $self->{userpanel}[WHITE]->set_rules ($self->{path}[0]); # should be onload only $self->{userpanel}[BLACK]->set_rules ($self->{path}[0]); # should be onload only - $self->{moveadj}->value_changed if $self->{moveadj}; + if ($self->{moveadj}) { + my $upper = $self->{moveadj}->upper; + my $pos = $self->{moveadj}->get_value; + + $self->{moveadj}->upper (scalar @{$self->{path}}); + + $self->{moveadj}->changed; + if ($pos == $upper) { + $self->{moveadj}->set_value (scalar @{$self->{path}}); + } else { + $self->{moveadj}->value_changed; + } + } } sub event_update_comments { my ($self, $node, $comment, $newnode) = @_; $self->SUPER::event_update_comments($node, $comment, $newnode); - $self->{text}->append_text ("\nMove $node->{move},
Node $node->{id}
") + my $text; + + $text .= "\n
Move $node->{move},
Node $node->{id}
" if $newnode; - $self->{text}->append_text ("\n" . util::toxml $comment); + for (split /\n/, $comment) { + $text .= "\n"; + if ($_ =~ s/^([0-9a-zA-Z]+ \[[0-9dkp\?\-]+\])://) { + $text .= "" . (util::toxml $1) . ":"; + } + $text .= $_; + } + + $self->{text}->append_text ($text); } sub event_part {