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

Comparing kgsueme/kgsueme/superchat.pl (file contents):
Revision 1.10 by pcg, Sat May 29 02:01:43 2004 UTC vs.
Revision 1.11 by pcg, Sat May 29 06:38:27 2004 UTC

255 my ($self, $text) = @_; 255 my ($self, $text) = @_;
256 256
257 $self->{parent}->_append_text ($self->{r}, $text); 257 $self->{parent}->_append_text ($self->{r}, $text);
258} 258}
259 259
260sub append_widget {
261 my ($self, $widget) = @_;
262
263 $widget->show_all;
264
265 my $anchor = $self->{buffer}->create_child_anchor ($self->riter);
266 $self->{parent}{view}->add_child_at_anchor ($widget, $anchor);
267}
268
269sub append_optionmenu {
270 my ($self, $ref, @entry) = @_;
271
272 my @vals;
273
274 my $widget = new Gtk2::OptionMenu;
275 $widget->set (menu => my $menu = new Gtk2::Menu);
276
277 my $idx = 0;
278
279 while (@entry >= 2) {
280 my $value = shift @entry;
281 my $label = shift @entry;
282
283 $menu->append (new Gtk2::MenuItem $label);
284 push @vals, $value;
285
286 if ($value eq $$ref && $idx >= 0) {
287 $widget->set_history ($idx);
288 $idx = -1e6;
289 }
290 $idx++;
291 }
292
293 my $cb = shift @entry;
294
295 $widget->signal_connect (changed => sub {
296 my $new = $vals[$_[0]->get_history];
297
298 if ($new ne $$ref) {
299 $$ref = $new;
300 $cb->($new) if $cb;
301 }
302 });
303
304 $self->append_widget ($widget);
305
306 $widget;
307}
308
309sub append_entry {
310 my ($self, $ref, $width, $cb) = @_;
311
312 my $widget = new Gtk2::Entry;
313 $widget->set (text => $$ref, width_chars => $width, xalign => 1);
314 $widget->signal_connect (changed => sub {
315 $$ref = $_[0]->get_text;
316 $cb->($$ref) if $cb;
317 });
318
319 $self->append_widget ($widget);
320 $widget;
321}
322
323sub append_button {
324 my ($self, $label, $cb) = @_;
325
326 my $widget = new_with_label Gtk2::Button $label;
327 $widget->signal_connect (clicked => sub { $cb->() if $cb });
328
329 $self->append_widget ($widget);
330 $widget;
331}
332
260sub visible { $_[0]{visible} } 333sub visible { $_[0]{visible} }
334
261sub set_visible { 335sub set_visible {
262 my ($self, $visible) = @_; 336 my ($self, $visible) = @_;
263 337
264 return if $self->{visible} == $visible; 338 return if $self->{visible} == $visible;
265 $self->{visible} = $visible; 339 $self->{visible} = $visible;
280 return unless $self->{visible}; 354 return unless $self->{visible};
281 355
282 $self->{cb}->($self); 356 $self->{cb}->($self);
283} 357}
284 358
359sub destroy {
360 my ($self) = @_;
361
362 return if !$self->{l} || !$self->{buffer} || $self->{l}->get_deleted;
363
364 $self->clear if $self->{buffer};
365 $self->{parent}{tagtable}->remove (delete $self->{tag}) if $self->{tag} && $self->{parent};
366
367 delete $self->{parent};
368 delete $self->{buffer};
369 delete $self->{l};
370 delete $self->{r};
371}
372
285sub DESTROY { 373sub DESTROY {
286 my ($self) = @_; 374 &destroy;
287
288 $self->{parent}{tagtable}->remove (delete $self->{tag}) if $self->{tag};
289} 375}
290 376
2911; 3771;
292 378

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines