]> git.sesse.net Git - vlc/blob - plugins/gnome/gnome_interface.c
-New ES detection based on .ifo for DVD module. It might fail (I have
[vlc] / plugins / gnome / gnome_interface.c
1 /*
2  * DO NOT EDIT THIS FILE - it is generated by Glade.
3  */
4
5 #ifdef HAVE_CONFIG_H
6 #  include <config.h>
7 #endif
8
9 #include <sys/types.h>
10 #include <sys/stat.h>
11 #include <unistd.h>
12 #include <string.h>
13
14 #include <gnome.h>
15
16 #include "gnome_callbacks.h"
17 #include "gnome_interface.h"
18 #include "gnome_support.h"
19
20 static GnomeUIInfo menubar_file_menu_uiinfo[] =
21 {
22   GNOMEUIINFO_MENU_OPEN_ITEM (on_menubar_open_activate, NULL),
23   GNOMEUIINFO_SEPARATOR,
24   GNOMEUIINFO_MENU_EXIT_ITEM (on_menubar_exit_activate, NULL),
25   GNOMEUIINFO_END
26 };
27
28 static GnomeUIInfo menubar_view_menu_uiinfo[] =
29 {
30   {
31     GNOME_APP_UI_ITEM, N_("_Playlist..."),
32     N_("Open the playlist window"),
33     (gpointer) on_menubar_playlist_activate, NULL, NULL,
34     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_INDEX,
35     0, (GdkModifierType) 0, NULL
36   },
37   {
38     GNOME_APP_UI_ITEM, N_("_Modules..."),
39     N_("Open the plugin manager"),
40     (gpointer) on_menubar_modules_activate, NULL, NULL,
41     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_ATTACH,
42     0, (GdkModifierType) 0, NULL
43   },
44   GNOMEUIINFO_END
45 };
46
47 static GnomeUIInfo menubar_settings_menu_uiinfo[] =
48 {
49   {
50     GNOME_APP_UI_ITEM, N_("_Audio"),
51     N_("Select audio channel"),
52     (gpointer) on_menubar_audio_activate, NULL, NULL,
53     GNOME_APP_PIXMAP_NONE, NULL,
54     0, (GdkModifierType) 0, NULL
55   },
56   {
57     GNOME_APP_UI_ITEM, N_("_Subtitles"),
58     N_("Select subtitle unit"),
59     (gpointer) on_menubar_subtitles_activate, NULL, NULL,
60     GNOME_APP_PIXMAP_NONE, NULL,
61     0, (GdkModifierType) 0, NULL
62   },
63   GNOMEUIINFO_SEPARATOR,
64   GNOMEUIINFO_MENU_PREFERENCES_ITEM (on_menubar_preferences_activate, NULL),
65   GNOMEUIINFO_END
66 };
67
68 static GnomeUIInfo menubar_help_menu_uiinfo[] =
69 {
70   GNOMEUIINFO_MENU_ABOUT_ITEM (on_menubar_about_activate, NULL),
71   GNOMEUIINFO_END
72 };
73
74 static GnomeUIInfo menubar_uiinfo[] =
75 {
76   GNOMEUIINFO_MENU_FILE_TREE (menubar_file_menu_uiinfo),
77   GNOMEUIINFO_MENU_VIEW_TREE (menubar_view_menu_uiinfo),
78   GNOMEUIINFO_MENU_SETTINGS_TREE (menubar_settings_menu_uiinfo),
79   GNOMEUIINFO_MENU_HELP_TREE (menubar_help_menu_uiinfo),
80   GNOMEUIINFO_END
81 };
82
83 GtkWidget*
84 create_intf_window (void)
85 {
86   GtkWidget *intf_window;
87   GtkWidget *dockitem;
88   GtkWidget *toolbar;
89   GtkWidget *tmp_toolbar_icon;
90   GtkWidget *toolbar_open;
91   GtkWidget *toolbar_back;
92   GtkWidget *toolbar_stop;
93   GtkWidget *toolbar_play;
94   GtkWidget *toolbar_pause;
95   GtkWidget *toolbar_slow;
96   GtkWidget *toolbar_fast;
97   GtkWidget *toolbar_playlist;
98   GtkWidget *toolbar_prev;
99   GtkWidget *toolbar_next;
100   GtkWidget *vbox2;
101   GtkWidget *entry1;
102   GtkWidget *label6;
103   GtkWidget *hscale;
104   GtkWidget *label13;
105   GtkWidget *appbar;
106
107   intf_window = gnome_app_new ("VideoLAN Client", _("VideoLAN Client"));
108   gtk_object_set_data (GTK_OBJECT (intf_window), "intf_window", intf_window);
109
110   dockitem = GNOME_APP (intf_window)->dock;
111   gtk_widget_ref (dockitem);
112   gtk_object_set_data_full (GTK_OBJECT (intf_window), "dockitem", dockitem,
113                             (GtkDestroyNotify) gtk_widget_unref);
114   gtk_widget_show (dockitem);
115
116   gnome_app_create_menus (GNOME_APP (intf_window), menubar_uiinfo);
117
118   gtk_widget_ref (menubar_uiinfo[0].widget);
119   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_file",
120                             menubar_uiinfo[0].widget,
121                             (GtkDestroyNotify) gtk_widget_unref);
122
123   gtk_widget_ref (menubar_file_menu_uiinfo[0].widget);
124   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_open",
125                             menubar_file_menu_uiinfo[0].widget,
126                             (GtkDestroyNotify) gtk_widget_unref);
127
128   gtk_widget_ref (menubar_file_menu_uiinfo[1].widget);
129   gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator1",
130                             menubar_file_menu_uiinfo[1].widget,
131                             (GtkDestroyNotify) gtk_widget_unref);
132
133   gtk_widget_ref (menubar_file_menu_uiinfo[2].widget);
134   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_exit",
135                             menubar_file_menu_uiinfo[2].widget,
136                             (GtkDestroyNotify) gtk_widget_unref);
137
138   gtk_widget_ref (menubar_uiinfo[1].widget);
139   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_view",
140                             menubar_uiinfo[1].widget,
141                             (GtkDestroyNotify) gtk_widget_unref);
142
143   gtk_widget_ref (menubar_view_menu_uiinfo[0].widget);
144   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_playlist",
145                             menubar_view_menu_uiinfo[0].widget,
146                             (GtkDestroyNotify) gtk_widget_unref);
147   gtk_widget_set_sensitive (menubar_view_menu_uiinfo[0].widget, FALSE);
148
149   gtk_widget_ref (menubar_view_menu_uiinfo[1].widget);
150   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_modules",
151                             menubar_view_menu_uiinfo[1].widget,
152                             (GtkDestroyNotify) gtk_widget_unref);
153   gtk_widget_set_sensitive (menubar_view_menu_uiinfo[1].widget, FALSE);
154
155   gtk_widget_ref (menubar_uiinfo[2].widget);
156   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_settings",
157                             menubar_uiinfo[2].widget,
158                             (GtkDestroyNotify) gtk_widget_unref);
159
160   gtk_widget_ref (menubar_settings_menu_uiinfo[0].widget);
161   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_audio",
162                             menubar_settings_menu_uiinfo[0].widget,
163                             (GtkDestroyNotify) gtk_widget_unref);
164
165   gtk_widget_ref (menubar_settings_menu_uiinfo[1].widget);
166   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_subtitles",
167                             menubar_settings_menu_uiinfo[1].widget,
168                             (GtkDestroyNotify) gtk_widget_unref);
169
170   gtk_widget_ref (menubar_settings_menu_uiinfo[2].widget);
171   gtk_object_set_data_full (GTK_OBJECT (intf_window), "separator5",
172                             menubar_settings_menu_uiinfo[2].widget,
173                             (GtkDestroyNotify) gtk_widget_unref);
174
175   gtk_widget_ref (menubar_settings_menu_uiinfo[3].widget);
176   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_preferences",
177                             menubar_settings_menu_uiinfo[3].widget,
178                             (GtkDestroyNotify) gtk_widget_unref);
179   gtk_widget_set_sensitive (menubar_settings_menu_uiinfo[3].widget, FALSE);
180
181   gtk_widget_ref (menubar_uiinfo[3].widget);
182   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_help",
183                             menubar_uiinfo[3].widget,
184                             (GtkDestroyNotify) gtk_widget_unref);
185
186   gtk_widget_ref (menubar_help_menu_uiinfo[0].widget);
187   gtk_object_set_data_full (GTK_OBJECT (intf_window), "menubar_about",
188                             menubar_help_menu_uiinfo[0].widget,
189                             (GtkDestroyNotify) gtk_widget_unref);
190
191   toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH);
192   gtk_widget_ref (toolbar);
193   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar", toolbar,
194                             (GtkDestroyNotify) gtk_widget_unref);
195   gtk_widget_show (toolbar);
196   gnome_app_add_toolbar (GNOME_APP (intf_window), GTK_TOOLBAR (toolbar), "toolbar",
197                                 GNOME_DOCK_ITEM_BEH_EXCLUSIVE,
198                                 GNOME_DOCK_TOP, 1, 0, 2);
199   gtk_container_set_border_width (GTK_CONTAINER (toolbar), 1);
200   gtk_toolbar_set_space_size (GTK_TOOLBAR (toolbar), 16);
201   gtk_toolbar_set_space_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_SPACE_LINE);
202   gtk_toolbar_set_button_relief (GTK_TOOLBAR (toolbar), GTK_RELIEF_NONE);
203
204   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_OPEN);
205   toolbar_open = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
206                                 GTK_TOOLBAR_CHILD_BUTTON,
207                                 NULL,
208                                 _("Open"),
209                                 _("Open File"), NULL,
210                                 tmp_toolbar_icon, NULL, NULL);
211   gtk_widget_ref (toolbar_open);
212   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_open", toolbar_open,
213                             (GtkDestroyNotify) gtk_widget_unref);
214   gtk_widget_show (toolbar_open);
215
216   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
217
218   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_BACK);
219   toolbar_back = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
220                                 GTK_TOOLBAR_CHILD_BUTTON,
221                                 NULL,
222                                 _("Back"),
223                                 _("Go Backwards"), NULL,
224                                 tmp_toolbar_icon, NULL, NULL);
225   gtk_widget_ref (toolbar_back);
226   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_back", toolbar_back,
227                             (GtkDestroyNotify) gtk_widget_unref);
228   gtk_widget_show (toolbar_back);
229   gtk_widget_set_sensitive (toolbar_back, FALSE);
230
231   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_STOP);
232   toolbar_stop = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
233                                 GTK_TOOLBAR_CHILD_BUTTON,
234                                 NULL,
235                                 _("Stop"),
236                                 _("Stop Stream"), NULL,
237                                 tmp_toolbar_icon, NULL, NULL);
238   gtk_widget_ref (toolbar_stop);
239   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_stop", toolbar_stop,
240                             (GtkDestroyNotify) gtk_widget_unref);
241   gtk_widget_show (toolbar_stop);
242   gtk_widget_set_sensitive (toolbar_stop, FALSE);
243
244   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_FORWARD);
245   toolbar_play = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
246                                 GTK_TOOLBAR_CHILD_BUTTON,
247                                 NULL,
248                                 _("Play"),
249                                 _("Play Stream"), NULL,
250                                 tmp_toolbar_icon, NULL, NULL);
251   gtk_widget_ref (toolbar_play);
252   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_play", toolbar_play,
253                             (GtkDestroyNotify) gtk_widget_unref);
254   gtk_widget_show (toolbar_play);
255
256   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_BOTTOM);
257   toolbar_pause = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
258                                 GTK_TOOLBAR_CHILD_BUTTON,
259                                 NULL,
260                                 _("Pause"),
261                                 _("Pause Stream"), NULL,
262                                 tmp_toolbar_icon, NULL, NULL);
263   gtk_widget_ref (toolbar_pause);
264   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_pause", toolbar_pause,
265                             (GtkDestroyNotify) gtk_widget_unref);
266   gtk_widget_show (toolbar_pause);
267
268   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_TIMER_STOP);
269   toolbar_slow = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
270                                 GTK_TOOLBAR_CHILD_BUTTON,
271                                 NULL,
272                                 _("Slow"),
273                                 _("Play Slower"), NULL,
274                                 tmp_toolbar_icon, NULL, NULL);
275   gtk_widget_ref (toolbar_slow);
276   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_slow", toolbar_slow,
277                             (GtkDestroyNotify) gtk_widget_unref);
278   gtk_widget_show (toolbar_slow);
279
280   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_TIMER);
281   toolbar_fast = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
282                                 GTK_TOOLBAR_CHILD_BUTTON,
283                                 NULL,
284                                 _("Fast"),
285                                 _("Play Faster"), NULL,
286                                 tmp_toolbar_icon, NULL, NULL);
287   gtk_widget_ref (toolbar_fast);
288   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_fast", toolbar_fast,
289                             (GtkDestroyNotify) gtk_widget_unref);
290   gtk_widget_show (toolbar_fast);
291
292   gtk_toolbar_append_space (GTK_TOOLBAR (toolbar));
293
294   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_INDEX);
295   toolbar_playlist = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
296                                 GTK_TOOLBAR_CHILD_BUTTON,
297                                 NULL,
298                                 _("Playlist"),
299                                 _("Open Playlist"), NULL,
300                                 tmp_toolbar_icon, NULL, NULL);
301   gtk_widget_ref (toolbar_playlist);
302   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_playlist", toolbar_playlist,
303                             (GtkDestroyNotify) gtk_widget_unref);
304   gtk_widget_show (toolbar_playlist);
305   gtk_widget_set_sensitive (toolbar_playlist, FALSE);
306
307   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_FIRST);
308   toolbar_prev = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
309                                 GTK_TOOLBAR_CHILD_BUTTON,
310                                 NULL,
311                                 _("Prev"),
312                                 _("Previous File"), NULL,
313                                 tmp_toolbar_icon, NULL, NULL);
314   gtk_widget_ref (toolbar_prev);
315   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_prev", toolbar_prev,
316                             (GtkDestroyNotify) gtk_widget_unref);
317   gtk_widget_show (toolbar_prev);
318
319   tmp_toolbar_icon = gnome_stock_pixmap_widget (intf_window, GNOME_STOCK_PIXMAP_LAST);
320   toolbar_next = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar),
321                                 GTK_TOOLBAR_CHILD_BUTTON,
322                                 NULL,
323                                 _("Next"),
324                                 _("Next File"), NULL,
325                                 tmp_toolbar_icon, NULL, NULL);
326   gtk_widget_ref (toolbar_next);
327   gtk_object_set_data_full (GTK_OBJECT (intf_window), "toolbar_next", toolbar_next,
328                             (GtkDestroyNotify) gtk_widget_unref);
329   gtk_widget_show (toolbar_next);
330
331   vbox2 = gtk_vbox_new (FALSE, 0);
332   gtk_widget_ref (vbox2);
333   gtk_object_set_data_full (GTK_OBJECT (intf_window), "vbox2", vbox2,
334                             (GtkDestroyNotify) gtk_widget_unref);
335   gtk_widget_show (vbox2);
336   gnome_app_set_contents (GNOME_APP (intf_window), vbox2);
337
338   entry1 = gtk_entry_new ();
339   gtk_widget_ref (entry1);
340   gtk_object_set_data_full (GTK_OBJECT (intf_window), "entry1", entry1,
341                             (GtkDestroyNotify) gtk_widget_unref);
342   gtk_widget_show (entry1);
343   gtk_box_pack_start (GTK_BOX (vbox2), entry1, FALSE, FALSE, 0);
344   gtk_entry_set_text (GTK_ENTRY (entry1), _("Tired of boring stub messages ? Write your own exciting message here !!"));
345
346   label6 = gtk_label_new (_("This part of the interface doesn't work yet. You can drag the slider below, though:"));
347   gtk_widget_ref (label6);
348   gtk_object_set_data_full (GTK_OBJECT (intf_window), "label6", label6,
349                             (GtkDestroyNotify) gtk_widget_unref);
350   gtk_widget_show (label6);
351   gtk_box_pack_start (GTK_BOX (vbox2), label6, FALSE, FALSE, 0);
352   gtk_label_set_justify (GTK_LABEL (label6), GTK_JUSTIFY_LEFT);
353   gtk_misc_set_alignment (GTK_MISC (label6), 0, 0.5);
354   gtk_misc_set_padding (GTK_MISC (label6), 5, 0);
355
356   hscale = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 100, 1, 6.25, 0)));
357   gtk_widget_ref (hscale);
358   gtk_object_set_data_full (GTK_OBJECT (intf_window), "hscale", hscale,
359                             (GtkDestroyNotify) gtk_widget_unref);
360   gtk_widget_show (hscale);
361   gtk_box_pack_start (GTK_BOX (vbox2), hscale, FALSE, FALSE, 0);
362   gtk_scale_set_value_pos (GTK_SCALE (hscale), GTK_POS_BOTTOM);
363   gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_DELAYED);
364
365   label13 = gtk_label_new (_("HEY ! YOU CAN DROP A FILE ON VLC TOO :-)"));
366   gtk_widget_ref (label13);
367   gtk_object_set_data_full (GTK_OBJECT (intf_window), "label13", label13,
368                             (GtkDestroyNotify) gtk_widget_unref);
369   gtk_widget_show (label13);
370   gtk_box_pack_start (GTK_BOX (vbox2), label13, FALSE, FALSE, 0);
371   gtk_misc_set_padding (GTK_MISC (label13), 0, 5);
372
373   appbar = gnome_appbar_new (TRUE, TRUE, GNOME_PREFERENCES_NEVER);
374   gtk_widget_ref (appbar);
375   gtk_object_set_data_full (GTK_OBJECT (intf_window), "appbar", appbar,
376                             (GtkDestroyNotify) gtk_widget_unref);
377   gtk_widget_show (appbar);
378   gnome_app_set_statusbar (GNOME_APP (intf_window), appbar);
379
380   gtk_signal_connect (GTK_OBJECT (intf_window), "destroy",
381                       GTK_SIGNAL_FUNC (on_intf_window_destroy),
382                       NULL);
383   gtk_signal_connect (GTK_OBJECT (intf_window), "drag_data_received",
384                       GTK_SIGNAL_FUNC (on_intf_window_drag_data_received),
385                       NULL);
386   gnome_app_install_menu_hints (GNOME_APP (intf_window), menubar_uiinfo);
387   gtk_signal_connect (GTK_OBJECT (toolbar_open), "clicked",
388                       GTK_SIGNAL_FUNC (on_toolbar_open_clicked),
389                       NULL);
390   gtk_signal_connect (GTK_OBJECT (toolbar_back), "clicked",
391                       GTK_SIGNAL_FUNC (on_toolbar_back_clicked),
392                       NULL);
393   gtk_signal_connect (GTK_OBJECT (toolbar_stop), "clicked",
394                       GTK_SIGNAL_FUNC (on_toolbar_stop_clicked),
395                       NULL);
396   gtk_signal_connect (GTK_OBJECT (toolbar_play), "clicked",
397                       GTK_SIGNAL_FUNC (on_toolbar_play_clicked),
398                       NULL);
399   gtk_signal_connect (GTK_OBJECT (toolbar_pause), "clicked",
400                       GTK_SIGNAL_FUNC (on_toolbar_pause_clicked),
401                       NULL);
402   gtk_signal_connect (GTK_OBJECT (toolbar_slow), "clicked",
403                       GTK_SIGNAL_FUNC (on_toolbar_slow_clicked),
404                       NULL);
405   gtk_signal_connect (GTK_OBJECT (toolbar_fast), "clicked",
406                       GTK_SIGNAL_FUNC (on_toolbar_fast_clicked),
407                       NULL);
408   gtk_signal_connect (GTK_OBJECT (toolbar_playlist), "clicked",
409                       GTK_SIGNAL_FUNC (on_toolbar_playlist_clicked),
410                       NULL);
411   gtk_signal_connect (GTK_OBJECT (toolbar_prev), "clicked",
412                       GTK_SIGNAL_FUNC (on_toolbar_prev_clicked),
413                       NULL);
414   gtk_signal_connect (GTK_OBJECT (toolbar_next), "clicked",
415                       GTK_SIGNAL_FUNC (on_toolbar_next_clicked),
416                       NULL);
417   gtk_signal_connect (GTK_OBJECT (hscale), "button_release_event",
418                       GTK_SIGNAL_FUNC (on_hscale_button_release_event),
419                       NULL);
420   gtk_signal_connect (GTK_OBJECT (hscale), "button_press_event",
421                       GTK_SIGNAL_FUNC (on_hscale_button_press_event),
422                       NULL);
423
424   return intf_window;
425 }
426
427 static GnomeUIInfo popup_title_menu_uiinfo[] =
428 {
429   {
430     GNOME_APP_UI_ITEM, N_("_Chapter"),
431     NULL,
432     (gpointer) on_popup_chapter_activate, NULL, NULL,
433     GNOME_APP_PIXMAP_NONE, NULL,
434     0, (GdkModifierType) 0, NULL
435   },
436   GNOMEUIINFO_END
437 };
438
439 static GnomeUIInfo intf_popup_uiinfo[] =
440 {
441   {
442     GNOME_APP_UI_ITEM, N_("_Play"),
443     NULL,
444     (gpointer) on_popup_play_activate, NULL, NULL,
445     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_FORWARD,
446     0, (GdkModifierType) 0, NULL
447   },
448   {
449     GNOME_APP_UI_ITEM, N_("Pause"),
450     NULL,
451     (gpointer) on_popup_pause_activate, NULL, NULL,
452     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BOTTOM,
453     0, (GdkModifierType) 0, NULL
454   },
455   {
456     GNOME_APP_UI_ITEM, N_("Slow"),
457     NULL,
458     (gpointer) on_popup_slow_activate, NULL, NULL,
459     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TIMER_STOP,
460     0, (GdkModifierType) 0, NULL
461   },
462   {
463     GNOME_APP_UI_ITEM, N_("Fast"),
464     NULL,
465     (gpointer) on_popup_fast_activate, NULL, NULL,
466     GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_TIMER,
467     0, (GdkModifierType) 0, NULL
468   },
469   GNOMEUIINFO_SEPARATOR,
470   GNOMEUIINFO_MENU_OPEN_ITEM (on_popup_open_activate, NULL),
471   GNOMEUIINFO_SEPARATOR,
472   {
473     GNOME_APP_UI_SUBTREE, N_("_Title"),
474     N_("Select Title"),
475     popup_title_menu_uiinfo, NULL, NULL,
476     GNOME_APP_PIXMAP_NONE, NULL,
477     0, (GdkModifierType) 0, NULL
478   },
479   {
480     GNOME_APP_UI_ITEM, N_("Audio"),
481     N_("Select audio channel"),
482     (gpointer) on_popup_audio_activate, NULL, NULL,
483     GNOME_APP_PIXMAP_NONE, NULL,
484     0, (GdkModifierType) 0, NULL
485   },
486   {
487     GNOME_APP_UI_ITEM, N_("_Subtitle"),
488     NULL,
489     (gpointer) on_popup_subtitle_activate, NULL, NULL,
490     GNOME_APP_PIXMAP_NONE, NULL,
491     0, (GdkModifierType) 0, NULL
492   },
493   GNOMEUIINFO_SEPARATOR,
494   GNOMEUIINFO_MENU_ABOUT_ITEM (on_popup_about_activate, NULL),
495   GNOMEUIINFO_MENU_EXIT_ITEM (on_popup_exit_activate, NULL),
496   GNOMEUIINFO_END
497 };
498
499 GtkWidget*
500 create_intf_popup (void)
501 {
502   GtkWidget *intf_popup;
503
504   intf_popup = gtk_menu_new ();
505   gtk_object_set_data (GTK_OBJECT (intf_popup), "intf_popup", intf_popup);
506   gnome_app_fill_menu (GTK_MENU_SHELL (intf_popup), intf_popup_uiinfo,
507                        NULL, FALSE, 0);
508
509   gtk_widget_ref (intf_popup_uiinfo[0].widget);
510   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_play",
511                             intf_popup_uiinfo[0].widget,
512                             (GtkDestroyNotify) gtk_widget_unref);
513
514   gtk_widget_ref (intf_popup_uiinfo[1].widget);
515   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_pause",
516                             intf_popup_uiinfo[1].widget,
517                             (GtkDestroyNotify) gtk_widget_unref);
518
519   gtk_widget_ref (intf_popup_uiinfo[2].widget);
520   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_slow",
521                             intf_popup_uiinfo[2].widget,
522                             (GtkDestroyNotify) gtk_widget_unref);
523
524   gtk_widget_ref (intf_popup_uiinfo[3].widget);
525   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_fast",
526                             intf_popup_uiinfo[3].widget,
527                             (GtkDestroyNotify) gtk_widget_unref);
528
529   gtk_widget_ref (intf_popup_uiinfo[4].widget);
530   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator2",
531                             intf_popup_uiinfo[4].widget,
532                             (GtkDestroyNotify) gtk_widget_unref);
533
534   gtk_widget_ref (intf_popup_uiinfo[5].widget);
535   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_open",
536                             intf_popup_uiinfo[5].widget,
537                             (GtkDestroyNotify) gtk_widget_unref);
538
539   gtk_widget_ref (intf_popup_uiinfo[6].widget);
540   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator3",
541                             intf_popup_uiinfo[6].widget,
542                             (GtkDestroyNotify) gtk_widget_unref);
543
544   gtk_widget_ref (intf_popup_uiinfo[7].widget);
545   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_title",
546                             intf_popup_uiinfo[7].widget,
547                             (GtkDestroyNotify) gtk_widget_unref);
548
549   gtk_widget_ref (popup_title_menu_uiinfo[0].widget);
550   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_chapter",
551                             popup_title_menu_uiinfo[0].widget,
552                             (GtkDestroyNotify) gtk_widget_unref);
553
554   gtk_widget_ref (intf_popup_uiinfo[8].widget);
555   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_audio",
556                             intf_popup_uiinfo[8].widget,
557                             (GtkDestroyNotify) gtk_widget_unref);
558
559   gtk_widget_ref (intf_popup_uiinfo[9].widget);
560   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_subtitle",
561                             intf_popup_uiinfo[9].widget,
562                             (GtkDestroyNotify) gtk_widget_unref);
563
564   gtk_widget_ref (intf_popup_uiinfo[10].widget);
565   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "separator4",
566                             intf_popup_uiinfo[10].widget,
567                             (GtkDestroyNotify) gtk_widget_unref);
568
569   gtk_widget_ref (intf_popup_uiinfo[11].widget);
570   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_about",
571                             intf_popup_uiinfo[11].widget,
572                             (GtkDestroyNotify) gtk_widget_unref);
573
574   gtk_widget_ref (intf_popup_uiinfo[12].widget);
575   gtk_object_set_data_full (GTK_OBJECT (intf_popup), "popup_exit",
576                             intf_popup_uiinfo[12].widget,
577                             (GtkDestroyNotify) gtk_widget_unref);
578
579   return intf_popup;
580 }
581
582 GtkWidget*
583 create_intf_about (void)
584 {
585   const gchar *authors[] = {
586     "Régis Duchesne <regis@via.ecp.fr>",
587     "Michel Lespinasse <walken@zoy.org>",
588     "Olivier Pomel <pomel@via.ecp.fr>",
589     "Pierre Baillet <oct@zoy.org>",
590     "Jean-Philippe Grimaldi <jeanphi@via.ecp.fr>",
591     "Andres Krapf <dae@via.ecp.fr>",
592     "Christophe Massiot <massiot@via.ecp.fr>",
593     "Vincent Seguin <seguin@via.ecp.fr>",
594     "Benoit Steiner <benny@via.ecp.fr>",
595     "Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr>",
596     "Jean-Marc Dressler <polux@via.ecp.fr>",
597     "Gaël Hendryckx <jimmy@via.ecp.fr>",
598     "Samuel Hocevar <sam@zoy.org>",
599     "Brieuc Jeunhomme <bbp@via.ecp.fr>",
600     "Michel Kaempf <maxx@via.ecp.fr>",
601     "Stéphane Borel <stef@via.ecp.fr>",
602     "Renaud Dartus <reno@via.ecp.fr>",
603     "Henri Fallon <henri@via.ecp.fr>",
604     NULL
605   };
606   GtkWidget *intf_about;
607
608   intf_about = gnome_about_new ("VideoLAN Client", VERSION,
609                         _("(C) 1996, 1997, 1998, 1999, 2000, 2001 - the VideoLAN Team"),
610                         authors,
611                         _("This is the VideoLAN client, a DVD and MPEG player. It can play MPEG and MPEG 2 files from a file or from a network source."),
612                         NULL);
613   gtk_object_set_data (GTK_OBJECT (intf_about), "intf_about", intf_about);
614
615   return intf_about;
616 }
617
618 GtkWidget*
619 create_intf_fileopen (void)
620 {
621   GtkWidget *intf_fileopen;
622   GtkWidget *fileopen_ok;
623   GtkWidget *fileopen_cancel;
624
625   intf_fileopen = gtk_file_selection_new (_("Open File"));
626   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "intf_fileopen", intf_fileopen);
627   gtk_container_set_border_width (GTK_CONTAINER (intf_fileopen), 10);
628
629   fileopen_ok = GTK_FILE_SELECTION (intf_fileopen)->ok_button;
630   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "fileopen_ok", fileopen_ok);
631   gtk_widget_show (fileopen_ok);
632   GTK_WIDGET_SET_FLAGS (fileopen_ok, GTK_CAN_DEFAULT);
633
634   fileopen_cancel = GTK_FILE_SELECTION (intf_fileopen)->cancel_button;
635   gtk_object_set_data (GTK_OBJECT (intf_fileopen), "fileopen_cancel", fileopen_cancel);
636   gtk_widget_show (fileopen_cancel);
637   GTK_WIDGET_SET_FLAGS (fileopen_cancel, GTK_CAN_DEFAULT);
638
639   gtk_signal_connect (GTK_OBJECT (intf_fileopen), "destroy",
640                       GTK_SIGNAL_FUNC (on_intf_fileopen_destroy),
641                       NULL);
642   gtk_signal_connect (GTK_OBJECT (fileopen_ok), "clicked",
643                       GTK_SIGNAL_FUNC (on_fileopen_ok_clicked),
644                       NULL);
645   gtk_signal_connect (GTK_OBJECT (fileopen_cancel), "clicked",
646                       GTK_SIGNAL_FUNC (on_fileopen_cancel_clicked),
647                       NULL);
648
649   return intf_fileopen;
650 }
651
652 GtkWidget*
653 create_intf_modules (void)
654 {
655   GtkWidget *intf_modules;
656   GtkWidget *dialog_vbox1;
657   GtkWidget *label12;
658   GtkWidget *dialog_action_area1;
659   GtkWidget *modules_ok;
660   GtkWidget *modules_apply;
661   GtkWidget *modules_cancel;
662
663   intf_modules = gnome_dialog_new (_("Modules"), NULL);
664   gtk_object_set_data (GTK_OBJECT (intf_modules), "intf_modules", intf_modules);
665   gtk_window_set_policy (GTK_WINDOW (intf_modules), FALSE, FALSE, FALSE);
666
667   dialog_vbox1 = GNOME_DIALOG (intf_modules)->vbox;
668   gtk_object_set_data (GTK_OBJECT (intf_modules), "dialog_vbox1", dialog_vbox1);
669   gtk_widget_show (dialog_vbox1);
670
671   label12 = gtk_label_new (_("Sorry, the module manager isn't functional yet. Please retry in a later version."));
672   gtk_widget_ref (label12);
673   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "label12", label12,
674                             (GtkDestroyNotify) gtk_widget_unref);
675   gtk_widget_show (label12);
676   gtk_box_pack_start (GTK_BOX (dialog_vbox1), label12, FALSE, FALSE, 0);
677
678   dialog_action_area1 = GNOME_DIALOG (intf_modules)->action_area;
679   gtk_object_set_data (GTK_OBJECT (intf_modules), "dialog_action_area1", dialog_action_area1);
680   gtk_widget_show (dialog_action_area1);
681   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);
682   gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area1), 8);
683
684   gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_OK);
685   modules_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
686   gtk_widget_ref (modules_ok);
687   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_ok", modules_ok,
688                             (GtkDestroyNotify) gtk_widget_unref);
689   gtk_widget_show (modules_ok);
690   GTK_WIDGET_SET_FLAGS (modules_ok, GTK_CAN_DEFAULT);
691
692   gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_APPLY);
693   modules_apply = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
694   gtk_widget_ref (modules_apply);
695   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_apply", modules_apply,
696                             (GtkDestroyNotify) gtk_widget_unref);
697   gtk_widget_show (modules_apply);
698   GTK_WIDGET_SET_FLAGS (modules_apply, GTK_CAN_DEFAULT);
699
700   gnome_dialog_append_button (GNOME_DIALOG (intf_modules), GNOME_STOCK_BUTTON_CANCEL);
701   modules_cancel = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_modules)->buttons)->data);
702   gtk_widget_ref (modules_cancel);
703   gtk_object_set_data_full (GTK_OBJECT (intf_modules), "modules_cancel", modules_cancel,
704                             (GtkDestroyNotify) gtk_widget_unref);
705   gtk_widget_show (modules_cancel);
706   GTK_WIDGET_SET_FLAGS (modules_cancel, GTK_CAN_DEFAULT);
707
708   gtk_signal_connect (GTK_OBJECT (intf_modules), "destroy",
709                       GTK_SIGNAL_FUNC (on_intf_modules_destroy),
710                       NULL);
711   gtk_signal_connect (GTK_OBJECT (modules_ok), "clicked",
712                       GTK_SIGNAL_FUNC (on_modules_ok_clicked),
713                       NULL);
714   gtk_signal_connect (GTK_OBJECT (modules_apply), "clicked",
715                       GTK_SIGNAL_FUNC (on_modules_apply_clicked),
716                       NULL);
717   gtk_signal_connect (GTK_OBJECT (modules_cancel), "clicked",
718                       GTK_SIGNAL_FUNC (on_modules_cancel_clicked),
719                       NULL);
720
721   return intf_modules;
722 }
723
724 GtkWidget*
725 create_intf_playlist (void)
726 {
727   GtkWidget *intf_playlist;
728   GtkWidget *dialog_vbox2;
729   GtkWidget *label11;
730   GtkWidget *scrolledwindow3;
731   GtkWidget *clist2;
732   GtkWidget *label8;
733   GtkWidget *label9;
734   GtkWidget *label10;
735   GtkWidget *dialog_action_area2;
736   GtkWidget *playlist_ok;
737
738   intf_playlist = gnome_dialog_new (_("Playlist"), NULL);
739   gtk_object_set_data (GTK_OBJECT (intf_playlist), "intf_playlist", intf_playlist);
740
741   dialog_vbox2 = GNOME_DIALOG (intf_playlist)->vbox;
742   gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_vbox2", dialog_vbox2);
743   gtk_widget_show (dialog_vbox2);
744
745   label11 = gtk_label_new (_("Sorry, the playlist isn't functional yet. Please retry in a later version."));
746   gtk_widget_ref (label11);
747   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label11", label11,
748                             (GtkDestroyNotify) gtk_widget_unref);
749   gtk_widget_show (label11);
750   gtk_box_pack_start (GTK_BOX (dialog_vbox2), label11, FALSE, FALSE, 0);
751
752   scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
753   gtk_widget_ref (scrolledwindow3);
754   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "scrolledwindow3", scrolledwindow3,
755                             (GtkDestroyNotify) gtk_widget_unref);
756   gtk_widget_show (scrolledwindow3);
757   gtk_box_pack_start (GTK_BOX (dialog_vbox2), scrolledwindow3, TRUE, TRUE, 0);
758
759   clist2 = gtk_clist_new (3);
760   gtk_widget_ref (clist2);
761   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "clist2", clist2,
762                             (GtkDestroyNotify) gtk_widget_unref);
763   gtk_widget_show (clist2);
764   gtk_container_add (GTK_CONTAINER (scrolledwindow3), clist2);
765   gtk_clist_set_column_width (GTK_CLIST (clist2), 0, 211);
766   gtk_clist_set_column_width (GTK_CLIST (clist2), 1, 49);
767   gtk_clist_set_column_width (GTK_CLIST (clist2), 2, 35);
768   gtk_clist_column_titles_hide (GTK_CLIST (clist2));
769
770   label8 = gtk_label_new (_("Name"));
771   gtk_widget_ref (label8);
772   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label8", label8,
773                             (GtkDestroyNotify) gtk_widget_unref);
774   gtk_widget_show (label8);
775   gtk_clist_set_column_widget (GTK_CLIST (clist2), 0, label8);
776
777   label9 = gtk_label_new (_("Type"));
778   gtk_widget_ref (label9);
779   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label9", label9,
780                             (GtkDestroyNotify) gtk_widget_unref);
781   gtk_widget_show (label9);
782   gtk_clist_set_column_widget (GTK_CLIST (clist2), 1, label9);
783
784   label10 = gtk_label_new (_("Length"));
785   gtk_widget_ref (label10);
786   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "label10", label10,
787                             (GtkDestroyNotify) gtk_widget_unref);
788   gtk_widget_show (label10);
789   gtk_clist_set_column_widget (GTK_CLIST (clist2), 2, label10);
790
791   dialog_action_area2 = GNOME_DIALOG (intf_playlist)->action_area;
792   gtk_object_set_data (GTK_OBJECT (intf_playlist), "dialog_action_area2", dialog_action_area2);
793   gtk_widget_show (dialog_action_area2);
794   gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_END);
795   gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area2), 8);
796
797   gnome_dialog_append_button (GNOME_DIALOG (intf_playlist), GNOME_STOCK_BUTTON_OK);
798   playlist_ok = GTK_WIDGET (g_list_last (GNOME_DIALOG (intf_playlist)->buttons)->data);
799   gtk_widget_ref (playlist_ok);
800   gtk_object_set_data_full (GTK_OBJECT (intf_playlist), "playlist_ok", playlist_ok,
801                             (GtkDestroyNotify) gtk_widget_unref);
802   gtk_widget_show (playlist_ok);
803   GTK_WIDGET_SET_FLAGS (playlist_ok, GTK_CAN_DEFAULT);
804
805   gtk_signal_connect (GTK_OBJECT (intf_playlist), "destroy",
806                       GTK_SIGNAL_FUNC (on_intf_playlist_destroy),
807                       NULL);
808   gtk_signal_connect (GTK_OBJECT (playlist_ok), "clicked",
809                       GTK_SIGNAL_FUNC (on_playlist_ok_clicked),
810                       NULL);
811
812   return intf_playlist;
813 }
814