annotate gui/win32/gui.c @ 37151:c63629427fde

Apply skin defaults in Win32 GUI. The starting defaults for volume, balance and movie position are defined in the skin used by the GUI. So far, the Win32 GUI has completely ignored these. Based on a patch by Stephen Sheldon, sfsheldo gmail com.
author ib
date Wed, 06 Aug 2014 16:35:38 +0000
parents 84c93a60ead3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1 /*
23079
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
2 * MPlayer GUI for Win32
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
3 * Copyright (C) 2003 Sascha Sommer <saschasommer@freenet.de>
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
4 * Copyright (C) 2006 Erik Augustson <erik_27can@yahoo.com>
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
5 * Copyright (C) 2006 Gianluigi Tiesi <sherpya@netfarm.it>
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
6 *
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
7 * This file is part of MPlayer.
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
8 *
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
9 * MPlayer is free software; you can redistribute it and/or modify
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
10 * it under the terms of the GNU General Public License as published by
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
12 * (at your option) any later version.
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
13 *
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
14 * MPlayer is distributed in the hope that it will be useful,
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
17 * GNU General Public License for more details.
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
18 *
26457
9ba6d4487292 Use standard GPL header.
diego
parents: 26372
diff changeset
19 * You should have received a copy of the GNU General Public License along
9ba6d4487292 Use standard GPL header.
diego
parents: 26372
diff changeset
20 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
9ba6d4487292 Use standard GPL header.
diego
parents: 26372
diff changeset
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23079
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
22 */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
23
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
24 #include <stdio.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
25 #include <stdlib.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
26 #include <ctype.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
27 #include <fcntl.h>
37053
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
28 #include <math.h>
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
29 #include <windows.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
30 #include <windowsx.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
31 #include <shlobj.h>
23091
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
32
35450
31a5320909f7 Don't include config.h if not necessary.
ib
parents: 35002
diff changeset
33 #include "config.h"
31511
13ca93203358 Factorize MPlayer/MEncoder version string handling.
diego
parents: 30684
diff changeset
34 #include "mpcommon.h"
23091
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
35 #include "mplayer.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
36 #include "mp_fifo.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
37 #include "mp_msg.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
38 #include "help_mp.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
39 #include "input/input.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
40 #include "input/mouse.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
41 #include "osdep/keycodes.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
42 #include "stream/stream.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
43 #include "libvo/video_out.h"
30684
dc7ed18ea0df Include libmpcodecs/vd.h for declaration of "fullscreen".
zuxy
parents: 30558
diff changeset
44 #include "libmpcodecs/vd.h"
26372
76413880bfad Update include paths to account for build system changes.
diego
parents: 26193
diff changeset
45 #include "gui/interface.h"
33761
16286ee1fc71 Fix Win32 GUI compilation problems.
ib
parents: 33640
diff changeset
46 #include "gui/ui/actions.h"
35528
ab07b17fddfb Rebuild GUI directory structure.
ib
parents: 35521
diff changeset
47 #include "gui/ui/ui.h"
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
48 #include "gui/util/mem.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
49 #include "gui.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
50 #include "dialogs.h"
33965
8a480da297e5 Add an about box to the Win32 GUI.
ib
parents: 33782
diff changeset
51 #include "version.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
52
34684
b03481253518 Cosmetic: Prefer C style for single line comments.
ib
parents: 34454
diff changeset
53 /* HACK around bug in old mingw */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
54 #undef INVALID_FILE_ATTRIBUTES
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
55 #define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
56
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
57 #ifndef WM_XBUTTONDOWN
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
58 # define WM_XBUTTONDOWN 0x020B
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
59 # define WM_XBUTTONUP 0x020C
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
60 # define WM_XBUTTONDBLCLK 0x020D
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
61 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
62
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
63 /* Globals / Externs */
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
64 float video_aspect;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
65
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
66 DWORD oldtime;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
67 NOTIFYICONDATA nid;
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 35452
diff changeset
68 int console_state = FALSE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
69 play_tree_t *playtree = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
70
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
71 static HBRUSH colorbrush = NULL; //Handle to colorkey brush
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
72 static COLORREF windowcolor = RGB(255,0,255); //Windowcolor == colorkey
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
73
34163
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
74 /**
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
75 * @brief Convert an UTF-8 encoded string into ANSI codepage encoding.
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
76 *
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
77 * @param utf8 UTF-8 encoded string
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
78 *
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
79 * @return string containing ANSI codepage encoding of @a utf8 (or, in case
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
80 * of error, a string containing the question mark character)
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
81 */
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
82 LPSTR acp (LPCSTR utf8)
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
83 {
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
84 static LPSTR acp_str = NULL;
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
85 int chars;
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
86 LPWSTR uc_str;
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
87
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
88 chars = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
89
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
90 if (chars)
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
91 {
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
92 uc_str = malloc(sizeof(*uc_str) * (chars + 1));
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
93
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
94 if (uc_str)
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
95 {
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
96 MultiByteToWideChar(CP_UTF8, 0, utf8, -1, uc_str, chars);
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
97
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
98 chars = WideCharToMultiByte(CP_ACP, 0, uc_str, -1, NULL, 0, NULL, 0);
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
99
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
100 if (chars)
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
101 {
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
102 free(acp_str);
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
103 acp_str = malloc(sizeof(*acp_str) * (chars + 1));
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
104
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
105 if (acp_str)
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
106 {
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
107 WideCharToMultiByte(CP_ACP, 0, uc_str, -1, acp_str, chars, NULL, 0);
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
108 free(uc_str);
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
109
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
110 return acp_str;
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
111 }
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
112 }
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
113
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
114 free(uc_str);
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
115 }
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
116 }
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
117
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
118 return "?";
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
119 }
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
120
37053
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
121 double appRadian (widget *item, int x, int y)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
122 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
123 double tx, ty;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
124
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
125 // transform the center to (0,0)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
126 tx = x - item->wwidth / 2.0;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
127 ty = y - item->wheight / 2.0;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
128
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
129 // the y-axis is upside down and must be mirrored
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
130 // the x-axis is being mirrored for a clockwise radian
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
131 return (tx == 0.0 && ty == 0.0 ? 0.0 : atan2(-ty, -tx) + M_PI);
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
132 }
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
133
35001
05d54ab2ba5c Add check-mark for menu item "Debug Console".
ib
parents: 34996
diff changeset
134 static void console_toggle(gui_t *gui)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
135 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
136 if (console_state)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
137 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
138 FreeConsole();
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 35452
diff changeset
139 console = FALSE;
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 35452
diff changeset
140 console_state = FALSE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
141 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
142 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
143 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
144 /* This code comes from: http://dslweb.nwnexus.com/~ast/dload/guicon.htm */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
145 CONSOLE_SCREEN_BUFFER_INFO coninfo;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
146 FILE *fp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
147 HWND hwnd = NULL;
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 35452
diff changeset
148 console = TRUE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
149 AllocConsole();
31511
13ca93203358 Factorize MPlayer/MEncoder version string handling.
diego
parents: 30684
diff changeset
150 SetConsoleTitle(mplayer_version);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
151
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
152 /* disable the close button for now */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
153 while (!hwnd)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
154 {
31511
13ca93203358 Factorize MPlayer/MEncoder version string handling.
diego
parents: 30684
diff changeset
155 hwnd = FindWindow(NULL, mplayer_version);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
156 Sleep(100);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
157 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
158 DeleteMenu(GetSystemMenu(hwnd, 0), SC_CLOSE, MF_BYCOMMAND);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
159
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
160 GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
161 coninfo.dwSize.Y = 1000;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
162 SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
163 fp = freopen("con", "w", stdout);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
164 *stdout = *fp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
165 setvbuf(stdout, NULL, _IONBF, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
166 fp = freopen("con", "r", stdin);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
167 *stdin = *fp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
168 setvbuf(stdin, NULL, _IONBF, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
169 fp = freopen("con", "w", stdout);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
170 *stderr = *fp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
171 setvbuf(stderr, NULL, _IONBF, 0);
36053
7affacef2f88 Define "MPlayer" string.
ib
parents: 35528
diff changeset
172 print_version(MPlayer);
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 35452
diff changeset
173 console_state = TRUE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
174 }
35002
64d72a128ea8 Rewrite condition and use console_state instead of console.
ib
parents: 35001
diff changeset
175
64d72a128ea8 Rewrite condition and use console_state instead of console.
ib
parents: 35001
diff changeset
176 if (gui)
64d72a128ea8 Rewrite condition and use console_state instead of console.
ib
parents: 35001
diff changeset
177 {
64d72a128ea8 Rewrite condition and use console_state instead of console.
ib
parents: 35001
diff changeset
178 CheckMenuItem(gui->traymenu, ID_CONSOLE, MF_BYCOMMAND | (console_state ? MF_CHECKED : MF_UNCHECKED));
64d72a128ea8 Rewrite condition and use console_state instead of console.
ib
parents: 35001
diff changeset
179 CheckMenuItem(gui->menu, ID_CONSOLE, MF_BYCOMMAND | (console_state ? MF_CHECKED : MF_UNCHECKED));
64d72a128ea8 Rewrite condition and use console_state instead of console.
ib
parents: 35001
diff changeset
180 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
181 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
182
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35501
diff changeset
183 void capitalize(char *fname)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
184 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
185 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
186 BOOL cap = TRUE;
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35501
diff changeset
187 for (i=0; i < strlen(fname); i++)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
188 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
189 if (cap)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
190 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
191 cap = FALSE;
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35501
diff changeset
192 fname[i] = toupper(fname[i]);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
193 }
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35501
diff changeset
194 else if (fname[i] == ' ')
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
195 cap = TRUE;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
196 else
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35501
diff changeset
197 fname[i] = tolower(fname[i]);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
198 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
199 }
33965
8a480da297e5 Add an about box to the Win32 GUI.
ib
parents: 33782
diff changeset
200 static void display_about_box(HWND hWnd)
8a480da297e5 Add an about box to the Win32 GUI.
ib
parents: 33782
diff changeset
201 {
8a480da297e5 Add an about box to the Win32 GUI.
ib
parents: 33782
diff changeset
202 char about_msg[512];
36053
7affacef2f88 Define "MPlayer" string.
ib
parents: 35528
diff changeset
203 snprintf(about_msg, sizeof(about_msg), MP_TITLE "\n" COPYRIGHT, MPlayer);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
204 MessageBox(hWnd, about_msg, acp(MSGTR_GUI_AboutMPlayer), MB_OK);
33965
8a480da297e5 Add an about box to the Win32 GUI.
ib
parents: 33782
diff changeset
205 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
206
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
207 static image *get_drawground(HWND hwnd)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
208 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
209 gui_t * gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
210 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
211 if(!gui) return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
212 for(i=0; i<gui->window_priv_count; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
213 if(gui->window_priv[i]->hwnd==hwnd)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
214 return &gui->window_priv[i]->img;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
215 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
216 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
217
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
218 static HBITMAP get_bitmap(HWND hwnd)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
219 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
220 gui_t *gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
221 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
222 if(!gui) return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
223 for(i=0; i<gui->window_priv_count; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
224 if(gui->window_priv[i]->hwnd == hwnd)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
225 return gui->window_priv[i]->bitmap;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
226 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
227 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
228
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
229 static int get_windowtype(HWND hwnd)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
230 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
231 gui_t *gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
232 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
233 if(!gui) return -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
234 for(i=0; i<gui->window_priv_count; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
235 if(gui->window_priv[i]->hwnd == hwnd)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
236 return gui->window_priv[i]->type;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
237 return -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
238 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
239
37151
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
240 static void get_widgetvalue(skin_t *skin, int event, float *value)
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
241 {
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
242 unsigned int i;
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
243
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
244 if (!skin) return;
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
245
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
246 for (i=0; i<skin->widgetcount; i++)
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
247 if (skin->widgets[i]->msg == event)
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
248 {
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
249 *value = skin->widgets[i]->value;
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
250 return;
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
251 }
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
252 }
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
253
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
254 static void uninit(gui_t *gui)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
255 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
256 if(gui->skin) destroy_window(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
257 if(gui->playlist) gui->playlist->free_playlist(gui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
258 gui->playlist = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
259 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
260
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
261 /*
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
262 the gui message handler
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
263 tries to handle the incoming messages
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
264 and passes them to the player's message handler if it can't handle them
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
265 */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
266 static void handlemsg(HWND hWnd, int msg)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
267 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
268 gui_t *gui = (gui_t *) GetWindowLongPtr(hWnd, GWLP_USERDATA);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
269 if(msg == evNone) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
270
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
271 switch(msg)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
272 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
273 case evLoadPlay:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
274 case evLoad:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
275 if(display_openfilewindow(gui, 0) && (msg == evLoadPlay))
34325
fc74085e2487 Fix bug in Win32 GUI introduced in r34403.
ib
parents: 34321
diff changeset
276 gui->playercontrol(evLoadPlay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
277 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
278 case evLoadSubtitle:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
279 display_opensubtitlewindow(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
280 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
281 case evPreferences:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
282 display_prefswindow(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
283 return;
34321
daebf766dea6 Cosmetic: Synchronize evPlaylist event and message names.
ib
parents: 34315
diff changeset
284 case evPlaylist:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
285 display_playlistwindow(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
286 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
287 case evSkinBrowser:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
288 display_skinbrowser(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
289 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
290 case evEqualizer:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
291 display_eqwindow(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
292 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
293 case evAbout:
33965
8a480da297e5 Add an about box to the Win32 GUI.
ib
parents: 33782
diff changeset
294 display_about_box(hWnd);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
295 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
296 case evIconify:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
297 ShowWindow(hWnd, SW_MINIMIZE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
298 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
299 case evIncVolume:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
300 mplayer_put_key(KEY_VOLUME_UP);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
301 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
302 case evDecVolume:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
303 mplayer_put_key(KEY_VOLUME_DOWN);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
304 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
305 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
306 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] received msg %s (%i)\n", gui->skin->geteventname(msg), msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
307 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
308 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
309 gui->playercontrol(msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
310 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
311
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
312 static widget *clickedinsidewidget(gui_t *gui, int window, int x, int y)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
313 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
314 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
315 widget *item;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
316 for(i=0; i<gui->skin->widgetcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
317 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
318 item = gui->skin->widgets[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
319 if((item->window == window) && (item->x <= x) && (item->x + item->width >= x) &&
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
320 (item->y <= y) && (item->y + item->height >= y))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
321 return item;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
322 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
323 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
324 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
325
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
326 /* updates sliders and the display */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
327 static void updatedisplay(gui_t *gui, HWND hwnd)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
328 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
329 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
330 window_priv_t *priv = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
331 DWORD time = timeGetTime();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
332
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
333 if(!hwnd) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
334
37053
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
335 /* load all hpotmeters vpotmeters rpotmeters pimages */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
336 for(i=0; i<gui->skin->widgetcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
337 {
37053
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
338 if(gui->skin->widgets[i]->type == tyHpotmeter || gui->skin->widgets[i]->type == tyVpotmeter || gui->skin->widgets[i]->type == tyRpotmeter || gui->skin->widgets[i]->type == tyPimage)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
339 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
340 if(gui->skin->widgets[i]->msg == evSetVolume)
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 32537
diff changeset
341 gui->skin->widgets[i]->value = guiInfo.Volume;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
342 else if(gui->skin->widgets[i]->msg == evSetMoviePosition)
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 32537
diff changeset
343 gui->skin->widgets[i]->value = guiInfo.Position;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
344 else if(gui->skin->widgets[i]->msg == evSetBalance)
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 32537
diff changeset
345 gui->skin->widgets[i]->value = guiInfo.Balance;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
346 if(gui->skin->widgets[i]->window == get_windowtype(hwnd))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
347 renderwidget(gui->skin, get_drawground(hwnd), gui->skin->widgets[i],
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
348 gui->skin->widgets[i]->pressed ? 0 : 1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
349 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
350 /* update some buttons */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
351 if(gui->skin->widgets[i]->type == tyButton && gui->skin->widgets[i]->window == get_windowtype(hwnd))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
352 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
353 if(gui->skin->widgets[i]->msg == evPlaySwitchToPause)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
354 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 32537
diff changeset
355 gui->skin->widgets[i]->value = guiInfo.Playing;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
356 renderwidget(gui->skin, get_drawground(hwnd), gui->skin->widgets[i],
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33580
diff changeset
357 guiInfo.Playing == GUI_PLAY ? 0 : 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
358 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
359 if(gui->skin->widgets[i]->msg == evMute)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
360 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 32537
diff changeset
361 gui->skin->widgets[i]->value = guiInfo.Volume;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
362 renderwidget(gui->skin, get_drawground(hwnd), gui->skin->widgets[i],
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 32537
diff changeset
363 guiInfo.Volume == 0.0f ? 0 : 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
364 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
365 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
366 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
367
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
368 /* updating the display once a 100.second is enough imo */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
369 if((time - oldtime) < 100) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
370 oldtime=time;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
371
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
372 for (i=0; i<gui->window_priv_count; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
373 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
374 if(gui->window_priv[i]->hwnd == hwnd)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
375 priv=gui->window_priv[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
376 }// Sherpya
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
377 /* display the status msgs */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
378 renderinfobox(gui->skin, priv);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
379 RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
380 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
381
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
382 static LRESULT CALLBACK VideoProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
383 {
36262
703a51ce08c8 Enable the change of the movie aspect ratio on the fly.
ib
parents: 36053
diff changeset
384 float aspect;
36274
ba5fa3e71247 Keep paused mode when changing the aspect ratio.
ib
parents: 36272
diff changeset
385 char cmd[40];
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
386 gui_t *gui = (gui_t *) GetWindowLongPtr(hWnd, GWLP_USERDATA);
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
387 if (gui && (gui->videowindow != hWnd)) return FALSE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
388
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
389 switch (message)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
390 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
391 case WM_CLOSE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
392 handlemsg(hWnd, evExit);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
393 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
394 case WM_DESTROY:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
395 PostQuitMessage(0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
396 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
397 case WM_KEYDOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
398 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
399 switch(wParam)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
400 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
401 case VK_LEFT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
402 mplayer_put_key(KEY_LEFT);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
403 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
404 case VK_UP:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
405 mplayer_put_key(KEY_UP);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
406 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
407 case VK_RIGHT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
408 mplayer_put_key(KEY_RIGHT);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
409 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
410 case VK_DOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
411 mplayer_put_key(KEY_DOWN);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
412 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
413 case VK_TAB:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
414 mplayer_put_key(KEY_TAB);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
415 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
416 case VK_BACK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
417 mplayer_put_key(KEY_BS);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
418 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
419 case VK_DELETE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
420 mplayer_put_key(KEY_DELETE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
421 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
422 case VK_INSERT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
423 mplayer_put_key(KEY_INSERT);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
424 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
425 case VK_HOME:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
426 mplayer_put_key(KEY_HOME);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
427 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
428 case VK_END:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
429 mplayer_put_key(KEY_END);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
430 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
431 case VK_PRIOR:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
432 mplayer_put_key(KEY_PAGE_UP);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
433 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
434 case VK_NEXT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
435 mplayer_put_key(KEY_PAGE_DOWN);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
436 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
437 case VK_ESCAPE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
438 mplayer_put_key(KEY_ESC);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
439 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
440 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
441 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
442 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
443 case WM_COMMAND:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
444 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
445 switch(LOWORD(wParam))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
446 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
447 case IDEXIT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
448 PostQuitMessage(0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
449 handlemsg(hWnd, evExit);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
450 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
451 case IDFILE_OPEN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
452 handlemsg(hWnd, evLoadPlay);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
453 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
454 case IDURL_OPEN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
455 display_openurlwindow(gui, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
456 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
457 case IDDIR_OPEN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
458 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
459 static char path[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
460 BROWSEINFO bi;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
461 LPITEMIDLIST pidl;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
462 memset(&bi, 0, sizeof(BROWSEINFO));
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
463 bi.lpszTitle = acp(MSGTR_GUI_WIN32_DirectoryList":");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
464 pidl = SHBrowseForFolder(&bi);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
465 if (SHGetPathFromIDList(pidl, path))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
466 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
467 gui->playlist->clear_playlist(gui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
468 adddirtoplaylist(gui->playlist, path, TRUE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
469 gui->startplay(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
470 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
471 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
472 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
473 case ID_PTRACK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
474 handlemsg(hWnd, evPrev);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
475 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
476 case ID_SEEKB:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
477 handlemsg(hWnd, evBackward10sec);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
478 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
479 case ID_PLAY:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
480 handlemsg(hWnd, evPlaySwitchToPause);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
481 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
482 case ID_STOP:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
483 handlemsg(hWnd, evStop);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
484 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
485 case ID_SEEKF:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
486 handlemsg(hWnd, evForward10sec);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
487 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
488 case ID_NTRACK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
489 handlemsg(hWnd, evNext);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
490 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
491 case ID_CHAPTERSEL:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
492 display_chapterselwindow(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
493 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
494 case ID_FULLSCREEN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
495 mp_input_queue_cmd(mp_input_parse_cmd("vo_fullscreen"));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
496 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
497 case ID_MUTE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
498 mp_input_queue_cmd(mp_input_parse_cmd("mute"));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
499 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
500 case ID_ASPECT1:
36262
703a51ce08c8 Enable the change of the movie aspect ratio on the fly.
ib
parents: 36053
diff changeset
501 case ID_ASPECT2:
703a51ce08c8 Enable the change of the movie aspect ratio on the fly.
ib
parents: 36053
diff changeset
502 case ID_ASPECT3:
703a51ce08c8 Enable the change of the movie aspect ratio on the fly.
ib
parents: 36053
diff changeset
503 case ID_ASPECT4:
703a51ce08c8 Enable the change of the movie aspect ratio on the fly.
ib
parents: 36053
diff changeset
504 switch (LOWORD(wParam))
703a51ce08c8 Enable the change of the movie aspect ratio on the fly.
ib
parents: 36053
diff changeset
505 {
36263
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
506 case ID_ASPECT1:
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
507 aspect = 16.0f / 9.0f;
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
508 break;
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
509 case ID_ASPECT2:
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
510 aspect = 4.0f / 3.0f;
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
511 break;
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
512 case ID_ASPECT3:
36276
f7ef757c95c0 Be more pedantic about type of the constant.
ib
parents: 36274
diff changeset
513 aspect = 2.35f;
36263
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
514 break;
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
515 default:
36272
aa0011dfbfdc Use again special value -1 to set original aspect ratio.
ib
parents: 36264
diff changeset
516 aspect = -1;
36263
ea4c4dbae852 Cosmetic: Adjust indent.
ib
parents: 36262
diff changeset
517 break;
36262
703a51ce08c8 Enable the change of the movie aspect ratio on the fly.
ib
parents: 36053
diff changeset
518 }
36274
ba5fa3e71247 Keep paused mode when changing the aspect ratio.
ib
parents: 36272
diff changeset
519 snprintf(cmd, sizeof(cmd), "pausing_keep switch_ratio %f", aspect);
36262
703a51ce08c8 Enable the change of the movie aspect ratio on the fly.
ib
parents: 36053
diff changeset
520 mp_input_queue_cmd(mp_input_parse_cmd(cmd));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
521 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
522 case IDSUB_TOGGLE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
523 mp_input_queue_cmd(mp_input_parse_cmd("sub_visibility"));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
524 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
525 case IDSUB_CYCLE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
526 mp_input_queue_cmd(mp_input_parse_cmd("sub_select"));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
527 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
528 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
529 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
530 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
531 case WM_CHAR:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
532 mplayer_put_key(wParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
533 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
534 case WM_DROPFILES:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
535 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
536 if(!lParam)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
537 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
538 char file[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
539 int filecount = DragQueryFile((HDROP) wParam, -1, file, MAX_PATH);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
540 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
541 for(i=0; i<filecount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
542 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
543 DragQueryFile((HDROP) wParam, i, file, MAX_PATH);
35452
f42cc2361ee4 Cosmetic: Rename uiSetFileName().
ib
parents: 35450
diff changeset
544 uiSetFile(NULL, file, STREAMTYPE_FILE);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
545 if(!parse_filename(file, playtree, mconfig, 1))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
546 gui->playlist->add_track(gui->playlist, file, NULL, NULL, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
547 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
548 DragFinish((HDROP) wParam);
34325
fc74085e2487 Fix bug in Win32 GUI introduced in r34403.
ib
parents: 34321
diff changeset
549 gui->playercontrol(evLoadPlay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
550 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
551 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
552 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
553 gui->playlist->clear_playlist(gui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
554 gui->playlist->add_track(gui->playlist, (const char *) wParam, NULL, NULL, 0);
34325
fc74085e2487 Fix bug in Win32 GUI introduced in r34403.
ib
parents: 34321
diff changeset
555 gui->playercontrol(evLoadPlay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
556 }
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
557 SetForegroundWindow(gui->videowindow);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
558 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
559 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
560 case WM_LBUTTONDOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
561 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
562 if(!vo_nomouse_input)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
563 mplayer_put_key(MOUSE_BTN0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
564 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
565 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
566 case WM_MBUTTONDOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
567 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
568 if(!vo_nomouse_input)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
569 mplayer_put_key(MOUSE_BTN1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
570 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
571 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
572 case WM_RBUTTONDOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
573 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
574 POINT point;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
575 point.x = GET_X_LPARAM(lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
576 point.y = GET_Y_LPARAM(lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
577 ClientToScreen(hWnd, &point);
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 32537
diff changeset
578 if(guiInfo.StreamType == STREAMTYPE_DVD)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
579 EnableMenuItem(gui->dvdmenu, ID_CHAPTERSEL, MF_BYCOMMAND | MF_ENABLED);
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
580 TrackPopupMenu(gui->videomenu, 0, point.x, point.y, 0, hWnd, NULL);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
581 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
582 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
583 case WM_LBUTTONDBLCLK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
584 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
585 if(!vo_nomouse_input)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
586 mplayer_put_key(MOUSE_BTN0_DBL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
587 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
588 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
589 case WM_MBUTTONDBLCLK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
590 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
591 if(!vo_nomouse_input)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
592 mplayer_put_key(MOUSE_BTN1_DBL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
593 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
594 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
595 case WM_RBUTTONDBLCLK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
596 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
597 if(!vo_nomouse_input)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
598 mplayer_put_key(MOUSE_BTN2_DBL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
599 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
600 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
601 case WM_MOUSEWHEEL:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
602 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
603 int x = GET_WHEEL_DELTA_WPARAM(wParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
604 if(vo_nomouse_input)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
605 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
606 if (x > 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
607 mplayer_put_key(MOUSE_BTN3);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
608 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
609 mplayer_put_key(MOUSE_BTN4);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
610 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
611 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
612 case WM_XBUTTONDOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
613 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
614 if(vo_nomouse_input)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
615 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
616 if(HIWORD(wParam) == 1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
617 mplayer_put_key(MOUSE_BTN5);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
618 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
619 mplayer_put_key(MOUSE_BTN6);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
620 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
621 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
622 case WM_XBUTTONDBLCLK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
623 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
624 if(vo_nomouse_input)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
625 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
626 if(HIWORD(wParam) == 1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
627 mplayer_put_key(MOUSE_BTN5_DBL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
628 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
629 mplayer_put_key(MOUSE_BTN6_DBL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
630 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
631 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
632 case WM_TIMER:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
633 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
634 if(fullscreen) while(ShowCursor(FALSE) >= 0){}
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
635 KillTimer(hWnd, ID_TIMER);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
636 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
637 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
638 case WM_MOUSEMOVE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
639 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
640 ShowCursor(TRUE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
641 SetTimer(hWnd, ID_TIMER, 3000, (TIMERPROC) NULL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
642 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
643 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
644 case WM_WINDOWPOSCHANGED:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
645 {
34996
ebcc17a3c165 Fix compiler warnings (comparison between signed and unsigned).
ib
parents: 34995
diff changeset
646 uint32_t tmpheight=0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
647 static uint32_t rect_width;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
648 static uint32_t rect_height;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
649 RECT rd;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
650 POINT pt;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
651 pt.x = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
652 pt.y = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
653 GetClientRect(hWnd, &rd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
654 ClientToScreen(hWnd, &pt);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
655
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
656 rect_width = rd.right - rd.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
657 rect_height = rd.bottom - rd.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
658
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
659 /* maintain our aspect ratio */
36842
d8b2651bfeab Remove unnecessary casts.
ib
parents: 36694
diff changeset
660 tmpheight = rect_width/video_aspect;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
661 tmpheight += tmpheight % 2;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
662 if(tmpheight > rect_height)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
663 {
36842
d8b2651bfeab Remove unnecessary casts.
ib
parents: 36694
diff changeset
664 rect_width = rect_height*video_aspect;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
665 rect_width += rect_width % 2;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
666 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
667 else rect_height = tmpheight;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
668
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
669 rd.right = rd.left + rect_width;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
670 rd.bottom = rd.top + rect_height;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
671
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
672 AdjustWindowRect(&rd, WS_OVERLAPPEDWINDOW | WS_SIZEBOX, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
673 SetWindowPos(hWnd, 0, fullscreen?0:pt.x+rd.left, fullscreen?0:pt.y+rd.top,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
674 fullscreen?vo_screenwidth:rd.right-rd.left, fullscreen?vo_screenheight:rd.bottom-rd.top, SWP_NOOWNERZORDER);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
675 SetForegroundWindow(hWnd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
676 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
677 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
678 case WM_SYSCOMMAND:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
679 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
680 switch(wParam)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
681 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
682 case SC_SCREENSAVE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
683 case SC_MONITORPOWER:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
684 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>killing screensaver\n" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
685 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
686 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
687 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
688 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
689 case WM_PAINT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
690 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
691 PAINTSTRUCT ps;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
692 RECT rect;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
693 HDC hdc = BeginPaint(hWnd, &ps);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
694 HDC hMemDC = CreateCompatibleDC(hdc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
695 HBRUSH blackbrush = (HBRUSH)GetStockObject(BLACK_BRUSH);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
696 int width, height;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
697 GetClientRect(hWnd, &rect);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
698 width = rect.right - rect.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
699 height = rect.bottom - rect.top;
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33580
diff changeset
700 if(guiInfo.Playing == GUI_STOP)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
701 {
34996
ebcc17a3c165 Fix compiler warnings (comparison between signed and unsigned).
ib
parents: 34995
diff changeset
702 unsigned int i;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
703 window *desc = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
704
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
705 for (i=0; i<gui->skin->windowcount; i++)
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
706 if(gui->skin->windows[i]->type == wiVideo)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
707 desc = gui->skin->windows[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
708
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
709 SelectObject(hMemDC, get_bitmap(hWnd));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
710 StretchBlt(hdc, 0, 0, width, height, hMemDC, 0, 0, desc->base->bitmap[0]->width,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
711 desc->base->bitmap[0]->height, SRCCOPY);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
712 } else {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
713 FillRect(GetDC(hWnd), &rect, fullscreen?blackbrush:colorbrush);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
714 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
715 DeleteDC(hMemDC);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
716 EndPaint(hWnd, &ps);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
717 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
718 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
719 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
720 return DefWindowProc(hWnd, message, wParam, lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
721 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
722
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
723 /* Window Proc for the gui Window */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
724 static LRESULT CALLBACK EventProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
725 {
37053
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
726 static double prev_point;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
727 static int endstop;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
728 gui_t *gui = (gui_t *) GetWindowLongPtr(hWnd, GWLP_USERDATA);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
729
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
730 /* Avoid processing when then window doesn't match gui mainwindow */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
731 if (gui && (gui->mainwindow != hWnd)) return FALSE;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
732
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
733 switch (message)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
734 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
735 case WM_CLOSE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
736 handlemsg(hWnd, evExit);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
737 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
738 case WM_DESTROY:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
739 PostQuitMessage(0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
740 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
741 case WM_SYSTRAY:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
742 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
743 switch(lParam)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
744 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
745 POINT cursor;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
746 case WM_RBUTTONDOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
747 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
748 GetCursorPos(&cursor);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
749 SetForegroundWindow(hWnd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
750 TrackPopupMenu(gui->traymenu, 0, cursor.x, cursor.y, 0, hWnd, NULL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
751 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
752 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
753 case WM_MBUTTONDBLCLK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
754 case WM_LBUTTONDBLCLK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
755 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
756 if(IsWindowVisible(hWnd)) ShowWindow(hWnd, SW_HIDE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
757 else { ShowWindow(hWnd, SW_SHOW); SetForegroundWindow(hWnd); }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
758 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
759 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
760 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
761 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
762 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
763 case WM_KEYDOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
764 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
765 switch(wParam)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
766 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
767 case VK_LEFT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
768 mplayer_put_key(KEY_LEFT);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
769 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
770 case VK_UP:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
771 mplayer_put_key(KEY_UP);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
772 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
773 case VK_RIGHT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
774 mplayer_put_key(KEY_RIGHT);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
775 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
776 case VK_DOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
777 mplayer_put_key(KEY_DOWN);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
778 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
779 case VK_TAB:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
780 mplayer_put_key(KEY_TAB);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
781 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
782 case VK_BACK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
783 mplayer_put_key(KEY_BS);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
784 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
785 case VK_DELETE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
786 mplayer_put_key(KEY_DELETE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
787 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
788 case VK_INSERT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
789 mplayer_put_key(KEY_INSERT);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
790 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
791 case VK_HOME:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
792 mplayer_put_key(KEY_HOME);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
793 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
794 case VK_END:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
795 mplayer_put_key(KEY_END);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
796 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
797 case VK_PRIOR:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
798 mplayer_put_key(KEY_PAGE_UP);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
799 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
800 case VK_NEXT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
801 mplayer_put_key(KEY_PAGE_DOWN);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
802 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
803 case VK_ESCAPE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
804 mplayer_put_key(KEY_ESC);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
805 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
806 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
807 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
808 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
809 case WM_CHAR:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
810 mplayer_put_key(wParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
811 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
812 case WM_COPYDATA:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
813 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
814 if(lParam)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
815 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
816 PCOPYDATASTRUCT cdData;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
817 cdData = (PCOPYDATASTRUCT) lParam;
35452
f42cc2361ee4 Cosmetic: Rename uiSetFileName().
ib
parents: 35450
diff changeset
818 uiSetFile(NULL, cdData->lpData, STREAMTYPE_FILE);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
819 if(!parse_filename(cdData->lpData, playtree, mconfig, 1))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
820 gui->playlist->add_track(gui->playlist, cdData->lpData, NULL, NULL, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
821 gui->startplay(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
822 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
823 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
824 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
825 case WM_DROPFILES:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
826 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
827 if(!lParam)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
828 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
829 char file[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
830 int filecount = DragQueryFile((HDROP) wParam, -1, file, MAX_PATH);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
831 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
832 for(i=0; i<filecount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
833 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
834 DragQueryFile((HDROP) wParam, i, file, MAX_PATH);
35452
f42cc2361ee4 Cosmetic: Rename uiSetFileName().
ib
parents: 35450
diff changeset
835 uiSetFile(NULL, file, STREAMTYPE_FILE);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
836 if(!parse_filename(file, playtree, mconfig, 1))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
837 gui->playlist->add_track(gui->playlist, file, NULL, NULL, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
838 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
839 DragFinish((HDROP) wParam);
34325
fc74085e2487 Fix bug in Win32 GUI introduced in r34403.
ib
parents: 34321
diff changeset
840 gui->playercontrol(evLoadPlay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
841 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
842 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
843 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
844 gui->playlist->clear_playlist(gui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
845 gui->playlist->add_track(gui->playlist, (const char *) wParam, NULL, NULL, 0);
34325
fc74085e2487 Fix bug in Win32 GUI introduced in r34403.
ib
parents: 34321
diff changeset
846 gui->playercontrol(evLoadPlay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
847 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
848 SetForegroundWindow(gui->mainwindow);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
849 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
850 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
851 case WM_LBUTTONDOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
852 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
853 SetCapture(hWnd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
854 gui->mousex = GET_X_LPARAM(lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
855 gui->mousey = GET_Y_LPARAM(lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
856 /* inside a widget */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
857 gui->activewidget = clickedinsidewidget(gui, get_windowtype(hWnd), gui->mousex, gui->mousey);
36920
40ad45360c8a Replace old item 'potmeter' by new item 'pimage'.
ib
parents: 36900
diff changeset
858 if(gui->activewidget && gui->activewidget->type != tyPimage)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
859 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
860 gui->activewidget->pressed = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
861 gui->mousewx = gui->mousex - gui->activewidget->x;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
862 gui->mousewy = gui->mousey - gui->activewidget->y;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
863 renderwidget(gui->skin, get_drawground(hWnd), gui->activewidget, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
864 RedrawWindow(hWnd, NULL, NULL, RDW_INVALIDATE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
865 handlemsg(hWnd, gui->activewidget->msg);
37053
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
866
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
867 if(gui->activewidget->type == tyRpotmeter)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
868 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
869 prev_point = appRadian(gui->activewidget, gui->mousewx, gui->mousewy) - gui->activewidget->zeropoint;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
870 if(prev_point < 0.0) prev_point += 2 * M_PI;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
871 if(prev_point <= gui->activewidget->arclength) endstop=FALSE;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
872 else endstop=STOPPED_AT_0 + STOPPED_AT_100; // block movement
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
873 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
874 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
875 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
876 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
877 case WM_CAPTURECHANGED:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
878 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
879 if(gui->activewidget)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
880 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
881 gui->activewidget->pressed = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
882 renderwidget(gui->skin, get_drawground(hWnd), gui->activewidget, 1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
883 RedrawWindow(hWnd, NULL, NULL, RDW_INVALIDATE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
884 gui->activewidget = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
885 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
886 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
887 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
888 case WM_LBUTTONUP:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
889 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
890 ReleaseCapture();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
891 if(gui->activewidget)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
892 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
893 gui->activewidget->pressed = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
894 renderwidget(gui->skin, get_drawground(hWnd), gui->activewidget, 1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
895 RedrawWindow(hWnd, NULL, NULL, RDW_INVALIDATE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
896 gui->activewidget = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
897 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
898 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
899 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
900 case WM_RBUTTONDOWN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
901 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
902 POINT point;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
903 char device[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
904 char searchpath[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
905 int len, pos = 0, cdromdrive = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
906 UINT errmode;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
907 point.x = GET_X_LPARAM(lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
908 point.y = GET_Y_LPARAM(lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
909 ClientToScreen(hWnd, &point);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
910 errmode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
911 while (GetMenuItemCount(gui->diskmenu) > 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
912 DeleteMenu(gui->diskmenu, 0, MF_BYPOSITION);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
913 len = GetLogicalDriveStrings(MAX_PATH, device);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
914 while(pos < len)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
915 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
916 if(GetDriveType(device + pos) == DRIVE_CDROM)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
917 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
918 char volname[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
919 char menuitem[MAX_PATH];
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 35452
diff changeset
920 int flags = MF_STRING, enable = FALSE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
921 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] checking %s for CD/VCD/SVCD/DVDs\n", device + pos);
34454
5a45efc630b8 Remove all unnecessary #ifdefs from GUI code.
ib
parents: 34452
diff changeset
922 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
923 sprintf(searchpath, "%sVIDEO_TS", device + pos);
34452
c3e63d8b6cf3 Reduce number and avoid conditional definition of searchpath variables.
ib
parents: 34405
diff changeset
924 if(GetFileAttributes(searchpath) != INVALID_FILE_ATTRIBUTES)
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 35452
diff changeset
925 enable = TRUE;
34454
5a45efc630b8 Remove all unnecessary #ifdefs from GUI code.
ib
parents: 34452
diff changeset
926 #endif
34452
c3e63d8b6cf3 Reduce number and avoid conditional definition of searchpath variables.
ib
parents: 34405
diff changeset
927 sprintf(searchpath, "%sMpegav", device + pos);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
928 if(GetFileAttributes(searchpath) != INVALID_FILE_ATTRIBUTES)
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 35452
diff changeset
929 enable = TRUE;
34405
35fd66684548 Use cdparanoia compatibility names for CD function calls.
ib
parents: 34391
diff changeset
930 #ifdef CONFIG_CDDA
34452
c3e63d8b6cf3 Reduce number and avoid conditional definition of searchpath variables.
ib
parents: 34405
diff changeset
931 sprintf(searchpath, "%sTrack01.cda", device + pos);
c3e63d8b6cf3 Reduce number and avoid conditional definition of searchpath variables.
ib
parents: 34405
diff changeset
932 if(GetFileAttributes(searchpath) != INVALID_FILE_ATTRIBUTES)
35501
7bb176fac55c Use boolean symbolic constants in Win32 GUI.
ib
parents: 35452
diff changeset
933 enable = TRUE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
934 #endif
34452
c3e63d8b6cf3 Reduce number and avoid conditional definition of searchpath variables.
ib
parents: 34405
diff changeset
935 flags |= (enable ? MF_ENABLED : MF_GRAYED);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
936 volname[0] = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
937 strcpy(menuitem, device + pos);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
938 menuitem[strlen(menuitem) - 1]=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
939 GetVolumeInformation(device + pos, volname, MAX_PATH, NULL, NULL, NULL, NULL, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
940 if (strlen(volname))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
941 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
942 capitalize(volname);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
943 strcat(menuitem, " - ");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
944 strcat(menuitem, volname);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
945 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
946 AppendMenu(gui->diskmenu, flags, IDPLAYDISK + cdromdrive, menuitem);
34979
93a763f04563 Fix bug with definition of IDPLAYDISK in Win32 GUI.
ib
parents: 34697
diff changeset
947 if (++cdromdrive == IDPLAYDISK_LIMIT - IDPLAYDISK) break;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
948 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
949 pos += strlen(device + pos) + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
950 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
951 SetErrorMode(errmode);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
952 TrackPopupMenu(gui->menu, 0, point.x, point.y, 0, hWnd, NULL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
953 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
954 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
955 case WM_MOUSEMOVE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
956 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
957 if(wParam & MK_LBUTTON)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
958 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
959 POINT point;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
960 RECT rect;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
961 if(gui->activewidget)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
962 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
963 widget *item = gui->activewidget;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
964
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
965 if(item->type == tyHpotmeter)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
966 {
36892
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36843
diff changeset
967 int wd = item->wwidth - item->width;
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36843
diff changeset
968
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36843
diff changeset
969 if (wd == 0) // legacy (potmeter)
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36843
diff changeset
970 {
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36843
diff changeset
971 item->x = GET_X_LPARAM(lParam);
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36843
diff changeset
972 wd = item->wwidth;
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36843
diff changeset
973 }
36893
87e6a09a07a7 Cosmetic: Adjust indent.
ib
parents: 36892
diff changeset
974 else item->x = GET_X_LPARAM(lParam) - gui->mousewx;
36892
f50427ad9ff6 Internally map item 'potmeter' onto 'hpotmeter'.
ib
parents: 36843
diff changeset
975
36900
ecf965eee74d Remove casts.
ib
parents: 36898
diff changeset
976 item->value = 100.0 * (item->x - item->wx) / wd;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
977 }
36898
049db0aeea85 Implement missing vpotmeter for the Win32 GUI.
ib
parents: 36893
diff changeset
978 if(item->type == tyVpotmeter)
049db0aeea85 Implement missing vpotmeter for the Win32 GUI.
ib
parents: 36893
diff changeset
979 {
049db0aeea85 Implement missing vpotmeter for the Win32 GUI.
ib
parents: 36893
diff changeset
980 item->y = GET_Y_LPARAM(lParam) - gui->mousewy;
36900
ecf965eee74d Remove casts.
ib
parents: 36898
diff changeset
981 item->value = 100.0 - 100.0 * (item->y - item->wy) / (item->wheight - item->height);
36898
049db0aeea85 Implement missing vpotmeter for the Win32 GUI.
ib
parents: 36893
diff changeset
982 }
37053
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
983 if(item->type == tyRpotmeter)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
984 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
985 double point;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
986
37053
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
987 point = appRadian(item, GET_X_LPARAM(lParam) - gui->activewidget->x, GET_Y_LPARAM(lParam) - gui->activewidget->y) - item->zeropoint;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
988 if(point < 0.0) point += 2 * M_PI;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
989 if(item->arclength < 2 * M_PI)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
990 /* a potmeter with separated 0% and 100% positions */
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
991 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
992 if(point - prev_point > M_PI)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
993 /* turned beyond the 0% position */
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
994 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
995 if(!endstop)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
996 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
997 endstop = STOPPED_AT_0;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
998 item->value = 0.0f;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
999 }
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1000 }
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1001 else if(prev_point - point > M_PI)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1002 /* turned back from beyond the 0% position */
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1003 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1004 if(endstop == STOPPED_AT_0) endstop = FALSE;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1005 }
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1006 else if(prev_point <= item->arclength && point > item->arclength)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1007 /* turned beyond the 100% position */
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1008 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1009 if (!endstop)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1010 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1011 endstop = STOPPED_AT_100;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1012 item->value = 100.0f;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1013 }
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1014 }
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1015 else if(prev_point > item->arclength && point <= item->arclength)
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1016 /* turned back from beyond the 100% position */
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1017 {
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1018 if(endstop == STOPPED_AT_100) endstop = FALSE;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1019 }
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1020 }
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1021 if(!endstop) item->value = 100.0 * point / item->arclength;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1022 prev_point = point;
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1023 }
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1024
84c93a60ead3 Add new item 'rpotmeter'.
ib
parents: 36920
diff changeset
1025 if((item->type == tyHpotmeter) || (item->type == tyVpotmeter) || (item->type == tyRpotmeter))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1026 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1027 /* Bound checks */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1028 if(item->value > 100.0f)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1029 item->value = 100.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1030 else if(item->value < 0.0f)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1031 item->value = 0.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1032
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1033 if(item->msg == evSetVolume)
36842
d8b2651bfeab Remove unnecessary casts.
ib
parents: 36694
diff changeset
1034 guiInfo.Volume = item->value;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1035 else if(item->msg == evSetMoviePosition)
36842
d8b2651bfeab Remove unnecessary casts.
ib
parents: 36694
diff changeset
1036 guiInfo.Position = item->value;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1037 else if(item->msg == evSetBalance)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1038 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1039 /* make the range for 50% a bit bigger, because the sliders for balance usually suck */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1040 if((item->value - 50.0f < 1.5f) && (item->value - 50.0f > -1.5f))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1041 item->value = 50.0f;
36842
d8b2651bfeab Remove unnecessary casts.
ib
parents: 36694
diff changeset
1042 guiInfo.Balance = item->value;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1043 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1044 updatedisplay(gui, hWnd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1045 handlemsg(hWnd, item->msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1046 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1047 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1048 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1049 point.x = GET_X_LPARAM(lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1050 point.y = GET_Y_LPARAM(lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1051 ClientToScreen(hWnd, &point);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1052 GetWindowRect(hWnd, &rect);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1053 MoveWindow(hWnd, point.x - gui->mousex, point.y - gui->mousey,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1054 rect.right-rect.left,rect.bottom-rect.top,TRUE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1055 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1056 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1057 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1058 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1059 case WM_COMMAND:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1060 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1061 switch(LOWORD(wParam))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1062 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1063 case IDEXIT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1064 PostQuitMessage(0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1065 handlemsg(hWnd, evExit);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1066 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1067 case IDFILE_OPEN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1068 handlemsg(hWnd, evLoadPlay);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1069 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1070 case IDDIR_OPEN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1071 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1072 static char path[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1073 BROWSEINFO bi;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1074 LPITEMIDLIST pidl;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1075 memset(&bi, 0, sizeof(BROWSEINFO));
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1076 bi.lpszTitle = acp(MSGTR_GUI_WIN32_DirectoryList":");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1077 pidl = SHBrowseForFolder(&bi);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1078 if (SHGetPathFromIDList(pidl, path))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1079 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1080 gui->playlist->clear_playlist(gui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1081 adddirtoplaylist(gui->playlist, path, TRUE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1082 gui->startplay(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1083 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1084 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1085 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1086 case ID_SKINBROWSER:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1087 handlemsg(hWnd, evSkinBrowser);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1088 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1089 case IDURL_OPEN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1090 display_openurlwindow(gui, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1091 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1092 case ID_MUTE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1093 mp_input_queue_cmd(mp_input_parse_cmd("mute"));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1094 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1095 case IDSUBTITLE_OPEN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1096 display_opensubtitlewindow(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1097 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1098 case ID_PTRACK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1099 handlemsg(hWnd, evPrev);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1100 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1101 case ID_SEEKB:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1102 handlemsg(hWnd, evBackward10sec);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1103 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1104 case ID_PLAY:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1105 handlemsg(hWnd, evPlaySwitchToPause);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1106 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1107 case ID_STOP:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1108 handlemsg(hWnd, evStop);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1109 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1110 case ID_SEEKF:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1111 handlemsg(hWnd, evForward10sec);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1112 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1113 case ID_NTRACK:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1114 handlemsg(hWnd, evNext);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1115 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1116 case ID_SHOWHIDE:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1117 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1118 if(IsWindowVisible(hWnd)) ShowWindow(hWnd, SW_HIDE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1119 else ShowWindow(hWnd, SW_SHOW);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1120 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1121 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1122 case ID_PLAYLIST:
34321
daebf766dea6 Cosmetic: Synchronize evPlaylist event and message names.
ib
parents: 34315
diff changeset
1123 handlemsg(hWnd, evPlaylist);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1124 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1125 case ID_PREFS:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1126 handlemsg(hWnd, evPreferences);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1127 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1128 case ID_CONSOLE:
35001
05d54ab2ba5c Add check-mark for menu item "Debug Console".
ib
parents: 34996
diff changeset
1129 console_toggle(gui);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1130 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1131 case ID_ONLINEHELP:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1132 ShellExecute(NULL, "open", ONLINE_HELP_URL, NULL, NULL, SW_SHOWNORMAL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1133 break;
33965
8a480da297e5 Add an about box to the Win32 GUI.
ib
parents: 33782
diff changeset
1134 case IDHELP_ABOUT:
8a480da297e5 Add an about box to the Win32 GUI.
ib
parents: 33782
diff changeset
1135 handlemsg(hWnd, evAbout);
8a480da297e5 Add an about box to the Win32 GUI.
ib
parents: 33782
diff changeset
1136 break;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1137 }
34979
93a763f04563 Fix bug with definition of IDPLAYDISK in Win32 GUI.
ib
parents: 34697
diff changeset
1138 if(LOWORD(wParam) >= IDPLAYDISK && LOWORD(wParam) < IDPLAYDISK_LIMIT)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1139 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1140 char device[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1141 char searchpath[MAX_PATH];
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35501
diff changeset
1142 char file[MAX_PATH];
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1143 int len, pos = 0, cdromdrive = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1144 len = GetLogicalDriveStrings(MAX_PATH, device);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1145 while(pos < len)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1146 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1147 if(GetDriveType(device + pos)==DRIVE_CDROM)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1148 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1149 if(LOWORD(wParam) - IDPLAYDISK == cdromdrive)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1150 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1151 sprintf(searchpath, "%sVIDEO_TS", device + pos);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1152 if(GetFileAttributes(searchpath) != INVALID_FILE_ATTRIBUTES)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1153 {
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 31532
diff changeset
1154 free(dvd_device);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1155 dvd_device = strdup(device + pos);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1156 handlemsg(hWnd, evPlayDVD);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1157 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1158 sprintf(searchpath, "%sTrack01.cda", device + pos);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1159 if(GetFileAttributes(searchpath) != INVALID_FILE_ATTRIBUTES)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1160 {
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 31532
diff changeset
1161 free(cdrom_device);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1162 cdrom_device = strdup(device + pos);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1163 /* mplayer doesn't seem to like the trailing \ after the device name */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1164 cdrom_device[2]=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1165 handlemsg(hWnd, evPlayCD);
23147
21c35763b178 compilation fix for disabling dvd functionality, patch by <bangbangbear at gmail dot com>, slightly modified by me.
vayne
parents: 23091
diff changeset
1166 } else {
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1167 HANDLE searchhndl;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1168 WIN32_FIND_DATA finddata;
34092
dbf5042ab255 Don't use the Windows style path separator character in Win32 GUI.
ib
parents: 33965
diff changeset
1169 sprintf(searchpath, "%smpegav/*.dat", device + pos);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1170 if((searchhndl=FindFirstFile(searchpath, &finddata)) != INVALID_HANDLE_VALUE)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1171 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1172 mp_msg(MSGT_GPLAYER,MSGL_V, "Opening VCD/SVCD\n");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1173 gui->playlist->clear_playlist(gui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1174 do
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1175 {
35521
baf53d200292 Avoid using local variables named filename.
ib
parents: 35501
diff changeset
1176 sprintf(file, "%smpegav/%s", device + pos, finddata.cFileName);
baf53d200292 Avoid using local variables named filename.
ib
parents: 35501
diff changeset
1177 gui->playlist->add_track(gui->playlist, file, NULL, NULL, 0);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1178 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1179 while(FindNextFile(searchhndl, &finddata));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1180 FindClose(searchhndl);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1181 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1182 gui->startplay(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1183 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1184 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1185 cdromdrive++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1186 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1187 pos += strlen(device + pos) + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1188 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1189 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1190 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1191 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1192 case WM_PAINT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1193 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1194 PAINTSTRUCT ps;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1195 RECT rd;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1196 HDC hdc = BeginPaint(hWnd, &ps);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1197 HDC hMemDC = CreateCompatibleDC(hdc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1198 int width, height;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1199 GetClientRect(hWnd, &rd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1200 width = rd.right - rd.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1201 height = rd.bottom - rd.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1202 SelectObject(hMemDC, get_bitmap(hWnd));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1203 BitBlt(hdc, 0, 0, width, height, hMemDC, 0, 0, SRCCOPY);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1204 DeleteDC(hMemDC);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1205 EndPaint(hWnd, &ps);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1206 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1207 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1208 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1209 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1210 return DefWindowProc(hWnd, message, wParam, lParam);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1211 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1212
27292
80ee781f6528 Remove unnecessary and troublesome inline
zuxy
parents: 27274
diff changeset
1213 static void startplay(gui_t *gui)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1214 {
34325
fc74085e2487 Fix bug in Win32 GUI introduced in r34403.
ib
parents: 34321
diff changeset
1215 gui->playercontrol(evLoadPlay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1216 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1217
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1218 /* returns the bits per pixel of the desktop */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1219 /* the format is always in BGR byte order */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1220 static int GetDesktopBitsPerPixel(void)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1221 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1222 HWND desktop=GetDesktopWindow();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1223 HDC dc=GetDC(desktop);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1224 int bpp=GetDeviceCaps(dc, BITSPIXEL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1225 ReleaseDC(desktop, dc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1226 return bpp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1227 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1228
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1229 /* unloads a skin and destroys its windows */
28051
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27391
diff changeset
1230 int destroy_window(gui_t *gui)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1231 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1232 RECT rd;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1233 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1234
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1235 /* Save position: MSDN says don't pass workspace coordinates
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1236 * to CreateWindow() or SetWindowPos(), as both of which expect
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1237 * screen coordinates; resulting in the window appearing in the
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1238 * wrong location.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1239 * -Erik
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1240 */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1241
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1242 /* main window position */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1243 if(IsIconic(gui->mainwindow))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1244 ShowWindow(gui->mainwindow, SW_SHOWNORMAL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1245 GetWindowRect(gui->mainwindow, &rd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1246 gui_main_pos_x = rd.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1247 gui_main_pos_y = rd.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1248
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1249 /* video window position */
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1250 if(IsIconic(gui->videowindow))
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1251 ShowWindow(gui->videowindow, SW_SHOWNORMAL);
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1252 GetWindowRect(gui->videowindow, &rd);
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1253 gui_video_pos_x = rd.left;
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1254 gui_video_pos_y = rd.top;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1255
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1256 for(i=0; i<gui->window_priv_count; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1257 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1258 if(gui->window_priv[i]->bitmap)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1259 DeleteObject(gui->window_priv[i]->bitmap);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1260 free(gui->window_priv[i]);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1261 }
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
1262 nfree(gui->window_priv);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1263 gui->window_priv_count = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1264
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1265 /* destroy the main window */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1266 if(gui->mainwindow)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1267 DestroyWindow(gui->mainwindow);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1268 gui->mainwindow = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1269
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1270 /* destroy the video window */
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1271 if(gui->videowindow)
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1272 DestroyWindow(gui->videowindow);
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1273 gui->videowindow = NULL;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1274
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1275 UnregisterClass(gui->classname, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1276 DestroyIcon(gui->icon);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1277
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1278 gui->skin->freeskin(gui->skin);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1279 gui->skin = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1280 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1281 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1282
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1283 static void create_menu(gui_t *gui)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1284 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1285 gui->diskmenu = CreatePopupMenu();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1286 gui->menu=CreatePopupMenu();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1287 gui->trayplaymenu = CreatePopupMenu();
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1288 AppendMenu(gui->menu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaymenu, acp(MSGTR_GUI_Open));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1289 AppendMenu(gui->trayplaymenu, MF_STRING, IDFILE_OPEN, acp(MSGTR_GUI_File"..."));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1290 AppendMenu(gui->trayplaymenu, MF_STRING, IDURL_OPEN, acp(MSGTR_GUI_URL"..."));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1291 AppendMenu(gui->trayplaymenu, MF_STRING, IDDIR_OPEN, acp(MSGTR_GUI_Directory"..."));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1292 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1293 AppendMenu(gui->menu, MF_STRING | MF_POPUP, (UINT_PTR) gui->diskmenu, acp(MSGTR_GUI_Play));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1294 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1295 AppendMenu(gui->menu, MF_STRING, IDSUBTITLE_OPEN, acp(MSGTR_GUI_Subtitle"..."));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1296 AppendMenu(gui->menu, MF_STRING, ID_SKINBROWSER, acp(MSGTR_GUI_SkinBrowser));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1297 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1298 AppendMenu(gui->menu, MF_STRING, ID_PREFS, acp(MSGTR_GUI_Preferences));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1299 AppendMenu(gui->menu, MF_STRING, ID_CONSOLE, acp(MSGTR_GUI_WIN32_DebugConsole));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1300 AppendMenu(gui->menu, MF_STRING, ID_ONLINEHELP, acp(MSGTR_GUI_WIN32_OnlineHelp));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1301 AppendMenu(gui->menu, MF_STRING, IDHELP_ABOUT, acp(MSGTR_GUI_AboutMPlayer));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1302 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1303 AppendMenu(gui->menu, MF_STRING, IDEXIT, acp(MSGTR_GUI_Quit));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1304 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1305
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1306 static void create_traymenu(gui_t *gui)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1307 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1308 gui->traymenu = CreatePopupMenu();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1309 gui->trayplaybackmenu = CreatePopupMenu();
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1310 AppendMenu(gui->traymenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaymenu, acp(MSGTR_GUI_Open));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1311 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1312 AppendMenu(gui->traymenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaybackmenu, acp(MSGTR_GUI_Playback));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1313 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_SEEKB, acp(MSGTR_GUI_WIN32_SeekBackwards));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1314 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_PTRACK, acp(MSGTR_GUI_Previous));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1315 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_PLAY, acp(MSGTR_GUI_Play "/" MSGTR_GUI_Pause));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1316 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_STOP, acp(MSGTR_GUI_Stop));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1317 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_NTRACK, acp(MSGTR_GUI_Next));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1318 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_SEEKF, acp(MSGTR_GUI_WIN32_SeekForwards));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1319 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1320 AppendMenu(gui->traymenu, MF_STRING, ID_MUTE, acp(MSGTR_GUI_Mute));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1321 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1322 AppendMenu(gui->traymenu, MF_STRING, IDSUBTITLE_OPEN, acp(MSGTR_GUI_Subtitle));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1323 AppendMenu(gui->traymenu, MF_STRING, ID_PLAYLIST, acp(MSGTR_GUI_Playlist));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1324 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1325 AppendMenu(gui->traymenu, MF_STRING, ID_SHOWHIDE, acp(MSGTR_GUI_WIN32_ShowHide));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1326 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1327 AppendMenu(gui->traymenu, MF_STRING, ID_PREFS, acp(MSGTR_GUI_Preferences));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1328 AppendMenu(gui->traymenu, MF_STRING, ID_CONSOLE, acp(MSGTR_GUI_WIN32_DebugConsole));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1329 AppendMenu(gui->traymenu, MF_STRING, ID_ONLINEHELP, acp(MSGTR_GUI_WIN32_OnlineHelp));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1330 AppendMenu(gui->traymenu, MF_STRING, IDHELP_ABOUT, acp(MSGTR_GUI_AboutMPlayer));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1331 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1332 AppendMenu(gui->traymenu, MF_STRING, IDEXIT, acp(MSGTR_GUI_Quit));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1333 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1334
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1335 static void create_videomenu(gui_t *gui)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1336 {
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1337 gui->videomenu = CreatePopupMenu();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1338 gui->dvdmenu = CreatePopupMenu();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1339 gui->aspectmenu = CreatePopupMenu();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1340 gui->subtitlemenu = CreatePopupMenu();
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1341 AppendMenu(gui->videomenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaymenu, acp(MSGTR_GUI_Open));
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1342 AppendMenu(gui->videomenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1343 AppendMenu(gui->videomenu, MF_STRING, ID_SEEKB, acp(MSGTR_GUI_WIN32_SeekBackwards));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1344 AppendMenu(gui->videomenu, MF_STRING, ID_PTRACK, acp(MSGTR_GUI_Previous));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1345 AppendMenu(gui->videomenu, MF_STRING, ID_PLAY, acp(MSGTR_GUI_Play "/" MSGTR_GUI_Pause));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1346 AppendMenu(gui->videomenu, MF_STRING, ID_STOP, acp(MSGTR_GUI_Stop));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1347 AppendMenu(gui->videomenu, MF_STRING, ID_NTRACK, acp(MSGTR_GUI_Next));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1348 AppendMenu(gui->videomenu, MF_STRING, ID_SEEKF, acp(MSGTR_GUI_WIN32_SeekForwards));
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1349 AppendMenu(gui->videomenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1350 AppendMenu(gui->videomenu, MF_STRING, ID_FULLSCREEN, acp(MSGTR_GUI_SizeFullscreen));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1351 AppendMenu(gui->videomenu, MF_STRING, ID_MUTE, acp(MSGTR_GUI_Mute));
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1352 AppendMenu(gui->videomenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1353 AppendMenu(gui->videomenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->aspectmenu, acp(MSGTR_GUI_AspectRatio));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1354 AppendMenu(gui->videomenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->subtitlemenu, acp(MSGTR_GUI_Subtitles));
34454
5a45efc630b8 Remove all unnecessary #ifdefs from GUI code.
ib
parents: 34452
diff changeset
1355 #ifdef CONFIG_DVDREAD
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1356 AppendMenu(gui->videomenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->dvdmenu, acp(MSGTR_GUI_DVD));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1357 AppendMenu(gui->dvdmenu, MF_STRING | MF_GRAYED, ID_CHAPTERSEL, acp(MSGTR_GUI_WIN32_SelectTitleChapter"..."));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1358 #endif
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1359 AppendMenu(gui->subtitlemenu, MF_STRING, IDSUB_TOGGLE, acp(MSGTR_GUI_WIN32_SubtitleOnOff));
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1360 AppendMenu(gui->subtitlemenu, MF_STRING, IDSUB_CYCLE, acp(MSGTR_GUI_Subtitles));
34163
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
1361 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT1, "16:9");
95c396eb89ab Internationalize and localize the Win32 GUI.
ib
parents: 34162
diff changeset
1362 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT2, "4:3");
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1363 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT3, acp(MSGTR_GUI_235To1));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1364 AppendMenu(gui->aspectmenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1365 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT4, acp(MSGTR_GUI_Original));
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1366 AppendMenu(gui->videomenu, MF_SEPARATOR, 0, 0);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36672
diff changeset
1367 AppendMenu(gui->videomenu, MF_STRING, IDEXIT, acp(MSGTR_GUI_Quit));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1368 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1369
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1370 static void maketransparent(HWND hwnd, COLORREF crTransparent)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1371 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1372 HDC mdc = GetDC(hwnd);
34133
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1373 RECT wrd, crd;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1374 HRGN crRgnres, crRgn, crRgnTmp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1375 int iX = 0, iY = 0, iLeftX = 0;
34133
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1376 int border, title;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1377 int width, height;
34133
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1378
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1379 GetWindowRect(hwnd, &wrd);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1380 GetClientRect(hwnd, &crd);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1381
34133
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1382 border = (wrd.right - wrd.left - crd.right) / 2;
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1383 title = (wrd.bottom - wrd.top - crd.bottom) - border;
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1384
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1385 width = crd.right - crd.left;
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1386 height = crd.bottom - crd.top;
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1387
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1388 /* create the title bar region */
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1389 crRgn = CreateRectRgn(0, 0, width + border + border, title);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1390
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1391 /* Create a region from a bitmap with transparency colour of Purple */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1392 for (iY = -1; iY < height; iY++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1393 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1394 do
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1395 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1396 /* skip over transparent pixels at start of lines */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1397 while (iX <= width && GetPixel(mdc,iX, iY) == crTransparent) iX++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1398
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1399 /* remember this pixel */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1400 iLeftX = iX;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1401
34133
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1402 /* now find last non transparent pixel */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1403 while (iX <= width && GetPixel(mdc,iX, iY) != crTransparent) ++iX;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1404
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1405 /* create a temp region on this info */
34133
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1406 crRgnTmp = CreateRectRgn(iLeftX + border, iY + title, iX + border, iY + title + 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1407
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1408 /* combine into main region */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1409 crRgnres = crRgn;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1410 CombineRgn(crRgnres, crRgn, crRgnTmp, RGN_OR);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1411 crRgn = crRgnres;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1412
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1413 /* delete the temp region for next pass (otherwise you'll get an ASSERT) */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1414 DeleteObject(crRgnTmp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1415 } while (iX < width);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1416 iX = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1417 }
34133
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1418
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1419 /* left border region */
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1420 crRgnTmp = CreateRectRgn(0, title, border, title + height);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1421 CombineRgn(crRgn, crRgn, crRgnTmp, RGN_OR);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1422 DeleteObject(crRgnTmp);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1423
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1424 /* right border region */
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1425 crRgnTmp = CreateRectRgn(width + border, title, width + border + border, title + height);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1426 CombineRgn(crRgn, crRgn, crRgnTmp, RGN_OR);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1427 DeleteObject(crRgnTmp);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1428
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1429 /* bottom region */
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1430 crRgnTmp = CreateRectRgn(0, title + height, width + border + border, title + height + border);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1431 CombineRgn(crRgn, crRgn, crRgnTmp, RGN_OR);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1432 DeleteObject(crRgnTmp);
568f3a8e1b89 Support transparency in decorated windows in the Win32 GUI.
ib
parents: 34092
diff changeset
1433
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1434 SetWindowRgn(hwnd, crRgn, TRUE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1435 DeleteObject(crRgn);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1436 ReleaseDC(hwnd,mdc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1437 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1438
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1439 static int window_render(gui_t *gui, HWND hWnd, HDC hdc, window_priv_t *priv, window *desc, BITMAPINFO binfo)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1440 {
34996
ebcc17a3c165 Fix compiler warnings (comparison between signed and unsigned).
ib
parents: 34995
diff changeset
1441 unsigned int i;
33638
dbca6aa18b50 Cast new user data value in SetWindowLongPtr() to LONG_PTR.
ib
parents: 33615
diff changeset
1442 SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR) gui);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1443 (gui->window_priv_count)++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1444 gui->window_priv = realloc(gui->window_priv, sizeof(window_priv_t *) * gui->window_priv_count);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1445 priv = gui->window_priv[gui->window_priv_count - 1] = calloc(1, sizeof(window_priv_t));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1446 priv->hwnd = hWnd;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1447 priv->type = desc->type;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1448 priv->background = desc->base->bitmap[0];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1449 memcpy(&priv->img, desc->base->bitmap[0], sizeof(image));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1450 hdc = GetDC(hWnd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1451 binfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1452 binfo.bmiHeader.biWidth = priv->img.width;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1453 binfo.bmiHeader.biHeight = -priv->img.height;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1454 binfo.bmiHeader.biPlanes = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1455 binfo.bmiHeader.biSizeImage = priv->img.width * priv->img.height * (gui->screenbpp / 8);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1456 binfo.bmiHeader.biXPelsPerMeter = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1457 binfo.bmiHeader.biYPelsPerMeter = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1458 binfo.bmiHeader.biClrUsed = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1459 binfo.bmiHeader.biClrImportant = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1460 binfo.bmiHeader.biBitCount = gui->screenbpp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1461 binfo.bmiHeader.biCompression = BI_RGB;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1462 priv->bitmap = CreateDIBSection(hdc, &binfo, DIB_RGB_COLORS, (void **) &priv->img.data, NULL, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1463 if(!priv->bitmap)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1464 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1465 mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[GUI] unable to create bitmap for skinned window\n");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1466 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1467 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1468 memcpy(priv->img.data, desc->base->bitmap[0]->data, binfo.bmiHeader.biSizeImage);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1469 ReleaseDC(hWnd,hdc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1470
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1471 for (i=0; i<gui->skin->widgetcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1472 if(gui->skin->widgets[i]->window == desc->type)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1473 renderwidget(gui->skin, &priv->img, gui->skin->widgets[i], 1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1474
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1475 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1476 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1477
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1478 /* creates the video window */
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1479 int create_videowindow(gui_t *gui)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1480 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1481 HINSTANCE instance = GetModuleHandle(NULL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1482 WNDCLASS wc;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1483 RECT rect;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1484 DWORD style = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1485 HDC hdc = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1486 BITMAPINFO binfo;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1487 window_priv_t *priv = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1488 window *desc = NULL;
34996
ebcc17a3c165 Fix compiler warnings (comparison between signed and unsigned).
ib
parents: 34995
diff changeset
1489 unsigned int i;
ebcc17a3c165 Fix compiler warnings (comparison between signed and unsigned).
ib
parents: 34995
diff changeset
1490 int x = -1, y = -1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1491 vo_colorkey = 0xff00ff;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1492
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1493 for (i=0; i<gui->skin->windowcount; i++)
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1494 if(gui->skin->windows[i]->type == wiVideo)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1495 desc = gui->skin->windows[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1496
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1497 if(!desc)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1498 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1499 mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[GUI] Invalid skin description\n");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1500 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1501 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1502
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1503 windowcolor = vo_colorkey;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1504 colorbrush = CreateSolidBrush(windowcolor);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1505 wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1506 wc.lpfnWndProc = VideoProc;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1507 wc.cbClsExtra = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1508 wc.cbWndExtra = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1509 wc.hInstance = instance;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1510 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1511 wc.hIcon = gui->icon;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1512 wc.hbrBackground = NULL; //WM_PAINT will handle background color switching;
34162
9b1b7d46b8d0 Change Win32 GUI window captions.
ib
parents: 34134
diff changeset
1513 wc.lpszClassName = "MPlayer - Video";
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1514 wc.lpszMenuName = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1515 RegisterClass(&wc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1516
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1517 /* create the video window menu */
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1518 create_videomenu(gui);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1519
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1520 rect.top = rect.left = 100;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1521 rect.bottom = rect.top+desc->base->bitmap[0]->height;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1522 rect.right = rect.left+desc->base->bitmap[0]->width;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1523
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1524 /* our window aspect */
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1525 video_aspect = (float)(rect.right-rect.left)/(rect.bottom-rect.top);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1526
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1527 style = fullscreen?WS_VISIBLE | WS_POPUP:WS_OVERLAPPEDWINDOW | WS_SYSMENU | WS_MINIMIZEBOX;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1528 AdjustWindowRect(&rect, style, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1529
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1530 if (gui_video_pos_x >= 0)
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1531 x = gui_video_pos_x;
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1532 if (gui_video_pos_y >= 0)
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1533 y = gui_video_pos_y;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1534
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1535 /* out of bounds check */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1536 if (x <= -1 || (x+(rect.right-rect.left) > GetSystemMetrics(SM_CXSCREEN)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1537 x = CW_USEDEFAULT;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1538 if (y <= -1 || (y+(rect.bottom-rect.top) > GetSystemMetrics(SM_CYSCREEN)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1539 y = x;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1540
34994
b6ac08b94fc3 Go without pointless variable hWnd/hwnd.
ib
parents: 34993
diff changeset
1541 gui->videowindow = CreateWindowEx(0, "MPlayer - Video", "MPlayer - Video", style,
34995
4c589a12ff6c Cosmetic: Adjust indent.
ib
parents: 34994
diff changeset
1542 x, y, rect.right-rect.left, rect.bottom-rect.top,
4c589a12ff6c Cosmetic: Adjust indent.
ib
parents: 34994
diff changeset
1543 NULL, NULL, instance, NULL);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1544
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1545 /* load all the window images */
34994
b6ac08b94fc3 Go without pointless variable hWnd/hwnd.
ib
parents: 34993
diff changeset
1546 window_render(gui, gui->videowindow, hdc, priv, desc, binfo);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1547
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1548 /* enable drag and drop support */
34994
b6ac08b94fc3 Go without pointless variable hWnd/hwnd.
ib
parents: 34993
diff changeset
1549 DragAcceptFiles(gui->videowindow, TRUE);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1550
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1551 if(video_window)
36843
1078b8dd7625 Cast appropriately.
ib
parents: 36842
diff changeset
1552 WinID = (INT_PTR) gui->videowindow;
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1553 ShowWindow(gui->videowindow, SW_SHOW);
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1554 UpdateWindow(gui->videowindow);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1555 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1556 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1557
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1558 /* loads/updates a skin and creates windows for it */
28051
9e739bdb049c Get rid of pointless 'extern' keywords.
diego
parents: 27391
diff changeset
1559 int create_window(gui_t *gui, char *skindir)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1560 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1561 HINSTANCE instance = GetModuleHandle(NULL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1562 WNDCLASS wc;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1563 RECT rect;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1564 DWORD style = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1565 HDC hdc = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1566 BITMAPINFO binfo;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1567 window_priv_t *priv = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1568 window *desc = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1569 char dir[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1570 unsigned int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1571 int x = -1, y = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1572
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1573 /* destroy the current main window */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1574 if(gui->skin) destroy_window(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1575
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1576 /* get screenproperties */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1577 gui->screenbpp = GetDesktopBitsPerPixel();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1578 gui->screenw = GetSystemMetrics(SM_CXSCREEN);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1579 gui->screenh = GetSystemMetrics(SM_CYSCREEN);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1580
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1581 /* load the new skin */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1582 gui->skin = loadskin(skindir, gui->screenbpp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1583 if(!gui->skin)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1584 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1585 mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[GUI] fatal error during skinload\n");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1586 /* Set default Skin */
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 31532
diff changeset
1587 free(skinName);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1588 skinName = strdup("Blue");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1589 /* then force write conf */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1590 cfg_write();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1591 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1592 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1593
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1594 /* find the description of the mainwindow */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1595 for (i=0; i<gui->skin->windowcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1596 if(gui->skin->windows[i]->type == wiMain)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1597 desc = gui->skin->windows[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1598
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1599 if(!desc)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1600 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1601 mp_msg(MSGT_GPLAYER, MSGL_FATAL, "[GUI] Invalid skin description\n");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1602 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1603 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1604
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1605 /* load the icon from the executable */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1606 GetModuleFileName(NULL, dir, MAX_PATH);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1607 gui->icon = ExtractIcon(instance, dir, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1608
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1609 /* create the window class */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1610 wc.style = CS_HREDRAW | CS_VREDRAW;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1611 wc.lpfnWndProc = EventProc;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1612 wc.cbClsExtra = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1613 wc.cbWndExtra = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1614 wc.hInstance = instance;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1615 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1616 wc.hIcon = gui->icon;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1617 wc.hbrBackground = CreateSolidBrush(RGB(0, 0, 0));
36053
7affacef2f88 Define "MPlayer" string.
ib
parents: 35528
diff changeset
1618 wc.lpszClassName = gui->classname = MPlayer;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1619 wc.lpszMenuName = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1620 RegisterClass(&wc);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1621
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1622 /* create a context menu */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1623 create_menu(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1624 /* create the systray menu */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1625 create_traymenu(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1626
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1627 /* create the mainwindow */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1628 /* TODO implement aligning as described in skin.html */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1629 rect.top = rect.left = 100;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1630 rect.bottom = rect.top+desc->base->bitmap[0]->height;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1631 rect.right = rect.left+desc->base->bitmap[0]->width;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1632 if(desc->decoration) style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1633 else style = WS_POPUP | WS_SYSMENU;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1634
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1635 AdjustWindowRect(&rect, style, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1636
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1637 /* Check if out of screen */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1638 if (gui_main_pos_x >= 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1639 x = gui_main_pos_x;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1640 if (gui_main_pos_y >= 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1641 y = gui_main_pos_y;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1642
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1643 if (x <= -1 || (x+(rect.right-rect.left) > GetSystemMetrics(SM_CXFULLSCREEN)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1644 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1645 x = (GetSystemMetrics(SM_CXSCREEN) / 2) - ((rect.right-rect.left) / 2);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1646 gui_main_pos_x = x;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1647 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1648 if (y <= -1 || (y+(rect.bottom-rect.top) > GetSystemMetrics(SM_CYFULLSCREEN)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1649 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1650 y = ((GetSystemMetrics(SM_CYSCREEN)-40) - (rect.bottom-rect.top));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1651 gui_main_pos_y = y;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1652 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1653
36053
7affacef2f88 Define "MPlayer" string.
ib
parents: 35528
diff changeset
1654 gui->mainwindow = CreateWindowEx(0, gui->classname, MPlayer, style,
34995
4c589a12ff6c Cosmetic: Adjust indent.
ib
parents: 34994
diff changeset
1655 x, y, rect.right-rect.left, rect.bottom-rect.top,
4c589a12ff6c Cosmetic: Adjust indent.
ib
parents: 34994
diff changeset
1656 NULL, NULL, instance, NULL);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1657
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1658 /* set the systray icon properties */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1659 nid.cbSize = sizeof(NOTIFYICONDATA);
34994
b6ac08b94fc3 Go without pointless variable hWnd/hwnd.
ib
parents: 34993
diff changeset
1660 nid.hWnd = gui->mainwindow;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1661 nid.uID = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1662 nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1663 nid.uCallbackMessage = WM_SYSTRAY;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1664 nid.hIcon = gui->icon;
36053
7affacef2f88 Define "MPlayer" string.
ib
parents: 35528
diff changeset
1665 strcpy(nid.szTip, MPlayer);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1666
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1667 /* register the systray icon */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1668 Shell_NotifyIcon(NIM_ADD, &nid);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1669
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1670 /* load all the window images */
34994
b6ac08b94fc3 Go without pointless variable hWnd/hwnd.
ib
parents: 34993
diff changeset
1671 window_render(gui, gui->mainwindow, hdc, priv, desc, binfo);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1672
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1673 /* enable drag and drop support */
34994
b6ac08b94fc3 Go without pointless variable hWnd/hwnd.
ib
parents: 34993
diff changeset
1674 DragAcceptFiles(gui->mainwindow, TRUE);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1675
37151
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1676 /* set defaults */
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1677 gui->default_volume = 50.0f;
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1678 gui->default_balance = 50.0f;
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1679
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1680 /* get defaults from skin */
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1681 get_widgetvalue(gui->skin, evSetVolume, &gui->default_volume);
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1682 get_widgetvalue(gui->skin, evSetBalance, &gui->default_balance);
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1683 get_widgetvalue(gui->skin, evSetMoviePosition, &guiInfo.Position);
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1684
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1685 if (guiInfo.Position) gui->playercontrol(evSetMoviePosition);
c63629427fde Apply skin defaults in Win32 GUI.
ib
parents: 37053
diff changeset
1686
34994
b6ac08b94fc3 Go without pointless variable hWnd/hwnd.
ib
parents: 34993
diff changeset
1687 updatedisplay(gui, gui->mainwindow);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1688
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1689 /* display */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1690 ShowWindow(gui->mainwindow, SW_SHOW);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1691 UpdateWindow(gui->mainwindow);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1692 maketransparent(gui->mainwindow, RGB(255, 0, 255));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1693 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1694 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1695
33781
cdd4fc0616b6 Fix memory leak in the Win32 GUI.
ib
parents: 33770
diff changeset
1696 gui_t *create_gui(char *skindir, void (*playercontrol)(int event))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1697 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1698 gui_t *gui = calloc(1, sizeof(gui_t));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1699 char temp[MAX_PATH];
36053
7affacef2f88 Define "MPlayer" string.
ib
parents: 35528
diff changeset
1700 HWND runningmplayer = FindWindow(MPlayer, MPlayer);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1701
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1702 if(runningmplayer)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1703 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1704 free(gui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1705 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1706 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1707
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1708 gui->startplay = startplay;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1709 gui->playercontrol = playercontrol;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1710 gui->uninit = uninit;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1711 gui->updatedisplay = updatedisplay;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1712
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1713 /* create playlist */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1714 gui->playlist = create_playlist();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1715
34092
dbf5042ab255 Don't use the Windows style path separator character in Win32 GUI.
ib
parents: 33965
diff changeset
1716 sprintf(temp, "%s/%s", skindir, skinName);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1717 if(create_window(gui, temp)) return NULL;
34697
ac6b38cd0d45 Rename sub window video window.
ib
parents: 34684
diff changeset
1718 if(create_videowindow(gui)) return NULL;
35001
05d54ab2ba5c Add check-mark for menu item "Debug Console".
ib
parents: 34996
diff changeset
1719 if(console) console_toggle(gui);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1720 return gui;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1721 }