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

Comparing kgsueme/kgsueme/chat.pl (file contents):
Revision 1.9 by root, Wed Jun 2 07:58:59 2004 UTC vs.
Revision 1.10 by root, Wed Jun 2 09:32:32 2004 UTC

266 266
267 $widget->show_all; 267 $widget->show_all;
268 268
269 my $anchor = $self->{buffer}->create_child_anchor ($self->riter); 269 my $anchor = $self->{buffer}->create_child_anchor ($self->riter);
270 $self->{parent}{view}->add_child_at_anchor ($widget, $anchor); 270 $self->{parent}{view}->add_child_at_anchor ($widget, $anchor);
271
272 $widget;
271} 273}
272 274
273sub append_optionmenu { 275sub append_optionmenu {
274 my ($self, $ref, @entry) = @_; 276 my ($self, $ref, @entry) = @_;
275 277
276 my @vals; 278 $self->append_widget (gtk::optionmenu $ref, @entry);
277
278 my $widget = new Gtk2::OptionMenu;
279 $widget->set (menu => my $menu = new Gtk2::Menu);
280
281 my $idx = 0;
282
283 while (@entry >= 2) {
284 my $value = shift @entry;
285 my $label = shift @entry;
286
287 $menu->append (new Gtk2::MenuItem $label);
288 push @vals, $value;
289
290 if ($value eq $$ref && $idx >= 0) {
291 $widget->set_history ($idx);
292 $idx = -1e6;
293 }
294 $idx++;
295 }
296
297 my $cb = shift @entry;
298
299 $widget->signal_connect (changed => sub {
300 my $new = $vals[$_[0]->get_history];
301
302 if ($new ne $$ref) {
303 $$ref = $new;
304 $cb->($new) if $cb;
305 }
306 });
307
308 $self->append_widget ($widget);
309
310 $widget;
311}
312
313sub append_entry {
314 my ($self, $ref, $width, $cb) = @_;
315
316 my $widget = new Gtk2::Entry;
317 $widget->set (text => $$ref, width_chars => $width);
318 eval { $widget->set (xalign => 1) }; # workaround für 2.2
319 $widget->signal_connect (changed => sub {
320 $$ref = $_[0]->get_text;
321 $cb->($$ref) if $cb;
322 });
323
324 $self->append_widget ($widget);
325 $widget;
326} 279}
327 280
328sub append_button { 281sub append_button {
329 my ($self, $label, $cb) = @_; 282 my ($self, $label, $cb) = @_;
330 283
331 my $widget = new_with_label Gtk2::Button $label; 284 $self->append_widget (gtk::button $label, $cb);
332 $widget->signal_connect (clicked => sub { $cb->() if $cb });
333
334 $self->append_widget ($widget);
335 $widget;
336} 285}
337 286
338sub visible { $_[0]{visible} } 287sub visible { $_[0]{visible} }
339 288
340sub set_visible { 289sub set_visible {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines