--- kgsueme/bin/kgsueme 2003/05/29 07:30:17 1.7 +++ kgsueme/bin/kgsueme 2003/05/29 10:35:58 1.10 @@ -29,8 +29,8 @@ or die "$IMGDIR/$_[0]: $!"; } -our @black_img = load_img "b01-100x102.png"; -our @white_img = map +(load_img "w0$_-100x102_retouched.png"), 1,2,3; +our @black_img = load_img "b-01.png"; +our @white_img = map +(load_img "w-0$_.png"), 1,2,3,4,5; our $board_img = load_img "woodgrain-01.jpg"; { @@ -46,6 +46,8 @@ # grr... more gtk+ brokenness my %get = ( + hpane_position => sub { ($_[0]->children)[0]->allocation->[2] }, + vpane_position => sub { ($_[0]->children)[0]->allocation->[3] }, window_size => sub { [ @{$_[0]->allocation}[2,3] ] }, #window_pos => sub { die PApp::Util::dumpval [ $_[0]->get_root_origin ] }, clist_column_widths => sub { @@ -298,7 +300,7 @@ $self->{window}->show_all; } -sub event_update { +sub event_update_rooms { my ($self) = @_; $self->{event_update} ||= Gtk->timeout_add(200, sub { @@ -385,7 +387,7 @@ $self; } -sub event_update { +sub event_update_users { my ($self) = @_; $self->{event_update} ||= Gtk->timeout_add(200, sub { @@ -475,6 +477,7 @@ package game; use KGS::Constants; +use KGS::Game::Board; use base KGS::Listener::Game; use base KGS::Game; @@ -494,22 +497,26 @@ $self->{window}->add(my $hpane = new Gtk::HPaned); ::state $hpane, "game::hpane", undef, hpane_position => 500; - $::config{aa}++; + $::config{aa} = 0; $self->{canvas} = $::config{aa} ? new_aa Gnome::Canvas : new Gnome::Canvas; $hpane->add($self->{canvas}); - $self->{canvas}->signal_connect(size_allocate => sub { - warn "@_ @{$_[1]}"; - #$self->{canvas}->set_pixels_per_unit( - }); + { + my $line_colour = $::config{line_colour} || "darkbrown"; + my $border = 0.1; + my $ofs = 0.5 / $self->{size}; + + $self->{canvas}->set_pixels_per_unit(1000); + $self->{canvas}->set_scroll_region(-$border,-$border,1+$border,1+$border); - my $line_colour = $::config{line_colour} || "darkbrown"; - my $border = 0.1; + $self->{canvas}->signal_connect(size_allocate => sub { + my ($w, $h) = @{$_[1]}[2,3]; + + $self->{canvas}->set_pixels_per_unit(($w > $h ? $h : $w)/(1+$border*2)); + + 1; + }); - $self->{canvas}->set_pixels_per_unit(300); - $self->{canvas}->set_scroll_region(-$border,-$border,1+$border,1+$border); - - { my $croot = $self->{canvas}->root; my $cgroup = $croot; #->new($croot, "Gnome::CanvasGroup"); @@ -521,7 +528,6 @@ anchor => "nw" ); } else { - die; $cgroup->new($cgroup, "Gnome::CanvasRect", x1 => -$border, x2 => 1+$border, y1 => -$border, y2 => 1+$border, @@ -531,12 +537,6 @@ ); } - my $x1 = $pad * 2; # == my $y1 = 30; - my $x2 = $w - ($pad * 2); # == my $y2 = 270; - my $w = $x2 - $x1; - my $s = $self->{size} - 1; - my $ofs = 0.5 / $self->{size}; - my $a = "A"; for my $i (1 .. $self->{size}) { # one more iteration for the last lines my $k = $i / $self->{size} - $ofs; @@ -558,7 +558,7 @@ x => 0, y => 0, text => $text, justification => "center", anchor => "center", - font => "-*-helvetica-medium-r-*--34-*", + font => $::config{aa} ? "-*-helvetica-medium-r-*--34-*" : "-*-helvetica-bold-r-*--17-*", fill_color => $line_colour); $text->affine_relative($border*0.015,0, 0,$border*0.015, $x,$y); @@ -590,6 +590,7 @@ image => $::white_img[int rand @::white_img], anchor => "center"); } else { + die "need pixmaps\n"; # too large, scale has NO effect $col->[0] = $cgroup->new($cgroup, "Gnome::CanvasEllipse", @@ -607,7 +608,7 @@ } } - $self->{board_gfx}->{stones} = $stones; + $self->{board_gfx}{stones} = $stones; } $hpane->add(my $vpane = new Gtk::VPaned); @@ -637,28 +638,10 @@ $self; } -sub event_update { +sub event_update_users { my ($self) = @_; - $self->{event_update} ||= Gtk->timeout_add(200, sub { - my $l = $self->{userlist}; - - $l->freeze; - my $pos = $l->get_vadjustment->get_value; - $l->clear; - - my $row = 0; - for (values %{$self->{users}}) { - $l->append($_->{name}); - $l->set_row_data($row++, $_); - } - $l->sort; - $l->get_vadjustment->set_value($pos); - $l->thaw; - - delete $self->{event_update}; - 0; - }); + room::event_update_users $self; } sub join { @@ -672,8 +655,7 @@ my ($self) = @_; $self->SUPER::part; - $self->{window}->hide_all; - $self->event_update; + $self->{window}->hide; } sub event_update_tree { @@ -682,16 +664,6 @@ my $board = new KGS::Game::Board $self->{size}; $board->interpret_path ($self->get_path); -# if (not defined $self->{board_pm}) { -# $self->{board_pm} = new Gtk::Gdk::Pixmap ($self->{board}->window, 100, 100, -1); -# $self->{board_pm}->draw_rectangle($self->{board}->style->white_gc, 1, 0, 0, 100, 100); -# } -# my $red = $self->{board}->window->get_colormap->color_alloc( { red => 65000, green => 0, blue => 0 } ); -# my $red_gc = new Gtk::Gdk::GC ( $self->{board}->window ); -# $red_gc->set_foreground( $red ); -# -# my $px = $self->{board_pm}; - for my $x (0 .. $self->{size} - 1) { for my $y (0 .. $self->{size} - 1) { my $v = $board->{board}[$x][$y]; @@ -704,6 +676,9 @@ : $self->{board_gfx}->{stones}->[$x][$y][1]->hide; } } + + $self->{text}->backward_delete($self->{text}->get_length); + $self->{text}->insert(undef, undef, undef, $board->{comment}.PApp::Util::dumpval([$board->{time},$board->{captures}])); } 1;