Mercurial > mplayer.hg
annotate Gui/mplayer/mw.h @ 2259:0e7b1d06edfc
see english 1.28
author | jaf |
---|---|
date | Thu, 18 Oct 2001 18:18:17 +0000 |
parents | deb4aff05c44 |
children | 3248aabc6d1d |
rev | line source |
---|---|
1693 | 1 |
2 // main window | |
3 | |
4 unsigned char * mplDrawBuffer = NULL; | |
5 int mplMainRender = 1; | |
6 int mplMainAutoPlay = 0; | |
7 | |
8 int mainVisible = 1; | |
9 | |
10 int boxMoved = 0; | |
11 int msButton = 0; | |
12 int sx = 0,sy = 0; | |
13 int i,pot = 0; | |
14 | |
15 char * Translate( char * str ) | |
16 { | |
17 static char trbuf[512]; | |
18 char tmp[128]; | |
19 int i,c; | |
2045 | 20 int t; |
1693 | 21 memset( trbuf,0,512 ); |
22 memset( tmp,0,128 ); | |
23 for ( c=0,i=0;i < strlen( str );i++ ) | |
24 { | |
25 if ( str[i] != '$' ) { trbuf[c++]=str[i]; trbuf[c]=0; } | |
26 else | |
27 { | |
28 switch ( str[++i] ) | |
29 { | |
30 case 't': | |
1707 | 31 sprintf( tmp,"%02d",mplShMem->Track ); strcat( trbuf,tmp ); |
1693 | 32 break; |
33 case 'f': | |
34 if ( strlen( gtkShMem->fs.filename ) ) | |
35 { | |
36 int i; | |
37 strcpy( tmp,gtkShMem->fs.filename ); | |
38 for ( i=0;i < strlen( tmp );i++ ) | |
39 { | |
40 t=0; | |
41 if ( ( tmp[i] >= 'A' )&&( tmp[i] <= 'Z' ) ) t=32; | |
42 tmp[i]=(char)( tmp[i] + t ); | |
43 } | |
44 if ( tmp[strlen( tmp ) - 4] == '.' ) tmp[strlen( tmp ) - 4]=0; | |
45 if ( tmp[strlen( tmp ) - 5] == '.' ) tmp[strlen( tmp ) - 5]=0; | |
46 } else strcpy( tmp,"no file loaded" ); | |
47 strcat( trbuf,tmp ); | |
48 break; | |
49 case 'F': | |
50 if ( strlen( gtkShMem->fs.filename ) ) | |
51 { | |
52 int i; | |
53 strcpy( tmp,gtkShMem->fs.filename ); | |
54 for ( i=0;i < strlen( tmp );i++ ) | |
55 { | |
56 char t = 0; | |
57 if ( ( tmp[i] >= 'a' )&&( tmp[i] <= 'z' ) ) t=32; | |
58 tmp[i]=tmp[i] - t; | |
59 } | |
60 if ( tmp[strlen( tmp ) - 4] == '.' ) tmp[strlen( tmp ) - 4]=0; | |
61 if ( tmp[strlen( tmp ) - 5] == '.' ) tmp[strlen( tmp ) - 5]=0; | |
62 } else strcpy( tmp,"NO FILE LOADED" ); | |
63 strcat( trbuf,tmp ); | |
64 break; | |
65 case 'o': | |
66 if ( strlen( gtkShMem->fs.filename ) ) | |
67 { | |
68 strcat( trbuf,gtkShMem->fs.filename ); | |
69 if ( trbuf[strlen( trbuf ) - 4] == '.' ) trbuf[strlen( trbuf ) - 4]=0; | |
70 if ( trbuf[strlen( trbuf ) - 5] == '.' ) trbuf[strlen( trbuf ) - 5]=0; | |
71 } else strcat( trbuf,"no file loaded" ); | |
72 break; | |
73 case '6': t=mplShMem->LengthInSec; goto calclengthhhmmss; | |
74 case '1': t=mplShMem->TimeSec; | |
75 calclengthhhmmss: | |
1888 | 76 sprintf( tmp,"%02d:%02d:%02d",t/3600,t/60%60,t%60 ); strcat( trbuf,tmp ); |
1693 | 77 break; |
78 case '7': t=mplShMem->LengthInSec; goto calclengthmmmmss; | |
79 case '2': t=mplShMem->TimeSec; | |
80 calclengthmmmmss: | |
1888 | 81 sprintf( tmp,"%04d:%02d",t/60,t%60 ); strcat( trbuf,tmp ); |
1693 | 82 break; |
1888 | 83 case '3': sprintf( tmp,"%02d",mplShMem->TimeSec / 3600 ); strcat( trbuf,tmp ); break; |
84 case '4': sprintf( tmp,"%02d",( ( mplShMem->TimeSec / 60 ) % 60 ) ); strcat( trbuf,tmp ); break; | |
1707 | 85 case '5': sprintf( tmp,"%02d",mplShMem->TimeSec % 60 ); strcat( trbuf,tmp ); break; |
1888 | 86 case '8': sprintf( tmp,"%01d:%02d:%02d",mplShMem->TimeSec / 3600,( mplShMem->TimeSec / 60 ) % 60,mplShMem->TimeSec % 60 ); strcat( trbuf,tmp ); break; |
1707 | 87 case 'v': sprintf( tmp,"%3.2f%%",mplShMem->Volume ); strcat( trbuf,tmp ); break; |
88 case 'V': sprintf( tmp,"%3.1f",mplShMem->Volume ); strcat( trbuf,tmp ); break; | |
89 case 'b': sprintf( tmp,"%3.2f%%",mplShMem->Balance ); strcat( trbuf,tmp ); break; | |
90 case 'B': sprintf( tmp,"%3.1f",mplShMem->Balance ); strcat( trbuf,tmp ); break; | |
1823 | 91 case 'd': sprintf( tmp,"%d",mplShMem->FrameDrop ); strcat( trbuf,tmp ); break; |
1707 | 92 case 's': if ( mplShMem->Playing == 0 ) strcat( trbuf,"s" ); break; |
93 case 'l': if ( mplShMem->Playing == 1 ) strcat( trbuf,"p" ); break; | |
94 case 'e': if ( mplShMem->Playing == 2 ) strcat( trbuf,"e" ); break; | |
1888 | 95 case 'a': |
96 switch ( mplShMem->AudioType ) | |
97 { | |
98 case 0: strcat( trbuf,"n" ); break; | |
99 case 1: strcat( trbuf,"m" ); break; | |
100 case 2: strcat( trbuf,"t" ); break; | |
101 } | |
102 break; | |
1707 | 103 case '$': strcat( trbuf,"$" ); break; |
1693 | 104 default: continue; |
105 } | |
106 c=strlen( trbuf ); | |
107 } | |
108 } | |
109 return trbuf; | |
110 } | |
111 | |
112 void PutImage( txSample * bf,int x,int y,int max,int ofs ) | |
113 { | |
114 int i=0,ix,iy; | |
115 unsigned long * buf = NULL; | |
116 unsigned long * drw = NULL; | |
117 unsigned long tmp; | |
118 | |
119 if ( ( !bf )||( bf->Image == NULL ) ) return; | |
120 | |
121 i=( bf->Width * ( bf->Height / max ) ) * ofs; | |
122 buf=(unsigned long *)mplDrawBuffer; | |
123 drw=(unsigned long *)bf->Image; | |
124 | |
125 for ( iy=y;iy < y+bf->Height / max;iy++ ) | |
126 for ( ix=x;ix < x+bf->Width;ix++ ) | |
127 { | |
128 tmp=drw[i++]; | |
129 if ( tmp != 0x00ff00ff ) | |
130 buf[ iy*appMPlayer.main.Bitmap.Width+ix ]=tmp; | |
131 } | |
132 } | |
133 | |
134 void mplMainDraw( wsParamDisplay ) | |
135 { | |
136 wItem * item; | |
137 txSample * image = NULL; | |
138 int i; | |
139 | |
140 if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible || | |
1729 | 141 !mainVisible ) return; |
142 // !appMPlayer.mainWindow.Mapped ) return; | |
143 | |
144 btnModify( evSetMoviePosition,mplShMem->Position ); | |
145 btnModify( evSetVolume,mplShMem->Volume ); | |
1751 | 146 |
147 switch ( mplShMem->Playing ) | |
148 { | |
149 case 2: | |
150 case 0: | |
151 btnModify( evPlaySwitchToPause,btnReleased ); | |
152 btnModify( evPauseSwitchToPlay,btnDisabled ); | |
153 break; | |
154 case 1: | |
1777 | 155 if ( mplShMem->Filename[0] != 0 ) |
1751 | 156 { |
157 btnModify( evPlaySwitchToPause,btnDisabled ); | |
158 btnModify( evPauseSwitchToPlay,btnReleased ); | |
159 } | |
160 } | |
161 | |
1744 | 162 // --- erosen ideiglenes. |
163 strcpy( gtkShMem->fs.filename,mplShMem->Filename ); | |
164 // --- | |
1693 | 165 |
166 if ( mplMainRender ) | |
167 { | |
168 memcpy( mplDrawBuffer,appMPlayer.main.Bitmap.Image,appMPlayer.main.Bitmap.ImageSize ); | |
169 for( i=0;i < appMPlayer.NumberOfItems + 1;i++ ) | |
170 { | |
171 item=&appMPlayer.Items[i]; | |
172 switch( item->type ) | |
173 { | |
174 case itButton: | |
175 PutImage( &item->Bitmap,item->x,item->y,3,item->pressed ); | |
176 break; | |
1729 | 177 case itPotmeter: |
178 PutImage( &item->Bitmap,item->x,item->y,item->phases,item->phases * ( item->value / 100.0f ) ); | |
179 break; | |
1693 | 180 case itHPotmeter: |
181 PutImage( &item->Bitmap,item->x,item->y,item->phases,item->phases * ( item->value / 100.0f ) ); | |
182 PutImage( &item->Mask,item->x + (int)( ( item->width - item->psx ) * item->value / 100.0f ),item->y,3,item->pressed ); | |
1729 | 183 break; |
1693 | 184 case itSLabel: |
185 image=fntRender( item->fontid,0,item->width,"%s",item->label ); | |
186 goto drawrenderedtext; | |
187 case itDLabel: | |
1729 | 188 image=fntRender( item->fontid,mplTimer%item->width,item->width,"%s",Translate( item->label ) ); |
189 // image=fntRender( item->fontid,( mplRedrawTimer / 10 )%item->width,item->width,"%s",Translate( item->label ) ); | |
1693 | 190 drawrenderedtext: |
191 PutImage( image,item->x,item->y,1,0 ); | |
192 if ( image ) | |
193 { | |
194 if ( image->Image ) free( image->Image ); | |
195 free( image ); | |
196 } | |
197 break; | |
198 } | |
199 } | |
200 wsConvert( &appMPlayer.mainWindow,mplDrawBuffer,appMPlayer.main.Bitmap.ImageSize ); | |
201 mplMainRender=0; | |
202 } | |
203 wsPutImage( &appMPlayer.mainWindow ); | |
1707 | 204 XFlush( wsDisplay ); |
1693 | 205 } |
206 | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
207 #define IZE(x) printf("@@@ " x " @@@\n"); |
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
208 |
1729 | 209 extern void exit_player(char* how); |
210 | |
1693 | 211 void mplMsgHandle( int msg,float param ) |
212 { | |
213 int j; | |
214 | |
215 switch( msg ) | |
216 { | |
217 // --- user events | |
218 case evExit: | |
1729 | 219 // IZE("evExit"); |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
220 wsDoExit(); // sets wsTrue=False; |
1729 | 221 exit_player( "Exit" ); |
1693 | 222 break; |
223 case evIconify: | |
1839 | 224 switch ( (int)param ) |
225 { | |
226 case 0: wsIconify( appMPlayer.mainWindow ); break; | |
227 case 1: wsIconify( appMPlayer.subWindow ); break; | |
228 } | |
1693 | 229 break; |
230 case evFullScreen: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
231 IZE("evFullS"); |
1693 | 232 for ( j=0;j<appMPlayer.NumberOfItems + 1;j++ ) |
233 { | |
234 if ( appMPlayer.Items[j].msg == evFullScreen ) | |
235 { | |
236 appMPlayer.Items[j].tmp=!appMPlayer.Items[j].tmp; | |
237 appMPlayer.Items[j].pressed=appMPlayer.Items[j].tmp; | |
238 } | |
239 } | |
240 mplMainRender=1; | |
241 mplFullScreen(); | |
242 break; | |
243 | |
244 case evPlaySwitchToPause: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
245 IZE("evPlay->Pause"); |
1693 | 246 if ( Filename ) |
247 { | |
248 btnModify( evPlaySwitchToPause,btnDisabled ); | |
249 btnModify( evPauseSwitchToPlay,btnReleased ); | |
250 } | |
251 if ( mplShMem->Playing == 1 ) goto NoPause; | |
252 case evPlay: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
253 IZE("evPlay"); |
1693 | 254 mplMainRender=1; |
255 mplPlay(); | |
256 break; | |
257 | |
258 case evPauseSwitchToPlay: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
259 IZE("evPause->Play"); |
1693 | 260 btnModify( evPlaySwitchToPause,btnReleased ); |
261 btnModify( evPauseSwitchToPlay,btnDisabled ); | |
262 case evPause: | |
263 NoPause: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
264 IZE("evPause"); |
1693 | 265 mplMainRender=1; |
266 mplPause(); | |
267 break; | |
268 | |
269 case evStop: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
270 IZE("evStop"); |
1693 | 271 btnModify( evPlaySwitchToPause,btnReleased ); |
272 btnModify( evPauseSwitchToPlay,btnDisabled ); | |
273 mplMainRender=1; | |
274 mplStop(); | |
275 break; | |
276 | |
277 case evLoadPlay: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
278 IZE("evLoadPlay"); |
1693 | 279 mplMainAutoPlay=1; |
280 case evLoad: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
281 IZE("evLoad"); |
1693 | 282 mplMainRender=1; |
283 gtkSendMessage( evLoad ); | |
284 break; | |
285 case evPrev: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
286 IZE("evPrev"); |
1693 | 287 mplMainRender=1; |
288 #ifdef DEBUG | |
289 dbprintf( 1,"[mw.h] previous stream ...\n" ); | |
290 #endif | |
291 break; | |
292 case evNext: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
293 IZE("evNext"); |
1693 | 294 mplMainRender=1; |
295 #ifdef DEBUG | |
296 dbprintf( 1,"[mw.h] next stream ...\n" ); | |
297 #endif | |
298 break; | |
299 | |
300 case evPlayList: | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1707
diff
changeset
|
301 IZE("evPlayList"); |
1693 | 302 mplMainRender=1; |
303 if ( gtkVisiblePlayList ) | |
304 { | |
305 btnModify( evPlayList,btnReleased ); | |
306 gtkShMem->vs.window=evPlayList; | |
307 gtkSendMessage( evHideWindow ); | |
308 gtkVisiblePlayList=0; | |
309 } | |
310 else | |
311 { | |
312 gtkSendMessage( evPlayList ); | |
313 btnModify( evPlayList,btnPressed ); | |
314 gtkVisiblePlayList=1; | |
315 } | |
316 break; | |
317 | |
318 case evSkinBrowser: gtkSendMessage( evSkinBrowser ); break; | |
319 case evAbout: gtkSendMessage( evAbout ); break; | |
320 case evPreferences: gtkSendMessage( evPreferences ); break; | |
321 | |
322 case evForward1min: mplRelSeek( 60 ); break; | |
323 case evBackward1min: mplRelSeek( -60 ); break; | |
324 case evForward10sec: mplRelSeek( 10 ); break; | |
325 case evBackward10sec: mplRelSeek( -10 ); break; | |
326 case evSetMoviePosition: mplAbsSeek( param ); break; | |
327 | |
1860 | 328 case evIncVolume: vo_x11_putkey( wsGrayMul ); break; |
329 case evDecVolume: vo_x11_putkey( wsGrayDiv ); break; | |
1847 | 330 case evMute: mplShMem->Mute=1; break; |
331 case evSetVolume: | |
332 case evSetBalance: mplShMem->VolumeChanged=1; break; | |
333 | |
1693 | 334 |
1765 | 335 case evNormalSize: |
336 if ( mplShMem->Playing ) | |
337 { | |
338 appMPlayer.subWindow.isFullScreen=True; | |
1769 | 339 appMPlayer.subWindow.OldX=( wsMaxX - moviewidth ) / 2; |
340 appMPlayer.subWindow.OldY=( wsMaxY - movieheight ) / 2; | |
1765 | 341 appMPlayer.subWindow.OldWidth=moviewidth; appMPlayer.subWindow.OldHeight=movieheight; |
342 wsFullScreen( &appMPlayer.subWindow ); | |
343 mplResize( appMPlayer.subWindow.X,appMPlayer.subWindow.Y,moviewidth,movieheight ); | |
344 } | |
345 break; | |
1769 | 346 case evDoubleSize: |
347 if ( mplShMem->Playing ) | |
348 { | |
349 appMPlayer.subWindow.isFullScreen=True; | |
350 appMPlayer.subWindow.OldX=( wsMaxX - moviewidth * 2 ) / 2; | |
351 appMPlayer.subWindow.OldY=( wsMaxY - movieheight * 2 ) / 2; | |
352 appMPlayer.subWindow.OldWidth=moviewidth * 2; appMPlayer.subWindow.OldHeight=movieheight * 2; | |
353 wsFullScreen( &appMPlayer.subWindow ); | |
354 mplResize( appMPlayer.subWindow.X,appMPlayer.subWindow.Y,moviewidth,movieheight ); | |
355 } | |
356 break; | |
1693 | 357 |
358 // --- timer events | |
359 case evHideMouseCursor: | |
360 wsVisibleMouse( &appMPlayer.subWindow,wsHideMouseCursor ); | |
361 break; | |
362 case evRedraw: | |
363 mplMainRender=1; | |
364 wsPostRedisplay( &appMPlayer.mainWindow ); | |
1729 | 365 // if ( !mplShMem->Playing ) |
1798 | 366 // wsPostRedisplay( &appMPlayer.subWindow ); |
1693 | 367 XFlush( wsDisplay ); |
1729 | 368 mplRedrawTimer=mplRedrawTimerConst; |
1693 | 369 break; |
370 case evGeneralTimer: | |
371 if ( mplMainAutoPlay ) | |
372 { | |
373 mplMainRender=1; | |
374 mplMainAutoPlay=0; | |
375 mplPlay(); | |
376 } | |
377 break; | |
378 // --- system events | |
379 case evNone: | |
380 dbprintf( 1,"[mw] event none received.\n" ); | |
381 break; | |
382 default: | |
383 dbprintf( 1,"[mw] unknown event received ( %d,%.2f ).\n",msg,param ); | |
384 break; | |
385 } | |
386 } | |
387 | |
388 void mplMainMouseHandle( int Button,int X,int Y,int RX,int RY ) | |
389 { | |
390 static int itemtype = 0; | |
391 static int SelectedButton = -1; | |
392 wItem * item = NULL; | |
393 float value = 0.0f; | |
394 wsVisibleMouse( &appMPlayer.subWindow,wsShowMouseCursor ); | |
395 switch ( Button ) | |
396 { | |
397 case wsPRMouseButton: | |
398 mplShowMenu( RX,RY ); | |
399 msButton=wsPRMouseButton; | |
400 break; | |
401 case wsRRMouseButton: | |
402 mplHideMenu( RX,RY ); | |
403 msButton=0; | |
404 break; | |
405 case wsPLMouseButton: | |
406 sx=X; sy=Y; | |
407 boxMoved=1; | |
408 msButton=wsPLMouseButton; | |
409 for ( i=0;i < appMPlayer.NumberOfItems + 1;i++ ) | |
410 { | |
411 item=&appMPlayer.Items[i]; | |
412 if ( item->pressed != btnDisabled ) | |
413 { | |
414 switch( item->type ) | |
415 { | |
416 case itButton: | |
417 if ( wgIsRect( X,Y, | |
418 item->x,item->y, | |
419 item->x+item->width,item->y+item->height ) ) | |
420 { | |
421 item->pressed=btnPressed; | |
422 mplMainRender=1; | |
423 SelectedButton=i; | |
424 msButton=0; | |
425 boxMoved=0; | |
426 } | |
427 if ( ( SelectedButton > -1 ) && | |
428 ( ( ( appMPlayer.Items[SelectedButton].msg == evPlaySwitchToPause && item->msg == evPauseSwitchToPlay ) ) || | |
429 ( ( appMPlayer.Items[SelectedButton].msg == evPauseSwitchToPlay && item->msg == evPlaySwitchToPause ) ) ) ) | |
430 { | |
431 appMPlayer.Items[SelectedButton].pressed=btnDisabled; | |
432 SelectedButton=i; | |
433 appMPlayer.Items[SelectedButton].pressed=btnPressed; | |
434 } | |
435 itemtype=itButton; | |
436 break; | |
437 case itPotmeter: | |
438 if ( wgIsRect( X,Y, | |
439 item->x,item->y, | |
440 item->x+item->width,item->y+item->height ) ) | |
441 { | |
442 item->pressed=btnPressed; | |
1729 | 443 item->used=1; |
1693 | 444 mplMainRender=1; |
445 SelectedButton=i; | |
446 boxMoved=0; | |
447 msButton=itPotmeter; | |
448 itemtype=itPotmeter; | |
449 } | |
450 break; | |
451 case itHPotmeter: | |
452 if ( wgIsRect( X,Y, | |
453 item->x,item->y, | |
454 item->x+item->width,item->y+item->height ) ) | |
455 { | |
456 item->pressed=btnPressed; | |
1729 | 457 item->used=1; |
1693 | 458 mplMainRender=1; |
459 SelectedButton=i; | |
460 boxMoved=0; | |
461 msButton=itHPotmeter; | |
462 itemtype=itHPotmeter; | |
463 } | |
464 break; | |
465 } | |
466 } | |
467 } | |
468 break; | |
469 case wsMoveMouse: | |
470 item=&appMPlayer.Items[SelectedButton]; | |
471 switch ( msButton ) | |
472 { | |
473 case wsPLMouseButton: | |
474 wsMoveWindow( &appMPlayer.mainWindow,RX - abs( sx ),RY - abs( sy ) ); | |
475 mplMainRender=0; | |
476 break; | |
477 case wsPRMouseButton: | |
478 mplMenuMouseHandle( X,Y,RX,RY ); | |
479 break; | |
480 case itPotmeter: | |
1729 | 481 item->value=(float)( X - item->x ) / item->width * 100.0f; |
1693 | 482 goto potihandled; |
483 case itHPotmeter: | |
1729 | 484 item->value=(float)( X - item->x ) / item->width * 100.0f; |
1693 | 485 potihandled: |
1750 | 486 if ( item->value > 100.0f ) item->value=100.0f; |
487 if ( item->value < 0.0f ) item->value=0.0f; | |
1848 | 488 if ( ( item->msg == evSetVolume )||( item->msg == evSetBalance ) ) |
489 { | |
490 mplShMem->VolumeChanged=1; | |
491 mplShMem->Volume=item->value; | |
492 } | |
1773 | 493 mplMsgHandle( item->msg,item->value ); |
1693 | 494 mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow ); |
495 break; | |
496 } | |
497 break; | |
498 case wsRLMouseButton: | |
499 msButton=0; | |
500 boxMoved=0; | |
501 item=&appMPlayer.Items[SelectedButton]; | |
502 item->pressed=btnReleased; | |
503 switch( itemtype ) | |
504 { | |
505 case itButton: | |
506 if ( wgIsRect( X,Y, | |
507 item->x,item->y, | |
508 item->x+item->width,item->y+item->height ) ) value=0; | |
509 break; | |
510 case itPotmeter: | |
511 case itHPotmeter: | |
1729 | 512 item->used=0; |
1693 | 513 btnModify( item->msg,(float)( X - item->x ) / item->width * 100.0f ); |
1848 | 514 if ( ( item->msg == evSetVolume )||( item->msg == evSetBalance ) ) |
515 { | |
516 mplShMem->VolumeChanged=1; | |
517 mplShMem->Volume=item->value; | |
518 } | |
1729 | 519 value=item->value; |
1693 | 520 break; |
521 } | |
522 if ( SelectedButton != -1 ) mplMsgHandle( item->msg,value ); | |
523 SelectedButton=-1; | |
524 mplMainRender=1; | |
525 itemtype=0; | |
526 break; | |
527 case wsPMMouseButton: break; | |
528 case wsRMMouseButton: break; | |
529 } | |
530 if ( Button != wsMoveMouse ) wsPostRedisplay( &appMPlayer.mainWindow ); | |
531 } | |
532 | |
533 int keyPressed = 0; | |
534 | |
535 void mplMainKeyHandle( int State,int Type,int Key ) | |
536 { | |
537 int msg = evNone; | |
538 switch ( Key ) | |
539 { | |
540 case '.': | |
541 case '>': msg=evNext; break; | |
542 case ',': | |
543 case '<': msg=evPrev; break; | |
544 | |
545 case wsEscape: msg=evExit; break; | |
546 | |
1845 | 547 // case wsUp: msg=evForward1min; break; |
548 // case wsDown: msg=evBackward1min; break; | |
549 // case wsRight: msg=evForward10sec; break; | |
550 // case wsLeft: msg=evBackward10sec; break; | |
1693 | 551 |
1845 | 552 // case wsGrayMul: msg=evIncVolume; break; |
553 // case wsGrayDiv: msg=evDecVolume; break; | |
1693 | 554 |
555 case wsEnter: msg=evPlay; break; | |
556 case wsSpace: msg=evPause; break; | |
557 case wsa: | |
558 case wsA: msg=evAbout; break; | |
559 case wsb: | |
560 case wsB: msg=evSkinBrowser; break; | |
561 case wse: | |
562 case wsE: msg=evEqualeaser; break; | |
563 case wsf: | |
564 case wsF: msg=evFullScreen; break; | |
565 case wsl: | |
566 case wsL: msg=evLoad; break; | |
567 case wsm: | |
568 case wsM: msg=evMute; break; | |
569 case wss: | |
570 case wsS: msg=evStop; break; | |
571 case wsp: | |
572 case wsP: msg=evPlayList; break; | |
1839 | 573 default: vo_x11_putkey( Key ); return; |
1693 | 574 } |
575 if ( ( msg != evNone )&&( Type == wsKeyPressed ) ) | |
576 { | |
577 mplMsgHandle( msg,0 ); | |
1845 | 578 // mplMainRender=1; |
579 // wsPostRedisplay( &appMPlayer.mainWindow ); | |
1693 | 580 } |
581 } |