Re: Notebook widget with close page button
- From: "muppet" <scott asofyet org>
- To: gtk-perl-list gnome org
- Subject: Re: Notebook widget with close page button
- Date: Mon, 28 Feb 2005 11:46:25 -0500 (EST)
Dawid Zamirski said:
I'm just starting with Gtk programming, and I would like to know how to
make a little close "x" button on each page of a notebook widget
(simillar to the one in gedit when working on multiple files). Does it
require to build a custom wigdet that inherits from orginal notebook
widget? Thanks
Nope.  The "label" parameter to Notebook's insert_page method is actually a
widget.  For convenience, the bindings will place your text in a label for
you, but in general you pass a widget.
To get a close button, just pass an hbox containing a label and a button
instead of a plain label.
  use strict;
  use Glib 'FALSE';
  use Gtk2 -init;
  my $window = Gtk2::Window->new;
  $window->signal_connect (destroy => sub { Gtk2->main_quit });
  my $notebook = Gtk2::Notebook->new;
  $window->add ($notebook);
  sub make_label {
    my ($text) = @_;
    my $hbox = Gtk2::HBox->new;
    my $label = Gtk2::Label->new ($text);
    my $button = Gtk2::Button->new ("x"); # a pixmap would look nicer
    $button->signal_connect (clicked => sub {
          $notebook->remove_page ($notebook->get_current_page);
      });
      $hbox->pack_start ($label, FALSE, FALSE, 0);
      $hbox->pack_start ($button, FALSE, FALSE, 0);
      $label->show;
      $button->show;
      $hbox
  }
  $notebook->append_page (Gtk2::Label->new ('Page 1'), make_label ('Page 1'));
  $notebook->append_page (Gtk2::Label->new ('Page 2'), make_label ('Page 2'));
  $notebook->append_page (Gtk2::Label->new ('Page 3'), make_label ('Page 3'));
  $window->show_all;
  Gtk2->main;
-- 
muppet <scott at asofyet dot org>
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]