Mercurial > mplayer.hg
annotate Gui/mplayer/psignal.c @ 3499:93351eec9f1f
Add subtitle loader for gui
author | pontscho |
---|---|
date | Sat, 15 Dec 2001 15:36:07 +0000 |
parents | 9507f90d8254 |
children | 728258be2e86 |
rev | line source |
---|---|
1693 | 1 |
2 #include <stdlib.h> | |
3 #include <stdio.h> | |
4 #include <string.h> | |
5 #include <signal.h> | |
6 #include <unistd.h> | |
7 | |
8 #include "widgets.h" | |
9 #include "play.h" | |
3499 | 10 #include "gtk/fs.h" |
1693 | 11 |
12 #include "../app.h" | |
13 | |
14 #include "../skin/skin.h" | |
15 #include "../wm/ws.h" | |
16 #include "../error.h" | |
17 | |
18 #include "../../config.h" | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1700
diff
changeset
|
19 #include "../../libvo/x11_common.h" |
2447 | 20 #include "../../libmpdemux/stream.h" |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1700
diff
changeset
|
21 |
1693 | 22 #include "./mplayer.h" |
23 | |
24 #define gtkShow( w ) gtkShMem->vs.window=w; gtkSendMessage( evShowWindow ); | |
25 | |
26 pid_t mplMPlayerPID = 0; | |
27 pid_t mplParentPID = 0; | |
28 | |
1741 | 29 pid_t gtkPID = 0; |
1693 | 30 |
31 int mplCriticalError = 0; | |
32 int gtkIsOk = 0; | |
33 | |
34 void mplErrorHandler( int critical,const char * format, ... ) | |
35 { | |
36 char * p; | |
37 va_list ap; | |
38 int n; | |
39 | |
40 if ( (p=(char *)malloc( 512 ) ) == NULL ) return; | |
41 va_start( ap,format ); | |
42 n=vsnprintf( p,512,format,ap ); | |
43 va_end( ap ); | |
44 mplCriticalError=critical; | |
1907 | 45 gtkMessageBox( GTK_MB_ERROR,p ); |
1693 | 46 } |
47 | |
48 void gtkSigHandler( int s ) | |
49 { | |
50 if ( s != SIGTYPE ) return; | |
51 #ifdef DEBUG | |
52 dbprintf( 5,"[psignal] gtk sig handler msg: %d\n",gtkShMem->message ); | |
53 #endif | |
54 switch ( gtkShMem->message ) | |
55 { | |
56 case evHideWindow: | |
57 switch ( gtkShMem->vs.window ) | |
58 { | |
59 case evPlayList: gtk_widget_hide( PlayList ); gtkVisiblePlayList=0; break; | |
60 case evSkinBrowser: gtk_widget_hide( SkinBrowser ); gtkVisibleSkinBrowser=0; break; | |
61 case evLoad: gtk_widget_hide( FileSelect ); gtkVisibleFileSelect=0; break; | |
62 } | |
63 break; | |
64 case evSkinBrowser: | |
65 if ( gtkVisibleSkinBrowser ) gtk_widget_hide( SkinBrowser ); | |
66 gtkClearList( SkinList ); | |
1907 | 67 if ( gtkFillSkinList( sbMPlayerPrefixDir )&>kFillSkinList( sbMPlayerDirInHome ) ) |
1693 | 68 { |
1866
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1858
diff
changeset
|
69 gtkSetDefaultToCList( SkinList,skinName ); |
1693 | 70 gtk_widget_show( SkinBrowser ); |
71 gtkVisibleSkinBrowser=1; | |
72 gtkShow( evSkinBrowser ); | |
73 } | |
74 break; | |
75 case evPreferences: | |
76 if ( gtkVisibleOptions ) gtk_widget_hide( Options ); | |
77 gtk_widget_show( Options ); | |
78 gtkVisibleOptions=1; | |
79 break; | |
80 case evPlayList: | |
81 if ( gtkVisiblePlayList ) gtk_widget_hide( PlayList ); | |
82 gtk_widget_show( PlayList ); | |
83 gtkVisiblePlayList=1; | |
84 gtkShow( evPlayList ); | |
85 break; | |
86 case evLoad: | |
3499 | 87 ShowFileSelect( fsVideoSelector ); |
88 #if 0 | |
1693 | 89 if ( gtkVisibleFileSelect ) gtk_widget_hide( FileSelect ); |
90 gtk_widget_show( FileSelect ); | |
91 gtkVisibleFileSelect=1; | |
92 gtkShow( evPlay ); | |
3499 | 93 #endif |
1693 | 94 break; |
1741 | 95 case evFirstLoad: |
3499 | 96 ShowFileSelect( fsVideoSelector ); |
97 #if 0 | |
1741 | 98 if ( gtkVisibleFileSelect ) gtk_widget_hide( FileSelect ); |
99 gtk_widget_show( FileSelect ); | |
100 gtkVisibleFileSelect=1; | |
101 gtkShow( evFirstLoad ); | |
3499 | 102 #endif |
103 break; | |
104 case evLoadSubtitle: | |
105 ShowFileSelect( fsSubtitleSelector ); | |
106 // gtkShow( evPlay ); | |
1741 | 107 break; |
1693 | 108 case evMessageBox: |
109 gtk_label_set_text( gtkMessageBoxText,(char *)gtkShMem->mb.str ); | |
1925 | 110 if( gtkVisibleMessageBox ) gtk_widget_hide( MessageBox ); |
111 switch( gtkShMem->mb.type) | |
112 { | |
113 case GTK_MB_FATAL: | |
114 gtk_window_set_title (GTK_WINDOW (MessageBox), "fatal error ..."); | |
115 gtk_widget_hide( WarningPixmap ); | |
116 gtk_widget_show( ErrorPixmap ); | |
117 break; | |
118 case GTK_MB_ERROR: | |
119 gtk_window_set_title (GTK_WINDOW (MessageBox), "error ..."); | |
120 gtk_widget_hide( WarningPixmap ); | |
121 gtk_widget_show( ErrorPixmap ); | |
122 break; | |
123 case GTK_MB_WARNING: | |
124 gtk_window_set_title (GTK_WINDOW (MessageBox), "warning ..."); | |
125 gtk_widget_show( WarningPixmap ); | |
126 gtk_widget_hide( ErrorPixmap ); | |
127 break; | |
128 } | |
1693 | 129 gtk_widget_show( MessageBox ); |
130 gtkVisibleMessageBox=1; | |
131 break; | |
132 case evAbout: | |
133 if ( gtkVisibleAboutBox ) gtk_widget_hide( AboutBox ); | |
134 gtk_widget_show( AboutBox ); | |
135 gtkVisibleAboutBox=1; | |
136 break; | |
137 case evExit: | |
1700 | 138 gtk_main_quit(); |
1693 | 139 break; |
2901 | 140 case evShowPopUpMenu: |
3054 | 141 gtkShMem->popupmenu=evNone; gtkShMem->popupmenuparam=0; |
2980 | 142 if ( gtkShMem->visiblepopupmenu ) gtk_widget_hide_on_delete( PopUpMenu ); |
143 PopUpMenu=create_PopUpMenu(); | |
2901 | 144 gtk_menu_popup( GTK_MENU( PopUpMenu ),NULL,NULL,NULL,NULL,0,0 ); |
2980 | 145 gtkShMem->visiblepopupmenu=1; |
146 break; | |
147 case evHidePopUpMenu: | |
148 if ( gtkShMem->visiblepopupmenu ) gtk_widget_hide_on_delete( PopUpMenu ); | |
149 gtkShMem->visiblepopupmenu=0; | |
2901 | 150 break; |
1693 | 151 } |
152 gtkShMem->message=0; | |
153 } | |
154 | |
155 void mplMainSigHandler( int s ) | |
156 { | |
1741 | 157 if ( s != SIGTYPE ) return; |
158 | |
1801 | 159 // #ifdef DEBUG |
1802 | 160 // if ( gtkShMem->message ) dbprintf( 5,"[psignal] main sig handler gtk msg: %d\n",gtkShMem->message ); |
1741 | 161 // if ( mplShMem->message ) dbprintf( 5,"[psignal] main sig handler mpl msg: %d\n",mplShMem->message ); |
1801 | 162 // #endif |
1693 | 163 |
164 switch ( gtkShMem->message ) | |
165 { | |
166 case evGtkIsOk: | |
167 #ifdef DEBUG | |
1741 | 168 dbprintf( 5,"[psignal] gtk is ok.\n" ); |
1693 | 169 #endif |
170 gtkIsOk=True; | |
171 break; | |
172 case evShowWindow: | |
173 switch ( gtkShMem->vs.window ) | |
174 { | |
175 case evPlayList: gtkVisiblePlayList=1; break; | |
176 case evLoad: gtkVisibleFileSelect=1; break; | |
177 case evSkinBrowser: gtkVisibleSkinBrowser=1; break; | |
178 } | |
179 break; | |
180 case evHideWindow: | |
181 switch ( gtkShMem->vs.window ) | |
182 { | |
183 case evPlayList: | |
184 btnModify( evPlayList,btnReleased ); gtkVisiblePlayList=0; | |
185 mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow ); | |
186 break; | |
187 case evSkinBrowser: gtkVisibleSkinBrowser=0; break; | |
188 case evLoad: gtkVisibleFileSelect=0; break; | |
189 } | |
190 break; | |
1802 | 191 case evSkinBrowser: mplShMem->SkinChange=1; break; |
1693 | 192 case evFileLoaded: |
1891 | 193 printf("*** gtkShMem->fs.dir == '%s' \n",gtkShMem->fs.dir); |
194 printf("*** gtkShMem->fs.filename == '%s' \n",gtkShMem->fs.filename); | |
1815 | 195 strcpy( mplShMem->Filename,gtkShMem->fs.dir ); |
196 strcat( mplShMem->Filename,"/" ); | |
197 strcat( mplShMem->Filename,gtkShMem->fs.filename ); | |
198 printf( "%%%%%%%% Playing file: %s\n",mplShMem->Filename ); | |
1813 | 199 mplShMem->FilenameChanged=1; |
2447 | 200 mplShMem->StreamType=STREAMTYPE_FILE; |
1693 | 201 if ( mplMainAutoPlay ) mplGeneralTimer=1; |
202 break; | |
3499 | 203 case evSubtitleLoaded: |
204 printf("*** gtkShMem->fs.subtitlename == '%s' \n",gtkShMem->fs.subtitlename ); | |
205 strcpy( mplShMem->Subtitlename,gtkShMem->fs.subtitlename ); | |
206 mplShMem->SubtitleChanged=1; | |
207 break; | |
2940 | 208 case evShowPopUpMenu: |
3054 | 209 fprintf( stderr,"[psignal] PopUpMenu: %d param: %d\n",gtkShMem->popupmenu,gtkShMem->popupmenuparam ); |
2940 | 210 mplMiddleMenu=1; mplGeneralTimer=1; |
211 break; | |
1693 | 212 case evMessageBox: |
213 if ( mplCriticalError ) | |
214 { gtkSendMessage( evExit ); exit( 1 ); } | |
215 mplCriticalError=0; | |
216 break; | |
217 } | |
218 | |
219 // switch( mplShMem->message ) | |
220 // { | |
221 // } | |
222 gtkShMem->message=0; | |
1741 | 223 // mplShMem->message=0; |
1693 | 224 } |
225 | |
226 void gtkSendMessage( int msg ) | |
227 { | |
228 if ( !gtkIsOk ) return; | |
229 gtkShMem->message=msg; | |
1741 | 230 kill( gtkPID,SIGTYPE ); |
1693 | 231 } |