diff src/mplayer/interface.c @ 135:33d24bd94ccc trunk

[svn] Adds mplayer controls the plugin pack. I don't know crap about configure.ac, so it's totally busted. Also, I used the string "what" in common.c and interface.c. I'm not going to pretend I actually know what I was doing there, but it seems to work despite that.
author asheldon
date Sat, 28 Oct 2006 18:08:06 -0700
parents
children 52c85b72354b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/mplayer/interface.c	Sat Oct 28 18:08:06 2006 -0700
@@ -0,0 +1,500 @@
+
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <audacious/plugin.h>
+#include <audacious/beepctrl.h>
+#include <audacious/rcfile.h>
+#include <audacious/util.h>
+
+#include "xmmsmplayer.h"
+
+static GtkWidget *vo_none;
+static GtkWidget *vo_xv;
+static GtkWidget *vo_x11;
+static GtkWidget *vo_gl;
+static GtkWidget *vo_sdl;
+static GtkWidget *opt_zoom;
+static GtkWidget *opt_framedrop;
+static GtkWidget *opt_idx;
+static GtkWidget *opt_onewin;
+static GtkWidget *opt_xmmsaudio;
+static GtkWidget *ao_none;
+static GtkWidget *ao_oss;
+static GtkWidget *ao_arts;
+static GtkWidget *ao_esd;
+static GtkWidget *ao_alsa;
+static GtkWidget *ao_sdl;
+static GtkWidget *entry_extra_opts;
+
+static GtkWidget *mplayer_configure_win = NULL;
+
+void mplayer_destroyed_conf_win(GtkWidget *widget, gpointer data) {
+  mplayer_configure_win = NULL;
+}
+
+
+void on_btn_cancel_clicked(GtkButton *button, gpointer user_data){
+  gtk_widget_destroy(mplayer_configure_win);
+  mplayer_configure_win=NULL;
+}
+
+
+void on_btn_ok_clicked (GtkButton *button, gpointer user_data){
+  RcFile *cfg;
+  struct mplayer_cfg new_cfg;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vo_none)))
+    new_cfg.vo=MPLAYER_VO_NONE;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vo_xv)))
+    new_cfg.vo=MPLAYER_VO_XV;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vo_x11)))
+    new_cfg.vo=MPLAYER_VO_X11;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vo_gl)))
+    new_cfg.vo=MPLAYER_VO_GL;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vo_sdl)))
+    new_cfg.vo=MPLAYER_VO_SDL;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ao_none)))
+    new_cfg.ao=MPLAYER_AO_NONE;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ao_oss)))
+    new_cfg.ao=MPLAYER_AO_OSS;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ao_arts)))
+    new_cfg.ao=MPLAYER_AO_ARTS;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ao_esd)))
+    new_cfg.ao=MPLAYER_AO_ESD;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ao_alsa)))
+    new_cfg.ao=MPLAYER_AO_ALSA;
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ao_sdl)))
+    new_cfg.ao=MPLAYER_AO_SDL;
+  new_cfg.zoom=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(opt_zoom));
+  new_cfg.framedrop=
+    gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(opt_framedrop));
+  new_cfg.idx=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(opt_idx));
+  new_cfg.onewin=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(opt_onewin));
+  new_cfg.xmmsaudio=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(opt_xmmsaudio));
+  if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(opt_xmmsaudio)))
+    new_cfg.ao=MPLAYER_AO_XMMS;
+  new_cfg.extra=gtk_entry_get_text(GTK_ENTRY(entry_extra_opts));
+
+//  cfg = xmms_cfg_open_default_file();
+  cfg=bmp_rcfile_open("what");
+  bmp_rcfile_write_int(cfg,"xmms-mplayer","vo",new_cfg.vo);
+  bmp_rcfile_write_int(cfg,"xmms-mplayer","ao",new_cfg.ao);
+  bmp_rcfile_write_boolean(cfg,"xmms-mplayer","zoom",new_cfg.zoom);
+  bmp_rcfile_write_boolean(cfg,"xmms-mplayer","framedrop",new_cfg.framedrop);
+  bmp_rcfile_write_boolean(cfg,"xmms-mplayer","idx",new_cfg.idx);
+  bmp_rcfile_write_boolean(cfg,"xmms-mplayer","onewin",new_cfg.onewin);
+  bmp_rcfile_write_boolean(cfg,"xmms-mplayer","xmmsaudio",new_cfg.xmmsaudio);
+  bmp_rcfile_write_string(cfg,"xmms-mplayer","extra",new_cfg.extra);
+  bmp_rcfile_write(cfg, "what");
+//  xmms_cfg_write_default_file(cfg);
+  bmp_rcfile_free(cfg);
+
+  gtk_widget_destroy(mplayer_configure_win);
+  mplayer_configure_win=NULL;
+}
+
+
+GtkWidget*
+mplayer_create_configure_win (void)
+{
+  GtkWidget *window1;
+  GtkWidget *scrolledwindow1;
+  GtkWidget *layout1;
+  GtkWidget *notebook1;
+  GtkWidget *scrolledwindow2;
+  GtkWidget *layout2;
+  GSList *layout2_group = NULL;
+  GtkWidget *label_vo;
+  GtkWidget *scrolledwindow3;
+  GtkWidget *layout3;
+  GSList *layout3_group = NULL;
+  GtkWidget *label_ao;
+  GtkWidget *scrolledwindow4;
+  GtkWidget *layout4;
+  GtkWidget *label_other;
+  GtkWidget *scrolledwindow5;
+  GtkWidget *layout5;
+  GtkWidget *label_extra_des;
+  GtkWidget *label_extra;
+  GtkWidget *btn_ok;
+  GtkWidget *btn_cancel;
+
+  window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_object_set_data (GTK_OBJECT (window1), "window1", window1);
+  gtk_window_set_title (GTK_WINDOW (window1), "Xmms-Mplayer");
+  gtk_widget_set_usize (window1, 550, 430);
+
+
+  scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_ref (scrolledwindow1);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "scrolledwindow1", scrolledwindow1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (scrolledwindow1);
+  gtk_container_add (GTK_CONTAINER (window1), scrolledwindow1);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  layout1 = gtk_layout_new (NULL, NULL);
+  gtk_widget_ref (layout1);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "layout1", layout1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (layout1);
+  gtk_container_add (GTK_CONTAINER (scrolledwindow1), layout1);
+  gtk_layout_set_size (GTK_LAYOUT (layout1), 336, 235);
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout1)->hadjustment)->step_increment = 10;
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout1)->vadjustment)->step_increment = 10;
+
+  notebook1 = gtk_notebook_new ();
+  gtk_widget_ref (notebook1);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "notebook1", notebook1,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (notebook1);
+  gtk_layout_put (GTK_LAYOUT (layout1), notebook1, 24, 24);
+  gtk_widget_set_usize (notebook1, 496, 336);
+
+  scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_ref (scrolledwindow2);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "scrolledwindow2", scrolledwindow2,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (scrolledwindow2);
+  gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow2);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  layout2 = gtk_layout_new (NULL, NULL);
+  gtk_widget_ref (layout2);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "layout2", layout2,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (layout2);
+  gtk_container_add (GTK_CONTAINER (scrolledwindow2), layout2);
+  gtk_layout_set_size (GTK_LAYOUT (layout2), 384, 296);
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout2)->hadjustment)->step_increment = 10;
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout2)->vadjustment)->step_increment = 10;
+
+  vo_none = gtk_radio_button_new_with_label (layout2_group, "Automatic (MPlayer Chooses)");
+  layout2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (vo_none));
+  gtk_widget_ref (vo_none);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "vo_none", vo_none,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (vo_none);
+  gtk_layout_put (GTK_LAYOUT (layout2), vo_none, 24, 32);
+  gtk_widget_set_usize (vo_none, 336, 24);
+
+  vo_xv = gtk_radio_button_new_with_label (layout2_group, "Xvideo");
+  layout2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (vo_xv));
+  gtk_widget_ref (vo_xv);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "vo_xv", vo_xv,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (vo_xv);
+  gtk_layout_put (GTK_LAYOUT (layout2), vo_xv, 24, 64);
+  gtk_widget_set_usize (vo_xv, 96, 24);
+
+  vo_x11 = gtk_radio_button_new_with_label (layout2_group, "X11");
+  layout2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (vo_x11));
+  gtk_widget_ref (vo_x11);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "vo_x11", vo_x11,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (vo_x11);
+  gtk_layout_put (GTK_LAYOUT (layout2), vo_x11, 24, 104);
+  gtk_widget_set_usize (vo_x11, 96, 24);
+
+  vo_gl = gtk_radio_button_new_with_label (layout2_group, "GL");
+  layout2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (vo_gl));
+  gtk_widget_ref (vo_gl);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "vo_gl", vo_gl,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (vo_gl);
+  gtk_layout_put (GTK_LAYOUT (layout2), vo_gl, 24, 144);
+  gtk_widget_set_usize (vo_gl, 96, 24);
+
+  vo_sdl = gtk_radio_button_new_with_label (layout2_group, "SDL");
+  layout2_group = gtk_radio_button_group (GTK_RADIO_BUTTON (vo_sdl));
+  gtk_widget_ref (vo_sdl);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "vo_sdl", vo_sdl,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (vo_sdl);
+  gtk_layout_put (GTK_LAYOUT (layout2), vo_sdl, 24, 184);
+  gtk_widget_set_usize (vo_sdl, 96, 24);
+
+  label_vo = gtk_label_new ("Video Out");
+  gtk_widget_ref (label_vo);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "label_vo", label_vo,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label_vo);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label_vo);
+
+  scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_ref (scrolledwindow3);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "scrolledwindow3", scrolledwindow3,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (scrolledwindow3);
+  gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow3);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  layout3 = gtk_layout_new (NULL, NULL);
+  gtk_widget_ref (layout3);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "layout3", layout3,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (layout3);
+  gtk_container_add (GTK_CONTAINER (scrolledwindow3), layout3);
+  gtk_layout_set_size (GTK_LAYOUT (layout3), 382, 295);
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout3)->hadjustment)->step_increment = 10;
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout3)->vadjustment)->step_increment = 10;
+
+  ao_none = gtk_radio_button_new_with_label (layout3_group, "Automatic (MPlayer Chooses)");
+  layout3_group = gtk_radio_button_group (GTK_RADIO_BUTTON (ao_none));
+  gtk_widget_ref (ao_none);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "ao_none", ao_none,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (ao_none);
+  gtk_layout_put (GTK_LAYOUT (layout3), ao_none, 24, 32);
+  gtk_widget_set_usize (ao_none, 272, 24);
+
+  ao_oss = gtk_radio_button_new_with_label (layout3_group, "OSS");
+  layout3_group = gtk_radio_button_group (GTK_RADIO_BUTTON (ao_oss));
+  gtk_widget_ref (ao_oss);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "ao_oss", ao_oss,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (ao_oss);
+  gtk_layout_put (GTK_LAYOUT (layout3), ao_oss, 24, 64);
+  gtk_widget_set_usize (ao_oss, 96, 24);
+
+  ao_arts = gtk_radio_button_new_with_label (layout3_group, "ARTS");
+  layout3_group = gtk_radio_button_group (GTK_RADIO_BUTTON (ao_arts));
+  gtk_widget_ref (ao_arts);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "ao_arts", ao_arts,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (ao_arts);
+  gtk_layout_put (GTK_LAYOUT (layout3), ao_arts, 24, 96);
+  gtk_widget_set_usize (ao_arts, 96, 24);
+
+  ao_esd = gtk_radio_button_new_with_label (layout3_group, "ESD");
+  layout3_group = gtk_radio_button_group (GTK_RADIO_BUTTON (ao_esd));
+  gtk_widget_ref (ao_esd);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "ao_esd", ao_esd,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (ao_esd);
+  gtk_layout_put (GTK_LAYOUT (layout3), ao_esd, 24, 128);
+  gtk_widget_set_usize (ao_esd, 96, 24);
+
+  ao_alsa = gtk_radio_button_new_with_label (layout3_group, "ALSA");
+  layout3_group = gtk_radio_button_group (GTK_RADIO_BUTTON (ao_alsa));
+  gtk_widget_ref (ao_alsa);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "ao_alsa", ao_alsa,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (ao_alsa);
+  gtk_layout_put (GTK_LAYOUT (layout3), ao_alsa, 24, 160);
+  gtk_widget_set_usize (ao_alsa, 103, 24);
+
+  ao_sdl = gtk_radio_button_new_with_label (layout3_group, "SDL");
+  layout3_group = gtk_radio_button_group (GTK_RADIO_BUTTON (ao_sdl));
+  gtk_widget_ref (ao_sdl);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "ao_sdl", ao_sdl,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (ao_sdl);
+  gtk_layout_put (GTK_LAYOUT (layout3), ao_sdl, 24, 192);
+  gtk_widget_set_usize (ao_sdl, 103, 24);
+
+  opt_xmmsaudio = gtk_radio_button_new_with_label (layout3_group, "XMMS Output Plugin (Experimental)");
+  layout3_group = gtk_radio_button_group (GTK_RADIO_BUTTON (opt_xmmsaudio));
+  gtk_widget_ref (opt_xmmsaudio);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "opt_xmmsaudio", opt_xmmsaudio,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (opt_xmmsaudio);
+  gtk_layout_put (GTK_LAYOUT (layout3), opt_xmmsaudio, 24, 224);
+  gtk_widget_set_usize (opt_xmmsaudio, 272, 24);
+
+  label_ao = gtk_label_new ("Audio Out");
+  gtk_widget_ref (label_ao);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "label_ao", label_ao,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label_ao);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label_ao);
+
+  scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_ref (scrolledwindow4);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "scrolledwindow4", scrolledwindow4,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (scrolledwindow4);
+  gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow4);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  layout4 = gtk_layout_new (NULL, NULL);
+  gtk_widget_ref (layout4);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "layout4", layout4,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (layout4);
+  gtk_container_add (GTK_CONTAINER (scrolledwindow4), layout4);
+  gtk_layout_set_size (GTK_LAYOUT (layout4), 377, 272);
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout4)->hadjustment)->step_increment = 10;
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout4)->vadjustment)->step_increment = 10;
+
+  opt_zoom = gtk_check_button_new_with_label ("Software Zoom");
+  gtk_widget_ref (opt_zoom);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "opt_zoom", opt_zoom,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (opt_zoom);
+  gtk_layout_put (GTK_LAYOUT (layout4), opt_zoom, 24, 32);
+  gtk_widget_set_usize (opt_zoom, 168, 24);
+
+  opt_framedrop = gtk_check_button_new_with_label ("Frame Dropping");
+  gtk_widget_ref (opt_framedrop);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "opt_framedrop", opt_framedrop,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (opt_framedrop);
+  gtk_layout_put (GTK_LAYOUT (layout4), opt_framedrop, 24, 72);
+  gtk_widget_set_usize (opt_framedrop, 136, 24);
+
+  opt_idx = gtk_check_button_new_with_label ("Build Index");
+  gtk_widget_ref (opt_idx);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "opt_idx", opt_idx,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (opt_idx);
+  gtk_layout_put (GTK_LAYOUT (layout4), opt_idx, 24, 112);
+  gtk_widget_set_usize (opt_idx, 102, 24);
+
+  opt_onewin = gtk_check_button_new_with_label ("One Window (Experimental)");
+  gtk_widget_ref (opt_onewin);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "opt_onewin", opt_onewin,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (opt_onewin);
+  gtk_layout_put (GTK_LAYOUT (layout4), opt_onewin, 24, 152);
+  gtk_widget_set_usize (opt_onewin, 240, 24);
+
+  label_other = gtk_label_new ("Other");
+  gtk_widget_ref (label_other);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "label_other", label_other,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label_other);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label_other);
+
+  scrolledwindow5 = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_ref (scrolledwindow5);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "scrolledwindow5", scrolledwindow5,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (scrolledwindow5);
+  gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow5);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow5), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  layout5 = gtk_layout_new (NULL, NULL);
+  gtk_widget_ref (layout5);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "layout5", layout5,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (layout5);
+  gtk_container_add (GTK_CONTAINER (scrolledwindow5), layout5);
+  gtk_layout_set_size (GTK_LAYOUT (layout5), 346, 267);
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout5)->hadjustment)->step_increment = 10;
+  GTK_ADJUSTMENT (GTK_LAYOUT (layout5)->vadjustment)->step_increment = 10;
+
+  entry_extra_opts = gtk_entry_new ();
+  gtk_widget_ref (entry_extra_opts);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "entry_extra_opts", entry_extra_opts,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (entry_extra_opts);
+  gtk_layout_put (GTK_LAYOUT (layout5), entry_extra_opts, 40, 192);
+  gtk_widget_set_usize (entry_extra_opts, 392, 24);
+
+  label_extra_des = gtk_label_new ("Extra options for mplayer can be added here.\nParsing is done based on spaces.\nQuotes and escapes are not recognised yet.");
+  gtk_widget_ref (label_extra_des);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "label_extra_des", label_extra_des,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label_extra_des);
+  gtk_layout_put (GTK_LAYOUT (layout5), label_extra_des, 40, 48);
+  gtk_widget_set_usize (label_extra_des, 392, 128);
+  gtk_label_set_justify (GTK_LABEL (label_extra_des), GTK_JUSTIFY_LEFT);
+  gtk_misc_set_alignment (GTK_MISC (label_extra_des), 0.18, 1);
+
+  label_extra = gtk_label_new ("Extra");
+  gtk_widget_ref (label_extra);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "label_extra", label_extra,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (label_extra);
+  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 3), label_extra);
+
+  btn_ok = gtk_button_new_with_label ("OK");
+  gtk_widget_ref (btn_ok);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "btn_ok", btn_ok,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (btn_ok);
+  gtk_layout_put (GTK_LAYOUT (layout1), btn_ok, 432, 376);
+  gtk_widget_set_usize (btn_ok, 88, 32);
+
+  btn_cancel = gtk_button_new_with_label ("Cancel");
+  gtk_widget_ref (btn_cancel);
+  gtk_object_set_data_full (GTK_OBJECT (window1), "btn_cancel", btn_cancel,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (btn_cancel);
+  gtk_layout_put (GTK_LAYOUT (layout1), btn_cancel, 24, 376);
+  gtk_widget_set_usize (btn_cancel, 88, 30);
+
+  gtk_signal_connect(GTK_OBJECT(window1),
+		     "destroy",
+		     GTK_SIGNAL_FUNC(mplayer_destroyed_conf_win),
+		      NULL);
+
+  gtk_signal_connect (GTK_OBJECT (btn_ok), "clicked",
+                      GTK_SIGNAL_FUNC (on_btn_ok_clicked),
+                      NULL);
+  gtk_signal_connect (GTK_OBJECT (btn_cancel), "clicked",
+                      GTK_SIGNAL_FUNC (on_btn_cancel_clicked),
+                      NULL);
+  return window1;
+}
+
+void mplayer_configure(){
+  struct mplayer_cfg *cfg;
+  if (mplayer_configure_win)
+    return;
+  mplayer_configure_win=mplayer_create_configure_win();
+  gtk_widget_show(mplayer_configure_win);
+  cfg=mplayer_read_cfg();
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (opt_zoom),cfg->zoom);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (opt_framedrop),cfg->framedrop);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (opt_idx),cfg->idx);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (opt_onewin),cfg->onewin);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (opt_xmmsaudio),cfg->xmmsaudio);
+
+  switch(cfg->vo){
+  case MPLAYER_VO_NONE:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vo_none), TRUE);
+    break;
+  case MPLAYER_VO_XV:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vo_xv), TRUE);
+    break;
+  case MPLAYER_VO_X11:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vo_x11), TRUE);
+    break;
+  case MPLAYER_VO_GL:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vo_gl), TRUE);
+    break;
+  case MPLAYER_VO_SDL:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (vo_sdl), TRUE);
+    break;
+  }
+  switch(cfg->ao){
+  case MPLAYER_AO_NONE:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ao_none), TRUE);
+    break;
+  case MPLAYER_AO_OSS:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ao_oss), TRUE);
+    break;
+  case MPLAYER_AO_ARTS:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ao_arts), TRUE);
+    break;
+  case MPLAYER_AO_ESD:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ao_esd), TRUE);
+    break;
+  case MPLAYER_AO_SDL:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ao_sdl), TRUE);
+    break;
+  case MPLAYER_AO_ALSA:
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ao_alsa), TRUE);
+    break;
+  }
+  gtk_entry_set_text(GTK_ENTRY(entry_extra_opts),cfg->extra);
+}