BioPerl
view release on metacpan or search on metacpan
examples/tk/gsequence.pl view on Meta::CPAN
$import_entry = new Gtk::Entry();
my $frame = new Gtk::Frame("Enter here:");
$frame->add($import_entry);
$import_dialog->vbox->pack_start( $frame, $true, $true, 5);
my $bbox = new Gtk::HButtonBox();
$bbox->set_layout("end");
$button = new Gtk::Button( "OK" );
$bbox->add( $button );
$button->signal_connect("clicked",
# OK button handler
sub{ $import_dialog->hide();
&seq_fetch();
});
$button = new Gtk::Button( "Cancel" );
$bbox->add( $button );
$button->signal_connect("clicked",
# close button handler
sub{ $import_dialog->hide();
});
$import_dialog->action_area->pack_start( $bbox, $true, $true, 0 );
$import_dialog->signal_connect_after( "delete_event",
# window delete handler
sub{ $import_dialog->hide();
return &Gtk::true;
});
}
sub open_dialog
{
# Create a new file selection widget
my $open_dialog = new Gtk::FileSelection( "Open File..." );
# Connect the ok_button to open_ok_sel function
$open_dialog->ok_button->signal_connect( "clicked",
\&ok_open_dialog,
$open_dialog );
# Connect the cancel_button to destroy the widget
$open_dialog->cancel_button->signal_connect( "clicked",
sub { $open_dialog->destroy(); } );
$open_dialog->show();
}
# Get the selected filename
sub ok_open_dialog
{
my ( $widget, $file_selection ) = @_;
push @filename, $file_selection->get_filename();
$widget->parent->parent->parent->destroy();
my $in = Bio::SeqIO->new(-file => $filename[-1] , '-format' => 'swiss');
&new_seq_page($in->next_seq());
}
sub update_seq_data
{
$main_label[$current]->set_text($seq[$current]->id) if (defined($seq[$current]));
$main_label[$current]->set_text("<New>") if (!defined($seq[$current]));
$seq_edit[$current]->freeze();
$seq_edit[$current]->delete_text(0,-1);
$seq_edit[$current]->insert(undef,undef,undef,$seq[$current]->seq()) if (defined($seq[$current]));
$seq_edit[$current]->thaw();
&update_comment_window();
&update_description_window();
&update_seqstats_window();
&update_dblink_window();
&update_reference_window();
&update_feature_window();
}
sub new
{
&new_seq_page(undef);
}
sub close
{
}
sub save
{
if (!defined($filename[$current])||!$filename[$current])
{
&saveas_dialog;
return;
}
my $out = Bio::SeqIO->new(-file => ">$filename[$current]" , '-format' => 'swiss');
$out->write_seq($seq[$current]);
}
sub saveas_dialog
{
# Create a new file selection widget
my $saveas_dialog = new Gtk::FileSelection( "Save As..." );
# Connect the ok_button to saveas_ok_sel function
$saveas_dialog->ok_button->signal_connect( "clicked",
\&ok_saveas_dialog,
$saveas_dialog );
# Connect the cancel_button to destroy the widget
$saveas_dialog->cancel_button->signal_connect( "clicked",
sub { $saveas_dialog->destroy(); } );
$saveas_dialog->show();
}
# Get the selected filename and print it to the console
sub ok_saveas_dialog
{
my ( $widget, $file_selection ) = @_;
my $filename = $file_selection->get_filename();
$widget->parent->parent->parent->destroy();
$filename[$current] = $filename;
my $out = Bio::SeqIO->new(-file => ">$filename[$current]" , '-format' => 'swiss');
$out->write_seq($seq[$current]);
examples/tk/gsequence.pl view on Meta::CPAN
sub { return if !defined($seq[$current]);
&store_current_comment;
$current_comment--
if ($current_comment > 0);
&update_comment_window;
} );
$button = new Gtk::Button("Add");
$bbox->pack_start( $button, $false, $false, 0);
$button->signal_connect( "clicked",
# add comment button handler
sub { return if !defined($seq[$current]);
&store_current_comment;
my $comment = new Bio::Annotation::Comment;
$comment->text("");
$seq[$current]->annotation->add_Comment( $comment );
$current_comment = $seq[$current]->annotation->each_Comment - 1;
&update_comment_window;
} );
$button = new Gtk::Button("Delete");
$bbox->pack_start( $button, $false, $false, 0);
$button->signal_connect( "clicked",
# delete comment button handler
sub { return if !defined($seq[$current]);
$seq[$current]->annotation->remove_Comment( $current_comment );
$current_comment = $current_comment - 1
if ($current_comment > 0);
&update_comment_window;
} );
$comment_window->vbox->pack_end( $bbox, $false, $false, 0);
$bbox = new Gtk::HButtonBox();
$bbox->set_layout("end");
$button = new Gtk::Button( "Close" );
$bbox->add( $button );
$button->signal_connect("clicked",
# close button handler
sub{ $comment_window->hide();
&store_current_comment;
});
$comment_window->action_area->pack_start( $bbox, $true, $true, 0 );
$comment_window->signal_connect_after( "delete_event",
# window delete handler
sub{ $comment_window->hide();
&store_current_comment;
return &Gtk::true;
});
}
sub store_current_comment
{
(($seq[$current]->annotation->each_Comment)[$current_comment])->
text($comment_edit->get_chars(0,-1) )
if ((defined($seq[$current])) && ($seq[$current]->annotation->each_Comment));
}
sub update_comment_window
{
my ($show_me) = @_;
$comment_frame->set_label("Comment[".$current_comment."]");
# insert comment text
$comment_edit->freeze();
$comment_edit->delete_text(0,-1);
if (defined($seq[$current]))
{
my @comment = $seq[$current]->annotation->each_Comment;
$comment_edit->insert(undef,undef,undef, $comment[$current_comment]->text)
if (@comment);
}
$comment_edit->thaw();
$comment_window->show_all() if (defined($show_me));
}
sub init_description_window
{
$description_window = new Gtk::Dialog();
$description_window->set_default_size(620,250);
$description_window->border_width(5);
$description_window->set_title("Description");
# frame
my $description_frame = new Gtk::Frame( "Description" );
# text widget
$description_edit = new Gtk::Text( undef, undef );
$description_edit->set_editable( $true );
$description_edit->set_word_wrap( $true );
# vertical scrollbar for text widget
my $scrollbar;
$scrollbar = new Gtk::VScrollbar( $description_edit->vadj );
# horizontal box containing text widget and scrollbar
my $hbox;
$hbox = new Gtk::HBox( $false, 1 );
$hbox->border_width( 1 );
$hbox->pack_start( $description_edit, $true, $true, 0);
$hbox->pack_end( $scrollbar, $false, $true, 0);
$description_frame->add($hbox);
$description_window->vbox->pack_start( $description_frame, $true, $true, 5);
my $bbox = new Gtk::HButtonBox();
$bbox->set_layout("end");
my $button = new Gtk::Button( "Close" );
$bbox->add( $button );
$button->signal_connect("clicked",
# close button handler
sub{ $description_window->hide();
$seq[$current]->desc($description_edit->get_chars(0,-1))
if $description_edit->get_chars(0,-1);
});
$description_window->action_area->pack_start( $bbox, $true, $true, 0 );
$description_window->signal_connect_after( "delete_event",
# window delete handler
sub{ $description_window->hide();
$seq[$current]->desc($description_edit->get_chars(0,-1))
if $description_edit->get_chars(0,-1);
return &Gtk::true;
});
}
sub update_description_window
{
my ($show_me) = @_;
$description_edit->freeze();
$description_edit->delete_text(0,-1);
$description_edit->insert(undef,undef,undef,$seq[$current]->desc)
if defined($seq[$current]) && defined($seq[$current]->desc);
$description_edit->thaw();
$description_window->show_all() if (defined($show_me));
}
sub init_seqstats_window
{
$seqstats_window = new Gtk::Dialog();
$seqstats_window->border_width(5);
$seqstats_window->set_default_size(100,250);
$seqstats_window->set_title("Sequence Statistics");
# frame
my $seqstats_frame = new Gtk::Frame( "Sequence Statistics" );
# text widget
$seqstats_edit = new Gtk::Text( undef, undef );
$seqstats_edit->set_editable( $false );
$seqstats_edit->set_word_wrap( $true );
# vertical scrollbar for text widget
my $scrollbar;
$scrollbar = new Gtk::VScrollbar( $seqstats_edit->vadj );
# horizontal box containing text widget and scrollbar
my $hbox;
$hbox = new Gtk::HBox( $false, 1 );
$hbox->border_width( 1 );
$hbox->pack_start( $seqstats_edit, $true, $true, 0);
$hbox->pack_end( $scrollbar, $false, $true, 0);
$seqstats_frame->add($hbox);
$seqstats_window->vbox->pack_start( $seqstats_frame, $true, $true, 5);
my $bbox = new Gtk::HButtonBox();
$bbox->set_layout("end");
my $button = new Gtk::Button( "Close" );
$bbox->add( $button );
$button->signal_connect("clicked",
# close button handler
sub{ $seqstats_window->hide();
});
$seqstats_window->action_area->pack_start( $bbox, $true, $true, 0 );
$seqstats_window->signal_connect_after( "delete_event",
# window delete handler
sub{ $seqstats_window->hide();
return &Gtk::true;
});
}
sub update_seqstats_window
{
my ($show_me) = @_;
my ($data,$weight,$count_hash,$percent);
$seqstats_edit->freeze();
$seqstats_edit->delete_text(0,-1);
if (defined($seq[$current]))
{
$data = $seq[$current]->id."\n\n";
$weight = Bio::Tools::SeqStats->get_mol_wt($seq[$current]->primary_seq);
if ($$weight[0] == $$weight[1]) {
$data .= "Molecular weight of sequence equals to ".$$weight[0]."\n\n";
} else {
$data .= "Molecular weight of sequence is greater than ";
$data .= $$weight[0]." and less than ".$$weight[1]."\n\n";
}
$count_hash = Bio::Tools::SeqStats->count_monomers($seq[$current]->primary_seq);
$data .= "Amino Acids:\n";
foreach (sort keys %$count_hash)
{
$percent = sprintf "%.1f",
(($$count_hash{$_} / $seq[$current]->length)*100);
$data .= "${_}: ".$$count_hash{$_}." (${percent}%) \n"
}
$seqstats_edit->insert(undef,undef,undef,$data)
}
$seqstats_edit->thaw();
$seqstats_window->show_all() if (defined($show_me));
}
sub init_dblink_window
{
$current_dblink = 0;
$dblink_window = new Gtk::Dialog();
$dblink_window->set_default_size(500,400);
$dblink_window->set_policy($true,$true,$false);
$dblink_window->set_title("Database Links");
$dblink_window->border_width(5);
# Create a scrolled window to pack the CList widget into
my $scrolled_window = new Gtk::ScrolledWindow( undef, undef );
$dblink_window->vbox->pack_start( $scrolled_window, $true, $true, 0 );
$scrolled_window->set_policy( 'automatic', 'always' );
# Create the CList. For this example we use 2 columns
$dblink_clist = new_with_titles Gtk::CList( "Primary Id","Database" );
# When a selection is made, we want to know about it. The callback
# used is selection_made, and its code can be found further down
$dblink_handler_id = $dblink_clist->signal_connect( "select_row",
sub{ return if (!defined($seq[$current]));
my ( $clist, $row ) = @_;
&store_current_dblink;
$current_dblink = $row;
&update_dblink_window;
} );
# It isn't necessary to shadow the border, but it looks nice :)
examples/tk/gsequence.pl view on Meta::CPAN
$hbox->border_width( 1 );
# text entries
$dblink_entry[0] = new Gtk::Entry();
my $frame = new Gtk::Frame("primary id");
$frame->add($dblink_entry[0]);
$hbox->pack_start( $frame, $true, $true, 0);
$dblink_entry[1] = new Gtk::Entry();
$frame = new Gtk::Frame("optional id");
$frame->add($dblink_entry[1]);
$hbox->pack_end( $frame, $true, $true, 0);
$dblink_window->vbox->pack_start( $hbox, $false, $false, 5);
$dblink_entry[2] = new Gtk::Entry();
$frame = new Gtk::Frame("Database");
$frame->add($dblink_entry[2]);
$dblink_window->vbox->pack_start( $frame, $false, $false, 5);
$dblink_entry[3] = new Gtk::Entry();
$frame = new Gtk::Frame("Comment");
$frame->add($dblink_entry[3]);
$dblink_window->vbox->pack_end( $frame, $false, $false, 5);
$bbox = new Gtk::HButtonBox();
$bbox->set_layout("end");
$button = new Gtk::Button( "Close" );
$bbox->add( $button );
$button->signal_connect("clicked",
# close button handler
sub{ $dblink_window->hide();
&store_current_dblink;
});
$dblink_window->action_area->pack_start( $bbox, $true, $true, 0 );
$dblink_window->signal_connect_after( "delete_event",
# window delete handler
sub{ $dblink_window->hide();
&store_current_dblink;
return &Gtk::true;
});
}
sub store_current_dblink
{
if ((defined($seq[$current])) && ($seq[$current]->annotation->each_DBLink))
{
(($seq[$current]->annotation->each_DBLink)[$current_dblink])->
primary_id($dblink_entry[0]->get_chars(0,-1) );
(($seq[$current]->annotation->each_DBLink)[$current_dblink])->
optional_id($dblink_entry[1]->get_chars(0,-1) );
(($seq[$current]->annotation->each_DBLink)[$current_dblink])->
database($dblink_entry[2]->get_chars(0,-1) );
(($seq[$current]->annotation->each_DBLink)[$current_dblink])->
comment($dblink_entry[3]->get_chars(0,-1) );
}
}
sub update_dblink_window
{
my ($show_me) = @_;
$dblink_window->show_all() if (defined($show_me));
$dblink_clist->freeze();
if (!defined($seq[$current]))
{
$dblink_clist->clear();
$dblink_clist->thaw();
foreach (@dblink_entry) { $_->set_text(""); }
return;
}
my @dblinks = $seq[$current]->annotation->each_DBLink;
# reset clist if rows are different to links
if ($dblink_clist->rows != @dblinks) {
$dblink_clist->clear();
foreach (@dblinks) { $dblink_clist->append("",""); }
}
# redraw references
for(my $i=0;$i<@dblinks;$i++)
{
$dblink_clist->set_text($i,0,$dblinks[$i]->primary_id);
$dblink_clist->set_text($i,1,$dblinks[$i]->database);
}
# redraw text widgets
foreach (@dblink_entry) { $_->set_text(""); }
if (@dblinks)
{
$dblink_entry[0]->set_text($dblinks[$current_dblink]->primary_id);
$dblink_entry[1]->set_text($dblinks[$current_dblink]->optional_id);
$dblink_entry[2]->set_text($dblinks[$current_dblink]->database);
$dblink_entry[3]->set_text($dblinks[$current_dblink]->comment);
}
$dblink_clist->moveto($current_dblink,0,0.3,0.0)
if ($dblink_clist->row_is_visible($current_dblink) ne 'full');
$dblink_clist->signal_handler_block($dblink_handler_id);
$dblink_clist->select_row($current_dblink,0);
$dblink_clist->signal_handler_unblock($dblink_handler_id);
Gtk::CList::set_focus_row($dblink_clist,$current_dblink);
$dblink_clist->thaw();
}
sub init_reference_window
{
$current_ref = 0;
$ref_window = new Gtk::Dialog();
$ref_window->set_default_size(620,500);
$ref_window->set_policy($true,$true,$false);
$ref_window->set_title("References");
$ref_window->border_width(5);
# Create a scrolled window to pack the CList widget into
my $scrolled_window = new Gtk::ScrolledWindow( undef, undef );
$ref_window->vbox->pack_start( $scrolled_window, $true, $true, 0 );
$scrolled_window->set_policy( 'automatic', 'always' );
# Create the CList. For this example we use 2 columns
$ref_clist = new_with_titles Gtk::CList( "Medline","Title","Authors" );
examples/tk/gsequence.pl view on Meta::CPAN
# text entries
$ref_entry[4] = new Gtk::Entry();
$frame = new Gtk::Frame("Medline");
$frame->add($ref_entry[4]);
$hbox->pack_start( $frame, $false, $false, 0);
# $ref_entry[5] = new Gtk::Entry();
# $frame = new Gtk::Frame("Start");
# $frame->add($ref_entry[5]);
# $hbox->pack_start( $frame, $false, $false, 0);
$ref_entry[5] = new Gtk::Entry();
$frame = new Gtk::Frame("Reference Position");
$frame->add($ref_entry[5]);
$hbox->pack_end( $frame, $true, $true, 0);
$ref_window->vbox->pack_start( $hbox, $false, $false, 5);
$bbox = new Gtk::HButtonBox();
$bbox->set_layout("end");
$button = new Gtk::Button( "Close" );
$bbox->add( $button );
$button->signal_connect("clicked",
# close button handler
sub{ $ref_window->hide();
&store_current_reference;
});
$ref_window->action_area->pack_start( $bbox, $true, $true, 0 );
$ref_window->signal_connect_after( "delete_event",
# window delete handler
sub{ $ref_window->hide();
&store_current_reference;
return &Gtk::true;
});
}
sub store_current_reference
{
if ((defined($seq[$current])) && ($seq[$current]->annotation->each_Reference))
{
(($seq[$current]->annotation->each_Reference)[$current_ref])->
title($ref_entry[0]->get_chars(0,-1) );
(($seq[$current]->annotation->each_Reference)[$current_ref])->
authors($ref_entry[1]->get_chars(0,-1) );
(($seq[$current]->annotation->each_Reference)[$current_ref])->
comment($ref_entry[2]->get_chars(0,-1) );
(($seq[$current]->annotation->each_Reference)[$current_ref])->
location($ref_entry[3]->get_chars(0,-1) );
(($seq[$current]->annotation->each_Reference)[$current_ref])->
medline($ref_entry[4]->get_chars(0,-1) );
# (($seq[$current]->annotation->each_Reference)[$current_ref])->
# start($ref_entry[5]->get_chars(0,-1) );
(($seq[$current]->annotation->each_Reference)[$current_ref])->
rp($ref_entry[5]->get_chars(0,-1) );
}
}
sub update_reference_window
{
my ($show_me) = @_;
$ref_window->show_all() if (defined($show_me));
$ref_clist->freeze();
if (!defined($seq[$current]))
{
$ref_clist->clear();
$ref_clist->thaw();
foreach (@ref_entry) { $_->set_text(""); }
return;
}
my @refs = $seq[$current]->annotation->each_Reference;
# reset clist if rows are different to references
if ($ref_clist->rows != @refs) {
$ref_clist->clear();
foreach (@refs) { $ref_clist->append("","",""); }
}
# redraw references
for(my $i=0;$i<@refs;$i++)
{
$ref_clist->set_text($i,0,$refs[$i]->medline)
if ($refs[$i]->medline);
$ref_clist->set_text($i,1,$refs[$i]->title)
if ($refs[$i]->title);
$ref_clist->set_text($i,2,$refs[$i]->authors)
if ($refs[$i]->authors);
}
# redraw text widgets
foreach (@ref_entry) { $_->set_text(""); }
if (@refs) {
$ref_entry[0]->set_text($refs[$current_ref]->title);
$ref_entry[1]->set_text($refs[$current_ref]->authors);
$ref_entry[2]->set_text($refs[$current_ref]->comment);
$ref_entry[3]->set_text($refs[$current_ref]->location);
$ref_entry[4]->set_text($refs[$current_ref]->medline);
# $ref_entry[5]->set_text($refs[$current_ref]->start);
$ref_entry[5]->set_text($refs[$current_ref]->rp);
}
$ref_clist->moveto($current_ref,0,0.3,0.0)
if ($ref_clist->row_is_visible($current_ref) ne 'full');
$ref_clist->signal_handler_block($ref_handler_id);
$ref_clist->select_row($current_ref,0);
$ref_clist->signal_handler_unblock($ref_handler_id);
Gtk::CList::set_focus_row($ref_clist,$current_ref);
$ref_clist->thaw();
}
sub init_about_dialog {
my ($window,$bg,$tbox,$vbox,$hbox,$sep,$butbox,$button,$pixmap);
$about_dialog = new Gtk::Window("dialog");
$about_dialog->set_title("About gSequence");
$about_dialog->signal_connect_after("destroy" =>
sub { $about_dialog->hide;
return &Gtk::true; });
$about_dialog->set_default_size('350','350');
$about_dialog->set_policy(1,1,0);
$window = $about_dialog->window;
examples/tk/gsequence.pl view on Meta::CPAN
$subtree->append( $item_new );
$item_new->show();
if ( $subfeature->sub_SeqFeature )
{
$new_subtree = new Gtk::Tree();
$item_new->set_subtree( $new_subtree );
$item_new->signal_connect( 'expand',
\&expand_feature_tree,
$new_subtree );
$item_new->signal_connect( 'collapse', \&collapse_feature_tree );
}
$item_new->expand();
}
}
# Callback for collapsing tree
sub collapse_feature_tree
{
my ( $item ) = @_;
my $subtree = new Gtk::Tree();
$item->remove_subtree();
$item->set_subtree( $subtree );
$item->signal_connect( 'expand', \&expand_feature_tree, $subtree );
}
sub store_current_feature
{
if ((defined($seq[$current])) && ($seq[$current]->top_SeqFeatures) && ($current_feature_item))
{
my $current_feature = $current_feature_item->get_user_data();
$current_feature->primary_tag( $feature_entry[0]->get_chars(0,-1) );
$current_feature->source_tag( $feature_entry[1]->get_chars(0,-1) );
if ($current_feature->has_tag("description"))
{
$current_feature->remove_tag("description");
$current_feature->add_tag_value("description",
$feature_entry[2]->get_chars(0,-1));
}
$current_feature->start($feature_spinner[0]->get_value_as_int());
$current_feature->end($feature_spinner[1]->get_value_as_int());
# set tree item
($current_feature_item->children)[0]->set($current_feature->primary_tag);
}
}
sub select_feature_item
{
my ($widget) = @_;
&store_current_feature;
$current_feature_item->deselect()
if $current_feature_item;
$current_feature_item = $widget;
&update_feature_paned2;
}
sub update_feature_paned2
{
$feature_entry[0]->set_text("");
$feature_entry[1]->set_text("");
$feature_entry[2]->set_text("");
return if (!defined($seq[$current])||(!$current_feature_item));
my $current_feature = $current_feature_item->get_user_data();
$feature_entry[0]->set_text($current_feature->primary_tag);
$feature_entry[1]->set_text($current_feature->source_tag)
if (defined($current_feature->source_tag));
$feature_entry[2]->set_text(($current_feature->each_tag_value("description"))[0])
if ($current_feature->has_tag("description"));
my $adj = new Gtk::Adjustment($current_feature->start,
0,
$seq[$current]->length-1,
1,
1,
0
);
$feature_spinner[0]->set_adjustment($adj);
$feature_spinner[0]->set_value($current_feature->start);
$feature_spinner[0]->show_all();
$adj = new Gtk::Adjustment($current_feature->end,
0,
$seq[$current]->length-1,
1,
1,
0
);
$feature_spinner[1]->set_adjustment($adj);
$feature_spinner[1]->set_value($current_feature->end);
$feature_spinner[1]->show_all();
}
sub select_feature_region
{
$seq_edit[$current]->freeze;
$seq_edit[$current]->select_region($feature_spinner[0]->get_value_as_int(),
$feature_spinner[1]->get_value_as_int()+1);
$seq_edit[$current]->thaw;
}
sub update_feature_window
{
my ($show_me) = @_;
$feature_window->show_all() if (defined($show_me));
$feature_tree->clear_items(0,-1);
if (!defined($seq[$current]))
{
&update_feature_paned2;
return;
}
my ($item_new,$new_subtree);
foreach ($seq[$current]->top_SeqFeatures)
{
$item_new = new_with_label Gtk::TreeItem( $_->primary_tag );
$item_new->set_user_data( $_ );
$item_new->signal_connect( 'select', \&select_feature_item );
$feature_tree->append( $item_new );
if ( $_->sub_SeqFeature )
{
$new_subtree = new Gtk::Tree();
$item_new->set_subtree( $new_subtree );
$item_new->signal_connect( 'expand',
\&expand_feature_tree,
$new_subtree );
$item_new->signal_connect( 'collapse', \&collapse_feature_tree );
}
$item_new->expand();
}
$feature_tree->select_item($current_feature_item)
if $current_feature_item;
$feature_tree->show_all();
&update_feature_paned2;
}
sub store_prefs
{
}
sub update_pref_window
{
$pref_window->show_all();
}
sub init_pref_window
{
$pref_window = new Gtk::Dialog();
$pref_window->set_default_size(500,400);
$pref_window->set_policy($true,$true,$false);
$pref_window->border_width( 5 );
# Create a new notebook, place the position of the tabs
my $notebook = new Gtk::Notebook();
$pref_window->vbox->pack_start( $notebook, $true, $true, 0);
$notebook->set_tab_pos( 'top' );
my $main_vbox = new Gtk::VBox($false,10);
my $label = new Gtk::Label( "Import Options" );
my $frame = new Gtk::Frame("Flat File Indexes");
my $vbox = new Gtk::VBox($false,10);
$frame->add($vbox);
$main_vbox->pack_start($frame,$false,$false,10);
$notebook->append_page( $main_vbox, $label );
my $hbox = new Gtk::HBox($false,0);
$pref_entry[0] = new Gtk::Entry();
$frame = new Gtk::Frame("Indexes Directory");
$frame->add($pref_entry[0]);
$hbox->pack_start( $frame, $true, $false, 0);
$pref_entry[1] = new Gtk::Entry();
$frame = new Gtk::Frame("Index Type");
$frame->add($pref_entry[1]);
$hbox->pack_start( $frame, $false, $false, 0);
$vbox->pack_start( $hbox, $false, $false, 0);
$pref_entry[2] = new Gtk::Entry();
$frame = new Gtk::Frame("Fasta Index Name");
$frame->add($pref_entry[2]);
$vbox->pack_start( $frame, $false, $false, 0);
$pref_entry[3] = new Gtk::Entry();
$frame = new Gtk::Frame("SwissProt Index Name");
$frame->add($pref_entry[3]);
$vbox->pack_start( $frame, $false, $false, 0);
$pref_entry[4] = new Gtk::Entry();
$frame = new Gtk::Frame("SwissPfam Index Name");
$frame->add($pref_entry[4]);
$vbox->pack_start( $frame, $false, $false, 0);
$frame = new Gtk::Frame("Remote DBs");
$hbox = new Gtk::HBox($false,10);
$frame->add($hbox);
$main_vbox->pack_start($frame,$false,$false,10);
( run in 0.571 second using v1.01-cache-2.11-cpan-39bf76dae61 )