Mercurial > mplayer.hg
annotate Gui/interface.c @ 17978:d026c9bb2938
include MSGL_* definitions
author | henry |
---|---|
date | Mon, 27 Mar 2006 18:31:04 +0000 |
parents | 9a5a62f480e6 |
children | d30afd14867f |
rev | line source |
---|---|
8058 | 1 |
4845 | 2 #include <inttypes.h> |
3 #include <stdlib.h> | |
4 #include <stdio.h> | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
5 #include <string.h> |
8058 | 6 #include <sys/types.h> |
4798 | 7 |
8058 | 8 #include "wm/ws.h" |
9 #include "wm/wsxdnd.h" | |
4798 | 10 #include "interface.h" |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
11 #include "skin/skin.h" |
8058 | 12 |
6627 | 13 #include "mplayer/gtk/eq.h" |
8058 | 14 #include "mplayer/widgets.h" |
15 #include "mplayer/mplayer.h" | |
8423 | 16 #include "mplayer/play.h" |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
17 |
17144 | 18 #include "mplayer.h" |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
19 #include "app.h" |
6794 | 20 #include "cfg.h" |
17144 | 21 #include "help_mp.h" |
22 #include "subreader.h" | |
23 #include "libvo/x11_common.h" | |
24 #include "libvo/video_out.h" | |
25 #include "libvo/font_load.h" | |
26 #include "libvo/sub.h" | |
27 #include "input/input.h" | |
28 #include "libao2/audio_out.h" | |
29 #include "mixer.h" | |
30 #include "libaf/af.h" | |
31 #include "libaf/equalizer.h" | |
5789 | 32 |
14254 | 33 extern af_cfg_t af_cfg; |
34 | |
6996 | 35 #ifdef USE_ICONV |
7128 | 36 #include <iconv.h> |
6996 | 37 #endif |
38 | |
17144 | 39 #include "libmpdemux/stream.h" |
40 #include "libmpdemux/demuxer.h" | |
41 #include "libmpdemux/stheader.h" | |
42 #include "libmpcodecs/dec_video.h" | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
43 |
17144 | 44 #include "m_config.h" |
45 #include "m_option.h" | |
9623
20f0a254142d
bugfix from Raindel Shachar <raindel@techunix.technion.ac.il>
pontscho
parents:
9314
diff
changeset
|
46 |
12691
0230544f52a1
Fix GUI compilation, patch by Reimar Dffinger and Alexander Strasser.
diego
parents:
12646
diff
changeset
|
47 extern mixer_t mixer; // mixer from mplayer.c |
0230544f52a1
Fix GUI compilation, patch by Reimar Dffinger and Alexander Strasser.
diego
parents:
12646
diff
changeset
|
48 |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
49 guiInterface_t guiIntfStruct; |
9314
f38fe55d0e05
this patch adds the option -guiwid to gmplayer. I think its a more clean
arpi
parents:
9306
diff
changeset
|
50 int guiWinID=-1; |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
51 |
6627 | 52 char * gstrcat( char ** dest,char * src ) |
53 { | |
54 char * tmp = NULL; | |
55 | |
56 if ( !src ) return NULL; | |
57 | |
58 if ( *dest ) | |
59 { | |
60 tmp=malloc( strlen( *dest ) + strlen( src ) + 1 ); | |
12646 | 61 |
62 if ( tmp ) /* TODO: advanced error handling */ | |
63 { | |
64 strcpy( tmp,*dest ); strcat( tmp,src ); free( *dest ); | |
65 } | |
66 } | |
6627 | 67 else |
68 { tmp=malloc( strlen( src ) + 1 ); strcpy( tmp,src ); } | |
69 *dest=tmp; | |
70 return tmp; | |
71 } | |
72 | |
6794 | 73 int gstrcmp( char * a,char * b ) |
74 { | |
75 if ( !a && !b ) return 0; | |
76 if ( !a || !b ) return -1; | |
77 return strcmp( a,b ); | |
78 } | |
79 | |
7019 | 80 int gstrncmp( char * a,char * b,int size ) |
81 { | |
82 if ( !a && !b ) return 0; | |
83 if ( !a || !b ) return -1; | |
84 return strncmp( a,b,size ); | |
85 } | |
86 | |
6794 | 87 char * gstrdup( char * str ) |
88 { | |
89 if ( !str ) return NULL; | |
90 return strdup( str ); | |
91 } | |
92 | |
8284 | 93 char * gstrchr( char * str,int c ) |
94 { | |
95 if ( !str ) return NULL; | |
96 return strchr( str,c ); | |
97 } | |
98 | |
6794 | 99 void gfree( void ** p ) |
100 { | |
101 if ( *p == NULL ) return; | |
102 free( *p ); *p=NULL; | |
103 } | |
104 | |
105 void gset( char ** str,char * what ) | |
106 { | |
7887
0e5544951425
A small patch to Gui/interface.c; the first fix is a plain bug, the second is
arpi
parents:
7707
diff
changeset
|
107 if ( *str ) { if ( !strstr( *str,what ) ) { gstrcat( str,"," ); gstrcat( str,what ); }} |
6794 | 108 else gstrcat( str,what ); |
109 } | |
110 | |
14254 | 111 /** |
112 * \brief this actually creates a new list containing only one element... | |
113 */ | |
7582 | 114 void gaddlist( char *** list,char * entry ) |
115 { | |
116 int i; | |
117 | |
118 if ( (*list) ) | |
119 { | |
120 for ( i=0;(*list)[i];i++ ) free( (*list)[i] ); | |
121 free( (*list) ); | |
122 } | |
123 | |
14177
b8ba18471f4a
Somebody obviously took a course "coding non-portable".
reimar
parents:
14156
diff
changeset
|
124 (*list)=malloc( 2 * sizeof(char **) ); |
7582 | 125 (*list)[0]=gstrdup( entry ); |
126 (*list)[1]=NULL; | |
127 } | |
128 | |
14254 | 129 /** |
130 * \brief this replaces a string starting with search by replace. | |
131 * If not found, replace is appended. | |
132 */ | |
133 void greplace(char ***list, char *search, char *replace) | |
134 { | |
135 int i = 0; | |
136 int len = (search) ? strlen(search) : 0; | |
137 | |
138 if (*list) { | |
139 for (i = 0; (*list)[i]; i++) { | |
140 if (search && (strncmp((*list)[i], search, len) == 0)) { | |
141 free((*list)[i]); | |
142 (*list)[i] = gstrdup(replace); | |
143 return; | |
144 } | |
145 } | |
146 *list = realloc(*list, (i + 2) * sizeof(char *)); | |
147 } | |
148 else | |
149 *list = malloc(2 * sizeof(char *)); | |
150 | |
151 (*list)[i] = gstrdup(replace); | |
152 (*list)[i + 1] = NULL; | |
153 } | |
154 | |
6996 | 155 #ifdef USE_ICONV |
156 char * gconvert_uri_to_filename( char * str ) | |
157 { | |
158 iconv_t d; | |
159 char * out = strdup( str ); | |
160 char * tmp = NULL; | |
161 char * ize; | |
162 size_t inb,outb; | |
163 char * charset = "ISO8859-1"; | |
164 char * cs; | |
165 | |
166 if ( !strchr( str,'%' ) ) return str; | |
167 | |
168 { | |
169 char * t = calloc( 1,strlen( out ) ); | |
170 int i,c = 0; | |
171 for ( i=0;i < (int)strlen( out );i++ ) | |
172 if ( out[i] != '%' ) t[c++]=out[i]; | |
173 else | |
174 { | |
12068 | 175 char tmp[5] = "0xXX"; |
6996 | 176 // if ( out[++i] == '%' ) { t[c++]='%'; continue; }; |
177 tmp[2]=out[++i]; tmp[3]=out[++i]; | |
178 t[c++]=(char)strtol( tmp,(char **)NULL,0 ); | |
179 } | |
180 free( out ); | |
181 out=t; | |
182 } | |
183 | |
184 if ( (cs=getenv( "CHARSET" )) && *cs ) charset=cs; | |
185 | |
186 inb=outb=strlen( out ); | |
187 tmp=calloc( 1,outb + 1 ); | |
188 ize=tmp; | |
189 d=iconv_open( charset,"UTF-8" ); | |
190 if ( (iconv_t)(-1) == d ) return str; | |
191 iconv( d,&out,&inb,&tmp,&outb ); | |
192 iconv_close( d ); | |
193 free( out ); | |
194 return ize; | |
195 } | |
196 #endif | |
197 | |
6218 | 198 void guiInit( void ) |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
199 { |
8058 | 200 int i; |
201 | |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
202 memset( &guiIntfStruct,0,sizeof( guiIntfStruct ) ); |
6898 | 203 guiIntfStruct.Balance=50.0f; |
204 guiIntfStruct.StreamType=-1; | |
205 | |
6627 | 206 memset( >kEquChannels,0,sizeof( gtkEquChannels ) ); |
7707 | 207 #ifdef HAVE_DXR3 |
7706 | 208 if ( !gtkDXR3Device ) gtkDXR3Device=strdup( "/dev/em8300-0" ); |
7707 | 209 #endif |
14181
6ecf5fca82e2
Fixes the bug that after opening the preferences panel gmplayer plays files
reimar
parents:
14177
diff
changeset
|
210 if ( stream_cache_size > 0 ) { gtkCacheOn=1; gtkCacheSize=stream_cache_size; } |
6ecf5fca82e2
Fixes the bug that after opening the preferences panel gmplayer plays files
reimar
parents:
14177
diff
changeset
|
211 else gtkCacheOn = 0; |
8311 | 212 if ( autosync && autosync != gtkAutoSync ) { gtkAutoSyncOn=1; gtkAutoSync=autosync; } |
6898 | 213 |
214 gtkInit(); | |
8043 | 215 // --- initialize X |
6912 | 216 wsXInit( (void *)mDisplay ); |
8058 | 217 // --- load skin |
17974
9a5a62f480e6
Rename the default GUI skins directory from 'Skin' to 'skins', keeping
diego
parents:
17144
diff
changeset
|
218 skinDirInHome=get_path("skins"); |
9a5a62f480e6
Rename the default GUI skins directory from 'Skin' to 'skins', keeping
diego
parents:
17144
diff
changeset
|
219 skinDirInHome_obsolete=get_path("Skin"); |
9a5a62f480e6
Rename the default GUI skins directory from 'Skin' to 'skins', keeping
diego
parents:
17144
diff
changeset
|
220 skinMPlayerDir=MPLAYER_DATADIR "/skins"; |
9a5a62f480e6
Rename the default GUI skins directory from 'Skin' to 'skins', keeping
diego
parents:
17144
diff
changeset
|
221 skinMPlayerDir_obsolete=MPLAYER_DATADIR "/Skin"; |
14156 | 222 mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 1: '%s'\n",skinDirInHome); |
17974
9a5a62f480e6
Rename the default GUI skins directory from 'Skin' to 'skins', keeping
diego
parents:
17144
diff
changeset
|
223 mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 1 (obsolete): '%s'\n",skinDirInHome_obsolete); |
14156 | 224 mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 2: '%s'\n",skinMPlayerDir); |
17974
9a5a62f480e6
Rename the default GUI skins directory from 'Skin' to 'skins', keeping
diego
parents:
17144
diff
changeset
|
225 mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 2 (obsolete): '%s'\n",skinMPlayerDir_obsolete); |
8043 | 226 if ( !skinName ) skinName=strdup( "default" ); |
10607
a17ebe817e33
Fixed a long standing issue: if configured a not available (not existing, permission denied, ...) skin, the gui never ever started again. Now it reverts to 'default' if it can't open the selected skin, if 'default' fails too, the gui exits with error.
alex
parents:
10594
diff
changeset
|
227 i = skinRead( skinName ); |
a17ebe817e33
Fixed a long standing issue: if configured a not available (not existing, permission denied, ...) skin, the gui never ever started again. Now it reverts to 'default' if it can't open the selected skin, if 'default' fails too, the gui exits with error.
alex
parents:
10594
diff
changeset
|
228 if ((i == -1) && strcmp(skinName,"default")) |
a17ebe817e33
Fixed a long standing issue: if configured a not available (not existing, permission denied, ...) skin, the gui never ever started again. Now it reverts to 'default' if it can't open the selected skin, if 'default' fails too, the gui exits with error.
alex
parents:
10594
diff
changeset
|
229 { |
14156 | 230 mp_msg( MSGT_GPLAYER,MSGL_WARN,MSGTR_SKIN_SKINCFG_SelectedSkinNotFound, skinName); |
10607
a17ebe817e33
Fixed a long standing issue: if configured a not available (not existing, permission denied, ...) skin, the gui never ever started again. Now it reverts to 'default' if it can't open the selected skin, if 'default' fails too, the gui exits with error.
alex
parents:
10594
diff
changeset
|
231 skinName=strdup( "default" ); |
a17ebe817e33
Fixed a long standing issue: if configured a not available (not existing, permission denied, ...) skin, the gui never ever started again. Now it reverts to 'default' if it can't open the selected skin, if 'default' fails too, the gui exits with error.
alex
parents:
10594
diff
changeset
|
232 i = skinRead( skinName ); |
a17ebe817e33
Fixed a long standing issue: if configured a not available (not existing, permission denied, ...) skin, the gui never ever started again. Now it reverts to 'default' if it can't open the selected skin, if 'default' fails too, the gui exits with error.
alex
parents:
10594
diff
changeset
|
233 } |
a17ebe817e33
Fixed a long standing issue: if configured a not available (not existing, permission denied, ...) skin, the gui never ever started again. Now it reverts to 'default' if it can't open the selected skin, if 'default' fails too, the gui exits with error.
alex
parents:
10594
diff
changeset
|
234 switch (i) { |
8043 | 235 case -1: mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_SKIN_SKINCFG_SkinNotFound,skinName ); exit( 0 ); |
236 case -2: mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_SKIN_SKINCFG_SkinCfgReadError,skinName ); exit( 0 ); | |
237 } | |
8058 | 238 // --- initialize windows |
9088 | 239 if ( ( mplDrawBuffer = (unsigned char *)malloc( appMPlayer.main.Bitmap.ImageSize ) ) == NULL ) |
8058 | 240 { |
241 fprintf( stderr,MSGTR_NEMDB ); | |
242 exit( 0 ); | |
243 } | |
9306 | 244 |
9625 | 245 if ( gui_save_pos ) |
246 { | |
247 appMPlayer.main.x = gui_main_pos_x; | |
248 appMPlayer.main.y = gui_main_pos_y; | |
249 appMPlayer.sub.x = gui_sub_pos_x; | |
250 appMPlayer.sub.y = gui_sub_pos_y; | |
251 } | |
252 | |
9306 | 253 if (WinID>0) |
9625 | 254 { |
9306 | 255 appMPlayer.subWindow.Parent=WinID; |
256 appMPlayer.sub.x=0; | |
257 appMPlayer.sub.y=0; | |
9625 | 258 } |
259 if (guiWinID>=0) appMPlayer.mainWindow.Parent=guiWinID; | |
9202 | 260 |
8058 | 261 wsCreateWindow( &appMPlayer.subWindow, |
262 appMPlayer.sub.x,appMPlayer.sub.y,appMPlayer.sub.width,appMPlayer.sub.height, | |
9202 | 263 wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,wsShowFrame|wsHideWindow,"MPlayer - Video" ); |
8058 | 264 |
265 wsDestroyImage( &appMPlayer.subWindow ); | |
266 wsCreateImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height ); | |
267 wsXDNDMakeAwareness(&appMPlayer.subWindow); | |
268 | |
8973 | 269 mplMenuInit(); |
270 mplPBInit(); | |
271 | |
8058 | 272 vo_setwindow( appMPlayer.subWindow.WindowID, appMPlayer.subWindow.wGC ); |
273 | |
274 // i=wsHideFrame|wsMaxSize|wsHideWindow; | |
275 // if ( appMPlayer.mainDecoration ) i=wsShowFrame|wsMaxSize|wsHideWindow; | |
276 i=wsShowFrame|wsMaxSize|wsHideWindow; | |
277 wsCreateWindow( &appMPlayer.mainWindow, | |
278 appMPlayer.main.x,appMPlayer.main.y,appMPlayer.main.width,appMPlayer.main.height, | |
8949 | 279 wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,i,"MPlayer" ); |
8058 | 280 |
281 wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image ); | |
282 wsXDNDMakeAwareness(&appMPlayer.mainWindow); | |
283 | |
284 #ifdef DEBUG | |
14156 | 285 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] depth on screen: %d\n",wsDepthOnScreen ); |
8058 | 286 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] parent: 0x%x\n",(int)appMPlayer.mainWindow.WindowID ); |
287 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] sub: 0x%x\n",(int)appMPlayer.subWindow.WindowID ); | |
288 #endif | |
289 | |
290 appMPlayer.mainWindow.ReDraw=(void *)mplMainDraw; | |
291 appMPlayer.mainWindow.MouseHandler=mplMainMouseHandle; | |
292 appMPlayer.mainWindow.KeyHandler=mplMainKeyHandle; | |
293 appMPlayer.mainWindow.DandDHandler=mplDandDHandler; | |
294 | |
295 appMPlayer.subWindow.ReDraw=(void *)mplSubDraw; | |
296 appMPlayer.subWindow.MouseHandler=mplSubMouseHandle; | |
297 appMPlayer.subWindow.KeyHandler=mplMainKeyHandle; | |
298 appMPlayer.subWindow.DandDHandler=mplDandDHandler; | |
299 | |
8973 | 300 wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.sub.R,appMPlayer.sub.G,appMPlayer.sub.B ); |
8058 | 301 wsClearWindow( appMPlayer.subWindow ); |
302 if ( appMPlayer.sub.Bitmap.Image ) wsConvert( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Image,appMPlayer.sub.Bitmap.ImageSize ); | |
303 | |
304 btnModify( evSetVolume,guiIntfStruct.Volume ); | |
305 btnModify( evSetBalance,guiIntfStruct.Balance ); | |
306 btnModify( evSetMoviePosition,guiIntfStruct.Position ); | |
307 | |
308 wsSetIcon( wsDisplay,appMPlayer.mainWindow.WindowID,guiIcon,guiIconMask ); | |
309 wsSetIcon( wsDisplay,appMPlayer.subWindow.WindowID,guiIcon,guiIconMask ); | |
310 | |
311 guiIntfStruct.Playing=0; | |
312 | |
313 if ( !appMPlayer.mainDecoration ) wsWindowDecoration( &appMPlayer.mainWindow,0 ); | |
314 | |
315 wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow ); | |
9202 | 316 #if 0 |
8058 | 317 wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow ); |
318 | |
319 { | |
320 XEvent xev; | |
321 do { XNextEvent( wsDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID ); | |
322 appMPlayer.subWindow.Mapped=wsMapped; | |
323 } | |
324 | |
9088 | 325 if ( !fullscreen ) fullscreen=gtkLoadFullscreen; |
8058 | 326 if ( fullscreen ) |
327 { | |
328 mplFullScreen(); | |
329 btnModify( evFullScreen,btnPressed ); | |
330 } | |
9202 | 331 #else |
11874 | 332 if ( !fullscreen ) fullscreen=gtkLoadFullscreen; |
9202 | 333 if ( gtkShowVideoWindow ) |
334 { | |
335 wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow ); | |
336 { | |
337 XEvent xev; | |
338 do { XNextEvent( wsDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID ); | |
339 appMPlayer.subWindow.Mapped=wsMapped; | |
340 } | |
341 | |
342 if ( fullscreen ) | |
343 { | |
344 mplFullScreen(); | |
345 btnModify( evFullScreen,btnPressed ); | |
346 } | |
347 } | |
348 else | |
349 { | |
350 if ( fullscreen ) | |
351 { | |
352 wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow ); | |
353 { | |
354 XEvent xev; | |
355 do { XNextEvent( wsDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID ); | |
356 appMPlayer.subWindow.Mapped=wsMapped; | |
357 } | |
358 wsVisibleWindow( &appMPlayer.subWindow, wsShowWindow ); | |
359 | |
360 mplFullScreen(); | |
361 btnModify( evFullScreen,btnPressed ); | |
362 } | |
363 } | |
8058 | 364 #endif |
365 mplSubRender=1; | |
8043 | 366 // --- |
7538 | 367 |
8423 | 368 if ( filename ) mplSetFileName( NULL,filename,STREAMTYPE_FILE ); |
7009 | 369 if ( plCurrent && !filename ) mplSetFileName( plCurrent->path,plCurrent->name,STREAMTYPE_FILE ); |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
370 if ( subdata ) guiSetFilename( guiIntfStruct.Subtitlename, subdata->filename ); |
6797
06d29dbdf20d
upsz, sorry, i forgott this :) (skin name saving:)
pontscho
parents:
6794
diff
changeset
|
371 #if defined( USE_OSD ) || defined( USE_SUB ) |
06d29dbdf20d
upsz, sorry, i forgott this :) (skin name saving:)
pontscho
parents:
6794
diff
changeset
|
372 guiLoadFont(); |
06d29dbdf20d
upsz, sorry, i forgott this :) (skin name saving:)
pontscho
parents:
6794
diff
changeset
|
373 #endif |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
374 } |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
375 |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
376 void guiDone( void ) |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
377 { |
8883 | 378 mplMainRender=0; |
14156 | 379 mp_msg( MSGT_GPLAYER,MSGL_V,"[GUI] done.\n" ); |
9625 | 380 |
381 if ( gui_save_pos ) | |
382 { | |
383 gui_main_pos_x=appMPlayer.mainWindow.X; gui_main_pos_y=appMPlayer.mainWindow.Y; | |
384 gui_sub_pos_x=appMPlayer.subWindow.X; gui_sub_pos_y=appMPlayer.subWindow.Y; | |
385 } | |
386 | |
6794 | 387 cfg_write(); |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
388 wsXDone(); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
389 } |
4798 | 390 |
4858 | 391 int guiCMDArray[] = |
392 { | |
8883 | 393 evLoadPlay, |
4858 | 394 evLoadSubtitle, |
395 evAbout, | |
396 evPlay, | |
397 evStop, | |
398 evPlayList, | |
399 evPreferences, | |
400 evFullScreen, | |
401 evSkinBrowser | |
402 }; | |
403 | |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
404 extern ao_functions_t * audio_out; |
6755 | 405 extern vo_functions_t * video_out; |
6794 | 406 extern int frame_dropping; |
407 extern int stream_dump_type; | |
9812
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
408 extern int vcd_track; |
9623
20f0a254142d
bugfix from Raindel Shachar <raindel@techunix.technion.ac.il>
pontscho
parents:
9314
diff
changeset
|
409 extern m_obj_settings_t*vo_plugin_args; |
6794 | 410 |
411 #if defined( USE_OSD ) || defined( USE_SUB ) | |
412 void guiLoadFont( void ) | |
413 { | |
7122
0dc9cb756b68
freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents:
7111
diff
changeset
|
414 #ifdef HAVE_FREETYPE |
8635
81dbd28ef7c0
these patches let ,,oldstyle'' and freetype subtitle renderers live
arpi
parents:
8615
diff
changeset
|
415 load_font_ft(vo_image_width, vo_image_height); |
7122
0dc9cb756b68
freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents:
7111
diff
changeset
|
416 #else |
6794 | 417 if ( vo_font ) |
418 { | |
419 int i; | |
420 if ( vo_font->name ) free( vo_font->name ); | |
421 if ( vo_font->fpath ) free( vo_font->fpath ); | |
422 for ( i=0;i<16;i++ ) | |
423 if ( vo_font->pic_a[i] ) | |
424 { | |
425 if ( vo_font->pic_a[i]->bmp ) free( vo_font->pic_a[i]->bmp ); | |
426 if ( vo_font->pic_a[i]->pal ) free( vo_font->pic_a[i]->pal ); | |
427 } | |
428 for ( i=0;i<16;i++ ) | |
429 if ( vo_font->pic_b[i] ) | |
430 { | |
431 if ( vo_font->pic_b[i]->bmp ) free( vo_font->pic_b[i]->bmp ); | |
432 if ( vo_font->pic_b[i]->pal ) free( vo_font->pic_b[i]->pal ); | |
433 } | |
434 free( vo_font ); vo_font=NULL; | |
435 } | |
7019 | 436 if ( font_name ) |
6794 | 437 { |
7019 | 438 vo_font=read_font_desc( font_name,font_factor,0 ); |
6794 | 439 if ( !vo_font ) mp_msg( MSGT_CPLAYER,MSGL_ERR,MSGTR_CantLoadFont,font_name ); |
440 } | |
441 else | |
442 { | |
7019 | 443 font_name=gstrdup( get_path( "font/font.desc" ) ); |
444 vo_font=read_font_desc( font_name,font_factor,0 ); | |
6794 | 445 if ( !vo_font ) |
446 { | |
10272
7b0bc557987b
renames: DATADIR->MPLAYER_DATADIR, CONFDIR->MPLAYER_CONFDIR, LIBDIR->MPLAYER_LIBDIR
arpi
parents:
10193
diff
changeset
|
447 gfree( (void **)&font_name ); font_name=gstrdup(MPLAYER_DATADIR "/font/font.desc" ); |
7019 | 448 vo_font=read_font_desc( font_name,font_factor,0 ); |
6794 | 449 } |
450 } | |
7122
0dc9cb756b68
freetype 2.0/2.1+ support - disabled by default until bugs fixed
arpi
parents:
7111
diff
changeset
|
451 #endif |
6794 | 452 } |
453 #endif | |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
454 |
7150 | 455 #ifdef USE_SUB |
7169 | 456 extern mp_osd_obj_t* vo_osd_list; |
457 | |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
458 extern char **sub_name; |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
459 |
7150 | 460 void guiLoadSubtitle( char * name ) |
461 { | |
462 if ( guiIntfStruct.Playing == 0 ) | |
463 { | |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
464 guiIntfStruct.SubtitleChanged=1; //what is this for? (mw) |
7150 | 465 return; |
466 } | |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
467 if ( subdata ) |
7150 | 468 { |
14156 | 469 mp_msg( MSGT_GPLAYER,MSGL_INFO,MSGTR_DeletingSubtitles ); |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
470 sub_free( subdata ); |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
471 subdata=NULL; |
7150 | 472 vo_sub=NULL; |
7169 | 473 if ( vo_osd_list ) |
474 { | |
475 int len; | |
476 mp_osd_obj_t * osd = vo_osd_list; | |
477 while ( osd ) | |
478 { | |
479 if ( osd->type == OSDTYPE_SUBTITLE ) break; | |
480 osd=osd->next; | |
481 } | |
482 if ( osd && osd->flags&OSDFLAG_VISIBLE ) | |
483 { | |
484 len=osd->stride * ( osd->bbox.y2 - osd->bbox.y1 ); | |
485 memset( osd->bitmap_buffer,0,len ); | |
486 memset( osd->alpha_buffer,0,len ); | |
487 } | |
488 } | |
7150 | 489 } |
7169 | 490 if ( name ) |
491 { | |
14156 | 492 mp_msg( MSGT_GPLAYER,MSGL_INFO,MSGTR_LoadingSubtitles,name ); |
15603
2d1ad16b6021
strdup subtitle filename at a more appropriate place, fixing memleaks and
reimar
parents:
14686
diff
changeset
|
493 subdata=sub_read_file( name, guiIntfStruct.FPS ); |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
494 if ( !subdata ) mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_CantLoadSub,name ); |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
495 sub_name = (malloc(2 * sizeof(char*))); //when mplayer will be restarted |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
496 sub_name[0] = strdup(name); //sub_name[0] will be read |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
497 sub_name[1] = NULL; |
7169 | 498 } |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
499 update_set_of_subtitles(); |
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
500 |
7150 | 501 } |
502 #endif | |
503 | |
7009 | 504 static void add_vop( char * str ) |
505 { | |
14156 | 506 mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_AddingVideoFilter,str ); |
7009 | 507 if ( vo_plugin_args ) |
508 { | |
509 int i = 0; | |
9623
20f0a254142d
bugfix from Raindel Shachar <raindel@techunix.technion.ac.il>
pontscho
parents:
9314
diff
changeset
|
510 while ( vo_plugin_args[i].name ) if ( !gstrcmp( vo_plugin_args[i++].name,str ) ) { i=-1; break; } |
7009 | 511 if ( i != -1 ) |
9623
20f0a254142d
bugfix from Raindel Shachar <raindel@techunix.technion.ac.il>
pontscho
parents:
9314
diff
changeset
|
512 { vo_plugin_args=realloc( vo_plugin_args,( i + 2 ) * sizeof( m_obj_settings_t ) ); vo_plugin_args[i].name=strdup( str );vo_plugin_args[i].attribs = NULL; vo_plugin_args[i+1].name=NULL; } |
20f0a254142d
bugfix from Raindel Shachar <raindel@techunix.technion.ac.il>
pontscho
parents:
9314
diff
changeset
|
513 } else { vo_plugin_args=malloc( 2 * sizeof( m_obj_settings_t ) ); vo_plugin_args[0].name=strdup( str );vo_plugin_args[0].attribs = NULL; vo_plugin_args[1].name=NULL; } |
7009 | 514 } |
515 | |
516 static void remove_vop( char * str ) | |
517 { | |
518 int n = 0; | |
519 | |
520 if ( !vo_plugin_args ) return; | |
521 | |
14156 | 522 mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_RemovingVideoFilter,str ); |
7009 | 523 |
9623
20f0a254142d
bugfix from Raindel Shachar <raindel@techunix.technion.ac.il>
pontscho
parents:
9314
diff
changeset
|
524 while ( vo_plugin_args[n++].name ); n--; |
7009 | 525 if ( n > -1 ) |
526 { | |
527 int i = 0,m = -1; | |
9623
20f0a254142d
bugfix from Raindel Shachar <raindel@techunix.technion.ac.il>
pontscho
parents:
9314
diff
changeset
|
528 while ( vo_plugin_args[i].name ) if ( !gstrcmp( vo_plugin_args[i++].name,str ) ) { m=i - 1; break; } |
7009 | 529 i--; |
530 if ( m > -1 ) | |
531 { | |
9623
20f0a254142d
bugfix from Raindel Shachar <raindel@techunix.technion.ac.il>
pontscho
parents:
9314
diff
changeset
|
532 if ( n == 1 ) { free( vo_plugin_args[0].name );free( vo_plugin_args[0].attribs ); free( vo_plugin_args ); vo_plugin_args=NULL; } |
20f0a254142d
bugfix from Raindel Shachar <raindel@techunix.technion.ac.il>
pontscho
parents:
9314
diff
changeset
|
533 else { free( vo_plugin_args[i].name );free( vo_plugin_args[i].attribs ); memcpy( &vo_plugin_args[i],&vo_plugin_args[i + 1],( n - i ) * sizeof( m_obj_settings_t ) ); } |
7009 | 534 } |
535 } | |
536 } | |
537 | |
538 int guiGetEvent( int type,char * arg ) | |
4798 | 539 { |
6280 | 540 stream_t * stream = (stream_t *) arg; |
5672
1f8b34f1e7c0
ifdef reading dvd args, without it non-dvd compilation fails.
eyck
parents:
5665
diff
changeset
|
541 #ifdef USE_DVDREAD |
5665 | 542 dvd_priv_t * dvdp = (dvd_priv_t *) arg; |
5672
1f8b34f1e7c0
ifdef reading dvd args, without it non-dvd compilation fails.
eyck
parents:
5665
diff
changeset
|
543 #endif |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
544 |
4798 | 545 switch ( type ) |
546 { | |
547 case guiXEvent: | |
8973 | 548 guiIntfStruct.event_struct=(void *)arg; |
4798 | 549 wsEvents( wsDisplay,(XEvent *)arg,NULL ); |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
550 gtkEventHandling(); |
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
551 break; |
4798 | 552 case guiCEvent: |
4963 | 553 switch ( (int)arg ) |
554 { | |
9202 | 555 case guiSetPlay: |
556 guiIntfStruct.Playing=1; | |
11918
634a2b279b1a
'video window vanishes after pause' bugfix, based on Andr Khne's (andre.kuehne@gmx.net) bugreport
pontscho
parents:
11874
diff
changeset
|
557 // if ( !gtkShowVideoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow ); |
9202 | 558 break; |
559 case guiSetStop: | |
560 guiIntfStruct.Playing=0; | |
12068 | 561 // if ( !gtkShowVideoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow ); |
9202 | 562 break; |
8423 | 563 case guiSetPause: guiIntfStruct.Playing=2; break; |
4963 | 564 } |
8423 | 565 mplState(); |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
566 break; |
5665 | 567 case guiSetState: |
568 mplState(); | |
569 break; | |
570 case guiSetFileName: | |
571 if ( arg ) guiSetFilename( guiIntfStruct.Filename,arg ); | |
572 break; | |
5789 | 573 case guiSetAudioOnly: |
574 guiIntfStruct.AudioOnly=(int)arg; | |
7009 | 575 if ( (int)arg ) { guiIntfStruct.NoWindow=True; wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow ); } |
5789 | 576 else wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow ); |
577 break; | |
8312
ef8c992672f4
- audio track handling in menu (idea from Rdiger Kuhlmann)
pontscho
parents:
8311
diff
changeset
|
578 case guiSetDemuxer: |
ef8c992672f4
- audio track handling in menu (idea from Rdiger Kuhlmann)
pontscho
parents:
8311
diff
changeset
|
579 guiIntfStruct.demuxer=(void *)arg; |
ef8c992672f4
- audio track handling in menu (idea from Rdiger Kuhlmann)
pontscho
parents:
8311
diff
changeset
|
580 break; |
14254 | 581 case guiSetAfilter: |
582 guiIntfStruct.afilter=(void *)arg; | |
583 break; | |
5789 | 584 case guiSetShVideo: |
585 { | |
5986 | 586 if ( !appMPlayer.subWindow.isFullScreen ) |
587 { | |
588 wsResizeWindow( &appMPlayer.subWindow,vo_dwidth,vo_dheight ); | |
589 wsMoveWindow( &appMPlayer.subWindow,True,appMPlayer.sub.x,appMPlayer.sub.y ); | |
590 } | |
5955
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5945
diff
changeset
|
591 guiIntfStruct.MovieWidth=vo_dwidth; |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5986
diff
changeset
|
592 guiIntfStruct.MovieHeight=vo_dheight; |
9314
f38fe55d0e05
this patch adds the option -guiwid to gmplayer. I think its a more clean
arpi
parents:
9306
diff
changeset
|
593 if (guiWinID>=0) |
9306 | 594 wsMoveWindow( &appMPlayer.mainWindow,0,0, vo_dheight); |
5789 | 595 } |
596 break; | |
5665 | 597 #ifdef USE_DVDREAD |
598 case guiSetDVD: | |
599 guiIntfStruct.DVD.titles=dvdp->vmg_file->tt_srpt->nr_of_srpts; | |
600 guiIntfStruct.DVD.chapters=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts; | |
601 guiIntfStruct.DVD.angles=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_angles; | |
602 guiIntfStruct.DVD.nr_of_audio_channels=dvdp->nr_of_channels; | |
603 memcpy( guiIntfStruct.DVD.audio_streams,dvdp->audio_streams,sizeof( dvdp->audio_streams ) ); | |
604 guiIntfStruct.DVD.nr_of_subtitles=dvdp->nr_of_subtitles; | |
605 memcpy( guiIntfStruct.DVD.subtitles,dvdp->subtitles,sizeof( dvdp->subtitles ) ); | |
606 guiIntfStruct.DVD.current_title=dvd_title + 1; | |
607 guiIntfStruct.DVD.current_chapter=dvd_chapter + 1; | |
608 guiIntfStruct.DVD.current_angle=dvd_angle + 1; | |
609 guiIntfStruct.Track=dvd_title + 1; | |
610 break; | |
611 #endif | |
6280 | 612 case guiSetStream: |
613 guiIntfStruct.StreamType=stream->type; | |
614 switch( stream->type ) | |
615 { | |
7150 | 616 #ifdef USE_DVDREAD |
6280 | 617 case STREAMTYPE_DVD: |
618 guiGetEvent( guiSetDVD,(char *)stream->priv ); | |
619 break; | |
7150 | 620 #endif |
6280 | 621 #ifdef HAVE_VCD |
622 case STREAMTYPE_VCD: | |
623 { | |
624 int i; | |
10696
73702d2f93ab
1000l. The vcd api changed and nobody updated the gui..
alex
parents:
10607
diff
changeset
|
625 |
73702d2f93ab
1000l. The vcd api changed and nobody updated the gui..
alex
parents:
10607
diff
changeset
|
626 if (!stream->priv) |
73702d2f93ab
1000l. The vcd api changed and nobody updated the gui..
alex
parents:
10607
diff
changeset
|
627 { |
73702d2f93ab
1000l. The vcd api changed and nobody updated the gui..
alex
parents:
10607
diff
changeset
|
628 guiIntfStruct.VCDTracks=0; |
73702d2f93ab
1000l. The vcd api changed and nobody updated the gui..
alex
parents:
10607
diff
changeset
|
629 break; |
73702d2f93ab
1000l. The vcd api changed and nobody updated the gui..
alex
parents:
10607
diff
changeset
|
630 } |
6280 | 631 for ( i=1;i < 100;i++ ) |
10696
73702d2f93ab
1000l. The vcd api changed and nobody updated the gui..
alex
parents:
10607
diff
changeset
|
632 if ( vcd_seek_to_track( stream->priv,i ) < 0 ) break; |
73702d2f93ab
1000l. The vcd api changed and nobody updated the gui..
alex
parents:
10607
diff
changeset
|
633 vcd_seek_to_track( stream->priv,vcd_track ); |
6280 | 634 guiIntfStruct.VCDTracks=--i; |
635 break; | |
636 } | |
637 #endif | |
7150 | 638 default: break; |
6280 | 639 } |
640 break; | |
4858 | 641 case guiIEvent: |
14148 | 642 mp_msg( MSGT_GPLAYER,MSGL_V,"cmd: %d\n",(int)arg ); |
4858 | 643 switch( (int)arg ) |
644 { | |
645 case MP_CMD_QUIT: | |
646 mplEventHandling( evExit,0 ); | |
647 break; | |
648 case MP_CMD_VO_FULLSCREEN: | |
649 mplEventHandling( evFullScreen,0 ); | |
650 break; | |
651 default: | |
652 mplEventHandling( guiCMDArray[ (int)arg - MP_CMD_GUI_EVENTS - 1 ],0 ); | |
653 } | |
654 break; | |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
655 case guiReDraw: |
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
656 mplEventHandling( evRedraw,0 ); |
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
657 break; |
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
658 case guiSetVolume: |
6903 | 659 if ( audio_out ) |
660 { | |
661 float l,r; | |
12691
0230544f52a1
Fix GUI compilation, patch by Reimar Dffinger and Alexander Strasser.
diego
parents:
12646
diff
changeset
|
662 mixer_getvolume( &mixer,&l,&r ); |
6903 | 663 guiIntfStruct.Volume=(r>l?r:l); |
664 if ( r != l ) guiIntfStruct.Balance=( ( r - l ) + 100 ) * 0.5f; | |
665 else guiIntfStruct.Balance=50.0f; | |
666 btnModify( evSetVolume,guiIntfStruct.Volume ); | |
667 btnModify( evSetBalance,guiIntfStruct.Balance ); | |
668 } | |
669 break; | |
7009 | 670 case guiSetFileFormat: |
671 guiIntfStruct.FileFormat=(int)arg; | |
672 break; | |
6903 | 673 case guiSetValues: |
6912 | 674 // -- video |
7217 | 675 guiIntfStruct.sh_video=arg; |
6912 | 676 if ( arg ) |
677 { | |
7217 | 678 sh_video_t * sh = (sh_video_t *)arg; |
7150 | 679 guiIntfStruct.FPS=sh->fps; |
6912 | 680 } |
7009 | 681 |
682 if ( guiIntfStruct.NoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow ); | |
8280
72700fefd3dc
no seeking if stream is STREAMTYPE_STREAM (net/stdin)
pontscho
parents:
8150
diff
changeset
|
683 |
8300 | 684 if ( guiIntfStruct.StreamType == STREAMTYPE_STREAM ) btnSet( evSetMoviePosition,btnDisabled ); |
685 else btnSet( evSetMoviePosition,btnReleased ); | |
8284 | 686 |
6794 | 687 // -- audio |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
688 if ( audio_out ) |
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
689 { |
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
690 float l,r; |
12691
0230544f52a1
Fix GUI compilation, patch by Reimar Dffinger and Alexander Strasser.
diego
parents:
12646
diff
changeset
|
691 mixer_getvolume( &mixer,&l,&r ); |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
692 guiIntfStruct.Volume=(r>l?r:l); |
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
693 if ( r != l ) guiIntfStruct.Balance=( ( r - l ) + 100 ) * 0.5f; |
6627 | 694 else guiIntfStruct.Balance=50.0f; |
6619
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
695 btnModify( evSetVolume,guiIntfStruct.Volume ); |
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
696 btnModify( evSetBalance,guiIntfStruct.Balance ); |
f554e7271587
fix volume handling ( step 2 ) -- add balance support and some code cleanup and fix
pontscho
parents:
6280
diff
changeset
|
697 } |
6627 | 698 |
699 if ( gtkEnableAudioEqualizer ) | |
700 { | |
701 equalizer_t eq; | |
702 int i,j; | |
703 for ( i=0;i<6;i++ ) | |
704 for ( j=0;j<10;j++ ) | |
705 { | |
706 eq.channel=i; eq.band=j; eq.gain=gtkEquChannels[i][j]; | |
707 gtkSet( gtkSetEqualizer,0,&eq ); | |
708 } | |
709 } | |
6794 | 710 // -- subtitle |
7009 | 711 #ifdef HAVE_DXR3 |
8043 | 712 if ( video_driver_list && !gstrcmp( video_driver_list[0],"dxr3" ) && guiIntfStruct.FileFormat != DEMUXER_TYPE_MPEG_PS |
713 #ifdef USE_LIBAVCODEC | |
714 && !gtkVopLAVC | |
715 #endif | |
716 #ifdef USE_LIBFAME | |
717 && !gtkVopFAME | |
718 #endif | |
719 ) | |
7009 | 720 { |
721 gtkMessageBox( GTK_MB_FATAL,MSGTR_NEEDLAVCFAME ); | |
722 guiIntfStruct.Playing=0; | |
723 return True; | |
724 } | |
725 #endif | |
6627 | 726 break; |
727 case guiSetDefaults: | |
9055 | 728 // if ( guiIntfStruct.Playing == 1 && guiIntfStruct.FilenameChanged ) |
729 if ( guiIntfStruct.FilenameChanged ) | |
8423 | 730 { |
731 audio_id=-1; | |
732 video_id=-1; | |
733 dvdsub_id=-1; | |
734 vobsub_id=-1; | |
735 stream_cache_size=-1; | |
736 autosync=0; | |
737 vcd_track=0; | |
738 dvd_title=0; | |
9055 | 739 force_fps=0; |
8423 | 740 } |
741 wsPostRedisplay( &appMPlayer.subWindow ); | |
742 break; | |
743 case guiSetParameters: | |
9055 | 744 guiGetEvent( guiSetDefaults,NULL ); |
8423 | 745 switch ( guiIntfStruct.StreamType ) |
746 { | |
747 case STREAMTYPE_PLAYLIST: | |
748 break; | |
749 #ifdef HAVE_VCD | |
750 case STREAMTYPE_VCD: | |
9812
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
751 { |
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
752 char tmp[512]; |
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
753 sprintf( tmp,"vcd://%d",guiIntfStruct.Track + 1 ); |
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
754 guiSetFilename( guiIntfStruct.Filename,tmp ); |
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
755 } |
8423 | 756 break; |
757 #endif | |
758 #ifdef USE_DVDREAD | |
759 case STREAMTYPE_DVD: | |
9812
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
760 { |
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
761 char tmp[512]; |
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
762 sprintf( tmp,"dvd://%d",guiIntfStruct.Title ); |
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
763 guiSetFilename( guiIntfStruct.Filename,tmp ); |
22092ed814ad
fix dvd, vcd playing, compiling, and add one small playlist patch
pontscho
parents:
9625
diff
changeset
|
764 } |
8423 | 765 dvd_chapter=guiIntfStruct.Chapter; |
766 dvd_angle=guiIntfStruct.Angle; | |
767 break; | |
768 #endif | |
6794 | 769 } |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
770 //if ( guiIntfStruct.StreamType != STREAMTYPE_PLAYLIST ) // Does not make problems anymore! |
8423 | 771 { |
772 if ( guiIntfStruct.Filename ) filename=gstrdup( guiIntfStruct.Filename ); | |
773 else if ( filename ) guiSetFilename( guiIntfStruct.Filename,filename ); | |
774 } | |
7009 | 775 // --- video opts |
7019 | 776 |
7582 | 777 if ( !video_driver_list ) |
6794 | 778 { |
6797
06d29dbdf20d
upsz, sorry, i forgott this :) (skin name saving:)
pontscho
parents:
6794
diff
changeset
|
779 int i = 0; |
6903 | 780 while ( video_out_drivers[i++] ) |
781 if ( video_out_drivers[i - 1]->control( VOCTRL_GUISUPPORT,NULL ) == VO_TRUE ) | |
782 { | |
8150 | 783 gaddlist( &video_driver_list,(char *)video_out_drivers[i - 1]->info->short_name ); |
6903 | 784 break; |
785 } | |
6794 | 786 } |
787 | |
7582 | 788 if ( !video_driver_list && !video_driver_list[0] ) { gtkMessageBox( GTK_MB_FATAL,MSGTR_IDFGCVD ); exit_player( "gui init" ); } |
7009 | 789 |
790 { | |
791 int i = 0; | |
792 guiIntfStruct.NoWindow=False; | |
793 while ( video_out_drivers[i++] ) | |
794 if ( video_out_drivers[i - 1]->control( VOCTRL_GUISUPPORT,NULL ) == VO_TRUE ) | |
6794 | 795 { |
8150 | 796 if ( ( video_driver_list && !gstrcmp( video_driver_list[0],(char *)video_out_drivers[i - 1]->info->short_name ) )&&( video_out_drivers[i - 1]->control( VOCTRL_GUI_NOWINDOW,NULL ) == VO_TRUE ) ) |
7009 | 797 { guiIntfStruct.NoWindow=True; break; } |
6794 | 798 } |
7009 | 799 } |
800 | |
801 #ifdef HAVE_DXR3 | |
8043 | 802 #ifdef USE_LIBAVCODEC |
7009 | 803 remove_vop( "lavc" ); |
8043 | 804 #endif |
805 #ifdef USE_LIBFAME | |
7009 | 806 remove_vop( "fame" ); |
8043 | 807 #endif |
7582 | 808 if ( video_driver_list && !gstrcmp( video_driver_list[0],"dxr3" ) ) |
7009 | 809 { |
810 if ( ( guiIntfStruct.StreamType != STREAMTYPE_DVD)&&( guiIntfStruct.StreamType != STREAMTYPE_VCD ) ) | |
811 { | |
8043 | 812 #ifdef USE_LIBAVCODEC |
7009 | 813 if ( gtkVopLAVC ) add_vop( "lavc" ); |
8043 | 814 #endif |
815 #ifdef USE_LIBFAME | |
7009 | 816 if ( gtkVopFAME ) add_vop( "fame" ); |
8043 | 817 #endif |
7009 | 818 } |
819 } | |
820 #endif | |
821 // --- | |
7019 | 822 if ( gtkVopPP ) add_vop( "pp" ); |
823 else remove_vop( "pp" ); | |
6794 | 824 |
825 // --- audio opts | |
7887
0e5544951425
A small patch to Gui/interface.c; the first fix is a plain bug, the second is
arpi
parents:
7707
diff
changeset
|
826 // if ( ao_plugin_cfg.plugin_list ) { free( ao_plugin_cfg.plugin_list ); ao_plugin_cfg.plugin_list=NULL; } |
14254 | 827 if (gtkAONorm) |
828 greplace(&af_cfg.list, "volnorm", "volnorm"); | |
829 if (gtkEnableAudioEqualizer) | |
830 greplace(&af_cfg.list, "equalizer", "equalizer"); | |
6794 | 831 if ( gtkAOExtraStereo ) |
832 { | |
14254 | 833 char *name = malloc(12 + 20 + 1); |
834 snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul); | |
835 name[12 + 20] = 0; | |
836 greplace(&af_cfg.list, "extrastereo", name); | |
837 free(name); | |
6794 | 838 } |
8600
54eac4cf587c
Lots of functions and variables specific to OSS audio are used without
arpi
parents:
8484
diff
changeset
|
839 #ifdef USE_OSS_AUDIO |
12918 | 840 if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"oss",3 ) ) |
6794 | 841 { |
12918 | 842 char *tmp; |
843 mixer_device = gtkAOOSSMixer; | |
844 mixer_channel = gtkAOOSSMixerChannel; | |
845 if (gtkAOOSSDevice) { | |
846 tmp = calloc( 1,strlen( gtkAOOSSDevice ) + 7 ); | |
7019 | 847 sprintf( tmp,"oss:%s",gtkAOOSSDevice ); |
12918 | 848 } else |
14627 | 849 tmp = strdup("oss"); |
12918 | 850 gaddlist( &audio_driver_list,tmp ); |
14627 | 851 free(tmp); |
12918 | 852 } |
853 #endif | |
854 #if defined(HAVE_ALSA9) || defined (HAVE_ALSA1X) | |
855 if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"alsa",4 ) ) | |
856 { | |
857 char *tmp; | |
858 mixer_device = gtkAOALSAMixer; | |
859 mixer_channel = gtkAOALSAMixerChannel; | |
860 if (gtkAOALSADevice) { | |
861 tmp = calloc( 1,strlen( gtkAOALSADevice ) + 14 ); | |
862 sprintf( tmp,"alsa:device=%s",gtkAOALSADevice ); | |
863 } else | |
14627 | 864 tmp = strdup("alsa"); |
7582 | 865 gaddlist( &audio_driver_list,tmp ); |
14627 | 866 free(tmp); |
7019 | 867 } |
8615 | 868 #endif |
8714
a88f827ec563
SDL Audio configure window from Filip Kalinski <filon@pld.org.pl>
pontscho
parents:
8635
diff
changeset
|
869 #ifdef HAVE_SDL |
12918 | 870 if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"sdl",3 ) ) |
8714
a88f827ec563
SDL Audio configure window from Filip Kalinski <filon@pld.org.pl>
pontscho
parents:
8635
diff
changeset
|
871 { |
12918 | 872 char *tmp; |
873 if (gtkAOSDLDriver) { | |
874 tmp = calloc( 1,strlen( gtkAOSDLDriver ) + 10 ); | |
8714
a88f827ec563
SDL Audio configure window from Filip Kalinski <filon@pld.org.pl>
pontscho
parents:
8635
diff
changeset
|
875 sprintf( tmp,"sdl:%s",gtkAOSDLDriver ); |
12918 | 876 } else |
14627 | 877 tmp = strdup("sdl"); |
8714
a88f827ec563
SDL Audio configure window from Filip Kalinski <filon@pld.org.pl>
pontscho
parents:
8635
diff
changeset
|
878 gaddlist( &audio_driver_list,tmp ); |
14627 | 879 free(tmp); |
8714
a88f827ec563
SDL Audio configure window from Filip Kalinski <filon@pld.org.pl>
pontscho
parents:
8635
diff
changeset
|
880 } |
a88f827ec563
SDL Audio configure window from Filip Kalinski <filon@pld.org.pl>
pontscho
parents:
8635
diff
changeset
|
881 #endif |
14686
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
882 #ifdef USE_ESD |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
883 if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"esd",3 ) ) |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
884 { |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
885 char *tmp; |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
886 if (gtkAOESDDevice) { |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
887 tmp = calloc( 1,strlen( gtkAOESDDevice ) + 10 ); |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
888 sprintf( tmp,"esd:%s",gtkAOESDDevice ); |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
889 } else |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
890 tmp = strdup("esd"); |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
891 gaddlist( &audio_driver_list,tmp ); |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
892 free(tmp); |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
893 } |
e2b2ab284a9a
ESD configuration dialog and software volume control option for Gui
reimar
parents:
14627
diff
changeset
|
894 #endif |
6794 | 895 // -- subtitle |
896 #ifdef USE_SUB | |
9870
09d630a4f991
support for multiple subtitle files by Marcin Wojdyr <wojdyr@unipress.waw.pl>
henry
parents:
9812
diff
changeset
|
897 //subdata->filename=gstrdup( guiIntfStruct.Subtitlename ); |
6794 | 898 stream_dump_type=0; |
899 if ( gtkSubDumpMPSub ) stream_dump_type=4; | |
900 if ( gtkSubDumpSrt ) stream_dump_type=6; | |
901 gtkSubDumpMPSub=gtkSubDumpSrt=0; | |
6627 | 902 #endif |
6794 | 903 #if defined( USE_OSD ) || defined( USE_SUB ) |
904 guiLoadFont(); | |
6627 | 905 #endif |
906 | |
6794 | 907 // --- misc |
8423 | 908 if ( gtkCacheOn ) stream_cache_size=gtkCacheSize; |
8484 | 909 if ( gtkAutoSyncOn ) autosync=gtkAutoSync; |
8423 | 910 |
8484 | 911 if ( guiIntfStruct.AudioFile ) audio_stream=gstrdup( guiIntfStruct.AudioFile ); |
912 else if ( guiIntfStruct.FilenameChanged ) gfree( (void**)&audio_stream ); | |
913 //audio_stream=NULL; | |
6627 | 914 |
8423 | 915 guiIntfStruct.DiskChanged=0; |
916 guiIntfStruct.FilenameChanged=0; | |
917 guiIntfStruct.NewPlay=0; | |
918 | |
6627 | 919 break; |
4798 | 920 } |
7009 | 921 return False; |
4798 | 922 } |
923 | |
924 void guiEventHandling( void ) | |
925 { | |
7009 | 926 if ( !guiIntfStruct.Playing || guiIntfStruct.NoWindow ) wsHandleEvents(); |
4818
3473ca9ef158
new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents:
4798
diff
changeset
|
927 gtkEventHandling(); |
4798 | 928 } |
6627 | 929 |
930 // --- | |
931 | |
932 float gtkEquChannels[6][10]; | |
933 | |
6713 | 934 plItem * plCurrent = NULL; |
935 plItem * plList = NULL; | |
936 plItem * plLastPlayed = NULL; | |
937 | |
7092
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
938 URLItem *URLList = NULL; |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
939 |
9055 | 940 char *fsHistory[fsPersistant_MaxPos] = { NULL,NULL,NULL,NULL,NULL }; |
941 | |
6713 | 942 #if defined( MP_DEBUG ) && 0 |
943 void list( void ) | |
6627 | 944 { |
6713 | 945 plItem * next = plList; |
946 printf( "--- list ---\n" ); | |
947 while( next || next->next ) | |
948 { | |
949 printf( "item: %s/%s\n",next->path,next->name ); | |
950 if ( next->next ) next=next->next; else break; | |
951 } | |
952 printf( "--- end of list ---\n" ); | |
953 } | |
954 #else | |
955 #define list(); | |
956 #endif | |
957 | |
958 void * gtkSet( int cmd,float fparam, void * vparam ) | |
959 { | |
6627 | 960 equalizer_t * eq = (equalizer_t *)vparam; |
6713 | 961 plItem * item = (plItem *)vparam; |
6627 | 962 |
7092
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
963 URLItem * url_item = (URLItem *)vparam; |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
964 int is_added = True; |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
965 |
6627 | 966 switch ( cmd ) |
967 { | |
6713 | 968 // --- handle playlist |
6755 | 969 case gtkAddPlItem: // add item to playlist |
6713 | 970 if ( plList ) |
971 { | |
972 plItem * next = plList; | |
973 while ( next->next ) { /*printf( "%s\n",next->name );*/ next=next->next; } | |
974 next->next=item; item->prev=next; | |
7092
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
975 } else { item->prev=item->next=NULL; plCurrent=plList=item; } |
6713 | 976 list(); |
977 return NULL; | |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
978 case gtkInsertPlItem: // add item into playlist after current |
6713 | 979 if ( plCurrent ) |
980 { | |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
981 plItem * curr = plCurrent; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
982 item->next=curr->next; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
983 if (item->next) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
984 item->next->prev=item; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
985 item->prev=curr; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
986 curr->next=item; |
6713 | 987 plCurrent=plCurrent->next; |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
988 return plCurrent; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
989 } |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
990 else |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
991 return gtkSet(gtkAddPlItem,0,(void*)item); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
992 return NULL; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
993 case gtkGetNextPlItem: // get current item from playlist |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
994 if ( plCurrent && plCurrent->next) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
995 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
996 plCurrent=plCurrent->next; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
997 /*if ( !plCurrent && plList ) |
6713 | 998 { |
999 plItem * next = plList; | |
1000 while ( next->next ) { if ( !next->next ) break; next=next->next; } | |
1001 plCurrent=next; | |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1002 }*/ |
6713 | 1003 return plCurrent; |
1004 } | |
1005 return NULL; | |
1006 case gtkGetPrevPlItem: | |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1007 if ( plCurrent && plCurrent->prev) |
6713 | 1008 { |
1009 plCurrent=plCurrent->prev; | |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1010 //if ( !plCurrent && plList ) plCurrent=plList; |
6713 | 1011 return plCurrent; |
1012 } | |
6794 | 1013 return NULL; |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1014 case gtkSetCurrPlItem: // set current item |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1015 plCurrent=item; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1016 return plCurrent; |
6713 | 1017 case gtkGetCurrPlItem: // get current item |
1018 return plCurrent; | |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1019 case gtkDelCurrPlItem: // delete current item |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1020 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1021 plItem * curr = plCurrent; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1022 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1023 if (!curr) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1024 return NULL; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1025 if (curr->prev) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1026 curr->prev->next=curr->next; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1027 if (curr->next) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1028 curr->next->prev=curr->prev; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1029 if (curr==plList) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1030 plList=curr->next; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1031 plCurrent=curr->next; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1032 // Free it |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1033 if ( curr->path ) free( curr->path ); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1034 if ( curr->name ) free( curr->name ); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1035 free( curr ); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1036 } |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1037 mplCurr(); // Instead of using mplNext && mplPrev |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1038 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1039 return plCurrent; |
6713 | 1040 case gtkDelPl: // delete list |
1041 { | |
1042 plItem * curr = plList; | |
1043 plItem * next; | |
1044 if ( !plList ) return NULL; | |
1045 if ( !curr->next ) | |
1046 { | |
1047 if ( curr->path ) free( curr->path ); | |
1048 if ( curr->name ) free( curr->name ); | |
1049 free( curr ); | |
1050 } | |
1051 else | |
1052 { | |
1053 while ( curr->next ) | |
1054 { | |
1055 next=curr->next; | |
1056 if ( curr->path ) free( curr->path ); | |
1057 if ( curr->name ) free( curr->name ); | |
1058 free( curr ); | |
1059 curr=next; | |
1060 } | |
1061 } | |
1062 plList=NULL; plCurrent=NULL; | |
1063 } | |
1064 return NULL; | |
7092
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1065 // ----- Handle url |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1066 case gtkAddURLItem: |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1067 if ( URLList ) |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1068 { |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1069 URLItem * next_url = URLList; |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1070 is_added = False; |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1071 while ( next_url->next ) |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1072 { |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1073 if ( !gstrcmp( next_url->url,url_item->url ) ) |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1074 { |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1075 is_added=True; |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1076 break; |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1077 } |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1078 next_url=next_url->next; |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1079 } |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1080 if ( ( !is_added )&&( gstrcmp( next_url->url,url_item->url ) ) ) next_url->next=url_item; |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1081 } else { url_item->next=NULL; URLList=url_item; } |
8e9607c5897e
- warning fixes from Dominik Mierzejewski <dominik@rangers.eu.org>
pontscho
parents:
7019
diff
changeset
|
1082 return NULL; |
6794 | 1083 // --- subtitle |
7139 | 1084 #ifndef HAVE_FREETYPE |
6794 | 1085 case gtkSetFontFactor: |
7019 | 1086 font_factor=fparam; |
6794 | 1087 guiLoadFont(); |
1088 return NULL; | |
7139 | 1089 #else |
1090 case gtkSetFontOutLine: | |
1091 subtitle_font_thickness=( 8.0f / 100.0f ) * fparam; | |
1092 guiLoadFont(); | |
1093 return NULL; | |
1094 case gtkSetFontBlur: | |
1095 subtitle_font_radius=( 8.0f / 100.0f ) * fparam; | |
1096 guiLoadFont(); | |
1097 return NULL; | |
1098 case gtkSetFontTextScale: | |
1099 text_font_scale_factor=fparam; | |
1100 guiLoadFont(); | |
1101 return NULL; | |
1102 case gtkSetFontOSDScale: | |
1103 osd_font_scale_factor=fparam; | |
1104 guiLoadFont(); | |
1105 return NULL; | |
1106 case gtkSetFontEncoding: | |
9056 | 1107 gfree( (void **)&subtitle_font_encoding ); |
7139 | 1108 subtitle_font_encoding=gstrdup( (char *)vparam ); |
1109 guiLoadFont(); | |
1110 return NULL; | |
1111 case gtkSetFontAutoScale: | |
1112 subtitle_autoscale=(int)fparam; | |
1113 guiLoadFont(); | |
1114 return NULL; | |
1115 #endif | |
9056 | 1116 #ifdef USE_ICONV |
1117 case gtkSetSubEncoding: | |
1118 gfree( (void **)&sub_cp ); | |
1119 sub_cp=gstrdup( (char *)vparam ); | |
1120 break; | |
6794 | 1121 #endif |
1122 // --- misc | |
1123 case gtkClearStruct: | |
7009 | 1124 if ( (unsigned int)vparam & guiFilenames ) |
6794 | 1125 { |
1126 gfree( (void **)&guiIntfStruct.Filename ); | |
1127 gfree( (void **)&guiIntfStruct.Subtitlename ); | |
1128 gfree( (void **)&guiIntfStruct.AudioFile ); | |
7009 | 1129 gtkSet( gtkDelPl,0,NULL ); |
6794 | 1130 } |
1131 #ifdef USE_DVDREAD | |
7009 | 1132 if ( (unsigned int)vparam & guiDVD ) memset( &guiIntfStruct.DVD,0,sizeof( guiDVDStruct ) ); |
6794 | 1133 #endif |
1134 #ifdef HAVE_VCD | |
7009 | 1135 if ( (unsigned int)vparam & guiVCD ) guiIntfStruct.VCDTracks=0; |
6794 | 1136 #endif |
1137 return NULL; | |
1138 case gtkSetExtraStereo: | |
1139 gtkAOExtraStereoMul=fparam; | |
14254 | 1140 if (guiIntfStruct.afilter) |
1141 af_control_any_rev(guiIntfStruct.afilter, | |
1142 AF_CONTROL_ES_MUL | AF_CONTROL_SET, >kAOExtraStereoMul); | |
6794 | 1143 return NULL; |
1144 case gtkSetPanscan: | |
7217 | 1145 { |
1146 mp_cmd_t * mp_cmd; | |
1147 mp_cmd=(mp_cmd_t *)calloc( 1,sizeof( *mp_cmd ) ); | |
1148 mp_cmd->id=MP_CMD_PANSCAN; mp_cmd->name=strdup( "panscan" ); | |
1149 mp_cmd->args[0].v.f=fparam; mp_cmd->args[1].v.i=1; | |
1150 mp_input_queue_cmd( mp_cmd ); | |
1151 } | |
6794 | 1152 return NULL; |
1153 case gtkSetAutoq: | |
7019 | 1154 auto_quality=(int)fparam; |
6794 | 1155 return NULL; |
6713 | 1156 // --- set equalizers |
6627 | 1157 case gtkSetContrast: |
7217 | 1158 if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"contrast",(int)fparam ); |
1159 return NULL; | |
6627 | 1160 case gtkSetBrightness: |
7217 | 1161 if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"brightness",(int)fparam ); |
1162 return NULL; | |
6627 | 1163 case gtkSetHue: |
7217 | 1164 if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"hue",(int)fparam ); |
1165 return NULL; | |
6627 | 1166 case gtkSetSaturation: |
7217 | 1167 if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"saturation",(int)fparam ); |
1168 return NULL; | |
6627 | 1169 case gtkSetEqualizer: |
14254 | 1170 { |
1171 af_control_ext_t tmp; | |
6627 | 1172 if ( eq ) |
1173 { | |
1174 gtkEquChannels[eq->channel][eq->band]=eq->gain; | |
14254 | 1175 tmp.ch = eq->channel; |
1176 tmp.arg = gtkEquChannels[eq->channel]; | |
1177 if (guiIntfStruct.afilter) | |
1178 af_control_any_rev(guiIntfStruct.afilter, | |
1179 AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp); | |
6627 | 1180 } |
1181 else | |
1182 { | |
14254 | 1183 int i; |
6627 | 1184 memset( gtkEquChannels,0,sizeof( gtkEquChannels ) ); |
14254 | 1185 if (guiIntfStruct.afilter) |
6627 | 1186 for ( i=0;i<6;i++ ) |
14254 | 1187 { |
1188 tmp.ch = i; | |
1189 tmp.arg = gtkEquChannels[i]; | |
1190 af_control_any_rev(guiIntfStruct.afilter, | |
1191 AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp); | |
1192 } | |
6627 | 1193 } |
6713 | 1194 return NULL; |
14254 | 1195 } |
6627 | 1196 } |
6713 | 1197 return NULL; |
6627 | 1198 } |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1199 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1200 #define mp_basename(s) (strrchr(s,'/')==NULL?(char*)s:(strrchr(s,'/')+1)) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1201 |
17144 | 1202 #include "playtree.h" |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1203 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1204 //This function adds/inserts one file into the gui playlist |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1205 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1206 int import_file_into_gui(char* temp, int insert) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1207 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1208 char *filename, *pathname; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1209 plItem * item; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1210 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1211 filename = strdup(mp_basename(temp)); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1212 pathname = strdup(temp); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1213 if (strlen(pathname)-strlen(filename)>0) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1214 pathname[strlen(pathname)-strlen(filename)-1]='\0'; // We have some path so remove / at end |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1215 else |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1216 pathname[strlen(pathname)-strlen(filename)]='\0'; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1217 mp_msg(MSGT_PLAYTREE,MSGL_V, "Adding filename %s && pathname %s\n",filename,pathname); //FIXME: Change to MSGL_DBG2 ? |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1218 item=calloc( 1,sizeof( plItem ) ); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1219 if (!item) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1220 return 0; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1221 item->name=filename; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1222 item->path=pathname; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1223 if (insert) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1224 gtkSet( gtkInsertPlItem,0,(void*)item ); // Inserts the item after current, and makes current=item |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1225 else |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1226 gtkSet( gtkAddPlItem,0,(void*)item ); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1227 return 1; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1228 } |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1229 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1230 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1231 // This function imports the initial playtree (based on cmd-line files) into the gui playlist |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1232 // by either: |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1233 // - overwriting gui pl (enqueue=0) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1234 // - appending it to gui pl (enqueue=1) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1235 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1236 int import_initial_playtree_into_gui(play_tree_t* my_playtree, m_config_t* config, int enqueue) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1237 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1238 play_tree_iter_t* my_pt_iter=NULL; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1239 int result=0; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1240 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1241 if (!enqueue) // Delete playlist before "appending" |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1242 gtkSet(gtkDelPl,0,0); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1243 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1244 if((my_pt_iter=pt_iter_create(&my_playtree,config))) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1245 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1246 while ((filename=pt_iter_get_next_file(my_pt_iter))!=NULL) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1247 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1248 if (import_file_into_gui(filename, 0)) // Add it to end of list |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1249 result=1; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1250 } |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1251 } |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1252 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1253 mplCurr(); // Update filename |
10193 | 1254 mplGotoTheNext=1; |
9291
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1255 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1256 if (!enqueue) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1257 filename=guiIntfStruct.Filename; // Backward compatibility; if file is specified on commandline, |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1258 // gmplayer does directly start in Play-Mode. |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1259 else |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1260 filename=NULL; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1261 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1262 return result; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1263 } |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1264 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1265 // This function imports and inserts an playtree, that is created "on the fly", for example by |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1266 // parsing some MOV-Reference-File; or by loading an playlist with "File Open" |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1267 // |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1268 // The file which contained the playlist is thereby replaced with it's contents. |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1269 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1270 int import_playtree_playlist_into_gui(play_tree_t* my_playtree, m_config_t* config) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1271 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1272 play_tree_iter_t* my_pt_iter=NULL; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1273 int result=0; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1274 plItem * save=(plItem*)gtkSet( gtkGetCurrPlItem, 0, 0); // Save current item |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1275 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1276 if((my_pt_iter=pt_iter_create(&my_playtree,config))) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1277 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1278 while ((filename=pt_iter_get_next_file(my_pt_iter))!=NULL) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1279 { |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1280 if (import_file_into_gui(filename, 1)) // insert it into the list and set plCurrent=new item |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1281 result=1; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1282 } |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1283 pt_iter_destroy(&my_pt_iter); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1284 } |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1285 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1286 if (save) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1287 gtkSet(gtkSetCurrPlItem, 0, (void*)save); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1288 else |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1289 gtkSet(gtkSetCurrPlItem, 0, (void*)plList); // go to head, if plList was empty before |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1290 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1291 if (save && result) |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1292 gtkSet(gtkDelCurrPlItem, 0, 0); |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1293 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1294 mplCurr(); // Update filename |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1295 filename=NULL; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1296 |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1297 return result; |
64b8c5a07c2c
- It adds an option enqueue/noenqueue, so users can choose if they want to
arpi
parents:
9202
diff
changeset
|
1298 } |
16374
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1299 |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1300 // wrapper function for mp_msg to display a message box for errors and warnings. |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1301 |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1302 void guiMessageBox(int level, char * str) { |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1303 switch(level) { |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1304 case MSGL_FATAL: |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1305 gtkMessageBox(GTK_MB_FATAL|GTK_MB_SIMPLE, str); |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1306 break; |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1307 case MSGL_ERR: |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1308 gtkMessageBox(GTK_MB_ERROR|GTK_MB_SIMPLE, str); |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1309 break; |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1310 #if 0 |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1311 // WARNING! Do NOT enable this! There are too many non-critical messages with |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1312 // MSGL_WARN, for example: broken SPU packets, codec's bit error messages, |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1313 // etc etc, they should not raise up a new window every time. |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1314 case MSGL_WARN: |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1315 gtkMessageBox(GTK_MB_WARNING|GTK_MB_SIMPLE, str); |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1316 break; |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1317 #endif |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1318 } |
e2e231134056
Remove many annoying GTK includes in every compile line and remove GTK
ods15
parents:
15603
diff
changeset
|
1319 } |