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

📄 preferences_widgets.cpp

📁 uclinux 下的vlc播放器源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
  : ConfigControl( p_this, p_item, parent ){    directory = p_item->i_type == CONFIG_ITEM_DIRECTORY;    label = new wxStaticText(this, -1, wxU(p_item->psz_text));    sizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );    textctrl = new wxTextCtrl( this, -1,                               wxL2U(p_item->psz_value),                               wxDefaultPosition,                               wxDefaultSize,                               wxTE_PROCESS_ENTER);    textctrl->SetToolTip( wxU(p_item->psz_longtext) );    sizer->Add( textctrl, 1, wxALL, 5 );    browse = new wxButton( this, wxID_HIGHEST, wxU(_("Browse...")) );    sizer->Add( browse, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);    sizer->Layout();    this->SetSizerAndFit( sizer );}BEGIN_EVENT_TABLE(FileConfigControl, wxPanel)    /* Button events */    EVT_BUTTON(wxID_HIGHEST, FileConfigControl::OnBrowse)END_EVENT_TABLE()void FileConfigControl::OnBrowse( wxCommandEvent& event ){    if( directory )    {        wxDirDialog dialog( this, wxU(_("Choose directory")) );        if( dialog.ShowModal() == wxID_OK )        {            textctrl->SetValue( dialog.GetPath() );        }    }    else    {        wxFileDialog dialog( this, wxU(_("Choose file")),                             wxT(""), wxT(""), wxT("*.*"),#if defined( __WXMSW__ )                             wxOPEN#else                             wxOPEN#endif                           );        if( dialog.ShowModal() == wxID_OK )        {            textctrl->SetValue( dialog.GetPath() );        }    }}FileConfigControl::~FileConfigControl(){    ;}wxString FileConfigControl::GetPszValue(){    return textctrl->GetValue();}/***************************************************************************** * IntegerConfigControl implementation *****************************************************************************/BEGIN_EVENT_TABLE(IntegerConfigControl, wxPanel)    EVT_TEXT(-1, IntegerConfigControl::OnUpdate)    EVT_COMMAND_SCROLL(-1, IntegerConfigControl::OnUpdateScroll)END_EVENT_TABLE()IntegerConfigControl::IntegerConfigControl( vlc_object_t *p_this,                                            module_config_t *p_item,                                            wxWindow *parent )  : ConfigControl( p_this, p_item, parent ){    label = new wxStaticText(this, -1, wxU(p_item->psz_text));    spin = new wxSpinCtrl( this, -1,                           wxString::Format(wxT("%d"),                                            p_item->i_value),                           wxDefaultPosition, wxDefaultSize,                           wxSP_ARROW_KEYS,                           -100000000, 100000000, p_item->i_value);    spin->SetToolTip( wxU(p_item->psz_longtext) );    sizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );    sizer->Add( spin, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );    sizer->Layout();    this->SetSizerAndFit( sizer );    i_value = p_item->i_value;}IntegerConfigControl::~IntegerConfigControl(){    ;}int IntegerConfigControl::GetIntValue(){    /* We avoid using GetValue because of a recursion bug with wxSpinCtrl with     * wxGTK. */    return spin->GetValue();}void IntegerConfigControl::OnUpdate( wxCommandEvent &event ){    ConfigControl::OnUpdate( event );}void IntegerConfigControl::OnUpdateScroll( wxScrollEvent &event ){    wxCommandEvent cevent;    cevent.SetInt(event.GetPosition());    OnUpdate(cevent);}/***************************************************************************** * IntegerListConfigControl implementation *****************************************************************************/IntegerListConfigControl::IntegerListConfigControl( vlc_object_t *p_this,                                                    module_config_t *p_item,                                                    wxWindow *parent )  : ConfigControl( p_this, p_item, parent ){    label = new wxStaticText(this, -1, wxU(p_item->psz_text));    sizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );    combo = new wxComboBox( this, -1, wxT(""),                            wxDefaultPosition, wxDefaultSize,                            0, NULL, wxCB_READONLY );    UpdateCombo( p_item );    combo->SetToolTip( wxU(p_item->psz_longtext) );    sizer->Add( combo, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );    sizer->Layout();    this->SetSizerAndFit( sizer );}IntegerListConfigControl::~IntegerListConfigControl(){}void IntegerListConfigControl::UpdateCombo( module_config_t *p_item ){    /* build a list of available options */    for( int i_index = 0; i_index < p_item->i_list; i_index++ )    {        if( p_item->ppsz_list_text && p_item->ppsz_list_text[i_index] )        {            combo->Append( wxU(p_item->ppsz_list_text[i_index]) );        }        else        {            combo->Append( wxString::Format(wxT("%i"),                                            p_item->pi_list[i_index]) );        }        combo->SetClientData( i_index, (void *)p_item->pi_list[i_index] );        if( p_item->i_value == p_item->pi_list[i_index] )        {            combo->SetSelection( i_index );            if( p_item->ppsz_list_text && p_item->ppsz_list_text[i_index] )            {                combo->SetValue( wxU(p_item->ppsz_list_text[i_index]) );            }            else            {                combo->SetValue( wxString::Format(wxT("%i"),                                                  p_item->pi_list[i_index]) );            }        }    }}BEGIN_EVENT_TABLE(IntegerListConfigControl, wxPanel)    /* Button events */    EVT_BUTTON(-1, IntegerListConfigControl::OnAction)    /* Update events */    EVT_TEXT(-1, IntegerListConfigControl::OnUpdate)END_EVENT_TABLE()void IntegerListConfigControl::OnAction( wxCommandEvent& event ){    int i_action = event.GetId() - wxID_HIGHEST;    module_config_t *p_item;    p_item = config_FindConfig( p_this, GetName().mb_str(wxConvUTF8) );    if( !p_item ) return;    if( i_action < 0 || i_action >= p_item->i_action ) return;    vlc_value_t val;    val.i_int = GetIntValue();    p_item->ppf_action[i_action]( p_this, GetName().mb_str(wxConvUTF8), val, val, 0 );    if( p_item->b_dirty )    {        combo->Clear();        UpdateCombo( p_item );        p_item->b_dirty = VLC_FALSE;    }}int IntegerListConfigControl::GetIntValue(){    int selected = combo->GetSelection();    if( selected != -1 )    {        return (int)combo->GetClientData( selected );    }    return -1;}/***************************************************************************** * RangedIntConfigControl implementation *****************************************************************************/BEGIN_EVENT_TABLE(RangedIntConfigControl, wxPanel)    EVT_COMMAND_SCROLL(-1, RangedIntConfigControl::OnUpdateScroll)END_EVENT_TABLE()RangedIntConfigControl::RangedIntConfigControl( vlc_object_t *p_this,                                                module_config_t *p_item,                                                wxWindow *parent )  : ConfigControl( p_this, p_item, parent ){    label = new wxStaticText(this, -1, wxU(p_item->psz_text));    slider = new wxSlider( this, -1, p_item->i_value, p_item->i_min,                           p_item->i_max, wxDefaultPosition, wxDefaultSize,                           wxSL_LABELS | wxSL_HORIZONTAL );    slider->SetToolTip( wxU(p_item->psz_longtext) );    sizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );    sizer->Add( slider, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );    sizer->Layout();    this->SetSizerAndFit( sizer );}RangedIntConfigControl::~RangedIntConfigControl(){    ;}int RangedIntConfigControl::GetIntValue(){    return slider->GetValue();}/***************************************************************************** * FloatConfigControl implementation *****************************************************************************/BEGIN_EVENT_TABLE(FloatConfigControl, wxPanel)    EVT_TEXT(-1, FloatConfigControl::OnUpdate)END_EVENT_TABLE()FloatConfigControl::FloatConfigControl( vlc_object_t *p_this,                                        module_config_t *p_item,                                        wxWindow *parent )  : ConfigControl( p_this, p_item, parent ){    label = new wxStaticText(this, -1, wxU(p_item->psz_text));    textctrl = new wxTextCtrl( this, -1,                               wxString::Format(wxT("%f"),                                                p_item->f_value),                               wxDefaultPosition, wxDefaultSize,                               wxTE_PROCESS_ENTER );    textctrl->SetToolTip( wxU(p_item->psz_longtext) );    sizer->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );    sizer->Add( textctrl, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);    sizer->Layout();    this->SetSizerAndFit( sizer );}FloatConfigControl::~FloatConfigControl(){    ;}float FloatConfigControl::GetFloatValue(){    float f_value;    if( (wxSscanf(textctrl->GetValue(), wxT("%f"), &f_value) == 1) )        return f_value;    else return 0.0;}/***************************************************************************** * BoolConfigControl implementation *****************************************************************************/BEGIN_EVENT_TABLE(BoolConfigControl, wxPanel)    EVT_CHECKBOX(-1, BoolConfigControl::OnUpdate)END_EVENT_TABLE()BoolConfigControl::BoolConfigControl( vlc_object_t *p_this,                                      module_config_t *p_item,                                      wxWindow *parent )  : ConfigControl( p_this, p_item, parent ){    checkbox = new wxCheckBox( this, -1, wxU(p_item->psz_text) );    if( p_item->i_value ) checkbox->SetValue(TRUE);    checkbox->SetToolTip( wxU(p_item->psz_longtext) );    sizer->Add( checkbox, 0, wxALL, 5 );    sizer->Layout();    this->SetSizerAndFit( sizer );}BoolConfigControl::~BoolConfigControl(){    ;}int BoolConfigControl::GetIntValue(){    if( checkbox->IsChecked() ) return 1;    else return 0;}/***************************************************************************** * SectionConfigControl implementation *****************************************************************************/SectionConfigControl::SectionConfigControl( vlc_object_t *p_this,                                            module_config_t *p_item,                                            wxWindow *parent )  : ConfigControl( p_this, p_item, parent ){    delete sizer;    sizer = new wxBoxSizer( wxVERTICAL );    sizer->Add( new wxStaticText( this, -1, wxU( p_item->psz_text ) ) );    sizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND, 5 );    sizer->Layout();    this->SetSizerAndFit( sizer );}SectionConfigControl::~SectionConfigControl(){    ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -