void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB:: moveUpButtonHandler( wxCommandEvent& event ) { unsigned fieldNdx = getSelectedFieldNdx(); if( fieldNdx >= m_FieldsBuf.size() ) // traps the -1 case too return; // The first field which can be moved up is the second user field // so any field which id <= MANDATORY_FIELDS cannot be moved up if( fieldNdx <= MANDATORY_FIELDS ) return; if( !copyPanelToSelectedField() ) return; // swap the fieldNdx field with the one before it, in both the vector // and in the fieldListCtrl LIB_FIELD tmp = m_FieldsBuf[fieldNdx - 1]; m_FieldsBuf[fieldNdx - 1] = m_FieldsBuf[fieldNdx]; setRowItem( fieldNdx - 1, m_FieldsBuf[fieldNdx] ); m_FieldsBuf[fieldNdx - 1].SetId(fieldNdx - 1); m_FieldsBuf[fieldNdx] = tmp; setRowItem( fieldNdx, tmp ); m_FieldsBuf[fieldNdx].SetId(fieldNdx); updateDisplay( ); m_skipCopyFromPanel = true; setSelectedFieldNdx( fieldNdx - 1 ); m_skipCopyFromPanel = false; }
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB:: moveUpButtonHandler( wxCommandEvent& event ) { unsigned fieldNdx = getSelectedFieldNdx(); if( fieldNdx >= m_FieldsBuf.size() ) // traps the -1 case too return; if( fieldNdx < MANDATORY_FIELDS ) { wxBell(); return; } if( !copyPanelToSelectedField() ) return; // swap the fieldNdx field with the one before it, in both the vector // and in the fieldListCtrl LIB_FIELD tmp = m_FieldsBuf[fieldNdx - 1]; m_FieldsBuf[fieldNdx - 1] = m_FieldsBuf[fieldNdx]; setRowItem( fieldNdx - 1, m_FieldsBuf[fieldNdx] ); m_FieldsBuf[fieldNdx] = tmp; setRowItem( fieldNdx, tmp ); updateDisplay( ); m_skipCopyFromPanel = true; setSelectedFieldNdx( fieldNdx - 1 ); m_skipCopyFromPanel = false; }
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::deleteFieldButtonHandler( wxCommandEvent& event ) { unsigned fieldNdx = getSelectedFieldNdx(); if( fieldNdx >= m_FieldsBuf.size() ) // traps the -1 case too return; if( fieldNdx < MANDATORY_FIELDS ) { wxBell(); return; } m_skipCopyFromPanel = true; if( m_FieldsBuf[fieldNdx].GetText().IsEmpty() ) { m_FieldsBuf.erase( m_FieldsBuf.begin() + fieldNdx ); fieldListCtrl->DeleteItem( fieldNdx ); if( fieldNdx >= m_FieldsBuf.size() ) --fieldNdx; } else { m_FieldsBuf[fieldNdx].Empty(); copySelectedFieldToPanel(); } updateDisplay( ); setRowItem( fieldNdx, m_FieldsBuf[fieldNdx] ); setSelectedFieldNdx( fieldNdx ); m_skipCopyFromPanel = false; }
void DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::addFieldButtonHandler( wxCommandEvent& event ) { // in case m_FieldsBuf[REFERENCE].m_Orient has changed on screen only, grab // screen contents. if( !copyPanelToSelectedField() ) return; unsigned fieldNdx = m_FieldsBuf.size(); LIB_FIELD blank( fieldNdx ); m_FieldsBuf.push_back( blank ); m_FieldsBuf[fieldNdx].SetName( TEMPLATE_FIELDNAME::GetDefaultFieldName( fieldNdx ) ); setRowItem( fieldNdx, m_FieldsBuf[fieldNdx] ); m_skipCopyFromPanel = true; setSelectedFieldNdx( fieldNdx ); m_skipCopyFromPanel = false; }
/** * Function updateDisplay * update the listbox showing fields, according to the fields texts * must be called after a text change in fields, if this change is not an edition */ void updateDisplay( ) { for( unsigned ii = MANDATORY_FIELDS; ii<m_FieldsBuf.size(); ii++ ) setRowItem( ii, m_FieldsBuf[ii] ); }