File Coverage

lib/Devel/ebug/Wx/Command/NotebookEdit.pm
Criterion Covered Total %
statement 9 34 26.4
branch 0 10 0.0
condition 0 3 0.0
subroutine 3 8 37.5
pod 0 1 0.0
total 12 56 21.4


line stmt bran cond sub pod time code
1             package Devel::ebug::Wx::Command::NotebookEdit;
2              
3 1     1   1615 use strict;
  1         2  
  1         249  
4 1     1   23 use Devel::ebug::Wx::Plugin qw(:plugin);
  1         4  
  1         411  
5              
6             sub command : Command {
7 0     0 0   my( $class, $wxebug ) = @_;
8              
9 0           return ( 'edit_notebook',
10             { sub => \&_edit_notebook,
11             menu => 'view',
12             update_menu => \&_update_edit_notebook,
13             label => 'Edit notebooks',
14             priority => 300,
15             },
16             );
17 1     1   10 }
  1         3  
  1         15  
18              
19             sub _notebooks {
20 0     0     my( $vm ) = @_;
21              
22 0           my @nbs = sort { $a->description cmp $b->description }
  0            
23             grep $_->isa( 'Devel::ebug::Wx::View::Notebook' ),
24             $vm->active_views_list;
25 0           return @nbs;
26             }
27              
28             sub _valid_views {
29 0     0     my( $vm ) = @_;
30              
31 0           my @views;
32 0           foreach my $view ( $vm->views ) {
33 0 0         next if $vm->is_shown( $view->tag );
34 0 0         next if $view->isa( 'Devel::ebug::Wx::View::Notebook' );
35 0           push @views, $view;
36             }
37              
38 0           return @views;
39             }
40              
41             sub _edit_notebook {
42 0     0     my( $wx ) = @_;
43 0           my $vm = $wx->view_manager_service;
44 0           my @nbs = _notebooks( $vm );
45 0           my $nb_index = Wx::GetSingleChoiceIndex
46             ( 'Choose the notebook you want to add views to',
47             'Choose a notebook', [ map $_->description, @nbs ], $wx );
48 0 0         return if $nb_index < 0;
49 0           my @views = _valid_views( $vm );
50 0           my @chs = Wx::GetMultipleChoices
51             ( 'Choose the views to be added to ' . $nbs[$nb_index]->description ,
52             'Choose views',
53             [ map $_->description, @views ], $wx );
54 0 0         return unless @chs;
55              
56 0           $nbs[$nb_index]->add_view( $views[$_] ) foreach @chs;
57             }
58              
59             sub _update_edit_notebook {
60 0     0     my( $wx, $event ) = @_;
61              
62 0           my $vm = $wx->view_manager_service;
63 0 0 0       $event->Enable( _notebooks( $vm ) && _valid_views( $vm ) ? 1 : 0 );
64             }
65              
66             1;