Changeset 10594

Show
Ignore:
Timestamp:
02/07/10 07:34:37 (5 weeks ago)
Author:
azawawi
Message:

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

Files:
1 modified

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;