summaryrefslogtreecommitdiffstats
path: root/gui/win32/dialogs.c
diff options
context:
space:
mode:
authorAnton Khirnov <wyskas@gmail.com>2009-07-07 19:35:54 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2009-07-07 21:49:42 +0300
commit87366694d82c8d4c7f0bc210e6baa0ccd651d0c2 (patch)
tree57c6a283eed4934c6041658effab17435ef2ff1c /gui/win32/dialogs.c
parenta2037a2effbd4622d0e8336245a9b14c3f886bde (diff)
downloadmpv-87366694d82c8d4c7f0bc210e6baa0ccd651d0c2.tar.bz2
mpv-87366694d82c8d4c7f0bc210e6baa0ccd651d0c2.tar.xz
Remove the internal GUI
The GUI is badly designed and too closely coupled to the internal details of other code. The GUI code is in bad shape and unmaintained for years. There is no indication that anyone would maintain it in the future either. Even if someone did volunteer to implement a better integrated GUI having the current code in the tree probably wouldn't help much. So get rid of it.
Diffstat (limited to 'gui/win32/dialogs.c')
-rw-r--r--gui/win32/dialogs.c1122
1 files changed, 0 insertions, 1122 deletions
diff --git a/gui/win32/dialogs.c b/gui/win32/dialogs.c
deleted file mode 100644
index 60a8d8c759..0000000000
--- a/gui/win32/dialogs.c
+++ /dev/null
@@ -1,1122 +0,0 @@
-/*
- * MPlayer GUI for Win32
- * Copyright (C) 2003 Sascha Sommer <saschasommer@freenet.de>
- * Copyright (C) 2006 Erik Augustson <erik_27can@yahoo.com>
- * Copyright (C) 2006 Gianluigi Tiesi <sherpya@netfarm.it>
- *
- * This file is part of MPlayer.
- *
- * MPlayer is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * MPlayer is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with MPlayer; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <windows.h>
-#include <commctrl.h>
-#include <get_path.h>
-#include "gui/interface.h"
-#include "mp_msg.h"
-#include "help_mp.h"
-#include "stream/stream.h"
-#include "libmpdemux/demuxer.h"
-#include "libmpdemux/stheader.h"
-#include "gui.h"
-#include "dialogs.h"
-#include "libvo/sub.h"
-
-WNDPROC OldUrlWndProc;
-LRESULT CALLBACK SubUrlWndProc(HWND, UINT, WPARAM, LPARAM);
-extern int vo_gamma_brightness;
-extern int vo_gamma_saturation;
-extern int vo_gamma_contrast;
-extern int vo_gamma_hue;
-int set_video_colors(sh_video_t *sh_video, const char *item, int value);
-int get_video_colors(sh_video_t *sh_video, const char *item, int *value);
-
-guiInterface_t guiIntfStruct;
-int addurl = 0;
-
-extern mp_osd_obj_t* vo_osd_list;
-extern char **sub_name;
-
-void guiLoadSubtitle(char *name)
-{
- if (!guiIntfStruct.Playing)
- {
- guiIntfStruct.SubtitleChanged = 1;
- return;
- }
- if (subdata)
- {
- mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_DeletingSubtitles);
- sub_free(subdata);
- subdata = NULL;
- vo_sub = NULL;
- if (vo_osd_list)
- {
- int len;
- mp_osd_obj_t *osd = vo_osd_list;
- while (osd)
- {
- if (osd->type == OSDTYPE_SUBTITLE) break;
- osd = osd->next;
- }
- if (osd && osd->flags & OSDFLAG_VISIBLE)
- {
- len = osd->stride * (osd->bbox.y2 - osd->bbox.y1);
- memset(osd->bitmap_buffer, 0, len);
- memset(osd->alpha_buffer, 0, len);
- }
- }
- }
-
- if (name)
- {
- mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_LoadingSubtitles, name);
- subdata = sub_read_file(strdup(name), guiIntfStruct.FPS);
- if (!subdata) mp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_CantLoadSub,name);
- sub_name = (malloc(2 * sizeof(char*))); /* when mplayer will be restarted */
- sub_name[0] = strdup(name); /* sub_name[0] will be read */
- sub_name[1] = NULL;
- }
- update_set_of_subtitles();
-}
-
-int display_openfilewindow(gui_t *gui, int add)
-{
- OPENFILENAME fileopen;
- int result = 0;
- char filelist[MAXFILE];
- char filename[MAX_PATH];
- char directory[MAX_PATH];
- char *filespec = NULL;
- char *filepart = NULL;
-
- memset(&fileopen, 0, sizeof(OPENFILENAME));
- memset(filelist, 0, sizeof(filelist));
-
- fileopen.lStructSize = sizeof(OPENFILENAME);
- fileopen.hwndOwner = gui->mainwindow;
- fileopen.hInstance = GetModuleHandle(NULL);
- fileopen.lpstrFilter = "All Files (*.*)\0*.*\0"
- "Media Files (*.avi;*.asf;*.wmv;*.mpg;*.mpeg;*.m2v;*.mov;\
- *.rmvb;*.rm;*.ogm;*.mp3;*.wav;*.wma;*.ra;*.ogg)\0\
- *.avi;*.asf;*.wmv;*.mpg;*.mpeg;*.m2v;*.mov;\
- *.rmvb;*.rm;*.ogm;*.mp3;*.wav;*.wma;*.ra;*.ogg\0"
- "Video Files (*.avi;*.mpg;*.mpeg;*.mov)\0*.avi;*.mpg;*.mpeg;*.mov\0"
- "Avisynth Scripts (*.avs)\0*.avs\0"
- "Audio Files (*.mp3;*.wav;*.ra)\0*.mp3;*.wav;*.ra\000";
- fileopen.nFilterIndex = 0;
- fileopen.lpstrTitle = "Add file(s)...";
- fileopen.Flags = OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST| OFN_LONGNAMES | OFN_EXPLORER| OFN_READONLY | OFN_HIDEREADONLY;
- fileopen.lpstrFile = filelist;
- fileopen.lpstrCustomFilter = NULL;
- fileopen.nMaxFile = MAXFILE;
-
- if(GetOpenFileName(&fileopen))
- {
- /* clear playlist */
- if(!add) gui->playlist->clear_playlist(gui->playlist);
-
- memcpy(directory, fileopen.lpstrFile, fileopen.nFileOffset - 1);
- directory[fileopen.nFileOffset - 1] = 0;
-
- do
- {
- filespec = &fileopen.lpstrFile[fileopen.nFileOffset];
- filename[0] = 0;
- strcat(filename, directory);
- strcat(filename, "\\");
- strcat(filename, filespec);
-
- if (GetFileAttributes(filename) & FILE_ATTRIBUTE_DIRECTORY)
- mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] %s is a directory, skipping...\n", filename);
- else
- {
- if (GetFullPathName(filename, MAX_PATH, filename, &filepart))
- {
- mplSetFileName(NULL, filename, STREAMTYPE_FILE);
- if(!parse_filename(filename, playtree, mconfig, 0))
- gui->playlist->add_track(gui->playlist, filename, NULL, filepart, 0);
- mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Adding file: %s - path %s\n", filespec, filename);
- result++;
- }
- }
- fileopen.nFileOffset += strlen(filespec) + 1;
- } while (*filespec);
- }
- return result;
-}
-
-void display_opensubtitlewindow(gui_t *gui)
-{
- OPENFILENAME subtitleopen;
- char subtitlefile[MAX_PATH];
-
- /* Safety check */
- if (guiIntfStruct.Playing == 0 || !guiIntfStruct.sh_video) return;
-
- memset(&subtitleopen, 0, sizeof(OPENFILENAME));
- memset(subtitlefile, 0, sizeof(subtitlefile));
-
- subtitleopen.lStructSize = sizeof(OPENFILENAME);
- subtitleopen.hwndOwner = gui->mainwindow;
- subtitleopen.hInstance = GetModuleHandle(NULL);
- subtitleopen.lpstrFilter = "All Files (*.*)\0*.*\0"
- "Subtitle Files (*.srt;*.txt;*.vob)\0*.srt;*.txt;*.vob\0";
- subtitleopen.nFilterIndex = 0;
- subtitleopen.lpstrTitle = "Add Subtitle...";
- subtitleopen.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER | OFN_READONLY | OFN_HIDEREADONLY;
- subtitleopen.lpstrFile = subtitlefile;
- subtitleopen.lpstrCustomFilter = NULL;
- subtitleopen.nMaxFile = MAXFILE;
-
- if(GetOpenFileName(&subtitleopen))
- guiLoadSubtitle(subtitlefile);
-}
-
-void display_loadplaylistwindow(gui_t *gui)
-{
- OPENFILENAME playlistopen;
- char playlistfile[MAX_PATH];
-
- memset(&playlistopen, 0, sizeof(OPENFILENAME));
- memset(playlistfile, 0, sizeof(playlistfile));
-
- playlistopen.lStructSize = sizeof(OPENFILENAME);
- playlistopen.hwndOwner = gui->mainwindow;
- playlistopen.hInstance = GetModuleHandle(NULL);
- playlistopen.lpstrFilter = "All Files (*.*)\0*.*\0"
- "Playlist Files (*.m3u;*.pls;*.txt)\0*.m3u;*.pls;*.txt\0";
- playlistopen.nFilterIndex = 0;
- playlistopen.lpstrTitle = "Load Playlist...";
- playlistopen.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER | OFN_READONLY | OFN_HIDEREADONLY;
- playlistopen.lpstrFile = playlistfile;
- playlistopen.lpstrCustomFilter = NULL;
- playlistopen.nMaxFile = MAXFILE;
-
- if(GetOpenFileName(&playlistopen))
- {
- if(parse_filename(playlistfile, playtree, mconfig, 1))
- gui->startplay(gui);
- }
-}
-
-void display_saveplaylistwindow(gui_t* gui)
-{
- OPENFILENAME playlistsave;
- static FILE *playlist_file = NULL;
- char playlistname[MAX_PATH];
-
- memset(&playlistsave, 0, sizeof(OPENFILENAME));
- memset(playlistname, 0, sizeof(playlistname));
-
- playlistsave.lStructSize = sizeof(OPENFILENAME);
- playlistsave.hwndOwner = gui->mainwindow;
- playlistsave.hInstance = GetModuleHandle(NULL);
- playlistsave.lpstrFilter = "Playlist Files (*.pls)\0*.pls\0";
- playlistsave.nFilterIndex = 0;
- playlistsave.lpstrTitle = "Save Playlist...";
- playlistsave.Flags = OFN_LONGNAMES | OFN_EXPLORER | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
- playlistsave.lpstrFile = playlistname;
- playlistsave.lpstrCustomFilter = NULL;
- playlistsave.nMaxFile = MAXFILE;
-
- if(GetSaveFileName(&playlistsave))
- {
- int i=0;
- HANDLE my_playlist;
-
- if(!strstr(playlistname, ".pls")) strcat(playlistname, ".pls");
-
- my_playlist = CreateFile(playlistname,
- GENERIC_WRITE,
- 0,
- NULL,
- CREATE_ALWAYS,
- FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
- NULL);
-
- if(my_playlist != INVALID_HANDLE_VALUE)
- {
- CloseHandle(my_playlist); /* close the file first so we can write to it */
- playlist_file = fopen(playlistsave.lpstrFile, "w");
- fprintf(playlist_file, "[playlist]\n");
- fprintf(playlist_file, "numberofentries=%d\n", gui->playlist->trackcount);
-
- for(i=0; i<(gui->playlist->trackcount); i++)
- {
- fprintf(playlist_file, "File%i=%s\n", i + 1, gui->playlist->tracks[i]->filename);
- fprintf(playlist_file, "Length%i=-1\n", i + 1);
- }
- fclose(playlist_file);
- }
- }
-}
-
-static LRESULT CALLBACK OpenUrlWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
-{
- static HWND url;
- HWND wdg;
- FILE *f;
- char *history = get_path("gui.url");
- gui_t *gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- switch (iMsg)
- {
- case WM_CREATE:
- wdg = CreateWindow("button", "Ok",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 4, 43, 80, 25, hwnd,
- (HMENU) ID_OK,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
-
- wdg = CreateWindow("button", "Cancel",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 90, 43, 80, 25, hwnd,
- (HMENU) ID_CANCEL,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
-
- url = wdg = CreateWindowEx(WS_EX_CLIENTEDGE,
- "edit", NULL,
- WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL,
- 4, 10, 300, 25, hwnd,
- (HMENU) ID_URL,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
- SendMessage(wdg, EM_SETLIMITTEXT, MAX_PATH, 0);
-
- /*subclass the edit box to capture the VK_RETURN key*/
- OldUrlWndProc = (WNDPROC)SetWindowLongPtr(url, GWLP_WNDPROC, (LONG_PTR)SubUrlWndProc);
-
- if((f = fopen(history, "r")))
- {
- char lasturl[MAX_PATH];
- fgets(lasturl, MAX_PATH, f);
- SendMessage(url, WM_SETTEXT, 0, (LPARAM) lasturl);
- SendMessage(url, EM_SETSEL, 0, -1);
- fclose(f);
- }
- break;
- case WM_KEYDOWN:
- switch (LOWORD(wParam))
- {
- case VK_RETURN:
- SendMessage(hwnd, WM_COMMAND, (WPARAM) ID_OK, 0);
- break;
- }
- case WM_COMMAND:
- {
- switch (LOWORD(wParam))
- {
- case ID_CANCEL:
- DestroyWindow(hwnd);
- return 0;
- case ID_OK:
- {
- char file[MAX_PATH];
- SendMessage(url, WM_GETTEXT, MAX_PATH, (LPARAM) file);
- mplSetFileName(NULL, file, STREAMTYPE_STREAM);
- if((f = fopen(history, "wt+")))
- {
- fprintf(f, file);
- fclose(f);
- }
- if(!parse_filename(file, playtree, mconfig, addurl? 0 : 1))
- gui->playlist->add_track(gui->playlist, file, NULL, NULL, 0);
- if(!addurl)
- gui->startplay(gui);
- else update_playlistwindow();
- DestroyWindow(hwnd);
- }
- break;
- }
- }
- return 0;
- case WM_DESTROY:
- {
- addurl = 0;
- return 0;
- }
- }
- return DefWindowProc(hwnd, iMsg, wParam, lParam);
-}
-
-LRESULT CALLBACK SubUrlWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
-{
- switch(iMsg)
- {
- case WM_KEYDOWN:
- switch (LOWORD(wParam))
- {
- case VK_RETURN:
- SendMessage(FindWindow(NULL, "MPlayer - Open URL..."), WM_COMMAND, (WPARAM) ID_OK, 0);
- break;
- }
- }
- return CallWindowProc(OldUrlWndProc, hwnd, iMsg, wParam, lParam);
-}
-
-void display_openurlwindow(gui_t *gui, int add)
-{
- HWND hWnd;
- HINSTANCE hInstance = GetModuleHandle(NULL);
- WNDCLASS wc;
- int x, y;
-
- if(add) addurl = 1;
- if(FindWindow(NULL, "MPlayer - Open URL...")) return;
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = OpenUrlWndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hCursor = LoadCursor(NULL,IDC_ARROW);
- wc.hIcon = gui->icon;
- wc.hbrBackground = SOLID_GREY2;
- wc.lpszClassName = "MPlayer - URL";
- wc.lpszMenuName = NULL;
- RegisterClass(&wc);
- x = (GetSystemMetrics(SM_CXSCREEN) / 2) - (320 / 2);
- y = (GetSystemMetrics(SM_CYSCREEN) / 2) - (100 / 2);
- hWnd = CreateWindow("MPlayer - URL",
- "MPlayer - Open URL...",
- WS_POPUPWINDOW | WS_CAPTION,
- x,
- y,
- 320,
- 100,
- NULL,
- NULL,
- hInstance,
- NULL);
- SetWindowLongPtr(hWnd, GWLP_USERDATA, (DWORD) gui);
- ShowWindow(hWnd, SW_SHOW);
- UpdateWindow(hWnd);
-}
-
-static void create_playlistmenu(gui_t *gui)
-{
- gui->playlistmenu = CreatePopupMenu();
- AppendMenu(gui->playlistmenu, MF_STRING, ID_ADDFILE, "Add File...");
- AppendMenu(gui->playlistmenu, MF_STRING, ID_ADDURL, "Add Url...");
- AppendMenu(gui->playlistmenu, MF_SEPARATOR, 0, 0);
- AppendMenu(gui->playlistmenu, MF_STRING, ID_REMOVE, "Remove Selected");
- AppendMenu(gui->playlistmenu, MF_STRING, ID_CLEAR, "Clear Playlist");
- AppendMenu(gui->playlistmenu, MF_SEPARATOR, 0, 0);
- AppendMenu(gui->playlistmenu, MF_STRING, ID_CLOSE, "Close");
-}
-
-static void updatetracklist(HWND hwnd)
-{
- int i=0;
- gui_t *gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- /* clear listbox */
- SendDlgItemMessage(hwnd, ID_TRACKLIST, LB_RESETCONTENT, 0, 0);
- for (i=0; i < gui->playlist->trackcount; i++)
- if (gui->playlist->tracks[i]->title)
- SendDlgItemMessage(hwnd, ID_TRACKLIST, LB_ADDSTRING, 0, (LPARAM)gui->playlist->tracks[i]->title);
- else
- SendDlgItemMessage(hwnd, ID_TRACKLIST, LB_ADDSTRING, 0, (LPARAM)gui->playlist->tracks[i]->filename);
-}
-
-static LRESULT CALLBACK PlayListWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
-{
- HWND wdg;
- POINT cursor;
- gui_t *gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- playlist_t *pl = gui ? gui->playlist : NULL;
- switch (iMsg)
- {
- case WM_CREATE:
- {
- wdg = CreateWindow("button", "Play",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 4, 10, 80, 25, hwnd,
- (HMENU) ID_PLAY,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
-
- wdg = CreateWindow ("button", "Up",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 4, 37, 80, 25, hwnd,
- (HMENU) ID_UP,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT,(WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
-
- wdg = CreateWindow ("button", "Down",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 4, 64, 80, 25, hwnd,
- (HMENU) ID_DOWN,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT),0);
-
- wdg = CreateWindow ("button", "Remove",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 4, 91, 80, 25, hwnd,
- (HMENU) ID_REMOVE,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT),0);
-
- wdg = CreateWindow ("button", "Load",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 4, 118, 80, 25, hwnd,
- (HMENU) ID_PLAYLISTLOAD,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT),0);
-
- wdg = CreateWindow ("button", "Save",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 4, 145, 80, 25, hwnd,
- (HMENU) ID_PLAYLISTSAVE,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT),0);
-
- wdg = CreateWindow ("button", "Close",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 4, 193, 80, 25, hwnd,
- (HMENU) ID_CLOSE,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT),0);
-
- wdg = CreateWindow ("listbox", "tracklist", WS_CHILD | WS_VISIBLE | LBS_NOTIFY | WS_VSCROLL |
- WS_HSCROLL | LBS_DISABLENOSCROLL, 92, 10, 300, 208, hwnd, (HMENU) ID_TRACKLIST,
- ((LPCREATESTRUCT) lParam) -> hInstance, NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
- SendMessage(wdg, LB_SETHORIZONTALEXTENT, MAX_PATH*4, 0);
- break;
- }
- case WM_CONTEXTMENU:
- {
- GetCursorPos(&cursor);
- SetForegroundWindow(hwnd);
- TrackPopupMenu(gui->playlistmenu, 0, cursor.x, cursor.y, 0, hwnd, NULL);
- break;
- }
- case WM_COMMAND:
- {
- int selected = 0;
- int i;
- for (i=0; i<pl->trackcount; i++)
- if(0 < SendDlgItemMessage(hwnd, ID_TRACKLIST, LB_GETSEL, i, 0)) selected = i + 1;
- switch (LOWORD(wParam))
- {
- case ID_CLOSE:
- DestroyWindow(hwnd);
- return 0;
- case ID_TRACKLIST:
- if(HIWORD(wParam) == LBN_DBLCLK)
- {
- case ID_PLAY:
- if(selected) pl->current = selected - 1;
- mplSetFileName(NULL, pl->tracks[pl->current]->filename, STREAMTYPE_STREAM);
- gui->startplay(gui);
- }
- return 0;
- case ID_UP:
- {
- if(selected) pl->moveup_track(pl, selected);
- selected--;
- break;
- }
- case ID_DOWN:
- {
- if(selected) pl->movedown_track(pl, selected);
- selected++;
- break;
- }
- case ID_REMOVE:
- if(selected) pl->remove_track(pl, selected);
- break;
- case ID_ADDFILE:
- {
- if(guiIntfStruct.StreamType == STREAMTYPE_DVD ||
- guiIntfStruct.StreamType == STREAMTYPE_DVDNAV) return 0;
- display_openfilewindow(gui, 1);
- break;
- }
- case ID_ADDURL:
- {
- if(guiIntfStruct.StreamType == STREAMTYPE_DVD ||
- guiIntfStruct.StreamType == STREAMTYPE_DVDNAV) return 0;
- display_openurlwindow(gui, 1);
- break;
- }
- case ID_CLEAR:
- {
- if(!gui->playlist->trackcount) return 0;
- gui->playlist->clear_playlist(gui->playlist);
- break;
- }
- case ID_PLAYLISTLOAD:
- {
- if(guiIntfStruct.StreamType == STREAMTYPE_DVD ||
- guiIntfStruct.StreamType == STREAMTYPE_DVDNAV) return 0;
- display_loadplaylistwindow(gui);
- break;
- }
- case ID_PLAYLISTSAVE:
- {
- /* no point saving an empty playlist */
- if(!gui->playlist->trackcount ||
- guiIntfStruct.StreamType == STREAMTYPE_DVD ||
- guiIntfStruct.StreamType == STREAMTYPE_DVDNAV)
- return 0;
- display_saveplaylistwindow(gui);
- break;
- }
- }
- updatetracklist(hwnd);
- if(selected < 1) selected = 1;
- else if(selected>pl->trackcount) selected = pl->trackcount;
- SendDlgItemMessage(hwnd, ID_TRACKLIST, LB_SETCURSEL, selected - 1, 0);
- return 0;
- }
- case WM_DROPFILES:
- {
- char file[MAX_PATH];
- int filecount = DragQueryFile((HDROP) wParam, -1, file, MAX_PATH);
- int i;
- for (i=0; i<filecount; i++)
- {
- DragQueryFile((HDROP) wParam, i, file, MAX_PATH);
- if(!parse_filename(file, playtree, mconfig, 0))
- pl->add_track(pl, file, NULL, NULL, 0);
- }
- DragFinish((HDROP) wParam);
- updatetracklist(hwnd);
- }
- break;
- }
- return DefWindowProc(hwnd, iMsg, wParam, lParam);
-}
-
-void update_playlistwindow(void)
-{
- HWND hWnd = FindWindow(NULL, "MPlayer Playlist");
- if (hWnd) updatetracklist(hWnd);
-}
-
-void display_playlistwindow(gui_t *gui)
-{
- HWND hWnd = FindWindow(NULL, "MPlayer Playlist");
- HINSTANCE hInstance = GetModuleHandle(NULL);
- WNDCLASS wc;
- int x, y;
-
- if (hWnd)
- {
- SendMessage(hWnd, WM_CLOSE, 0, 0);
- return;
- }
-
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = PlayListWndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hCursor = LoadCursor(NULL,IDC_ARROW);
- wc.hIcon = gui->icon;
- wc.hbrBackground = SOLID_GREY2;
- wc.lpszClassName = "MPlayer - Playlist";
- wc.lpszMenuName = NULL;
- RegisterClass(&wc);
- create_playlistmenu(gui);
- x = (GetSystemMetrics(SM_CXSCREEN) / 2) - (400 / 2); /* Erik: center popup window on screen */
- y = (GetSystemMetrics(SM_CYSCREEN) / 2) - (254 / 2);
- hWnd = CreateWindow("MPlayer - Playlist",
- "MPlayer Playlist",
- WS_POPUPWINDOW | WS_CAPTION | WS_MINIMIZEBOX,
- x,
- y,
- 400,
- 254,
- NULL,
- NULL,
- hInstance,
- NULL);
- SetWindowLongPtr(hWnd, GWLP_USERDATA, (DWORD)gui);
- updatetracklist(hWnd);
- DragAcceptFiles(hWnd,TRUE);
- ShowWindow(hWnd, SW_SHOW);
- UpdateWindow(hWnd);
-}
-
-static LRESULT CALLBACK SkinBrowserWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
-{
- static HWND listbox;
- static char skinspath[MAX_PATH];
- gui_t* gui = (gui_t*) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- switch (iMsg)
- {
- case WM_CREATE:
- {
- HANDLE skinHandle = INVALID_HANDLE_VALUE;
- WIN32_FIND_DATA finddata;
-
- listbox = CreateWindow("listbox", NULL,
- WS_CHILD | WS_VISIBLE | LBS_NOTIFY | LBS_NOINTEGRALHEIGHT |
- LBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP,
- 4, 5, 166, 60, hwnd,
- (HMENU) ID_DIR,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(listbox, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
-
- /* This opens the skins directory, lists the directory names, and adds them to the listbox */
- sprintf(skinspath, "%s/*.", get_path("skins"));
-
- skinHandle = FindFirstFile(skinspath, &finddata);
- if (skinHandle != INVALID_HANDLE_VALUE)
- {
- do
- {
- if (finddata.cFileName[0] == '.') continue;
- /* populate the listbox */
- capitalize(finddata.cFileName);
- SendDlgItemMessage(hwnd, ID_DIR, LB_ADDSTRING, 0, (LPARAM) finddata.cFileName);
- } while (FindNextFile(skinHandle, &finddata));
- FindClose(skinHandle);
- }
- else
- mp_msg(MSGT_GPLAYER, MSGL_FATAL, "Error opening %s\n", get_path("skins"));
- break;
- }
- case WM_COMMAND:
- {
- if ((HWND) lParam == listbox)
- {
- if(HIWORD(wParam) == LBN_DBLCLK)
- {
- int index = SendMessage(listbox, LB_GETCURSEL, 0, 0);
- int len = SendMessage(listbox, LB_GETTEXTLEN, index, 0);
- if (len)
- {
- if (guiIntfStruct.Playing) guiGetEvent(guiCEvent, (void *) guiSetStop);
- if (skinName) free(skinName);
- skinName = (char *) malloc(len+1);
- SendMessage(listbox, LB_GETTEXT, (WPARAM) index, (LPARAM) skinName);
- /* fill out the full pathname to the skin */
- strcpy(skinspath, get_path("skins"));
- strcat(skinspath, "\\");
- strcat(skinspath, skinName);
- ShowWindow(hwnd, SW_HIDE);
- Shell_NotifyIcon(NIM_DELETE, &nid);
- destroy_window(gui);
- create_window(gui, skinspath);
- create_subwindow(gui, skinspath);
- SendMessage(hwnd, WM_CLOSE, 0, 0); /* Avoid crashing when switching skin */
- }
- }
- }
- }
- return 0;
- }
- return DefWindowProc(hwnd, iMsg, wParam, lParam);
-}
-
-void display_skinbrowser(gui_t* gui)
-{
- HWND hWnd = FindWindow(NULL, "Skin Browser");
- HINSTANCE hInstance = GetModuleHandle(NULL);
- WNDCLASS wc;
- int x, y;
-
- if (hWnd)
- {
- SendMessage(hWnd, WM_CLOSE, 0, 0);
- return;
- }
-
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = SkinBrowserWndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hIcon = gui->icon;
- wc.hbrBackground = SOLID_GREY2;
- wc.lpszClassName = "Skin Browser";
- wc.lpszMenuName = NULL;
- RegisterClass(&wc);
- x = (GetSystemMetrics(SM_CXSCREEN) / 2) - (180 / 2);
- y = (GetSystemMetrics(SM_CYSCREEN) / 2) - (102 / 2);
- hWnd = CreateWindow("Skin Browser",
- "Skin Browser",
- WS_POPUPWINDOW |WS_CAPTION,
- x,
- y,
- 180,
- 102,
- NULL,
- NULL,
- hInstance,
- NULL);
- SetWindowLongPtr(hWnd, GWLP_USERDATA, (DWORD) gui);
- ShowWindow(hWnd, SW_SHOW);
- UpdateWindow(hWnd);
-}
-
-#ifdef CONFIG_DVDREAD
-static LRESULT CALLBACK TitleChapterWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
-{
- static HWND title;
- static HWND chapter;
- HWND wdg;
- int i=0, j=0;
- char titles[MAX_PATH] = "";
- char chapters[MAX_PATH] = "";
- gui_t *gui = (gui_t *) GetWindowLongPtr(hwnd, GWLP_USERDATA);
- switch (iMsg)
- {
- case WM_CREATE:
- wdg = CreateWindow("button", "Ok",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 4, 43, 80, 25, hwnd,
- (HMENU) ID_OK,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
-
- wdg = CreateWindow("button", "Cancel",
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
- 90, 43, 80, 25, hwnd,
- (HMENU) ID_CANCEL,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(wdg, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
-
- title = CreateWindow("combobox", NULL,
- CBS_DROPDOWNLIST | CB_SHOWDROPDOWN | CBS_NOINTEGRALHEIGHT | CBS_HASSTRINGS |
- WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP,
- 4, 10, 80, 160, hwnd,
- (HMENU) ID_TITLESEL,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
-
- SendMessage(title, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
-
- chapter = CreateWindow("combobox", NULL,
- CBS_DROPDOWNLIST | CB_SHOWDROPDOWN | CBS_NOINTEGRALHEIGHT | CBS_HASSTRINGS |
- WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP,
- 90, 10, 80, 160, hwnd,
- (HMENU) ID_CHAPTERSEL,
- ((LPCREATESTRUCT) lParam) -> hInstance,
- NULL);
- SendMessage(chapter, WM_SETFONT, (WPARAM) GetStockObject(DEFAULT_GUI_FONT), 0);
-
- for (i=0; i<guiIntfStruct.DVD.titles; i++)
- {
- /* we have to reverse the order here because of the way CB_INSERTSTRING adds items */
- sprintf(&titles[i], "%d", guiIntfStruct.DVD.titles - i);
- SendDlgItemMessage(hwnd, ID_TITLESEL, CB_INSERTSTRING, 0, (LPARAM) &titles[i]);
- }
- SendDlgItemMessage(hwnd, ID_TITLESEL, CB_SETCURSEL, dvd_title, 0);
-
- for (j=0; j<guiIntfStruct.DVD.chapters; j++)
- {
- sprintf(&chapters[j], "%d", guiIntfStruct.DVD.chapters - j);
- SendDlgItemMessage(hwnd, ID_CHAPTERSEL, CB_INSERTSTRING, 0, (LPARAM) &chapters[j]);
- }
- SendDlgItemMessage(hwnd, ID_CHAPTERSEL, CB_SETCURSEL, dvd_chapter, 0);
-
- break;
- case WM_COMMAND:
- {
- switch (LOWORD(wParam))
- {
- case ID_CANCEL:
- DestroyWindow(hwnd);
- return 0;
- case ID_OK:
- {
- guiIntfStruct.DVD.current_title = SendMessage(title, CB_GETCURSEL, 0, 0) + 1;
- guiIntfStruct.DVD.current_chapter = SendMessage(chapter, CB_GETCURSEL, 0, 0) + 1;
-
- if((guiIntfStruct.DVD.current_title != 0 || guiIntfStruct.DVD.current_chapter != 0))
- {
- gui->startplay(gui);
- DestroyWindow(hwnd);
- }
- }
- break;
- }
- }
- return 0;
- }
- return DefWindowProc(hwnd, iMsg, wParam, lParam);
-}
-
-void display_chapterselwindow(gui_t *gui)
-{
- HWND hWnd;
- HINSTANCE hInstance = GetModuleHandle(NULL);
- WNDCLASS wc;
- int x, y;
-
- if (guiIntfStruct.StreamType != STREAMTYPE_DVD) return;
- if (FindWindow(NULL, "Select Title/Chapter...")) return;
-
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = TitleChapterWndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hCursor = LoadCursor(NULL,IDC_ARROW);
- wc.hIcon = gui->icon;
- wc.hbrBackground = SOLID_GREY2;
- wc.lpszClassName = "Select Title/Chapter...";
- wc.lpszMenuName = NULL;
- RegisterClass(&wc);
- x = (GetSystemMetrics(SM_CXSCREEN) / 2) - (180 / 2);
- y = (GetSystemMetrics(SM_CYSCREEN) / 2) - (100 / 2);
- hWnd = CreateWindow("Select Title/Chapter...",
- "Select Title/Chapter...",
- WS_POPUPWINDOW | WS_CAPTION,
- x,
- y,
- 180,
- 100,
- NULL,
- NULL,
- hInstance,
- NULL);
- SetWindowLongPtr(hWnd, GWLP_USERDATA, (DWORD) gui);
- ShowWindow(hWnd, SW_SHOW);
- UpdateWindow(hWnd);
-}
-#endif
-
-static LRESULT CALLBACK EqWndProc(HWND hwnd, UINT iMsg, WPARAM wParam,