Tk-YANoteBook

 view release on metacpan or  search on metacpan

lib/Tk/YANoteBook/NameTab.pm  view on Meta::CPAN

package Tk::YANoteBook::NameTab;

use strict;
use warnings;
use vars qw($VERSION);
$VERSION = '0.10';

use Tk;
use base qw(Tk::Derived Tk::Frame);
Construct Tk::Widget 'NameTab';

sub Populate {
	my ($self,$args) = @_;
	
	my $closebutton = delete $args->{'-closebutton'};
	$closebutton = 0 unless defined $closebutton;

	my $padx = delete $args->{'-tpadx'};
	$padx = 1 unless defined $padx;

	my $pady = delete $args->{'-tpady'};
	$pady = 1 unless defined $pady;

	my $closeimage;
	if ($closebutton) {
		$closeimage = delete $args->{'-closeimage'};
		$closeimage = $self->Pixmap(-file => Tk->findINC('close_icon.xpm')) unless defined $closeimage;
	}

	$self->SUPER::Populate($args);
	my $l = $self->Label(
	)->pack(
		-side => 'left',
		-expand => 1,
		-fill => 'both',
		-padx => $padx,
		-pady => $pady,
	);
	$self->Advertise('Label' => $l);

	my $i = $self->Label;
	$self->Advertise('Indicator' => $i);

	$self->bind('<Motion>', [$self, 'TabMotion', Ev('x'), Ev('y')]);
	$l->bind('<Motion>', [$self, 'ItemMotion', $l, Ev('x'), Ev('y')]);
	$i->bind('<Motion>', [$self, 'ItemMotion', $l, Ev('x'), Ev('y')]);

	$self->bind('<Button-1>', [$self, 'OnClick']);
	$l->bind('<Button-1>', [$self, 'OnClick']);
	$i->bind('<Button-1>', [$self, 'OnClick']);

	$self->bind('<ButtonRelease-1>', [$self, 'OnRelease']);
	$l->bind('<ButtonRelease-1>', [$self, 'OnRelease']);
	$i->bind('<ButtonRelease-1>', [$self, 'OnRelease']);
	
	my $b;
	if ($closebutton) {
		$b = $self->Button(
			-image => $closeimage,
			-command => ['TabClose', $self],
			-relief => 'flat',
			-highlightthickness => 0,
		)->pack(
			-side => 'right',
			-padx => 1,
			-pady => 1,
		);
		$b->bind('<Motion>', [$self, 'ItemMotion', $b, Ev('x'), Ev('y')]);
	}



( run in 0.613 second using v1.01-cache-2.11-cpan-364913b4093 )