File Coverage

lib/Kephra/App/MenuBar.pm
Criterion Covered Total %
statement 6 29 20.6
branch 0 10 0.0
condition n/a
subroutine 2 8 25.0
pod 0 4 0.0
total 8 51 15.6


line stmt bran cond sub pod time code
1             package Kephra::App::MenuBar;
2             our $VERSION = 0.08;
3              
4 1     1   1102 use strict;
  1         2  
  1         36  
5 1     1   5 use warnings;
  1         3  
  1         433  
6              
7             my $bar;
8 0 0   0     sub _ref { $bar = ref $_[0] eq 'Wx::MenuBar' ? $_[0] : $bar }
9 0     0     sub _config { Kephra::API::settings()->{app}{menubar} }
10              
11             sub create {
12 0     0 0   my $menubar_def = Kephra::Config::File::load_from_node_data( _config() );
13 0 0         unless ($menubar_def) {
14 0           $menubar_def = Kephra::Config::Default::mainmenu();
15             }
16 0           my $menubar = Wx::MenuBar->new();
17 0           my $m18n = Kephra::Config::Localisation::strings()->{app}{menu};
18 0           my ($pos, $menu_name);
19 0           for my $menu_def ( @$menubar_def ){
20 0           for my $menu_id (keys %$menu_def){
21             # removing the menu command if there is one
22 0           $pos = index $menu_id, ' ';
23 0 0         if ($pos > -1){
24 0 0         if ('menu' eq substr $menu_id, 0, $pos ){
25 0           $menu_name = substr ($menu_id, $pos+1);
26             # ignoring menu structure when command other that menu or blank
27 0           } else { next }
28             } else {
29 0           $menu_name = $menu_id;
30             }
31 0           $menubar->Append(
32             Kephra::Menu::create_static( $menu_name, $menu_def->{$menu_id}),
33             $m18n->{label}{$menu_name}
34             );
35             }
36             }
37 0           _ref($menubar);
38 0           show();
39             }
40              
41 0     0 0   sub get_visibility { _config()->{visible} }
42 0     0 0   sub switch_visibility { _config()->{visible} ^= 1; show(); }
  0            
43             sub show {
44 0 0   0 0   Kephra::App::Window::_ref()->SetMenuBar( get_visibility() ? _ref() : undef );
45             }
46              
47             1;