vlc_interface.h 6.01 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

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

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


36
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
37
 * intf_thread_t: describe an interface thread
38
 *****************************************************************************
Gildas Bazin's avatar
 
Gildas Bazin committed
39
 * This struct describes all interface-specific data of the main (interface)
Michel Kaempf's avatar
Michel Kaempf committed
40
 * thread.
41
 *****************************************************************************/
Clément Stenac's avatar
Clément Stenac 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 */
Gildas Bazin's avatar
 
Gildas Bazin committed
57 58
    intf_console_t *    p_console;                               /** console */
    intf_sys_t *        p_sys;                          /** system interface */
59

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

Clément Stenac's avatar
Clément Stenac committed
64
    /** Specific for dialogs providers */
Gildas Bazin's avatar
 
Gildas Bazin committed
65 66
    void ( *pf_show_dialog ) ( intf_thread_t *, int, int,
                               intf_dialog_args_t * );
Gildas Bazin's avatar
 
Gildas Bazin committed
67

68
    /** Interaction stuff */
69
    int ( *pf_interact ) ( intf_thread_t *, interaction_dialog_t *, int );
70

Gildas Bazin's avatar
Gildas Bazin committed
71
    /** Video window callbacks */
72 73
    void * ( *pf_request_window ) ( intf_thread_t *, vout_thread_t *,
                                    int *, int *,
Gildas Bazin's avatar
Gildas Bazin 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 );
Gildas Bazin's avatar
Gildas Bazin 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;
Gildas Bazin's avatar
 
Gildas Bazin 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

Gildas Bazin's avatar
 
Gildas Bazin 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

Clément Stenac's avatar
Clément Stenac committed
118 119
/*@}*/

Gildas Bazin's avatar
 
Gildas Bazin committed
120 121 122
/*****************************************************************************
 * Macros
 *****************************************************************************/
123
#if defined( WIN32 ) && !defined( UNDER_CE )
Gildas Bazin's avatar
 
Gildas Bazin committed
124
#    define CONSOLE_INTRO_MSG \
125 126
         if( !getenv( "PWD" ) || !getenv( "PS1" ) ) /* detect cygwin shell */ \
         { \
Gildas Bazin's avatar
 
Gildas Bazin 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 ); \
Gildas Bazin's avatar
 
Gildas Bazin 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 " \
Gildas Bazin's avatar
 
Gildas Bazin committed
136
                             "\"vlc -I wxwin\"\n") )
Gildas Bazin's avatar
 
Gildas Bazin committed
137 138 139
#else
#    define CONSOLE_INTRO_MSG
#endif
Gildas Bazin's avatar
 
Gildas Bazin 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
Gildas Bazin's avatar
 
Gildas Bazin committed
148

Clément Stenac's avatar
Clément Stenac committed
149 150
#define INTF_DIALOG_DIRECTORY   7

Gildas Bazin's avatar
 
Gildas Bazin committed
151
#define INTF_DIALOG_STREAMWIZARD 8
152
#define INTF_DIALOG_WIZARD 9
153

Gildas Bazin's avatar
 
Gildas Bazin 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
Gildas Bazin's avatar
Gildas Bazin committed
158
#define INTF_DIALOG_BOOKMARKS  14
Gildas Bazin's avatar
 
Gildas Bazin committed
159 160

#define INTF_DIALOG_POPUPMENU  20
Gildas Bazin's avatar
 
Gildas Bazin committed
161 162 163

#define INTF_DIALOG_FILE_GENERIC 30

164
#define INTF_DIALOG_UPDATEVLC   90
165
#define INTF_DIALOG_VLM   91
166

Gildas Bazin's avatar
 
Gildas Bazin committed
167
#define INTF_DIALOG_EXIT       99
Gildas Bazin's avatar
 
Gildas Bazin committed
168 169

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