diff --git a/common/base_screen.cpp b/common/base_screen.cpp index 328a6e804b..0592888c0f 100644 --- a/common/base_screen.cpp +++ b/common/base_screen.cpp @@ -390,6 +390,39 @@ int BASE_SCREEN::GetGridId() } +wxPoint BASE_SCREEN::GetNearestGridPosition( const wxPoint& aPosition, wxRealPoint* aGridSize ) +{ + wxPoint pt; + wxRealPoint gridSize; + + if( aGridSize ) + gridSize = *aGridSize; + else + gridSize = GetGridSize(); + + wxPoint gridOrigin = m_GridOrigin; + + double offset = fmod( gridOrigin.x, gridSize.x ); + int x = wxRound( (aPosition.x - offset) / gridSize.x ); + pt.x = wxRound( x * gridSize.x + offset ); + + offset = fmod( gridOrigin.y, gridSize.y ); + int y = wxRound( (aPosition.y - offset) / gridSize.y ); + pt.y = wxRound ( y * gridSize.y + offset ); + + return pt; +} + + +wxPoint BASE_SCREEN::GetCursorPosition( bool aOnGrid, wxRealPoint* aGridSize ) +{ + if( aOnGrid ) + return GetNearestGridPosition( m_Curseur, aGridSize ); + + return m_Curseur; +} + + /* free the undo and the redo lists */ void BASE_SCREEN::ClearUndoRedoList() diff --git a/common/drawframe.cpp b/common/drawframe.cpp index 83c1090456..993057ced5 100644 --- a/common/drawframe.cpp +++ b/common/drawframe.cpp @@ -176,7 +176,7 @@ void EDA_DRAW_FRAME::ReCreateMenuBar() // Virtual function -void EDA_DRAW_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) +void EDA_DRAW_FRAME::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, EDA_ITEM* aItem ) { } diff --git a/common/drawpanel.cpp b/common/drawpanel.cpp index f94854e12f..93e9b7d7bd 100644 --- a/common/drawpanel.cpp +++ b/common/drawpanel.cpp @@ -778,14 +778,17 @@ bool EDA_DRAW_PANEL::OnRightClick( wxMouseEvent& event ) wxPoint pos; wxMenu MasterMenu; - pos = event.GetPosition(); + INSTALL_UNBUFFERED_DC( dc, this ); + + pos = event.GetLogicalPosition( dc ); if( !m_Parent->OnRightClick( pos, &MasterMenu ) ) return false; m_Parent->AddMenuZoomAndGrid( &MasterMenu ); - m_IgnoreMouseEvents = TRUE; + pos = event.GetPosition(); + m_IgnoreMouseEvents = true; PopupMenu( &MasterMenu, pos ); MouseToCursorSchema(); m_IgnoreMouseEvents = false; @@ -940,14 +943,14 @@ void EDA_DRAW_PANEL::OnMouseEvent( wxMouseEvent& event ) localrealbutt |= localbutt; /* compensation default wxGTK */ + INSTALL_UNBUFFERED_DC( DC, this ); + DC.SetBackground( *wxBLACK_BRUSH ); + /* Compute the cursor position in screen (device) units. */ wxPoint pos = CalcUnscrolledPosition( event.GetPosition() ); /* Compute the cursor position in drawing (logical) units. */ - screen->m_MousePosition = CursorRealPosition( pos ); - - INSTALL_UNBUFFERED_DC( DC, this ); - DC.SetBackground( *wxBLACK_BRUSH ); + screen->m_MousePosition = event.GetLogicalPosition( DC ); int kbstat = 0; @@ -967,7 +970,7 @@ void EDA_DRAW_PANEL::OnMouseEvent( wxMouseEvent& event ) // Calling Double Click and Click functions : if( localbutt == (int) ( GR_M_LEFT_DOWN | GR_M_DCLICK ) ) { - m_Parent->OnLeftDClick( &DC, pos ); + m_Parent->OnLeftDClick( &DC, screen->m_MousePosition ); // inhibit a response to the mouse left button release, // because we have a double click, and we do not want a new @@ -979,7 +982,7 @@ void EDA_DRAW_PANEL::OnMouseEvent( wxMouseEvent& event ) // A block command is in progress: a left up is the end of block // or this is the end of a double click, already seen if( screen->m_BlockLocate.m_State==STATE_NO_BLOCK && !s_IgnoreNextLeftButtonRelease ) - m_Parent->OnLeftClick( &DC, pos ); + m_Parent->OnLeftClick( &DC, screen->m_MousePosition ); s_IgnoreNextLeftButtonRelease = false; } @@ -1217,7 +1220,7 @@ void EDA_DRAW_PANEL::OnKeyEvent( wxKeyEvent& event ) } } - /* Some key commands use the current mouse position: refresh it */ + // Some key commands use the current mouse position: refresh it. pos = wxGetMousePosition() - GetScreenPosition(); // Compute the cursor position in drawing units. Also known as logical units to wxDC. diff --git a/common/zoom.cpp b/common/zoom.cpp index ae7f695aa5..01d7a9f59f 100644 --- a/common/zoom.cpp +++ b/common/zoom.cpp @@ -51,21 +51,9 @@ void EDA_DRAW_FRAME::RedrawScreen( bool aWarpPointer ) */ void EDA_DRAW_FRAME::PutOnGrid( wxPoint* aCoord , wxRealPoint* aGridSize ) { - wxRealPoint grid_size; + wxCHECK_RET( aCoord != NULL, wxT( "Cannot pull NULL coordinate pointer on grid." ) ); - if( aGridSize ) - grid_size = *aGridSize; - else - grid_size = GetBaseScreen()->GetGridSize(); - - const wxPoint& grid_origin = GetBaseScreen()->GetGridOrigin(); - double offset = fmod( grid_origin.x, grid_size.x ); - int tmp = wxRound( (aCoord->x - offset) / grid_size.x ); - aCoord->x = wxRound( tmp * grid_size.x + offset ); - - offset = fmod( grid_origin.y, grid_size.y ); - tmp = wxRound( (aCoord->y - offset) / grid_size.y ); - aCoord->y = wxRound ( tmp * grid_size.y + offset ); + *aCoord = GetBaseScreen()->GetNearestGridPosition( *aCoord, aGridSize ); } diff --git a/eeschema/controle.cpp b/eeschema/controle.cpp index 6757c8dc9f..d6447dc5ab 100644 --- a/eeschema/controle.cpp +++ b/eeschema/controle.cpp @@ -23,55 +23,60 @@ /** - * Function SchematicGeneralLocateAndDisplay - * Overlaid function - * Find the schematic item at cursor position - * the priority order is: - * - marker - * - noconnect - * - junction - * - wire/bus/entry - * - label - * - pin - * - component - * @return an EDA_ITEM pointer on the item or NULL if no item found - * @param IncludePin = true to search for pins, false to ignore them + * Function LocateAndShowItem + * search the schematic at \a aPosition in logical (drawing) units for any item. + *

+ * The search is first performed at \a aPosition which may be off grid. If no item is + * found at \a aPosition, the search is repeated for the nearest grid position to \a + * aPosition. * - * For some items, characteristics are displayed on the screen. + * The search order is as follows: + *

+ * @param aPosition The wxPoint on the schematic to search. + * @param aIncludePin = true to search for pins, false to ignore them + * @return A SCH_ITEM pointer on the item or NULL if no item found */ -SCH_ITEM* SCH_EDIT_FRAME::SchematicGeneralLocateAndDisplay( bool IncludePin ) +SCH_ITEM* SCH_EDIT_FRAME::LocateAndShowItem( const wxPoint& aPosition, bool aIncludePin ) { - SCH_ITEM* DrawStruct; + SCH_ITEM* item; wxString msg; - wxPoint mouse_position = GetScreen()->m_MousePosition; LIB_PIN* Pin = NULL; SCH_COMPONENT* LibItem = NULL; + wxPoint gridPosition = GetScreen()->GetNearestGridPosition( aPosition ); - DrawStruct = SchematicGeneralLocateAndDisplay( mouse_position, IncludePin ); + item = LocateItem( aPosition, aIncludePin ); - if( !DrawStruct && ( mouse_position != GetScreen()->m_Curseur) ) - { - DrawStruct = SchematicGeneralLocateAndDisplay( GetScreen()->m_Curseur, IncludePin ); - } + if( !item && aPosition != gridPosition ) + item = LocateItem( gridPosition, aIncludePin ); - if( !DrawStruct ) + if( !item ) return NULL; /* Cross probing to pcbnew if a pin or a component is found */ - switch( DrawStruct->Type() ) + switch( item->Type() ) { case SCH_FIELD_T: case LIB_FIELD_T: - LibItem = (SCH_COMPONENT*) DrawStruct->GetParent(); - SendMessageToPCBNEW( DrawStruct, LibItem ); + LibItem = (SCH_COMPONENT*) item->GetParent(); + SendMessageToPCBNEW( item, LibItem ); break; case SCH_COMPONENT_T: Pin = GetScreen()->GetPin( GetScreen()->m_Curseur, &LibItem ); + if( Pin ) break; // Priority is probing a pin first - LibItem = (SCH_COMPONENT*) DrawStruct; - SendMessageToPCBNEW( DrawStruct, LibItem ); + + LibItem = (SCH_COMPONENT*) item; + SendMessageToPCBNEW( item, LibItem ); break; default: @@ -79,85 +84,71 @@ SCH_ITEM* SCH_EDIT_FRAME::SchematicGeneralLocateAndDisplay( bool IncludePin ) break; case LIB_PIN_T: - Pin = (LIB_PIN*) DrawStruct; + Pin = (LIB_PIN*) item; break; } if( Pin ) { - /* Force display pin information (the previous display could be a - * component info) */ + // Force display pin information (the previous display could be a component info) Pin->DisplayInfo( this ); if( LibItem ) AppendMsgPanel( LibItem->GetRef( GetSheet() ), LibItem->GetField( VALUE )->m_Text, DARKCYAN ); - // Cross probing:2 - pin found, and send a locate pin command to - // pcbnew (highlight net) + // Cross probing:2 - pin found, and send a locate pin command to pcbnew (highlight net) SendMessageToPCBNEW( Pin, LibItem ); } - return DrawStruct; + + return item; } /** - * Function SchematicGeneralLocateAndDisplay - * Overlaid function - * Find the schematic item at a given position - * the priority order is: - * - marker - * - noconnect - * - junction - * - wire/bus/entry - * - label - * - pin - * - component - * @return an EDA_ITEM pointer on the item or NULL if no item found - * @param refpoint = the wxPoint location where to search - * @param IncludePin = true to search for pins, false to ignore them - * - * For some items, characteristics are displayed on the screen. + * Function LocateItem + * searches for an item at \a aPosition. + * @param aPosition The wxPoint location where to search. + * @param aIncludePin True to search for pins, false to ignore them. + * @return The SCH_ITEM pointer of the item or NULL if no item found. */ -SCH_ITEM* SCH_EDIT_FRAME::SchematicGeneralLocateAndDisplay( const wxPoint& refpoint, - bool IncludePin ) +SCH_ITEM* SCH_EDIT_FRAME::LocateItem( const wxPoint& aPosition, bool aIncludePin ) { - SCH_ITEM* DrawStruct; + SCH_ITEM* item; LIB_PIN* Pin; SCH_COMPONENT* LibItem; wxString Text; wxString msg; - DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), MARKER_T ); + item = (SCH_ITEM*) PickStruct( aPosition, GetScreen(), MARKER_T ); - if( DrawStruct ) + if( item ) { - DrawStruct->DisplayInfo( this ); - return DrawStruct; + item->DisplayInfo( this ); + return item; } - DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), NO_CONNECT_T ); + item = (SCH_ITEM*) PickStruct( aPosition, GetScreen(), NO_CONNECT_T ); - if( DrawStruct ) + if( item ) { ClearMsgPanel(); - return DrawStruct; + return item; } - DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), JUNCTION_T ); + item = (SCH_ITEM*) PickStruct( aPosition, GetScreen(), JUNCTION_T ); - if( DrawStruct ) + if( item ) { ClearMsgPanel(); - return DrawStruct; + return item; } - DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), - WIRE_T | BUS_T | BUS_ENTRY_T ); + item = (SCH_ITEM*) PickStruct( aPosition, GetScreen(), WIRE_T | BUS_T | BUS_ENTRY_T ); - if( DrawStruct ) // We have found a wire: Search for a connected pin at the same location + if( item ) // We have found a wire: Search for a connected pin at the same location { - Pin = GetScreen()->GetPin( refpoint, &LibItem ); + Pin = GetScreen()->GetPin( aPosition, &LibItem ); if( Pin ) { @@ -170,30 +161,30 @@ SCH_ITEM* SCH_EDIT_FRAME::SchematicGeneralLocateAndDisplay( const wxPoint& refpo else ClearMsgPanel(); - return DrawStruct; + return item; } - DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), FIELD_T ); + item = (SCH_ITEM*) PickStruct( aPosition, GetScreen(), FIELD_T ); - if( DrawStruct ) + if( item ) { - SCH_FIELD* Field = (SCH_FIELD*) DrawStruct; + SCH_FIELD* Field = (SCH_FIELD*) item; LibItem = (SCH_COMPONENT*) Field->GetParent(); LibItem->DisplayInfo( this ); - return DrawStruct; + return item; } - DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), LABEL_T | TEXT_T ); + item = (SCH_ITEM*) PickStruct( aPosition, GetScreen(), LABEL_T | TEXT_T ); - if( DrawStruct ) + if( item ) { ClearMsgPanel(); - return DrawStruct; + return item; } /* search for a pin */ - Pin = GetScreen()->GetPin( refpoint, &LibItem ); + Pin = GetScreen()->GetPin( aPosition, &LibItem ); if( Pin ) { @@ -202,41 +193,39 @@ SCH_ITEM* SCH_EDIT_FRAME::SchematicGeneralLocateAndDisplay( const wxPoint& refpo if( LibItem ) AppendMsgPanel( LibItem->GetRef( GetSheet() ), LibItem->GetField( VALUE )->m_Text, DARKCYAN ); - if( IncludePin ) + if( aIncludePin ) return LibItem; } - DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), COMPONENT_T ); + item = (SCH_ITEM*) PickStruct( aPosition, GetScreen(), COMPONENT_T ); - if( DrawStruct ) + if( item ) { - DrawStruct = LocateSmallestComponent( GetScreen() ); - LibItem = (SCH_COMPONENT*) DrawStruct; + item = LocateSmallestComponent( GetScreen() ); + LibItem = (SCH_COMPONENT*) item; LibItem->DisplayInfo( this ); - return DrawStruct; + return item; } - DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), SHEET_T ); + item = (SCH_ITEM*) PickStruct( aPosition, GetScreen(), SHEET_T ); - if( DrawStruct ) + if( item ) { - ( (SCH_SHEET*) DrawStruct )->DisplayInfo( this ); - return DrawStruct; + ( (SCH_SHEET*) item )->DisplayInfo( this ); + return item; } - DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), NO_FILTER_T ); + item = (SCH_ITEM*) PickStruct( aPosition, GetScreen(), NO_FILTER_T ); - if( DrawStruct ) - { - return DrawStruct; - } + if( item ) + return item; ClearMsgPanel(); return NULL; } -void SCH_EDIT_FRAME::GeneralControle( wxDC* aDC, wxPoint aPosition ) +void SCH_EDIT_FRAME::GeneralControle( wxDC* aDC, const wxPoint& aPosition ) { wxRealPoint gridSize; SCH_SCREEN* screen = GetScreen(); @@ -308,9 +297,9 @@ void SCH_EDIT_FRAME::GeneralControle( wxDC* aDC, wxPoint aPosition ) if( hotkey ) { if( screen->GetCurItem() && screen->GetCurItem()->m_Flags ) - OnHotKey( aDC, hotkey, screen->GetCurItem() ); + OnHotKey( aDC, hotkey, aPosition, screen->GetCurItem() ); else - OnHotKey( aDC, hotkey, NULL ); + OnHotKey( aDC, hotkey, aPosition, NULL ); } UpdateStatusBar(); /* Display cursor coordinates info */ @@ -318,7 +307,7 @@ void SCH_EDIT_FRAME::GeneralControle( wxDC* aDC, wxPoint aPosition ) } -void LIB_EDIT_FRAME::GeneralControle( wxDC* aDC, wxPoint aPosition ) +void LIB_EDIT_FRAME::GeneralControle( wxDC* aDC, const wxPoint& aPosition ) { wxRealPoint gridSize; SCH_SCREEN* screen = GetScreen(); @@ -390,16 +379,16 @@ void LIB_EDIT_FRAME::GeneralControle( wxDC* aDC, wxPoint aPosition ) if( hotkey ) { if( screen->GetCurItem() && screen->GetCurItem()->m_Flags ) - OnHotKey( aDC, hotkey, screen->GetCurItem() ); + OnHotKey( aDC, hotkey, aPosition, screen->GetCurItem() ); else - OnHotKey( aDC, hotkey, NULL ); + OnHotKey( aDC, hotkey, aPosition, NULL ); } UpdateStatusBar(); } -void LIB_VIEW_FRAME::GeneralControle( wxDC* aDC, wxPoint aPosition ) +void LIB_VIEW_FRAME::GeneralControle( wxDC* aDC, const wxPoint& aPosition ) { wxRealPoint gridSize; SCH_SCREEN* screen = GetScreen(); @@ -471,9 +460,9 @@ void LIB_VIEW_FRAME::GeneralControle( wxDC* aDC, wxPoint aPosition ) if( hotkey ) { if( screen->GetCurItem() && screen->GetCurItem()->m_Flags ) - OnHotKey( aDC, hotkey, screen->GetCurItem() ); + OnHotKey( aDC, hotkey, aPosition, screen->GetCurItem() ); else - OnHotKey( aDC, hotkey, NULL ); + OnHotKey( aDC, hotkey, aPosition, NULL ); } UpdateStatusBar(); diff --git a/eeschema/dialogs/dialog_edit_component_in_schematic.cpp b/eeschema/dialogs/dialog_edit_component_in_schematic.cpp index a92dc2899b..e8535cddc8 100644 --- a/eeschema/dialogs/dialog_edit_component_in_schematic.cpp +++ b/eeschema/dialogs/dialog_edit_component_in_schematic.cpp @@ -27,51 +27,46 @@ int DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_SelectedRow; wxSize DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize = wxDefaultSize; -void InstallCmpeditFrame( SCH_EDIT_FRAME* parent, wxPoint& pos, SCH_COMPONENT* aComponent ) +void InstallCmpeditFrame( SCH_EDIT_FRAME* aParent, SCH_COMPONENT* aComponent ) { if( aComponent == NULL ) // Null component not accepted return; - parent->DrawPanel->m_IgnoreMouseEvents = TRUE; + aParent->DrawPanel->m_IgnoreMouseEvents = TRUE; if( aComponent->Type() != SCH_COMPONENT_T ) { - DisplayError( parent, + DisplayError( aParent, wxT( "InstallCmpeditFrame() error: This item is not a component" ) ); + return; } - else + + DIALOG_EDIT_COMPONENT_IN_SCHEMATIC dialog( aParent ); + + dialog.InitBuffers( aComponent ); + + wxSize sizeNow = dialog.GetSize(); + + // this relies on wxDefaultSize being -1,-1, be careful here. + if( sizeNow.GetWidth() < DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize.GetWidth() + || sizeNow.GetHeight() < DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize.GetHeight() ) { - DIALOG_EDIT_COMPONENT_IN_SCHEMATIC* dialog = - new DIALOG_EDIT_COMPONENT_IN_SCHEMATIC( parent ); - - dialog->InitBuffers( aComponent ); - - wxSize sizeNow = dialog->GetSize(); - - // this relies on wxDefaultSize being -1,-1, be careful here. - if( sizeNow.GetWidth() < DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize.GetWidth() - || sizeNow.GetHeight() < DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize.GetHeight() ) - { - dialog->SetSize( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize ); - } - - // make sure the chipnameTextCtrl is wide enough to hold any - // unusually long chip names: - EnsureTextCtrlWidth( dialog->chipnameTextCtrl ); - - dialog->ShowModal(); - - // Some of the field values are long and are not always fully visible - // because the window comes up too narrow. - // Remember user's manual window resizing efforts here so it comes up - // wide enough next time. - DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize = dialog->GetSize(); - - dialog->Destroy(); + dialog.SetSize( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize ); } - parent->DrawPanel->MouseToCursorSchema(); - parent->DrawPanel->m_IgnoreMouseEvents = false; + // make sure the chipnameTextCtrl is wide enough to hold any + // unusually long chip names: + EnsureTextCtrlWidth( dialog.chipnameTextCtrl ); + + dialog.ShowModal(); + + // Some of the field values are long and are not always fully visible because the + // window comes up too narrow. Remember user's manual window resizing efforts here + // so it comes up wide enough next time. + DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize = dialog.GetSize(); + + aParent->DrawPanel->MouseToCursorSchema(); + aParent->DrawPanel->m_IgnoreMouseEvents = false; } diff --git a/eeschema/dialogs/dialog_edit_component_in_schematic.h b/eeschema/dialogs/dialog_edit_component_in_schematic.h index cdad4e46c9..66100ea891 100644 --- a/eeschema/dialogs/dialog_edit_component_in_schematic.h +++ b/eeschema/dialogs/dialog_edit_component_in_schematic.h @@ -16,9 +16,7 @@ */ class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC : public DIALOG_EDIT_COMPONENT_IN_SCHEMATIC_FBP { - friend void InstallCmpeditFrame( SCH_EDIT_FRAME* parent, - wxPoint& pos, - SCH_COMPONENT* aComponent ); + friend void InstallCmpeditFrame( SCH_EDIT_FRAME* parent, SCH_COMPONENT* aComponent ); SCH_EDIT_FRAME* m_Parent; SCH_COMPONENT* m_Cmp; diff --git a/eeschema/hotkeys.cpp b/eeschema/hotkeys.cpp index 3986d2fef3..94b82779f0 100644 --- a/eeschema/hotkeys.cpp +++ b/eeschema/hotkeys.cpp @@ -257,7 +257,7 @@ struct Ki_HotkeyInfoSectionDescriptor s_Viewlib_Hokeys_Descr[] = * Hot keys. Some commands are relative to the item under the mouse cursor * Commands are case insensitive */ -void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) +void SCH_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, EDA_ITEM* aItem ) { wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED ); @@ -271,20 +271,20 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) bool notBusy = (!itemInEdit) && (screen->m_BlockLocate.m_State == STATE_NO_BLOCK); bool RefreshToolBar = FALSE; - if( hotkey == 0 ) + if( aHotKey == 0 ) return; - wxPoint MousePos = GetScreen()->m_MousePosition; - /* Convert lower to upper case (the usual toupper function has problem * with non ascii codes like function keys */ - if( (hotkey >= 'a') && (hotkey <= 'z') ) - hotkey += 'A' - 'a'; + if( (aHotKey >= 'a') && (aHotKey <= 'z') ) + aHotKey += 'A' - 'a'; // Search command from key : - Ki_HotkeyInfo* HK_Descr = GetDescriptorFromHotkey( hotkey, s_Common_Hotkey_List ); + Ki_HotkeyInfo* HK_Descr = GetDescriptorFromHotkey( aHotKey, s_Common_Hotkey_List ); + if( HK_Descr == NULL ) - HK_Descr = GetDescriptorFromHotkey( hotkey, s_Schematic_Hotkey_List ); + HK_Descr = GetDescriptorFromHotkey( aHotKey, s_Schematic_Hotkey_List ); + if( HK_Descr == NULL ) return; @@ -337,22 +337,22 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) break; case HK_MOVEBLOCK_TO_DRAGBLOCK: // Switch to drag mode, when block moving - HandleBlockEndByPopUp( BLOCK_DRAG, DC ); + HandleBlockEndByPopUp( BLOCK_DRAG, aDC ); break; case HK_DELETE: if( notBusy) { - RefreshToolBar = LocateAndDeleteItem( this, DC ); + RefreshToolBar = LocateAndDeleteItem( this, aDC ); OnModify(); GetScreen()->SetCurItem( NULL ); - GetScreen()->TestDanglingEnds( DrawPanel, DC ); + GetScreen()->TestDanglingEnds( DrawPanel, aDC ); } break; case HK_REPEAT_LAST: if( notBusy && m_itemToRepeat && ( m_itemToRepeat->m_Flags == 0 ) ) - RepeatDrawItem( DC ); + RepeatDrawItem( aDC ); break; case HK_FIND_ITEM: @@ -392,7 +392,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_COMPONENT_BUTT; if( m_ID_current_state != ID_COMPONENT_BUTT ) SetToolID( ID_COMPONENT_BUTT, wxCURSOR_PENCIL, _( "Add Component" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -402,7 +403,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_PLACE_POWER_BUTT; if( m_ID_current_state != ID_PLACE_POWER_BUTT ) SetToolID( ID_PLACE_POWER_BUTT, wxCURSOR_PENCIL, _( "Add Power" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -412,7 +414,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_LABEL_BUTT; if( m_ID_current_state != ID_LABEL_BUTT ) SetToolID( ID_LABEL_BUTT, wxCURSOR_PENCIL, _( "Add Label" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -422,7 +425,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_HIERLABEL_BUTT; if( m_ID_current_state != ID_HIERLABEL_BUTT ) SetToolID( ID_HIERLABEL_BUTT, wxCURSOR_PENCIL, _( "Add Hierarchical Label" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -432,7 +436,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_GLABEL_BUTT; if( m_ID_current_state != ID_GLABEL_BUTT ) SetToolID( ID_GLABEL_BUTT, wxCURSOR_PENCIL, _( "Add Global Label" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -442,7 +447,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_JUNCTION_BUTT; if( m_ID_current_state != ID_JUNCTION_BUTT ) SetToolID( ID_JUNCTION_BUTT, wxCURSOR_PENCIL, _( "Add Junction" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -452,7 +458,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_WIRETOBUS_ENTRY_BUTT; if( m_ID_current_state != ID_WIRETOBUS_ENTRY_BUTT ) SetToolID( ID_WIRETOBUS_ENTRY_BUTT, wxCURSOR_PENCIL, _( "Add Wire to Bus entry" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -462,7 +469,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_BUSTOBUS_ENTRY_BUTT; if( m_ID_current_state != ID_BUSTOBUS_ENTRY_BUTT ) SetToolID( ID_BUSTOBUS_ENTRY_BUTT, wxCURSOR_PENCIL, _( "Add Bus to Bus entry" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -472,7 +480,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_SHEET_SYMBOL_BUTT; if( m_ID_current_state != ID_SHEET_SYMBOL_BUTT ) SetToolID( ID_SHEET_SYMBOL_BUTT, wxCURSOR_PENCIL, _( "Add Sheet" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -482,7 +491,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_TEXT_COMMENT_BUTT; if( m_ID_current_state != ID_TEXT_COMMENT_BUTT ) SetToolID( ID_TEXT_COMMENT_BUTT, wxCURSOR_PENCIL, _( "Add Text" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -492,7 +502,8 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_LINE_COMMENT_BUTT; if( m_ID_current_state != ID_LINE_COMMENT_BUTT ) SetToolID( ID_LINE_COMMENT_BUTT, wxCURSOR_PENCIL, _( "Add Lines" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; @@ -503,22 +514,25 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_WIRE_BUTT; if( m_ID_current_state != ID_BUS_BUTT ) SetToolID( ID_BUS_BUTT, wxCURSOR_PENCIL, _( "Add Bus" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); break; } - if( DrawStruct && DrawStruct->IsNew() && ( m_ID_current_state == ID_BUS_BUTT ) ) + + if( aItem && aItem->IsNew() && ( m_ID_current_state == ID_BUS_BUTT ) ) { - if( DrawStruct->Type() == SCH_LINE_T ) + if( aItem->Type() == SCH_LINE_T ) { - SCH_LINE* segment = (SCH_LINE*) DrawStruct; + SCH_LINE* segment = (SCH_LINE*) aItem; if( segment->GetLayer() != LAYER_BUS ) break; - // Bus in progress: - OnLeftClick( DC, MousePos ); + // Bus in progress: + OnLeftClick( aDC, aPosition ); } } + break; case HK_BEGIN_WIRE: @@ -528,18 +542,22 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) // switch to m_ID_current_state = ID_WIRE_BUTT; if( m_ID_current_state != ID_WIRE_BUTT ) SetToolID( ID_WIRE_BUTT, wxCURSOR_PENCIL, _( "Add Wire" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); break; } - if( DrawStruct && DrawStruct->IsNew() && ( m_ID_current_state == ID_WIRE_BUTT ) ) + + if( aItem && aItem->IsNew() && ( m_ID_current_state == ID_WIRE_BUTT ) ) { - if( DrawStruct->Type() == SCH_LINE_T ) + if( aItem->Type() == SCH_LINE_T ) { - SCH_LINE* segment = (SCH_LINE*) DrawStruct; + SCH_LINE* segment = (SCH_LINE*) aItem; + if( segment->GetLayer() != LAYER_WIRE ) break; - // Wire in progress: - OnLeftClick( DC, MousePos ); + + // Wire in progress: + OnLeftClick( aDC, aPosition ); } } break; @@ -549,34 +567,36 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) { if( m_ID_current_state != ID_NOCONN_BUTT ) SetToolID( ID_NOCONN_BUTT, wxCURSOR_PENCIL, _( "Add \"NoNonnect\" Flags" ) ); - OnLeftClick( DC, MousePos ); + + OnLeftClick( aDC, aPosition ); } break; case HK_ROTATE: // Component or other schematic item rotation if ( screen->m_BlockLocate.m_State != STATE_NO_BLOCK)//allows bloc operation on hotkey { - HandleBlockEndByPopUp(BLOCK_ROTATE, DC ); + HandleBlockEndByPopUp(BLOCK_ROTATE, aDC ); break; } - if( DrawStruct == NULL ) + + if( aItem == NULL ) { // Find the schematic object to rotate under the cursor - DrawStruct = SchematicGeneralLocateAndDisplay( false ); + aItem = LocateAndShowItem( aPosition, false ); - if( DrawStruct == NULL ) + if( aItem == NULL ) break; - if( DrawStruct->Type() == SCH_COMPONENT_T ) - DrawStruct = LocateSmallestComponent( GetScreen() ); + if( aItem->Type() == SCH_COMPONENT_T ) + aItem = LocateSmallestComponent( GetScreen() ); - if( DrawStruct == NULL ) + if( aItem == NULL ) break; } - if( DrawStruct ) + if( aItem ) { - GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); + GetScreen()->SetCurItem( (SCH_ITEM*) aItem ); // Create the events for rotating a component or other schematic item wxCommandEvent eventRotateComponent( wxEVT_COMMAND_TOOL_CLICKED, @@ -586,11 +606,12 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) wxCommandEvent eventRotateField( wxEVT_COMMAND_TOOL_CLICKED, ID_POPUP_SCH_ROTATE_FIELD ); - switch( DrawStruct->Type() ) + switch( aItem->Type() ) { case SCH_SHEET_T: //TODO allow sheet rotate on hotkey //wxPostEvent( this, eventRotateSheet ); break; + case SCH_COMPONENT_T: wxPostEvent( this, eventRotateComponent ); break; @@ -615,54 +636,63 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) case HK_MIRROR_Y_COMPONENT: // Mirror Y (Component) if ( screen->m_BlockLocate.m_State != STATE_NO_BLOCK ) { - HandleBlockEndByPopUp(BLOCK_MIRROR_Y, DC ); + HandleBlockEndByPopUp(BLOCK_MIRROR_Y, aDC ); break; } - if( DrawStruct == NULL ) - DrawStruct = LocateSmallestComponent( GetScreen() ); - if( DrawStruct ) + + if( aItem == NULL ) + aItem = LocateSmallestComponent( GetScreen() ); + + if( aItem ) { - if( DrawStruct->m_Flags == 0 ) + if( aItem->m_Flags == 0 ) { - SaveCopyInUndoList( (SCH_ITEM*) DrawStruct, UR_CHANGED ); + SaveCopyInUndoList( (SCH_ITEM*) aItem, UR_CHANGED ); RefreshToolBar = TRUE; } - CmpRotationMiroir( (SCH_COMPONENT*) DrawStruct, DC, CMP_MIRROR_Y ); + + CmpRotationMiroir( (SCH_COMPONENT*) aItem, aDC, CMP_MIRROR_Y ); } break; case HK_MIRROR_X_COMPONENT: // Mirror X (Component) if ( screen->m_BlockLocate.m_State != STATE_NO_BLOCK ) //allows bloc operation on hotkey { - HandleBlockEndByPopUp(BLOCK_MIRROR_X, DC ); + HandleBlockEndByPopUp(BLOCK_MIRROR_X, aDC ); break; } - if( DrawStruct == NULL ) - DrawStruct = LocateSmallestComponent( GetScreen() ); - if( DrawStruct ) + + if( aItem == NULL ) + aItem = LocateSmallestComponent( GetScreen() ); + + if( aItem ) { - if( DrawStruct->m_Flags == 0 ) + if( aItem->m_Flags == 0 ) { - SaveCopyInUndoList( (SCH_ITEM*) DrawStruct, UR_CHANGED ); + SaveCopyInUndoList( (SCH_ITEM*) aItem, UR_CHANGED ); RefreshToolBar = TRUE; } - CmpRotationMiroir( (SCH_COMPONENT*) DrawStruct, DC, CMP_MIRROR_X ); + + CmpRotationMiroir( (SCH_COMPONENT*) aItem, aDC, CMP_MIRROR_X ); } break; case HK_ORIENT_NORMAL_COMPONENT: // Orient 0, no mirror (Component) - if( DrawStruct == NULL ) - DrawStruct = LocateSmallestComponent( GetScreen() ); - if( DrawStruct ) + if( aItem == NULL ) + aItem = LocateSmallestComponent( GetScreen() ); + + if( aItem ) { - if( DrawStruct->m_Flags == 0 ) + if( aItem->m_Flags == 0 ) { - SaveCopyInUndoList( (SCH_ITEM*) DrawStruct, UR_CHANGED ); + SaveCopyInUndoList( (SCH_ITEM*) aItem, UR_CHANGED ); RefreshToolBar = TRUE; } - CmpRotationMiroir( (SCH_COMPONENT*) DrawStruct, DC, CMP_NORMAL ); - GetScreen()->TestDanglingEnds( DrawPanel, DC ); + + CmpRotationMiroir( (SCH_COMPONENT*) aItem, aDC, CMP_NORMAL ); + GetScreen()->TestDanglingEnds( DrawPanel, aDC ); } + break; case HK_DRAG: // Start drag @@ -671,51 +701,56 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) if( itemInEdit ) break; - if( DrawStruct == NULL ) + if( aItem == NULL ) { // For a drag or copy command, try to find first a component: - if( DrawStruct == NULL && HK_Descr->m_Idcommand != HK_MOVE_COMPONENT_OR_ITEM ) - DrawStruct = LocateSmallestComponent( GetScreen() ); + if( aItem == NULL && HK_Descr->m_Idcommand != HK_MOVE_COMPONENT_OR_ITEM ) + aItem = LocateSmallestComponent( GetScreen() ); // If no component, find the schematic object to move/drag or copy under the cursor - if( DrawStruct == NULL ) - DrawStruct = SchematicGeneralLocateAndDisplay( false ); + if( aItem == NULL ) + aItem = LocateAndShowItem( aPosition, false ); - if( DrawStruct == NULL ) + if( aItem == NULL ) break; - if( DrawStruct->Type() == SCH_COMPONENT_T ) - DrawStruct = LocateSmallestComponent( GetScreen() ); - if( DrawStruct == NULL ) + + if( aItem->Type() == SCH_COMPONENT_T ) + aItem = LocateSmallestComponent( GetScreen() ); + + if( aItem == NULL ) break; - if( DrawStruct->Type() == SCH_SHEET_T ) + + if( aItem->Type() == SCH_SHEET_T ) { - SCH_SHEET* sheet = (SCH_SHEET*) DrawStruct; + SCH_SHEET* sheet = (SCH_SHEET*) aItem; // If it's a sheet, then check if a pinsheet is under the cursor SCH_SHEET_PIN* slabel = sheet->GetLabel( GetScreen()->m_Curseur ); if( slabel ) - DrawStruct = slabel; + aItem = slabel; } - if( DrawStruct->Type() == SCH_JUNCTION_T ) + + if( aItem->Type() == SCH_JUNCTION_T ) { // If it's a junction, pick the underlying wire instead - DrawStruct = PickStruct( GetScreen()->m_Curseur, GetScreen(), WIRE_T ); + aItem = PickStruct( GetScreen()->m_Curseur, GetScreen(), WIRE_T ); } - if( DrawStruct == NULL ) + + if( aItem == NULL ) break; } if( HK_Descr->m_Idcommand == HK_COPY_COMPONENT_OR_LABEL ) { - GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); + GetScreen()->SetCurItem( (SCH_ITEM*) aItem ); wxCommandEvent event( wxEVT_COMMAND_TOOL_CLICKED, HK_Descr->m_IdMenuEvent ); wxPostEvent( this, event ); break; } - if( DrawStruct && (DrawStruct->m_Flags == 0) ) + if( aItem && (aItem->m_Flags == 0) ) { - GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); + GetScreen()->SetCurItem( (SCH_ITEM*) aItem ); // Create the events for moving a component or other schematic item wxCommandEvent eventMoveOrDragComponent( wxEVT_COMMAND_TOOL_CLICKED, @@ -727,7 +762,7 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) wxCommandEvent eventDragWire( wxEVT_COMMAND_TOOL_CLICKED, ID_POPUP_SCH_DRAG_WIRE_REQUEST ); - switch( DrawStruct->Type() ) + switch( aItem->Type() ) { // select the correct event for moving an schematic object // and add it to the event queue @@ -755,7 +790,7 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) break; case SCH_LINE_T: - if( ( (SCH_ITEM*) DrawStruct )->GetLayer() == LAYER_WIRE ) + if( ( (SCH_ITEM*) aItem )->GetLayer() == LAYER_WIRE ) { if( HK_Descr->m_Idcommand == HK_DRAG ) wxPostEvent( this, eventDragWire ); @@ -775,31 +810,34 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) if( itemInEdit ) break; - if( DrawStruct == NULL ) + + if( aItem == NULL ) { - DrawStruct = PickStruct( GetScreen()->m_Curseur, GetScreen(), - COMPONENT_T | TEXT_T | LABEL_T | SHEET_T ); - if( DrawStruct == NULL ) + aItem = PickStruct( GetScreen()->m_Curseur, GetScreen(), + COMPONENT_T | TEXT_T | LABEL_T | SHEET_T ); + if( aItem == NULL ) break; - if( DrawStruct->Type() == SCH_COMPONENT_T ) - DrawStruct = LocateSmallestComponent( GetScreen() ); - if( DrawStruct == NULL ) + + if( aItem->Type() == SCH_COMPONENT_T ) + aItem = LocateSmallestComponent( GetScreen() ); + + if( aItem == NULL ) break; } - if( DrawStruct ) + if( aItem ) { wxCommandEvent eventEditPinsheet( wxEVT_COMMAND_TOOL_CLICKED, ID_POPUP_SCH_EDIT_SHEET ); - switch( DrawStruct->Type() ) + switch( aItem->Type() ) { case SCH_COMPONENT_T: - InstallCmpeditFrame( this, MousePos, (SCH_COMPONENT*) DrawStruct ); + InstallCmpeditFrame( this, (SCH_COMPONENT*) aItem ); break; case SCH_SHEET_T: - GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); + GetScreen()->SetCurItem( (SCH_ITEM*) aItem ); wxPostEvent( this, eventEditPinsheet ); break; @@ -807,7 +845,7 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) case SCH_LABEL_T: case SCH_GLOBAL_LABEL_T: case SCH_HIERARCHICAL_LABEL_T: - EditSchematicText( (SCH_TEXT*) DrawStruct ); + EditSchematicText( (SCH_TEXT*) aItem ); break; default: @@ -819,22 +857,26 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) case HK_EDIT_COMPONENT_VALUE: if( itemInEdit ) break; - if( DrawStruct == NULL ) - DrawStruct = LocateSmallestComponent( GetScreen() ); - if( DrawStruct ) + + if( aItem == NULL ) + aItem = LocateSmallestComponent( GetScreen() ); + + if( aItem ) { - EditComponentValue( (SCH_COMPONENT*) DrawStruct, DC ); + EditComponentValue( (SCH_COMPONENT*) aItem, aDC ); } break; case HK_EDIT_COMPONENT_FOOTPRINT: if( itemInEdit ) break; - if( DrawStruct == NULL ) - DrawStruct = LocateSmallestComponent( GetScreen() ); - if( DrawStruct ) + + if( aItem == NULL ) + aItem = LocateSmallestComponent( GetScreen() ); + + if( aItem ) { - EditComponentFootprint( (SCH_COMPONENT*) DrawStruct, DC ); + EditComponentFootprint( (SCH_COMPONENT*) aItem, aDC ); } break; } @@ -849,26 +891,28 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) * under the mouse cursor * Commands are case insensitive */ -void LIB_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) +void LIB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, EDA_ITEM* aItem ) { wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED ); wxCommandEvent toolCmd( wxEVT_COMMAND_TOOL_CLICKED ); cmd.SetEventObject( this ); - wxPoint MousePos = GetScreen()->m_MousePosition; - bool itemInEdit = GetScreen()->GetCurItem()&& GetScreen()->GetCurItem()->m_Flags; + bool itemInEdit = GetScreen()->GetCurItem() && GetScreen()->GetCurItem()->m_Flags; - if( hotkey == 0 ) + if( aHotKey == 0 ) return; /* Convert lower to upper case (the usual toupper function has problem * with non ascii codes like function keys */ - if( (hotkey >= 'a') && (hotkey <= 'z') ) - hotkey += 'A' - 'a'; - Ki_HotkeyInfo* HK_Descr = GetDescriptorFromHotkey( hotkey, s_Common_Hotkey_List ); + if( (aHotKey >= 'a') && (aHotKey <= 'z') ) + aHotKey += 'A' - 'a'; + + Ki_HotkeyInfo* HK_Descr = GetDescriptorFromHotkey( aHotKey, s_Common_Hotkey_List ); + if( HK_Descr == NULL ) - HK_Descr = GetDescriptorFromHotkey( hotkey, s_LibEdit_Hotkey_List ); + HK_Descr = GetDescriptorFromHotkey( aHotKey, s_LibEdit_Hotkey_List ); + if( HK_Descr == NULL ) return; @@ -931,7 +975,7 @@ void LIB_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) case HK_REPEAT_LAST: if( m_lastDrawItem && (m_lastDrawItem->m_Flags == 0) && ( m_lastDrawItem->Type() == LIB_PIN_T ) ) - RepeatPinItem( DC, (LIB_PIN*) m_lastDrawItem ); + RepeatPinItem( aDC, (LIB_PIN*) m_lastDrawItem ); break; case HK_EDIT: @@ -1002,7 +1046,6 @@ void LIB_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ) break; } - case HK_DELETE: m_drawItem = LocateItemUsingCursor(); diff --git a/eeschema/libeditframe.h b/eeschema/libeditframe.h index dd80a91836..44ded1e5d0 100644 --- a/eeschema/libeditframe.h +++ b/eeschema/libeditframe.h @@ -100,9 +100,10 @@ public: void OnLeftDClick( wxDC* DC, const wxPoint& MousePos ); SCH_SCREEN* GetScreen() { return (SCH_SCREEN*) GetBaseScreen(); } - void OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ); - void GeneralControle( wxDC* DC, wxPoint MousePositionInPixels ); + void OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, EDA_ITEM* aItem = NULL ); + + void GeneralControle( wxDC* aDC, const wxPoint& aPosition ); void LoadSettings(); void SaveSettings(); diff --git a/eeschema/onleftclick.cpp b/eeschema/onleftclick.cpp index 7ca9981649..2850c82c61 100644 --- a/eeschema/onleftclick.cpp +++ b/eeschema/onleftclick.cpp @@ -26,21 +26,18 @@ static wxArrayString s_CmpNameList; static wxArrayString s_PowerNameList; -/* Process the command triggers by the left button of the mouse when a tool - * is already selected. - */ -void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) +void SCH_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition ) { - SCH_ITEM* DrawStruct = GetScreen()->GetCurItem(); + SCH_ITEM* item = GetScreen()->GetCurItem(); - if( ( m_ID_current_state == 0 ) || ( DrawStruct && DrawStruct->m_Flags ) ) + if( ( m_ID_current_state == 0 ) || ( item && item->m_Flags ) ) { DrawPanel->m_AutoPAN_Request = FALSE; m_itemToRepeat = NULL; - if( DrawStruct && DrawStruct->m_Flags ) + if( item && item->m_Flags ) { - switch( DrawStruct->Type() ) + switch( item->Type() ) { case SCH_LABEL_T: case SCH_GLOBAL_LABEL_T: @@ -52,7 +49,7 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case SCH_JUNCTION_T: case SCH_COMPONENT_T: case SCH_FIELD_T: - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); GetScreen()->SetCurItem( NULL ); GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); @@ -60,7 +57,7 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case SCH_SCREEN_T: DisplayError( this, wxT( "OnLeftClick err: unexpected type for Place" ) ); - DrawStruct->m_Flags = 0; + item->m_Flags = 0; break; case SCH_LINE_T: // May already be drawing segment. @@ -70,16 +67,16 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) { wxString msg; msg.Printf( wxT( "SCH_EDIT_FRAME::OnLeftClick err: m_Flags != 0, itmetype %d" ), - DrawStruct->Type()); + item->Type()); DisplayError( this, msg ); - DrawStruct->m_Flags = 0; + item->m_Flags = 0; break; } } } else { - DrawStruct = SchematicGeneralLocateAndDisplay( true ); + item = LocateAndShowItem( aPosition ); } } @@ -92,114 +89,115 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) break; case ID_HIERARCHY_PUSH_POP_BUTT: - if( DrawStruct && DrawStruct->m_Flags ) + if( item && item->m_Flags ) break; - DrawStruct = SchematicGeneralLocateAndDisplay(); - if( DrawStruct && ( DrawStruct->Type() == SCH_SHEET_T ) ) - { - InstallNextScreen( (SCH_SHEET*) DrawStruct ); - } + + item = LocateAndShowItem( aPosition ); + + if( item && ( item->Type() == SCH_SHEET_T ) ) + InstallNextScreen( (SCH_SHEET*) item ); else InstallPreviousSheet(); break; case ID_NOCONN_BUTT: - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags == 0 ) ) + if( ( item == NULL ) || ( item->m_Flags == 0 ) ) { - m_itemToRepeat = CreateNewNoConnectStruct( DC ); + m_itemToRepeat = CreateNewNoConnectStruct( aDC ); GetScreen()->SetCurItem( m_itemToRepeat ); DrawPanel->m_AutoPAN_Request = TRUE; } else { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); DrawPanel->m_AutoPAN_Request = FALSE; } + GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); break; case ID_JUNCTION_BUTT: - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags == 0 ) ) + if( ( item == NULL ) || ( item->m_Flags == 0 ) ) { - m_itemToRepeat = CreateNewJunctionStruct( DC, GetScreen()->m_Curseur, TRUE ); + m_itemToRepeat = CreateNewJunctionStruct( aDC, GetScreen()->m_Curseur, TRUE ); GetScreen()->SetCurItem( m_itemToRepeat ); DrawPanel->m_AutoPAN_Request = TRUE; } else { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); DrawPanel->m_AutoPAN_Request = FALSE; } + GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); break; case ID_WIRETOBUS_ENTRY_BUTT: case ID_BUSTOBUS_ENTRY_BUTT: - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags == 0 ) ) + if( ( item == NULL ) || ( item->m_Flags == 0 ) ) { - DrawStruct = CreateBusEntry( DC, - (m_ID_current_state == ID_WIRETOBUS_ENTRY_BUTT) ? - WIRE_TO_BUS : BUS_TO_BUS ); - GetScreen()->SetCurItem( DrawStruct ); + item = CreateBusEntry( aDC, ( m_ID_current_state == ID_WIRETOBUS_ENTRY_BUTT ) ? + WIRE_TO_BUS : BUS_TO_BUS ); + GetScreen()->SetCurItem( item ); DrawPanel->m_AutoPAN_Request = TRUE; } else { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); GetScreen()->SetCurItem( NULL ); GetScreen()->TestDanglingEnds(); - DrawPanel->Refresh( TRUE ); + DrawPanel->Refresh( true ); DrawPanel->m_AutoPAN_Request = FALSE; } break; case ID_SCHEMATIC_DELETE_ITEM_BUTT: - LocateAndDeleteItem( this, DC ); - OnModify( ); + LocateAndDeleteItem( this, aDC ); + OnModify(); GetScreen()->SetCurItem( NULL ); GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); break; case ID_WIRE_BUTT: - BeginSegment( DC, LAYER_WIRE ); + BeginSegment( aDC, LAYER_WIRE ); DrawPanel->m_AutoPAN_Request = TRUE; break; case ID_BUS_BUTT: - BeginSegment( DC, LAYER_BUS ); + BeginSegment( aDC, LAYER_BUS ); DrawPanel->m_AutoPAN_Request = TRUE; break; case ID_LINE_COMMENT_BUTT: - BeginSegment( DC, LAYER_NOTES ); + BeginSegment( aDC, LAYER_NOTES ); DrawPanel->m_AutoPAN_Request = TRUE; break; case ID_TEXT_COMMENT_BUTT: - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags == 0 ) ) + if( ( item == NULL ) || ( item->m_Flags == 0 ) ) { - GetScreen()->SetCurItem( CreateNewText( DC, LAYER_NOTES ) ); + GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_NOTES ) ); DrawPanel->m_AutoPAN_Request = TRUE; } else { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); DrawPanel->m_AutoPAN_Request = FALSE; } break; case ID_LABEL_BUTT: - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags == 0 ) ) + if( ( item == NULL ) || ( item->m_Flags == 0 ) ) { - GetScreen()->SetCurItem( CreateNewText( DC, LAYER_LOCLABEL ) ); + GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_LOCLABEL ) ); DrawPanel->m_AutoPAN_Request = TRUE; } else { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); DrawPanel->m_AutoPAN_Request = FALSE; GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); @@ -208,17 +206,19 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case ID_GLABEL_BUTT: case ID_HIERLABEL_BUTT: - if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) + if( (item == NULL) || (item->m_Flags == 0) ) { if(m_ID_current_state == ID_GLABEL_BUTT) - GetScreen()->SetCurItem( CreateNewText( DC, LAYER_GLOBLABEL ) ); + GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_GLOBLABEL ) ); + if(m_ID_current_state == ID_HIERLABEL_BUTT) - GetScreen()->SetCurItem( CreateNewText( DC, LAYER_HIERLABEL ) ); + GetScreen()->SetCurItem( CreateNewText( aDC, LAYER_HIERLABEL ) ); + DrawPanel->m_AutoPAN_Request = TRUE; } else { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); DrawPanel->m_AutoPAN_Request = FALSE; GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); @@ -226,14 +226,14 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) break; case ID_SHEET_SYMBOL_BUTT: - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags == 0 ) ) + if( ( item == NULL ) || ( item->m_Flags == 0 ) ) { - GetScreen()->SetCurItem( CreateSheet( DC ) ); + GetScreen()->SetCurItem( CreateSheet( aDC ) ); DrawPanel->m_AutoPAN_Request = TRUE; } else { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); DrawPanel->m_AutoPAN_Request = FALSE; GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); @@ -242,37 +242,36 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case ID_IMPORT_HLABEL_BUTT: case ID_SHEET_LABEL_BUTT: - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags == 0 ) ) - DrawStruct = SchematicGeneralLocateAndDisplay(); + if( ( item == NULL ) || ( item->m_Flags == 0 ) ) + item = LocateAndShowItem( aPosition ); - if( DrawStruct == NULL ) + if( item == NULL ) break; - if( (DrawStruct->Type() == SCH_SHEET_T) - && (DrawStruct->m_Flags == 0) ) + if( (item->Type() == SCH_SHEET_T) && (item->m_Flags == 0) ) { if( m_ID_current_state == ID_IMPORT_HLABEL_BUTT ) - GetScreen()->SetCurItem( Import_PinSheet( (SCH_SHEET*) DrawStruct, DC ) ); + GetScreen()->SetCurItem( Import_PinSheet( (SCH_SHEET*) item, aDC ) ); else - GetScreen()->SetCurItem( Create_PinSheet( (SCH_SHEET*) DrawStruct, DC ) ); + GetScreen()->SetCurItem( Create_PinSheet( (SCH_SHEET*) item, aDC ) ); } - else if( (DrawStruct->Type() == SCH_SHEET_LABEL_T) && (DrawStruct->m_Flags != 0) ) + else if( (item->Type() == SCH_SHEET_LABEL_T) && (item->m_Flags != 0) ) { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); } break; case ID_COMPONENT_BUTT: - if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) + if( (item == NULL) || (item->m_Flags == 0) ) { - GetScreen()->SetCurItem( Load_Component( DC, wxEmptyString, s_CmpNameList, TRUE ) ); + GetScreen()->SetCurItem( Load_Component( aDC, wxEmptyString, s_CmpNameList, TRUE ) ); DrawPanel->m_AutoPAN_Request = TRUE; } else { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); DrawPanel->m_AutoPAN_Request = FALSE; GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); @@ -280,14 +279,15 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) break; case ID_PLACE_POWER_BUTT: - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags == 0 ) ) + if( ( item == NULL ) || ( item->m_Flags == 0 ) ) { - GetScreen()->SetCurItem( Load_Component( DC, wxT( "power" ), s_PowerNameList, FALSE ) ); + GetScreen()->SetCurItem( Load_Component( aDC, wxT( "power" ), + s_PowerNameList, FALSE ) ); DrawPanel->m_AutoPAN_Request = TRUE; } else { - DrawStruct->Place( this, DC ); + item->Place( this, aDC ); DrawPanel->m_AutoPAN_Request = FALSE; GetScreen()->TestDanglingEnds(); DrawPanel->Refresh( TRUE ); @@ -315,31 +315,31 @@ void SCH_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) * Id a create command is in progress: * validate and finish the command */ -void SCH_EDIT_FRAME::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) +void SCH_EDIT_FRAME::OnLeftDClick( wxDC* aDC, const wxPoint& aPosition ) { - EDA_ITEM* DrawStruct = GetScreen()->GetCurItem(); - wxPoint pos = GetPosition(); + EDA_ITEM* item = GetScreen()->GetCurItem(); + wxPoint pos = aPosition; switch( m_ID_current_state ) { case 0: - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags == 0 ) ) + if( ( item == NULL ) || ( item->m_Flags == 0 ) ) { - DrawStruct = SchematicGeneralLocateAndDisplay(); + item = LocateAndShowItem( aPosition ); } - if( ( DrawStruct == NULL ) || ( DrawStruct->m_Flags != 0 ) ) + if( ( item == NULL ) || ( item->m_Flags != 0 ) ) break; - switch( DrawStruct->Type() ) + switch( item->Type() ) { case SCH_SHEET_T: - InstallNextScreen( (SCH_SHEET*) DrawStruct ); + InstallNextScreen( (SCH_SHEET*) item ); break; case SCH_COMPONENT_T: - InstallCmpeditFrame( this, pos, (SCH_COMPONENT*) DrawStruct ); + InstallCmpeditFrame( this, (SCH_COMPONENT*) item ); DrawPanel->MouseToCursorSchema(); break; @@ -347,16 +347,16 @@ void SCH_EDIT_FRAME::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) case SCH_LABEL_T: case SCH_GLOBAL_LABEL_T: case SCH_HIERARCHICAL_LABEL_T: - EditSchematicText( (SCH_TEXT*) DrawStruct ); + EditSchematicText( (SCH_TEXT*) item ); break; case SCH_FIELD_T: - EditCmpFieldText( (SCH_FIELD*) DrawStruct, DC ); + EditCmpFieldText( (SCH_FIELD*) item, aDC ); DrawPanel->MouseToCursorSchema(); break; case SCH_MARKER_T: - ( (SCH_MARKER*) DrawStruct )->DisplayMarkerInfo( this ); + ( (SCH_MARKER*) item )->DisplayMarkerInfo( this ); break; default: @@ -368,8 +368,9 @@ void SCH_EDIT_FRAME::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) case ID_BUS_BUTT: case ID_WIRE_BUTT: case ID_LINE_COMMENT_BUTT: - if( DrawStruct && ( DrawStruct->m_Flags & IS_NEW ) ) - EndSegment( DC ); + if( item && ( item->m_Flags & IS_NEW ) ) + EndSegment( aDC ); + break; } } diff --git a/eeschema/onrightclick.cpp b/eeschema/onrightclick.cpp index c6cebcdcea..bdd71767ed 100644 --- a/eeschema/onrightclick.cpp +++ b/eeschema/onrightclick.cpp @@ -48,7 +48,7 @@ static void AddMenusForMarkers( wxMenu* aPopMenu, SCH_MARKER* aMarker, SCH_EDIT_ * * This menu is then added to the list of zoom commands. */ -bool SCH_EDIT_FRAME::OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu ) +bool SCH_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu ) { SCH_ITEM* DrawStruct = (SCH_ITEM*) GetScreen()->GetCurItem(); bool BlockActive = (GetScreen()->m_BlockLocate.m_Command != BLOCK_IDLE); @@ -66,7 +66,7 @@ bool SCH_EDIT_FRAME::OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu ) // Try to locate items at cursor position. if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { - DrawStruct = SchematicGeneralLocateAndDisplay( false ); + DrawStruct = LocateAndShowItem( aPosition, false ); if( DrawStruct && (DrawStruct->Type() == SCH_SHEET_T) ) { diff --git a/eeschema/protos.h b/eeschema/protos.h index 207391c9cf..c8295e21c3 100644 --- a/eeschema/protos.h +++ b/eeschema/protos.h @@ -40,7 +40,7 @@ void IncrementLabelMember( wxString& name ); /****************/ /* EDITPART.CPP */ /****************/ -void InstallCmpeditFrame( SCH_EDIT_FRAME* parent, wxPoint& pos, SCH_COMPONENT* m_Cmp ); +void InstallCmpeditFrame( SCH_EDIT_FRAME* aParent, SCH_COMPONENT* aComponent ); void SnapLibItemPoint( int OrigX, int OrigY, diff --git a/eeschema/schedit.cpp b/eeschema/schedit.cpp index 05f1d924fa..97102afdcf 100644 --- a/eeschema/schedit.cpp +++ b/eeschema/schedit.cpp @@ -484,7 +484,7 @@ void SCH_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) if( screen->GetCurItem() == NULL ) break; - InstallCmpeditFrame( this, pos, (SCH_COMPONENT*) screen->GetCurItem() ); + InstallCmpeditFrame( this, (SCH_COMPONENT*) screen->GetCurItem() ); break; case ID_POPUP_SCH_MIROR_X_CMP: diff --git a/eeschema/template_fieldnames.cpp b/eeschema/template_fieldnames.cpp index 28f9db30e7..780a64e404 100644 --- a/eeschema/template_fieldnames.cpp +++ b/eeschema/template_fieldnames.cpp @@ -153,8 +153,8 @@ int TEMPLATES::AddTemplateFieldName( const TEMPLATE_FIELDNAME& aFieldName ) { if( m_Fields[i].m_Name == aFieldName.m_Name ) { - D(printf("inserting template fieldname:'%s' at %d\n", - aFieldName.m_Name.utf8_str(), i );) + // D(printf("inserting template fieldname:'%s' at %d\n", + // aFieldName.m_Name.utf8_str(), i );) m_Fields[i] = aFieldName; return i; // return the container index diff --git a/eeschema/viewlib_frame.h b/eeschema/viewlib_frame.h index e39fb57624..6bb5ceff93 100644 --- a/eeschema/viewlib_frame.h +++ b/eeschema/viewlib_frame.h @@ -69,7 +69,7 @@ public: SCH_SCREEN* GetScreen() { return (SCH_SCREEN*) GetBaseScreen(); } - void GeneralControle( wxDC* DC, wxPoint MousePositionInPixels ); + void GeneralControle( wxDC* aDC, const wxPoint& aPosition ); void LoadSettings(); void SaveSettings(); diff --git a/gerbview/controle.cpp b/gerbview/controle.cpp index 297442253a..891e8501cc 100644 --- a/gerbview/controle.cpp +++ b/gerbview/controle.cpp @@ -13,7 +13,7 @@ GERBER_DRAW_ITEM* WinEDA_GerberFrame::GerberGeneralLocateAndDisplay() } -void WinEDA_GerberFrame::GeneralControle( wxDC* aDC, wxPoint aPosition ) +void WinEDA_GerberFrame::GeneralControle( wxDC* aDC, const wxPoint& aPosition ) { wxRealPoint gridSize; wxPoint oldpos; diff --git a/gerbview/wxGerberFrame.h b/gerbview/wxGerberFrame.h index c981b3b960..c240c0ca3d 100644 --- a/gerbview/wxGerberFrame.h +++ b/gerbview/wxGerberFrame.h @@ -370,7 +370,7 @@ public: WinEDA_GerberFrame( wxWindow* father, const wxString& title, bool Read_GERBER_File( const wxString& GERBER_FullFileName, const wxString& D_Code_FullFileName ); - void GeneralControle( wxDC* DC, wxPoint Mouse ); + void GeneralControle( wxDC* aDC, const wxPoint& aPosition ); /** diff --git a/include/class_base_screen.h b/include/class_base_screen.h index 13d2f2967e..67356c35dd 100644 --- a/include/class_base_screen.h +++ b/include/class_base_screen.h @@ -57,48 +57,45 @@ class BASE_SCREEN : public EDA_ITEM GRIDS m_grids; ///< List of valid grid sizes. EDA_ITEM* m_drawList; ///< Object list for the screen. wxString m_fileName; ///< File used to load the screen. + char m_FlagRefreshReq; ///< Indicates that the screen should be redrawn. + char m_FlagModified; ///< Indicates current drawing has been modified. + char m_FlagSave; ///< Indicates automatic file save. + EDA_ITEM* m_CurrentItem; ///< Currently selected object + GRID_TYPE m_Grid; ///< Current grid selection. public: wxPoint m_DrawOrg; /* offsets for drawing the circuit on the screen */ wxPoint m_Curseur; /* Screen cursor coordinate (on grid) in user units. */ wxPoint m_MousePosition; /* Mouse cursor coordinate (off grid) in user units. */ wxPoint m_O_Curseur; /* Relative Screen cursor coordinate (on grid) - * in user units. - * (coordinates from last reset position)*/ + * in user units. (coordinates from last reset position)*/ + // Scrollbars management: int m_ScrollPixelsPerUnitX; /* Pixels per scroll unit in the horizontal direction. */ int m_ScrollPixelsPerUnitY; /* Pixels per scroll unit in the vertical direction. */ - wxSize m_ScrollbarNumber; /* Current virtual draw area size in scroll - * units. - * m_ScrollbarNumber * m_ScrollPixelsPerUnit = virtual draw area size in pixels - */ - wxPoint m_ScrollbarPos; /* Current scroll bar position in scroll - * units. */ + wxSize m_ScrollbarNumber; /* Current virtual draw area size in scroll units. + * m_ScrollbarNumber * m_ScrollPixelsPerUnit = + * virtual draw area size in pixels */ + wxPoint m_ScrollbarPos; /* Current scroll bar position in scroll units. */ - wxPoint m_StartVisu; /* Coordinates in drawing units of the current - * view position (upper left corner of device) - */ + wxPoint m_StartVisu; /* Coordinates in drawing units of the current + * view position (upper left corner of device) + */ - wxSize m_SizeVisu; /* taille en pixels de l'ecran (fenetre de visu - * Utile pour recadrer les affichages lors de la - * navigation dans la hierarchie */ - bool m_Center; /* Center on screen. If TRUE (0.0) is centered - * on screen coordinates can be < 0 and - * > 0 except for schematics. - * FALSE: when coordinates can only be >= 0 - * Schematic */ + bool m_Center; /* Center on screen. If TRUE (0.0) is centered + * on screen coordinates can be < 0 and + * > 0 except for schematics. + * FALSE: when coordinates can only be >= 0 + * Schematic */ bool m_FirstRedraw; // Undo/redo list of commands - UNDO_REDO_CONTAINER m_UndoList; /* Objects list for the undo - * command (old data) */ - UNDO_REDO_CONTAINER m_RedoList; /* Objects list for the redo - * command (old data) */ - unsigned m_UndoRedoCountMax; // undo/Redo command Max depth + UNDO_REDO_CONTAINER m_UndoList; /* Objects list for the undo command (old data) */ + UNDO_REDO_CONTAINER m_RedoList; /* Objects list for the redo command (old data) */ + unsigned m_UndoRedoCountMax; // undo/Redo command Max depth /* block control */ - BLOCK_SELECTOR m_BlockLocate; /* Block description for block - * commands */ + BLOCK_SELECTOR m_BlockLocate; /* Block description for block commands */ /* Page description */ Ki_PageDescr* m_CurrentSheetDesc; @@ -114,23 +111,12 @@ public: wxString m_Commentaire3; wxString m_Commentaire4; -private: - char m_FlagRefreshReq; /* indicates that the screen should - * be redrawn */ - char m_FlagModified; // indicates current drawing has - // been modified - char m_FlagSave; // Perform automatica file save. - EDA_ITEM* m_CurrentItem; ///< Currently selected object - GRID_TYPE m_Grid; ///< Current grid selection. - /* Grid and zoom values. */ -public: wxPoint m_GridOrigin; wxArrayInt m_ZoomList; /* Array of standard zoom coefficients. */ int m_Zoom; /* Current zoom coefficient. */ - int m_ZoomScalar; /* Allow zooming to non-integer increments. - */ + int m_ZoomScalar; /* Allow zooming to non-integer increments. */ bool m_IsPrinting; public: @@ -369,6 +355,25 @@ public: return useMouse ? m_MousePosition : m_Curseur; } + /** + * Function GetCursorPosition + * returns the current cursor position in logical (drawing) units. + * @param aOnGrid Returns the nearest grid position at the current cursor position. + * @param aGridSize Custom grid size instead of the current grid size. Only valid + * if \a aOnGrid is true. + * @return The current cursor position. + */ + wxPoint GetCursorPosition( bool aOnGrid, wxRealPoint* aGridSize = NULL ); + + /** + * Function GetNearestGridPosition + * returns the nearest \a aGridSize location to \a aPosition. + * @param aPosition The position to check. + * @param aGridSize The grid size to locate to if provided. If NULL then the current + * grid size is used. + * @return The nearst grid position. + */ + wxPoint GetNearestGridPosition( const wxPoint& aPosition, wxRealPoint* aGridSize = NULL ); /** * Function GetClass diff --git a/include/wxEeschemaStruct.h b/include/wxEeschemaStruct.h index be270fd5de..894b360008 100644 --- a/include/wxEeschemaStruct.h +++ b/include/wxEeschemaStruct.h @@ -109,7 +109,7 @@ public: void OnColorConfig( wxCommandEvent& aEvent ); void Process_Config( wxCommandEvent& event ); - void GeneralControle( wxDC* DC, wxPoint MousePositionInPixels ); + void GeneralControle( wxDC* aDC, const wxPoint& aPosition ); PARAM_CFG_ARRAY& GetProjectFileParameters( void ); void SaveProjectFile( wxWindow* displayframe, bool askoverwrite = true ); @@ -172,7 +172,8 @@ public: void ReCreateVToolbar(); void ReCreateOptToolbar(); void ReCreateMenuBar(); - void OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ); + void OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, + EDA_ITEM* aItem = NULL ); SCH_FIELD* GetCurrentField() { return m_CurrentField; } @@ -200,15 +201,14 @@ public: void InstallConfigFrame( wxCommandEvent& event ); - void OnLeftClick( wxDC* DC, const wxPoint& MousePos ); - void OnLeftDClick( wxDC* DC, const wxPoint& MousePos ); - bool OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu ); + void OnLeftClick( wxDC* aDC, const wxPoint& aPosition ); + void OnLeftDClick( wxDC* aDC, const wxPoint& aPosition ); + bool OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu ); void OnSelectOptionToolbar( wxCommandEvent& event ); int BestZoom(); - SCH_ITEM* SchematicGeneralLocateAndDisplay( bool IncludePin = TRUE ); - SCH_ITEM* SchematicGeneralLocateAndDisplay( const wxPoint& refpoint, - bool IncludePin ); + SCH_ITEM* LocateAndShowItem( const wxPoint& aPosition, bool aIncludePin = true ); + SCH_ITEM* LocateItem( const wxPoint& aPosition, bool aIncludePin ); /** * Function FillFootprintFieldForAllInstancesofComponent diff --git a/include/wxPcbStruct.h b/include/wxPcbStruct.h index 2e30c548c4..14c5bba76b 100644 --- a/include/wxPcbStruct.h +++ b/include/wxPcbStruct.h @@ -267,11 +267,12 @@ public: * Function OnHotKey. * ** Commands are case insensitive ** * Some commands are relatives to the item under the mouse cursor - * @param aDC = current device context - * @param aHotkeyCode = hotkey code (ascii or wxWidget code for special keys) - * @param aItem = NULL or pointer on a EDA_ITEM under the mouse cursor + * @param aDC = current device context + * @param aHotkeyCode = hotkey code (ascii or wxWidget code for special keys) + * @param aPosition The cursor position in logical (drawing) units. + * @param aItem = NULL or pointer on a EDA_ITEM under the mouse cursor */ - void OnHotKey( wxDC* aDC, int aHotkeyCode, EDA_ITEM* aItem ); + void OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosition, EDA_ITEM* aItem = NULL ); /** * Function OnHotkeyDeleteItem @@ -366,7 +367,7 @@ public: void ReFillLayerWidget(); void Show3D_Frame( wxCommandEvent& event ); - void GeneralControle( wxDC* DC, wxPoint Mouse ); + void GeneralControle( wxDC* aDC, const wxPoint& aPosition ); /** * Function ShowDesignRulesEditor diff --git a/include/wxstruct.h b/include/wxstruct.h index aa461a1a78..92bc292447 100644 --- a/include/wxstruct.h +++ b/include/wxstruct.h @@ -269,7 +269,8 @@ public: void OnMenuOpen( wxMenuEvent& event ); void OnMouseEvent( wxMouseEvent& event ); - virtual void OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ); + virtual void OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, + EDA_ITEM* aItem = NULL ); /** * Function AddMenuZoomAndGrid (virtual) @@ -373,9 +374,9 @@ public: * called on every mouse and key event. *

* @param aDC A device context. - * @param aPosition The cursor position in logical (drawing) units. + * @param aPosition The current cursor position in logical (drawing) units. */ - virtual void GeneralControle( wxDC* aDC, wxPoint aPosition ) { /* dummy */ } + virtual void GeneralControle( wxDC* aDC, const wxPoint& aPosition ) { /* dummy */ } virtual void OnSize( wxSizeEvent& event ); void OnEraseBackground( wxEraseEvent& SizeEvent ); diff --git a/pcbnew/controle.cpp b/pcbnew/controle.cpp index da4d4bffb8..e1e104fd94 100644 --- a/pcbnew/controle.cpp +++ b/pcbnew/controle.cpp @@ -226,7 +226,7 @@ BOARD_ITEM* WinEDA_BasePcbFrame::PcbGeneralLocateAndDisplay( int aHotKeyCode ) } -void WinEDA_PcbFrame::GeneralControle( wxDC* aDC, wxPoint aPosition ) +void WinEDA_PcbFrame::GeneralControle( wxDC* aDC, const wxPoint& aPosition ) { wxRealPoint gridSize; wxPoint oldpos; @@ -370,7 +370,7 @@ void WinEDA_PcbFrame::GeneralControle( wxDC* aDC, wxPoint aPosition ) if( hotkey ) { - OnHotKey( aDC, hotkey, NULL ); + OnHotKey( aDC, hotkey, aPosition ); } if( GetScreen()->IsRefreshReq() ) diff --git a/pcbnew/hotkeys_board_editor.cpp b/pcbnew/hotkeys_board_editor.cpp index 5e9076b315..cad668ba5a 100644 --- a/pcbnew/hotkeys_board_editor.cpp +++ b/pcbnew/hotkeys_board_editor.cpp @@ -22,12 +22,14 @@ /** * Function OnHotKey. * ** Commands are case insensitive ** - * Some commands are relatives to the item under the mouse cursor - * @param aDC = current device context - * @param aHotkeyCode = hotkey code (ascii or wxWidget code for special keys) - * @param aItem = NULL or pointer on a EDA_ITEM under the mouse cursor + * Some commands are relatives to the item under the mouse cursor + * @param aDC = current device context + * @param aHotkeyCode = hotkey code (ascii or wxWidget code for special keys) + * @param aPosition The current cursor position in logical (drawing) units. + * @param aItem = NULL or pointer on a EDA_ITEM under the mouse cursor */ -void WinEDA_PcbFrame::OnHotKey( wxDC* aDC, int aHotkeyCode, EDA_ITEM* aItem ) +void WinEDA_PcbFrame::OnHotKey( wxDC* aDC, int aHotkeyCode, const wxPoint& aPosition, + EDA_ITEM* aItem ) { if( aHotkeyCode == 0 ) return; diff --git a/pcbnew/hotkeys_module_editor.cpp b/pcbnew/hotkeys_module_editor.cpp index 0c4494348c..2765c11644 100644 --- a/pcbnew/hotkeys_module_editor.cpp +++ b/pcbnew/hotkeys_module_editor.cpp @@ -20,14 +20,13 @@ */ -/*****************************************************************************************/ -void WinEDA_ModuleEditFrame::OnHotKey( wxDC* aDC, int hotkey, EDA_ITEM* DrawStruct ) -{ -/*****************************************************************************************/ /* Hot keys. Some commands are relative to the item under the mouse cursor * Commands are case insensitive */ - if( hotkey == 0 ) +void WinEDA_ModuleEditFrame::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, + EDA_ITEM* aItem ) +{ + if( aHotKey == 0 ) return; bool blockActive = GetScreen()->m_BlockLocate.m_Command != BLOCK_IDLE; @@ -37,13 +36,13 @@ void WinEDA_ModuleEditFrame::OnHotKey( wxDC* aDC, int hotkey, EDA_ITEM* DrawStru cmd.SetEventObject( this ); /* Convert lower to upper case (the usual toupper function has problem with non ascii codes like function keys */ - if( (hotkey >= 'a') && (hotkey <= 'z') ) - hotkey += 'A' - 'a'; + if( (aHotKey >= 'a') && (aHotKey <= 'z') ) + aHotKey += 'A' - 'a'; - Ki_HotkeyInfo* HK_Descr = GetDescriptorFromHotkey( hotkey, common_Hotkey_List ); + Ki_HotkeyInfo* HK_Descr = GetDescriptorFromHotkey( aHotKey, common_Hotkey_List ); if( HK_Descr == NULL ) - HK_Descr = GetDescriptorFromHotkey( hotkey, module_edit_Hotkey_List ); + HK_Descr = GetDescriptorFromHotkey( aHotKey, module_edit_Hotkey_List ); if( HK_Descr == NULL ) return; diff --git a/pcbnew/module_editor_frame.h b/pcbnew/module_editor_frame.h index 3ff1025640..dabad80128 100644 --- a/pcbnew/module_editor_frame.h +++ b/pcbnew/module_editor_frame.h @@ -40,13 +40,14 @@ public: void ReCreateMenuBar(); void ToolOnRightClick( wxCommandEvent& event ); void OnSelectOptionToolbar( wxCommandEvent& event ); - void OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct ); + void OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, + EDA_ITEM* aItem = NULL ); bool OnHotkeyEditItem( int aIdCommand ); bool OnHotkeyDeleteItem( int aIdCommand ); bool OnHotkeyMoveItem( int aIdCommand ); bool OnHotkeyRotateItem( int aIdCommand ); void Show3D_Frame( wxCommandEvent& event ); - void GeneralControle( wxDC* DC, wxPoint Mouse ); + void GeneralControle( wxDC* aDC, const wxPoint& aPosition ); /** * Function LoadModuleFromBoard diff --git a/pcbnew/moduleframe.cpp b/pcbnew/moduleframe.cpp index 0b373c97fa..81e4efa810 100644 --- a/pcbnew/moduleframe.cpp +++ b/pcbnew/moduleframe.cpp @@ -455,7 +455,7 @@ void WinEDA_ModuleEditFrame::Show3D_Frame( wxCommandEvent& event ) } -void WinEDA_ModuleEditFrame::GeneralControle( wxDC* aDC, wxPoint aPosition ) +void WinEDA_ModuleEditFrame::GeneralControle( wxDC* aDC, const wxPoint& aPosition ) { wxRealPoint gridSize; wxPoint oldpos; @@ -529,7 +529,7 @@ void WinEDA_ModuleEditFrame::GeneralControle( wxDC* aDC, wxPoint aPosition ) if( hotkey ) { - OnHotKey( aDC, hotkey, NULL ); + OnHotKey( aDC, hotkey, aPosition ); } if( GetScreen()->IsRefreshReq() ) diff --git a/pcbnew/onleftclick.cpp b/pcbnew/onleftclick.cpp index 7a9a6109d6..9c83a40f0a 100644 --- a/pcbnew/onleftclick.cpp +++ b/pcbnew/onleftclick.cpp @@ -14,12 +14,9 @@ #include "pcbnew_id.h" -/********************************************************************/ -void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) -/********************************************************************/ - /* Handle the left buttom mouse click, when a tool is active */ +void WinEDA_PcbFrame::OnLeftClick( wxDC* aDC, const wxPoint& aPosition ) { BOARD_ITEM* DrawStruct = GetCurItem(); bool exit = false; @@ -31,7 +28,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) if( DrawStruct && DrawStruct->m_Flags ) // "POPUP" in progress { DrawPanel->m_IgnoreMouseEvents = true; - DrawPanel->CursorOff( DC ); + DrawPanel->CursorOff( aDC ); switch( DrawStruct->Type() ) { @@ -39,10 +36,10 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) if( (DrawStruct->m_Flags & IS_NEW) ) { DrawPanel->m_AutoPAN_Request = true; - Begin_Zone( DC ); + Begin_Zone( aDC ); } else - End_Move_Zone_Corner_Or_Outlines( DC, (ZONE_CONTAINER*) DrawStruct ); + End_Move_Zone_Corner_Or_Outlines( aDC, (ZONE_CONTAINER*) DrawStruct ); exit = true; break; @@ -50,40 +47,40 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case TYPE_VIA: if( DrawStruct->m_Flags & IS_DRAGGED ) { - PlaceDraggedOrMovedTrackSegment( (TRACK*) DrawStruct, DC ); + PlaceDraggedOrMovedTrackSegment( (TRACK*) DrawStruct, aDC ); exit = true; } break; case TYPE_TEXTE: - Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, DC ); + Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, aDC ); exit = true; break; case TYPE_TEXTE_MODULE: - PlaceTexteModule( (TEXTE_MODULE*) DrawStruct, DC ); + PlaceTexteModule( (TEXTE_MODULE*) DrawStruct, aDC ); exit = true; break; case TYPE_PAD: - PlacePad( (D_PAD*) DrawStruct, DC ); + PlacePad( (D_PAD*) DrawStruct, aDC ); exit = true; break; case TYPE_MODULE: - Place_Module( (MODULE*) DrawStruct, DC ); + Place_Module( (MODULE*) DrawStruct, aDC ); exit = true; break; case TYPE_MIRE: - Place_Mire( (MIREPCB*) DrawStruct, DC ); + Place_Mire( (MIREPCB*) DrawStruct, aDC ); exit = true; break; case TYPE_DRAWSEGMENT: if( m_ID_current_state == 0 ) { - Place_DrawItem( (DRAWSEGMENT*) DrawStruct, DC ); + Place_DrawItem( (DRAWSEGMENT*) DrawStruct, aDC ); exit = true; } break; @@ -105,7 +102,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) } DrawPanel->m_IgnoreMouseEvents = false; - DrawPanel->CursorOn( DC ); + DrawPanel->CursorOn( aDC ); if( exit ) return; } @@ -151,12 +148,12 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case ID_PCB_MUWAVE_TOOL_STUB_CMD: case ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD: case ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD: - MuWaveCommand( DC, MousePos ); + MuWaveCommand( aDC, aPosition ); break; case ID_PCB_HIGHLIGHT_BUTT: { - int netcode = Select_High_Light( DC ); + int netcode = Select_High_Light( aDC ); if( netcode < 0 ) GetBoard()->DisplayInfo( this ); else @@ -170,7 +167,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case ID_PCB_SHOW_1_RATSNEST_BUTT: DrawStruct = PcbGeneralLocateAndDisplay(); - Show_1_Ratsnest( DrawStruct, DC ); + Show_1_Ratsnest( DrawStruct, aDC ); if( DrawStruct ) SendMessageToEESCHEMA( DrawStruct ); @@ -179,12 +176,12 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case ID_PCB_MIRE_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { - SetCurItem( Create_Mire( DC ) ); + SetCurItem( Create_Mire( aDC ) ); DrawPanel->MouseToCursorSchema(); } else if( DrawStruct->Type() == TYPE_MIRE ) { - Place_Mire( (MIREPCB*) DrawStruct, DC ); + Place_Mire( (MIREPCB*) DrawStruct, aDC ); } else DisplayError( this, wxT( "Internal err: Struct not TYPE_MIRE" ) ); @@ -207,7 +204,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) } if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { - DrawStruct = Begin_DrawSegment( NULL, shape, DC ); + DrawStruct = Begin_DrawSegment( NULL, shape, aDC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = true; } @@ -215,7 +212,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) && (DrawStruct->Type() == TYPE_DRAWSEGMENT) && (DrawStruct->m_Flags & IS_NEW) ) { - DrawStruct = Begin_DrawSegment( (DRAWSEGMENT*) DrawStruct, shape, DC ); + DrawStruct = Begin_DrawSegment( (DRAWSEGMENT*) DrawStruct, shape, aDC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = true; } @@ -231,14 +228,14 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { - DrawStruct = Begin_Route( NULL, DC ); + DrawStruct = Begin_Route( NULL, aDC ); SetCurItem( DrawStruct ); if( DrawStruct ) DrawPanel->m_AutoPAN_Request = true; } else if( DrawStruct && (DrawStruct->m_Flags & IS_NEW) ) { - TRACK* track = Begin_Route( (TRACK*) DrawStruct, DC ); + TRACK* track = Begin_Route( (TRACK*) DrawStruct, aDC ); // SetCurItem() must not write to the msg panel // because a track info is displayed while moving the mouse cursor if( track ) // A new segment was created @@ -272,12 +269,12 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) DrawPanel->MouseToCursorSchema(); ZONE_CONTAINER* zone_cont = (ZONE_CONTAINER*) GetCurItem(); DrawPanel->m_AutoPAN_Request = true; - Start_Move_Zone_Corner( DC, + Start_Move_Zone_Corner( aDC, zone_cont, zone_cont->m_CornerSelection, false ); } - else if( Begin_Zone( DC ) ) + else if( Begin_Zone( aDC ) ) { DrawPanel->m_AutoPAN_Request = true; DrawStruct = GetBoard()->m_CurrentZoneContour; @@ -289,7 +286,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) && (DrawStruct->m_Flags & IS_NEW) ) { // Add a new corner to the current outline beeing created: DrawPanel->m_AutoPAN_Request = true; - Begin_Zone( DC ); + Begin_Zone( aDC ); DrawStruct = GetBoard()->m_CurrentZoneContour; GetScreen()->SetCurItem( DrawStruct ); } @@ -300,13 +297,13 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) case ID_PCB_ADD_TEXT_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { - SetCurItem( Create_Texte_Pcb( DC ) ); + SetCurItem( Create_Texte_Pcb( aDC ) ); DrawPanel->MouseToCursorSchema(); DrawPanel->m_AutoPAN_Request = true; } else if( DrawStruct->Type() == TYPE_TEXTE ) { - Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, DC ); + Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, aDC ); DrawPanel->m_AutoPAN_Request = false; } else @@ -317,14 +314,14 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawPanel->MouseToCursorSchema(); - DrawStruct = Load_Module_From_Library( wxEmptyString, DC ); + DrawStruct = Load_Module_From_Library( wxEmptyString, aDC ); SetCurItem( DrawStruct ); if( DrawStruct ) - StartMove_Module( (MODULE*) DrawStruct, DC ); + StartMove_Module( (MODULE*) DrawStruct, aDC ); } else if( DrawStruct->Type() == TYPE_MODULE ) { - Place_Module( (MODULE*) DrawStruct, DC ); + Place_Module( (MODULE*) DrawStruct, aDC ); DrawPanel->m_AutoPAN_Request = false; } else @@ -339,7 +336,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) } if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { - DrawStruct = Begin_Dimension( NULL, DC ); + DrawStruct = Begin_Dimension( NULL, aDC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = true; } @@ -347,7 +344,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) && (DrawStruct->Type() == TYPE_DIMENSION) && (DrawStruct->m_Flags & IS_NEW) ) { - DrawStruct = Begin_Dimension( (DIMENSION*) DrawStruct, DC ); + DrawStruct = Begin_Dimension( (DIMENSION*) DrawStruct, aDC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = true; } @@ -361,23 +358,23 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) DrawStruct = PcbGeneralLocateAndDisplay(); if( DrawStruct && (DrawStruct->m_Flags == 0) ) { - RemoveStruct( DrawStruct, DC ); + RemoveStruct( DrawStruct, aDC ); SetCurItem( DrawStruct = NULL ); } } break; case ID_PCB_PLACE_OFFSET_COORD_BUTT: - DrawPanel->DrawAuxiliaryAxis( DC, GR_XOR ); + DrawPanel->DrawAuxiliaryAxis( aDC, GR_XOR ); m_Auxiliary_Axis_Position = GetScreen()->m_Curseur; - DrawPanel->DrawAuxiliaryAxis( DC, GR_COPY ); + DrawPanel->DrawAuxiliaryAxis( aDC, GR_COPY ); OnModify(); break; case ID_PCB_PLACE_GRID_COORD_BUTT: - DrawPanel->DrawGridAxis( DC, GR_XOR ); + DrawPanel->DrawGridAxis( aDC, GR_XOR ); GetScreen()->m_GridOrigin = GetScreen()->m_Curseur; - DrawPanel->DrawGridAxis( DC, GR_COPY ); + DrawPanel->DrawGridAxis( aDC, GR_COPY ); break; default: @@ -391,7 +388,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) /* handle the double click on the mouse left button */ -void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) +void WinEDA_PcbFrame::OnLeftDClick( wxDC* aDC, const wxPoint& aPosition ) { BOARD_ITEM* DrawStruct = GetCurItem(); @@ -417,12 +414,12 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) case TYPE_VIA: if( DrawStruct->m_Flags & IS_NEW ) { - End_Route( (TRACK*) DrawStruct, DC ); + End_Route( (TRACK*) DrawStruct, aDC ); DrawPanel->m_AutoPAN_Request = false; } else if( DrawStruct->m_Flags == 0 ) { - Edit_TrackSegm_Width( DC, (TRACK*) DrawStruct ); + Edit_TrackSegm_Width( aDC, (TRACK*) DrawStruct ); } break; @@ -432,18 +429,18 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) case TYPE_MIRE: case TYPE_DIMENSION: case TYPE_TEXTE_MODULE: - OnEditItemRequest( DC, DrawStruct ); + OnEditItemRequest( aDC, DrawStruct ); DrawPanel->MouseToCursorSchema(); break; case TYPE_DRAWSEGMENT: - OnEditItemRequest( DC, DrawStruct ); + OnEditItemRequest( aDC, DrawStruct ); break; case TYPE_ZONE_CONTAINER: if( DrawStruct->m_Flags ) break; - OnEditItemRequest( DC, DrawStruct ); + OnEditItemRequest( aDC, DrawStruct ); break; default: @@ -455,13 +452,13 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) case ID_TRACK_BUTT: if( DrawStruct && (DrawStruct->m_Flags & IS_NEW) ) { - End_Route( (TRACK*) DrawStruct, DC ); + End_Route( (TRACK*) DrawStruct, aDC ); DrawPanel->m_AutoPAN_Request = false; } break; case ID_PCB_ZONES_BUTT: - if( End_Zone( DC ) ) + if( End_Zone( aDC ) ) { DrawPanel->m_AutoPAN_Request = false; SetCurItem( NULL ); @@ -481,7 +478,7 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) } if( (DrawStruct->m_Flags & IS_NEW) ) { - End_Edge( (DRAWSEGMENT*) DrawStruct, DC ); + End_Edge( (DRAWSEGMENT*) DrawStruct, aDC ); DrawPanel->m_AutoPAN_Request = false; SetCurItem( NULL ); } @@ -494,20 +491,20 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) /** * Function OnEditItemRequest * Install the corresponding dialog editor for the given item - * @param DC = the current device context + * @param aDC = the current device context * @param aItem = a pointer to the BOARD_ITEM to edit */ -void WinEDA_PcbFrame::OnEditItemRequest( wxDC* DC, BOARD_ITEM* aItem ) +void WinEDA_PcbFrame::OnEditItemRequest( wxDC* aDC, BOARD_ITEM* aItem ) { switch( aItem->Type() ) { case TYPE_TRACK: case TYPE_VIA: - Edit_TrackSegm_Width( DC, (TRACK*) aItem ); + Edit_TrackSegm_Width( aDC, (TRACK*) aItem ); break; case TYPE_TEXTE: - InstallTextPCBOptionsFrame( (TEXTE_PCB*) aItem, DC ); + InstallTextPCBOptionsFrame( (TEXTE_PCB*) aItem, aDC ); break; case TYPE_PAD: @@ -515,27 +512,27 @@ void WinEDA_PcbFrame::OnEditItemRequest( wxDC* DC, BOARD_ITEM* aItem ) break; case TYPE_MODULE: - InstallModuleOptionsFrame( (MODULE*) aItem, DC ); + InstallModuleOptionsFrame( (MODULE*) aItem, aDC ); break; case TYPE_MIRE: - InstallMireOptionsFrame( (MIREPCB*) aItem, DC ); + InstallMireOptionsFrame( (MIREPCB*) aItem, aDC ); break; case TYPE_DIMENSION: - Install_Edit_Dimension( (DIMENSION*) aItem, DC ); + Install_Edit_Dimension( (DIMENSION*) aItem, aDC ); break; case TYPE_TEXTE_MODULE: - InstallTextModOptionsFrame( (TEXTE_MODULE*) aItem, DC ); + InstallTextModOptionsFrame( (TEXTE_MODULE*) aItem, aDC ); break; case TYPE_DRAWSEGMENT: - InstallGraphicItemPropertiesDialog( (DRAWSEGMENT*) aItem, DC ); + InstallGraphicItemPropertiesDialog( (DRAWSEGMENT*) aItem, aDC ); break; case TYPE_ZONE_CONTAINER: - Edit_Zone_Params( DC, (ZONE_CONTAINER*) aItem ); + Edit_Zone_Params( aDC, (ZONE_CONTAINER*) aItem ); break; default: