… | |
… | |
33 | |
33 | |
34 | $self->{hpane}->pack1((my $vbox = new Gtk2::VBox), 1, 1); |
34 | $self->{hpane}->pack1((my $vbox = new Gtk2::VBox), 1, 1); |
35 | |
35 | |
36 | $vbox->pack_start((my $frame = new Gtk2::Frame), 0, 1, 0); |
36 | $vbox->pack_start((my $frame = new Gtk2::Frame), 0, 1, 0); |
37 | |
37 | |
38 | # grrr... |
|
|
39 | { |
38 | { |
|
|
39 | # grrr... |
40 | $frame->add(my $vbox = new Gtk2::VBox); |
40 | $frame->add(my $vbox = new Gtk2::VBox); |
41 | $vbox->add($self->{title} = new Gtk2::Label $title); |
41 | $vbox->add($self->{title} = new Gtk2::Label $title); |
42 | |
42 | |
43 | $self->{moveadj} = new Gtk2::Adjustment 1, 0, 1, 0.01, 0.1, 0; |
43 | $self->{moveadj} = new Gtk2::Adjustment 1, 0, 1, 0.01, 0.1, 0; |
44 | |
44 | |
… | |
… | |
57 | |
57 | |
58 | $self->{text}->set_text(KGS::Listener::Debug::dumpval([$self->{board}{time},$self->{board}{captures}]). $self->{board}{comment}); |
58 | $self->{text}->set_text(KGS::Listener::Debug::dumpval([$self->{board}{time},$self->{board}{captures}]). $self->{board}{comment}); |
59 | }); |
59 | }); |
60 | } |
60 | } |
61 | |
61 | |
62 | #Gtk2::Widget->push_visual (Gtk2::Gdk::Rgb->get_visual); #d# gdk_rgb_* not yet implemented(?) |
|
|
63 | #Gtk2::Widget->push_colormap (Gtk2::Gdk::Rgb->get_cmap); |
|
|
64 | $vbox->pack_start(($self->{canvas} = new Gtk2::DrawingArea), 1, 1, 0); |
62 | $vbox->pack_start(($self->{canvas} = new Gtk2::DrawingArea), 1, 1, 0); |
65 | #Gtk2::Widget->pop_colormap; |
|
|
66 | #Gtk2::Widget->pop_visual; |
|
|
67 | |
63 | |
68 | $self->{canvas}->signal_connect(configure_event => \&configure_event, $self); |
64 | $self->{canvas}->signal_connect(configure_event => \&configure_event, $self); |
69 | $self->{canvas}->signal_connect(expose_event => \&expose_event, $self); |
65 | $self->{canvas}->signal_connect(expose_event => \&expose_event, $self); |
70 | |
66 | |
71 | $self->{hpane}->pack2(($self->{vpane} = new Gtk2::VPaned), 0, 0); |
67 | $self->{hpane}->pack2(($self->{vpane} = new Gtk2::VPaned), 0, 0); |
… | |
… | |
119 | delete $self->{stack}; |
115 | delete $self->{stack}; |
120 | delete $self->{pixbuf}; |
116 | delete $self->{pixbuf}; |
121 | delete $self->{board_shown}; |
117 | delete $self->{board_shown}; |
122 | delete $self->{background}; |
118 | delete $self->{background}; |
123 | $self->repaint_board; |
119 | $self->repaint_board; |
124 | 1; |
120 | 0; |
|
|
121 | } |
|
|
122 | |
|
|
123 | sub expose_event { |
|
|
124 | my ($widget, $event, $self) = @_; |
|
|
125 | |
|
|
126 | $self->{pixbuf} or return; |
|
|
127 | |
|
|
128 | my $area = $event->area; |
|
|
129 | my ($ox, $oy, $s) = @{$self->{offsets}}; |
|
|
130 | |
|
|
131 | $self->redraw ( |
|
|
132 | (new Gtk2::Gdk::Rectangle $area->x - $ox, $area->y - $oy, $area->width, $area->height) |
|
|
133 | ->intersect(new Gtk2::Gdk::Rectangle 0, 0, $s, $s) |
|
|
134 | ); |
|
|
135 | |
|
|
136 | 0; |
125 | } |
137 | } |
126 | |
138 | |
127 | # something Gtk2 fixed |
139 | # something Gtk2 fixed |
128 | sub INTERP_NEAREST (){ 'nearest' } |
140 | sub INTERP_NEAREST (){ 'nearest' } |
129 | sub INTERP_TILES (){ 'tiles' } |
141 | sub INTERP_TILES (){ 'tiles' } |
… | |
… | |
266 | return $expose_area unless $self->{board}; |
278 | return $expose_area unless $self->{board}; |
267 | |
279 | |
268 | my ($w, $h) = ($canvas->allocation->values)[2,3]; |
280 | my ($w, $h) = ($canvas->allocation->values)[2,3]; |
269 | |
281 | |
270 | my $s = $w > $h ? $h : $w; |
282 | my $s = $w > $h ? $h : $w; |
|
|
283 | |
|
|
284 | return unless $s > 128; |
271 | |
285 | |
272 | $self->{offsets} = [int (($w - $s) / 2), int (($h - $s) / 2), $s]; |
286 | $self->{offsets} = [int (($w - $s) / 2), int (($h - $s) / 2), $s]; |
273 | |
287 | |
274 | my $size = $self->{size}; |
288 | my $size = $self->{size}; |
275 | |
289 | |
… | |
… | |
415 | $self->{canvas}->window->draw_rectangle ($self->{canvas}->style->black_gc, 0, |
429 | $self->{canvas}->window->draw_rectangle ($self->{canvas}->style->black_gc, 0, |
416 | $x + $ox - 1, $y + $oy - 1, $w + 2, $h + 2) if $::DEBUG_EXPOSE; |
430 | $x + $ox - 1, $y + $oy - 1, $w + 2, $h + 2) if $::DEBUG_EXPOSE; |
417 | } |
431 | } |
418 | } |
432 | } |
419 | |
433 | |
420 | sub expose_event { |
|
|
421 | my ($widget, $event, $self) = @_; |
|
|
422 | |
|
|
423 | $self->{pixbuf} or return; |
|
|
424 | |
|
|
425 | my $area = $event->area; |
|
|
426 | my ($ox, $oy, $s) = @{$self->{offsets}}; |
|
|
427 | |
|
|
428 | $self->redraw ( |
|
|
429 | (new Gtk2::Gdk::Rectangle $area->x - $ox, $area->y - $oy, $area->width, $area->height) |
|
|
430 | ->intersect(new Gtk2::Gdk::Rectangle 0, 0, $s, $s) |
|
|
431 | ); |
|
|
432 | |
|
|
433 | 1; |
|
|
434 | } |
|
|
435 | |
|
|
436 | sub event_update_tree { |
434 | sub event_update_tree { |
437 | my ($self) = @_; |
435 | my ($self) = @_; |
438 | |
436 | |
439 | $self->{path} = $self->get_path; |
437 | $self->{path} = $self->get_path; |
440 | |
|
|
441 | $self->{moveadj}->value_changed (); |
438 | $self->{moveadj}->value_changed if $self->{moveadj}; |
442 | } |
439 | } |
443 | |
440 | |
444 | sub event_part { |
441 | sub event_part { |
445 | my ($self) = @_; |
442 | my ($self) = @_; |
446 | $self->SUPER::event_part; |
443 | $self->SUPER::event_part; |