vlc_interface.h 4.9 KB
Newer Older
1
/*****************************************************************************
2
 * vlc_interface.h: interface access for other threads
Michel Kaempf's avatar
Michel Kaempf committed
3 4
 * This library provides basic functions for threads to interact with user
 * interface, such as message output.
5
 *****************************************************************************
6
 * Copyright (C) 1999, 2000 VideoLAN
Gildas Bazin's avatar
 
Gildas Bazin committed
7
 * $Id: vlc_interface.h,v 1.4 2003/07/20 10:38:49 gbazin Exp $
8
 *
Sam Hocevar's avatar
 
Sam Hocevar committed
9
 * Authors: Vincent Seguin <seguin@via.ecp.fr>
10 11 12 13 14
 *
 * This program 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.
15
 *
16 17
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 19
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
20
 *
21 22 23
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
24 25
 *****************************************************************************/

Gildas Bazin's avatar
 
Gildas Bazin committed
26 27
typedef struct intf_dialog_args_t intf_dialog_args_t;

28
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
29
 * intf_thread_t: describe an interface thread
30
 *****************************************************************************
Gildas Bazin's avatar
 
Gildas Bazin committed
31
 * This struct describes all interface-specific data of the main (interface)
Michel Kaempf's avatar
Michel Kaempf committed
32
 * thread.
33
 *****************************************************************************/
34
struct intf_thread_t
Michel Kaempf's avatar
Michel Kaempf committed
35
{
36 37 38 39
    VLC_COMMON_MEMBERS

    /* Thread properties and locks */
    vlc_bool_t          b_block;
Michel Kaempf's avatar
Michel Kaempf committed
40

41
    /* Specific interfaces */
42 43
    intf_console_t *    p_console;                                /* console */
    intf_sys_t *        p_sys;                           /* system interface */
44

45
    /* Interface module */
46 47
    module_t *   p_module;
    void      ( *pf_run )    ( intf_thread_t * );
48

Gildas Bazin's avatar
 
Gildas Bazin committed
49
    /* Specific for dialogs providers */
Gildas Bazin's avatar
 
Gildas Bazin committed
50 51
    void ( *pf_show_dialog ) ( intf_thread_t *, int, int,
                               intf_dialog_args_t * );
Gildas Bazin's avatar
 
Gildas Bazin committed
52

Sam Hocevar's avatar
 
Sam Hocevar committed
53
    /* XXX: new message passing stuff will go here */
54 55 56 57
    vlc_mutex_t  change_lock;
    vlc_bool_t   b_menu_change;
    vlc_bool_t   b_menu;
};
Sam Hocevar's avatar
 
Sam Hocevar committed
58

Gildas Bazin's avatar
 
Gildas Bazin committed
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
/*****************************************************************************
 * intf_dialog_args_t: arguments structure passed to a dialogs provider.
 *****************************************************************************
 * This struct describes the arguments passed to the dialogs provider.
 * For now they are only used with INTF_DIALOG_FILE_GENERIC.
 *****************************************************************************/
struct intf_dialog_args_t
{
    char *psz_title;

    vlc_bool_t  b_blocking;
    vlc_bool_t  b_ready;
    vlc_mutex_t lock;
    vlc_cond_t  wait;

    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;
    vlc_bool_t b_save;
    vlc_bool_t b_multiple;
};

86
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
87
 * Prototypes
88
 *****************************************************************************/
89
#define intf_Create(a,b) __intf_Create(VLC_OBJECT(a),b)
90
VLC_EXPORT( intf_thread_t *, __intf_Create,     ( vlc_object_t *, const char * ) );
Sam Hocevar's avatar
Sam Hocevar committed
91
VLC_EXPORT( int,               intf_RunThread,  ( intf_thread_t * ) );
92 93
VLC_EXPORT( void,              intf_StopThread, ( intf_thread_t * ) );
VLC_EXPORT( void,              intf_Destroy,    ( intf_thread_t * ) );
Vincent Seguin's avatar
Vincent Seguin committed
94

Gildas Bazin's avatar
 
Gildas Bazin committed
95 96 97
/*****************************************************************************
 * Macros
 *****************************************************************************/
98
#if defined( WIN32 ) && !defined( UNDER_CE )
Gildas Bazin's avatar
 
Gildas Bazin committed
99
#    define CONSOLE_INTRO_MSG \
Gildas Bazin's avatar
 
Gildas Bazin committed
100 101 102 103
         AllocConsole(); \
         freopen( "CONOUT$", "w", stdout ); \
         freopen( "CONOUT$", "w", stderr ); \
         freopen( "CONIN$", "r", stdin ); \
Sam Hocevar's avatar
Sam Hocevar committed
104
         msg_Info( p_intf, COPYRIGHT_MESSAGE ); \
Gildas Bazin's avatar
 
Gildas Bazin committed
105 106 107
         msg_Info( p_intf, _("\nWarning: if you can't access the GUI " \
                             "anymore, open a dos command box, go to the " \
                             "directory where you installed VLC and run " \
Gildas Bazin's avatar
 
Gildas Bazin committed
108
                             "\"vlc -I wxwin\"\n") )
Gildas Bazin's avatar
 
Gildas Bazin committed
109 110 111
#else
#    define CONSOLE_INTRO_MSG
#endif
Gildas Bazin's avatar
 
Gildas Bazin committed
112 113 114 115 116 117 118 119 120 121 122 123

/* Interface dialog ids for dialog providers */
#define INTF_DIALOG_FILE_SIMPLE 1
#define INTF_DIALOG_FILE        2
#define INTF_DIALOG_DISC        3
#define INTF_DIALOG_NET         4
#define INTF_DIALOG_SAT         5

#define INTF_DIALOG_PLAYLIST   10
#define INTF_DIALOG_MESSAGES   11
#define INTF_DIALOG_FILEINFO   12
#define INTF_DIALOG_PREFS      13
Gildas Bazin's avatar
 
Gildas Bazin committed
124 125

#define INTF_DIALOG_POPUPMENU  20
Gildas Bazin's avatar
 
Gildas Bazin committed
126 127 128 129

#define INTF_DIALOG_FILE_GENERIC 30

#define INTF_DIALOG_EXIT       99