Changeset 2183


Ignore:
Timestamp:
12/23/08 10:31:13 (3 years ago)
Author:
tsee
Message:

refresh plugin menu after enabling/disabling plugins

Location:
trunk/Padre/lib/Padre
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Padre/lib/Padre/PluginManager.pm

    r2143 r2183  
    630630} 
    631631 
    632 # recreate the Plugins menu 
    633 ### TODO - Reimplement this in Padre::Wx::Menu::Plugins 
     632# refresh the Plugins menu 
    634633sub _refresh_plugin_menu { 
    635634    my $self = shift; 
    636     my $main = $self->parent->wx->main_window; 
    637  
    638     # Regenerate the menu 
    639     my $menu    = $main->menu; 
    640     my $submenu = Padre::Wx::Menu::Plugins->new($main); 
    641     my $place   = $menu->{wx}->FindMenu( Wx::gettext("Pl&ugins") ); 
    642  
    643     # Update the menu 
    644     $menu->{wx}->Replace( $place, $submenu->wx, Wx::gettext("Pl&ugins") ); 
    645     $menu->refresh; 
     635     
     636        $self->parent->wx->main_window->menu->plugins->refresh; 
    646637} 
    647638 
  • trunk/Padre/lib/Padre/Wx/Menu/Plugins.pm

    r2053 r2183  
    9898    $self->Append( -1, Wx::gettext('Plugin Tools'), $tools ); 
    9999 
     100    $self->add_plugin_specific_entries(); 
     101 
     102    return $self; 
     103} 
     104 
     105sub add_plugin_specific_entries { 
     106    my $self = shift; 
     107     
    100108    # Get the list of plugins 
    101109    my $manager = Padre->ide->plugin_manager; 
    102110    my $plugins = $manager->plugins; 
    103111    my @plugins = grep { $_ ne 'My' } sort keys %$plugins; 
     112 
     113    my $entries = $self->{plugin_menus} || []; 
     114    $self->remove_plugin_specific_entries() if @$entries; 
    104115 
    105116    # Add the enabled plugins that want a menu 
     
    110121        next unless $plugins->{$name}->{status} eq 'enabled'; 
    111122 
    112         my @menu = $manager->get_menu( $main, $name ); 
     123        my @menu = $manager->get_menu( Padre->ide->wx->main_window, $name ); 
    113124        next unless @menu; 
    114125 
    115126        if ( $need_seperator ) { 
    116             $self->AppendSeparator; 
     127            push @$entries, $self->AppendSeparator; 
    117128            $need_seperator = 0; 
    118129        } 
    119130 
    120         $self->Append( -1, @menu ); 
     131        push @$entries, $self->Append( -1, @menu ); 
    121132        if ( $name eq 'My' ) { 
    122133            $need_seperator = 1; 
    123134        } 
    124135    } 
     136     
     137    $self->{plugin_menus} = $entries; 
     138     
     139    return 1; 
     140} 
    125141 
    126     return $self; 
     142sub remove_plugin_specific_entries { 
     143    my $self = shift; 
     144    my $entries = $self->{plugin_menus} || []; 
     145     
     146    while (@$entries) { 
     147        $self->Destroy(pop @$entries); 
     148    } 
     149    $self->{plugin_menus} = $entries; 
     150    return 1; 
     151} 
     152 
     153sub refresh { 
     154    my $self    = shift; 
     155 
     156    $self->remove_plugin_specific_entries(); 
     157    $self->add_plugin_specific_entries(); 
     158 
     159    return 1; 
    127160} 
    128161 
Note: See TracChangeset for help on using the changeset viewer.