comparison gui/win32/gui.c @ 34163:95c396eb89ab

Internationalize and localize the Win32 GUI. Replace string constants by symbolic constants and add new symbolic constants where necessary.
author ib
date Tue, 25 Oct 2011 13:46:43 +0000
parents 9b1b7d46b8d0
children ecb8df177459
comparison
equal deleted inserted replaced
34162:9b1b7d46b8d0 34163:95c396eb89ab
67 play_tree_t *playtree = NULL; 67 play_tree_t *playtree = NULL;
68 68
69 static HBRUSH colorbrush = NULL; //Handle to colorkey brush 69 static HBRUSH colorbrush = NULL; //Handle to colorkey brush
70 static COLORREF windowcolor = RGB(255,0,255); //Windowcolor == colorkey 70 static COLORREF windowcolor = RGB(255,0,255); //Windowcolor == colorkey
71 71
72 /**
73 * @brief Convert an UTF-8 encoded string into ANSI codepage encoding.
74 *
75 * @param utf8 UTF-8 encoded string
76 *
77 * @return string containing ANSI codepage encoding of @a utf8 (or, in case
78 * of error, a string containing the question mark character)
79 */
80 LPSTR acp (LPCSTR utf8)
81 {
82 static LPSTR acp_str = NULL;
83 int chars;
84 LPWSTR uc_str;
85
86 chars = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
87
88 if (chars)
89 {
90 uc_str = malloc(sizeof(*uc_str) * (chars + 1));
91
92 if (uc_str)
93 {
94 MultiByteToWideChar(CP_UTF8, 0, utf8, -1, uc_str, chars);
95
96 chars = WideCharToMultiByte(CP_ACP, 0, uc_str, -1, NULL, 0, NULL, 0);
97
98 if (chars)
99 {
100 free(acp_str);
101 acp_str = malloc(sizeof(*acp_str) * (chars + 1));
102
103 if (acp_str)
104 {
105 WideCharToMultiByte(CP_ACP, 0, uc_str, -1, acp_str, chars, NULL, 0);
106 free(uc_str);
107
108 return acp_str;
109 }
110 }
111
112 free(uc_str);
113 }
114 }
115
116 return "?";
117 }
118
72 static void console_toggle(void) 119 static void console_toggle(void)
73 { 120 {
74 if (console_state) 121 if (console_state)
75 { 122 {
76 FreeConsole(); 123 FreeConsole();
131 } 178 }
132 static void display_about_box(HWND hWnd) 179 static void display_about_box(HWND hWnd)
133 { 180 {
134 char about_msg[512]; 181 char about_msg[512];
135 snprintf(about_msg, sizeof(about_msg), MP_TITLE "\n" COPYRIGHT, "MPlayer"); 182 snprintf(about_msg, sizeof(about_msg), MP_TITLE "\n" COPYRIGHT, "MPlayer");
136 MessageBox(hWnd, about_msg, "About", MB_OK); 183 MessageBox(hWnd, about_msg, acp(MSGTR_About), MB_OK);
137 } 184 }
138 185
139 static image *get_drawground(HWND hwnd) 186 static image *get_drawground(HWND hwnd)
140 { 187 {
141 gui_t * gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA); 188 gui_t * gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
374 { 421 {
375 static char path[MAX_PATH]; 422 static char path[MAX_PATH];
376 BROWSEINFO bi; 423 BROWSEINFO bi;
377 LPITEMIDLIST pidl; 424 LPITEMIDLIST pidl;
378 memset(&bi, 0, sizeof(BROWSEINFO)); 425 memset(&bi, 0, sizeof(BROWSEINFO));
379 bi.lpszTitle = "Choose a Directory..."; 426 bi.lpszTitle = acp(MSGTR_DirectorySelect);
380 pidl = SHBrowseForFolder(&bi); 427 pidl = SHBrowseForFolder(&bi);
381 if (SHGetPathFromIDList(pidl, path)) 428 if (SHGetPathFromIDList(pidl, path))
382 { 429 {
383 gui->playlist->clear_playlist(gui->playlist); 430 gui->playlist->clear_playlist(gui->playlist);
384 adddirtoplaylist(gui->playlist, path, TRUE); 431 adddirtoplaylist(gui->playlist, path, TRUE);
925 { 972 {
926 static char path[MAX_PATH]; 973 static char path[MAX_PATH];
927 BROWSEINFO bi; 974 BROWSEINFO bi;
928 LPITEMIDLIST pidl; 975 LPITEMIDLIST pidl;
929 memset(&bi, 0, sizeof(BROWSEINFO)); 976 memset(&bi, 0, sizeof(BROWSEINFO));
930 bi.lpszTitle = "Choose a Directory..."; 977 bi.lpszTitle = acp(MSGTR_DirectorySelect);
931 pidl = SHBrowseForFolder(&bi); 978 pidl = SHBrowseForFolder(&bi);
932 if (SHGetPathFromIDList(pidl, path)) 979 if (SHGetPathFromIDList(pidl, path))
933 { 980 {
934 gui->playlist->clear_playlist(gui->playlist); 981 gui->playlist->clear_playlist(gui->playlist);
935 adddirtoplaylist(gui->playlist, path, TRUE); 982 adddirtoplaylist(gui->playlist, path, TRUE);
1142 static void create_menu(gui_t *gui) 1189 static void create_menu(gui_t *gui)
1143 { 1190 {
1144 gui->diskmenu = CreatePopupMenu(); 1191 gui->diskmenu = CreatePopupMenu();
1145 gui->menu=CreatePopupMenu(); 1192 gui->menu=CreatePopupMenu();
1146 gui->trayplaymenu = CreatePopupMenu(); 1193 gui->trayplaymenu = CreatePopupMenu();
1147 AppendMenu(gui->menu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaymenu, "Open..."); 1194 AppendMenu(gui->menu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaymenu, acp(MSGTR_MENU_Open));
1148 AppendMenu(gui->trayplaymenu, MF_STRING, IDFILE_OPEN, "File..."); 1195 AppendMenu(gui->trayplaymenu, MF_STRING, IDFILE_OPEN, acp(MSGTR_MENU_PlayFile));
1149 AppendMenu(gui->trayplaymenu, MF_STRING, IDURL_OPEN, "Url..."); 1196 AppendMenu(gui->trayplaymenu, MF_STRING, IDURL_OPEN, acp(MSGTR_MENU_PlayURL));
1150 AppendMenu(gui->trayplaymenu, MF_STRING, IDDIR_OPEN, "Directory..."); 1197 AppendMenu(gui->trayplaymenu, MF_STRING, IDDIR_OPEN, acp(MSGTR_MENU_PlayDirectory));
1151 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0); 1198 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0);
1152 AppendMenu(gui->menu, MF_STRING | MF_POPUP, (UINT_PTR) gui->diskmenu, "Play &CD/DVD/VCD/SVCD"); 1199 AppendMenu(gui->menu, MF_STRING | MF_POPUP, (UINT_PTR) gui->diskmenu, acp(MSGTR_MENU_PlayDisc));
1153 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0); 1200 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0);
1154 AppendMenu(gui->menu, MF_STRING, IDSUBTITLE_OPEN, "Open Subtitle"); 1201 AppendMenu(gui->menu, MF_STRING, IDSUBTITLE_OPEN, acp(MSGTR_MENU_LoadSubtitle));
1155 AppendMenu(gui->menu, MF_STRING, ID_SKINBROWSER, "Skin Browser"); 1202 AppendMenu(gui->menu, MF_STRING, ID_SKINBROWSER, acp(MSGTR_MENU_SkinBrowser));
1156 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0); 1203 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0);
1157 AppendMenu(gui->menu, MF_STRING, ID_PREFS, "Preferences"); 1204 AppendMenu(gui->menu, MF_STRING, ID_PREFS, acp(MSGTR_MENU_Preferences));
1158 AppendMenu(gui->menu, MF_STRING, ID_CONSOLE, "Debug Console"); 1205 AppendMenu(gui->menu, MF_STRING, ID_CONSOLE, acp(MSGTR_MENU_DebugConsole));
1159 AppendMenu(gui->menu, MF_STRING, ID_ONLINEHELP, "Online Help"); 1206 AppendMenu(gui->menu, MF_STRING, ID_ONLINEHELP, acp(MSGTR_MENU_OnlineHelp));
1160 AppendMenu(gui->menu, MF_STRING, IDHELP_ABOUT, "About"); 1207 AppendMenu(gui->menu, MF_STRING, IDHELP_ABOUT, acp(MSGTR_MENU_AboutMPlayer));
1161 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0); 1208 AppendMenu(gui->menu, MF_SEPARATOR, 0, 0);
1162 AppendMenu(gui->menu, MF_STRING, IDEXIT, "&Exit"); 1209 AppendMenu(gui->menu, MF_STRING, IDEXIT, acp(MSGTR_MENU_Exit));
1163 } 1210 }
1164 1211
1165 static void create_traymenu(gui_t *gui) 1212 static void create_traymenu(gui_t *gui)
1166 { 1213 {
1167 gui->traymenu = CreatePopupMenu(); 1214 gui->traymenu = CreatePopupMenu();
1168 gui->trayplaybackmenu = CreatePopupMenu(); 1215 gui->trayplaybackmenu = CreatePopupMenu();
1169 AppendMenu(gui->traymenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaymenu, "Open..."); 1216 AppendMenu(gui->traymenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaymenu, acp(MSGTR_MENU_Open));
1170 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0); 1217 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
1171 AppendMenu(gui->traymenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaybackmenu, "Playback"); 1218 AppendMenu(gui->traymenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaybackmenu, acp(MSGTR_MENU_Playing));
1172 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_SEEKB, "Seek Backwards"); 1219 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_SEEKB, acp(MSGTR_MENU_SeekBack));
1173 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_PTRACK, "Previous Track"); 1220 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_PTRACK, acp(MSGTR_MENU_PrevStream));
1174 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_PLAY, "Play/Pause"); 1221 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_PLAY, acp(MSGTR_MENU_Play "/" MSGTR_MENU_Pause));
1175 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_STOP, "Stop"); 1222 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_STOP, acp(MSGTR_MENU_Stop));
1176 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_NTRACK, "Next Track"); 1223 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_NTRACK, acp(MSGTR_MENU_NextStream));
1177 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_SEEKF, "Seek Forwards"); 1224 AppendMenu(gui->trayplaybackmenu, MF_STRING, ID_SEEKF, acp(MSGTR_MENU_SeekForw));
1178 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0); 1225 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
1179 AppendMenu(gui->traymenu, MF_STRING, ID_MUTE, "Toggle Mute"); 1226 AppendMenu(gui->traymenu, MF_STRING, ID_MUTE, acp(MSGTR_MENU_Mute));
1180 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0); 1227 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
1181 AppendMenu(gui->traymenu, MF_STRING, IDSUBTITLE_OPEN, "Open Subtitle"); 1228 AppendMenu(gui->traymenu, MF_STRING, IDSUBTITLE_OPEN, acp(MSGTR_MENU_LoadSubtitle));
1182 AppendMenu(gui->traymenu, MF_STRING, ID_PLAYLIST, "Playlist"); 1229 AppendMenu(gui->traymenu, MF_STRING, ID_PLAYLIST, acp(MSGTR_MENU_PlayList));
1183 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0); 1230 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
1184 AppendMenu(gui->traymenu, MF_STRING, ID_SHOWHIDE, "Show/Hide"); 1231 AppendMenu(gui->traymenu, MF_STRING, ID_SHOWHIDE, acp(MSGTR_MENU_ShowHide));
1185 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0); 1232 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
1186 AppendMenu(gui->traymenu, MF_STRING, ID_PREFS, "Preferences"); 1233 AppendMenu(gui->traymenu, MF_STRING, ID_PREFS, acp(MSGTR_MENU_Preferences));
1187 AppendMenu(gui->traymenu, MF_STRING, ID_CONSOLE, "Debug Console"); 1234 AppendMenu(gui->traymenu, MF_STRING, ID_CONSOLE, acp(MSGTR_MENU_DebugConsole));
1188 AppendMenu(gui->traymenu, MF_STRING, ID_ONLINEHELP, "Online Help"); 1235 AppendMenu(gui->traymenu, MF_STRING, ID_ONLINEHELP, acp(MSGTR_MENU_OnlineHelp));
1189 AppendMenu(gui->traymenu, MF_STRING, IDHELP_ABOUT, "About"); 1236 AppendMenu(gui->traymenu, MF_STRING, IDHELP_ABOUT, acp(MSGTR_MENU_AboutMPlayer));
1190 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0); 1237 AppendMenu(gui->traymenu, MF_SEPARATOR, 0, 0);
1191 AppendMenu(gui->traymenu, MF_STRING, IDEXIT, "&Exit"); 1238 AppendMenu(gui->traymenu, MF_STRING, IDEXIT, acp(MSGTR_MENU_Exit));
1192 } 1239 }
1193 1240
1194 static void create_submenu(gui_t *gui) 1241 static void create_submenu(gui_t *gui)
1195 { 1242 {
1196 gui->submenu = CreatePopupMenu(); 1243 gui->submenu = CreatePopupMenu();
1197 gui->dvdmenu = CreatePopupMenu(); 1244 gui->dvdmenu = CreatePopupMenu();
1198 gui->aspectmenu = CreatePopupMenu(); 1245 gui->aspectmenu = CreatePopupMenu();
1199 gui->subtitlemenu = CreatePopupMenu(); 1246 gui->subtitlemenu = CreatePopupMenu();
1200 AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaymenu, "Open..."); 1247 AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->trayplaymenu, acp(MSGTR_MENU_Open));
1201 AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0); 1248 AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0);
1202 AppendMenu(gui->submenu, MF_STRING, ID_SEEKB, "Seek Backwards"); 1249 AppendMenu(gui->submenu, MF_STRING, ID_SEEKB, acp(MSGTR_MENU_SeekBack));
1203 AppendMenu(gui->submenu, MF_STRING, ID_PTRACK, "Previous Track"); 1250 AppendMenu(gui->submenu, MF_STRING, ID_PTRACK, acp(MSGTR_MENU_PrevStream));
1204 AppendMenu(gui->submenu, MF_STRING, ID_PLAY, "Play/Pause"); 1251 AppendMenu(gui->submenu, MF_STRING, ID_PLAY, acp(MSGTR_MENU_Play "/" MSGTR_MENU_Pause));
1205 AppendMenu(gui->submenu, MF_STRING, ID_STOP, "Stop"); 1252 AppendMenu(gui->submenu, MF_STRING, ID_STOP, acp(MSGTR_MENU_Stop));
1206 AppendMenu(gui->submenu, MF_STRING, ID_NTRACK, "Next Track"); 1253 AppendMenu(gui->submenu, MF_STRING, ID_NTRACK, acp(MSGTR_MENU_NextStream));
1207 AppendMenu(gui->submenu, MF_STRING, ID_SEEKF, "Seek Forwards"); 1254 AppendMenu(gui->submenu, MF_STRING, ID_SEEKF, acp(MSGTR_MENU_SeekForw));
1208 AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0); 1255 AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0);
1209 AppendMenu(gui->submenu, MF_STRING, ID_FULLSCREEN, "Toggle Fullscreen"); 1256 AppendMenu(gui->submenu, MF_STRING, ID_FULLSCREEN, acp(MSGTR_MENU_FullScreen));
1210 AppendMenu(gui->submenu, MF_STRING, ID_MUTE, "Toggle Mute"); 1257 AppendMenu(gui->submenu, MF_STRING, ID_MUTE, acp(MSGTR_MENU_Mute));
1211 AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0); 1258 AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0);
1212 AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->aspectmenu, "Aspect Ratio"); 1259 AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->aspectmenu, acp(MSGTR_MENU_AspectRatio));
1213 AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->subtitlemenu, "Subtitle Options"); 1260 AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->subtitlemenu, acp(MSGTR_MENU_Subtitles));
1214 AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->dvdmenu, "DVD Options"); 1261 AppendMenu(gui->submenu, MF_STRING | MF_POPUP, (UINT_PTR) gui->dvdmenu, acp(MSGTR_MENU_DVD));
1215 #ifdef CONFIG_DVDREAD 1262 #ifdef CONFIG_DVDREAD
1216 AppendMenu(gui->dvdmenu, MF_STRING | MF_GRAYED, ID_CHAPTERSEL, "Select Title/Chapter..."); 1263 AppendMenu(gui->dvdmenu, MF_STRING | MF_GRAYED, ID_CHAPTERSEL, acp(MSGTR_SelectChapter));
1217 #endif 1264 #endif
1218 AppendMenu(gui->subtitlemenu, MF_STRING, IDSUB_TOGGLE, "Subtitle Visibility On/Off"); 1265 AppendMenu(gui->subtitlemenu, MF_STRING, IDSUB_TOGGLE, acp(MSGTR_MENU_SubtitlesOnOff));
1219 AppendMenu(gui->subtitlemenu, MF_STRING, IDSUB_CYCLE, "Cycle Subtitle Languages"); 1266 AppendMenu(gui->subtitlemenu, MF_STRING, IDSUB_CYCLE, acp(MSGTR_MENU_SubtitleLanguages));
1220 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT1, "Set 16:9"); 1267 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT1, "16:9");
1221 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT2, "Set 4:3"); 1268 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT2, "4:3");
1222 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT3, "Set 2.35"); 1269 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT3, "2.35");
1223 AppendMenu(gui->aspectmenu, MF_SEPARATOR, 0, 0); 1270 AppendMenu(gui->aspectmenu, MF_SEPARATOR, 0, 0);
1224 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT4, "Original Aspect"); 1271 AppendMenu(gui->aspectmenu, MF_STRING, ID_ASPECT4, acp(MSGTR_MENU_Original));
1225 AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0); 1272 AppendMenu(gui->submenu, MF_SEPARATOR, 0, 0);
1226 AppendMenu(gui->submenu, MF_STRING, IDEXIT, "&Exit"); 1273 AppendMenu(gui->submenu, MF_STRING, IDEXIT, acp(MSGTR_MENU_Exit));
1227 } 1274 }
1228 1275
1229 static void maketransparent(HWND hwnd, COLORREF crTransparent) 1276 static void maketransparent(HWND hwnd, COLORREF crTransparent)
1230 { 1277 {
1231 HDC mdc = GetDC(hwnd); 1278 HDC mdc = GetDC(hwnd);