package Kephra::App::MenuBar;
our $VERSION = 0.08;
use strict;
use warnings;
my $bar;
sub _ref { $bar = ref $_[0] eq 'Wx::MenuBar' ? $_[0] : $bar }
sub _config { Kephra::API::settings()->{app}{menubar} }
sub create {
my $menubar_def = Kephra::Config::File::load_from_node_data( _config() );
unless ($menubar_def) {
$menubar_def = Kephra::Config::Default::mainmenu();
}
my $menubar = Wx::MenuBar->new();
my $m18n = Kephra::Config::Localisation::strings()->{app}{menu};
my ($pos, $menu_name);
for my $menu_def ( @$menubar_def ){
for my $menu_id (keys %$menu_def){
# removing the menu command if there is one
$pos = index $menu_id, ' ';
if ($pos > -1){
if ('menu' eq substr $menu_id, 0, $pos ){
$menu_name = substr ($menu_id, $pos+1);
# ignoring menu structure when command other that menu or blank
} else { next }
} else {
$menu_name = $menu_id;
}
$menubar->Append(
Kephra::Menu::create_static( $menu_name, $menu_def->{$menu_id}),
$m18n->{label}{$menu_name}
);
}
}
_ref($menubar);
show();
}
sub get_visibility { _config()->{visible} }
sub switch_visibility { _config()->{visible} ^= 1; show(); }
sub show {
Kephra::App::Window::_ref()->SetMenuBar( get_visibility() ? _ref() : undef );
}
1;