use Renard::Incunabula::Common::Setup;
package Renard::Curie::Component::MainWindow::Role::MenuBar;
# ABSTRACT: Role for menu bar
$Renard::Curie::Component::MainWindow::Role::MenuBar::VERSION = '0.005';
use Moo::Role;

use Renard::Curie::Component::MenuBar;
use Renard::Curie::Component::FileChooser;
use Renard::Incunabula::Common::Types qw(InstanceOf);
use Renard::Incunabula::Document::Types qw(DocumentModel);
use Renard::Curie::Component::DocumentPropertiesWindow;

use Glib 'TRUE', 'FALSE';

has menu_bar => (
	is => 'ro',
	required => 1,
	isa => InstanceOf['Renard::Curie::Component::MenuBar'],
);


before setup_window => method() {
	$self->builder->get_object('application-vbox')
		->pack_start( $self->menu_bar, FALSE, TRUE, 0 );
};

after open_document => method( (DocumentModel) $doc ) {
	if( $doc->can('filename_uri') ) {
		my $rm_added = $self->menu_bar->recent_manager->add_item( $doc->filename_uri );
	}
};

callback on_open_file_dialog_cb( $event, $self ) {
	my $file_chooser = Renard::Curie::Component::FileChooser->new( main_window => $self );
	my $dialog = $file_chooser->get_open_file_dialog_with_filters;

	my $result = $dialog->run;

	if ( $result eq 'accept' ) {
		my $filename = $dialog->get_filename;
		$dialog->destroy;
		$self->view_manager->open_pdf_document($filename);
	} else {
		$dialog->destroy;
	}
}

callback on_document_properties_dialog_cb( $event, $self ) {
	Renard::Curie::Component::DocumentPropertiesWindow->new(
		document => $self->view_manager->current_document
	)->show_all;
}


1;

__END__

=pod

=encoding UTF-8

=head1 NAME

Renard::Curie::Component::MainWindow::Role::MenuBar - Role for menu bar

=head1 VERSION

version 0.005

=head1 ATTRIBUTES

=head2 menu_bar

A L<Renard::Curie::Component::MenuBar> for the application's menu-bar.

=head1 CALLBACKS

=head2 on_open_file_dialog_cb

  callback on_open_file_dialog_cb( $event, $self )

Callback that opens a L<Renard::Curie::Component::FileChooser> component.

=head2 on_document_properties_dialog_cb

  callback on_document_properties_dialog_cb( $event, $self )

Callback that opens a L<Renard::Curie::Component::DocumentPropertiesWindow>
component for the current document.

=head1 AUTHOR

Project Renard

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Project Renard.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut