Loading pcbnew/hotkeys.cpp +259 −233 Original line number Diff line number Diff line Loading @@ -20,30 +20,35 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct ) /***********************************************************/ /* Gestion des commandes rapides (Raccourcis claviers) concernant l'element sous le courseur souris Les majuscules/minuscules sont indifferenciees touche DELETE: Effacement (Module ou piste selon commande en cours) touche V: Place via en cours de trace de piste touche R: Rotation module touche S: Change couche module (Composant <-> Cuivre) touche M: Start Move module touche G: Start Drag module * sous le courseur souris * Les majuscules/minuscules sont indifferenciees * touche DELETE: Effacement (Module ou piste selon commande en cours) * touche V: Place via en cours de trace de piste * touche R: Rotation module * touche S: Change couche module (Composant <-> Cuivre) * touche M: Start Move module * touche G: Start Drag module */ { bool PopupOn = GetScreen()->m_CurrentItem && GetScreen()->m_CurrentItem->m_Flags; bool ItemFree = (GetScreen()->m_CurrentItem == 0 ) || (GetScreen()->m_CurrentItem->m_Flags == 0); bool PopupOn = GetScreen()->m_CurrentItem && GetScreen()->m_CurrentItem->m_Flags; bool ItemFree = (GetScreen()->m_CurrentItem == 0 ) || (GetScreen()->m_CurrentItem->m_Flags == 0); if ( hotkey == 0 ) return; if( hotkey == 0 ) return; // code Ctrl A = 1, Ctr B = 2 ..., remapped, (more easy to understand in switch) if ( hotkey & GR_KB_CTRL ) hotkey += 'A' - 1; if( hotkey & GR_KB_CTRL ) hotkey += 'A' - 1; MODULE* module = NULL; if ( hotkey <= 0xFF) hotkey = toupper(hotkey); if( hotkey <= 0xFF ) hotkey = toupper( hotkey ); switch( hotkey ) { case WXK_DELETE: Loading @@ -52,15 +57,15 @@ sous le courseur souris break; case WXK_BACK: if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N ) if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N ) { bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || (GetScreen()->m_CurrentItem->m_Flags == 0); bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || (GetScreen()->m_CurrentItem->m_Flags == 0); if( ItemFree ) { //no track is currently being edited - select a segment and remove it. DrawStruct = PcbGeneralLocateAndDisplay(); //don't let backspace delete modules!! if( DrawStruct && (DrawStruct->m_StructType == TYPETRACK || DrawStruct->m_StructType == TYPEVIA) ) Loading Loading @@ -90,7 +95,7 @@ sous le courseur souris } break; case (int('O') + GR_KB_CTRL) : case 'O' + GR_KB_CTRL: { //try not to duplicate save, load code etc. wxCommandEvent evt; Loading @@ -109,7 +114,8 @@ sous le courseur souris break; case 'V': // Switch to alternate layer and Place a via if a track is in progress if ( m_ID_current_state != ID_TRACK_BUTT ) return; if( m_ID_current_state != ID_TRACK_BUTT ) return; if( ItemFree ) { Other_Layer_Route( NULL, DC ); Loading Loading @@ -141,7 +147,9 @@ sous le courseur souris case 'G': // Start move (and drag) module case 'M': // Start move module if ( PopupOn ) break; if( PopupOn ) break; case 'R': // Rotation case 'S': // move to other side if( ItemFree ) Loading @@ -157,23 +165,26 @@ sous le courseur souris module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE ); if( module ) // a footprint is found, but locked or on an other layer { if ( module->IsLocked() ) DisplayInfo(this, _("Footprint found, but locked") ); if( module->IsLocked() ) DisplayInfo( this, _( "Footprint found, but locked" ) ); module = NULL; } } } else if( GetScreen()->m_CurrentItem->m_StructType == TYPEMODULE ) { module = (MODULE*) GetScreen()->m_CurrentItem; // @todo: might need to add a layer check in if() below if ( (GetScreen()->m_CurrentItem->m_Flags == 0) && module->IsLocked() ) if( (GetScreen()->m_CurrentItem->m_Flags == 0) && module->IsLocked() ) module = NULL; // do not move, rotate ... it. } if ( module == NULL) break; if( module == NULL ) break; GetScreen()->m_CurrentItem = module; switch( hotkey ) { case 'R': // Rotation Loading @@ -186,11 +197,14 @@ sous le courseur souris case 'G': // Start move (and drag) module g_Drag_Pistes_On = TRUE; // fall through case 'M': // Start move module StartMove_Module( module, DC ); break; } module->Display_Infos( this ); break; } Loading @@ -201,20 +215,24 @@ sous le courseur souris void WinEDA_ModuleEditFrame::OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct ) /***********************************************************/ /* Gestion des commandes rapides (Raccourcis claviers) concernant l'element sous le courseur souris Les majuscules/minuscules sont indifferenciees * sous le courseur souris * Les majuscules/minuscules sont indifferenciees */ { bool PopupOn = GetScreen()->m_CurrentItem && GetScreen()->m_CurrentItem->m_Flags; if ( hotkey == 0 ) return; bool PopupOn = GetScreen()->m_CurrentItem && GetScreen()->m_CurrentItem->m_Flags; if( hotkey == 0 ) return; switch( hotkey ) { case WXK_DELETE: case WXK_NUMPAD_DELETE: if ( PopupOn ) break; if( PopupOn ) break; break; case 'r': // Rotation Loading @@ -235,33 +253,38 @@ bool PopupOn = GetScreen()->m_CurrentItem && case 'm': case 'M': // Start move drawlibpart if ( PopupOn ) break; if( PopupOn ) break; break; } } /******************************************************************************/ bool WinEDA_PcbFrame::OnHotkeyDeleteItem( wxDC* DC, EDA_BaseStruct* DrawStruct ) /******************************************************************************/ /* Efface l'item pointe par la souris, en reponse a la touche "Del" Effet dependant de l'outil selectionne: Outil trace de pistes Efface le segment en cours ou la piste si pas d'element Outil module: Efface le module. * Effet dependant de l'outil selectionne: * Outil trace de pistes * Efface le segment en cours ou la piste si pas d'element * Outil module: * Efface le module. */ { bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || (GetScreen()->m_CurrentItem->m_Flags == 0); bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || (GetScreen()->m_CurrentItem->m_Flags == 0); switch( m_ID_current_state ) { case ID_TRACK_BUTT: if ( GetScreen()->m_Active_Layer > CMP_N ) return FALSE; if( GetScreen()->m_Active_Layer > CMP_N ) return FALSE; if( ItemFree ) { DrawStruct = PcbGeneralLocateAndDisplay(); if ( DrawStruct && DrawStruct->m_StructType != TYPETRACK ) return FALSE; if( DrawStruct && DrawStruct->m_StructType != TYPETRACK ) return FALSE; Delete_Track( DC, (TRACK*) DrawStruct ); } else if( GetScreen()->m_CurrentItem->m_StructType == TYPETRACK ) Loading @@ -277,11 +300,14 @@ bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || if( ItemFree ) { MODULE* module = Locate_Prefered_Module( m_Pcb, CURSEUR_ON_GRILLE ); if ( module == NULL ) return FALSE; if( ! IsOK(this, _("Delete module?")) ) return FALSE; if( module == NULL ) return FALSE; if( !IsOK( this, _( "Delete module?" ) ) ) return FALSE; RemoveStruct( module, DC ); } else return FALSE; else return FALSE; break; default: Loading Loading
pcbnew/hotkeys.cpp +259 −233 Original line number Diff line number Diff line Loading @@ -20,30 +20,35 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct ) /***********************************************************/ /* Gestion des commandes rapides (Raccourcis claviers) concernant l'element sous le courseur souris Les majuscules/minuscules sont indifferenciees touche DELETE: Effacement (Module ou piste selon commande en cours) touche V: Place via en cours de trace de piste touche R: Rotation module touche S: Change couche module (Composant <-> Cuivre) touche M: Start Move module touche G: Start Drag module * sous le courseur souris * Les majuscules/minuscules sont indifferenciees * touche DELETE: Effacement (Module ou piste selon commande en cours) * touche V: Place via en cours de trace de piste * touche R: Rotation module * touche S: Change couche module (Composant <-> Cuivre) * touche M: Start Move module * touche G: Start Drag module */ { bool PopupOn = GetScreen()->m_CurrentItem && GetScreen()->m_CurrentItem->m_Flags; bool ItemFree = (GetScreen()->m_CurrentItem == 0 ) || (GetScreen()->m_CurrentItem->m_Flags == 0); bool PopupOn = GetScreen()->m_CurrentItem && GetScreen()->m_CurrentItem->m_Flags; bool ItemFree = (GetScreen()->m_CurrentItem == 0 ) || (GetScreen()->m_CurrentItem->m_Flags == 0); if ( hotkey == 0 ) return; if( hotkey == 0 ) return; // code Ctrl A = 1, Ctr B = 2 ..., remapped, (more easy to understand in switch) if ( hotkey & GR_KB_CTRL ) hotkey += 'A' - 1; if( hotkey & GR_KB_CTRL ) hotkey += 'A' - 1; MODULE* module = NULL; if ( hotkey <= 0xFF) hotkey = toupper(hotkey); if( hotkey <= 0xFF ) hotkey = toupper( hotkey ); switch( hotkey ) { case WXK_DELETE: Loading @@ -52,15 +57,15 @@ sous le courseur souris break; case WXK_BACK: if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N ) if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N ) { bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || (GetScreen()->m_CurrentItem->m_Flags == 0); bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || (GetScreen()->m_CurrentItem->m_Flags == 0); if( ItemFree ) { //no track is currently being edited - select a segment and remove it. DrawStruct = PcbGeneralLocateAndDisplay(); //don't let backspace delete modules!! if( DrawStruct && (DrawStruct->m_StructType == TYPETRACK || DrawStruct->m_StructType == TYPEVIA) ) Loading Loading @@ -90,7 +95,7 @@ sous le courseur souris } break; case (int('O') + GR_KB_CTRL) : case 'O' + GR_KB_CTRL: { //try not to duplicate save, load code etc. wxCommandEvent evt; Loading @@ -109,7 +114,8 @@ sous le courseur souris break; case 'V': // Switch to alternate layer and Place a via if a track is in progress if ( m_ID_current_state != ID_TRACK_BUTT ) return; if( m_ID_current_state != ID_TRACK_BUTT ) return; if( ItemFree ) { Other_Layer_Route( NULL, DC ); Loading Loading @@ -141,7 +147,9 @@ sous le courseur souris case 'G': // Start move (and drag) module case 'M': // Start move module if ( PopupOn ) break; if( PopupOn ) break; case 'R': // Rotation case 'S': // move to other side if( ItemFree ) Loading @@ -157,23 +165,26 @@ sous le courseur souris module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE ); if( module ) // a footprint is found, but locked or on an other layer { if ( module->IsLocked() ) DisplayInfo(this, _("Footprint found, but locked") ); if( module->IsLocked() ) DisplayInfo( this, _( "Footprint found, but locked" ) ); module = NULL; } } } else if( GetScreen()->m_CurrentItem->m_StructType == TYPEMODULE ) { module = (MODULE*) GetScreen()->m_CurrentItem; // @todo: might need to add a layer check in if() below if ( (GetScreen()->m_CurrentItem->m_Flags == 0) && module->IsLocked() ) if( (GetScreen()->m_CurrentItem->m_Flags == 0) && module->IsLocked() ) module = NULL; // do not move, rotate ... it. } if ( module == NULL) break; if( module == NULL ) break; GetScreen()->m_CurrentItem = module; switch( hotkey ) { case 'R': // Rotation Loading @@ -186,11 +197,14 @@ sous le courseur souris case 'G': // Start move (and drag) module g_Drag_Pistes_On = TRUE; // fall through case 'M': // Start move module StartMove_Module( module, DC ); break; } module->Display_Infos( this ); break; } Loading @@ -201,20 +215,24 @@ sous le courseur souris void WinEDA_ModuleEditFrame::OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct ) /***********************************************************/ /* Gestion des commandes rapides (Raccourcis claviers) concernant l'element sous le courseur souris Les majuscules/minuscules sont indifferenciees * sous le courseur souris * Les majuscules/minuscules sont indifferenciees */ { bool PopupOn = GetScreen()->m_CurrentItem && GetScreen()->m_CurrentItem->m_Flags; if ( hotkey == 0 ) return; bool PopupOn = GetScreen()->m_CurrentItem && GetScreen()->m_CurrentItem->m_Flags; if( hotkey == 0 ) return; switch( hotkey ) { case WXK_DELETE: case WXK_NUMPAD_DELETE: if ( PopupOn ) break; if( PopupOn ) break; break; case 'r': // Rotation Loading @@ -235,33 +253,38 @@ bool PopupOn = GetScreen()->m_CurrentItem && case 'm': case 'M': // Start move drawlibpart if ( PopupOn ) break; if( PopupOn ) break; break; } } /******************************************************************************/ bool WinEDA_PcbFrame::OnHotkeyDeleteItem( wxDC* DC, EDA_BaseStruct* DrawStruct ) /******************************************************************************/ /* Efface l'item pointe par la souris, en reponse a la touche "Del" Effet dependant de l'outil selectionne: Outil trace de pistes Efface le segment en cours ou la piste si pas d'element Outil module: Efface le module. * Effet dependant de l'outil selectionne: * Outil trace de pistes * Efface le segment en cours ou la piste si pas d'element * Outil module: * Efface le module. */ { bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || (GetScreen()->m_CurrentItem->m_Flags == 0); bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || (GetScreen()->m_CurrentItem->m_Flags == 0); switch( m_ID_current_state ) { case ID_TRACK_BUTT: if ( GetScreen()->m_Active_Layer > CMP_N ) return FALSE; if( GetScreen()->m_Active_Layer > CMP_N ) return FALSE; if( ItemFree ) { DrawStruct = PcbGeneralLocateAndDisplay(); if ( DrawStruct && DrawStruct->m_StructType != TYPETRACK ) return FALSE; if( DrawStruct && DrawStruct->m_StructType != TYPETRACK ) return FALSE; Delete_Track( DC, (TRACK*) DrawStruct ); } else if( GetScreen()->m_CurrentItem->m_StructType == TYPETRACK ) Loading @@ -277,11 +300,14 @@ bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || if( ItemFree ) { MODULE* module = Locate_Prefered_Module( m_Pcb, CURSEUR_ON_GRILLE ); if ( module == NULL ) return FALSE; if( ! IsOK(this, _("Delete module?")) ) return FALSE; if( module == NULL ) return FALSE; if( !IsOK( this, _( "Delete module?" ) ) ) return FALSE; RemoveStruct( module, DC ); } else return FALSE; else return FALSE; break; default: Loading