56
my $d = $self->{_common}->get_gettext;
57
my $window = $self->{_common}->get_mainwindow;
58
my $shutter_root = $self->{_common}->get_root;
55
my $d = $self->{_common}->get_gettext;
56
my $shutter_root = $self->{_common}->get_root;
60
58
my $accel_group = Gtk2::AccelGroup->new;
61
$window->add_accel_group($accel_group);
64
my $icontheme = $self->{_common}->get_theme;
59
$self->{_common}->get_mainwindow->add_accel_group($accel_group);
66
62
$self->{_menubar} = Gtk2::MenuBar->new();
65
$self->{_menuitem_file} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_File') );
66
$self->{_menuitem_file}->set_submenu( $self->fct_ret_file_menu( $accel_group, $d, $shutter_root ) );
67
$self->{_menubar}->append( $self->{_menuitem_file} );
70
$self->{_menuitem_edit} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_Edit') );
71
$self->{_menuitem_edit}->set_submenu( $self->fct_ret_edit_menu( $accel_group, $d, $shutter_root ) );
72
$self->{_menubar}->append( $self->{_menuitem_edit} );
75
$self->{_menuitem_view} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_View') );
76
$self->{_menuitem_view}->set_submenu( $self->fct_ret_view_menu( $accel_group, $d, $shutter_root ) );
77
$self->{_menubar}->append( $self->{_menuitem_view} );
80
$self->{_menuitem_actions} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_Screenshot') );
81
$self->{_menuitem_actions}->set_submenu( $self->fct_ret_actions_menu( $accel_group, $d, $shutter_root ) );
82
$self->{_menubar}->append( $self->{_menuitem_actions} );
85
$self->{_menuitem_session} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_Go') );
86
$self->{_menuitem_session}->set_submenu( $self->fct_ret_session_menu( $accel_group, $d, $shutter_root ) );
87
$self->{_menubar}->append( $self->{_menuitem_session} );
90
$self->{_menuitem_help} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_Help') );
91
$self->{_menuitem_help}->set_submenu( $self->fct_ret_help_menu( $accel_group, $d, $shutter_root ) );
92
$self->{_menubar}->append( $self->{_menuitem_help} );
94
#we provide a larger (more actions) menuitem actions as well
95
#this will not be added to any menu entries
96
$self->fct_ret_actions_menu_large( $accel_group, $d, $shutter_root );
98
return $self->{_menubar};
101
sub fct_ret_file_menu {
103
my $accel_group = shift;
105
my $shutter_root = shift;
108
my $icontheme = $self->{_common}->get_theme;
69
110
$self->{_menu_file} = Gtk2::Menu->new();
70
$self->{_menuitem_file} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_File') );
72
112
$self->{_menuitem_new} = Gtk2::ImageMenuItem->new_from_stock('gtk-new');
73
113
$self->{_menuitem_new}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Control>N'), qw/visible/ );
99
141
$self->{_menuitem_pagesetup}->set_image(
100
142
Gtk2::Image->new_from_icon_name( 'document-page-setup', 'menu' )
144
$self->{_menuitem_pagesetup}->set_sensitive(FALSE);
102
145
$self->{_menu_file}->append( $self->{_menuitem_pagesetup} );
104
$self->{_menuitem_print} = Gtk2::ImageMenuItem->new_from_stock('gtk-print');
147
$self->{_menuitem_print} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('_Print...') );
148
$self->{_menuitem_print}->set_image( Gtk2::Image->new_from_stock( 'gtk-print', 'menu' ) );
105
149
$self->{_menuitem_print}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Control>P'), qw/visible/ );
150
$self->{_menuitem_print}->set_sensitive(FALSE);
106
151
$self->{_menu_file}->append( $self->{_menuitem_print} );
108
153
$self->{_menu_file}->append( Gtk2::SeparatorMenuItem->new );
155
$self->{_menuitem_email} = Gtk2::ImageMenuItem->new($d->get('Send by Email...'));
156
$self->{_menuitem_email}->set_image(
157
Gtk2::Image->new_from_icon_name( 'gnome-stock-mail-snd', 'menu' )
159
$self->{_menuitem_email}->set_sensitive(FALSE);
160
$self->{_menuitem_email}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Shift><Control>E'), qw/visible/ );
161
$self->{_menu_file}->append( $self->{_menuitem_email} );
163
$self->{_menu_file}->append( Gtk2::SeparatorMenuItem->new );
110
165
$self->{_menuitem_close} = Gtk2::ImageMenuItem->new_from_stock('gtk-close');
111
166
$self->{_menuitem_close}->set_sensitive(FALSE);
112
167
$self->{_menuitem_close}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Control>W'), qw/visible/ );
122
178
$self->{_menuitem_quit} = Gtk2::ImageMenuItem->new_from_stock('gtk-quit');
123
179
$self->{_menuitem_quit}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Control>Q'), qw/visible/ );
124
180
$self->{_menu_file}->append( $self->{_menuitem_quit} );
126
$self->{_menuitem_file}->set_submenu( $self->{_menu_file} );
127
$self->{_menubar}->append( $self->{_menuitem_file} );
182
return $self->{_menu_file};
186
sub fct_ret_edit_menu {
188
my $accel_group = shift;
190
my $shutter_root = shift;
193
my $icontheme = $self->{_common}->get_theme;
132
195
$self->{_menu_edit} = Gtk2::Menu->new();
197
$self->{_menuitem_undo} = Gtk2::ImageMenuItem->new_from_stock('gtk-undo');
198
$self->{_menuitem_undo}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Control>Z'), qw/visible/ );
199
$self->{_menuitem_undo}->set_sensitive(FALSE);
200
$self->{_menu_edit}->append( $self->{_menuitem_undo} );
202
$self->{_menuitem_redo} = Gtk2::ImageMenuItem->new_from_stock('gtk-redo');
203
$self->{_menuitem_redo}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Control>Y'), qw/visible/ );
204
$self->{_menuitem_redo}->set_sensitive(FALSE);
205
$self->{_menu_edit}->append( $self->{_menuitem_redo} );
207
$self->{_menu_edit}->append( Gtk2::SeparatorMenuItem->new );
134
209
$self->{_menuitem_copy} = Gtk2::ImageMenuItem->new_from_stock('gtk-copy');
135
210
$self->{_menuitem_copy}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Control>C'), qw/visible/ );
136
211
$self->{_menuitem_copy}->set_sensitive(FALSE);
165
240
$self->{_menuitem_settings}->add_accelerator( 'activate', $accel_group, $Gtk2::Gdk::Keysyms{P}, qw/mod1-mask/, qw/visible/ );
166
241
$self->{_menu_edit}->append( $self->{_menuitem_settings} );
168
$self->{_menuitem_edit} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_Edit') );
169
$self->{_menuitem_edit}->set_submenu( $self->{_menu_edit} );
170
$self->{_menubar}->append( $self->{_menuitem_edit} );
243
return $self->{_menu_edit};
246
sub fct_ret_view_menu {
248
my $accel_group = shift;
250
my $shutter_root = shift;
253
my $icontheme = $self->{_common}->get_theme;
175
255
$self->{_menu_view} = Gtk2::Menu->new();
177
257
$self->{_menuitem_zoom_in} = Gtk2::ImageMenuItem->new_from_stock('gtk-zoom-in');
203
283
$self->{_menuitem_fullscreen} = Gtk2::CheckMenuItem->new_with_label($self->{_menuitem_fullscreen_image}->get_child->get_text);
204
284
$self->{_menuitem_fullscreen}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('F11'), qw/visible/ );
205
285
$self->{_menu_view}->append( $self->{_menuitem_fullscreen} );
207
$self->{_menuitem_view} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_View') );
208
$self->{_menuitem_view}->set_submenu( $self->{_menu_view} );
209
$self->{_menubar}->append( $self->{_menuitem_view} );
215
$self->{_menuitem_actions} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_Screenshot') );
216
$self->{_menuitem_actions}->set_submenu( $self->fct_ret_actions_menu( $accel_group, $d, $shutter_root ) );
217
$self->{_menubar}->append( $self->{_menuitem_actions} );
287
return $self->{_menu_view};
290
sub fct_ret_session_menu {
292
my $accel_group = shift;
294
my $shutter_root = shift;
297
my $icontheme = $self->{_common}->get_theme;
223
299
$self->{_menu_session} = Gtk2::Menu->new();
225
301
$self->{_menuitem_back} = Gtk2::ImageMenuItem->new_from_stock('gtk-go-back');
239
315
$self->{_menuitem_last} = Gtk2::ImageMenuItem->new_from_stock('gtk-goto-last');
240
316
$self->{_menuitem_last}->add_accelerator( 'activate', $accel_group, $Gtk2::Gdk::Keysyms{End}, qw/mod1-mask/, qw/visible/ );
241
317
$self->{_menu_session}->append( $self->{_menuitem_last} );
243
$self->{_menuitem_session} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_Go') );
244
$self->{_menuitem_session}->set_submenu( $self->{_menu_session} );
245
$self->{_menubar}->append( $self->{_menuitem_session} );
319
return $self->{_menu_session};
322
sub fct_ret_help_menu {
324
my $accel_group = shift;
326
my $shutter_root = shift;
329
my $icontheme = $self->{_common}->get_theme;
251
331
$self->{_menu_help} = Gtk2::Menu->new();
253
$self->{_menuitem_question} = Gtk2::ImageMenuItem->new( $d->get('Get Help Online ...') );
333
$self->{_menuitem_question} = Gtk2::ImageMenuItem->new( $d->get('Get Help Online...') );
254
334
if($icontheme->has_icon('lpi-help')){
255
335
$self->{_menuitem_question}->set_image(
256
336
Gtk2::Image->new_from_icon_name( 'lpi-help', 'menu' )
301
381
$self->{_menuitem_about}->add_accelerator( 'activate', $accel_group, $Gtk2::Gdk::Keysyms{I}, qw/control-mask/, qw/visible/ );
302
382
$self->{_menu_help}->append( $self->{_menuitem_about} );
304
$self->{_menuitem_help} = Gtk2::MenuItem->new_with_mnemonic( $d->get('_Help') );
305
$self->{_menuitem_help}->set_submenu( $self->{_menu_help} );
307
$self->{_menubar}->append( $self->{_menuitem_help} );
309
return $self->{_menubar};
384
return $self->{_menu_help};
312
387
sub fct_ret_new_menu {
314
my $accel_group = shift;
389
my $accel_group = shift;
316
391
my $shutter_root = shift;
319
394
my $icontheme = $self->{_common}->get_theme;
321
$self->{_menu_new} = Gtk2::Menu->new;
396
$self->{_menu_new} = Gtk2::Menu->new;
324
399
$self->{_menuitem_selection} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('_Selection') );
373
448
$self->{_menu_new}->append( $self->{_menuitem_section} );
451
$self->{_menuitem_menu} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('_Menu') );
452
if($icontheme->has_icon('alacarte')){
453
$self->{_menuitem_menu}->set_image( Gtk2::Image->new_from_icon_name( 'alacarte', 'menu' ) );
455
$self->{_menuitem_menu}->set_image(
456
Gtk2::Image->new_from_pixbuf(
457
Gtk2::Gdk::Pixbuf->new_from_file_at_size(
458
"$shutter_root/share/shutter/resources/icons/sel_window_menu.svg",
459
Gtk2::IconSize->lookup('menu')
464
$self->{_menu_new}->append( $self->{_menuitem_menu} );
467
$self->{_menuitem_tooltip} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('_Tooltip') );
468
#~ if($icontheme->has_icon('alacarte')){
469
#~ $self->{_menuitem_tooltip}->set_image( Gtk2::Image->new_from_icon_name( 'alacarte', 'menu' ) );
471
$self->{_menuitem_tooltip}->set_image(
472
Gtk2::Image->new_from_pixbuf(
473
Gtk2::Gdk::Pixbuf->new_from_file_at_size(
474
"$shutter_root/share/shutter/resources/icons/sel_window_tooltip.svg",
475
Gtk2::IconSize->lookup('menu')
480
$self->{_menu_new}->append( $self->{_menuitem_tooltip} );
375
482
$self->{_menu_new}->append( Gtk2::SeparatorMenuItem->new );
427
542
$self->{_menu_actions}->append( Gtk2::SeparatorMenuItem->new );
429
$self->{_menuitem_upload} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('_Upload / Export') );
544
$self->{_menuitem_send} = Gtk2::ImageMenuItem->new($d->get('Send To...'));
545
$self->{_menuitem_send}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Control>S'), qw/visible/ );
546
$self->{_menuitem_send}->set_image(
547
Gtk2::Image->new_from_icon_name( 'document-send', 'menu' )
549
$self->{_menuitem_send}->set_sensitive(FALSE);
550
$self->{_menuitem_send}->set_name('item-send');
551
$self->{_menu_actions}->append( $self->{_menuitem_send} );
553
$self->{_menuitem_upload} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('E_xport...') );
430
554
$self->{_menuitem_upload}->add_accelerator( 'activate', $accel_group, Gtk2::Accelerator->parse('<Control>U'), qw/visible/ ) if $accel_group;
431
555
$self->{_menuitem_upload}->set_image( Gtk2::Image->new_from_stock( 'gtk-network', 'menu' ) );
432
556
$self->{_menuitem_upload}->set_sensitive(FALSE);
592
sub fct_ret_actions_menu_large{
594
my $accel_group = shift;
596
my $shutter_root = shift;
599
my $icontheme = $self->{_common}->get_theme;
601
$self->{_menu_large_actions} = Gtk2::Menu->new();
603
$self->{_menuitem_large_reopen_default} = Gtk2::ImageMenuItem->new_with_mnemonic(
604
sprintf( $d->get('_Open with %s'), ''),
606
$self->{_menuitem_large_reopen_default}->set_image( Gtk2::Image->new_from_stock( 'gtk-open', 'menu' ) );
607
$self->{_menuitem_large_reopen_default}->set_sensitive(FALSE);
608
$self->{_menuitem_large_reopen_default}->set_name('item-large-reopen-default');
609
$self->{_menu_large_actions}->append( $self->{_menuitem_large_reopen_default} );
611
$self->{_menuitem_large_reopen} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('Open wit_h') );
612
$self->{_menuitem_large_reopen}->set_image( Gtk2::Image->new_from_stock( 'gtk-open', 'menu' ) );
613
$self->{_menuitem_large_reopen}->set_sensitive(FALSE);
614
$self->{_menuitem_large_reopen}->set_name('item-large-reopen-list');
615
$self->{_menu_large_actions}->append( $self->{_menuitem_large_reopen} );
617
$self->{_menuitem_large_rename} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('_Rename...') );
618
$self->{_menuitem_large_rename}->set_image( Gtk2::Image->new_from_stock( 'gtk-edit', 'menu' ) );
619
$self->{_menuitem_large_rename}->set_sensitive(FALSE);
620
$self->{_menuitem_large_rename}->set_name('item-large-rename');
621
$self->{_menu_large_actions}->append( $self->{_menuitem_large_rename} );
623
$self->{_menu_large_actions}->append( Gtk2::SeparatorMenuItem->new );
625
$self->{_menuitem_large_send} = Gtk2::ImageMenuItem->new($d->get('Send To...'));
626
$self->{_menuitem_large_send}->set_image(
627
Gtk2::Image->new_from_icon_name( 'document-send', 'menu' )
629
$self->{_menuitem_send}->set_sensitive(FALSE);
630
$self->{_menuitem_send}->set_name('item-large-send');
631
$self->{_menu_large_actions}->append( $self->{_menuitem_large_send} );
633
$self->{_menuitem_large_upload} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('E_xport...') );
634
$self->{_menuitem_large_upload}->set_image( Gtk2::Image->new_from_stock( 'gtk-network', 'menu' ) );
635
$self->{_menuitem_large_upload}->set_sensitive(FALSE);
636
$self->{_menuitem_large_upload}->set_name('item-large-upload');
637
$self->{_menu_large_actions}->append( $self->{_menuitem_large_upload} );
639
$self->{_menu_large_actions}->append( Gtk2::SeparatorMenuItem->new );
641
$self->{_menuitem_large_copy} = Gtk2::ImageMenuItem->new_from_stock('gtk-copy');
642
$self->{_menuitem_large_copy}->set_sensitive(FALSE);
643
$self->{_menuitem_large_copy}->set_name('item-large-copy');
644
$self->{_menu_large_actions}->append( $self->{_menuitem_large_copy} );
646
$self->{_menuitem_large_copy_filename} = Gtk2::ImageMenuItem->new_from_stock('gtk-copy');
647
$self->{_menuitem_large_copy_filename}->get_child->set_text_with_mnemonic( $d->get('Copy _filename') );
648
$self->{_menuitem_large_copy_filename}->set_sensitive(FALSE);
649
$self->{_menuitem_large_copy_filename}->set_name('item-large-copy-filename');
650
$self->{_menu_large_actions}->append( $self->{_menuitem_large_copy_filename} );
652
$self->{_menuitem_large_trash} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('Move to _Trash') );
653
$self->{_menuitem_large_trash}->set_image( Gtk2::Image->new_from_icon_name( 'gnome-stock-trash', 'menu' ) );
654
$self->{_menuitem_large_trash}->set_sensitive(FALSE);
655
$self->{_menuitem_large_trash}->set_name('item-large-trash');
656
$self->{_menu_large_actions}->append( $self->{_menuitem_large_trash} );
658
$self->{_menu_large_actions}->append( Gtk2::SeparatorMenuItem->new );
660
$self->{_menuitem_large_draw} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('_Edit...') );
661
$self->{_menuitem_large_draw}->set_image( Gtk2::Image->new_from_stock( 'gtk-edit', 'menu' ) );
662
if($icontheme->has_icon('applications-graphics')){
663
$self->{_menuitem_large_draw}->set_image( Gtk2::Image->new_from_icon_name( 'applications-graphics', 'menu' ) );
665
$self->{_menuitem_large_draw}->set_image(
666
Gtk2::Image->new_from_pixbuf(
667
Gtk2::Gdk::Pixbuf->new_from_file_at_size( "$shutter_root/share/shutter/resources/icons/draw.svg", Gtk2::IconSize->lookup('menu') )
672
$self->{_menuitem_large_draw}->set_sensitive(FALSE);
673
$self->{_menuitem_large_draw}->set_name('item-large-draw');
674
$self->{_menu_large_actions}->append( $self->{_menuitem_large_draw} );
676
$self->{_menuitem_large_plugin} = Gtk2::ImageMenuItem->new_with_mnemonic( $d->get('Run a _plugin...') );
677
$self->{_menuitem_large_plugin}->set_image( Gtk2::Image->new_from_stock( 'gtk-execute', 'menu' ) );
678
$self->{_menuitem_large_plugin}->set_sensitive(FALSE);
679
$self->{_menuitem_large_plugin}->set_name('item-large-plugin');
680
$self->{_menu_large_actions}->append( $self->{_menuitem_large_plugin} );
682
$self->{_menu_large_actions}->show_all;
684
return $self->{_menu_large_actions};