📄 vlm_panel.cpp
字号:
void VLMPanel::RemoveBroadcast( VLMBroadcastStreamPanel *p_streamp ){ scrolled_broadcasts_sizer->Remove( p_streamp ); scrolled_broadcasts_sizer->Layout(); scrolled_broadcasts->FitInside();}/************************* * VODS management *************************/wxPanel * VLMPanel::VODPanel( wxWindow *parent ){ vods_panel = new wxPanel( parent, -1, wxDefaultPosition, wxSize( 500, 350 ) ); return vods_panel;}wxPanel * VLMPanel::AddVODPanel( wxPanel *panel ){ return new VLMAddStreamPanel( p_intf, panel, p_vlm, VLC_FALSE, VLC_FALSE );}void VLMPanel::AppendVOD( VLMVODStream *p_vod ){ VLMVODStreamPanel *p_new = new VLMVODStreamPanel( p_intf, scrolled_vods, p_vod ); p_new->b_found = VLC_TRUE; scrolled_vods_sizer->Add( p_new, 0, wxEXPAND | wxALL, 5 ); scrolled_vods_sizer->Layout(); scrolled_vods->FitInside(); vods.push_back( p_new );}void VLMPanel::RemoveVOD( VLMVODStreamPanel *p_streamp ){ scrolled_vods_sizer->Remove( p_streamp ); scrolled_vods_sizer->Layout(); scrolled_vods->FitInside();}/**************************************************************************** * VLM Add Broadcast panel implementation *****************************************************************************/enum{ Create_Event, Clear_Event, ChooseInput_Event, ChooseOutput_Event,};BEGIN_EVENT_TABLE( VLMAddStreamPanel, wxPanel) EVT_BUTTON( Create_Event, VLMAddStreamPanel::OnCreate ) EVT_BUTTON( Clear_Event, VLMAddStreamPanel::OnClear ) EVT_BUTTON( ChooseInput_Event, VLMAddStreamPanel::OnChooseInput ) EVT_BUTTON( ChooseOutput_Event, VLMAddStreamPanel::OnChooseOutput )END_EVENT_TABLE()VLMAddStreamPanel::VLMAddStreamPanel( intf_thread_t *_p_intf, wxWindow *_p_parent, VLMWrapper *_p_vlm, vlc_bool_t _b_edit, vlc_bool_t _b_broadcast ): wxPanel( _p_parent, -1, wxDefaultPosition, wxDefaultSize ){ p_intf = _p_intf; p_parent = _p_parent; p_vlm = _p_vlm; b_edit = _b_edit; b_broadcast = _b_broadcast; p_open_dialog = NULL; p_sout_dialog = NULL; SetAutoLayout( TRUE ); wxBoxSizer *panel_sizer = new wxBoxSizer( wxVERTICAL ); wxFlexGridSizer *upper_sizer = new wxFlexGridSizer( 5, 2 ); upper_sizer->AddGrowableCol( 1 ); upper_sizer->AddGrowableCol( 3 ); upper_sizer->Add( new wxStaticText( this, -1, wxU( _("Name") ) ), 0, wxALIGN_CENTER_VERTICAL, 0 ); name_text = new wxTextCtrl( this, -1, wxU( "" ), wxDefaultPosition, wxSize( 150, -1 ) ); upper_sizer->Add( name_text , 1, wxEXPAND | wxLEFT | wxRIGHT, 5 ); upper_sizer->Add( new wxStaticText( this, -1, wxU( _("Input") ) ), 0, wxALIGN_CENTER_VERTICAL, 0 ); input_text = new wxTextCtrl( this, -1, wxU( "" ) , wxDefaultPosition, wxSize( 150, -1 ) ); upper_sizer->Add( input_text , 1, wxEXPAND | wxLEFT | wxRIGHT, 5 ); upper_sizer->Add( new wxButton( this, ChooseInput_Event, wxU( _("Choose") ) ) ); upper_sizer->Add( 0,0 ); upper_sizer->Add( 0,0 ); upper_sizer->Add( new wxStaticText( this, -1, wxU( _("Output") ) ), 0, wxALIGN_CENTER_VERTICAL, 0 ); output_text = new wxTextCtrl( this, -1, wxU( "" ) , wxDefaultPosition, wxSize( 150, -1 ) ); upper_sizer->Add( output_text, 1, wxEXPAND | wxLEFT | wxRIGHT, 5 ); upper_sizer->Add( new wxButton( this, ChooseOutput_Event, wxU( _("Choose") ) ) ); panel_sizer->Add( upper_sizer, 0, wxEXPAND | wxALL, 5 ); wxBoxSizer *lower_sizer = new wxBoxSizer( wxHORIZONTAL ); enabled_checkbox = new wxCheckBox( this, -1, wxU( _("Enabled" ) ) ); enabled_checkbox->SetValue( true ); lower_sizer->Add( enabled_checkbox, 1 , wxEXPAND | wxALL , 5 ); if( b_broadcast ) { loop_checkbox = new wxCheckBox( this, -1, wxU( _("Loop" ) ) ); lower_sizer->Add( loop_checkbox, 1 , wxEXPAND | wxALL , 5 ); } if( !b_edit ) { lower_sizer->Add( new wxButton( this, wxID_CLEAR, wxU( _( "&Clear" ) ) ), 0 , wxEXPAND | wxALL , 5 ); } lower_sizer->Add( new wxButton( this, Create_Event, wxU( _( b_edit ? "OK" : "Create" ) ) ), 0 , wxEXPAND | wxALL , 5 ); panel_sizer->Add( lower_sizer, 0 , wxEXPAND| wxALL, 5 ); panel_sizer->Layout(); SetSizerAndFit( panel_sizer );}VLMAddStreamPanel::~VLMAddStreamPanel(){}void VLMAddStreamPanel::Load( VLMStream *p_stream ){ name_text->SetValue( wxU( p_stream->p_media->psz_name ) ); name_text->SetEditable( false ); if( p_stream->p_media->i_input > 0 ) { input_text->SetValue( wxU( p_stream->p_media->input[0] ) ); } output_text->SetValue( wxU( p_stream->p_media->psz_output ) ); enabled_checkbox->SetValue( p_stream->p_media->b_enabled ); if( b_broadcast) loop_checkbox->SetValue( p_stream->p_media->b_loop );}void VLMAddStreamPanel::OnCreate( wxCommandEvent &event ){ char *psz_name = wxFromLocale( name_text->GetValue() ); char *psz_input = wxFromLocale( input_text->GetValue() ); char *psz_output = wxFromLocale( output_text->GetValue() ); if( b_broadcast && ! b_edit ) { p_vlm->AddBroadcast( psz_name, psz_input, psz_output, enabled_checkbox->IsChecked() ? VLC_TRUE: VLC_FALSE, loop_checkbox->IsChecked() ? VLC_TRUE : VLC_FALSE ); } else if( b_broadcast && b_edit ) { p_vlm->EditBroadcast( psz_name, psz_input, psz_output, enabled_checkbox->IsChecked() ? VLC_TRUE: VLC_FALSE, loop_checkbox->IsChecked() ? VLC_TRUE : VLC_FALSE ); } else if( !b_broadcast && !b_edit ) { p_vlm->AddVod( psz_name, psz_input, psz_output, enabled_checkbox->IsChecked() ? VLC_TRUE: VLC_FALSE, loop_checkbox->IsChecked() ? VLC_TRUE : VLC_FALSE ); } else { p_vlm->EditVod( psz_name, psz_input, psz_output, enabled_checkbox->IsChecked() ? VLC_TRUE: VLC_FALSE, loop_checkbox->IsChecked() ? VLC_TRUE : VLC_FALSE ); } wxLocaleFree( psz_name) ; wxLocaleFree( psz_input ) ; wxLocaleFree( psz_output); if( !b_edit ) OnClear( event ); if( b_edit ) p_parent->Hide();}void VLMAddStreamPanel::OnClear( wxCommandEvent &event ){ name_text->SetValue( wxU("") ); input_text->SetValue( wxU("") ); output_text->SetValue( wxU("") );}void VLMAddStreamPanel::OnChooseInput( wxCommandEvent &event ){ if( p_open_dialog == NULL ) p_open_dialog = new OpenDialog( p_intf, this, -1, -1, OPEN_STREAM ); if( p_open_dialog && p_open_dialog->ShowModal() == wxID_OK ) { input_text->SetValue( p_open_dialog->mrl[0] ); }}void VLMAddStreamPanel::OnChooseOutput( wxCommandEvent &event ){ if( p_sout_dialog == NULL ) p_sout_dialog = new SoutDialog( p_intf, this ); if( p_sout_dialog && p_sout_dialog->ShowModal() == wxID_OK ) { wxString sout = (p_sout_dialog->GetOptions())[0] ; sout = sout.AfterFirst( '=' ); output_text->SetValue( sout ); }}/**************************************************************************** * VLM Frame implementation ****************************************************************************/enum{};BEGIN_EVENT_TABLE( VLMFrame, wxFrame ) EVT_CLOSE( VLMFrame::OnClose )END_EVENT_TABLE()VLMFrame::VLMFrame( intf_thread_t *_p_intf, wxWindow *_p_parent ) : wxFrame( _p_parent, -1, wxU( _("VLM") ), wxDefaultPosition, wxSize( 640,480 ), wxDEFAULT_FRAME_STYLE ){ SetIcon( *_p_intf->p_sys->p_icon ); wxBoxSizer *main_sizer = new wxBoxSizer( wxHORIZONTAL ); vlm_panel = new VLMPanel( _p_intf, this );#if defined(WIN32) main_sizer->Add( vlm_panel, 1, wxGROW, 0 );#else main_sizer->Add( vlm_panel, 1, wxEXPAND | wxALL, 5 );#endif main_sizer->Layout(); SetSizerAndFit( main_sizer );}void VLMFrame::OnClose( wxCloseEvent& WXUNUSED(event) ){ Hide();}void VLMFrame::Update(){ vlm_panel->Update();}VLMFrame::~VLMFrame(){ delete vlm_panel;}/**************************************************************************** * VLM Add stream Frame implementation ****************************************************************************/VLMEditStreamFrame::VLMEditStreamFrame( intf_thread_t *_p_intf, wxWindow *_p_parent, VLMWrapper *_p_vlm, vlc_bool_t _b_broadcast, VLMStream *p_stream ) : wxFrame( _p_parent, -1, wxU( _("VLM stream") ), wxDefaultPosition, wxSize( 640,480 ), wxDEFAULT_FRAME_STYLE ){ SetIcon( *_p_intf->p_sys->p_icon ); wxBoxSizer *main_sizer = new wxBoxSizer( wxHORIZONTAL ); vlm_panel = new VLMAddStreamPanel( _p_intf, this, _p_vlm , VLC_TRUE, _b_broadcast ); vlm_panel->Load( p_stream ); main_sizer->Add( vlm_panel, 1, wxEXPAND | wxALL, 5 ); main_sizer->Layout(); SetSizerAndFit( main_sizer );}VLMEditStreamFrame::~VLMEditStreamFrame(){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -