Gtk2-Ex-ICal-Recur
view release on metacpan or search on metacpan
lib/Gtk2/Ex/ICal/Recur.pm view on Meta::CPAN
my $start_date_label = Gtk2::Label->new('Starting on');
$start_date_label->set_alignment(0, 0.5);
my $end_on_label = Gtk2::Label->new('and ending on');
$end_on_label->set_alignment(0, 0.5);
my $end_after_label = Gtk2::Label->new('and ending after');
$end_after_label->set_alignment(0, 0.5);
my $count = Gtk2::SpinButton->new_with_range(1,100,1);
$self->{duration}->{count} = $count;
my $occurrences_label = Gtk2::Label->new(' occurrences ');
$occurrences_label->set_alignment(0, 0.5);
$table->attach($start_date_label,1,2,0,1,'fill','fill',0,0);
$table->attach($self->{duration}->{dtstart}->{button},2,3,0,1,'fill','fill',0,0);
my $end_on_radio = Gtk2::RadioButton->new;
my $end_after_radio = Gtk2::RadioButton->new($end_on_radio);
$self->{duration}->{end_on_radio} = $end_on_radio;
$self->{duration}->{end_after_radio} = $end_after_radio;
$self->{duration}->{dtend}->{button}->set_sensitive($end_on_radio->get_active);
$end_on_label->set_sensitive($end_on_radio->get_active);
$end_after_label->set_sensitive($end_after_radio->get_active);
$count->set_sensitive($end_after_radio->get_active);
$occurrences_label->set_sensitive($end_after_radio->get_active);
$end_on_radio->signal_connect('toggled' =>
sub {
$self->{duration}->{dtend}->{button}->set_sensitive($end_on_radio->get_active);
$end_on_label->set_sensitive($end_on_radio->get_active);
$end_after_label->set_sensitive($end_after_radio->get_active);
$count->set_sensitive($end_after_radio->get_active);
$occurrences_label->set_sensitive($end_after_radio->get_active);
}
);
$table->attach_defaults($end_on_radio,0,1,1,2);
$table->attach_defaults($end_on_label,1,2,1,2);
$table->attach_defaults($self->{duration}->{dtend}->{button},2,3,1,2);
$table->attach_defaults($end_after_radio,0,1,2,3);
$table->attach_defaults($end_after_label,1,2,2,3);
$table->attach_defaults($count,2,3,2,3);
$table->attach_defaults($occurrences_label,3,4,2,3);
return $table;
}
sub exceptions {
my ($self) = @_;
my $slist = Gtk2::Ex::Simple::List->new ('Exceptions' => 'text',);
$slist->get_selection->set_mode ('multiple');
$slist->set_headers_visible(FALSE);
my $buttonbox = Gtk2::HBox->new;
my $addbutton = Gtk2::Button->new_from_stock('gtk-add');
my $removebutton = Gtk2::Button->new_from_stock('gtk-remove');
$addbutton->signal_connect('button-release-event' =>
sub {
my ($self, $event) = @_;
my $cal = Gtk2::Calendar->new;
my $calwindow = Gtk2::Window->new('popup');
my $vbox = Gtk2::VBox->new;
my $ok = Gtk2::Button->new_from_stock('gtk-ok');
my $cancel= Gtk2::Button->new_from_stock('gtk-cancel');
$ok->signal_connect('clicked' =>
sub {
my ($year, $month, $day) = $cal->get_date;
$month = month()->[$month];
#push @{$slist->{data}}, ["(not yet implemented)"] if ($#{@{$slist->{data}}} <= 0);
push @{$slist->{data}}, ["$month $day\, $year"];
$calwindow->hide;
}
);
$cancel->signal_connect('clicked' =>
sub {
$calwindow->hide;
}
);
my $hbox = Gtk2::HBox->new;
$hbox->pack_start($ok, TRUE, TRUE, 0);
$hbox->pack_start($cancel, TRUE, TRUE, 0);
$vbox->pack_start($cal, TRUE, TRUE, 0);
$vbox->pack_start($hbox, TRUE, TRUE, 0);
$calwindow->add($vbox);
$calwindow->set_position('mouse');
$calwindow->show_all;
}
);
$removebutton->signal_connect('button-release-event' =>
sub {
my @sel = $slist->get_selected_indices;
my @temp = @{$slist->{data}};
my @newlist;
my %hash = map { $_ => 1 } @sel;
for (my $i=0; $i<=$#temp; $i++) {
push @newlist, [$temp[$i]->[0]] unless $hash{$i};
}
@{$slist->{data}} = ();
foreach my $x (@newlist) {
push @{$slist->{data}}, $x;
}
}
);
$buttonbox->pack_start($addbutton, TRUE, TRUE, 0);
$buttonbox->pack_start($removebutton, TRUE, TRUE, 0);
my $vbox = Gtk2::VBox->new;
my $scroll = Gtk2::ScrolledWindow->new;
$scroll->set_policy('never','automatic');
$scroll->add($slist);
$self->{exceptionslist} = $slist;
$vbox->pack_start($scroll, TRUE, TRUE, 0);
$vbox->pack_start($buttonbox, FALSE, FALSE, 0);
return $vbox;
}
sub month {
return [
'Jan',
'Feb',
'Mar',
'Apr',
( run in 1.822 second using v1.01-cache-2.11-cpan-364913b4093 )