annotate gui/ui/main.c @ 35789:9fdc3e22063f

Move main window initialization code to uiMainInit(). The code existed twice and could be removed from both interface.c and actions.c.
author ib
date Fri, 25 Jan 2013 15:39:18 +0000
parents 4073fff5efc7
children 5eac7c0879b7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26458
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
1 /*
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
2 * This file is part of MPlayer.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
3 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
5 * it under the terms of the GNU General Public License as published by
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
7 * (at your option) any later version.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
8 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
12 * GNU General Public License for more details.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
13 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
14 * You should have received a copy of the GNU General Public License along
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
17 */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
18
34699
ed0e00db4306 Cosmetic: Move, change and add some comments on GUI windows.
ib
parents: 34697
diff changeset
19 /* main window */
ed0e00db4306 Cosmetic: Move, change and add some comments on GUI windows.
ib
parents: 34697
diff changeset
20
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
21 #include <stdlib.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
22 #include <stdio.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
23 #include <sys/stat.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
24 #include <unistd.h>
23305
22d3d12c6dfb Include string.h for memcpy, fastmemcpy.h alone is not enough.
reimar
parents: 23154
diff changeset
25 #include <string.h>
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
26
35528
ab07b17fddfb Rebuild GUI directory structure.
ib
parents: 35525
diff changeset
27 #include "ui.h"
35525
e27855a45128 Rebuild GUI directory structure.
ib
parents: 35521
diff changeset
28 #include "gui/app/app.h"
e27855a45128 Rebuild GUI directory structure.
ib
parents: 35521
diff changeset
29 #include "gui/app/gui.h"
33738
998f94e62a61 Remove unnecessary #include "gui/interface.h".
ib
parents: 33737
diff changeset
30 #include "gui/interface.h"
26365
10dfbc523184 Add gui/ prefix to some #include paths so that compilation from the
diego
parents: 26203
diff changeset
31 #include "gui/skin/font.h"
10dfbc523184 Add gui/ prefix to some #include paths so that compilation from the
diego
parents: 26203
diff changeset
32 #include "gui/skin/skin.h"
33742
e1539e14d60f Move purely list related parts of gtkSet() from interface.c to list.c.
ib
parents: 33739
diff changeset
33 #include "gui/util/list.h"
33739
9f6d46d325de Remove gfree() from interface.c.
ib
parents: 33738
diff changeset
34 #include "gui/util/mem.h"
33737
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33657
diff changeset
35 #include "gui/util/string.h"
26365
10dfbc523184 Add gui/ prefix to some #include paths so that compilation from the
diego
parents: 26203
diff changeset
36 #include "gui/wm/ws.h"
35789
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
37 #include "gui/wm/wsxdnd.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
38
26382
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 26365
diff changeset
39 #include "help_mp.h"
34174
a93891202051 Add missing mp_msg.h #includes, remove some unnecessary ones.
diego
parents: 34077
diff changeset
40 #include "mp_msg.h"
26382
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 26365
diff changeset
41 #include "libvo/x11_common.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 26365
diff changeset
42 #include "libvo/fastmemcpy.h"
33531
84ce059fae34 Get non-multimedia X11 key definitions from libvo/wskeys.h.
ib
parents: 33525
diff changeset
43 #include "libvo/wskeys.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
44
26382
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 26365
diff changeset
45 #include "stream/stream.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 26365
diff changeset
46 #include "stream/url.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
47
26382
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 26365
diff changeset
48 #include "libmpdemux/demuxer.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 26365
diff changeset
49 #include "libmpdemux/stheader.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 26365
diff changeset
50 #include "codec-cfg.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 26365
diff changeset
51 #include "m_option.h"
30516
f4e017b6921a Fix exit_player() usage throughout the codebase.
diego
parents: 29263
diff changeset
52 #include "mp_core.h"
35545
d83d2bd5f365 Use FFMIN in evSetVolume.
ib
parents: 35544
diff changeset
53 #include "libavutil/common.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
54
33556
520fb0f7544c Rename GUI directory 'mplayer' and some files in it.
ib
parents: 33555
diff changeset
55 #include "actions.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
56
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
57 unsigned char * mainDrawBuffer = NULL;
35771
07057fd75c51 Relocate uiMainEvent().
ib
parents: 35770
diff changeset
58 int uiMainRender = True;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
59
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35490
diff changeset
60 int mainVisible = True;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
61
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35490
diff changeset
62 int boxMoved = False;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
63 int sx = 0,sy = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
64 int i,pot = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
65
33556
520fb0f7544c Rename GUI directory 'mplayer' and some files in it.
ib
parents: 33555
diff changeset
66 #include "render.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
67
35780
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
68 static void uiMainDraw( void )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
69 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
70
33768
cee9987bc81d Remove guiExit().
ib
parents: 33763
diff changeset
71 if ( guiApp.mainWindow.State == wsWindowClosed ) mplayer( MPLAYER_EXIT_GUI, EXIT_QUIT, 0 );
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28051
diff changeset
72
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
73 if ( guiApp.mainWindow.Visible == wsWindowNotVisible ||
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
74 !mainVisible ) return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
75 // !guiApp.mainWindow.Mapped ) return;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
76
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
77 if ( uiMainRender && guiApp.mainWindow.State == wsWindowExpose )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
78 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
79 btnModify( evSetMoviePosition,guiInfo.Position );
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
80 btnModify( evSetVolume,guiInfo.Volume );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
81
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
82 fast_memcpy( mainDrawBuffer,guiApp.main.Bitmap.Image,guiApp.main.Bitmap.ImageSize );
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
83 RenderAll( &guiApp.mainWindow,guiApp.mainItems,guiApp.IndexOfMainItems,mainDrawBuffer );
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35490
diff changeset
84 uiMainRender=False;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
85 }
35746
e745b22750f6 Add some notes for later checking and fixing.
ib
parents: 35727
diff changeset
86 // NOTE TO MYSELF: probably not, if uiMainRender is False
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35675
diff changeset
87 wsImageDraw( &guiApp.mainWindow );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
88 // XFlush( wsDisplay );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
89 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
90
35780
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
91 static void uiMainMouse( int Button,int X,int Y,int RX,int RY )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
92 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
93 static int itemtype = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
94 int i;
35688
6fd886ce32b9 Cosmetic: Rename wItem guiItem.
ib
parents: 35681
diff changeset
95 guiItem * item = NULL;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
96 float value = 0.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
97
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
98 static int SelectedItem = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
99 int currentselected = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
100
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
101 for ( i=0;i <= guiApp.IndexOfMainItems;i++ )
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
102 if ( ( guiApp.mainItems[i].pressed != btnDisabled )&&
35675
9e2183017f1f Move wgIsRect from ws.h to gui.h.
ib
parents: 35671
diff changeset
103 ( isInside( X,Y,guiApp.mainItems[i].x,guiApp.mainItems[i].y,guiApp.mainItems[i].x+guiApp.mainItems[i].width,guiApp.mainItems[i].y+guiApp.mainItems[i].height ) ) )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
104 { currentselected=i; break; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
105
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
106 switch ( Button )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
107 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
108 case wsPMMouseButton:
34333
e8e4e6f9b7ac Change prefix for internal events from ev to iv.
ib
parents: 34329
diff changeset
109 gtkShow( ivHidePopUpMenu,NULL );
35766
16ed8155439b Rename uiShowMenu() uiMenuShow() and uiHideMenu() uiMenuHide().
ib
parents: 35763
diff changeset
110 uiMenuShow( RX,RY );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
111 itemtype=itPRMButton;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
112 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
113 case wsRMMouseButton:
35766
16ed8155439b Rename uiShowMenu() uiMenuShow() and uiHideMenu() uiMenuHide().
ib
parents: 35763
diff changeset
114 uiMenuHide( RX,RY,0 );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
115 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
116
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
117 case wsPLMouseButton:
34333
e8e4e6f9b7ac Change prefix for internal events from ev to iv.
ib
parents: 34329
diff changeset
118 gtkShow( ivHidePopUpMenu,NULL );
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35490
diff changeset
119 sx=X; sy=Y; boxMoved=True; itemtype=itPLMButton;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
120 SelectedItem=currentselected;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
121 if ( SelectedItem == -1 ) break;
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35490
diff changeset
122 boxMoved=False;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
123 item=&guiApp.mainItems[SelectedItem];
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
124 itemtype=item->type;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
125 item->pressed=btnPressed;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
126 switch( item->type )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
127 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
128 case itButton:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
129 if ( ( SelectedItem > -1 ) &&
32911
e06fbdd8eb46 Clean up the wItem structure.
ib
parents: 32896
diff changeset
130 ( ( ( item->message == evPlaySwitchToPause && item->message == evPauseSwitchToPlay ) ) ||
e06fbdd8eb46 Clean up the wItem structure.
ib
parents: 32896
diff changeset
131 ( ( item->message == evPauseSwitchToPlay && item->message == evPlaySwitchToPause ) ) ) )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
132 { item->pressed=btnDisabled; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
133 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
134 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
135 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
136 case wsRLMouseButton:
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35490
diff changeset
137 boxMoved=False;
33107
eda3df3e4a9d Prevent an out-of-bounds array access.
ib
parents: 33002
diff changeset
138 if ( SelectedItem != -1 ) // NOTE TO MYSELF: only if itButton, itHPotmeter or itVPotmeter
eda3df3e4a9d Prevent an out-of-bounds array access.
ib
parents: 33002
diff changeset
139 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
140 item=&guiApp.mainItems[SelectedItem];
33108
5450a92ac4bd Cosmetic: Adjust indent.
ib
parents: 33107
diff changeset
141 item->pressed=btnReleased;
33107
eda3df3e4a9d Prevent an out-of-bounds array access.
ib
parents: 33002
diff changeset
142 }
35351
92f6fc87ddc8 Fix segmentation fault with mouse button release.
ib
parents: 35349
diff changeset
143 if ( currentselected == - 1 || SelectedItem == -1 ) { itemtype=0; break; }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
144 SelectedItem=-1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
145 value=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
146 switch( itemtype )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
147 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
148 case itPotmeter:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
149 case itHPotmeter:
32911
e06fbdd8eb46 Clean up the wItem structure.
ib
parents: 32896
diff changeset
150 btnModify( item->message,(float)( X - item->x ) / item->width * 100.0f );
35773
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35771
diff changeset
151 uiEvent( item->message,item->value );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
152 value=item->value;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
153 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
154 case itVPotmeter:
32911
e06fbdd8eb46 Clean up the wItem structure.
ib
parents: 32896
diff changeset
155 btnModify( item->message, ( 1. - (float)( Y - item->y ) / item->height) * 100.0f );
35773
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35771
diff changeset
156 uiEvent( item->message,item->value );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
157 value=item->value;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
158 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
159 }
35773
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35771
diff changeset
160 uiEvent( item->message,value );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
161 itemtype=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
162 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
163
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
164 case wsRRMouseButton:
34333
e8e4e6f9b7ac Change prefix for internal events from ev to iv.
ib
parents: 34329
diff changeset
165 gtkShow( ivShowPopUpMenu,NULL );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
166 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
167
34684
b03481253518 Cosmetic: Prefer C style for single line comments.
ib
parents: 34681
diff changeset
168 /* rolled mouse ... de szar :))) */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
169 case wsP5MouseButton: value=-2.5f; goto rollerhandled;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
170 case wsP4MouseButton: value= 2.5f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
171 rollerhandled:
35365
fb054f36c3a9 Prevent negative array index read.
ib
parents: 35357
diff changeset
172 if (currentselected != - 1)
fb054f36c3a9 Prevent negative array index read.
ib
parents: 35357
diff changeset
173 {
35366
92cafcf6f6b2 Cosmetic: Adjust indent.
ib
parents: 35365
diff changeset
174 item=&guiApp.mainItems[currentselected];
92cafcf6f6b2 Cosmetic: Adjust indent.
ib
parents: 35365
diff changeset
175 if ( ( item->type == itHPotmeter )||( item->type == itVPotmeter )||( item->type == itPotmeter ) )
92cafcf6f6b2 Cosmetic: Adjust indent.
ib
parents: 35365
diff changeset
176 {
92cafcf6f6b2 Cosmetic: Adjust indent.
ib
parents: 35365
diff changeset
177 item->value+=value;
92cafcf6f6b2 Cosmetic: Adjust indent.
ib
parents: 35365
diff changeset
178 btnModify( item->message,item->value );
35773
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35771
diff changeset
179 uiEvent( item->message,item->value );
35366
92cafcf6f6b2 Cosmetic: Adjust indent.
ib
parents: 35365
diff changeset
180 }
35365
fb054f36c3a9 Prevent negative array index read.
ib
parents: 35357
diff changeset
181 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
182 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
183
34684
b03481253518 Cosmetic: Prefer C style for single line comments.
ib
parents: 34681
diff changeset
184 /* moving */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
185 case wsMoveMouse:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33548
diff changeset
186 item=&guiApp.mainItems[SelectedItem];
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
187 switch ( itemtype )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
188 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
189 case itPLMButton:
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35675
diff changeset
190 wsWindowMove( &guiApp.mainWindow,True,RX - abs( sx ),RY - abs( sy ) );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
191 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
192 case itPRMButton:
35779
8ad72f9cf697 Fix segmentation fault with menu window.
ib
parents: 35778
diff changeset
193 if (guiApp.menuIsPresent) guiApp.menuWindow.MouseHandler( 0,RX,RY,0,0 );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
194 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
195 case itPotmeter:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
196 item->value=(float)( X - item->x ) / item->width * 100.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
197 goto potihandled;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
198 case itVPotmeter:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
199 item->value=(1. - (float)( Y - item->y ) / item->height) * 100.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
200 goto potihandled;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
201 case itHPotmeter:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
202 item->value=(float)( X - item->x ) / item->width * 100.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
203 potihandled:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
204 if ( item->value > 100.0f ) item->value=100.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
205 if ( item->value < 0.0f ) item->value=0.0f;
35773
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35771
diff changeset
206 uiEvent( item->message,item->value );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
207 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
208 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
209 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
210 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
211 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
212
35780
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
213 static void uiMainKey( int KeyCode,int Type,int Key )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
214 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
215 int msg = evNone;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
216
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
217 if ( Type != wsKeyPressed ) return;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28051
diff changeset
218
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
219 if ( !Key )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
220 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
221 switch ( KeyCode )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
222 {
33524
7d5fd12b86e7 Add note on wsXFMM key definitions.
ib
parents: 33263
diff changeset
223 // NOTE TO MYSELF: This is only for the Acer AirKey V keyboard.
33536
fc1402410163 Remove support for Acer AirKey V keyboard multimedia keys.
ib
parents: 33535
diff changeset
224 /*case wsXFMMPrev: msg=evPrev; break;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
225 case wsXFMMStop: msg=evStop; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
226 case wsXFMMPlay: msg=evPlaySwitchToPause; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
227 case wsXFMMNext: msg=evNext; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
228 case wsXFMMVolUp: msg=evIncVolume; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
229 case wsXFMMVolDown: msg=evDecVolume; break;
33536
fc1402410163 Remove support for Acer AirKey V keyboard multimedia keys.
ib
parents: 33535
diff changeset
230 case wsXFMMMute: msg=evMute; break;*/
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
231 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
232 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
233 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
234 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
235 switch ( Key )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
236 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
237 case wsEnter: msg=evPlay; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
238 case wsXF86LowerVolume: msg=evDecVolume; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
239 case wsXF86RaiseVolume: msg=evIncVolume; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
240 case wsXF86Mute: msg=evMute; break;
33525
b32fcc18c9b4 Add support for multimedia pause key.
ib
parents: 33524
diff changeset
241 case wsXF86Pause:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
242 case wsXF86Play: msg=evPlaySwitchToPause; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
243 case wsXF86Stop: msg=evStop; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
244 case wsXF86Prev: msg=evPrev; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
245 case wsXF86Next: msg=evNext; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
246 case wsXF86Media: msg=evLoad; break;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28051
diff changeset
247 case wsEscape:
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
248 if ( guiInfo.VideoWindow && guiInfo.Playing && guiApp.videoWindow.isFullScreen )
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28051
diff changeset
249 {
35773
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35771
diff changeset
250 uiEvent( evNormalSize,0 );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
251 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
252 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
253 default: vo_x11_putkey( Key ); return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
254 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
255 }
35773
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35771
diff changeset
256 if ( msg != evNone ) uiEvent( msg,0 );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
257 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
258
35759
afb55738b1b7 Cosmetic: Replace DandD by DND.
ib
parents: 35758
diff changeset
259 /* this will be used to handle drag & drop files */
35780
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
260 static void uiMainDND(int num,char** files)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
261 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
262 struct stat buf;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
263 int f = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
264
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
265 char* subtitles = NULL;
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35496
diff changeset
266 char* file = NULL;
35384
9c7bba653bfb Avoid a duplicate strrchr() call.
ib
parents: 35377
diff changeset
267 char* s;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
268
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
269 if (num <= 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
270 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
271
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
272
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
273 /* now fill it with new items */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
274 for(f=0; f < num; f++){
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
275 char* str = strdup( files[f] );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
276 plItem* item;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
277
24086
f5b32d12b691 remove gconvert_uri_to_filename() and use url_unescape_string() instead.
iive
parents: 23457
diff changeset
278 url_unescape_string(str, files[f]);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
279
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
280 if(stat(str,&buf) == 0 && S_ISDIR(buf.st_mode) == 0) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
281 /* this is not a directory so try to play it */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
282 mp_msg( MSGT_GPLAYER,MSGL_V,"Received D&D %s\n",str );
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28051
diff changeset
283
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
284 /* check if it is a subtitle file */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
285 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
286 char* ext = strrchr(str,'.');
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
287 if (ext) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
288 static char supported[] = "utf/sub/srt/smi/rt//txt/ssa/aqt/";
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
289 char* type;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
290 int len;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
291 if((len=strlen(++ext)) && (type=strstr(supported,ext)) &&\
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
292 (type-supported)%4 == 0 && *(type+len) == '/'){
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
293 /* handle subtitle file */
33739
9f6d46d325de Remove gfree() from interface.c.
ib
parents: 33738
diff changeset
294 nfree(subtitles);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
295 subtitles = str;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
296 continue;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
297 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
298 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
299 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
300
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
301 /* clear playlist */
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35496
diff changeset
302 if (file == NULL) {
baf53d200292 Avoid using local variables named filename.
ib
parents: 35496
diff changeset
303 file = files[f];
34663
73a5ecb53ee2 Replace symbolic constants by enums.
ib
parents: 34610
diff changeset
304 listMgr(PLAYLIST_DELETE,0);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
305 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
306
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
307 item = calloc(1,sizeof(plItem));
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28051
diff changeset
308
35384
9c7bba653bfb Avoid a duplicate strrchr() call.
ib
parents: 35377
diff changeset
309 s = strrchr( str,'/' );
9c7bba653bfb Avoid a duplicate strrchr() call.
ib
parents: 35377
diff changeset
310
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
311 /* FIXME: decompose file name ? */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
312 /* yes -- Pontscho */
35384
9c7bba653bfb Avoid a duplicate strrchr() call.
ib
parents: 35377
diff changeset
313 if ( s ) {
9c7bba653bfb Avoid a duplicate strrchr() call.
ib
parents: 35377
diff changeset
314 *s=0; s++;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
315 item->name = gstrdup( s );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
316 item->path = gstrdup( str );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
317 } else {
35385
8b8534de8b83 A non-existing path shouldn't be an empty string.
ib
parents: 35384
diff changeset
318 // NOTE TO MYSELF: this shouldn't happen, make sure we have a full path
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
319 item->name = strdup(str);
35385
8b8534de8b83 A non-existing path shouldn't be an empty string.
ib
parents: 35384
diff changeset
320 item->path = strdup(".");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
321 }
34681
42fa91951bd2 Rename PLAYLIST_ITEM_ADD PLAYLIST_ITEM_APPEND.
ib
parents: 34669
diff changeset
322 listMgr(PLAYLIST_ITEM_APPEND,item);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
323 } else {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
324 mp_msg( MSGT_GPLAYER,MSGL_WARN,MSGTR_NotAFile,str );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
325 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
326 free( str );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
327 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
328
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35496
diff changeset
329 if (file) {
baf53d200292 Avoid using local variables named filename.
ib
parents: 35496
diff changeset
330 uiSetFile( NULL,file,STREAMTYPE_FILE );
35773
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35771
diff changeset
331 if ( guiInfo.Playing == GUI_PLAY ) uiEvent( evStop,0 );
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35771
diff changeset
332 uiEvent( evPlay,0 );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
333 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
334 if (subtitles) {
33897
e0d211c62cf7 Cosmetic: Rename some guiInfo members.
ib
parents: 33890
diff changeset
335 nfree(guiInfo.SubtitleFilename);
e0d211c62cf7 Cosmetic: Rename some guiInfo members.
ib
parents: 33890
diff changeset
336 guiInfo.SubtitleFilename = subtitles;
e0d211c62cf7 Cosmetic: Rename some guiInfo members.
ib
parents: 33890
diff changeset
337 mplayerLoadSubtitle(guiInfo.SubtitleFilename);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
338 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
339 }
35780
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
340
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
341 void uiMainInit (void)
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
342 {
35789
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
343 mainDrawBuffer = malloc(guiApp.main.Bitmap.ImageSize);
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
344
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
345 if (!mainDrawBuffer)
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
346 {
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
347 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_NEMDB);
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
348 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
349 }
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
350
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
351 wsWindowCreate(&guiApp.mainWindow, guiApp.main.x, guiApp.main.y, guiApp.main.width, guiApp.main.height, (guiApp.mainDecoration ? wsShowFrame : 0 ) | wsMinSize | wsMaxSize | wsHideWindow, wsShowMouseCursor | wsHandleMouseButton | wsHandleMouseMove, "MPlayer");
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
352 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[main] mainWindow ID: 0x%x\n", (int) guiApp.mainWindow.WindowID);
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
353 wsWindowShape(&guiApp.mainWindow, guiApp.main.Mask.Image);
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
354 wsWindowIcon(wsDisplay, guiApp.mainWindow.WindowID, &guiIcon);
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
355 wsXDNDMakeAwareness(&guiApp.mainWindow);
9fdc3e22063f Move main window initialization code to uiMainInit().
ib
parents: 35780
diff changeset
356
35780
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
357 guiApp.mainWindow.DrawHandler = uiMainDraw;
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
358 guiApp.mainWindow.MouseHandler = uiMainMouse;
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
359 guiApp.mainWindow.KeyHandler = uiMainKey;
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
360 guiApp.mainWindow.DNDHandler = uiMainDND;
4073fff5efc7 Add new functions uiMainInit() and uiVideoInit().
ib
parents: 35779
diff changeset
361 }