?? interface.cpp
字號:
wxBoxSizer *frame_sizer = new wxBoxSizer( wxHORIZONTAL ); /* Create static box to surround the slider */ slider_box = new wxStaticBox( slider_frame, -1, wxT("") ); /* Create sizer for slider frame */ wxStaticBoxSizer *slider_sizer = new wxStaticBoxSizer( slider_box, wxHORIZONTAL ); slider_sizer->SetMinSize( -1, 50 ); /* Create slider */ slider = new wxSlider( slider_frame, SliderScroll_Event, 0, 0, SLIDER_MAX_POS, wxDefaultPosition, wxDefaultSize ); slider_sizer->Add( slider, 1, wxEXPAND | wxALL, 5 ); volctrl = new wxVolCtrl( p_intf, slider_frame, -1 ); /* Add everything to the frame */ frame_sizer->Add( slider_sizer, 1, wxEXPAND | wxBOTTOM, 5 ); frame_sizer->Add( volctrl, 0, wxEXPAND | wxALL, 5 ); slider_frame->SetSizer( frame_sizer ); frame_sizer->Layout(); frame_sizer->SetSizeHints(slider_frame); /* Hide the slider by default */ slider_frame->Hide();}void Interface::CreateOurExtraPanel(){ char *psz_filters; extra_frame = new wxPanel( this, -1, wxDefaultPosition, wxDefaultSize ); extra_frame->SetAutoLayout( TRUE ); wxBoxSizer *extra_sizer = new wxBoxSizer( wxHORIZONTAL ); /* Create static box to surround the adjust controls */ wxStaticBox *adjust_box = new wxStaticBox( extra_frame, -1, wxU(_("Adjust Image")) ); /* Create the size for the frame */ wxStaticBoxSizer *adjust_sizer = new wxStaticBoxSizer( adjust_box, wxVERTICAL ); adjust_sizer->SetMinSize( -1, 50 ); /* Create every controls */ /* Create the adjust button */ wxCheckBox * adjust_check = new wxCheckBox( extra_frame, Adjust_Event, wxU(_("Enable"))); wxBoxSizer *hue_sizer = new wxBoxSizer( wxHORIZONTAL ); wxStaticText *hue_text = new wxStaticText( extra_frame, -1, wxU(_("Hue")) ); hue_slider = new wxSlider ( extra_frame, Hue_Event, 0, 0, 360, wxDefaultPosition, wxDefaultSize ); hue_sizer->Add(hue_text,1, 0 ,0); hue_sizer->Add(hue_slider,1, 0 ,0); hue_sizer->Layout(); wxBoxSizer *contrast_sizer = new wxBoxSizer( wxHORIZONTAL ); wxStaticText *contrast_text = new wxStaticText( extra_frame, -1, wxU(_("Contrast")) ); contrast_slider = new wxSlider ( extra_frame, Contrast_Event, 0, 0, 200, wxDefaultPosition, wxDefaultSize); contrast_sizer->Add(contrast_text,1, 0 ,0); contrast_sizer->Add(contrast_slider,1, 0 ,0); contrast_sizer->Layout(); wxBoxSizer *brightness_sizer = new wxBoxSizer( wxHORIZONTAL ); wxStaticText *brightness_text = new wxStaticText( extra_frame, -1, wxU(_("Brightness")) ); brightness_slider = new wxSlider ( extra_frame, Brightness_Event, 0, 0, 200, wxDefaultPosition, wxDefaultSize) ; brightness_sizer->Add(brightness_text,1,0,0); brightness_sizer->Add(brightness_slider,1,0,0); brightness_sizer->Layout(); wxBoxSizer *saturation_sizer = new wxBoxSizer( wxHORIZONTAL ); wxStaticText *saturation_text = new wxStaticText( extra_frame, -1, wxU(_("Saturation")) ); saturation_slider = new wxSlider ( extra_frame, Saturation_Event, 0, 0, 300, wxDefaultPosition, wxDefaultSize ); saturation_sizer->Add(saturation_text,1,0,0); saturation_sizer->Add(saturation_slider,1,0,0); saturation_sizer->Layout(); wxBoxSizer *gamma_sizer = new wxBoxSizer( wxHORIZONTAL ); wxStaticText *gamma_text = new wxStaticText( extra_frame, -1, wxU(_("Gamma")) ); gamma_slider = new wxSlider ( extra_frame, Gamma_Event, 0, 0, 100, wxDefaultPosition, wxDefaultSize ); gamma_sizer->Add(gamma_text,1,0,0); gamma_sizer->Add(gamma_slider,1,0,0); gamma_sizer->Layout(); adjust_sizer->Add(adjust_check, 1, wxEXPAND, 0); adjust_sizer->Add(hue_sizer, 1, wxEXPAND, 0); adjust_sizer->Add(contrast_sizer, 1, wxEXPAND, 0); adjust_sizer->Add(brightness_sizer, 1, wxEXPAND, 0); adjust_sizer->Add(saturation_sizer, 1, wxEXPAND, 0); adjust_sizer->Add(gamma_sizer, 1, wxEXPAND, 0); extra_sizer->Add(adjust_sizer,1,wxBOTTOM,5); /* Create sizer to surround the other controls */ wxBoxSizer *other_sizer = new wxBoxSizer( wxVERTICAL ); wxStaticBox *video_box = new wxStaticBox( extra_frame, -1, wxU(_("Video Options")) ); /* Create the sizer for the frame */ wxStaticBoxSizer *video_sizer = new wxStaticBoxSizer( video_box, wxVERTICAL ); video_sizer->SetMinSize( -1, 50 ); static const wxString ratio_array[] = { wxT("4:3"), wxT("16:9"), }; wxBoxSizer *ratio_sizer = new wxBoxSizer( wxHORIZONTAL ); wxStaticText *ratio_text = new wxStaticText( extra_frame, -1, wxU(_("Aspect Ratio")) ); ratio_combo = new wxComboBox( extra_frame, Ratio_Event, wxT(""), wxDefaultPosition, wxSize(120,-1), WXSIZEOF(ratio_array), ratio_array, 0 ); ratio_sizer->Add( ratio_text, 0, wxALL, 2 ); ratio_sizer->Add( ratio_combo, 0, wxALL, 2 ); ratio_sizer->Layout(); video_sizer->Add( ratio_sizer , 0 , wxALL , 0 ); video_sizer->Layout();#if 0 wxBoxSizer *visual_sizer = new wxBoxSizer( wxHORIZONTAL ); wxCheckBox *visual_checkbox = new wxCheckBox( extra_frame, Visual_Event, wxU(_("Visualisations")) ); visual_sizer->Add( visual_checkbox, 0, wxEXPAND, 0); visual_sizer->Layout(); wxStaticBox *audio_box = new wxStaticBox( extra_frame, -1, wxU(_("Audio Options")) ); /* Create the sizer for the frame */ wxStaticBoxSizer *audio_sizer = new wxStaticBoxSizer( audio_box, wxVERTICAL ); audio_sizer->SetMinSize( -1, 50 ); audio_sizer->Add( visual_sizer, 0, wxALL, 0); audio_sizer->Layout(); other_sizer->Add( audio_sizer , 0 , wxALL | wxEXPAND , 0 );#endif other_sizer->Add( video_sizer, 0, wxALL | wxEXPAND , 0); other_sizer->Layout(); extra_sizer->Add(other_sizer,0,wxBOTTOM,5); extra_frame->SetSizer( extra_sizer ); /* Layout the whole panel */ extra_sizer->Layout(); extra_sizer->SetSizeHints(extra_frame); /* Write down initial values */#if 0 psz_filters = config_GetPsz( p_intf, "audio-filter" ); if( psz_filters && strstr( psz_filters, "visual" ) ) { visual_checkbox->SetValue(1); } if( psz_filters ) free( psz_filters );#endif psz_filters = config_GetPsz( p_intf, "filter" ); if( psz_filters && strstr( psz_filters, "adjust" ) ) { adjust_check->SetValue( 1 ); saturation_slider->Enable(); contrast_slider->Enable(); brightness_slider->Enable(); hue_slider->Enable(); gamma_slider->Enable(); } else { adjust_check->SetValue( 0 ); saturation_slider->Disable(); contrast_slider->Disable(); brightness_slider->Disable(); hue_slider->Disable(); gamma_slider->Disable(); } if( psz_filters ) free( psz_filters ); int i_value = config_GetInt( p_intf, "hue" ); if( i_value > 0 && i_value < 360 ) hue_slider->SetValue( i_value ); float f_value; f_value = config_GetFloat( p_intf, "saturation" ); if( f_value > 0 && f_value < 5 ) saturation_slider->SetValue( (int)(100 * f_value) ); f_value = config_GetFloat( p_intf, "contrast" ); if( f_value > 0 && f_value < 4 ) contrast_slider->SetValue( (int)(100 * f_value) ); f_value = config_GetFloat( p_intf, "brightness" ); if( f_value > 0 && f_value < 2 ) brightness_slider->SetValue( (int)(100 * f_value) ); f_value = config_GetFloat( p_intf, "gamma" ); if( f_value > 0 && f_value < 10 ) gamma_slider->SetValue( (int)(10 * f_value) ); extra_frame->Hide();}void Interface::UpdateAcceleratorTable(){ /* Set some hotkeys */ wxAcceleratorEntry entries[7]; vlc_value_t val; int i = 0; var_Get( p_intf->p_vlc, "key-quit", &val ); entries[i++].Set( ConvertHotkeyModifiers( val.i_int ), ConvertHotkey( val.i_int ), Exit_Event ); var_Get( p_intf->p_vlc, "key-stop", &val ); entries[i++].Set( ConvertHotkeyModifiers( val.i_int ), ConvertHotkey( val.i_int ), StopStream_Event ); var_Get( p_intf->p_vlc, "key-play-pause", &val ); entries[i++].Set( ConvertHotkeyModifiers( val.i_int ), ConvertHotkey( val.i_int ), PlayStream_Event ); var_Get( p_intf->p_vlc, "key-next", &val ); entries[i++].Set( ConvertHotkeyModifiers( val.i_int ), ConvertHotkey( val.i_int ), NextStream_Event ); var_Get( p_intf->p_vlc, "key-prev", &val ); entries[i++].Set( ConvertHotkeyModifiers( val.i_int ), ConvertHotkey( val.i_int ), PrevStream_Event ); var_Get( p_intf->p_vlc, "key-faster", &val ); entries[i++].Set( ConvertHotkeyModifiers( val.i_int ), ConvertHotkey( val.i_int ), FastStream_Event ); var_Get( p_intf->p_vlc, "key-slower", &val ); entries[i++].Set( ConvertHotkeyModifiers( val.i_int ), ConvertHotkey( val.i_int ), SlowStream_Event ); wxAcceleratorTable accel( 7, entries ); if( !accel.Ok() ) msg_Err( p_intf, "invalid accelerator table" ); SetAcceleratorTable( accel ); msg_Dbg( p_intf, "accelerator table loaded" );}/***************************************************************************** * Event Handlers. *****************************************************************************//* Work-around helper for buggy wxGTK */void RecursiveDestroy( wxMenu *menu ){ wxMenuItemList::Node *node = menu->GetMenuItems().GetFirst(); for( ; node; ) { wxMenuItem *item = node->GetData(); node = node->GetNext(); /* Delete the submenus */ wxMenu *submenu = item->GetSubMenu(); if( submenu ) { RecursiveDestroy( submenu ); } menu->Delete( item ); }}void Interface::OnMenuOpen(wxMenuEvent& event){#if !defined( __WXMSW__ ) if( event.GetEventObject() == p_settings_menu ) { if( b_settings_menu ) { p_settings_menu = SettingsMenu( p_intf, this ); /* Add static items */ p_settings_menu->AppendCheckItem( Extra_Event, wxU(_("&Extended GUI") ), wxU(_(EXTRA_PREFS)) ); p_settings_menu->Append( Prefs_Event, wxU(_("&Preferences...")), wxU(_(HELP_PREFS)) ); /* Work-around for buggy wxGTK */ wxMenu *menu = GetMenuBar()->GetMenu( 2 ); RecursiveDestroy( menu ); /* End work-around */ menu = GetMenuBar()->Replace( 2, p_settings_menu, wxU(_("&Settings"))); if( menu ) delete menu; b_settings_menu = 0; } else b_settings_menu = 1; } else if( event.GetEventObject() == p_audio_menu ) { if( b_audio_menu ) { p_audio_menu = AudioMenu( p_intf, this ); /* Work-around for buggy wxGTK */ wxMenu *menu = GetMenuBar()->GetMenu( 3 ); RecursiveDestroy( menu ); /* End work-around */ menu = GetMenuBar()->Replace( 3, p_audio_menu, wxU(_("&Audio")) ); if( menu ) delete menu; b_audio_menu = 0; } else b_audio_menu = 1; } else if( event.GetEventObject() == p_video_menu ) { if( b_video_menu ) { p_video_menu = VideoMenu( p_intf, this ); /* Work-around for buggy wxGTK */ wxMenu *menu = GetMenuBar()->GetMenu( 4 ); RecursiveDestroy( menu ); /* End work-around */ menu = GetMenuBar()->Replace( 4, p_video_menu, wxU(_("&Video")) ); if( menu ) delete menu; b_video_menu = 0; } else b_video_menu = 1; } else if( event.GetEventObject() == p_navig_menu ) { if( b_navig_menu ) { p_navig_menu = NavigMenu( p_intf, this ); /* Work-around for buggy wxGTK */ wxMenu *menu = GetMenuBar()->GetMenu( 5 ); RecursiveDestroy( menu ); /* End work-around */ menu = GetMenuBar()->Replace( 5, p_navig_menu, wxU(_("&Navigation"))); if( menu ) delete menu; b_navig_menu = 0; } else b_navig_menu = 1; }#else p_settings_menu = SettingsMenu( p_intf, this ); /* Add static items */ p_settings_menu->AppendCheckItem( Extra_Event, wxU(_("&Extended GUI") ), wxU(_(EXTRA_PREFS)) ); p_settings_menu->Append( Prefs_Event, wxU(_("&Preferences...")), wxU(_(HELP_PREFS)) ); wxMenu *menu = GetMenuBar()->Replace( 2, p_settings_menu, wxU(_("&Settings")) ); if( menu ) delete menu; p_audio_menu = AudioMenu( p_intf, this ); menu = GetMenuBar()->Replace( 3, p_audio_menu, wxU(_("&Audio")) ); if( menu ) delete menu; p_video_menu = VideoMenu( p_intf, this ); menu = GetMenuBar()->Replace( 4, p_video_menu, wxU(_("&Video")) ); if( menu ) delete menu; p_navig_menu = NavigMenu( p_intf, this ); menu = GetMenuBar()->Replace( 5, p_navig_menu, wxU(_("&Navigation")) ); if( menu ) delete menu;#endif}#if defined( __WXMSW__ ) || defined( __WXMAC__ )void Interface::OnContextMenu2(wxContextMenuEvent& event){ /* Only show the context menu for the main interface */ if( GetId() != event.GetId() ) { event.Skip(); return; } if( p_intf->p_sys->pf_show_dialog ) p_intf->p_sys->pf_show_dialog( p_intf, INTF_DIALOG_POPUPMENU, 1, 0 );}#endifvoid Interface::OnContextMenu(wxMouseEvent& event){ if( p_intf->p_sys->pf_show_dialog ) p_intf->p_sys->pf_show_dialog( p_intf, INTF_DIALOG_POPUPMENU, 1, 0 );}void Interface::OnExit( wxCommandEvent& WXUNUSED(event) ){ /* TRUE is to force the frame to close. */ Close(TRUE);}void Interface::OnAbout( wxCommandEvent& WXUNUSED(event) ){ wxString msg; msg.Printf( wxString(wxT("VLC media player " VERSION)) + wxU(_(" (wxWindows interface)\n\n")) + wxU(_("(c) 1996-2004 - the VideoLAN Team\n\n")) + wxU( vlc_wraptext(INTF_ABOUT_MSG,WRAPCOUNT,ISUTF8) ) + wxT("\n\n") + wxU(_("The VideoLAN team <videolan@videolan.org>\n" "http://www.videolan.org/\n\n")) ); wxMessageBox( msg, wxString::Format(wxU(_("About %s")), wxT("VLC media player")), wxOK | wxICON_INFORMATION, this );}void Interface::OnShowDialog( wxCommandEvent& event ){ if( p_intf->p_sys->pf_show_dialog ) { int i_id; switch( event.GetId() ) { case OpenFileSimple_Event: i_id = INTF_DIALOG_FILE_SIMPLE; break; case OpenAdv_Event: i_id = INTF_DIALOG_FILE; case OpenFile_Event: i_id = INTF_DIALOG_FILE; break;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -