]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/gxine/files/enhance.patch
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / gxine / files / enhance.patch
1 diff -urNd gxine-0.4.1/ChangeLog gxine-0.4.1.new/ChangeLog
2 --- gxine-0.4.1/ChangeLog       2004-12-15 23:28:03.000000000 +0000
3 +++ gxine-0.4.1.new/ChangeLog   2005-04-11 22:54:10.033876296 +0100
4 @@ -1,3 +1,19 @@
5 +0.4.1enhanced:
6 +   Chris Lord <cwiiis@handhelds.org>
7 +   * Disabled building of the mozilla plug-in, and removed dependency on libXaw
8 +   * Use GTK stock icons for as many controls as possible and replace volume
9 +     xpms with pngs from rhythmbox.
10 +   * Rework menus
11 +   * Remove info bar
12 +   * Add progress display in Stream info menu (now located in the File menu)
13 +   * Change toolbar to left-click rather than middle-click in full-screen
14 +   * Toolbar renders at minimum size, so it always looks correct in full-screen
15 +   * Disable splash screen
16 +   * Move audio stream switcher to Edit menu
17 +   * Move Up/Down buttons in playlist dialog to a new row (for low-res display)
18 +   * Clear playlist on Open from main window
19 +   * Other miscellaneous interface-related changes...
20 +
21  0.4.1:
22         [dsalt]
23         * Require at least GTK+ 2.4 and GLib 2.4. (I can't test 2.2.)
24 diff -urNd gxine-0.4.1/configure.ac gxine-0.4.1.new/configure.ac
25 --- gxine-0.4.1/configure.ac    2004-12-15 04:37:01.000000000 +0000
26 +++ gxine-0.4.1.new/configure.ac        2005-04-11 04:43:15.000000000 +0100
27 @@ -42,12 +42,6 @@
28  AC_PATH_XTRA
29  
30  dnl ---------------------------------------------
31 -dnl Check for Xaw headers
32 -dnl ---------------------------------------------
33 -AC_CHECK_HEADER(X11/Xaw/Form.h,,
34 -       [AC_MSG_ERROR([you need to install libxaw header files (-dev package)])])
35 -
36 -dnl ---------------------------------------------
37  dnl check for gtk 2
38  dnl ---------------------------------------------
39  PKG_CHECK_MODULES(GLIB2, glib-2.0 >= 2.4.0)
40 @@ -210,6 +204,11 @@
41  AC_DEFINE_UNQUOTED(GXINE_PIXMAPDIR,"$GXINE_PIXMAPPATH",[where to install pixmaps])
42  AC_SUBST(GXINE_PIXMAPPATH)
43  
44 +GXINE_ICONDIR="$datadir/pixmaps"
45 +eval GXINE_ICONPATH=`eval echo "$GXINE_ICONDIR"`
46 +AC_DEFINE_UNQUOTED(GXINE_ICONDIR,"$GXINE_ICONPATH",[where to install desktop icons])
47 +AC_SUBST(GXINE_ICONPATH)
48 +
49  GXINE_MISCDIR="$datadir/gxine"
50  eval GXINE_MISCPATH=`eval echo "$GXINE_MISCDIR"`
51  AC_DEFINE_UNQUOTED(GXINE_MISCDIR,"$GXINE_MISCPATH",[where to install misc files (e.g. sample mediamarks)])
52 @@ -221,7 +220,6 @@
53  src/Makefile
54  src/spidermonkey/Makefile
55  src/spidermonkey/fdlibm/Makefile
56 -browser-plugin/Makefile
57  pixmaps/Makefile
58  doc/Makefile
59  doc/man/Makefile
60 diff -urNd gxine-0.4.1/Makefile.am gxine-0.4.1.new/Makefile.am
61 --- gxine-0.4.1/Makefile.am     2004-12-14 21:48:24.000000000 +0000
62 +++ gxine-0.4.1.new/Makefile.am 2005-04-11 04:45:37.000000000 +0100
63 @@ -1,4 +1,4 @@
64 -SUBDIRS = m4 pixmaps include src doc browser-plugin misc po
65 +SUBDIRS = m4 pixmaps include src doc misc po
66  
67  #DEB_FILES = debian/rules debian/changelog debian/control debian/copyright debian/README.Debian debian/menu
68  EXTRA_DIST = config.rpath gxine.desktop autogen.sh @DEPCOMP@ 
69 diff -urNd gxine-0.4.1/pixmaps/Makefile.am gxine-0.4.1.new/pixmaps/Makefile.am
70 --- gxine-0.4.1/pixmaps/Makefile.am     2004-12-17 02:59:48.000000000 +0000
71 +++ gxine-0.4.1.new/pixmaps/Makefile.am 2005-04-11 14:02:01.000000000 +0100
72 @@ -1,26 +1,35 @@
73  EXTRA_DIST = fast_forward.xpm \
74 -            pause.xpm \
75 -            pause2.xpm \
76 -            play.xpm \
77 -            play2.xpm \
78 -            stop.xpm \
79 -            stop2.xpm \
80 -            sliders.xpm \
81 -            rewind.xpm \
82 +#           pause.xpm \
83 +#           pause2.xpm \
84 +#           play.xpm \
85 +#           play2.xpm \
86 +#           stop.xpm \
87 +#           stop2.xpm \
88 +#           sliders.xpm \
89 +#           rewind.xpm \
90              gxine-logo.png \
91 -            speaker.xpm \
92 -            nospeaker.xpm \
93 -            playlist.xpm \
94 +#           speaker.xpm \
95 +#           nospeaker.xpm \
96 +#           playlist.xpm \
97 +        rhythmbox-volume-max.png \
98 +        rhythmbox-volume-medium.png \
99 +        rhythmbox-volume-min.png \
100 +        rhythmbox-volume-zero.png \
101              subtitle.xpm\
102              logo.mpv \
103 -            gxine-icon.xpm \
104 +#           gxine-icon.xpm \
105              ok.xpm\
106              fail.xpm\
107              wizards.png\
108              splash.png
109  
110  pixmapdir = $(GXINE_PIXMAPPATH)
111 -pixmap_DATA = gxine-logo.png gxine-icon.xpm wizards.png splash.png
112 +pixmap_DATA = wizards.png splash.png rhythmbox-volume-max.png \
113 +              rhythmbox-volume-medium.png rhythmbox-volume-min.png \
114 +              rhythmbox-volume-zero.png
115 +
116 +icondir = $(GXINE_ICONPATH)
117 +icon_DATA = gxine-logo.png
118  
119  datadir   = $(GXINE_LOGOPATH)
120  data_DATA = logo.mpv
121 Binary files gxine-0.4.1/pixmaps/rhythmbox-volume-max.png and gxine-0.4.1.new/pixmaps/rhythmbox-volume-max.png differ
122 Binary files gxine-0.4.1/pixmaps/rhythmbox-volume-medium.png and gxine-0.4.1.new/pixmaps/rhythmbox-volume-medium.png differ
123 Binary files gxine-0.4.1/pixmaps/rhythmbox-volume-min.png and gxine-0.4.1.new/pixmaps/rhythmbox-volume-min.png differ
124 Binary files gxine-0.4.1/pixmaps/rhythmbox-volume-zero.png and gxine-0.4.1.new/pixmaps/rhythmbox-volume-zero.png differ
125 diff -urNd gxine-0.4.1/src/globals.h gxine-0.4.1.new/src/globals.h
126 --- gxine-0.4.1/src/globals.h   2004-12-11 00:40:18.000000000 +0000
127 +++ gxine-0.4.1.new/src/globals.h       2005-04-11 22:56:13.042176192 +0100
128 @@ -62,6 +62,7 @@
129  extern char           *video_driver_id;
130  extern xine_audio_port_t *audio_port;
131  extern xine_video_port_t *video_port;
132 +extern GtkLabel       *time_label;
133  
134  #define MAX_MRL_LEN 1024
135  
136 diff -urNd gxine-0.4.1/src/key_events.c gxine-0.4.1.new/src/key_events.c
137 --- gxine-0.4.1/src/key_events.c        2004-12-17 00:32:59.000000000 +0000
138 +++ gxine-0.4.1.new/src/key_events.c    2005-04-11 22:21:19.000000000 +0100
139 @@ -167,7 +167,7 @@
140        gtk_menu_popup (GTK_MENU(popup_menu), NULL, NULL, NULL, NULL, 0,
141                       gtk_get_current_event_time ());
142        return TRUE;
143 -    case GDK_Pointer_Button2:
144 +    case GDK_Pointer_Button1:
145        if (gtk_video_is_fullscreen (GTK_VIDEO(gtv)))
146         ui_toolbar_toggle ();
147        return TRUE;
148 diff -urNd gxine-0.4.1/src/main.c gxine-0.4.1.new/src/main.c
149 --- gxine-0.4.1/src/main.c      2004-12-14 23:52:37.000000000 +0000
150 +++ gxine-0.4.1.new/src/main.c  2005-04-11 14:20:30.000000000 +0100
151 @@ -280,7 +280,7 @@
152     * a splash screen for the impatient
153     */
154  
155 -  splash_show ();
156 +/*  splash_show ();*/
157  
158    /*
159     * init xine, set up skript engine, main window
160 @@ -288,7 +288,7 @@
161  
162    gdk_threads_enter ();
163  
164 -  gtk_window_set_default_icon (load_icon ("gxine-logo.png"));
165 +  gtk_window_set_default_icon (load_icon (GXINE_ICONPATH "/gxine-logo.png"));
166  
167    engine_init ();
168    player_init ();
169 @@ -319,7 +319,7 @@
170    stream_info_init ();
171    wizards_init     ();
172  
173 -  gtk_widget_destroy (splash);
174 +/*  gtk_widget_destroy (splash);*/
175  
176    /*
177     * wizards (first run only)
178 diff -urNd gxine-0.4.1/src/Makefile.am gxine-0.4.1.new/src/Makefile.am
179 --- gxine-0.4.1/src/Makefile.am 2004-12-15 03:52:43.000000000 +0000
180 +++ gxine-0.4.1.new/src/Makefile.am     2005-04-11 13:48:19.000000000 +0100
181 @@ -12,7 +12,7 @@
182  INCLUDES = -I../include -I$(top_srcdir)/include -I$(includedir) \
183            -I$(top_srcdir)/pixmaps $(LIRC_INCLUDE)
184  
185 -AM_CFLAGS = $(XINE_CFLAGS) @GTK2_CFLAGS@ @GTHREAD2_CFLAGS@ -DLOCALEDIR=\"$(localedir)\"
186 +AM_CFLAGS = $(XINE_CFLAGS) @GTK2_CFLAGS@ @GTHREAD2_CFLAGS@ -DLOCALEDIR=\"$(localedir)\" -DGXINE_PIXMAPPATH=\"@GXINE_PIXMAPPATH@\" -DGXINE_ICONPATH=\"@GXINE_ICONPATH@\"
187  
188  
189  bin_PROGRAMS = gxine gxine_client
190 @@ -46,7 +46,6 @@
191         snapshot.c \
192         player.c \
193         vis.c \
194 -       time_widget.c \
195         widget_video.c \
196         gtkflipbutton.c
197  
198 diff -urNd gxine-0.4.1/src/menu.c gxine-0.4.1.new/src/menu.c
199 --- gxine-0.4.1/src/menu.c      2004-12-15 19:23:19.000000000 +0000
200 +++ gxine-0.4.1.new/src/menu.c  2005-04-11 20:20:52.000000000 +0100
201 @@ -247,7 +247,7 @@
202  {
203    v_engine_exec ("set_video_size (%d);", NULL, NULL, action);
204  }
205 -
206 +/*
207  static void zoom_in_cb(void) {
208    engine_exec ("set_zoom (get_zoom()+5);", NULL, NULL);
209  }
210 @@ -257,7 +257,7 @@
211  static void zoom_100_cb(void) {
212    engine_exec ("set_zoom (100);", NULL, NULL);
213  }
214 -
215 +*/
216  static void aspect_cb(gpointer data, guint action, GtkWidget *widget)
217  {
218    v_engine_exec ("set_aspect (%d);", NULL, NULL, action);
219 @@ -334,6 +334,12 @@
220    engine_exec ("settings_show ();", NULL, NULL);
221  }
222  
223 +static void audio_cb (gpointer data, guint action, GtkWidget *widget)
224 +{
225 +   if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
226 +      v_engine_exec ("set_chan (%d);", NULL, NULL, action);
227 +}
228 +
229  static void sub_cb (gpointer data, guint action, GtkWidget *widget)
230  {
231    if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget)))
232 @@ -363,29 +369,43 @@
233    { N_("/File/_Open..."),              "<control>O",   open_cb, 0,             STOCK(OPEN) },
234    { N_("/File/Open _MRL..."),          "<control>M",   open_mrl_cb, 0,         NULL },
235    { N_("/File/Play_list..."),          NULL,           playlist_cb, 0,         NULL },
236 -  { "/File/sep0",                      NULL,           NULL, 0,                "<Separator>" },
237 -  { N_("/File/_Preferences..."),       NULL,           preferences_cb, 0,      STOCK(PREFERENCES) },
238 -  { N_("/File/_Keybindings..."),       NULL,           keybindings_cb, 0,      NULL },
239 +  { N_("/File/Play _disc"),      NULL, NULL, 0, "<Branch>" },
240    { "/File/sep1",                      NULL,           NULL, 0,                "<Separator>" },
241 +  { N_("/File/Stream _Info..."),       NULL,           stream_info_cb, 0,      NULL },
242    { "/File/sep2",                      NULL,           NULL, 0,                "<Separator>" },
243 -  { N_("/File/_Snapshot..."),          "<control>S",   snapshot_cb, 0,         NULL },
244 -  { "/File/sep3",                      NULL,           NULL, 0,                "<Separator>" },
245    { N_("/File/_Quit"),                 "<control>Q",   exit_cb, 0,             STOCK(QUIT) },
246 +  { N_("/_Edit"),       NULL,    NULL, 0,    "<Branch>" },
247 +  { N_("/Edit/_Preferences..."),       NULL,           preferences_cb, 0,      STOCK(PREFERENCES) },
248 +  { N_("/Edit/_Keybindings..."),       NULL,           keybindings_cb, 0,      NULL },
249 +  { "/Edit/sep1",                      NULL,           NULL, 0,                "<Separator>" },
250 +  { N_("/Edit/A\\/V _settings..."),    NULL,           settings_cb, 0,         NULL },
251 +  { N_("/Edit/_Audio"), NULL, NULL, 0, "<Branch>" },
252 +  { N_("/Edit/Audio/_Auto"), NULL, audio_cb, -1, "<RadioItem>"},
253 +  { N_("/Edit/Audio/_None"), NULL, audio_cb, -2, "/Edit/Audio/Auto"},
254 +  { N_("/Edit/Audio/Channel _0"), NULL, audio_cb, 0, "/Edit/Audio/Auto"},
255 +  { N_("/Edit/Audio/Channel _1"), NULL, audio_cb, 1, "/Edit/Audio/Auto"},
256 +  { N_("/Edit/Audio/Channel _2"), NULL, audio_cb, 2, "/Edit/Audio/Auto"},
257 +  { N_("/Edit/Audio/Channel _3"), NULL, audio_cb, 3, "/Edit/Audio/Auto"},
258 +  { N_("/Edit/Audio/Channel _4"), NULL, audio_cb, 4, "/Edit/Audio/Auto"},
259 +  { N_("/Edit/Audio/Channel _5"), NULL, audio_cb, 5, "/Edit/Audio/Auto"},
260 +  { N_("/Edit/Audio/Channel _6"), NULL, audio_cb, 6, "/Edit/Audio/Auto"},
261 +  { N_("/Edit/Audio/Channel _7"), NULL, audio_cb, 7, "/Edit/Audio/Auto"},
262    { N_("/_View"),                      NULL,           NULL, 0,                "<Branch>" },
263    { N_("/View/_Fullscreen mode"),      "<control>F",   fullscreen_cb, 0,       "<CheckItem>" },
264    { N_("/View/Fullscreen _toolbar"),   NULL,           NULL, 0,                "<Branch>" },
265    { N_("/View/Fullscreen toolbar/_Visible"),   NULL,   tbar_toggle_cb, 0,      "<CheckItem>" },
266 +  { N_("/View/_Snapshot..."),          "<control>S",   snapshot_cb, 0,         NULL },
267    { N_("/View/Fullscreen toolbar/At _top"),    NULL,   tbar_position_cb, 1,    "<RadioItem>" },
268    { N_("/View/Fullscreen toolbar/At _bottom"), NULL,   tbar_position_cb, 0,    "/View/Fullscreen toolbar/At top" },
269    { "/View/sep3",                      NULL,           NULL, 0,                "<Separator>" },
270 -  { N_("/View/_50%"),                  NULL,           factor_cb, 50,          NULL },
271 -  { N_("/View/_100%"),                 NULL,           factor_cb, 100,         NULL },
272 -  { N_("/View/_200%"),                 NULL,           factor_cb, 200,         NULL },
273 -  { "/View/sep4",                      NULL,           NULL, 0,                "<Separator>" },
274 +  { N_("/View/_Zoom"),        NULL,    NULL,       0,    "<Branch>" },
275 +  { N_("/View/Zoom/_50%"),                     NULL,           factor_cb, 50,          NULL },
276 +  { N_("/View/Zoom/_100%"),                    NULL,           factor_cb, 100,         NULL },
277 +  { N_("/View/Zoom/_200%"),                    NULL,           factor_cb, 200,         NULL },
278 +/* The following settings don't work anyway...  
279    { N_("/View/Zoom _in"),              NULL,           zoom_in_cb, 0,          STOCK(ZOOM_IN) },
280    { N_("/View/Zoom _out"),             NULL,           zoom_out_cb, 0,         STOCK(ZOOM_OUT) },
281 -  { N_("/View/_Zoom 100%"),            NULL,           zoom_100_cb, 0,         STOCK(ZOOM_100) },
282 -  { "/View/sep5",                      NULL,           NULL, 0,                "<Separator>" },
283 +  { N_("/View/_Zoom 100%"),            NULL,           zoom_100_cb, 0,         STOCK(ZOOM_100) },*/
284    { N_("/View/_Deinterlace"),          "<control>I",   deinterlace_cb, 0,      "<CheckItem>" },
285    { N_("/View/Auto _resize"),          NULL,           auto_resize_cb, 0,      "<CheckItem>" },
286    { N_("/View/_Aspect ratio"),         NULL,           NULL, 0,                "<Branch>" },
287 @@ -394,7 +414,6 @@
288    { N_("/View/Aspect ratio/_4:3"),     NULL,           ASPECT(4_3),            "/View/Aspect ratio/Auto"},
289    { N_("/View/Aspect ratio/_16:9"),    NULL,           ASPECT(ANAMORPHIC),     "/View/Aspect ratio/Auto"},
290    { N_("/View/Aspect ratio/_2:1"),     NULL,           ASPECT(DVB),            "/View/Aspect ratio/Auto"},
291 -  { N_("/View/A\\/V _settings..."),    NULL,           settings_cb, 0,         NULL },
292    { "/View/sep6",                      NULL,           NULL, 0,                "<Separator>" },
293    { N_("/View/_Visualisations"),       NULL,           NULL, 0,                "<Branch>" },
294    { N_("/View/Visualisations/_None"),  NULL,           vis_none_cb, 0,         "<RadioItem>"},
295 @@ -415,10 +434,9 @@
296    { N_("/Media/_Manage media marks..."), "<control>B", mediamarks_manage_cb, 0, NULL },
297    { N_("/Media/_Import media marks..."), NULL,         mediamarks_import_cb, 0, STOCK(OPEN) },
298    { "/Media/sep8",                     NULL,           NULL, 0,                "<Separator>" },
299 -  { N_("/_Help"),                      NULL,           NULL, 0,                "<LastBranch>" },
300 +  { N_("/_Help"),                      NULL,           NULL, 0,                "<Branch>" },
301    { N_("/Help/_About..."),             NULL,           about_cb, 0,            NULL },
302    { N_("/Help/Engine _Log..."),                "<control>L",   log_cb, 0,              NULL },
303 -  { N_("/Help/Stream _Info..."),       NULL,           stream_info_cb, 0,      NULL },
304    { "/Help/sep6",                      NULL,           NULL, 0,                "<Separator>" },
305    { N_("/Help/_Re-run setup wizards..."), NULL,                wizards_cb, 0,          NULL },
306  };
307 @@ -501,10 +519,8 @@
308      aspect_menu_items[i] = gtk_radio_menu_item_get_group (none_item);
309  
310      menu = GTK_MENU_SHELL (gtk_item_factory_get_widget (item_factory[i],
311 -                                                       "/File"));
312 -    add_autoplay_entries (menu, g_list_index (menu->children,
313 -                                 gtk_item_factory_get_widget (item_factory[i],
314 -                                                              "/File/sep1")));
315 +                                                       "/File/Play disc"));
316 +    add_autoplay_entries (menu, g_list_index (menu->children, 0));
317  
318      none_item = GTK_RADIO_MENU_ITEM (gtk_item_factory_get_item (item_factory[i], "/View/Visualisations/None"));
319      add_vis_entries (GTK_MENU_SHELL (gtk_item_factory_get_widget (item_factory[i], "/View/Visualisations")), none_item);
320 diff -urNd gxine-0.4.1/src/noskin_window.c gxine-0.4.1.new/src/noskin_window.c
321 --- gxine-0.4.1/src/noskin_window.c     2004-12-15 23:59:59.000000000 +0000
322 +++ gxine-0.4.1.new/src/noskin_window.c 2005-04-11 22:58:41.125664080 +0100
323 @@ -41,18 +41,19 @@
324  #include "drag_drop.h"
325  #include "gtkvideo.h"
326  #include "gtkflipbutton.h"
327 -#include "infobar.h"
328 -#include "time_widget.h"
329 +/*#include "infobar.h"
330 +#include "time_widget.h"*/
331  #include "vis.h"
332 +#include "stream_info.h"
333  
334 -#include "playlist.xpm"
335 +/*#include "playlist.xpm"
336  #include "play.xpm"
337  #include "pause.xpm"
338  #include "stop.xpm"
339  #include "speaker.xpm"
340  #include "nospeaker.xpm"
341  #include "sliders.xpm"
342 -#include "fast_forward.xpm"
343 +#include "fast_forward.xpm"*/
344  
345  /*
346  #define VIS_WIDGET
347 @@ -108,7 +109,7 @@
348    gtk_widget_show_all (button);
349    return button;
350  }
351 -
352 +/*
353  static GtkWidget *new_pixmap (gchar **xpm)
354  {
355    GdkPixmap *image;
356 @@ -118,7 +119,8 @@
357             (NULL, gdk_colormap_get_system(), &transparent, NULL, xpm);
358    return gtk_pixmap_new (image, transparent);
359  }
360 -
361 +*/
362 +/*
363  static GtkWidget *add_pix_button (GtkWidget *box, gchar **pixmap_array,
364                                   char *cmd, char *tip, gboolean toggle,
365                                   gboolean start)
366 @@ -136,7 +138,26 @@
367    gtk_container_add (GTK_CONTAINER(button), new_pixmap (pixmap_array));
368    return add_pix_button_common (box, button, cmd, tip, start);
369  }
370 -
371 +*/
372 +static GtkWidget *add_stock_button (GtkWidget *box, const gchar *stock_id,
373 +                                    GtkIconSize size, char *cmd, char *tip,
374 +                                    gboolean toggle, gboolean start)
375 +{
376 +   GtkWidget *button;
377 +     
378 +   if (toggle)
379 +   {
380 +      button = gtk_toggle_button_new ();
381 +      g_signal_connect (GTK_OBJECT(button), "toggled",
382 +              G_CALLBACK(toggle_cb), NULL);
383 +   }
384 +   else
385 +      button = gtk_button_new ();
386 +   gtk_container_add (GTK_CONTAINER(button),
387 +                      gtk_image_new_from_stock (stock_id, size));
388 +   return add_pix_button_common (box, button, cmd, tip, start);
389 +}
390 +/*
391  static GtkWidget *add_pix_flip_button (GtkWidget *box, gchar **inactive,
392                                        gchar **active, char * cmd, char *tip,
393                                        gboolean start)
394 @@ -147,6 +168,27 @@
395                     G_CALLBACK(toggle_cb), NULL);
396    return add_pix_button_common (box, button, cmd, tip, start);
397  }
398 +*/
399 +
400 +static GtkWidget *gxine_icon_new_from_file (const gchar *filename,
401 +                                            GtkIconSize size)
402 +{
403 +   /* This should do some error checking... */
404 +   return gtk_image_new_from_icon_set (gtk_icon_set_new_from_pixbuf (
405 +                  gdk_pixbuf_new_from_file (filename, NULL)), size);
406 +}
407 +
408 +static GtkWidget *add_file_flip_button (GtkWidget *box, const gchar *inactive,
409 +                                      const gchar *active, GtkIconSize size, char * cmd, char *tip,
410 +                                      gboolean start)
411 +{
412 +  GtkWidget *button = gtk_flip_button_new (
413 +                  gxine_icon_new_from_file (inactive, size),
414 +                                          gxine_icon_new_from_file (active, size));
415 +  g_signal_connect (GTK_OBJECT(button), "toggled",
416 +                   G_CALLBACK(toggle_cb), NULL);
417 +  return add_pix_button_common (box, button, cmd, tip, start);
418 +}
419  
420  /*
421   * slider
422 @@ -154,6 +196,7 @@
423  
424  static gint update_slider_cb (gpointer data) {
425  
426 +  char buffer[30];
427    gint pos_stream, pos_time, length_time;
428    int hv_new, ha_new;
429  
430 @@ -173,7 +216,9 @@
431        gtk_widget_hide (gtv);
432      else
433        gtk_widget_show (gtv);
434 -    gtk_window_resize (GTK_WINDOW(app), 10, 10);
435 +      
436 +/*  This really isn't the way to go about this!
437 +    gtk_window_resize (GTK_WINDOW(app), 10, 10);*/
438    }
439  
440    if (xine_get_status (stream) != XINE_STATUS_PLAY)
441 @@ -186,6 +231,11 @@
442  
443    /* update the control buttons while we're here */
444    ui_set_status (UI_CURRENT_STATE);
445 +  
446 +  /* Update time label */
447 +  snprintf (&buffer, 30, "Progress: %i:%.2i / %i:%.2i", (pos_time/1000)/60,
448 +            (pos_time/1000)%60, (length_time/1000)/60, (length_time/1000)%60);
449 +  gtk_label_set_text (time_label, &buffer);
450  
451    return TRUE;
452  }
453 @@ -295,7 +345,7 @@
454  void noskin_main_init (void) {
455  
456    GtkWidget     *vbox;
457 -  GtkWidget     *infobox, *infobar, *tw;
458 +  GtkWidget     *infobox/*, *infobar, *tw*/;
459  #ifdef VIS_WIDGET
460    GtkWidget     *vis;
461    xine_post_out_t *vis_out;
462 @@ -304,7 +354,7 @@
463    GtkWidget     *scale, *vol_scale;
464    GtkWidget     *ctrl;
465    GtkWidget     *audio_spinner;
466 -  time_widget_t *time_widget;
467 +/*  time_widget_t *time_widget;*/
468    GdkGeometry    cw_geom;
469  
470    tips = gtk_tooltips_new ();
471 @@ -324,7 +374,7 @@
472    gtk_window_set_accept_focus (GTK_WINDOW(controlwindow), FALSE);
473  
474    memset (&cw_geom, 0, sizeof (cw_geom));
475 -  cw_geom.max_width = cw_geom.min_width = gdk_screen_width ();
476 +  cw_geom.max_width = cw_geom.min_width = -1;
477    cw_geom.max_height = cw_geom.min_height = -1;
478    cw_geom.win_gravity = GDK_GRAVITY_SOUTH_WEST;
479    gtk_window_set_geometry_hints
480 @@ -384,7 +434,7 @@
481  
482    gtv = gtk_video_new (xine, stream, xine_get_video_source (stream), 
483                        video_driver_id, 480, 300,
484 -                       0x04 /* press: button 2 */,
485 +                       0x02 /* press: button 1 */,
486                         0x08 /* release: button 3 */);
487    drag_drop_setup (gtv);
488    g_signal_connect (GTK_OBJECT (gtv), "keypress",
489 @@ -423,13 +473,13 @@
490    gtk_box_pack_start (GTK_BOX(infobox), vis, FALSE, FALSE, 0);
491  #endif
492  
493 -  time_widget = create_time_widget (&tw);
494 +/*  time_widget = create_time_widget (&tw);
495    gtk_box_pack_start (GTK_BOX(infobox), tw, FALSE, FALSE, 0);
496    drag_drop_setup (tw);
497  
498    bar = create_infobar (&infobar);
499    gtk_box_pack_start (GTK_BOX(infobox), infobar, TRUE, TRUE, 0);
500 -  drag_drop_setup (infobar);
501 +  drag_drop_setup (infobar);*/
502  
503    gtk_box_pack_start (GTK_BOX(vbox), infobox, FALSE, FALSE, 2);
504  
505 @@ -446,6 +496,7 @@
506    ctrl = gtk_hbox_new (0, 2);
507    gtk_box_pack_start (GTK_BOX(ctrl), scale, TRUE, TRUE, 4);
508    gtk_box_pack_start (GTK_BOX(sliderbox), ctrl, TRUE, TRUE, 2);
509 +    
510    gtk_box_pack_start (GTK_BOX(vbox), sliderbox, FALSE, FALSE, 0);
511  
512    /*
513 @@ -458,35 +509,37 @@
514  
515    ui_register_control_button
516      (Control_PLAY,
517 -     add_pix_button (ctrl, play_xpm, "play ();", _("Play"), TRUE, TRUE));
518 +     add_stock_button (ctrl, GTK_STOCK_MEDIA_PLAY, GTK_ICON_SIZE_BUTTON,
519 +                       "play ();", _("Play"), TRUE, TRUE));
520    ui_register_control_button
521      (Control_FASTFWD,
522 -     add_pix_button (ctrl, fast_forward_xpm,
523 +     add_stock_button (ctrl, GTK_STOCK_MEDIA_FORWARD, GTK_ICON_SIZE_BUTTON,
524                      "if (!is_live_stream ()) set_speed (16);",
525                      _("Fast forward"), TRUE, TRUE));
526    ui_register_control_button
527      (Control_PAUSE,
528 -     add_pix_button (ctrl, pause_xpm,
529 +     add_stock_button (ctrl, GTK_STOCK_MEDIA_PAUSE, GTK_ICON_SIZE_BUTTON,
530                      "if (!is_live_stream ()) pause ();",
531                      _("Pause"), TRUE, TRUE));
532    ui_register_control_button
533      (Control_STOP,
534 -     add_pix_button (ctrl, stop_xpm, "stop ();", _("Stop"), TRUE, TRUE));
535 +     add_stock_button (ctrl, GTK_STOCK_MEDIA_STOP, GTK_ICON_SIZE_BUTTON,
536 +                     "stop ();", _("Stop"), TRUE, TRUE));
537  
538 -  add_pix_button (ctrl, playlist_xpm,
539 +  add_stock_button (ctrl, GTK_STOCK_EDIT, GTK_ICON_SIZE_BUTTON,
540                   "playlist_show ()", _("Playlist"), FALSE, TRUE);
541 -  add_pix_button (ctrl, sliders_xpm,
542 -                 "settings_show ()", _("A/V settings"), FALSE, TRUE);
543 +/*  add_pix_button (ctrl, sliders_xpm,
544 +                 "settings_show ()", _("A/V settings"), FALSE, TRUE);*/
545  
546    /* audio channel selection */
547  
548 -  audio_adj = ui_register_control_adjustment (Control_AUDIO_CHANNEL);
549 +/*  audio_adj = ui_register_control_adjustment (Control_AUDIO_CHANNEL);
550    audio_spinner = gtk_spin_button_new (GTK_ADJUSTMENT (audio_adj),
551                                        1.0,0);
552    gtk_spin_button_set_numeric (GTK_SPIN_BUTTON(audio_spinner), TRUE);
553    gtk_tooltips_set_tip (GTK_TOOLTIPS (tips), audio_spinner,
554                         _("Audio channel"), NULL);
555 -  gtk_box_pack_end (GTK_BOX(ctrl), audio_spinner, FALSE, FALSE, 5);
556 +  gtk_box_pack_end (GTK_BOX(ctrl), audio_spinner, FALSE, FALSE, 5);*/
557  
558    /* volume slider */
559  
560 @@ -501,7 +554,8 @@
561  
562    ui_register_control_button
563      (Control_MUTE,
564 -     add_pix_flip_button (ctrl, nospeaker_xpm, speaker_xpm,
565 +     add_file_flip_button (ctrl, GXINE_PIXMAPPATH "/rhythmbox-volume-zero.png",
566 +           GXINE_PIXMAPPATH "/rhythmbox-volume-max.png", GTK_ICON_SIZE_BUTTON,
567                           "set_mute ();", _("Mute/unmute"), FALSE));
568  
569    gtk_box_pack_end (GTK_BOX(sliderbox), ctrl, FALSE, FALSE, 4);
570 @@ -513,9 +567,9 @@
571  
572    have_video = 1;
573  
574 -  postinit_infobar (app, bar);
575 -  postinit_time_widget (app, time_widget);
576 -
577 +/*  postinit_infobar (app, bar);
578 +  postinit_time_widget (app, time_widget);*/
579 +  
580    gtk_timeout_add (1000, update_slider_cb, NULL);
581  }
582  #endif /* !EXP_STUFF */
583 diff -urNd gxine-0.4.1/src/open_mrl.c gxine-0.4.1.new/src/open_mrl.c
584 --- gxine-0.4.1/src/open_mrl.c  2004-12-02 19:43:11.000000000 +0000
585 +++ gxine-0.4.1.new/src/open_mrl.c      2005-04-11 22:38:39.000000000 +0100
586 @@ -43,6 +43,9 @@
587      int    pos, i;
588      gchar *mrl;
589  
590 +    /* Clear playlist on load */
591 +    playlist_clear ();
592 +    
593      i = 0; pos = 0;
594      while ( (mrl = fnames[i]) ) {
595  
596 diff -urNd gxine-0.4.1/src/player.c gxine-0.4.1.new/src/player.c
597 --- gxine-0.4.1/src/player.c    2004-12-11 00:40:18.000000000 +0000
598 +++ gxine-0.4.1.new/src/player.c        2005-04-11 18:14:37.000000000 +0100
599 @@ -436,6 +436,23 @@
600    return JS_TRUE;
601  }
602  
603 +static JSBool js_set_chan (JSContext *cx, JSObject *obj, uintN argc, 
604 +                         jsval *argv, jsval *rval) {
605 +
606 +  se_t *se = (se_t *) JS_GetContextPrivate(cx);
607 +  int   channel;
608 +
609 +  se_log_fncall ("set_chan");
610 +  se_argc_check (1, "set_chan");
611 +  se_arg_is_int (0, "set_chan");
612 +
613 +  JS_ValueToInt32 (cx, argv[0], &channel);
614 +
615 +  xine_set_param (stream, XINE_PARAM_AUDIO_CHANNEL_LOGICAL, channel);
616 +
617 +  return JS_TRUE;
618 +}
619 +
620  static JSBool js_set_fullscreen (JSContext *cx, JSObject *obj, uintN argc, 
621                                  jsval *argv, jsval *rval) {
622  
623 @@ -924,6 +941,8 @@
624         SE_GROUP_PROPERTIES, N_("[bool]"), NULL },
625        { "set_sub", js_set_sub, 0, 0,
626         SE_GROUP_PROPERTIES, N_("int"), NULL },
627 +      { "set_chan", js_set_chan, 0, 0,
628 +       SE_GROUP_PROPERTIES, N_("int"), NULL },
629        { "set_deinterlace", js_set_deinterlace, 0, 0,
630         SE_GROUP_PROPERTIES, N_("[bool]"), NULL },
631        { "set_auto_resize", js_set_auto_resize, 0, 0,
632 diff -urNd gxine-0.4.1/src/playlist.c gxine-0.4.1.new/src/playlist.c
633 --- gxine-0.4.1/src/playlist.c  2004-12-17 00:33:00.000000000 +0000
634 +++ gxine-0.4.1.new/src/playlist.c      2005-04-11 19:21:11.000000000 +0100
635 @@ -1218,6 +1218,10 @@
636        gtk_tree_path_free (path);
637  
638        playlist_play (item); 
639 +      
640 +      /* Hide the playlist after making a selection */
641 +      is_visible = FALSE;
642 +      gtk_widget_hide (dlg);
643      }
644    }
645    return FALSE;
646 @@ -1743,7 +1747,7 @@
647                     G_CALLBACK(add_cb), 
648                     tree_view);
649    gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 2);
650 -  button = gtk_button_new_with_label (_("Edit"));
651 +  button = gtk_button_new_from_stock (GTK_STOCK_EDIT);
652    g_signal_connect (GTK_OBJECT(button), "clicked", 
653                     G_CALLBACK(edit_cb), 
654                     tree_view);
655 @@ -1753,6 +1757,16 @@
656                     G_CALLBACK(del_cb), 
657                     tree_view);
658    gtk_box_pack_start (GTK_BOX(hbox), button, TRUE, TRUE, 2);
659 +
660 +  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), hbox,
661 +                     FALSE, FALSE, 2);
662 +
663 +  /*
664 +   * Up/Down buttons
665 +   */
666 +   
667 +  hbox = gtk_hbox_new (1, 2);
668 +
669    button = gtk_button_new_from_stock (GTK_STOCK_GO_UP);
670    g_signal_connect (GTK_OBJECT(button), "clicked", 
671                     G_CALLBACK(up_cb), 
672 @@ -1767,6 +1781,7 @@
673    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), hbox,
674                       FALSE, FALSE, 2);
675  
676 +
677    button = gtk_dialog_add_button (GTK_DIALOG (dlg), GTK_STOCK_CLOSE, 1);
678    g_signal_connect (GTK_OBJECT(button), "clicked", 
679                     G_CALLBACK(close_cb), 
680 diff -urNd gxine-0.4.1/src/script_engine.c gxine-0.4.1.new/src/script_engine.c
681 --- gxine-0.4.1/src/script_engine.c     2004-12-13 21:19:23.000000000 +0000
682 +++ gxine-0.4.1.new/src/script_engine.c 2005-04-11 13:53:36.000000000 +0100
683 @@ -178,10 +178,10 @@
684  
685      layout = gtk_table_new (1, 2, FALSE);
686  
687 -    file = g_strconcat (pixmapdir, "/gxine-logo.png", NULL);
688 +    file = GXINE_ICONDIR "/gxine-logo.png";
689      gtk_table_attach (GTK_TABLE (layout), gtk_image_new_from_file (file),
690                       0, 1, 0, 1, 0, 0, 8, 8);
691 -    g_free (file);
692 +/*    g_free (file);*/
693  
694      if (!content)
695        content = g_strdup_printf (gettext (content_src), VERSION);
696 diff -urNd gxine-0.4.1/src/stream_info.c gxine-0.4.1.new/src/stream_info.c
697 --- gxine-0.4.1/src/stream_info.c       2004-12-02 02:38:32.000000000 +0000
698 +++ gxine-0.4.1.new/src/stream_info.c   2005-04-11 22:05:00.000000000 +0100
699 @@ -35,6 +35,7 @@
700  static GtkWidget    *dlg;
701  static int           is_visible;
702  static GtkListStore *meta_store;
703 +       GtkLabel     *time_label;
704  
705  static void add_meta_entry (const gchar *l, int info) {
706  
707 @@ -196,9 +197,13 @@
708                                   GTK_POLICY_AUTOMATIC, 
709                                   GTK_POLICY_AUTOMATIC);
710    gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
711 +  
712 +  time_label = gtk_label_new ("Progress: 0:00 / 0:00");
713  
714    gtk_box_pack_start (GTK_BOX(GTK_DIALOG (dlg)->vbox), scrolled_window,
715                       TRUE, TRUE, 2);
716 +  gtk_box_pack_start (GTK_BOX(GTK_DIALOG (dlg)->vbox), time_label,
717 +            FALSE, FALSE, 2);
718  
719    is_visible = FALSE;
720  
721 diff -urNd gxine-0.4.1/src/utils.c gxine-0.4.1.new/src/utils.c
722 --- gxine-0.4.1/src/utils.c     2004-12-17 00:33:00.000000000 +0000
723 +++ gxine-0.4.1.new/src/utils.c 2005-04-11 14:21:54.000000000 +0100
724 @@ -129,13 +129,13 @@
725  GdkPixbuf *load_icon (const char *filename) {
726  
727    GdkPixbuf *pix;
728 -  gchar     *pathname;
729 +/*  gchar     *pathname;
730  
731 -  pathname = g_strconcat (pixmapdir, "/", filename, NULL);
732 +  pathname = g_strconcat (pixmapdir, "/", filename, NULL);*/
733  
734 -  pix = gdk_pixbuf_new_from_file (pathname, NULL);
735 +  pix = gdk_pixbuf_new_from_file (filename, NULL);
736  
737 -  g_free (pathname);
738 +/*  g_free (pathname);*/
739  
740    return pix;
741  }