beautified

This commit is contained in:
dickelbeck 2007-08-03 18:59:14 +00:00
parent 2ba87b4a86
commit 7d8f2fcff0
2 changed files with 1126 additions and 993 deletions

View File

@ -1,6 +1,6 @@
/***************/ /***************/
/* hotkeys.cpp */ /* hotkeys.cpp */
/***************/ /***************/
#include "fctsys.h" #include "fctsys.h"
@ -17,61 +17,66 @@
/* variables externes */ /* variables externes */
/***********************************************************/ /***********************************************************/
void WinEDA_PcbFrame::OnHotKey(wxDC * DC, int hotkey, void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
EDA_BaseStruct * DrawStruct) 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
*/
{
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; /* 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
*/
{
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;
// code Ctrl A = 1, Ctr B = 2 ..., remapped, (more easy to understand in switch) // 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; MODULE* module = NULL;
if ( hotkey <= 0xFF) hotkey = toupper(hotkey); if( hotkey <= 0xFF )
switch (hotkey) hotkey = toupper( hotkey );
switch( hotkey )
{ {
case WXK_DELETE: case WXK_DELETE:
case WXK_NUMPAD_DELETE: case WXK_NUMPAD_DELETE:
OnHotkeyDeleteItem(DC, DrawStruct); OnHotkeyDeleteItem( DC, DrawStruct );
break; break;
case WXK_BACK: case WXK_BACK:
if( m_ID_current_state == ID_TRACK_BUTT && if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N )
GetScreen()->m_Active_Layer <= CMP_N )
{ {
bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) || bool ItemFree = (GetScreen()->m_CurrentItem == NULL )
(GetScreen()->m_CurrentItem->m_Flags == 0); || (GetScreen()->m_CurrentItem->m_Flags == 0);
if ( ItemFree ) if( ItemFree )
{ {
//no track is currently being edited - select a segment and remove it. //no track is currently being edited - select a segment and remove it.
DrawStruct = PcbGeneralLocateAndDisplay(); DrawStruct = PcbGeneralLocateAndDisplay();
//don't let backspace delete modules!! //don't let backspace delete modules!!
if ( DrawStruct && (DrawStruct->m_StructType == TYPETRACK if( DrawStruct && (DrawStruct->m_StructType == TYPETRACK
|| DrawStruct->m_StructType == TYPEVIA)) || DrawStruct->m_StructType == TYPEVIA) )
Delete_Segment(DC, (TRACK*)DrawStruct); Delete_Segment( DC, (TRACK*) DrawStruct );
GetScreen()->SetModify(); GetScreen()->SetModify();
} }
else if ( GetScreen()->m_CurrentItem->m_StructType == TYPETRACK ) else if( GetScreen()->m_CurrentItem->m_StructType == TYPETRACK )
{ {
//then an element is being edited - remove the last segment. //then an element is being edited - remove the last segment.
GetScreen()->m_CurrentItem = GetScreen()->m_CurrentItem =
Delete_Segment(DC, (TRACK*)GetScreen()->m_CurrentItem); Delete_Segment( DC, (TRACK*) GetScreen()->m_CurrentItem );
GetScreen()->SetModify(); GetScreen()->SetModify();
} }
} }
@ -79,23 +84,23 @@ sous le courseur souris
case WXK_END: case WXK_END:
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
End_Route( (TRACK *) (GetScreen()->m_CurrentItem), DC); End_Route( (TRACK*) (GetScreen()->m_CurrentItem), DC );
break; break;
case 'F' + GR_KB_CTRL : case 'F' + GR_KB_CTRL:
{ {
wxCommandEvent evt; wxCommandEvent evt;
evt.SetId(ID_FIND_ITEMS); evt.SetId( ID_FIND_ITEMS );
Process_Special_Functions(evt); Process_Special_Functions( evt );
} }
break; break;
case (int('O') + GR_KB_CTRL) : case 'O' + GR_KB_CTRL:
{ {
//try not to duplicate save, load code etc. //try not to duplicate save, load code etc.
wxCommandEvent evt; wxCommandEvent evt;
evt.SetId(ID_LOAD_FILE); evt.SetId( ID_LOAD_FILE );
Files_io(evt); Files_io( evt );
} }
break; break;
@ -103,118 +108,131 @@ sous le courseur souris
{ {
//try not to duplicate save, load code etc. //try not to duplicate save, load code etc.
wxCommandEvent evt; wxCommandEvent evt;
evt.SetId(ID_SAVE_BOARD); evt.SetId( ID_SAVE_BOARD );
Files_io(evt); Files_io( evt );
} }
break; break;
case 'V': // Switch to alternate layer and Place a via if a track is in progress 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 )
if ( ItemFree ) return;
if( ItemFree )
{ {
Other_Layer_Route( NULL, DC); Other_Layer_Route( NULL, DC );
break; break;
} }
if ( GetScreen()->m_CurrentItem->m_StructType != TYPETRACK ) if( GetScreen()->m_CurrentItem->m_StructType != TYPETRACK )
return; return;
if ( (GetScreen()->m_CurrentItem->m_Flags & IS_NEW) == 0 ) if( (GetScreen()->m_CurrentItem->m_Flags & IS_NEW) == 0 )
return; return;
Other_Layer_Route( (TRACK *) GetScreen()->m_CurrentItem, DC); Other_Layer_Route( (TRACK*) GetScreen()->m_CurrentItem, DC );
if ( DisplayOpt.ContrastModeDisplay ) if( DisplayOpt.ContrastModeDisplay )
GetScreen()->SetRefreshReq(); GetScreen()->SetRefreshReq();
break; break;
// Footprint edition: // Footprint edition:
case 'L': // toggle module "MODULE_is_LOCKED" status: case 'L': // toggle module "MODULE_is_LOCKED" status:
// get any module, locked or not locked and toggle its locked status // get any module, locked or not locked and toggle its locked status
if ( ItemFree ) if( ItemFree )
module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE | VISIBLE_ONLY ); module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE | VISIBLE_ONLY );
else if (GetScreen()->m_CurrentItem->m_StructType == TYPEMODULE) else if( GetScreen()->m_CurrentItem->m_StructType == TYPEMODULE )
module = (MODULE*)GetScreen()->m_CurrentItem; module = (MODULE*) GetScreen()->m_CurrentItem;
if( module ) if( module )
{ {
GetScreen()->m_CurrentItem = module; GetScreen()->m_CurrentItem = module;
module->SetLocked( !module->IsLocked() ); module->SetLocked( !module->IsLocked() );
module->Display_Infos(this); module->Display_Infos( this );
} }
break; break;
case 'G': // Start move (and drag) module case 'G': // Start move (and drag) module
case 'M': // Start move module case 'M': // Start move module
if ( PopupOn ) break; if( PopupOn )
break;
case 'R': // Rotation case 'R': // Rotation
case 'S': // move to other side case 'S': // move to other side
if ( ItemFree ) if( ItemFree )
{ {
module = Locate_Prefered_Module(m_Pcb, module = Locate_Prefered_Module( m_Pcb,
CURSEUR_OFF_GRILLE | IGNORE_LOCKED | VISIBLE_ONLY CURSEUR_OFF_GRILLE | IGNORE_LOCKED | VISIBLE_ONLY
#if defined(USE_MATCH_LAYER) #if defined (USE_MATCH_LAYER)
| MATCH_LAYER | MATCH_LAYER
#endif #endif
); );
if ( module == NULL ) // no footprint found if( module == NULL ) // no footprint found
{ {
module = Locate_Prefered_Module(m_Pcb, CURSEUR_OFF_GRILLE ); module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE );
if ( module ) // a footprint is found, but locked or on an other layer 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; module = NULL;
} }
} }
} }
else if (GetScreen()->m_CurrentItem->m_StructType == TYPEMODULE) else if( GetScreen()->m_CurrentItem->m_StructType == TYPEMODULE )
{ {
module = (MODULE*)GetScreen()->m_CurrentItem; module = (MODULE*) GetScreen()->m_CurrentItem;
// @todo: might need to add a layer check in if() below // @todo: might need to add a layer check in if() below
if ( (GetScreen()->m_CurrentItem->m_Flags == 0) && if( (GetScreen()->m_CurrentItem->m_Flags == 0)
module->IsLocked() ) && module->IsLocked() )
module = NULL; // do not move, rotate ... it. module = NULL; // do not move, rotate ... it.
} }
if ( module == NULL) break; if( module == NULL )
break;
GetScreen()->m_CurrentItem = module; GetScreen()->m_CurrentItem = module;
switch (hotkey)
switch( hotkey )
{ {
case 'R': // Rotation case 'R': // Rotation
Rotate_Module(DC, module, 900, TRUE); Rotate_Module( DC, module, 900, TRUE );
break; break;
case 'S': // move to other side case 'S': // move to other side
Change_Side_Module(module, DC); Change_Side_Module( module, DC );
break; break;
case 'G': // Start move (and drag) module case 'G': // Start move (and drag) module
g_Drag_Pistes_On = TRUE; g_Drag_Pistes_On = TRUE;
// fall through // fall through
case 'M': // Start move module case 'M': // Start move module
StartMove_Module( module, DC); StartMove_Module( module, DC );
break; break;
} }
module->Display_Infos(this);
module->Display_Infos( this );
break; break;
} }
} }
/***********************************************************/ /***********************************************************/
void WinEDA_ModuleEditFrame::OnHotKey(wxDC * DC, int hotkey, void WinEDA_ModuleEditFrame::OnHotKey( wxDC* DC, int hotkey,
EDA_BaseStruct * DrawStruct) EDA_BaseStruct* DrawStruct )
/***********************************************************/ /***********************************************************/
/* Gestion des commandes rapides (Raccourcis claviers) concernant l'element
sous le courseur souris
Les majuscules/minuscules sont indifferenciees
*/
{
bool PopupOn = GetScreen()->m_CurrentItem &&
GetScreen()->m_CurrentItem->m_Flags;
if ( hotkey == 0 ) return;
switch (hotkey) /* Gestion des commandes rapides (Raccourcis claviers) concernant l'element
* sous le courseur souris
* Les majuscules/minuscules sont indifferenciees
*/
{
bool PopupOn = GetScreen()->m_CurrentItem
&& GetScreen()->m_CurrentItem->m_Flags;
if( hotkey == 0 )
return;
switch( hotkey )
{ {
case WXK_DELETE: case WXK_DELETE:
case WXK_NUMPAD_DELETE: case WXK_NUMPAD_DELETE:
if ( PopupOn ) break; if( PopupOn )
break;
break; break;
case 'r': // Rotation case 'r': // Rotation
@ -235,53 +253,61 @@ bool PopupOn = GetScreen()->m_CurrentItem &&
case 'm': case 'm':
case 'M': // Start move drawlibpart case 'M': // Start move drawlibpart
if ( PopupOn ) break; if( PopupOn )
break;
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.
*/
{
bool ItemFree = (GetScreen()->m_CurrentItem == NULL ) ||
(GetScreen()->m_CurrentItem->m_Flags == 0);
switch ( m_ID_current_state ) /******************************************************************************/
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.
*/
{
bool ItemFree = (GetScreen()->m_CurrentItem == NULL )
|| (GetScreen()->m_CurrentItem->m_Flags == 0);
switch( m_ID_current_state )
{ {
case ID_TRACK_BUTT: case ID_TRACK_BUTT:
if ( GetScreen()->m_Active_Layer > CMP_N ) return FALSE; if( GetScreen()->m_Active_Layer > CMP_N )
if ( ItemFree ) return FALSE;
if( ItemFree )
{ {
DrawStruct = PcbGeneralLocateAndDisplay(); DrawStruct = PcbGeneralLocateAndDisplay();
if ( DrawStruct && DrawStruct->m_StructType != TYPETRACK ) return FALSE; if( DrawStruct && DrawStruct->m_StructType != TYPETRACK )
Delete_Track(DC, (TRACK*)DrawStruct); return FALSE;
Delete_Track( DC, (TRACK*) DrawStruct );
} }
else if ( GetScreen()->m_CurrentItem->m_StructType == TYPETRACK ) else if( GetScreen()->m_CurrentItem->m_StructType == TYPETRACK )
{ {
GetScreen()->m_CurrentItem = GetScreen()->m_CurrentItem =
Delete_Segment(DC, (TRACK*)GetScreen()->m_CurrentItem); Delete_Segment( DC, (TRACK*) GetScreen()->m_CurrentItem );
GetScreen()->SetModify(); GetScreen()->SetModify();
return TRUE; return TRUE;
} }
break; break;
case ID_COMPONENT_BUTT: case ID_COMPONENT_BUTT:
if ( ItemFree ) if( ItemFree )
{ {
MODULE * module = Locate_Prefered_Module(m_Pcb, CURSEUR_ON_GRILLE); MODULE* module = Locate_Prefered_Module( m_Pcb, CURSEUR_ON_GRILLE );
if ( module == NULL ) return FALSE; if( module == NULL )
if( ! IsOK(this, _("Delete module?")) ) return FALSE; return FALSE;
RemoveStruct(module, DC); if( !IsOK( this, _( "Delete module?" ) ) )
return FALSE;
RemoveStruct( module, DC );
} }
else return FALSE; else
return FALSE;
break; break;
default: default:

File diff suppressed because it is too large Load Diff