vlc_interface.h 5.96 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 the VideoLAN team
7
 * $Id$
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
 *****************************************************************************/

26

gbazin's avatar
   
gbazin committed
27
28
typedef struct intf_dialog_args_t intf_dialog_args_t;

zorglub's avatar
zorglub committed
29
30
/**
 * \file
zorglub's avatar
zorglub committed
31
32
 * This file contains structures and function prototypes for
 * interface management in vlc
zorglub's avatar
zorglub committed
33
34
35
 */


36
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
37
 * intf_thread_t: describe an interface thread
38
 *****************************************************************************
gbazin's avatar
   
gbazin committed
39
 * This struct describes all interface-specific data of the main (interface)
Michel Kaempf's avatar
Michel Kaempf committed
40
 * thread.
41
 *****************************************************************************/
zorglub's avatar
zorglub committed
42
43
44
45
46
47

/**
 * \defgroup vlc_interface Interface
 * These functions and structures are for interface management
 * @{
 */
48
struct intf_thread_t
Michel Kaempf's avatar
Michel Kaempf committed
49
{
50
51
52
53
    VLC_COMMON_MEMBERS

    /* Thread properties and locks */
    vlc_bool_t          b_block;
54
    vlc_bool_t          b_play;
Michel Kaempf's avatar
Michel Kaempf committed
55

56
    /* Specific interfaces */
gbazin's avatar
   
gbazin committed
57
58
    intf_console_t *    p_console;                               /** console */
    intf_sys_t *        p_sys;                          /** system interface */
59

zorglub's avatar
zorglub committed
60
    /** Interface module */
61
    module_t *   p_module;
zorglub's avatar
zorglub committed
62
    void      ( *pf_run )    ( intf_thread_t * ); /** Run function */
63

zorglub's avatar
zorglub committed
64
    /** Specific for dialogs providers */
gbazin's avatar
   
gbazin committed
65
66
    void ( *pf_show_dialog ) ( intf_thread_t *, int, int,
                               intf_dialog_args_t * );
gbazin's avatar
   
gbazin committed
67

68
    /** Interaction stuff */
69
    vlc_bool_t b_interaction;
70

gbazin's avatar
gbazin committed
71
    /** Video window callbacks */
72
73
    void * ( *pf_request_window ) ( intf_thread_t *, vout_thread_t *,
                                    int *, int *,
gbazin's avatar
gbazin committed
74
75
                                    unsigned int *, unsigned int * );
    void   ( *pf_release_window ) ( intf_thread_t *, void * );
76
    int    ( *pf_control_window ) ( intf_thread_t *, void *, int, va_list );
gbazin's avatar
gbazin committed
77

Sam Hocevar's avatar
   
Sam Hocevar committed
78
    /* XXX: new message passing stuff will go here */
79
80
81
    vlc_mutex_t  change_lock;
    vlc_bool_t   b_menu_change;
    vlc_bool_t   b_menu;
gbazin's avatar
   
gbazin committed
82
83
84

    /* Provides the ability to switch an interface on the fly */
    char *psz_switch_intf;
85
};
Sam Hocevar's avatar
   
Sam Hocevar committed
86

gbazin's avatar
   
gbazin committed
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*****************************************************************************
 * 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;

    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;
};

109
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
110
 * Prototypes
111
 *****************************************************************************/
112
#define intf_Create(a,b) __intf_Create(VLC_OBJECT(a),b)
113
VLC_EXPORT( intf_thread_t *, __intf_Create,     ( vlc_object_t *, const char * ) );
Sam Hocevar's avatar
Sam Hocevar committed
114
VLC_EXPORT( int,               intf_RunThread,  ( intf_thread_t * ) );
115
116
VLC_EXPORT( void,              intf_StopThread, ( intf_thread_t * ) );
VLC_EXPORT( void,              intf_Destroy,    ( intf_thread_t * ) );
Vincent Seguin's avatar
Vincent Seguin committed
117

zorglub's avatar
zorglub committed
118
119
/*@}*/

gbazin's avatar
   
gbazin committed
120
121
122
/*****************************************************************************
 * Macros
 *****************************************************************************/
123
#if defined( WIN32 ) && !defined( UNDER_CE )
gbazin's avatar
   
gbazin committed
124
#    define CONSOLE_INTRO_MSG \
125
126
         if( !getenv( "PWD" ) || !getenv( "PS1" ) ) /* detect cygwin shell */ \
         { \
gbazin's avatar
   
gbazin committed
127
128
129
130
         AllocConsole(); \
         freopen( "CONOUT$", "w", stdout ); \
         freopen( "CONOUT$", "w", stderr ); \
         freopen( "CONIN$", "r", stdin ); \
131
         } \
Sam Hocevar's avatar
Sam Hocevar committed
132
         msg_Info( p_intf, COPYRIGHT_MESSAGE ); \
gbazin's avatar
   
gbazin committed
133
134
135
         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 " \
gbazin's avatar
   
gbazin committed
136
                             "\"vlc -I wxwin\"\n") )
gbazin's avatar
   
gbazin committed
137
138
139
#else
#    define CONSOLE_INTRO_MSG
#endif
gbazin's avatar
   
gbazin committed
140
141
142
143
144
145

/* 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
146
147
#define INTF_DIALOG_CAPTURE     5
#define INTF_DIALOG_SAT         6
gbazin's avatar
   
gbazin committed
148

zorglub's avatar
zorglub committed
149
150
#define INTF_DIALOG_DIRECTORY   7

gbazin's avatar
   
gbazin committed
151
#define INTF_DIALOG_STREAMWIZARD 8
152
#define INTF_DIALOG_WIZARD 9
zorglub's avatar
zorglub committed
153

gbazin's avatar
   
gbazin committed
154
155
156
157
#define INTF_DIALOG_PLAYLIST   10
#define INTF_DIALOG_MESSAGES   11
#define INTF_DIALOG_FILEINFO   12
#define INTF_DIALOG_PREFS      13
gbazin's avatar
gbazin committed
158
#define INTF_DIALOG_BOOKMARKS  14
gbazin's avatar
   
gbazin committed
159
160

#define INTF_DIALOG_POPUPMENU  20
gbazin's avatar
   
gbazin committed
161
162
163

#define INTF_DIALOG_FILE_GENERIC 30

164
#define INTF_DIALOG_UPDATEVLC   90
165
#define INTF_DIALOG_VLM   91
166

gbazin's avatar
   
gbazin committed
167
#define INTF_DIALOG_EXIT       99
gbazin's avatar
   
gbazin committed
168
169

/* Useful text messages shared by interfaces */
170
#define INTF_ABOUT_MSG LICENSE_MSG