Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
84c6ecb2
Commit
84c6ecb2
authored
Aug 19, 2003
by
Mohammed Adnène Trojette
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Video4Linux / PVR / KFIR unified panel
parent
aa5ceed9
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
699 additions
and
24 deletions
+699
-24
modules/gui/wxwindows/open.cpp
modules/gui/wxwindows/open.cpp
+165
-5
modules/gui/wxwindows/v4l.cpp
modules/gui/wxwindows/v4l.cpp
+436
-0
modules/gui/wxwindows/wxwindows.h
modules/gui/wxwindows/wxwindows.h
+98
-19
No files found.
modules/gui/wxwindows/open.cpp
View file @
84c6ecb2
...
...
@@ -2,7 +2,7 @@
* open.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
* $Id: open.cpp,v 1.3
6 2003/08/10 09:22:07 gbazi
n Exp $
* $Id: open.cpp,v 1.3
7 2003/08/19 21:16:09 ad
n Exp $
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
*
...
...
@@ -79,6 +79,11 @@ enum
NetPort1_Event
,
NetPort2_Event
,
NetPort3_Event
,
NetAddr1_Event
,
NetAddr2_Event
,
NetAddr3_Event
,
VideoType_Event
,
VideoDevice_Event
,
VideoChannel_Event
,
V4LSettings_Event
,
SubsFileEnable_Event
,
SubsFileSettings_Event
,
...
...
@@ -97,7 +102,7 @@ BEGIN_EVENT_TABLE(OpenDialog, wxFrame)
EVT_NOTEBOOK_PAGE_CHANGED
(
Notebook_Event
,
OpenDialog
::
OnPageChange
)
EVT_TEXT
(
MRL_Event
,
OpenDialog
::
OnMRLChange
)
EVT_TEXT
(
MRL_Event
,
OpenDialog
::
OnMRLChange
)
/* Events generated by the file panel */
EVT_TEXT
(
FileName_Event
,
OpenDialog
::
OnFilePanelChange
)
...
...
@@ -124,6 +129,12 @@ BEGIN_EVENT_TABLE(OpenDialog, wxFrame)
EVT_TEXT
(
NetAddr2_Event
,
OpenDialog
::
OnNetPanelChange
)
EVT_TEXT
(
NetAddr3_Event
,
OpenDialog
::
OnNetPanelChange
)
/* Events generated by the v4l panel */
EVT_RADIOBOX
(
VideoType_Event
,
OpenDialog
::
OnV4LTypeChange
)
EVT_TEXT
(
VideoDevice_Event
,
OpenDialog
::
OnV4LPanelChange
)
EVT_SPINCTRL
(
VideoChannel_Event
,
OpenDialog
::
OnV4LPanelChange
)
EVT_BUTTON
(
V4LSettings_Event
,
OpenDialog
::
OnV4LSettingsChange
)
/* Events generated by the subtitle file buttons */
EVT_CHECKBOX
(
SubsFileEnable_Event
,
OpenDialog
::
OnSubsFileEnable
)
EVT_BUTTON
(
SubsFileSettings_Event
,
OpenDialog
::
OnSubsFileSettings
)
...
...
@@ -155,6 +166,7 @@ OpenDialog::OpenDialog( intf_thread_t *_p_intf, wxWindow *_p_parent,
p_parent
=
_p_parent
;
SetIcon
(
*
p_intf
->
p_sys
->
p_icon
);
file_dialog
=
NULL
;
v4l_dialog
=
NULL
;
sout_dialog
=
NULL
;
subsfile_dialog
=
NULL
;
demuxdump_dialog
=
NULL
;
...
...
@@ -261,6 +273,9 @@ OpenDialog::OpenDialog( intf_thread_t *_p_intf, wxWindow *_p_parent,
i_access_method
==
SAT_ACCESS
);
#endif
notebook
->
AddPage
(
V4LPanel
(
notebook
),
wxU
(
_
(
"Video For Linux"
)),
i_access_method
==
V4L_ACCESS
);
/* Update Disc panel */
wxCommandEvent
dummy_event
;
OnDiscTypeChange
(
dummy_event
);
...
...
@@ -269,6 +284,10 @@ OpenDialog::OpenDialog( intf_thread_t *_p_intf, wxWindow *_p_parent,
dummy_event
.
SetId
(
NetRadio1_Event
);
OnNetTypeChange
(
dummy_event
);
/* Update v4l panel */
dummy_event
.
SetId
(
VideoType_Event
);
OnV4LTypeChange
(
dummy_event
);
/* Update MRL */
wxNotebookEvent
event
(
wxEVT_NULL
,
0
,
i_access_method
);
OnPageChange
(
event
);
...
...
@@ -298,6 +317,7 @@ OpenDialog::~OpenDialog()
{
/* Clean up */
if
(
file_dialog
)
delete
file_dialog
;
if
(
v4l_dialog
)
delete
v4l_dialog
;
if
(
sout_dialog
)
delete
sout_dialog
;
if
(
subsfile_dialog
)
delete
subsfile_dialog
;
if
(
demuxdump_dialog
)
delete
demuxdump_dialog
;
...
...
@@ -513,6 +533,61 @@ wxPanel *OpenDialog::NetPanel( wxWindow* parent )
return
panel
;
}
wxPanel
*
OpenDialog
::
V4LPanel
(
wxWindow
*
parent
)
{
wxPanel
*
panel
=
new
wxPanel
(
parent
,
-
1
,
wxDefaultPosition
,
wxSize
(
200
,
200
)
);
wxBoxSizer
*
sizer_row
=
new
wxBoxSizer
(
wxVERTICAL
);
wxFlexGridSizer
*
sizer
=
new
wxFlexGridSizer
(
1
,
4
,
20
);
static
const
wxString
video_type_array
[]
=
{
wxU
(
_
(
"WebCam"
)),
wxU
(
_
(
"TV Card"
)),
wxU
(
_
(
"PVR"
)),
wxU
(
_
(
"Kfir"
)),
};
video_type
=
new
wxRadioBox
(
panel
,
VideoType_Event
,
wxU
(
_
(
"Video Device Type"
)),
wxDefaultPosition
,
wxDefaultSize
,
WXSIZEOF
(
video_type_array
),
video_type_array
,
WXSIZEOF
(
video_type_array
),
wxRA_SPECIFY_COLS
);
sizer_row
->
Add
(
video_type
,
0
,
wxEXPAND
|
wxALL
,
5
);
/* Video Options */
wxFlexGridSizer
*
video_sizer
=
new
wxFlexGridSizer
(
4
,
2
,
20
);
wxStaticText
*
label
=
new
wxStaticText
(
panel
,
-
1
,
wxU
(
_
(
"Video Device"
))
);
video_device
=
new
wxTextCtrl
(
panel
,
VideoDevice_Event
,
wxT
(
""
),
wxDefaultPosition
,
wxDefaultSize
,
wxTE_PROCESS_ENTER
);
video_sizer
->
Add
(
label
,
0
,
wxALIGN_LEFT
|
wxALIGN_CENTER_VERTICAL
);
video_sizer
->
Add
(
video_device
,
1
,
wxALIGN_LEFT
|
wxALIGN_CENTER_VERTICAL
);
label
=
new
wxStaticText
(
panel
,
-
1
,
wxU
(
_
(
"Channel"
))
);
video_channel
=
new
wxSpinCtrl
(
panel
,
VideoChannel_Event
);
video_sizer
->
Add
(
label
,
0
,
wxALIGN_LEFT
|
wxALIGN_CENTER_HORIZONTAL
);
video_sizer
->
Add
(
video_channel
,
1
,
wxALIGN_LEFT
|
wxALIGN_CENTER_HORIZONTAL
);
sizer
->
Add
(
video_sizer
,
0
,
wxEXPAND
|
wxALL
,
5
);
wxBoxSizer
*
v4lbutton_sizer
=
new
wxBoxSizer
(
wxHORIZONTAL
);
v4l_button
=
new
wxButton
(
panel
,
V4LSettings_Event
,
wxU
(
_
(
"Advanced Settings..."
))
);
v4lbutton_sizer
->
Add
(
v4l_button
,
0
,
wxALIGN_RIGHT
,
5
);
sizer_row
->
Add
(
sizer
,
0
,
wxEXPAND
|
wxALL
,
5
);
sizer_row
->
Add
(
v4lbutton_sizer
,
0
,
wxEXPAND
|
wxALL
,
5
);
panel
->
SetSizerAndFit
(
sizer_row
);
return
panel
;
}
wxPanel
*
OpenDialog
::
SatPanel
(
wxWindow
*
parent
)
{
wxPanel
*
panel
=
new
wxPanel
(
parent
,
-
1
,
wxDefaultPosition
,
...
...
@@ -576,7 +651,7 @@ void OpenDialog::UpdateMRL( int i_access_method )
break
;
case
2
:
/* http access */
/* http access */
mrltemp
=
wxT
(
"http"
)
+
demux
+
wxT
(
"://"
)
+
net_addrs
[
2
]
->
GetLineText
(
0
);
break
;
...
...
@@ -585,6 +660,28 @@ void OpenDialog::UpdateMRL( int i_access_method )
case
SAT_ACCESS
:
mrltemp
=
wxT
(
"satellite"
)
+
demux
+
wxT
(
"://"
);
break
;
case
V4L_ACCESS
:
mrltemp
=
(
video_type
->
GetSelection
()
==
0
?
wxT
(
"v4l"
)
:
video_type
->
GetSelection
()
==
1
?
wxT
(
"v4l"
)
:
video_type
->
GetSelection
()
==
2
?
wxT
(
"pvr"
)
:
wxT
(
"kfir"
)
)
+
demux
+
wxT
(
":"
)
+
video_device
->
GetLineText
(
0
);
if
(
video_type
->
GetSelection
()
==
1
)
{
mrltemp
+=
wxString
::
Format
(
wxT
(
":channel=%d"
),
video_channel
->
GetValue
()
);
}
if
(
/* v4l_dialog != NULL && */
!
v4l_mrl
.
IsEmpty
()
)
{
mrltemp
+=
v4l_mrl
[
0
];
}
break
;
default:
break
;
}
...
...
@@ -605,7 +702,7 @@ void OpenDialog::OnOk( wxCommandEvent& WXUNUSED(event) )
/* Update the playlist */
playlist_t
*
p_playlist
=
(
playlist_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
FIND_ANYWHERE
);
FIND_ANYWHERE
);
if
(
p_playlist
==
NULL
)
return
;
for
(
int
i
=
0
;
i
<
(
int
)
mrl
.
GetCount
();
i
++
)
...
...
@@ -629,7 +726,7 @@ void OpenDialog::OnOk( wxCommandEvent& WXUNUSED(event) )
ppsz_options
[
j
]
=
strdup
(
mrl
[
i
+
j
+
1
].
mb_str
()
);
}
i_total_options
=
i_options
;
i_total_options
=
i_options
;
/* Get the options from the subtitles dialog */
if
(
subsfile_checkbox
->
IsChecked
()
&&
subsfile_mrl
.
GetCount
()
)
...
...
@@ -646,6 +743,22 @@ void OpenDialog::OnOk( wxCommandEvent& WXUNUSED(event) )
i_total_options
+=
subsfile_mrl
.
GetCount
();
}
/* Get the options from the v4l dialog */
/* if( v4l_mrl.GetCount() )
{
ppsz_options = (char **)realloc( ppsz_options, sizeof(char *) *
(i_total_options + v4l_mrl.GetCount()) );
for( int j = 0; j < (int)v4l_mrl.GetCount(); j++ )
{
ppsz_options[i_total_options + j] =
strdup( v4l_mrl[j].mb_str() );
}
i_total_options += v4l_mrl.GetCount();
}
*/
/* Get the options from the stream output dialog */
if
(
sout_checkbox
->
IsChecked
()
&&
sout_mrl
.
GetCount
()
)
{
...
...
@@ -659,6 +772,7 @@ void OpenDialog::OnOk( wxCommandEvent& WXUNUSED(event) )
}
i_total_options
+=
sout_mrl
.
GetCount
();
}
playlist_Add
(
p_playlist
,
(
const
char
*
)
mrl
[
i
].
mb_str
(),
...
...
@@ -813,6 +927,52 @@ void OpenDialog::OnNetTypeChange( wxCommandEvent& event )
UpdateMRL
(
NET_ACCESS
);
}
/*****************************************************************************
* v4l panel event methods.
*****************************************************************************/
void
OpenDialog
::
OnV4LPanelChange
(
wxCommandEvent
&
WXUNUSED
(
event
)
)
{
UpdateMRL
(
V4L_ACCESS
);
}
void
OpenDialog
::
OnV4LTypeChange
(
wxCommandEvent
&
WXUNUSED
(
event
)
)
{
video_device
->
SetValue
(
wxU
(
"/dev/video"
)
);
v4l_button
->
Enable
();
video_channel
->
Disable
();
switch
(
video_type
->
GetSelection
()
)
{
case
1
:
video_channel
->
Enable
();
video_channel
->
SetRange
(
0
,
255
);
video_channel
->
SetValue
(
0
);
break
;
case
3
:
v4l_button
->
Disable
();
break
;
default:
break
;
}
UpdateMRL
(
V4L_ACCESS
);
}
void
OpenDialog
::
OnV4LSettingsChange
(
wxCommandEvent
&
WXUNUSED
(
event
)
)
{
/* Show/hide the open dialog */
if
(
v4l_dialog
==
NULL
)
v4l_dialog
=
new
V4LDialog
(
p_intf
,
this
);
if
(
v4l_dialog
&&
v4l_dialog
->
ShowModal
()
==
wxID_OK
)
{
v4l_mrl
=
v4l_dialog
->
GetOptions
();
}
UpdateMRL
(
V4L_ACCESS
);
}
/*****************************************************************************
* Subtitles file event methods.
*****************************************************************************/
...
...
modules/gui/wxwindows/v4l.cpp
0 → 100644
View file @
84c6ecb2
/*****************************************************************************
* v4l.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
* $Id: v4l.cpp,v 1.1 2003/08/19 21:16:09 adn Exp $
*
* Authors: Mohammed Adnne Trojette <adn@via.ecp.fr>
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* 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.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <stdlib.h>
/* malloc(), free() */
#include <errno.h>
/* ENOMEM */
#include <string.h>
/* strerror() */
#include <stdio.h>
#include <vlc/vlc.h>
#ifdef WIN32
/* mingw32 hack */
#undef Yield
#undef CreateDialog
#endif
/* Let vlc take care of the i18n stuff */
#define WXINTL_NO_GETTEXT_MACRO
#include <wx/wxprec.h>
#include <wx/wx.h>
#include <wx/notebook.h>
#include <wx/textctrl.h>
#include <wx/combobox.h>
#include <wx/spinctrl.h>
#include <wx/statline.h>
#include <vlc/intf.h>
#include "wxwindows.h"
#ifndef wxRB_SINGLE
# define wxRB_SINGLE 0
#endif
enum
{
AUDIO_DEV
=
0
,
AUDIO_CHAN
,
SIZE
,
NORM
,
FREQUENCY
};
/*****************************************************************************
* Event Table.
*****************************************************************************/
/* IDs for the controls and the menu commands */
enum
{
MRL_Event
,
AudioDevice_Event
,
ADevLocation
,
AudioChannel_Event
,
Size_Event
,
Norm_Event
,
Frequency_Event
};
BEGIN_EVENT_TABLE
(
V4LDialog
,
wxDialog
)
/* Button events */
EVT_BUTTON
(
wxID_OK
,
V4LDialog
::
OnOk
)
EVT_BUTTON
(
wxID_CANCEL
,
V4LDialog
::
OnCancel
)
/* Events generated by the audio panel */
EVT_CHECKBOX
(
AudioDevice_Event
,
V4LDialog
::
OnAudioEnable
)
EVT_TEXT
(
ADevLocation
,
V4LDialog
::
OnAudioEnable
)
EVT_SPINCTRL
(
AudioChannel_Event
,
V4LDialog
::
OnAudioChannel
)
/* Events generated by the audio panel */
EVT_CHECKBOX
(
Size_Event
,
V4LDialog
::
OnSizeEnable
)
EVT_COMBOBOX
(
Size_Event
,
V4LDialog
::
OnSize
)
EVT_CHECKBOX
(
Norm_Event
,
V4LDialog
::
OnNormEnable
)
EVT_COMBOBOX
(
Norm_Event
,
V4LDialog
::
OnNorm
)
EVT_CHECKBOX
(
Frequency_Event
,
V4LDialog
::
OnFrequencyEnable
)
EVT_COMBOBOX
(
Frequency_Event
,
V4LDialog
::
OnFrequency
)
END_EVENT_TABLE
()
/*****************************************************************************
* Constructor.
*****************************************************************************/
V4LDialog
::
V4LDialog
(
intf_thread_t
*
_p_intf
,
wxWindow
*
_p_parent
)
:
wxDialog
(
_p_parent
,
-
1
,
wxU
(
_
(
"Video Device Advanced Options"
)),
wxDefaultPosition
,
wxDefaultSize
,
wxDEFAULT_FRAME_STYLE
)
{
/* Initializations */
p_intf
=
_p_intf
;
p_parent
=
_p_parent
;
SetIcon
(
*
p_intf
->
p_sys
->
p_icon
);
/* Create a panel to put everything in */
wxPanel
*
panel
=
new
wxPanel
(
this
,
-
1
);
panel
->
SetAutoLayout
(
TRUE
);
/* Create MRL combobox */
wxBoxSizer
*
mrl_sizer_sizer
=
new
wxBoxSizer
(
wxHORIZONTAL
);
wxStaticBox
*
mrl_box
=
new
wxStaticBox
(
panel
,
-
1
,
wxU
(
_
(
"Video Device MRL"
))
);
wxStaticBoxSizer
*
mrl_sizer
=
new
wxStaticBoxSizer
(
mrl_box
,
wxHORIZONTAL
);
wxStaticText
*
mrl_label
=
new
wxStaticText
(
panel
,
-
1
,
wxU
(
_
(
"Destination Target:"
)));
mrl_combo
=
new
wxComboBox
(
panel
,
MRL_Event
,
wxT
(
""
),
wxPoint
(
20
,
25
),
wxSize
(
200
,
-
1
),
0
,
NULL
);
mrl_combo
->
SetToolTip
(
wxU
(
_
(
"You can use this field directly by typing "
"the full MRL you want to open.
\n
""Alternatively, the field will be "
"filled automatically when you use the controls below"
))
);
mrl_sizer
->
Add
(
mrl_label
,
0
,
wxALL
|
wxALIGN_CENTER
,
5
);
mrl_sizer
->
Add
(
mrl_combo
,
1
,
wxALL
|
wxALIGN_CENTER
,
5
);
mrl_sizer_sizer
->
Add
(
mrl_sizer
,
1
,
wxEXPAND
|
wxALL
,
5
);
/* Create the audio panel */
wxPanel
*
audio_panel
=
AudioPanel
(
panel
);
/* Create the size panel */
wxPanel
*
common_panel
=
CommonPanel
(
panel
);
/* Separation */
wxStaticLine
*
static_line
=
new
wxStaticLine
(
panel
,
wxID_OK
);
/* Create the buttons */
wxButton
*
ok_button
=
new
wxButton
(
panel
,
wxID_OK
,
wxU
(
_
(
"OK"
))
);
ok_button
->
SetDefault
();
wxButton
*
cancel_button
=
new
wxButton
(
panel
,
wxID_CANCEL
,
wxU
(
_
(
"Cancel"
))
);
/* Place everything in sizers */
wxBoxSizer
*
button_sizer
=
new
wxBoxSizer
(
wxHORIZONTAL
);
button_sizer
->
Add
(
ok_button
,
0
,
wxALL
,
5
);
button_sizer
->
Add
(
cancel_button
,
0
,
wxALL
,
5
);
button_sizer
->
Layout
();
wxBoxSizer
*
main_sizer
=
new
wxBoxSizer
(
wxVERTICAL
);
wxBoxSizer
*
panel_sizer
=
new
wxBoxSizer
(
wxVERTICAL
);
panel_sizer
->
Add
(
mrl_sizer_sizer
,
0
,
wxEXPAND
,
5
);
panel_sizer
->
Add
(
common_panel
,
1
,
wxEXPAND
|
wxALL
,
5
);
panel_sizer
->
Add
(
audio_panel
,
1
,
wxEXPAND
|
wxALL
,
5
);
panel_sizer
->
Add
(
static_line
,
0
,
wxEXPAND
|
wxALL
,
5
);
panel_sizer
->
Add
(
button_sizer
,
0
,
wxALIGN_LEFT
|
wxALIGN_BOTTOM
|
wxALL
,
5
);
panel_sizer
->
Layout
();
panel
->
SetSizerAndFit
(
panel_sizer
);
main_sizer
->
Add
(
panel
,
1
,
wxGROW
,
0
);
main_sizer
->
Layout
();
SetSizerAndFit
(
main_sizer
);
}
V4LDialog
::~
V4LDialog
()
{
}
wxArrayString
V4LDialog
::
GetOptions
()
{
return
SeparateEntries
(
mrl_combo
->
GetValue
()
);
}
/*****************************************************************************
* Private methods.
*****************************************************************************/
void
V4LDialog
::
UpdateMRL
()
{
wxString
audio
;
if
(
audio_checkbox
->
IsChecked
()
)
{
audio
=
wxT
(
":adev="
)
+
audio_device
->
GetLineText
(
0
)
+
wxString
::
Format
(
wxT
(
":audio=%d"
),
audio_channel
->
GetValue
()
);
}
wxString
common
;
{
if
(
size_checkbox
->
IsChecked
()
)
{
common
+=
wxT
(
":size="
)
+
size_combo
->
GetValue
();
}
if
(
norm_checkbox
->
IsChecked
()
)
{
common
+=
wxT
(
":norm="
)
+
norm_combo
->
GetValue
();
}
if
(
frequency_checkbox
->
IsChecked
()
)
{
common
+=
wxString
::
Format
(
wxT
(
":frequency=%d"
),
frequency
->
GetValue
()
);
}
}
if
(
!
audio
.
IsEmpty
()
||
!
common
.
IsEmpty
()
)
mrl_combo
->
SetValue
(
audio
+
common
);
else
mrl_combo
->
SetValue
(
wxT
(
""
)
);
}
wxPanel
*
V4LDialog
::
CommonPanel
(
wxWindow
*
parent
)
{
wxPanel
*
panel
=
new
wxPanel
(
parent
,
-
1
,
wxDefaultPosition
,
wxSize
(
200
,
200
)
);
wxStaticBox
*
panel_box
=
new
wxStaticBox
(
panel
,
-
1
,
wxU
(
_
(
"Common Options"
))
);
wxStaticBoxSizer
*
panel_sizer
=
new
wxStaticBoxSizer
(
panel_box
,
wxVERTICAL
);
wxFlexGridSizer
*
subpanel_sizer
;
common_subpanel
=
new
wxPanel
(
panel
,
-
1
);
subpanel_sizer
=
new
wxFlexGridSizer
(
2
,
3
,
20
);
static
const
wxString
size_array
[]
=
{
wxT
(
"subqcif"
),
wxT
(
"qsif"
),
wxT
(
"qcif"
),
wxT
(
"sif"
),
wxT
(
"cif"
),
wxT
(
"vga"
)
};
size_checkbox
=
new
wxCheckBox
(
common_subpanel
,
Size_Event
,
wxU
(
_
(
"Size"
))
);
size_combo
=
new
wxComboBox
(
common_subpanel
,
Size_Event
,
wxT
(
""
),
wxPoint
(
20
,
25
),
wxSize
(
120
,
-
1
),
WXSIZEOF
(
size_array
),
size_array
,
wxCB_READONLY
);
size_combo
->
SetSelection
(
5
);
subpanel_sizer
->
Add
(
size_checkbox
,
0
,
wxALIGN_LEFT
|
wxALIGN_CENTER_VERTICAL
);
subpanel_sizer
->
Add
(
size_combo
,
0
,
wxALIGN_RIGHT
|
wxALIGN_CENTER_VERTICAL
);
static
const
wxString
norm_array
[]
=
{
wxT
(
"pal"
),
wxT
(
"secam"
),
wxT
(
"ntsc"
)
};
norm_checkbox
=
new
wxCheckBox
(
common_subpanel
,
Norm_Event
,
wxU
(
_
(
"Norm"
))
);
norm_combo
=
new
wxComboBox
(
common_subpanel
,
Norm_Event
,
wxT
(
""
),
wxPoint
(
20
,
25
),
wxSize
(
120
,
-
1
),
WXSIZEOF
(
norm_array
),
norm_array
,
wxCB_READONLY
);
norm_combo
->
SetSelection
(
1
);
subpanel_sizer
->
Add
(
norm_checkbox
,
0
,
wxALIGN_LEFT
|
wxALIGN_CENTER_VERTICAL
);
subpanel_sizer
->
Add
(
norm_combo
,
0
,
wxALIGN_RIGHT
|
wxALIGN_CENTER_VERTICAL
);
frequency_checkbox
=
new
wxCheckBox
(
common_subpanel
,
Frequency_Event
,
wxU
(
_
(
"Frequency"
))
);
frequency
=
new
wxSpinCtrl
(
common_subpanel
,
Frequency_Event
);
frequency
->
SetToolTip
(
wxU
(
_
(
"The frequency in KHz"
))
);
subpanel_sizer
->
Add
(
frequency_checkbox
,
0
,
wxALIGN_LEFT
|
wxALIGN_CENTER_VERTICAL
);
subpanel_sizer
->
Add
(
frequency
,
0
,
wxALIGN_RIGHT
|
wxALIGN_CENTER_VERTICAL
);
common_subpanel
->
SetSizerAndFit
(
subpanel_sizer
);
/* Stuff everything into the main panel */
panel_sizer
->
Add
(
common_subpanel
,
1
,
wxALIGN_LEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
panel
->
SetSizerAndFit
(
panel_sizer
);
/* Update panel */
size_combo
->
Disable
();
norm_combo
->
Disable
();
frequency
->
Disable
();
return
panel
;
}
wxPanel
*
V4LDialog
::
AudioPanel
(
wxWindow
*
parent
)
{
wxPanel
*
panel
=
new
wxPanel
(
parent
,
-
1
,
wxDefaultPosition
,
wxSize
(
200
,
200
)
);
wxStaticBox
*
panel_box
=
new
wxStaticBox
(
panel
,
-
1
,
wxU
(
_
(
"Audio Options"
))
);
wxStaticBoxSizer
*
panel_sizer
=
new
wxStaticBoxSizer
(
panel_box
,
wxVERTICAL
);
wxStaticText
*
label
;
wxFlexGridSizer
*
subpanel_sizer
;
audio_subpanel
=
new
wxPanel
(
panel
,
-
1
);
subpanel_sizer
=
new
wxFlexGridSizer
(
2
,
2
,
20
);
audio_checkbox
=
new
wxCheckBox
(
audio_subpanel
,
AudioDevice_Event
,
wxU
(
_
(
"Audio Device"
))
);
audio_device
=
new
wxTextCtrl
(
audio_subpanel
,
AudioDevice_Event
,
wxT
(
"/dev/dsp"
),
wxDefaultPosition
,
wxSize
(
120
,
-
1
),
wxTE_PROCESS_ENTER
);
label
=
new
wxStaticText
(
audio_subpanel
,
-
1
,
wxU
(
_
(
"Channel"
))
);
audio_channel
=
new
wxSpinCtrl
(
audio_subpanel
,
AudioChannel_Event
);
subpanel_sizer
->
Add
(
audio_checkbox
,
0
,
wxALIGN_RIGHT
|
wxALIGN_CENTER_VERTICAL
);
subpanel_sizer
->
Add
(
audio_device
,
1
,
wxALIGN_RIGHT
);
subpanel_sizer
->
Add
(
label
,
0
,
wxALIGN_LEFT
|
wxALIGN_CENTER_VERTICAL
);
subpanel_sizer
->
Add
(
audio_channel
,
0
,
wxALIGN_RIGHT
|
wxALIGN_CENTER_VERTICAL
);
audio_subpanel
->
SetSizerAndFit
(
subpanel_sizer
);
/* Stuff everything into the main panel */
panel_sizer
->
Add
(
audio_subpanel
,
1
,
wxALIGN_LEFT
|
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
panel
->
SetSizerAndFit
(
panel_sizer
);
/* Update panel */
audio_device
->
Disable
();
audio_channel
->
Disable
();
return
panel
;
}
/*****************************************************************************
* Events methods.
*****************************************************************************/
void
V4LDialog
::
OnOk
(
wxCommandEvent
&
WXUNUSED
(
event
)
)
{
mrl_combo
->
Append
(
mrl_combo
->
GetValue
()
);
EndModal
(
wxID_OK
);
}
void
V4LDialog
::
OnCancel
(
wxCommandEvent
&
WXUNUSED
(
event
)
)
{
EndModal
(
wxID_CANCEL
);
}
void
V4LDialog
::
OnMRLChange
(
wxCommandEvent
&
event
)
{
//mrl = event.GetString();
}
/*****************************************************************************
* Audio panel event methods.
*****************************************************************************/
void
V4LDialog
::
OnAudioEnable
(
wxCommandEvent
&
event
)
{
audio_device
->
SetValue
(
wxU
(
"/dev/dsp"
)
);
audio_channel
->
SetRange
(
0
,
255
);
audio_channel
->
SetValue
(
0
);
audio_device
->
Enable
(
event
.
GetInt
()
);
audio_channel
->
Enable
(
event
.
GetInt
()
);
UpdateMRL
();
}
void
V4LDialog
::
OnAudioChannel
(
wxCommandEvent
&
event
)
{
UpdateMRL
();
}
/******************************************************************************
* Common panel event methods.
******************************************************************************/
void
V4LDialog
::
OnSizeEnable
(
wxCommandEvent
&
event
)
{
UpdateMRL
();
size_combo
->
Enable
(
event
.
GetInt
()
);
}
void
V4LDialog
::
OnSize
(
wxCommandEvent
&
event
)
{
UpdateMRL
();
}
void
V4LDialog
::
OnNormEnable
(
wxCommandEvent
&
event
)
{
norm_combo
->
Enable
(
event
.
GetInt
()
);
UpdateMRL
();
}
void
V4LDialog
::
OnNorm
(
wxCommandEvent
&
event
)
{
UpdateMRL
();
}
void
V4LDialog
::
OnFrequencyEnable
(
wxCommandEvent
&
event
)
{
frequency
->
SetRange
(
0
,
42000
);
frequency
->
SetValue
(
7668
);
frequency
->
Enable
(
event
.
GetInt
()
);
UpdateMRL
();
}
void
V4LDialog
::
OnFrequency
(
wxCommandEvent
&
event
)
{
UpdateMRL
();
}
modules/gui/wxwindows/wxwindows.h
View file @
84c6ecb2
...
...
@@ -2,7 +2,7 @@
* wxwindows.h: private wxWindows interface description
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: wxwindows.h,v 1.5
3 2003/08/16 21:05:14 zorglub
Exp $
* $Id: wxwindows.h,v 1.5
4 2003/08/19 21:16:09 adn
Exp $
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
*
...
...
@@ -33,15 +33,6 @@
DECLARE_LOCAL_EVENT_TYPE
(
wxEVT_DIALOG
,
0
);
enum
{
FILE_ACCESS
,
DISC_ACCESS
,
NET_ACCESS
,
SAT_ACCESS
,
FILE_SIMPLE_ACCESS
};
class
OpenDialog
;
class
Playlist
;
class
Messages
;
...
...
@@ -159,8 +150,13 @@ private:
void
OnExit
(
wxCommandEvent
&
event
);
void
OnAbout
(
wxCommandEvent
&
event
);
void
OnOpenFileSimple
(
wxCommandEvent
&
event
);
void
OnOpenFile
(
wxCommandEvent
&
event
);
void
OnOpenDisc
(
wxCommandEvent
&
event
);
void
OnOpenNet
(
wxCommandEvent
&
event
);
void
OnOpenSat
(
wxCommandEvent
&
event
);
void
OnOpenV4L
(
wxCommandEvent
&
event
);
void
OnShowDialog
(
wxCommandEvent
&
event
);
void
OnPlayStream
(
wxCommandEvent
&
event
);
void
OnStopStream
(
wxCommandEvent
&
event
);
void
OnSliderUpdate
(
wxScrollEvent
&
event
);
...
...
@@ -240,6 +236,7 @@ public:
};
/* Open Dialog */
class
V4LDialog
;
class
SoutDialog
;
class
SubsFileDialog
;
class
OpenDialog
:
public
wxFrame
...
...
@@ -260,6 +257,7 @@ private:
wxPanel
*
DiscPanel
(
wxWindow
*
parent
);
wxPanel
*
NetPanel
(
wxWindow
*
parent
);
wxPanel
*
SatPanel
(
wxWindow
*
parent
);
wxPanel
*
V4LPanel
(
wxWindow
*
parent
);
void
UpdateMRL
(
int
i_access_method
);
...
...
@@ -282,6 +280,11 @@ private:
void
OnNetPanelChange
(
wxCommandEvent
&
event
);
void
OnNetTypeChange
(
wxCommandEvent
&
event
);
/* Event handlers for the v4l page */
void
OnV4LPanelChange
(
wxCommandEvent
&
event
);
void
OnV4LTypeChange
(
wxCommandEvent
&
event
);
void
OnV4LSettingsChange
(
wxCommandEvent
&
event
);
/* Event handlers for the stream output */
void
OnSubsFileEnable
(
wxCommandEvent
&
event
);
void
OnSubsFileSettings
(
wxCommandEvent
&
WXUNUSED
(
event
)
);
...
...
@@ -325,6 +328,14 @@ private:
int
i_net_ports
[
4
];
wxTextCtrl
*
net_addrs
[
4
];
/* Controls for the v4l panel */
wxRadioBox
*
video_type
;
wxTextCtrl
*
video_device
;
wxSpinCtrl
*
video_channel
;
wxButton
*
v4l_button
;
V4LDialog
*
v4l_dialog
;
wxArrayString
v4l_mrl
;
/* Controls for the subtitles file */
wxButton
*
subsfile_button
;
wxCheckBox
*
subsfile_checkbox
;
...
...
@@ -344,6 +355,72 @@ private:
wxFileDialog
*
demuxdump_dialog
;
};
enum
{
FILE_ACCESS
=
0
,
DISC_ACCESS
,
NET_ACCESS
,
SAT_ACCESS
,
V4L_ACCESS
,
FILE_SIMPLE_ACCESS
};
/* V4L Dialog */
class
V4LDialog
:
public
wxDialog
{
public:
/* Constructor */
V4LDialog
(
intf_thread_t
*
p_intf
,
wxWindow
*
p_parent
);
virtual
~
V4LDialog
();
wxArrayString
GetOptions
();
private:
void
UpdateMRL
();
wxPanel
*
AudioPanel
(
wxWindow
*
parent
);
wxPanel
*
CommonPanel
(
wxWindow
*
parent
);
void
ParseMRL
();
/* Event handlers (these functions should _not_ be virtual) */
void
OnOk
(
wxCommandEvent
&
event
);
void
OnCancel
(
wxCommandEvent
&
event
);
void
OnMRLChange
(
wxCommandEvent
&
event
);
void
OnAudioEnable
(
wxCommandEvent
&
event
);
void
OnAudioChannel
(
wxCommandEvent
&
event
);
void
OnSizeEnable
(
wxCommandEvent
&
event
);
void
OnSize
(
wxCommandEvent
&
event
);
void
OnNormEnable
(
wxCommandEvent
&
event
);
void
OnNorm
(
wxCommandEvent
&
event
);
void
OnFrequencyEnable
(
wxCommandEvent
&
event
);
void
OnFrequency
(
wxCommandEvent
&
event
);
DECLARE_EVENT_TABLE
();
intf_thread_t
*
p_intf
;
wxWindow
*
p_parent
;
wxComboBox
*
mrl_combo
;
int
i_access_type
;
/* Controls for the v4l advanced options */
wxPanel
*
common_subpanel
;
wxPanel
*
common_panel
;
wxCheckBox
*
size_checkbox
;
wxComboBox
*
size_combo
;
wxCheckBox
*
norm_checkbox
;
wxComboBox
*
norm_combo
;
wxCheckBox
*
frequency_checkbox
;
wxSpinCtrl
*
frequency
;
wxPanel
*
audio_subpanel
;
wxPanel
*
audio_panel
;
wxCheckBox
*
audio_checkbox
;
wxTextCtrl
*
audio_device
;
wxSpinCtrl
*
audio_channel
;
};
/* Stream output Dialog */
class
SoutDialog
:
public
wxDialog
{
...
...
@@ -375,9 +452,9 @@ private:
/* Event handlers for the net access output */
void
OnNetChange
(
wxCommandEvent
&
event
);
/* Event specific to the
sap
address */
void
On
SAP
AddrChange
(
wxCommandEvent
&
event
);
/* Event specific to the
announce
address */
void
On
Announce
AddrChange
(
wxCommandEvent
&
event
);
/* Event handlers for the encapsulation panel */
void
OnEncapsulationChange
(
wxCommandEvent
&
event
);
...
...
@@ -387,6 +464,7 @@ private:
/* Event handlers for the misc panel */
void
OnSAPMiscChange
(
wxCommandEvent
&
event
);
void
OnSLPMiscChange
(
wxCommandEvent
&
event
);
DECLARE_EVENT_TABLE
();
...
...
@@ -408,8 +486,9 @@ private:
/* Controls for the SAP announces */
wxPanel
*
misc_subpanels
[
1
];
wxCheckBox
*
sap_checkbox
;
wxTextCtrl
*
sap_addr
;
wxCheckBox
*
slp_checkbox
;
wxTextCtrl
*
announce_addr
;
/* Controls for the encapsulation */
wxRadioButton
*
encapsulation_radios
[
5
];
int
i_encapsulation_type
;
...
...
@@ -500,7 +579,7 @@ private:
wxTextAttr
*
dbg_attr
;
wxFileDialog
*
save_log_dialog
;
vlc_bool_t
b_verbose
;
};
...
...
@@ -556,7 +635,7 @@ private:
void
OnClose
(
wxCommandEvent
&
event
);
DECLARE_EVENT_TABLE
();
intf_thread_t
*
p_intf
;
wxTreeCtrl
*
fileinfo_tree
;
wxTreeItemId
fileinfo_root
;
...
...
@@ -674,5 +753,5 @@ static inline int ConvertHotkey( int i_hotkey )
default:
return
0
;
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment