+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", "tak", "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;" \
+ "*.tak;" \
+ "*.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