⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interface.cpp

📁 VLC媒体播放程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    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 + -