void SQRCheckButton::OnLButtonClick( uint32 nFlags, int32 x, int32 y ) { //处理分组状态 //复选框,可同时选多个 if( GetStyle() & BTN_CHECK ) { //切换状态 m_bCheck = !m_bCheck; OnCheck( m_bCheck ); } //单选框,同时只有一个可被选中 else if( GetStyle() & BTN_RADIO ) SetCheck( true ); SQRButton::OnLButtonClick( nFlags, x, y ); }
void SQRCheckButton::SetCheck( bool bCheck ) { m_bCheck = bCheck; //单选框,同时只有一个可被选中 if( m_bCheck && (GetStyle() & BTN_RADIO) && GetGroupID() >= 0 ) { SQRWnd* pBrother = GetFirstBrother(); while( pBrother ) { if( GetClassName() == pBrother->GetClassName() && pBrother != this && GetGroupID() == static_cast<SQRCheckButton*>(pBrother)->GetGroupID() ) static_cast<SQRCheckButton*>(pBrother)->SetCheck( false ); pBrother = pBrother->FindNextWnd(); } } OnCheck( m_bCheck ); }
BMARefinerOptionsDialog::BMARefinerOptionsDialog(wxWindow* parent, const GeneralRefinerParams& current_genl, const LeaveOneOutParams& current_loo, const BlockEditingParams& current_be, const vector < string >& titles) : wxDialog(parent, -1, wxT("Alignment Refiner Options"), wxPoint(100,100), wxDefaultSize, wxDEFAULT_DIALOG_STYLE), rowTitles(titles) { wxBoxSizer *hSizer; rowsToExclude = current_loo.rowsToExclude; // wxScrolledWindow *panel = new wxScrolledWindow(this, -1, wxDefaultPosition, wxDefaultSize, wxVSCROLL); wxPanel *panel = new wxPanel(this, -1); // Dialog heading // wxBoxSizer *item1 = new wxBoxSizer( wxHORIZONTAL ); // wxStaticText *item2 = new wxStaticText( panel, ID_TEXT, wxT("Alignment Refiner Options"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); // item2->SetFont( wxFont( 16, wxROMAN, wxNORMAL, wxNORMAL ) ); // item1->Add( item2, 0, wxALIGN_CENTER|wxALL, 15 ); // ************************************************** // // Start GUI elements for general parameters // Cycles/trials wxStaticBox *item60 = new wxStaticBox( panel, -1, wxT("General Refiner Parameters") ); item60->SetFont( wxFont( 10, wxROMAN, wxNORMAL, wxBOLD ) ); wxStaticBoxSizer *item64 = new wxStaticBoxSizer( item60, wxVERTICAL ); wxFlexGridSizer *item61 = new wxFlexGridSizer( 2, 0, 0 ); item61->AddGrowableCol( 1 ); // # of cycles/trial wxStaticText *item63 = new wxStaticText( panel, ID_TEXT, wxT("Number of refinement cycles: "), wxDefaultPosition, wxDefaultSize, 0 ); item61->Add( item63, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); nCyclesSpin = new IntegerSpinCtrl(panel, 1, 10, 1, current_genl.nCycles, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(nCyclesSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(nCyclesSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item61->Add(hSizer, 0, wxALIGN_RIGHT); // Order of phases (LOO->BE or BE->LOO) int initialPOIndex = (current_genl.lnoFirst) ? 0 : 1; wxStaticText *item65 = new wxStaticText( panel, ID_TEXT, wxT("Phase order:"), wxDefaultPosition, wxDefaultSize, 0 ); item61->Add( item65, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); phaseOrderCombo = new wxComboBox( panel, ID_PHASE_ORDER_COMBOBOX, phaseOrderStrings[initialPOIndex], wxDefaultPosition, wxDefaultSize, sizeof(phaseOrderStrings)/sizeof(phaseOrderStrings[0]), phaseOrderStrings, wxCB_READONLY ); item61->Add( phaseOrderCombo, 0, wxALIGN_RIGHT|wxALL, 5 ); item64->Add( item61, 0, wxALIGN_CENTER_VERTICAL, 0 ); // ************************************************** // // Start GUI elements for LOO/LNO block shifting parameters wxStaticBox *item4 = new wxStaticBox( panel, -1, wxT("Block Shifting Parameters") ); item4->SetFont( wxFont( 10, wxROMAN, wxNORMAL, wxBOLD ) ); wxStaticBoxSizer *item3 = new wxStaticBoxSizer( item4, wxVERTICAL ); wxFlexGridSizer *item5 = new wxFlexGridSizer( 2, 0, 0 ); item5->AddGrowableCol( 1 ); // Do LOO/LNO??? wxStaticText *item66 = new wxStaticText( panel, ID_TEXT, wxT("Shift blocks?"), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item66, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); doLooCheck = new wxCheckBox( panel, ID_DO_LOO_CHECKBOX, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); doLooCheck->SetValue(current_loo.doLOO); item5->Add( doLooCheck, 0, wxALIGN_RIGHT|wxALL, 5 ); // LNO parameter (1 == L00; >1 = group size for running LNO) wxStaticText *item12 = new wxStaticText( panel, ID_TEXT, wxT("Group rows in sets of:"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); item5->Add( item12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); lnoSpin = new IntegerSpinCtrl(panel, 1, 50, 1, current_loo.lno, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(lnoSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(lnoSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item5->Add(hSizer, 0, wxALIGN_RIGHT); // Blank space wxStaticText *item24 = new wxStaticText( panel, ID_TEXT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item24, 0, wxALIGN_CENTER, 5 ); wxStaticText *item25 = new wxStaticText( panel, ID_TEXT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item25, 0, wxALIGN_CENTER, 5 ); // perform LOO/LNO on structures? wxStaticText *item6 = new wxStaticText( panel, ID_TEXT, wxT("Refine rows with structure:"), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item6, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); // wxStaticText *item7 = new wxStaticText( panel, ID_TEXT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); // item5->Add( item7, 0, wxALIGN_CENTRE|wxLEFT|wxTOP|wxBOTTOM, 5 ); fixStructCheck = new wxCheckBox( panel, ID_FIX_STRUCT_CHECKBOX, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); unsigned int nStructs = GetNumEmptyRowTitles(false); bool hasNoStructures = (nStructs == 0); bool hasOnlyStructures = (nStructs == rowTitles.size() - 1); if (hasNoStructures) fixStructCheck->SetValue(false); else if (hasOnlyStructures) fixStructCheck->SetValue(true); else fixStructCheck->SetValue(!current_loo.fixStructures); item5->Add( fixStructCheck, 0, wxALIGN_RIGHT|wxALL, 5 ); // align all non-structured rows? wxStaticText *item90 = new wxStaticText( panel, ID_TEXT, wxT("Refine all unstructured rows:"), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item90, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); // wxStaticText *item100 = new wxStaticText( panel, ID_TEXT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); // item5->Add( item100, 0, wxALIGN_CENTRE|wxLEFT|wxTOP|wxBOTTOM, 5 ); allUnstSeqCheck = new wxCheckBox( panel, ID_ALL_UNST_SEQ_CHECKBOX, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); allUnstSeqCheck->SetValue(!hasOnlyStructures); item5->Add( allUnstSeqCheck, 0, wxALIGN_RIGHT|wxALL, 5 ); // Order of row selection in LOO/LNO int initialSelOrderIndex = (int) current_loo.selectorCode; // wxStaticText *item68 = new wxStaticText( panel, ID_TEXT, wxT("Row selection order:"), wxDefaultPosition, wxDefaultSize, 0 ); // item5->Add( item68, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); looSelectionOrderCombo = new wxComboBox( panel, ID_LOO_SEL_ORDER_COMBOBOX, looSelectionOrderStrings[initialSelOrderIndex], wxDefaultPosition, wxDefaultSize, sizeof(looSelectionOrderStrings)/sizeof(looSelectionOrderStrings[0]), looSelectionOrderStrings, wxCB_READONLY ); looSelectionOrderCombo->Show(false); // item5->Add( looSelectionOrderCombo, 0, wxALIGN_RIGHT|wxALL, 5 ); // # of independent refinement trials // wxStaticText *item62 = new wxStaticText( panel, ID_TEXT, wxT("Number of refinement trials:"), wxDefaultPosition, wxDefaultSize, 0 ); // item5->Add( item62, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); nTrialsSpin = new IntegerSpinCtrl(panel, 1, 10, 1, current_genl.nTrials, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(nTrialsSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(nTrialsSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); nTrialsSpin->GetTextCtrl()->Show(false); nTrialsSpin->GetSpinButton()->Show(false); // item5->Add(hSizer, 0, wxALIGN_RIGHT); // use entire sequence length, or restricted to aligned footprint wxStaticText *item9 = new wxStaticText( panel, ID_TEXT, wxT("Refine using full sequence:"), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); // wxStaticText *item10 = new wxStaticText( panel, ID_TEXT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); // item5->Add( item10, 0, wxALIGN_CENTRE|wxLEFT|wxTOP|wxBOTTOM, 5 ); fullSeqCheck = new wxCheckBox( panel, ID_FULL_SEQ_CHECKBOX, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); fullSeqCheck->SetValue(current_loo.fullSequence); item5->Add( fullSeqCheck, 0, wxALIGN_RIGHT|wxALL, 5 ); // Allow extension/contraction of footprint (N-terminus) wxStaticText *item30 = new wxStaticText( panel, ID_TEXT, wxT("N-terminal footprint extension:"), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item30, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); nExtSpin = new IntegerSpinCtrl(panel, -1000, 1000, 5, current_loo.nExt, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(nExtSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(nExtSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item5->Add(hSizer, 0, wxALIGN_RIGHT); // Allow extension/contraction of footprint (C-terminus) wxStaticText *item33 = new wxStaticText( panel, ID_TEXT, wxT("C-terminal footprint extension:"), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item33, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); cExtSpin = new IntegerSpinCtrl(panel, -1000, 1000, 5, current_loo.cExt, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(cExtSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(cExtSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item5->Add(hSizer, 0, wxALIGN_RIGHT); // Blank space wxStaticText *item124 = new wxStaticText( panel, ID_TEXT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item124, 0, wxALIGN_CENTER, 5 ); wxStaticText *item125 = new wxStaticText( panel, ID_TEXT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); item5->Add( item125, 0, wxALIGN_CENTER, 5 ); // wxStaticText *item26 = new wxStaticText( panel, ID_TEXT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); // item5->Add( item26, 0, wxALIGN_CENTER, 5 ); // Block aligner's loop percentile parameter wxStaticText *item15 = new wxStaticText( panel, ID_TEXT, wxT("Loop percentile:"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); item5->Add( item15, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); loopPercentSpin = new FloatingPointSpinCtrl(panel, 0.0, 100.0, 0.1, current_loo.percentile, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(loopPercentSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(loopPercentSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item5->Add(hSizer, 0, wxALIGN_RIGHT); // Block aligner's loop extension parameter wxStaticText *item18 = new wxStaticText( panel, ID_TEXT, wxT("Loop extension:"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); item5->Add( item18, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); loopExtensionSpin = new IntegerSpinCtrl(panel, 0, 10000, 5, current_loo.extension, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(loopExtensionSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(loopExtensionSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item5->Add(hSizer, 0, wxALIGN_RIGHT); // Block aligner's loop cutoff parameter wxStaticText *item21 = new wxStaticText( panel, ID_TEXT, wxT("Loop cutoff (0=none):"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); item5->Add( item21, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); loopCutoffSpin = new IntegerSpinCtrl(panel, 0, 10000, 5, current_loo.cutoff, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(loopCutoffSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(loopCutoffSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item5->Add(hSizer, 0, wxALIGN_RIGHT); // Seed for RNG to define order of leaving out rows (useful for debugging!!) // wxStaticText *item27 = new wxStaticText( panel, ID_TEXT, wxT("Random number seed (0=no preference):"), wxDefaultPosition, wxDefaultSize, 0 ); // item5->Add( item27, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); rngSpin = new IntegerSpinCtrl(panel, 0, 1000000000, 3727851, current_loo.seed, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(rngSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(rngSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); rngSpin->GetTextCtrl()->Show(false); rngSpin->GetSpinButton()->Show(false); // item5->Add(hSizer, 0, wxALIGN_RIGHT); item3->Add( item5, 0, wxALIGN_CENTER_VERTICAL, 0 ); // ************************************************** // // Start GUI elements for block extension parameters. wxStaticBox *item37 = new wxStaticBox( panel, -1, wxT("Block Modification Parameters") ); item37->SetFont( wxFont( 10, wxROMAN, wxNORMAL, wxBOLD ) ); wxStaticBoxSizer *item36 = new wxStaticBoxSizer( item37, wxVERTICAL ); wxFlexGridSizer *item38 = new wxFlexGridSizer( 2, 0, 0 ); item38->AddGrowableCol( 1 ); // Allow block extension? int initialValue = (current_be.algMethod >= 0 && current_be.algMethod < eGreedyExtend) ? (int) current_be.algMethod : 0; wxStaticText *item39 = new wxStaticText( panel, ID_TEXT, wxT("Change block model?"), wxDefaultPosition, wxDefaultSize, 0 ); item38->Add( item39, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); esCombo= new wxComboBox( panel, ID_BE_COMBOBOX, wxT(""), wxDefaultPosition, wxDefaultSize, sizeof(blockEditAlgStrings)/sizeof(blockEditAlgStrings[0]), blockEditAlgStrings, wxCB_READONLY ); esCombo->SetValue(blockEditAlgStrings[initialValue]); item38->Add( esCombo, 0, wxALIGN_RIGHT|wxALL, 5 ); // Expand first? wxStaticText *item39b = new wxStaticText( panel, ID_TEXT, wxT("Expand first?"), wxDefaultPosition, wxDefaultSize, 0 ); item38->Add( item39b, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); extendFirstCheck = new wxCheckBox( panel, ID_BEXTEND_FIRST_CHECKBOX, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); extendFirstCheck->SetValue(current_be.extendFirst); item38->Add( extendFirstCheck, 0, wxALIGN_RIGHT|wxALL, 5 ); // Define a minimum block size (really only relevant for shrinking blocks... wxStaticText *item42 = new wxStaticText( panel, ID_TEXT, wxT("Minimum block size:"), wxDefaultPosition, wxDefaultSize, 0 ); item38->Add( item42, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); minBlockSizeSpin = new IntegerSpinCtrl(panel, 1, 100, 1, current_be.minBlockSize, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(minBlockSizeSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(minBlockSizeSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item38->Add(hSizer, 0, wxALIGN_RIGHT); // Block extension/shrinkage threshold 1: column of PSSM median score >= this value wxStaticText *item45 = new wxStaticText( panel, ID_TEXT, wxT("Median PSSM score threshold:"), wxDefaultPosition, wxDefaultSize, 0 ); item38->Add( item45, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); medianSpin = new IntegerSpinCtrl(panel, -20, 20, 1, current_be.median, wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(medianSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(medianSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item38->Add(hSizer, 0, wxALIGN_RIGHT); // Block extension/shrinkage threshold 2: % rows w/ PSSM score >= 0 must exceed this value wxStaticText *item48 = new wxStaticText( panel, ID_TEXT, wxT("Voting percentage (% of rows vote to extend):"), wxDefaultPosition, wxDefaultSize, 0 ); item38->Add( item48, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); rawVoteSpin = new FloatingPointSpinCtrl(panel, 0.0, 100.0, 1.0, 100.0*(1.0 - current_be.negRowsFraction), wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(rawVoteSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(rawVoteSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item38->Add(hSizer, 0, wxALIGN_RIGHT); // Block extension/shrinkage threshold 3: % of weight in column of PSSM median score >= 0 must exceed this value wxStaticText *item51 = new wxStaticText( panel, ID_TEXT, wxT("Weighted (by PSSM score) voting percentage:"), wxDefaultPosition, wxDefaultSize, 0 ); item38->Add( item51, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); hSizer = new wxBoxSizer(wxHORIZONTAL); weightedVoteSpin = new FloatingPointSpinCtrl(panel, 0.0, 100.0, 1.0, 100.0*(1.0 - current_be.negScoreFraction), wxDefaultPosition, wxSize(80, SPIN_CTRL_HEIGHT), 0, wxDefaultPosition, wxSize(-1, SPIN_CTRL_HEIGHT)); hSizer->Add(weightedVoteSpin->GetTextCtrl(), 0, wxALIGN_RIGHT|wxLEFT|wxTOP|wxBOTTOM, 5); hSizer->Add(weightedVoteSpin->GetSpinButton(), 0, wxALIGN_LEFT|wxRIGHT|wxTOP|wxBOTTOM, 5); item38->Add(hSizer, 0, wxALIGN_RIGHT); item36->Add( item38, 0, wxALIGN_CENTER|wxALL, 5 ); // Enable/disable block-editing controls based on state of 'extendCheck' & 'shrinkCheck'. wxCommandEvent dummyEvent; dummyEvent.SetId(ID_BE_COMBOBOX); OnCombo(dummyEvent); // Enable/disable loo controls based on state of shift blocks checkbox dummyEvent.SetId(ID_DO_LOO_CHECKBOX); OnCheck(dummyEvent); // Enable/disable specific controls based on selected row selection order dummyEvent.SetId(ID_LOO_SEL_ORDER_COMBOBOX); OnLooSelOrder(dummyEvent); // OK/Cancel buttons wxBoxSizer *item54 = new wxBoxSizer( wxHORIZONTAL ); wxButton *item55 = new wxButton( panel, wxID_OK, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); item55->SetDefault(); item54->Add( item55, 0, wxALIGN_CENTER|wxALL, 5 ); wxButton *item56 = new wxButton( panel, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); item54->Add( item56, 0, wxALIGN_CENTER|wxALL, 5 ); wxBoxSizer *item103 = new wxBoxSizer( wxHORIZONTAL ); // Place sub-sizers in outermost sizer. wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL ); item0->Add( item64, 0, wxALIGN_CENTER|wxALL, 5 ); // item0->Add( item3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); // item0->Add( item36, 0, wxALIGN_CENTER|wxALL, 5 ); item103->Add( item3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item103->Add( item36, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_TOP |wxALL, 5 ); item0->Add(item103, 0, wxALIGN_CENTER|wxALL, 2); item0->Add( item54, 0, wxALIGN_CENTER|wxALL, 5 ); panel->SetAutoLayout(true); panel->SetSizer(item0); item0->Fit(this); item0->Fit(panel); item0->SetSizeHints(this); // return item0; }