Changeset 9646


Ignore:
Timestamp:
12/13/09 00:30:47 (2 years ago)
Author:
submersible_toaster
Message:

[Padre-Plugin-Swarm] refactor some parts. add support for 'Run in other editor'

Location:
trunk/Padre-Plugin-Swarm/lib/Padre
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Padre-Plugin-Swarm/lib/Padre/Plugin/Swarm.pm

    r9602 r9646  
    6464    my $self = shift; 
    6565    return $self->plugin_name => [ 
     66            'Run in Other Editor' => sub { $self->run_in_other_editor }, 
    6667        'About' => sub { $self->show_about }, 
    6768    ]; 
     
    8081        my $config = $self->config_read; 
    8182        $self->set_config( $config ); 
     83         
     84#            # Cargo WebGui 
     85#            # workaround Padre bug 
     86#            my %registered_documents = $self->registered_documents; 
     87#            while ( my ( $k, $v ) = each %registered_documents ) { 
     88#            Padre::MimeTypes->add_highlighter_to_mime_type( $k, $v ); 
     89        } 
     90 
    8291        $self->_load_everything; 
    8392    } 
     
    9099} 
    91100 
    92 sub event_on_context_menu { 
    93     my $self     = shift; 
    94     my $document = shift; 
    95     my $editor   = shift; 
    96     my $menu     = shift; 
    97     my $event    = shift; 
    98     my $diff     = $menu->Append( -1, 
    99         Wx::gettext("Swarm diff snippet") 
    100     ); 
    101     Wx::Event::EVT_MENU( 
    102         $editor, 
    103         $diff, 
    104         sub { 
    105             instance()->get_chat->on_diff_snippet; 
    106         }, 
    107     ); 
    108 } 
    109  
    110  
    111  
    112  
     101 
     102#sub registered_documents { 
     103#    'application/x-swarm-document' =>     
     104#        'Padre::Plugin::Swarm::Document', 
     105#} 
     106# 
     107# 
     108#sub editor_enable { 
     109#   my ( $self, $editor, $doc ) = @_; 
     110#   $self->{editor}{ refaddr $editor} = 1;  
     111#   return 1; 
     112#} 
     113# 
     114## Does this really happen ? # cargo from Plugin::Vi 
     115#sub editor_stop { 
     116#   my ( $self, $editor, $doc ) = @_; 
     117#   delete $self->{editor}{ refaddr $editor}; 
     118# 
     119#   return 1; 
     120#} 
     121 
     122# oh noes! 
     123sub run_in_other_editor { 
     124    my $self = shift; 
     125    my $ed = $self->current->editor; 
     126    my $doc = $self->current->document; 
     127    $self->get_chat->tell_service( 
     128        Padre::Swarm::Message->new( 
     129            type => 'runme', 
     130            body => $ed->GetText, 
     131            filename => $doc->filename, 
     132        ) 
     133    ); 
     134     
     135} 
    113136 
    114137##################################################################### 
  • trunk/Padre-Plugin-Swarm/lib/Padre/Wx/Swarm/Chat.pm

    r9628 r9646  
    173173    return unless _INSTANCE( $message , 'Padre::Swarm::Message' ); 
    174174 
    175     if ( $message->type eq 'chat' ) { 
    176         my $user = $message->from || 'unknown'; 
    177         my $content = $message->body; 
    178         return unless defined $content; 
    179         $self->accept_chat($message); 
    180     } 
    181     elsif ( _INSTANCE( $message , 'Padre::Swarm::Message::Diff' ) ) { 
    182                 warn "Got diff -- " if DEBUG; 
    183         $self->on_receive_diff($message); 
    184         return; 
    185     } 
    186     elsif ( $message->type eq 'announce' ) { 
    187         warn "Got announce" if DEBUG; 
    188         $self->accept_announce($message); 
    189     } 
    190     elsif ( $message->type eq 'leave' ) { 
    191         $self->accept_leave( $message ); 
    192     } 
    193     elsif ( $message->type eq 'promote' ) { 
    194         $self->accept_promote( $message ); 
    195     } 
    196     else { 
    197         TRACE("Discarded $message") if DEBUG; 
    198     } 
     175        my $handler = 'accept_' . $message->type; 
     176        if ( $self->can( $handler ) ) { 
     177            eval { 
     178                $self->$handler($message); 
     179            }; 
     180            if ($@) { 
     181                $self->write_user_styled( $message->from,$message->from ); 
     182                $self->write_unstyled(" sent unhandled message "  
     183                    . $message->type . "\n" ); 
     184                     
     185            } 
     186        } 
     187 
    199188} 
    200189 
     
    254243    my $identity = $message->from; 
    255244    $self->write_user_styled( $identity , $identity ); 
    256     $self->write_unstyled( ' has left the swarm.' ); 
     245    $self->write_unstyled( " has left the swarm.\n" ); 
     246     
     247} 
     248 
     249sub accept_runme { 
     250    my ($self,$message) = @_; 
     251    # Ouch.. 
     252    my @result = eval $message->body; 
     253    if ( $@ ) { 
     254        $self->write_user_styled( $message->from , $message->from ); 
     255        $self->write_unstyled( ' ran' . $message->{filename} 
     256            . ' in YOUR editor but failed!! ' . $@ ); 
     257    } 
     258    else { 
     259        $self->write_user_styled( $message->from , $message->from ); 
     260        $self->write_unstyled( ' ran ' . $message->{filename} 
     261            . ' in YOUR editor successfully, returning ', @result 
     262        ); 
     263         
     264    } 
    257265     
    258266} 
     
    334342} 
    335343 
    336 sub on_receive_diff { 
     344sub accept_diff { 
    337345    my ($self,$message) = @_; 
    338346    TRACE("Received diff $message") if DEBUG; 
Note: See TracChangeset for help on using the changeset viewer.