summaryrefslogtreecommitdiffstats
path: root/Gui/mplayer/widgets.c
diff options
context:
space:
mode:
Diffstat (limited to 'Gui/mplayer/widgets.c')
-rw-r--r--Gui/mplayer/widgets.c139
1 files changed, 139 insertions, 0 deletions
diff --git a/Gui/mplayer/widgets.c b/Gui/mplayer/widgets.c
new file mode 100644
index 0000000000..f877ec183c
--- /dev/null
+++ b/Gui/mplayer/widgets.c
@@ -0,0 +1,139 @@
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+#include <signal.h>
+
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+
+#include "widgets.h"
+
+#include "./mplayer.h"
+#include "psignal.h"
+#include "../events.h"
+
+#include "../../config.h"
+#include "../error.h"
+
+#include "pixmaps/up.xpm"
+#include "pixmaps/dir.xpm"
+#include "pixmaps/file.xpm"
+#include "pixmaps/logo.xpm"
+
+GtkWidget * SkinBrowser;
+GtkWidget * PlayList;
+GtkWidget * FileSelect;
+GtkWidget * MessageBox;
+GtkWidget * AboutBox;
+GtkWidget * Options;
+
+int gtkVisibleSkinBrowser = 0;
+int gtkVisiblePlayList = 0;
+int gtkVisibleFileSelect = 0;
+int gtkVisibleMessageBox = 0;
+int gtkVisibleAboutBox = 0;
+int gtkVisibleOptions = 0;
+
+gtkCommStruct * gtkShMem;
+
+#include "gtk/sb.h"
+#include "gtk/pl.h"
+#include "gtk/fs.h"
+#include "gtk/mb.h"
+#include "gtk/about.h"
+#include "gtk/opts.h"
+
+void widgetsCreate( void )
+{
+ AboutBox=create_About();
+ SkinBrowser=create_SkinBrowser();
+ PlayList=create_PlayList();
+ FileSelect=create_FileSelect();
+ MessageBox=create_MessageBox();
+ Options=create_Options();
+}
+
+int gtkParent = 1;
+
+// --- forked function
+
+static void gtkThreadProc( int argc,char * argv[] )
+{
+ gtk_set_locale();
+ gtk_init( &argc,&argv );
+ gdk_set_use_xshm( TRUE );
+
+ widgetsCreate();
+
+ gtkParentPID=getpid();
+ gtkChildPID=getppid();
+ gtkParent=0;
+
+ signal( SIGTYPE,gtkSigHandler );
+
+ gtkIsOk=True;
+ gtkSendMessage( evGtkIsOk );
+
+ gtk_main();
+ dbprintf( 6,"[gtk] exit.\n" );
+ exit( 0 );
+}
+
+// --- init & close gtk
+
+void gtkInit( int argc,char* argv[], char *envp[] )
+{
+ gtkParentPID=getpid();
+ gtkShMem=shmem_alloc( ShMemSize );
+ if ( ( gtkChildPID = fork() ) == 0 ) gtkThreadProc( argc,argv );
+}
+
+void gtkDone( void )
+{
+ kill( gtkChildPID,SIGKILL );
+ usleep( 1000 );
+}
+
+void gtkMessageBox( gchar * str )
+{
+ gtkShMem->mb.sx=420; gtkShMem->mb.sy=128;
+ gtkShMem->mb.tsx=384; gtkShMem->mb.tsy=77;
+ if ( strlen( str ) > 200 )
+ {
+ gtkShMem->mb.sx=512;
+ gtkShMem->mb.sy=128;
+ gtkShMem->mb.tsx=476;
+ gtkShMem->mb.tsy=77;
+ }
+ strcpy( gtkShMem->mb.str,str );
+ gtkSendMessage( evMessageBox );
+}
+
+void gtkClearList( GtkWidget * list )
+{ gtk_clist_clear( GTK_CLIST( list ) ); }
+
+int gtkFindCList( GtkWidget * list,char * item )
+{
+ gint j,t;
+ gchar * tmpstr;
+ for( t=0,j=0;j<GTK_CLIST( list )->rows;j++ )
+ {
+ gtk_clist_get_text( GTK_CLIST( list ),j,0,&tmpstr );
+ if ( !strcmp( tmpstr,item ) ) return j;
+ }
+ return -1;
+}
+
+void gtkSetDefaultToCList( GtkWidget * list,char * item )
+{
+ gint i;
+ if ( ( i=gtkFindCList( list,item ) ) > -1 ) gtk_clist_select_row( GTK_CLIST( list ),i,0 );
+}
+
+void gtkExit( void )
+{ gtk_main_quit(); }