Ignore:
Timestamp:
02/07/10 07:34:37 (2 years ago)
Author:
azawawi
Message:

Back to using RichTextCtrl? for highlighting matches instead of HtmlWindow? (we resolved its issue on Linux)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Padre/lib/Padre/Wx/Dialog/RegexEditor.pm

    r10593 r10594  
    99use Padre::Wx::Icon            (); 
    1010use Padre::Wx::Role::MainChild (); 
    11 use Padre::Wx::HtmlWindow      (); 
    1211 
    1312# RichTextCtrl 
     
    171170    # Matched readonly text field 
    172171    my $matched_label = Wx::StaticText->new( $self, -1, Wx::gettext('&Matched text:') ); 
    173     $self->{matched_text} = Padre::Wx::HtmlWindow->new( 
    174         $self, 
    175         -1, 
    176         Wx::wxDefaultPosition, 
    177         Wx::wxDefaultSize, 
    178         Wx::wxBORDER_STATIC 
     172    $self->{matched_text} = Wx::RichTextCtrl->new( 
     173        $self, -1, '', Wx::wxDefaultPosition, Wx::wxDefaultSize, 
     174        Wx::wxRE_MULTILINE | Wx::wxRE_READONLY | Wx::wxWANTS_CHARS # Otherwise arrows will not work on win32 
    179175    ); 
    180176 
    181177    # Result from replace text field 
    182178    my $result_label = Wx::StaticText->new( $self, -1, Wx::gettext('&Result from replace:') ); 
    183     $self->{result_text} = Padre::Wx::HtmlWindow->new( 
    184         $self, 
    185         -1, 
    186         Wx::wxDefaultPosition, 
    187         Wx::wxDefaultSize, 
    188         Wx::wxBORDER_STATIC 
     179    $self->{result_text} = Wx::RichTextCtrl->new( 
     180        $self, -1, '', Wx::wxDefaultPosition, Wx::wxDefaultSize, 
     181        Wx::wxRE_MULTILINE | Wx::wxRE_READONLY | Wx::wxWANTS_CHARS # Otherwise arrows will not work on win32 
    189182    ); 
    190183 
     
    457450    my $xism = "$start-$end"; 
    458451 
    459     my $matched_html = ''; 
    460     my $result_html  = ''; 
    461  
     452    $self->{matched_text}->Clear; 
     453    $self->{result_text}->Clear; 
     454     
     455    $self->{matched_text}->BeginTextColour(Wx::wxBLACK); 
     456     
    462457    my $match; 
    463458    my $match_start; 
     
    481476    }; 
    482477    if ($@) { 
    483         $matched_html .= '<font color="red">' . "Match failure in $regex:  $@" . '</font>'; 
    484         $self->{matched_text}->SetPage($matched_html); 
     478        $self->{matched_text}->BeginTextColour(Wx::wxRED); 
     479        $self->{matched_text}->SetValue(sprintf(Wx::gettext("Match failure in %s:  %s"), $regex, $@)); 
     480        $self->{matched_text}->EndTextColour; 
    485481        return; 
    486482    } 
    487483 
    488484    if ($warning) { 
    489         $matched_html .= '<font color="red">' . "Match warning in $regex:  $warning" . '</font>'; 
    490         $self->{matched_text}->SetPage($matched_html); 
     485        $self->{matched_text}->BeginTextColour(Wx::wxRED); 
     486        $self->{matched_text}->SetValue(sprintf(Wx::gettext("Match warning in %s:  %s"), $regex, $warning)); 
     487        $self->{matched_text}->EndTextColour; 
    491488        return; 
    492489    } 
     
    497494        for my $char (@chars) { 
    498495            if ( $pos == $match_start ) { 
    499                 $matched_html .= '<font color="red"><u>'; 
     496                $self->{matched_text}->BeginTextColour(Wx::wxRED); 
    500497            } elsif ( $pos == $match_end ) { 
    501                 $matched_html .= '</u></font>'; 
     498                $self->{matched_text}->EndTextColour; 
    502499            } 
    503             $matched_html .= $char; 
     500            $self->{matched_text}->AppendText($char); 
    504501            $pos++; 
    505502        } 
    506503    } else { 
    507         $matched_html = Wx::gettext("No match"); 
     504        $self->{matched_text}->BeginTextColour(Wx::wxRED); 
     505        $self->{matched_text}->SetValue(Wx::gettext("No match")); 
     506        $self->{matched_text}->EndTextColour; 
    508507    } 
    509508 
    510509    eval { $result_text =~ s{$regex}{$replace}; }; 
    511510    if ($@) { 
    512         $result_html .= '<font color="red">' . "Replace failure in $regex:  $@" . '</font>'; 
     511        $self->{result_text}->BeginTextColour(Wx::wxRED); 
     512        $self->{result_text}->AppendText("Replace failure in $regex:  $@"); 
     513        $self->{result_text}->EndTextColour; 
    513514        return; 
    514515    } 
    515516 
    516517    if ( defined $result_text ) { 
    517         $result_html .= $result_text; 
    518     } 
     518        $self->{result_text}->SetValue($result_text); 
     519    } 
     520     
     521    $self->{matched_text}->EndTextColour; 
    519522 
    520523    require PPIx::Regexp; 
    521524    my $regexp = PPIx::Regexp->new("/$regex/"); 
    522525    $self->{description_text}->SetValue( $self->_dump_regex($regexp) ); 
    523  
    524     $self->{matched_text}->SetPage($matched_html); 
    525     $self->{result_text}->SetPage($result_html); 
    526526 
    527527    #   $self->{regex}->Clear; 
Note: See TracChangeset for help on using the changeset viewer.