mirror of
https://github.com/mpv-player/mpv
synced 2024-12-28 01:52:19 +00:00
8782354e6d
This was in sub/, because the code used to be specific to subtitles. It was extended to automatically load external audio files too, and moving the file and renaming it was long overdue.
79 lines
2.5 KiB
C
79 lines
2.5 KiB
C
/*
|
|
* This file is part of mpv.
|
|
*
|
|
* mpv 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.
|
|
*
|
|
* mpv 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 mpv. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "event.h"
|
|
#include "input.h"
|
|
#include "common/msg.h"
|
|
#include "player/external_files.h"
|
|
|
|
void mp_event_drop_files(struct input_ctx *ictx, int num_files, char **files,
|
|
enum mp_dnd_action action)
|
|
{
|
|
bool all_sub = true;
|
|
for (int i = 0; i < num_files; i++)
|
|
all_sub &= mp_might_be_subtitle_file(files[i]);
|
|
|
|
if (all_sub) {
|
|
for (int i = 0; i < num_files; i++) {
|
|
const char *cmd[] = {
|
|
"osd-auto",
|
|
"sub_add",
|
|
files[i],
|
|
NULL
|
|
};
|
|
mp_input_run_cmd(ictx, cmd);
|
|
}
|
|
} else {
|
|
for (int i = 0; i < num_files; i++) {
|
|
const char *cmd[] = {
|
|
"osd-auto",
|
|
"loadfile",
|
|
files[i],
|
|
/* Either start playing the dropped files right away
|
|
or add them to the end of the current playlist */
|
|
(i == 0 && action == DND_REPLACE) ? "replace" : "append-play",
|
|
NULL
|
|
};
|
|
mp_input_run_cmd(ictx, cmd);
|
|
}
|
|
}
|
|
}
|
|
|
|
int mp_event_drop_mime_data(struct input_ctx *ictx, const char *mime_type,
|
|
bstr data, enum mp_dnd_action action)
|
|
{
|
|
// X11 and Wayland file list format.
|
|
if (strcmp(mime_type, "text/uri-list") == 0) {
|
|
void *tmp = talloc_new(NULL);
|
|
int num_files = 0;
|
|
char **files = NULL;
|
|
while (data.len) {
|
|
bstr line = bstr_getline(data, &data);
|
|
line = bstr_strip_linebreaks(line);
|
|
if (bstr_startswith0(line, "#"))
|
|
continue;
|
|
char *s = bstrto0(tmp, line);
|
|
MP_TARRAY_APPEND(tmp, files, num_files, s);
|
|
}
|
|
mp_event_drop_files(ictx, num_files, files, action);
|
|
talloc_free(tmp);
|
|
return num_files > 0;
|
|
} else {
|
|
return -1;
|
|
}
|
|
}
|