From 716870f7ad6803d6266ec327d57524aa780e4148 Mon Sep 17 00:00:00 2001 From: Maxim Biro Date: Sun, 9 Nov 2014 23:29:00 -0500 Subject: [PATCH] Added support of VLC 2.2.x and 3.0.x --- README.md | 28 +- .gitignore => vlc-2.1.x/.gitignore | 0 Makefile => vlc-2.1.x/Makefile | 2 +- vlc-2.1.x/README.md | 30 ++ pause_click.c => vlc-2.1.x/pause_click.c | 1 - vlc-2.2.x+/.gitignore | 29 ++ vlc-2.2.x+/Makefile | 48 +++ vlc-2.2.x+/README.md | 33 +++ vlc-2.2.x+/pause_click.c | 87 ++++++ vlc-2.2.x+/vlc_interface.h | 363 +++++++++++++++++++++++ 10 files changed, 594 insertions(+), 27 deletions(-) rename .gitignore => vlc-2.1.x/.gitignore (100%) rename Makefile => vlc-2.1.x/Makefile (95%) create mode 100644 vlc-2.1.x/README.md rename pause_click.c => vlc-2.1.x/pause_click.c (98%) create mode 100644 vlc-2.2.x+/.gitignore create mode 100644 vlc-2.2.x+/Makefile create mode 100644 vlc-2.2.x+/README.md create mode 100644 vlc-2.2.x+/pause_click.c create mode 100644 vlc-2.2.x+/vlc_interface.h diff --git a/README.md b/README.md index a6eb792..ca8440c 100644 --- a/README.md +++ b/README.md @@ -2,30 +2,8 @@ This plugin allows you to pause/play a video by clicking on the video image. ## Supported versions of VLC -Tested to work on VLC 2.1.5, so supposedly should work on 2.1.x versions. +2.2.x and 3.0.x (see [`vlc-2.2.x+/`](vlc-2.2.x+/) directory). -Doesn't work on VLC 3.x because of API changes. +2.1.x (see [`vlc-2.1.x/`](vlc-2.1.x/) directory). -## Install - -### Debian -Get required libraries and tools: -```bash -sudo apt-get install build-essential pkg-config libvlccore-dev -``` - -Build and install: -```bash -make -sudo make install -``` - -### Windows -If you are using 32-bit VLC, simply extract [this archive](https://github.com/nurupo/vlc-pause-click-plugin/releases/download/0.1.0/windows-i686.zip) at `{VLC}/plugins/video_filter/` - -## Usage -1. Go into advanced preferences: Tools -> Preferences -> Show settings -> All -2. Enable/Disable the plugin with a checkbox: (in advanced preferences) Video -> Filters -> Pause/Play video on mouse click -3. Restart VLC -4. Play a video -5. Click on video picture to pause/play the video +Versions lower than 2.1.0 are not supported, though you might want to take a look at [this](https://github.com/3demax/vlc-clickpause) lua extension. diff --git a/.gitignore b/vlc-2.1.x/.gitignore similarity index 100% rename from .gitignore rename to vlc-2.1.x/.gitignore diff --git a/Makefile b/vlc-2.1.x/Makefile similarity index 95% rename from Makefile rename to vlc-2.1.x/Makefile index ae1b72b..ca987e0 100644 --- a/Makefile +++ b/vlc-2.1.x/Makefile @@ -34,7 +34,7 @@ uninstall: rm -f $(plugindir)/video_filter/libpause_click_plugin.so clean: - rm -f -- libpause_click_plugin.so *.o + rm -f -- libpause_click_plugin.so pause_click.o mostlyclean: clean diff --git a/vlc-2.1.x/README.md b/vlc-2.1.x/README.md new file mode 100644 index 0000000..b130d57 --- /dev/null +++ b/vlc-2.1.x/README.md @@ -0,0 +1,30 @@ +# Pause Click plugin for VLC +This plugin allows you to pause/play a video by clicking on the video image. + +## Supported versions of VLC +Tested to work on VLC 2.1.5, so supposedly should work on 2.1.x. + +## Install + +### Windows +To be added soon. + +### Debian +Get required libraries and tools: +```bash +sudo apt-get install build-essential pkg-config libvlccore-dev +``` + +Build and install: +```bash +make +sudo make install +``` + +## Usage +1. Restart VLC after installing the plugin +2. Go into advanced preferences: Tools -> Preferences -> Show settings -> All +3. Enable/Disable the plugin with a checkbox: (in advanced preferences) Video -> Filters -> Pause/Play video on mouse click +4. Restart VLC +5. Play a video +6. Click on video picture to pause/play the video diff --git a/pause_click.c b/vlc-2.1.x/pause_click.c similarity index 98% rename from pause_click.c rename to vlc-2.1.x/pause_click.c index 8c24412..2e48484 100644 --- a/pause_click.c +++ b/vlc-2.1.x/pause_click.c @@ -38,7 +38,6 @@ vlc_module_begin() set_description(N_("Pause/Play video on mouse click")) set_shortname(N_("Pause click")) set_capability("video filter2", 0) - // there might be a better place for it set_category(CAT_VIDEO) set_subcategory(SUBCAT_VIDEO_VFILTER) set_callbacks(Open, NULL) diff --git a/vlc-2.2.x+/.gitignore b/vlc-2.2.x+/.gitignore new file mode 100644 index 0000000..edf6645 --- /dev/null +++ b/vlc-2.2.x+/.gitignore @@ -0,0 +1,29 @@ +# Object files +*.o +*.ko +*.obj +*.elf + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex diff --git a/vlc-2.2.x+/Makefile b/vlc-2.2.x+/Makefile new file mode 100644 index 0000000..ca987e0 --- /dev/null +++ b/vlc-2.2.x+/Makefile @@ -0,0 +1,48 @@ +PREFIX = /usr +LD = ld +CC = cc +INSTALL = install +CFLAGS = -g -O2 -Wall -Wextra +LDFLAGS = +VLC_PLUGIN_CFLAGS := $(shell pkg-config --cflags vlc-plugin) +VLC_PLUGIN_LIBS := $(shell pkg-config --libs vlc-plugin) + +libdir = $(PREFIX)/lib +plugindir = $(libdir)/vlc/plugins + +override CC += -std=gnu99 +override CPPFLAGS += -DPIC -I. -Isrc +override CFLAGS += -fPIC +override LDFLAGS += -Wl,-no-undefined,-z,defs + +override CPPFLAGS += -DMODULE_STRING=\"pause_click\" +override CFLAGS += $(VLC_PLUGIN_CFLAGS) +override LDFLAGS += $(VLC_PLUGIN_LIBS) + +TARGETS = libpause_click_plugin.so + +all: libpause_click_plugin.so + +install: all + mkdir -p -- $(DESTDIR)$(plugindir)/video_filter + $(INSTALL) --mode 0755 libpause_click_plugin.so $(DESTDIR)$(plugindir)/video_filter + +install-strip: + $(MAKE) install INSTALL="$(INSTALL) -s" + +uninstall: + rm -f $(plugindir)/video_filter/libpause_click_plugin.so + +clean: + rm -f -- libpause_click_plugin.so pause_click.o + +mostlyclean: clean + +SOURCES = pause_click.c + +$(SOURCES:%.c=%.o): %: pause_click.c + +libpause_click_plugin.so: $(SOURCES:%.c=%.o) + $(CC) $(LDFLAGS) -shared -o $@ $^ + +.PHONY: all install install-strip uninstall clean mostlyclean diff --git a/vlc-2.2.x+/README.md b/vlc-2.2.x+/README.md new file mode 100644 index 0000000..cbc1a2c --- /dev/null +++ b/vlc-2.2.x+/README.md @@ -0,0 +1,33 @@ +# Pause Click plugin for VLC +This plugin allows you to pause/play a video by clicking on the video image. + +## Supported versions of VLC +Tested to work on VLC 2.2.0 and 3.0.0, so supposedly should work on 2.2.x and 3.0.x versions. + +## Install + +### Windows +To be added soon. + +### Debian +Get required libraries and tools: +```bash +sudo apt-get install build-essential pkg-config libvlccore-dev +``` + +Build and install: +```bash +make +sudo make install +``` + +Note: because of API change in VLC 2.2.0 this build requires `vlc_interface.h`, which is not present in libvlccore-dev package since it's not considered to be a public header by VLC build system. `vlc_interface.h` that is present here is from the current master branch of VLC (3.0.0). It's highly unlikely, but if the plugin doesn't work, you might need to get `vlc_interface.h` appropriate for your VLC version out of the VLC source tree. + +## Usage +1. Restart VLC after installing the plugin +2. Go into advanced preferences: Tools -> Preferences -> Show settings -> All +3. Enable/Disable the plugin with a checkbox: (in advanced preferences) Video -> Filters -> Pause/Play video on mouse click +4. Enable/Disable the plugin with a checkbox: (in advanced preferences) Interface -> Control Interfaces -> Pause/Play video on mouse click +5. Restart VLC +6. Play a video +7. Click on video picture to pause/play the video diff --git a/vlc-2.2.x+/pause_click.c b/vlc-2.2.x+/pause_click.c new file mode 100644 index 0000000..dff53cf --- /dev/null +++ b/vlc-2.2.x+/pause_click.c @@ -0,0 +1,87 @@ +/***************************************************************************** + * pause_click.c : A filter that allows to pause/play a video by a mouse click + ***************************************************************************** + * Copyright (C) 2014 Maxim Biro + * + * Authors: Maxim Biro + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define N_(str) (str) +#endif + +#include +#include +#include +#include +#include +#include + +int OpenFilter(vlc_object_t *); +int OpenInterface(vlc_object_t *); + +intf_thread_t *p_intf = NULL; + +vlc_module_begin() + set_description("Pause/Play video on mouse click") + set_shortname("Pause-on-click") + set_capability("video filter2", 0) + set_category(CAT_VIDEO) + set_subcategory(SUBCAT_VIDEO_VFILTER) + set_callbacks(OpenFilter, NULL) + add_submodule() + set_capability("interface", 0) + set_category(CAT_INTERFACE) + set_subcategory(SUBCAT_INTERFACE_CONTROL) + set_callbacks(OpenInterface, NULL) +vlc_module_end() + +int mouse(filter_t *p_filter, vlc_mouse_t *p_mouse_out, const vlc_mouse_t *p_mouse_old, const vlc_mouse_t *p_mouse_new) +{ + if (p_intf != NULL && vlc_mouse_HasPressed(p_mouse_old, p_mouse_new, MOUSE_BUTTON_LEFT)) { + playlist_t* p_playlist = pl_Get(p_intf); + playlist_Control(p_playlist, (playlist_Status(p_playlist) == PLAYLIST_RUNNING ? PLAYLIST_PAUSE : PLAYLIST_PLAY), 0); + } + + // don't propagate any mouse change + return VLC_EGENERIC; +} + +picture_t *filter(filter_t *p_filter, picture_t *p_pic_in) +{ + // don't alter picture + return p_pic_in; +} + +int OpenFilter(vlc_object_t *p_this) +{ + filter_t *p_filter = (filter_t *)p_this; + + p_filter->pf_video_filter = filter; + p_filter->pf_video_mouse = mouse; + + return VLC_SUCCESS; +} + +int OpenInterface(vlc_object_t *p_this) +{ + p_intf = (intf_thread_t*) p_this; + + return VLC_SUCCESS; +} diff --git a/vlc-2.2.x+/vlc_interface.h b/vlc-2.2.x+/vlc_interface.h new file mode 100644 index 0000000..eb7bb63 --- /dev/null +++ b/vlc-2.2.x+/vlc_interface.h @@ -0,0 +1,363 @@ +/***************************************************************************** + * vlc_interface.h: interface access for other threads + * This library provides basic functions for threads to interact with user + * interface, such as message output. + ***************************************************************************** + * Copyright (C) 1999, 2000 VLC authors and VideoLAN + * $Id: b10e37424551b50ccccf07ede8806d85cdc64dab $ + * + * Authors: Vincent Seguin + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * (at your option) any later version. + * + * This program 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +#ifndef VLC_INTF_H_ +#define VLC_INTF_H_ + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct intf_dialog_args_t intf_dialog_args_t; + +/** + * \file + * This file contains structures and function prototypes for + * interface management in vlc + */ + +/** + * \defgroup vlc_interface Interface + * These functions and structures are for interface management + * @{ + */ + +typedef struct intf_sys_t intf_sys_t; + +/** Describe all interface-specific data of the interface thread */ +typedef struct intf_thread_t +{ + VLC_COMMON_MEMBERS + + struct intf_thread_t *p_next; /** LibVLC interfaces book keeping */ + + /* Specific interfaces */ + intf_sys_t * p_sys; /** system interface */ + + /** Interface module */ + module_t * p_module; + + /** Specific for dialogs providers */ + void ( *pf_show_dialog ) ( struct intf_thread_t *, int, int, + intf_dialog_args_t * ); + + config_chain_t *p_cfg; +} intf_thread_t; + +/** \brief Arguments passed to a dialogs provider + * This describes the arguments passed to the dialogs provider. They are + * mainly used with INTF_DIALOG_FILE_GENERIC. + */ +struct intf_dialog_args_t +{ + intf_thread_t *p_intf; + char *psz_title; + + char **psz_results; + int i_results; + + void (*pf_callback) ( intf_dialog_args_t * ); + void *p_arg; + + /* Specifically for INTF_DIALOG_FILE_GENERIC */ + char *psz_extensions; + bool b_save; + bool b_multiple; + + /* Specific to INTF_DIALOG_INTERACTION */ + struct interaction_dialog_t *p_dialog; +}; + +VLC_API int intf_Create( playlist_t *, const char * ); + +VLC_API void libvlc_Quit( libvlc_int_t * ); + +static inline playlist_t *pl_Get( struct intf_thread_t *intf ) +{ + return (playlist_t *)(intf->p_parent); +} + +/** + * Retrieves the current input thread from the playlist. + * @note The returned object must be released with vlc_object_release(). + */ +#define pl_CurrentInput(intf) (playlist_CurrentInput(pl_Get(intf))) + +/** + * \defgroup vlc_subscription Log messages subscription + * These functions deal with log messages. + * @{ + */ + +/** + * Message logging callback signature. + * \param data data pointer as provided to vlc_msg_SetCallback(). + * \param type message type (VLC_MSG_* values from enum vlc_log_type) + * \param item meta information + * \param fmt format string + * \param args format string arguments + */ +typedef void (*vlc_log_cb) (void *data, int type, const vlc_log_t *item, + const char *fmt, va_list args); + +VLC_API void vlc_LogSet(libvlc_int_t *, vlc_log_cb cb, void *data); + +/*@}*/ + +#if defined( _WIN32 ) && !VLC_WINSTORE_APP +# define CONSOLE_INTRO_MSG \ + if( !getenv( "PWD" ) ) /* detect Cygwin shell or Wine */ \ + { \ + AllocConsole(); \ + freopen( "CONOUT$", "w", stdout ); \ + freopen( "CONOUT$", "w", stderr ); \ + freopen( "CONIN$", "r", stdin ); \ + } \ + msg_Info( p_intf, "VLC media player - %s", VERSION_MESSAGE ); \ + msg_Info( p_intf, "%s", COPYRIGHT_MESSAGE ); \ + msg_Info( p_intf, _("\nWarning: if you cannot access the GUI " \ + "anymore, open a command-line window, go to the " \ + "directory where you installed VLC and run " \ + "\"vlc -I qt\"\n") ) +#else +# define CONSOLE_INTRO_MSG (void)0 +#endif + +/* Interface dialog ids for dialog providers */ +typedef enum vlc_dialog { + INTF_DIALOG_FILE_SIMPLE = 1, + INTF_DIALOG_FILE, + INTF_DIALOG_DISC, + INTF_DIALOG_NET, + INTF_DIALOG_CAPTURE, + INTF_DIALOG_SAT, + INTF_DIALOG_DIRECTORY, + + INTF_DIALOG_STREAMWIZARD, + INTF_DIALOG_WIZARD, + + INTF_DIALOG_PLAYLIST, + INTF_DIALOG_MESSAGES, + INTF_DIALOG_FILEINFO, + INTF_DIALOG_PREFS, + INTF_DIALOG_BOOKMARKS, + INTF_DIALOG_EXTENDED, + + INTF_DIALOG_POPUPMENU = 20, + INTF_DIALOG_AUDIOPOPUPMENU, + INTF_DIALOG_VIDEOPOPUPMENU, + INTF_DIALOG_MISCPOPUPMENU, + + INTF_DIALOG_FILE_GENERIC = 30, + INTF_DIALOG_INTERACTION = 50, + INTF_DIALOG_SENDKEY = 51, + + INTF_DIALOG_UPDATEVLC = 90, + INTF_DIALOG_VLM, + + INTF_DIALOG_EXIT = 99 +} vlc_dialog_t; + +/* Useful text messages shared by interfaces */ +#define INTF_ABOUT_MSG LICENSE_MSG + +#define EXTENSIONS_AUDIO_CSV "3ga", "669", "a52", "aac", "ac3", "adt", "adts", "aif", "aifc", "aiff", \ + "amr", "aob", "ape", "au", "awb", "caf", "dts", "flac", "it", "kar", \ + "m4a", "m4b", "m4p", "m5p", "mka", "mlp", "mod", "mpa", "mp1", "mp2", "mp3", "mpc", "mpga", "mus", \ + "oga", "ogg", "oma", "opus", "qcp", "ra", "rmi", "s3m", "sid", "spx", "thd", "tta", \ + "voc", "vqf", "w64", "wav", "wma", "wv", "xa", "xm" + +#define EXTENSIONS_VIDEO_CSV "3g2", "3gp", "3gp2", "3gpp", "amv", "asf", "avi", "bik", "divx", "drc", "dv", \ + "evo", "f4v", "flv", "gvi", "gxf", "iso", \ + "m1v", "m2v", "m2t", "m2ts", "m4v", "mkv", "mov",\ + "mp2", "mp2v", "mp4", "mp4v", "mpe", "mpeg", "mpeg1", \ + "mpeg2", "mpeg4", "mpg", "mpv2", "mts", "mtv", "mxf", "mxg", "nsv", "nuv", \ + "ogg", "ogm", "ogv", "ogx", "ps", \ + "rec", "rm", "rmvb", "rpl", "thp", "tod", "ts", "tts", "txd", "vob", "vro", \ + "webm", "wm", "wmv", "wtv", "xesc" + +#define EXTENSIONS_AUDIO \ + "*.3ga;" \ + "*.669;" \ + "*.a52;" \ + "*.aac;" \ + "*.ac3;" \ + "*.adt;" \ + "*.adts;" \ + "*.aif;"\ + "*.aifc;"\ + "*.aiff;"\ + "*.amr;" \ + "*.aob;" \ + "*.ape;" \ + "*.au;" \ + "*.awb;" \ + "*.caf;" \ + "*.dts;" \ + "*.flac;"\ + "*.it;" \ + "*.kar;" \ + "*.m4a;" \ + "*.m4b;" \ + "*.m4p;" \ + "*.m5p;" \ + "*.mid;" \ + "*.mka;" \ + "*.mlp;" \ + "*.mod;" \ + "*.mpa;" \ + "*.mp1;" \ + "*.mp2;" \ + "*.mp3;" \ + "*.mpc;" \ + "*.mpga;" \ + "*.mus;" \ + "*.oga;" \ + "*.ogg;" \ + "*.oma;" \ + "*.opus;" \ + "*.qcp;" \ + "*.ra;" \ + "*.rmi;" \ + "*.s3m;" \ + "*.sid;" \ + "*.spx;" \ + "*.thd;" \ + "*.tta;" \ + "*.voc;" \ + "*.vqf;" \ + "*.w64;" \ + "*.wav;" \ + "*.wma;" \ + "*.wv;" \ + "*.xa;" \ + "*.xm" + +#define EXTENSIONS_VIDEO "*.3g2;*.3gp;*.3gp2;*.3gpp;*.amv;*.asf;*.avi;*.bik;*.bin;*.divx;*.drc;*.dv;*.evo;*.f4v;*.flv;*.gvi;*.gxf;*.iso;*.m1v;*.m2v;" \ + "*.m2t;*.m2ts;*.m4v;*.mkv;*.mov;*.mp2;*.mp2v;*.mp4;*.mp4v;*.mpe;*.mpeg;*.mpeg1;" \ + "*.mpeg2;*.mpeg4;*.mpg;*.mpv2;*.mts;*.mtv;*.mxf;*.mxg;*.nsv;*.nuv;" \ + "*.ogg;*.ogm;*.ogv;*.ogx;*.ps;" \ + "*.rec;*.rm;*.rmvb;*.rpl;*.thp;*.tod;*.ts;*.tts;*.txd;*.vob;*.vro;*.webm;*.wm;*.wmv;*.wtv;*.xesc" + +#define EXTENSIONS_PLAYLIST "*.asx;*.b4s;*.cue;*.ifo;*.m3u;*.m3u8;*.pls;*.ram;*.rar;*.sdp;*.vlc;*.xspf;*.wax;*.wvx;*.zip;*.conf" + +#define EXTENSIONS_MEDIA EXTENSIONS_VIDEO ";" EXTENSIONS_AUDIO ";" \ + EXTENSIONS_PLAYLIST + +#define EXTENSIONS_SUBTITLE "*.cdg;*.idx;*.srt;" \ + "*.sub;*.utf;*.ass;" \ + "*.ssa;*.aqt;" \ + "*.jss;*.psb;" \ + "*.rt;*.smi;*.txt;" \ + "*.smil;*.stl;*.usf;" \ + "*.dks;*.pjs;*.mpl2;*.mks;" \ + "*.vtt" + +/** \defgroup vlc_interaction Interaction + * \ingroup vlc_interface + * Interaction between user and modules + * @{ + */ + +/** + * This structure describes a piece of interaction with the user + */ +typedef struct interaction_dialog_t +{ + int i_type; ///< Type identifier + char *psz_title; ///< Title + char *psz_description; ///< Descriptor string + char *psz_default_button; ///< default button title (~OK) + char *psz_alternate_button;///< alternate button title (~NO) + /// other button title (optional,~Cancel) + char *psz_other_button; + + char *psz_returned[1]; ///< returned responses from the user + + vlc_value_t val; ///< value coming from core for dialogue + int i_timeToGo; ///< time (in sec) until shown progress is finished + bool b_cancelled; ///< was the dialogue cancelled ? + + void * p_private; ///< Private interface data + + int i_status; ///< Dialog status; + int i_action; ///< Action to perform; + int i_flags; ///< Misc flags + int i_return; ///< Return status + + vlc_object_t *p_parent; ///< The vlc object that asked + //for interaction + intf_thread_t *p_interface; + vlc_mutex_t *p_lock; +} interaction_dialog_t; + +/** + * Possible flags . Dialog types + */ +#define DIALOG_GOT_ANSWER 0x01 +#define DIALOG_YES_NO_CANCEL 0x02 +#define DIALOG_LOGIN_PW_OK_CANCEL 0x04 +#define DIALOG_PSZ_INPUT_OK_CANCEL 0x08 +#define DIALOG_BLOCKING_ERROR 0x10 +#define DIALOG_NONBLOCKING_ERROR 0x20 +#define DIALOG_USER_PROGRESS 0x80 +#define DIALOG_INTF_PROGRESS 0x100 + +/** Possible return codes */ +enum +{ + DIALOG_OK_YES, + DIALOG_NO, + DIALOG_CANCELLED +}; + +/** Possible status */ +enum +{ + ANSWERED_DIALOG, ///< Got "answer" + DESTROYED_DIALOG, ///< Interface has destroyed it +}; + +/** Possible actions */ +enum +{ + INTERACT_NEW, + INTERACT_UPDATE, + INTERACT_HIDE, + INTERACT_DESTROY +}; + +#define intf_UserStringInput( a, b, c, d ) (VLC_OBJECT(a),b,c,d, VLC_EGENERIC) +#define interaction_Register( t ) (t, VLC_EGENERIC) +#define interaction_Unregister( t ) (t, VLC_EGENERIC) + + +/** @} */ +/** @} */ + +# ifdef __cplusplus +} +# endif +#endif