App-CPAN2Pkg
view release on metacpan or search on metacpan
lib/App/CPAN2Pkg/UI/Tk.pm view on Meta::CPAN
$self->_del_w( "mark_available_$modname" );
$self->_w('notebook')->update;
};
#
# event: _on_btn_submit()
#
# received when user clicked the submit button.
#
event _on_btn_submit => sub {
my $self = shift;
my $entry = $self->_w( "ent_module" );
my $module = $entry->get;
return unless $module;
$K->post( controller => new_module_wanted => $module );
$entry->delete( 0, 'end' );
};
event _on_hlist_2click => sub {
my $self = shift;
my $hlist = $self->_w('hlist');
my ($elem) = $hlist->info('selection');
my $module = $hlist->info( data => $elem );
$self->_w('notebook')->raise($module);
};
# -- gui creation
#
# $main->_build_gui;
#
# create the various gui elements.
#
sub _build_gui {
my $self = shift;
my $s = $self->_session;
# hide window during its creation to avoid flickering
$mw->withdraw;
# prettyfying tk app.
# see http://www.perltk.org/index.php?option=com_content&task=view&id=43&Itemid=37
$mw->optionAdd('*BorderWidth' => 1);
# set windowtitle
$mw->title('cpan2pkg');
$mw->iconimage( _image( $SHAREDIR->file('icon.png') ) );
$mw->iconmask ( '@' . $SHAREDIR->file('icon-mask.xbm') );
# make sure window is big enough
#my $config = Games::Pandemic::Config->instance;
#my $width = $config->get( 'win_width' );
#my $height = $config->get( 'win_height' );
#$mw->geometry($width . 'x' . $height);
# the tooltip
$self->_set_w('tooltip', $mw->Balloon);
# font used in progression text
$mw->fontCreate( "FNbig", -weight => "bold" );
#
my $ftop = $mw->Frame->pack( top, fillx, pad20 );
$ftop->Label( -text => 'New module wanted:' )->pack( left, pad2 );
my $entry = $ftop->Entry()->pack( left, xfillx, pad2 );
$self->_set_w( ent_module => $entry );
$ftop->Button( -text => 'submit',
-command => $s->postback( '_on_btn_submit' ),
)->pack( left, pad2 );
$mw->bind( '<Return>', $s->postback( '_on_btn_submit' ) );
#
my $f = $mw->Frame->pack( top, xfill2 );
my $f1 = $f->Frame->pack( left, filly );
my $f2 = $f->Frame->pack( left, xfill2 );
$self->_build_hlist( $f1 );
$self->_build_close_btn( $f1 );
$self->_build_notebook( $f2 );
# center & show the window
# FIXME: restore last position saved?
$mw->Popup;
$mw->minsize($mw->width, $mw->height);
$self->_w("ent_module")->focus;
}
#
# $main->_build_close_btn( $parent );
#
# build the button to close all finished modules.
#
sub _build_close_btn {
my ($self, $parent) = @_;
my $b = $parent->Button(
-text => "Clean all finished modules",
-command => $self->_session->postback( "_on_btn_clean_all" ),
)->pack( bottom, fillx );
}
#
# $main->_build_hlist( $parent );
#
# build the hierarchical list holding all the module status.
#
sub _build_hlist {
my ($self, $parent) = @_;
my $hlist = $parent->Scrolled( 'HList',
-scrollbars => 'osoe',
-width => 30,
-columns => 3,
-header => 1,
)->pack( top, xfilly );
$self->_set_w( hlist => $hlist );
$hlist->header( create => 0, -text => 'local' );
$hlist->header( create => 1, -text => 'bs' );
$hlist->header( create => 2, -text => 'module' );
( run in 0.455 second using v1.01-cache-2.11-cpan-d7f47b0818f )