]> git.sesse.net Git - vlc/blob - modules/gui/wxwidgets/dialogs/vlm/vlm_panel.hpp
update module LIST file.
[vlc] / modules / gui / wxwidgets / dialogs / vlm / vlm_panel.hpp
1 /*****************************************************************************
2  * vlm_panel.hpp: Header for the VLM panel
3  *****************************************************************************
4  * Copyright (C) 1999-2005 the VideoLAN team
5  * $Id$
6  *
7  * Authors: ClĂ©ment Stenac <zorglub@videolan.org>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23
24 #ifndef _WXVLC_VLMPANEL_H_
25 #define _WXVLC_VLMPANEL_H_
26
27 #include "wxwidgets.hpp"
28 #include "dialogs/open.hpp"
29 #include "dialogs/streamout.hpp"
30 #include <wx/notebook.h>
31
32 #include <vector>
33 using namespace std;
34
35
36 class VLMWrapper;
37 class VLMStream;
38 class VLMBroadcastStream;
39 class VLMVODStream;
40
41 namespace wxvlc
42 {
43     class VLMStreamPanel;
44     class VLMBroadcastStreamPanel;
45     class VLMVODStreamPanel;
46
47     /** This class is the panel to add or edit a VLM stream
48      * It can be embedded in the main VLM panel or on a separate frame
49      */
50     class VLMAddStreamPanel : public wxPanel
51     {
52     public:
53         VLMAddStreamPanel( intf_thread_t *, wxWindow *, VLMWrapper *,
54                            vlc_bool_t, vlc_bool_t );
55         virtual ~VLMAddStreamPanel();
56         void Load( VLMStream *);
57     private:
58         void OnCreate( wxCommandEvent& );
59         void OnClear( wxCommandEvent& );
60         void OnChooseInput( wxCommandEvent& );
61         void OnChooseOutput( wxCommandEvent& );
62
63         wxTextCtrl *name_text;
64         wxTextCtrl *input_text;
65         wxTextCtrl *output_text;
66
67         wxCheckBox *enabled_checkbox;
68         wxCheckBox *loop_checkbox;
69
70         intf_thread_t *p_intf;
71         VLMWrapper *p_vlm;
72
73         wxWindow *p_parent;
74
75         vlc_bool_t b_edit, b_broadcast;
76
77         OpenDialog *p_open_dialog;
78         SoutDialog *p_sout_dialog;
79
80         DECLARE_EVENT_TABLE();
81     };
82
83     /**
84      * This class is the main VLM Manager panel
85      */
86     class VLMPanel : public wxPanel
87     {
88     public:
89         VLMPanel( intf_thread_t *p_intf, wxWindow * );
90         virtual ~VLMPanel();
91
92         void Update();
93
94     protected:
95
96     private:
97         VLMWrapper *p_vlm;
98         intf_thread_t *p_intf;
99         wxWindow *p_parent;
100
101         wxFileDialog *p_file_dialog;
102         wxTimer timer;
103         void OnTimer( wxTimerEvent &);
104         void OnClose( wxCommandEvent& );
105         void OnLoad( wxCommandEvent& );
106         void OnSave( wxCommandEvent& );
107
108         /** Notebook */
109         wxNotebook *p_notebook;
110         DECLARE_EVENT_TABLE();
111
112         /* Broadcast stuff */
113         vector<VLMBroadcastStreamPanel *> broadcasts;
114         wxPanel *broadcasts_panel;
115         wxBoxSizer *broadcasts_sizer;
116         wxScrolledWindow *scrolled_broadcasts;
117         wxBoxSizer *scrolled_broadcasts_sizer;
118         wxPanel *BroadcastPanel( wxWindow *);
119         wxPanel *AddBroadcastPanel( wxPanel *);
120         void AppendBroadcast( VLMBroadcastStream *);
121         void RemoveBroadcast( VLMBroadcastStreamPanel *);
122
123         /* VOD stuff */
124         vector<VLMVODStreamPanel *> vods;
125         wxPanel *vods_panel;
126         wxBoxSizer *vods_sizer;
127         wxScrolledWindow *scrolled_vods;
128         wxBoxSizer *scrolled_vods_sizer;
129         wxPanel *VODPanel( wxWindow *);
130         wxPanel *AddVODPanel( wxPanel *);
131         void AppendVOD( VLMVODStream *);
132         void RemoveVOD( VLMVODStreamPanel *);
133
134     };
135
136     /** This class is the standard VLM frame
137      * It only consists of the VLM panel
138      */
139     class VLMFrame: public wxFrame
140     {
141     public:
142         VLMFrame( intf_thread_t *p_intf, wxWindow * );
143         virtual ~VLMFrame();
144
145         void Update();
146         void OnClose( wxCloseEvent& );
147     private:
148         VLMPanel *vlm_panel;
149         DECLARE_EVENT_TABLE();
150     };
151
152     /** This class is the edit dialog for a stream
153      * It only consists of the VLM edit panel
154      */
155     class VLMEditStreamFrame: public wxFrame
156     {
157     public:
158         VLMEditStreamFrame( intf_thread_t *p_intf, wxWindow *,
159                             VLMWrapper * , vlc_bool_t, VLMStream * );
160         virtual ~VLMEditStreamFrame();
161
162     private:
163         VLMAddStreamPanel *vlm_panel;
164     };
165 };
166
167 #endif