X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_dialog.h;h=8d79f05d30795399a41962caefd92fca9379f447;hb=5d1ad8bc46fb54274d481c17b365b7c0442febca;hp=01c164a33a07f22ceba20db44a17f7ac3ba247d2;hpb=cc4e24a8d6164401b7229e56108a3ba5f097f1ef;p=vlc diff --git a/include/vlc_dialog.h b/include/vlc_dialog.h index 01c164a33a..8d79f05d30 100644 --- a/include/vlc_dialog.h +++ b/include/vlc_dialog.h @@ -20,6 +20,7 @@ #ifndef VLC_DIALOG_H_ #define VLC_DIALOG_H_ +# include /** * \file vlc_dialog.h @@ -36,10 +37,83 @@ typedef struct dialog_fatal_t const char *message; } dialog_fatal_t; -VLC_EXPORT( void, dialog_Fatal, (vlc_object_t *, const char *, const char *, ...) ) LIBVLC_FORMAT(3, 4); +VLC_EXPORT( void, dialog_VFatal, (vlc_object_t *, bool, const char *, const char *, va_list) ); + +static inline LIBVLC_FORMAT(3, 4) +void dialog_Fatal (vlc_object_t *obj, const char *title, const char *fmt, ...) +{ + va_list ap; + + va_start (ap, fmt); + dialog_VFatal(obj, false, title, fmt, ap); + va_end (ap); +} #define dialog_Fatal(o, t, ...) \ dialog_Fatal(VLC_OBJECT(o), t, __VA_ARGS__) +static inline LIBVLC_FORMAT(3, 4) +void dialog_FatalWait (vlc_object_t *obj, const char *title, + const char *fmt, ...){ + va_list ap; + + va_start (ap, fmt); + dialog_VFatal(obj, true, title, fmt, ap); + va_end (ap); +} +#define dialog_FatalWait(o, t, ...) \ + dialog_FatalWait(VLC_OBJECT(o), t, __VA_ARGS__) + +/** + * A login dialog. + */ +typedef struct dialog_login_t +{ + const char *title; + const char *message; + char **username; + char **password; +} dialog_login_t; + +VLC_EXPORT( void, dialog_Login, (vlc_object_t *, char **, char **, const char *, const char *, ...) ) LIBVLC_FORMAT (5, 6); +#define dialog_Login(o, u, p, t, ...) \ + dialog_Login(VLC_OBJECT(o), u, p, t, __VA_ARGS__) + +/** + * A question dialog. + */ +typedef struct dialog_question_t +{ + const char *title; + const char *message; + const char *yes; + const char *no; + const char *cancel; + int answer; +} dialog_question_t; + +VLC_EXPORT( int, dialog_Question, (vlc_object_t *, const char *, const char *, const char *, const char *, const char *) ); +#define dialog_Question(o, t, m, y, n, c) \ + dialog_Question(VLC_OBJECT(o), t, m, y, n, c) + +typedef struct dialog_progress_bar_t +{ /* Request-time parameters */ + const char *title; + const char *message; + const char *cancel; + /* Permanent parameters */ + void (*pf_update) (void *, const char *, float); + bool (*pf_check) (void *); + void (*pf_destroy) (void *); + void *p_sys; +} dialog_progress_bar_t; + +VLC_EXPORT( dialog_progress_bar_t *, dialog_ProgressCreate, (vlc_object_t *, const char *, const char *, const char *) LIBVLC_USED ); +#define dialog_ProgressCreate(o, t, m, c) \ + dialog_ProgressCreate(VLC_OBJECT(o), t, m, c) +VLC_EXPORT( void, dialog_ProgressDestroy, (dialog_progress_bar_t *) ); +VLC_EXPORT( void, dialog_ProgressSet, (dialog_progress_bar_t *, const char *, float) ); +VLC_EXPORT( bool, dialog_ProgressCancelled, (dialog_progress_bar_t *) ); + VLC_EXPORT( int, dialog_Register, (vlc_object_t *) ); VLC_EXPORT( int, dialog_Unregister, (vlc_object_t *) ); #define dialog_Register(o) dialog_Register(VLC_OBJECT(o))