Mercurial > mplayer.hg
comparison gui/ui/gtk/gtk_menu.c @ 33556:520fb0f7544c
Rename GUI directory 'mplayer' and some files in it.
The directory 'mplayer' contains the files for the user interface and
has thus been renamed 'ui'.
Inside this directory the following files have been renamed to better
reflect their contents:
mw.c -> main.c
sw.c -> sub.c
pb.c -> playbar.c
gui_common.* -> render.*
play.* -> actions.*
author | ib |
---|---|
date | Sat, 18 Jun 2011 16:03:31 +0000 |
parents | gui/mplayer/gtk/gtk_menu.c@c5a19bbeac2b |
children | 71ec25d1da10 |
comparison
equal
deleted
inserted
replaced
33555:c5a19bbeac2b | 33556:520fb0f7544c |
---|---|
1 /* | |
2 * This file is part of MPlayer. | |
3 * | |
4 * MPlayer is free software; you can redistribute it and/or modify | |
5 * it under the terms of the GNU General Public License as published by | |
6 * the Free Software Foundation; either version 2 of the License, or | |
7 * (at your option) any later version. | |
8 * | |
9 * MPlayer is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License along | |
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
17 */ | |
18 | |
19 #include <stdio.h> | |
20 #include <stdlib.h> | |
21 #include <string.h> | |
22 | |
23 #include "config.h" | |
24 #include "help_mp.h" | |
25 #include "access_mpcontext.h" | |
26 #include "mixer.h" | |
27 #include "mpcommon.h" | |
28 | |
29 #include "gtk_menu.h" | |
30 #include "gui/mplayer/widgets.h" | |
31 #include "gui/mplayer/gmplayer.h" | |
32 #include "gui/app.h" | |
33 | |
34 #include "stream/stream.h" | |
35 #include "libmpdemux/demuxer.h" | |
36 #include "libmpdemux/stheader.h" | |
37 #include "libavutil/avstring.h" | |
38 | |
39 #include "gui/mplayer/pixmaps/ab.xpm" | |
40 #include "gui/mplayer/pixmaps/half.xpm" | |
41 #include "gui/mplayer/pixmaps/normal.xpm" | |
42 #include "gui/mplayer/pixmaps/double.xpm" | |
43 #include "gui/mplayer/pixmaps/fs.xpm" | |
44 #include "gui/mplayer/pixmaps/exit.xpm" | |
45 #include "gui/mplayer/pixmaps/prefs.xpm" | |
46 #include "gui/mplayer/pixmaps/eq.xpm" | |
47 #include "gui/mplayer/pixmaps/pl.xpm" | |
48 #include "gui/mplayer/pixmaps/skin.xpm" | |
49 #include "gui/mplayer/pixmaps/sound.xpm" | |
50 #include "gui/mplayer/pixmaps/open.xpm" | |
51 #include "gui/mplayer/pixmaps/play.xpm" | |
52 #include "gui/mplayer/pixmaps/stop2.xpm" | |
53 #include "gui/mplayer/pixmaps/pause.xpm" | |
54 #include "gui/mplayer/pixmaps/prev.xpm" | |
55 #include "gui/mplayer/pixmaps/next.xpm" | |
56 #include "gui/mplayer/pixmaps/aspect.xpm" | |
57 #include "gui/mplayer/pixmaps/a11.xpm" | |
58 #include "gui/mplayer/pixmaps/a169.xpm" | |
59 #include "gui/mplayer/pixmaps/a235.xpm" | |
60 #include "gui/mplayer/pixmaps/a43.xpm" | |
61 #include "gui/mplayer/pixmaps/file2.xpm" | |
62 #include "gui/mplayer/pixmaps/url.xpm" | |
63 #include "gui/mplayer/pixmaps/sub.xpm" | |
64 #include "gui/mplayer/pixmaps/delsub.xpm" | |
65 #include "gui/mplayer/pixmaps/empty.xpm" | |
66 #include "gui/mplayer/pixmaps/loadeaf.xpm" | |
67 #include "gui/mplayer/pixmaps/title.xpm" | |
68 #ifdef CONFIG_DVDREAD | |
69 #include "gui/mplayer/pixmaps/dvd.xpm" | |
70 #include "gui/mplayer/pixmaps/playdvd.xpm" | |
71 #include "gui/mplayer/pixmaps/chapter.xpm" | |
72 #include "gui/mplayer/pixmaps/dolby.xpm" | |
73 #include "gui/mplayer/pixmaps/tongue.xpm" | |
74 #include "gui/mplayer/pixmaps/tonguebla.xpm" | |
75 #include "gui/mplayer/pixmaps/empty1px.xpm" | |
76 #endif | |
77 #ifdef CONFIG_VCD | |
78 #include "gui/mplayer/pixmaps/vcd.xpm" | |
79 #include "gui/mplayer/pixmaps/playvcd.xpm" | |
80 #endif | |
81 | |
82 static void ActivateMenuItem( int Item ) | |
83 { | |
84 // fprintf( stderr,"[menu] item: %d.%d\n",Item&0xffff,Item>>16 ); | |
85 gtkPopupMenu=Item & 0x0000ffff; | |
86 gtkPopupMenuParam=Item >> 16; | |
87 uiEventHandling( Item & 0x0000ffff,Item >> 16 ); | |
88 } | |
89 | |
90 static GtkWidget * AddMenuCheckItem(GtkWidget *window1, const char * immagine_xpm, GtkWidget* Menu,const char* label, gboolean state, int Number) | |
91 { | |
92 GtkWidget * Label = NULL; | |
93 GtkWidget * Pixmap = NULL; | |
94 GtkWidget * hbox = NULL; | |
95 GtkWidget * Item = NULL; | |
96 | |
97 GdkPixmap *PixmapIcon = NULL; | |
98 GdkColor transparent; | |
99 GdkBitmap *MaskIcon = NULL; | |
100 | |
101 PixmapIcon = gdk_pixmap_create_from_xpm_d (window1->window, &MaskIcon, &transparent,(gchar **)immagine_xpm ); | |
102 Pixmap = gtk_pixmap_new (PixmapIcon, MaskIcon); | |
103 gdk_pixmap_unref (PixmapIcon); | |
104 | |
105 Item=gtk_check_menu_item_new(); | |
106 Label = gtk_label_new (label); | |
107 | |
108 hbox = gtk_hbox_new (FALSE, 8); | |
109 gtk_box_pack_start (GTK_BOX (hbox), Pixmap, FALSE, FALSE, 0); | |
110 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 0); | |
111 gtk_container_add (GTK_CONTAINER (Item), hbox); | |
112 | |
113 gtk_menu_append( GTK_MENU( Menu ),Item ); | |
114 | |
115 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(Item),state); | |
116 gtk_signal_connect_object( GTK_OBJECT(Item),"activate", | |
117 GTK_SIGNAL_FUNC(ActivateMenuItem),(gpointer)Number ); | |
118 gtk_menu_item_right_justify (GTK_MENU_ITEM (Item)); | |
119 gtk_widget_show_all(Item); | |
120 | |
121 return Item; | |
122 } | |
123 GtkWidget * AddMenuItem( GtkWidget *window1, const char * immagine_xpm, GtkWidget * SubMenu,const char * label,int Number ) | |
124 { | |
125 GtkWidget * Label = NULL; | |
126 GtkWidget * Pixmap = NULL; | |
127 GtkWidget * hbox = NULL; | |
128 GtkWidget * Item = NULL; | |
129 GdkPixmap * PixmapIcon = NULL; | |
130 GdkColor transparent; | |
131 GdkBitmap * MaskIcon = NULL; | |
132 | |
133 PixmapIcon = gdk_pixmap_create_from_xpm_d (window1->window, &MaskIcon, &transparent,(gchar **)immagine_xpm ); | |
134 Pixmap = gtk_pixmap_new (PixmapIcon, MaskIcon); | |
135 gdk_pixmap_unref (PixmapIcon); | |
136 | |
137 Item=gtk_menu_item_new(); | |
138 Label = gtk_label_new (label); | |
139 | |
140 hbox = gtk_hbox_new (FALSE, 8); | |
141 gtk_box_pack_start (GTK_BOX (hbox), Pixmap, FALSE, FALSE, 0); | |
142 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 0); | |
143 gtk_container_add (GTK_CONTAINER (Item), hbox); | |
144 | |
145 | |
146 gtk_menu_append( GTK_MENU( SubMenu ),Item ); | |
147 gtk_signal_connect_object( GTK_OBJECT(Item),"activate", | |
148 GTK_SIGNAL_FUNC(ActivateMenuItem),(gpointer)Number ); | |
149 | |
150 gtk_menu_item_right_justify (GTK_MENU_ITEM (Item)); | |
151 gtk_widget_show_all(Item); | |
152 return Item; | |
153 } | |
154 | |
155 | |
156 GtkWidget * AddSubMenu( GtkWidget *window1, const char * immagine_xpm, GtkWidget * Menu,const char * label ) | |
157 { | |
158 GtkWidget * Label = NULL; | |
159 GtkWidget * Pixmap = NULL; | |
160 GtkWidget * hbox = NULL; | |
161 GtkWidget * Item = NULL; | |
162 GtkWidget * SubItem = NULL; | |
163 GdkPixmap * PixmapIcon = NULL; | |
164 GdkColor transparent; | |
165 GdkBitmap * MaskIcon = NULL; | |
166 | |
167 PixmapIcon = gdk_pixmap_create_from_xpm_d (window1->window, &MaskIcon, &transparent,(gchar **)immagine_xpm); | |
168 Pixmap = gtk_pixmap_new (PixmapIcon, MaskIcon); | |
169 gdk_pixmap_unref (PixmapIcon); | |
170 | |
171 SubItem=gtk_menu_item_new(); | |
172 Item=gtk_menu_new(); | |
173 Label = gtk_label_new (label); | |
174 | |
175 hbox = gtk_hbox_new (FALSE, 8); | |
176 gtk_box_pack_start (GTK_BOX (hbox), Pixmap, FALSE, FALSE, 0); | |
177 gtk_box_pack_start (GTK_BOX (hbox), Label, FALSE, FALSE, 0); | |
178 gtk_container_add (GTK_CONTAINER (SubItem), hbox); | |
179 | |
180 gtk_menu_append( GTK_MENU( Menu ),SubItem ); | |
181 gtk_menu_item_set_submenu( GTK_MENU_ITEM( SubItem ),Item ); | |
182 | |
183 gtk_widget_show_all( SubItem ); | |
184 return Item; | |
185 } | |
186 | |
187 GtkWidget * AddSeparator( GtkWidget * Menu ) | |
188 { | |
189 GtkWidget * Item = NULL; | |
190 | |
191 Item=gtk_menu_item_new (); | |
192 gtk_widget_show( Item ); | |
193 gtk_container_add( GTK_CONTAINER( Menu ),Item ); | |
194 gtk_widget_set_sensitive( Item,FALSE ); | |
195 | |
196 return Item; | |
197 } | |
198 | |
199 typedef struct | |
200 { | |
201 int id; | |
202 const char * name; | |
203 } Languages_t; | |
204 | |
205 #define lng( a,b ) ( (int)(a) * 256 + b ) | |
206 static Languages_t Languages[] = | |
207 { | |
208 { lng( 'a','b' ), "Abkhazian" }, | |
209 { lng( 'a','a' ), "Afar" }, | |
210 { lng( 'a','f' ), "Afrikaans" }, | |
211 { lng( 's','q' ), "Albanian" }, | |
212 { lng( 'a','m' ), "Amharic" }, | |
213 { lng( 'a','r' ), "Arabic" }, | |
214 { lng( 'h','y' ), "Armenian" }, | |
215 { lng( 'a','s' ), "Assamese" }, | |
216 { lng( 'a','e' ), "Avestan" }, | |
217 { lng( 'a','y' ), "Aymara" }, | |
218 { lng( 'a','z' ), "Azerbaijani" }, | |
219 { lng( 'b','a' ), "Bashkir" }, | |
220 { lng( 'e','u' ), "Basque" }, | |
221 { lng( 'b','e' ), "Belarusian" }, | |
222 { lng( 'b','n' ), "Bengali" }, | |
223 { lng( 'b','h' ), "Bihari" }, | |
224 { lng( 'b','i' ), "Bislama" }, | |
225 { lng( 'b','s' ), "Bosnian" }, | |
226 { lng( 'b','r' ), "Breton" }, | |
227 { lng( 'b','g' ), "Bulgarian" }, | |
228 { lng( 'm','y' ), "Burmese" }, | |
229 { lng( 'c','a' ), "Catalan" }, | |
230 { lng( 'c','h' ), "Chamorro" }, | |
231 { lng( 'c','e' ), "Chechen" }, | |
232 { lng( 'n','y' ), "Chichewa;Nyanja" }, | |
233 { lng( 'z','h' ), "Chinese" }, | |
234 { lng( 'c','u' ), "ChurchSlavic" }, | |
235 { lng( 'c','v' ), "Chuvash" }, | |
236 { lng( 'k','w' ), "Cornish" }, | |
237 { lng( 'c','o' ), "Corsican" }, | |
238 { lng( 'h','r' ), "Croatian" }, | |
239 { lng( 'c','s' ), "Czech" }, | |
240 { lng( 'd','a' ), "Danish" }, | |
241 { lng( 'n','l' ), "Dutch" }, | |
242 { lng( 'd','z' ), "Dzongkha" }, | |
243 { lng( 'e','n' ), "English" }, | |
244 { lng( 'e','o' ), "Esperanto" }, | |
245 { lng( 'e','t' ), "Estonian" }, | |
246 { lng( 'f','o' ), "Faroese" }, | |
247 { lng( 'f','j' ), "Fijian" }, | |
248 { lng( 'f','i' ), "Finnish" }, | |
249 { lng( 'f','r' ), "French" }, | |
250 { lng( 'f','y' ), "Frisian" }, | |
251 { lng( 'g','d' ), "Gaelic(Scots" }, | |
252 { lng( 'g','l' ), "Gallegan" }, | |
253 { lng( 'k','a' ), "Georgian" }, | |
254 { lng( 'd','e' ), "German" }, | |
255 { lng( 'e','l' ), "Greek" }, | |
256 { lng( 'g','n' ), "Guarani" }, | |
257 { lng( 'g','u' ), "Gujarati" }, | |
258 { lng( 'h','a' ), "Hausa" }, | |
259 { lng( 'h','e' ), "Hebrew" }, | |
260 { lng( 'i','w' ), "Hebrew" }, | |
261 { lng( 'h','z' ), "Herero" }, | |
262 { lng( 'h','i' ), "Hindi" }, | |
263 { lng( 'h','o' ), "HiriMotu" }, | |
264 { lng( 'h','u' ), "Hungarian" }, | |
265 { lng( 'i','s' ), "Icelandic" }, | |
266 { lng( 'i','d' ), "Indonesian" }, | |
267 { lng( 'i','n' ), "Indonesian" }, | |
268 { lng( 'i','a' ), "Interlingua" }, | |
269 { lng( 'i','e' ), "Interlingue" }, | |
270 { lng( 'i','u' ), "Inuktitut" }, | |
271 { lng( 'i','k' ), "Inupiaq" }, | |
272 { lng( 'g','a' ), "Irish" }, | |
273 { lng( 'i','t' ), "Italian" }, | |
274 { lng( 'j','a' ), "Japanese" }, | |
275 { lng( 'j','v' ), "Javanese" }, | |
276 { lng( 'j','w' ), "Javanese" }, | |
277 { lng( 'k','l' ), "Kalaallisut" }, | |
278 { lng( 'k','n' ), "Kannada" }, | |
279 { lng( 'k','s' ), "Kashmiri" }, | |
280 { lng( 'k','k' ), "Kazakh" }, | |
281 { lng( 'k','m' ), "Khmer" }, | |
282 { lng( 'k','i' ), "Kikuyu" }, | |
283 { lng( 'r','w' ), "Kinyarwanda" }, | |
284 { lng( 'k','y' ), "Kirghiz" }, | |
285 { lng( 'k','v' ), "Komi" }, | |
286 { lng( 'k','o' ), "Korean" }, | |
287 { lng( 'k','j' ), "Kuanyama" }, | |
288 { lng( 'k','u' ), "Kurdish" }, | |
289 { lng( 'l','o' ), "Lao" }, | |
290 { lng( 'l','a' ), "Latin" }, | |
291 { lng( 'l','v' ), "Latvian" }, | |
292 { lng( 'l','b' ), "Letzeburgesch" }, | |
293 { lng( 'l','n' ), "Lingala" }, | |
294 { lng( 'l','t' ), "Lithuanian" }, | |
295 { lng( 'm','k' ), "Macedonian" }, | |
296 { lng( 'm','g' ), "Malagasy" }, | |
297 { lng( 'm','s' ), "Malay" }, | |
298 { lng( 'm','l' ), "Malayalam" }, | |
299 { lng( 'm','t' ), "Maltese" }, | |
300 { lng( 'g','v' ), "Manx" }, | |
301 { lng( 'm','i' ), "Maori" }, | |
302 { lng( 'm','r' ), "Marathi" }, | |
303 { lng( 'm','h' ), "Marshall" }, | |
304 { lng( 'm','o' ), "Moldavian" }, | |
305 { lng( 'm','n' ), "Mongolian" }, | |
306 { lng( 'n','a' ), "Nauru" }, | |
307 { lng( 'n','v' ), "Navajo" }, | |
308 { lng( 'n','d' ), "North Ndebele" }, | |
309 { lng( 'n','r' ), "South Ndebele" }, | |
310 { lng( 'n','g' ), "Ndonga" }, | |
311 { lng( 'n','e' ), "Nepali" }, | |
312 { lng( 's','e' ), "NorthernSami" }, | |
313 { lng( 'n','o' ), "Norwegian" }, | |
314 { lng( 'n','b' ), "NorwegianBokmål" }, | |
315 { lng( 'n','n' ), "NorwegianNynorsk" }, | |
316 { lng( 'n','y' ), "Nyanja;Chichewa" }, | |
317 { lng( 'o','c' ), "Occitan(post1500;Provençal" }, | |
318 { lng( 'o','r' ), "Oriya" }, | |
319 { lng( 'o','m' ), "Oromo" }, | |
320 { lng( 'o','s' ), "Ossetian;Ossetic" }, | |
321 { lng( 'p','i' ), "Pali" }, | |
322 { lng( 'p','a' ), "Panjabi" }, | |
323 { lng( 'f','a' ), "Persian" }, | |
324 { lng( 'p','l' ), "Polish" }, | |
325 { lng( 'p','t' ), "Portuguese" }, | |
326 { lng( 'o','c' ), "Provençal;Occitan(post1500" }, | |
327 { lng( 'p','s' ), "Pushto" }, | |
328 { lng( 'q','u' ), "Quechua" }, | |
329 { lng( 'r','m' ), "Raeto-Romance" }, | |
330 { lng( 'r','o' ), "Romanian" }, | |
331 { lng( 'r','n' ), "Rundi" }, | |
332 { lng( 'r','u' ), "Russian" }, | |
333 { lng( 's','m' ), "Samoan" }, | |
334 { lng( 's','g' ), "Sango" }, | |
335 { lng( 's','a' ), "Sanskrit" }, | |
336 { lng( 's','c' ), "Sardinian" }, | |
337 { lng( 's','r' ), "Serbian" }, | |
338 { lng( 's','n' ), "Shona" }, | |
339 { lng( 's','d' ), "Sindhi" }, | |
340 { lng( 's','i' ), "Sinhalese" }, | |
341 { lng( 's','k' ), "Slovak" }, | |
342 { lng( 's','l' ), "Slovenian" }, | |
343 { lng( 's','o' ), "Somali" }, | |
344 { lng( 's','t' ), "Sotho" }, | |
345 { lng( 'e','s' ), "Spanish" }, | |
346 { lng( 's','u' ), "Sundanese" }, | |
347 { lng( 's','w' ), "Swahili" }, | |
348 { lng( 's','s' ), "Swati" }, | |
349 { lng( 's','v' ), "Swedish" }, | |
350 { lng( 't','l' ), "Tagalog" }, | |
351 { lng( 't','y' ), "Tahitian" }, | |
352 { lng( 't','g' ), "Tajik" }, | |
353 { lng( 't','a' ), "Tamil" }, | |
354 { lng( 't','t' ), "Tatar" }, | |
355 { lng( 't','e' ), "Telugu" }, | |
356 { lng( 't','h' ), "Thai" }, | |
357 { lng( 'b','o' ), "Tibetan" }, | |
358 { lng( 't','i' ), "Tigrinya" }, | |
359 { lng( 't','o' ), "Tonga" }, | |
360 { lng( 't','s' ), "Tsonga" }, | |
361 { lng( 't','n' ), "Tswana" }, | |
362 { lng( 't','r' ), "Turkish" }, | |
363 { lng( 't','k' ), "Turkmen" }, | |
364 { lng( 't','w' ), "Twi" }, | |
365 { lng( 'u','g' ), "Uighur" }, | |
366 { lng( 'u','k' ), "Ukrainian" }, | |
367 { lng( 'u','r' ), "Urdu" }, | |
368 { lng( 'u','z' ), "Uzbek" }, | |
369 { lng( 'v','i' ), "Vietnamese" }, | |
370 { lng( 'v','o' ), "Volapük" }, | |
371 { lng( 'c','y' ), "Welsh" }, | |
372 { lng( 'w','o' ), "Wolof" }, | |
373 { lng( 'x','h' ), "Xhosa" }, | |
374 { lng( 'y','i' ), "Yiddish" }, | |
375 { lng( 'j','i' ), "Yiddish" }, | |
376 { lng( 'y','o' ), "Yoruba" }, | |
377 { lng( 'z','a' ), "Zhuang" }, | |
378 { lng( 'z','u' ), "Zulu" }, | |
379 }; | |
380 #undef lng | |
381 | |
382 #ifdef CONFIG_DVDREAD | |
383 static char * ChannelTypes[] = | |
384 { "Dolby Digital","","Mpeg1","Mpeg2","PCM","","Digital Theatre System" }; | |
385 static char * ChannelNumbers[] = | |
386 { "","Stereo","","","","5.1" }; | |
387 #endif | |
388 | |
389 static const char * GetLanguage( int language ) | |
390 { | |
391 unsigned int i; | |
392 for ( i=0;i<sizeof( Languages ) / sizeof( Languages_t );i++ ) | |
393 if ( Languages[i].id == language ) return Languages[i].name; | |
394 return NULL; | |
395 } | |
396 | |
397 | |
398 GtkWidget * DVDSubMenu; | |
399 GtkWidget * DVDTitleMenu; | |
400 GtkWidget * DVDChapterMenu; | |
401 GtkWidget * DVDAudioLanguageMenu; | |
402 GtkWidget * DVDSubtitleLanguageMenu; | |
403 GtkWidget * AspectMenu; | |
404 GtkWidget * VCDSubMenu; | |
405 GtkWidget * VCDTitleMenu; | |
406 | |
407 GtkWidget * create_PopUpMenu( void ) | |
408 { | |
409 GtkWidget * window1; | |
410 GtkWidget * Menu = NULL; | |
411 GtkWidget * SubMenu = NULL; | |
412 GtkWidget * MenuItem = NULL; | |
413 GtkWidget * H, * N, * D, * F; | |
414 mixer_t *mixer = mpctx_get_mixer(guiInfo.mpcontext); | |
415 int global_sub_size = mpctx_get_global_sub_size(guiInfo.mpcontext); | |
416 | |
417 Menu=gtk_menu_new(); | |
418 gtk_widget_realize (Menu); | |
419 window1 = gtk_widget_get_toplevel(Menu); | |
420 | |
421 | |
422 AddMenuItem( window1, (const char*)ab_xpm, Menu,MSGTR_MENU_AboutMPlayer" ", evAbout ); | |
423 AddSeparator( Menu ); | |
424 SubMenu=AddSubMenu( window1, (const char*)open_xpm, Menu,MSGTR_MENU_Open ); | |
425 AddMenuItem( window1, (const char*)file2_xpm, SubMenu,MSGTR_MENU_PlayFile" ", evLoadPlay ); | |
426 #ifdef CONFIG_VCD | |
427 AddMenuItem( window1, (const char*)playvcd_xpm, SubMenu,MSGTR_MENU_PlayVCD, evPlayVCD ); | |
428 #endif | |
429 #ifdef CONFIG_DVDREAD | |
430 AddMenuItem( window1, (const char*)playdvd_xpm, SubMenu,MSGTR_MENU_PlayDVD, evPlayDVD ); | |
431 #endif | |
432 AddMenuItem( window1, (const char*)url_xpm, SubMenu,MSGTR_MENU_PlayURL, evSetURL ); | |
433 AddMenuItem( window1, (const char*)sub_xpm, SubMenu,MSGTR_MENU_LoadSubtitle" ", evLoadSubtitle ); | |
434 AddMenuItem( window1, (const char*)delsub_xpm, SubMenu,MSGTR_MENU_DropSubtitle,evDropSubtitle ); | |
435 AddMenuItem( window1, (const char*)loadeaf_xpm, SubMenu,MSGTR_MENU_LoadExternAudioFile, evLoadAudioFile ); | |
436 SubMenu=AddSubMenu(window1, (const char*)play_xpm, Menu,MSGTR_MENU_Playing ); | |
437 AddMenuItem( window1, (const char*)play_xpm, SubMenu,MSGTR_MENU_Play" ", evPlay ); | |
438 AddMenuItem( window1, (const char*)pause_xpm, SubMenu,MSGTR_MENU_Pause, evPause ); | |
439 AddMenuItem( window1, (const char*)stop2_xpm, SubMenu,MSGTR_MENU_Stop, evStop ); | |
440 AddMenuItem( window1, (const char*)next_xpm, SubMenu,MSGTR_MENU_NextStream, evNext ); | |
441 AddMenuItem( window1, (const char*)prev_xpm, SubMenu,MSGTR_MENU_PrevStream, evPrev ); | |
442 // AddSeparator( SubMenu ); | |
443 // AddMenuItem( SubMenu,"Back 10 sec", evBackward10sec ); | |
444 // AddMenuItem( SubMenu,"Fwd 10 sec", evForward10sec ); | |
445 // AddMenuItem( SubMenu,"Back 1 min", evBackward1min ); | |
446 // AddMenuItem( SubMenu,"Fwd 1 min", evForward1min ); | |
447 // SubMenu=AddSubMenu( Menu,MSGTR_MENU_Size ); | |
448 // AddMenuItem( SubMenu,MSGTR_MENU_NormalSize" ", evNormalSize ); | |
449 // AddMenuItem( SubMenu,MSGTR_MENU_DoubleSize, evDoubleSize ); | |
450 // AddMenuItem( SubMenu,MSGTR_MENU_FullScreen, evFullScreen ); | |
451 #ifdef CONFIG_VCD | |
452 VCDSubMenu=AddSubMenu( window1, (const char*)vcd_xpm, Menu,MSGTR_MENU_VCD ); | |
453 AddMenuItem( window1, (const char*)playvcd_xpm, VCDSubMenu,MSGTR_MENU_PlayDisc,evPlayVCD ); | |
454 AddSeparator( VCDSubMenu ); | |
455 VCDTitleMenu=AddSubMenu( window1, (const char*)title_xpm, VCDSubMenu,MSGTR_MENU_Titles ); | |
456 if ( guiInfo.VCDTracks ) | |
457 { | |
458 char tmp[32]; int i; | |
459 for ( i=1;i < guiInfo.VCDTracks;i++ ) | |
460 { | |
461 snprintf( tmp,32,MSGTR_MENU_Title,i ); | |
462 //AddMenuItem( VCDTitleMenu,tmp,( i << 16 ) + evSetVCDTrack ); | |
463 AddMenuItem(window1, (const char*)empty_xpm, VCDTitleMenu,tmp,( i << 16 ) + evSetVCDTrack ); | |
464 } | |
465 } | |
466 else | |
467 { | |
468 MenuItem=AddMenuItem( window1, (const char*)empty_xpm, VCDTitleMenu,MSGTR_MENU_None,evNone ); | |
469 gtk_widget_set_sensitive( MenuItem,FALSE ); | |
470 } | |
471 #endif | |
472 #ifdef CONFIG_DVDREAD | |
473 DVDSubMenu=AddSubMenu( window1, (const char*)dvd_xpm, Menu,MSGTR_MENU_DVD ); | |
474 AddMenuItem( window1, (const char*)playdvd_xpm, DVDSubMenu,MSGTR_MENU_PlayDisc" ", evPlayDVD ); | |
475 // AddMenuItem( DVDSubMenu,MSGTR_MENU_ShowDVDMenu, evNone ); | |
476 AddSeparator( DVDSubMenu ); | |
477 DVDTitleMenu=AddSubMenu( window1, (const char*)title_xpm, DVDSubMenu,MSGTR_MENU_Titles ); | |
478 if ( guiInfo.DVD.titles ) | |
479 { | |
480 char tmp[32]; int i; | |
481 for ( i=1 ; i<= guiInfo.DVD.titles;i++ ) | |
482 { | |
483 snprintf( tmp,32,MSGTR_MENU_Title,i); | |
484 AddMenuCheckItem( window1, (const char*)empty1px_xpm, DVDTitleMenu,tmp, | |
485 guiInfo.DVD.current_title == i, | |
486 (i << 16) + evSetDVDTitle ); | |
487 } | |
488 } | |
489 else | |
490 { | |
491 MenuItem=AddMenuItem( window1, (const char*)empty_xpm, DVDTitleMenu,MSGTR_MENU_None,evNone ); | |
492 gtk_widget_set_sensitive( MenuItem,FALSE ); | |
493 } | |
494 DVDChapterMenu=AddSubMenu( window1, (const char*)chapter_xpm, DVDSubMenu,MSGTR_MENU_Chapters ); | |
495 if ( guiInfo.DVD.chapters ) | |
496 { | |
497 char tmp[32]; int i; | |
498 for ( i=1;i <= guiInfo.DVD.chapters;i++ ) | |
499 { | |
500 snprintf( tmp,32,MSGTR_MENU_Chapter,i ); | |
501 AddMenuCheckItem( window1, (const char*)empty1px_xpm, DVDChapterMenu,tmp,guiInfo.DVD.current_chapter == i, | |
502 ( i << 16 ) + evSetDVDChapter ); | |
503 } | |
504 } | |
505 else | |
506 { | |
507 MenuItem=AddMenuItem( window1, (const char*)empty_xpm, DVDChapterMenu,MSGTR_MENU_None,evNone ); | |
508 gtk_widget_set_sensitive( MenuItem,FALSE ); | |
509 } | |
510 DVDAudioLanguageMenu=AddSubMenu( window1, (const char*)tongue_xpm, DVDSubMenu,MSGTR_MENU_AudioLanguages ); | |
511 if ( guiInfo.DVD.nr_of_audio_channels ) | |
512 { | |
513 char tmp[64]; int i, id = guiInfo.demuxer ? ((demuxer_t *)guiInfo.demuxer)->audio->id : audio_id; | |
514 for ( i=0;i < guiInfo.DVD.nr_of_audio_channels;i++ ) | |
515 { | |
516 snprintf( tmp,64,"%s - %s %s",GetLanguage( guiInfo.DVD.audio_streams[i].language ), | |
517 ChannelTypes[ guiInfo.DVD.audio_streams[i].type ], | |
518 ChannelNumbers[ guiInfo.DVD.audio_streams[i].channels ] ); | |
519 // if ( id == -1 ) id=audio_id; //guiInfo.DVD.audio_streams[i].id; | |
520 AddMenuCheckItem( window1, (const char*)dolby_xpm, DVDAudioLanguageMenu,tmp, | |
521 id == guiInfo.DVD.audio_streams[i].id, | |
522 ( guiInfo.DVD.audio_streams[i].id << 16 ) + evSetDVDAudio ); | |
523 } | |
524 } | |
525 else | |
526 { | |
527 MenuItem=AddMenuItem( window1, (const char*)empty_xpm, DVDAudioLanguageMenu,MSGTR_MENU_None,evNone ); | |
528 gtk_widget_set_sensitive( MenuItem,FALSE ); | |
529 } | |
530 DVDSubtitleLanguageMenu=AddSubMenu( window1, (const char*)tonguebla_xpm, DVDSubMenu,MSGTR_MENU_SubtitleLanguages ); | |
531 if ( guiInfo.DVD.nr_of_subtitles ) | |
532 { | |
533 char tmp[64]; int i; | |
534 AddMenuItem( window1, (const char*)empty1px_xpm, DVDSubtitleLanguageMenu,MSGTR_MENU_None,( (unsigned short)-1 << 16 ) + evSetDVDSubtitle ); | |
535 for ( i=0;i < guiInfo.DVD.nr_of_subtitles;i++ ) | |
536 { | |
537 av_strlcpy( tmp,GetLanguage( guiInfo.DVD.subtitles[i].language ),sizeof(tmp) ); | |
538 AddMenuCheckItem( window1, (const char*)empty1px_xpm, DVDSubtitleLanguageMenu,tmp, | |
539 dvdsub_id == guiInfo.DVD.subtitles[i].id, | |
540 ( guiInfo.DVD.subtitles[i].id << 16 ) + evSetDVDSubtitle ); | |
541 } | |
542 } | |
543 else | |
544 { | |
545 MenuItem=AddMenuItem( window1, (const char*)empty_xpm, DVDSubtitleLanguageMenu,MSGTR_MENU_None,evNone ); | |
546 gtk_widget_set_sensitive( MenuItem,FALSE ); | |
547 } | |
548 #endif | |
549 | |
550 // if ( guiInfo.Playing ) | |
551 { | |
552 AspectMenu=AddSubMenu( window1, (const char*)aspect_xpm, Menu,MSGTR_MENU_AspectRatio ); | |
553 AddMenuItem( window1, (const char*)a11_xpm, AspectMenu,MSGTR_MENU_Original,( 1 << 16 ) + evSetAspect ); | |
554 AddMenuItem( window1, (const char*)a169_xpm, AspectMenu,"16:9",( 2 << 16 ) + evSetAspect ); | |
555 AddMenuItem( window1, (const char*)a43_xpm, AspectMenu,"4:3",( 3 << 16 ) + evSetAspect ); | |
556 AddMenuItem( window1, (const char*)a235_xpm, AspectMenu,"2.35",( 4 << 16 ) + evSetAspect ); | |
557 } | |
558 | |
559 if ( guiInfo.Playing && guiInfo.demuxer && guiInfo.StreamType != STREAMTYPE_DVD ) | |
560 { | |
561 int i,c = 0; | |
562 | |
563 for ( i=0;i < MAX_A_STREAMS;i++ ) | |
564 if ( ((demuxer_t *)guiInfo.demuxer)->a_streams[i] ) c++; | |
565 | |
566 if ( c > 1 ) | |
567 { | |
568 SubMenu=AddSubMenu( window1, (const char*)empty_xpm, Menu,MSGTR_MENU_AudioTrack ); | |
569 for ( i=0;i < MAX_A_STREAMS;i++ ) | |
570 if ( ((demuxer_t *)guiInfo.demuxer)->a_streams[i] ) | |
571 { | |
572 int aid = ((sh_audio_t *)((demuxer_t *)guiInfo.demuxer)->a_streams[i])->aid; | |
573 char tmp[32]; | |
574 snprintf( tmp,32,MSGTR_MENU_Track,aid ); | |
575 AddMenuItem( window1, (const char*)empty_xpm, SubMenu,tmp,( aid << 16 ) + evSetAudio ); | |
576 } | |
577 } | |
578 | |
579 for ( c=0,i=0;i < MAX_V_STREAMS;i++ ) | |
580 if ( ((demuxer_t *)guiInfo.demuxer)->v_streams[i] ) c++; | |
581 | |
582 if ( c > 1 ) | |
583 { | |
584 SubMenu=AddSubMenu( window1, (const char*)empty_xpm, Menu,MSGTR_MENU_VideoTrack ); | |
585 for ( i=0;i < MAX_V_STREAMS;i++ ) | |
586 if ( ((demuxer_t *)guiInfo.demuxer)->v_streams[i] ) | |
587 { | |
588 int vid = ((sh_video_t *)((demuxer_t *)guiInfo.demuxer)->v_streams[i])->vid; | |
589 char tmp[32]; | |
590 snprintf( tmp,32,MSGTR_MENU_Track,vid ); | |
591 AddMenuItem( window1, (const char*)empty_xpm, SubMenu,tmp,( vid << 16 ) + evSetVideo ); | |
592 } | |
593 } | |
594 } | |
595 | |
596 /* cheap subtitle switching for non-DVD streams */ | |
597 if ( global_sub_size && guiInfo.StreamType != STREAMTYPE_DVD ) | |
598 { | |
599 int i; | |
600 SubMenu=AddSubMenu( window1, (const char*)empty_xpm, Menu, MSGTR_MENU_Subtitles ); | |
601 AddMenuItem( window1, (const char*)empty_xpm, SubMenu, MSGTR_MENU_None, (-1 << 16) + evSetSubtitle ); | |
602 for ( i=0;i < global_sub_size;i++ ) | |
603 { | |
604 char tmp[32]; | |
605 snprintf( tmp, 32, MSGTR_MENU_Track, i ); | |
606 AddMenuItem( window1,(const char*)empty_xpm,SubMenu,tmp,( i << 16 ) + evSetSubtitle ); | |
607 } | |
608 } | |
609 | |
610 AddSeparator( Menu ); | |
611 MenuItem=AddMenuCheckItem( window1, (const char*)sound_xpm, Menu,MSGTR_MENU_Mute,mixer->muted,evMute ); | |
612 if ( !guiInfo.AudioType ) gtk_widget_set_sensitive( MenuItem,FALSE ); | |
613 AddMenuItem( window1, (const char*)pl_xpm, Menu,MSGTR_MENU_PlayList, evPlayList ); | |
614 AddMenuItem( window1, (const char*)skin_xpm, Menu,MSGTR_MENU_SkinBrowser, evSkinBrowser ); | |
615 AddMenuItem( window1, (const char*)prefs_xpm, Menu,MSGTR_MENU_Preferences, evPreferences ); | |
616 AddMenuItem( window1, (const char*)eq_xpm, Menu,MSGTR_Equalizer, evEqualizer ); | |
617 | |
618 if ( guiInfo.NoWindow == False ) | |
619 { | |
620 int b1 = 0, b2 = 0, b_half = 0; | |
621 AddSeparator( Menu ); | |
622 if ( !guiApp.subWindow.isFullScreen && guiInfo.Playing ) | |
623 { | |
624 if ( ( guiApp.subWindow.Width == guiInfo.MovieWidth * 2 )&& | |
625 ( guiApp.subWindow.Height == guiInfo.MovieHeight * 2 ) ) b2=1; | |
626 else if ( ( guiApp.subWindow.Width == guiInfo.MovieWidth / 2 ) && | |
627 ( guiApp.subWindow.Height == guiInfo.MovieHeight / 2 ) ) b_half=1; | |
628 else b1=1; | |
629 } else b1=!guiApp.subWindow.isFullScreen; | |
630 H=AddMenuCheckItem( window1, (const char*)half_xpm, Menu,MSGTR_MENU_HalfSize,b_half,evHalfSize ); | |
631 N=AddMenuCheckItem( window1, (const char*)normal_xpm, Menu,MSGTR_MENU_NormalSize" ",b1,evNormalSize ); | |
632 D=AddMenuCheckItem( window1, (const char*)double_xpm, Menu,MSGTR_MENU_DoubleSize,b2,evDoubleSize ); | |
633 F=AddMenuCheckItem( window1, (const char*)fs_xpm, Menu,MSGTR_MENU_FullScreen,guiApp.subWindow.isFullScreen,evFullScreen ); | |
634 if ( !gtkShowVideoWindow && !guiInfo.Playing ) | |
635 { | |
636 gtk_widget_set_sensitive( H,FALSE ); | |
637 gtk_widget_set_sensitive( N,FALSE ); | |
638 gtk_widget_set_sensitive( D,FALSE ); | |
639 gtk_widget_set_sensitive( F,FALSE ); | |
640 } | |
641 } | |
642 | |
643 AddSeparator( Menu ); | |
644 AddMenuItem( window1, (const char*)exit_xpm, Menu,MSGTR_MENU_Exit, evExit ); | |
645 | |
646 return Menu; | |
647 } |