Bio-MCPrimers

 view release on metacpan or  search on metacpan

mcprimers_gui.pl  view on Meta::CPAN

        #print STDERR "$cmd\n";
        
        my $pid = open3(\*WTRFH, \*RDRFH, \*RDRFH, $cmd);   
        close(WTRFH);
        
        $mw->update;
        
        my $m;      
        my $line  = <RDRFH>;
        
RESULTS:        
        while (defined $line) {
            
            chop($line);
            if ($^O =~ /^MSW/) { chop $line; }
            push @result, "$line\n";
            
            if ($line =~ /Sorry/   or 
                $line =~ /Error/   or 
                $line =~ /Problem/ or 
                $line =~ /not available/) { 
                        
                $m = $line;
                last RESULTS;
            }
            if ($line =~ /.*Solution # (\d*)/) {
                $m = "Done - $1 solution(s) found";
            }
            $line  = <RDRFH>;
        }
        close RDRFH;
        
        write_text(@result);
        $text_message->configure(-text=>$m);
        $mw->update;
        
    }
    else {
        $text_message->configure(-text=>$initial_text);
    }
}

###################################################################

sub load_vector_file {
        
    &clear_text();
    if ($vector_loaded == 1) {
    
        # can't figure out how to properly destroy old widgets
        # ->destroy isn't good enough
        $text_message->configure(-text=>"Sorry - can\'t reload vector file");
        return;
    }
    
    $text_message->configure(-text=>"Select vector file");
    $vector_loaded = 0;
    
    my $status;
    
    # popup get file name
    my $old_name = $vector_name;
    $vector_name = $filedialog->Show;
    if (defined $vector_name and $vector_name ne '') { 
    
        # details of the plasmid used as a vector
        use Bio::Data::Plasmid::CloningVector;  
        $status = 
           Bio::Data::Plasmid::CloningVector::cloning_vector_data
             ($vector_name, \@re, \%re_name, \@ecut_loc, \@vcut_loc);
    }
    else {
        $status = 0;
    }
    
    if ($status == 0) {
            
        my $m = '';
        if (defined $vector_name) { 
            $m = "Error: Can\'t load \'$vector_name\'";
        }
        else {
            $m = 'Load vector cancelled';
        }
        $text_message->configure(-text=>$m);
        
        $vector_name = $old_name;
    }
    else {
        foreach (@re) { 
            {
                my $f = 1;
                push @sites, \$f;
                push @site_cb, $vec_frame->Checkbutton
                ( -text     => $re_name{$_},
                  -variable => \$f,
                  -font => 'SmallItem')->pack(-side   =>'top',
                                              -anchor => 'nw',  
                                              -padx   => 5);
            }
        }       

        $vector_loaded = 1;

        $vector_name =~ /.*\/(.+)/;
        my $short_name = $1;

        $text_message->configure(-text=>"Vector file $short_name loaded");
        if ($vector_loaded and $seq_loaded) {
            $sub_button->configure(-bg=>'light green');     
        }
        $short_name =~ /(.+)\..+/;
        $vec_message->configure(-text  => "\n$1 cloning sites",); 
    }
}

###################################################################

sub load_seq_file {
        
    $text_message->configure(-text=>"Select FASTA file");
    my $status;
    my $line;
    my $seq_fh;
    @seq = ();
    &clear_text();  
    
    # popup get file name
    my $old_name = $seq_name;
    $seq_name = $filedialog->Show;
    if (defined $seq_name and $seq_name ne '') { 
    
        # read sequence file
        open $seq_fh, $seq_name;
        my $t = <$seq_fh>;
        while (defined $t) {
            push @seq, $t;
            $t = <$seq_fh>;
        }
        $status = 1;    
    }
    else {
        $status = 0;
    }
    
    if ($status == 0) {
        my $m = '';
        if (defined $seq_name) { 
            $m = "Error: Can\'t load \'$seq_name\'";
        }
        else {
            $m = 'Load sequence cancelled';
        }
        $text_message->configure(-text=>$m);

        $seq_name = $old_name;
    }
    else {
        write_text(@seq);       
        $seq_loaded = 1;

        $seq_name =~ /.*\/(.+)/;
        my $short_name = $1;

        $text_message->configure(-text=>"FASTA file $short_name loaded");
        $fname_message->configure(-text=>"FASTA: $short_name");
    }        

    if ($vector_loaded and $seq_loaded) {
        $sub_button->configure(-bg=>'light green');
    }   
}

####################################################################

sub clear_text {

    $seq_text->selectAll; 
    $seq_text->deleteSelected;
}

####################################################################

sub write_text {

    @text = @_;      

    &clear_text();



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