ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/kgsueme/game.pl
(Generate patch)

Comparing kgsueme/kgsueme/game.pl (file contents):
Revision 1.29 by pcg, Sun Jun 1 16:51:38 2003 UTC vs.
Revision 1.30 by pcg, Sun Jun 1 20:12:13 2003 UTC

209 $self->{hpane}->pack1((my $vbox = new Gtk2::VBox), 1, 1); 209 $self->{hpane}->pack1((my $vbox = new Gtk2::VBox), 1, 1);
210 210
211 $vbox->pack_start((my $frame = new Gtk2::Frame), 0, 1, 0); 211 $vbox->pack_start((my $frame = new Gtk2::Frame), 0, 1, 0);
212 212
213 { 213 {
214 # grrr...
215 $frame->add(my $vbox = new Gtk2::VBox); 214 $frame->add(my $vbox = new Gtk2::VBox);
216 $vbox->add($self->{title} = new Gtk2::Label $title); 215 $vbox->add($self->{title} = new Gtk2::Label $title);
217 216
218 $self->{moveadj} = new Gtk2::Adjustment 1, 0, 1, 0.001, 0.05, 0; 217 $self->{moveadj} = new Gtk2::Adjustment 0, 0, 0, 1, 1, 0;
219 218
220 $vbox->add(my $scale = new Gtk2::HScale $self->{moveadj}); 219 $vbox->add(my $scale = new Gtk2::HScale $self->{moveadj});
221 $scale->set_draw_value (0); 220 $scale->set_draw_value (0);
221 $scale->set_digits (0);
222 222
223 $self->{moveadj}->signal_connect (value_changed => sub { $self->update_board }); 223 $self->{moveadj}->signal_connect (value_changed => sub { $self->update_board });
224 } 224 }
225 225
226 $vbox->pack_start((my $aspect_frame = new Gtk2::AspectFrame "", 0.5, 0.5, 1, 0), 1, 1, 0); 226 $vbox->pack_start((my $aspect_frame = new Gtk2::AspectFrame "", 0.5, 0.5, 1, 0), 1, 1, 0);
248 248
249 $vbox->pack_start((my $hbox = new Gtk2::HBox 1), 0, 1, 0); 249 $vbox->pack_start((my $hbox = new Gtk2::HBox 1), 0, 1, 0);
250 $hbox->add (($self->{userpanel}[WHITE] = new game::userpanel colour => WHITE)->widget); 250 $hbox->add (($self->{userpanel}[WHITE] = new game::userpanel colour => WHITE)->widget);
251 $hbox->add (($self->{userpanel}[BLACK] = new game::userpanel colour => BLACK)->widget); 251 $hbox->add (($self->{userpanel}[BLACK] = new game::userpanel colour => BLACK)->widget);
252 252
253 $vbox->pack_start((my $sw = new Gtk2::ScrolledWindow), 1, 1, 0);
254 $sw->set_policy("never", "always");
255
256 $sw->add(($self->{text} = new gtk::text)->widget); 253 $vbox->pack_start(($self->{text} = new gtk::text)->widget, 1, 1, 0);
257 254
258 $vbox->pack_start(($self->{entry} = new Gtk2::Entry), 0, 1, 0); 255 $vbox->pack_start(($self->{entry} = new Gtk2::Entry), 0, 1, 0);
259 $self->{entry}->signal_connect(activate => sub { 256 $self->{entry}->signal_connect(activate => sub {
260 my $text = $self->{entry}->get_text; 257 my $text = $self->{entry}->get_text;
261 $self->say($text) if $text =~ /\S/; 258 $self->say($text) if $text =~ /\S/;
633 630
634sub update_board { 631sub update_board {
635 my ($self) = @_; 632 my ($self) = @_;
636 return unless $self->{path}; 633 return unless $self->{path};
637 634
638 my $move = int (@{$self->{path}} * $self->{moveadj}->get_value); 635 my $move = int $self->{moveadj}->get_value;
639 636
640 my $running = $move == @{$self->{path}}; 637 my $running = $move == @{$self->{path}};
641 638
642 $self->{board_label}->set_text ("Move $move"); 639 $self->{board_label}->set_text ("Move $move");
643 640
656 653
657sub event_update_tree { 654sub event_update_tree {
658 my ($self) = @_; 655 my ($self) = @_;
659 656
660 $self->{path} = $self->get_path; 657 $self->{path} = $self->get_path;
658
661 $self->{userpanel}[WHITE]->set_rules ($self->{path}[0]); # should be onload only 659 $self->{userpanel}[WHITE]->set_rules ($self->{path}[0]); # should be onload only
662 $self->{userpanel}[BLACK]->set_rules ($self->{path}[0]); # should be onload only 660 $self->{userpanel}[BLACK]->set_rules ($self->{path}[0]); # should be onload only
663 661
664 $self->{moveadj}->value_changed if $self->{moveadj}; 662 if ($self->{moveadj}) {
663 my $upper = $self->{moveadj}->upper;
664 my $pos = $self->{moveadj}->get_value;
665
666 $self->{moveadj}->upper (scalar @{$self->{path}});
667
668 $self->{moveadj}->changed;
669 if ($pos == $upper) {
670 $self->{moveadj}->set_value (scalar @{$self->{path}});
671 } else {
672 $self->{moveadj}->value_changed;
673 }
674 }
665} 675}
666 676
667sub event_update_comments { 677sub event_update_comments {
668 my ($self, $node, $comment, $newnode) = @_; 678 my ($self, $node, $comment, $newnode) = @_;
669 $self->SUPER::event_update_comments($node, $comment, $newnode); 679 $self->SUPER::event_update_comments($node, $comment, $newnode);
670 680
681 my $text;
682
671 $self->{text}->append_text ("\nMove <move>$node->{move}</move>, <header>Node <node>$node->{id}</node></header>") 683 $text .= "\n<header>Move <move>$node->{move}</move>, <header>Node <node>$node->{id}</node></header>"
672 if $newnode; 684 if $newnode;
673 685
674 $self->{text}->append_text ("\n" . util::toxml $comment); 686 for (split /\n/, $comment) {
687 $text .= "\n";
688 if ($_ =~ s/^([0-9a-zA-Z]+ \[[0-9dkp\?\-]+\])://) {
689 $text .= "<user>" . (util::toxml $1) . "</user>:";
690 }
691 $text .= $_;
692 }
693
694 $self->{text}->append_text ($text);
675} 695}
676 696
677sub event_part { 697sub event_part {
678 my ($self) = @_; 698 my ($self) = @_;
679 $self->SUPER::event_part; 699 $self->SUPER::event_part;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines