1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 2003 VideoLAN
5 * $Id: event.h,v 1.13 2003/07/20 20:42:23 ipkiss Exp $
7 * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
8 * Emmanuel Puig <karibu@via.ecp.fr>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111,
24 *****************************************************************************/
27 #ifndef VLC_SKIN_EVENT
28 #define VLC_SKIN_EVENT
30 //--- GENERAL ---------------------------------------------------------------
37 //---------------------------------------------------------------------------
38 // VLC specific messages
39 //---------------------------------------------------------------------------
41 #define MAX_EVENT_SIZE 30
42 #define MAX_PARAM_SIZE 20
43 #define EVENT_MAX_BUFFER_SIZE 20
49 #define VLC_MESSAGE (WM_APP)
50 #define VLC_WINDOW (WM_APP + 1000)
51 #define VLC_CONTROL (WM_APP + 2000)
54 #define VLC_NOTHING (VLC_MESSAGE + 1)
55 #define VLC_SHOW (VLC_MESSAGE + 2)
56 #define VLC_HIDE (VLC_MESSAGE + 3)
58 #define VLC_QUIT (VLC_MESSAGE + 4)
59 #define VLC_OPEN (VLC_MESSAGE + 5)
60 #define VLC_LOAD_SKIN (VLC_MESSAGE + 6)
61 #define VLC_DROP (VLC_MESSAGE + 7)
63 #define VLC_LOG_SHOW (VLC_MESSAGE + 20)
64 #define VLC_PREFS_SHOW (VLC_MESSAGE + 23)
65 #define VLC_INFO_SHOW (VLC_MESSAGE + 24)
67 #define VLC_INTF_REFRESH (VLC_MESSAGE + 30)
68 #define VLC_CHANGE_TRAY (VLC_MESSAGE + 31)
69 #define VLC_CHANGE_TASKBAR (VLC_MESSAGE + 32)
71 #define VLC_FULLSCREEN (VLC_MESSAGE + 40)
74 #define VLC_PLAY (VLC_MESSAGE + 101)
75 #define VLC_STOP (VLC_MESSAGE + 102)
76 #define VLC_PAUSE (VLC_MESSAGE + 103)
77 #define VLC_NEXT (VLC_MESSAGE + 104)
78 #define VLC_PREV (VLC_MESSAGE + 105)
79 #define VLC_STREAMPOS (VLC_MESSAGE + 106)
80 #define VLC_ENDSTREAMPOS (VLC_MESSAGE + 107)
81 #define VLC_TOTALSTREAMPOS (VLC_MESSAGE + 108)
82 #define VLC_STREAM_NAME (VLC_MESSAGE + 109)
83 #define VLC_STREAM_TITLE (VLC_MESSAGE + 110)
84 #define VLC_HELP_TEXT (VLC_MESSAGE + 111)
87 #define VLC_VOLUME_CHANGE (VLC_MESSAGE + 201)
88 #define VLC_VOLUME_MUTE (VLC_MESSAGE + 202)
89 #define VLC_VOLUME_UP (VLC_MESSAGE + 203)
90 #define VLC_VOLUME_DOWN (VLC_MESSAGE + 204)
91 #define VLC_VOLUME_SET (VLC_MESSAGE + 205)
94 #define VLC_PLAYLIST_ADD_FILE (VLC_MESSAGE + 301)
95 #define VLC_TEST_ALL_CLOSED (VLC_MESSAGE + 600)
98 #define WINDOW_MOVE (VLC_WINDOW + 1)
99 #define WINDOW_OPEN (VLC_WINDOW + 2)
100 #define WINDOW_CLOSE (VLC_WINDOW + 3)
101 #define WINDOW_SHOW (VLC_WINDOW + 4)
102 #define WINDOW_HIDE (VLC_WINDOW + 5)
103 #define WINDOW_FADE (VLC_WINDOW + 6)
104 #define WINDOW_LEAVE (VLC_WINDOW + 7)
105 #define WINDOW_REFRESH (VLC_WINDOW + 8)
108 #define CTRL_ENABLED (VLC_CONTROL + 1)
109 #define CTRL_VISIBLE (VLC_CONTROL + 2)
110 #define CTRL_SYNCHRO (VLC_CONTROL + 3)
112 #define CTRL_SET_SLIDER (VLC_CONTROL + 10)
113 #define CTRL_SET_TEXT (VLC_CONTROL + 11)
115 // Control event by ID
116 #define CTRL_ID_VISIBLE (VLC_CONTROL + 100)
117 #define CTRL_ID_ENABLED (VLC_CONTROL + 101)
118 #define CTRL_ID_MOVE (VLC_CONTROL + 102)
120 // Control definition
121 #define CTRL_SLIDER (VLC_CONTROL + 301)
122 #define CTRL_TIME (VLC_CONTROL + 302)
123 #define CTRL_PLAYLIST (VLC_CONTROL + 303)
126 #define PLAYLIST_ID_DEL (VLC_CONTROL + 400)
128 //---------------------------------------------------------------------------
129 struct intf_thread_t;
130 class GenericControl;
136 //---------------------------------------------------------------------------
138 //---------------------------------------------------------------------------
143 unsigned int Message;
146 unsigned int GetMessageType( string desc );
150 intf_thread_t * p_intf;
152 // Transform expr to special boolean :
155 // 2 = change boolean
156 int GetBool( string expr );
160 Event( intf_thread_t *_p_intf, string Desc, string shortcut );
161 Event( intf_thread_t *_p_intf, unsigned int msg, unsigned int par1,
166 void DestructParameters( bool force = false );
168 // General operations on events
169 GenericControl * FindControl( string id );
171 virtual void CreateOSEvent( string para1, string para2,
173 virtual bool IsEqual( Event *evt );
176 virtual bool SendEvent() = 0;
177 void PostTextMessage( string text );
178 void PostSynchroMessage( bool autodelete = false );
181 bool MatchShortcut( int key, int mod );
182 void CreateShortcut();
185 unsigned int GetMessage() { return Message; }
186 unsigned int GetParam1() { return Param1; }
187 long GetParam2() { return Param2; }
190 void SetParam1( unsigned int p1 ) { Param1 = p1; }
191 void SetParam2( unsigned int p2 ) { Param2 = p2; }
193 //---------------------------------------------------------------------------
195 #define ACTION_MATCH_ALL 0
196 #define ACTION_MATCH_FIRST 1
197 #define ACTION_MATCH_ONE 2
199 //---------------------------------------------------------------------------
203 list<Event *> EventList;
204 int GetBool( string expr );
205 intf_thread_t * p_intf;
209 Action::Action( intf_thread_t *_p_intf, string code );
216 bool MatchEvent( Event *evt, int flag = ACTION_MATCH_ALL );
218 //---------------------------------------------------------------------------