Loading change_log.txt +8 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,14 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. 2007-Sep-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ + pcbnew create new file onleftclick.cpp move onleftcligk() and onleftDcligk() from edit.cpp to onleftclick.cpp 2007-Sep-27 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ + all Loading eeschema/onrightclick.cpp +11 −9 Original line number Diff line number Diff line Loading @@ -92,6 +92,13 @@ void WinEDA_SchematicFrame::OnRightClick( const wxPoint& MousePos, DrawPanel->m_CanStartBlock = -1; // Ne pas engager un debut de bloc sur validation menu if( BlockActive ) { AddMenusForBlock( PopMenu, this ); PopMenu->AppendSeparator(); return; } // Simple localisation des elements si possible if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { Loading Loading @@ -121,18 +128,13 @@ void WinEDA_SchematicFrame::OnRightClick( const wxPoint& MousePos, } else { if( (DrawStruct && DrawStruct->m_Flags) || BlockActive ) if( DrawStruct && DrawStruct->m_Flags ) { if( BlockActive ) AddMenusForBlock( PopMenu, this ); else ADD_MENUITEM( PopMenu, ID_POPUP_CANCEL_CURRENT_COMMAND, _( "Cancel" ), cancel_xpm ); PopMenu->AppendSeparator(); } } if( BlockActive ) return; if( DrawStruct == NULL ) { if( m_CurrentScreen != ScreenSch ) Loading pcbnew/edit.cpp +4 −424 Original line number Diff line number Diff line Loading @@ -19,306 +19,6 @@ static void Process_Move_Item( WinEDA_PcbFrame* frame, EDA_BaseStruct* DrawStruct, wxDC* DC ); /********************************************************************/ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) /********************************************************************/ /* Handle the left buttom mouse click, when a tool is active */ { BOARD_ITEM* DrawStruct = GetCurItem(); bool exit = false; if( (m_ID_current_state == 0) || ( DrawStruct && DrawStruct->m_Flags ) ) { DrawPanel->m_AutoPAN_Request = FALSE; if( DrawStruct && DrawStruct->m_Flags ) // "POPUP" in progress { DrawPanel->m_IgnoreMouseEvents = TRUE; DrawPanel->CursorOff( DC ); switch( DrawStruct->Type() ) { case TYPETRACK: case TYPEVIA: if( DrawStruct->m_Flags & IS_DRAGGED ) { PlaceDraggedTrackSegment( (TRACK*) DrawStruct, DC ); exit = true; } break; case TYPETEXTE: Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, DC ); exit = true; break; case TYPETEXTEMODULE: PlaceTexteModule( (TEXTE_MODULE*) DrawStruct, DC ); exit = true; break; case TYPEPAD: PlacePad( (D_PAD*) DrawStruct, DC ); exit = true; break; case TYPEMODULE: Place_Module( (MODULE*) DrawStruct, DC ); exit = true; break; case TYPEMIRE: Place_Mire( (MIREPCB*) DrawStruct, DC ); exit = true; break; case TYPEDRAWSEGMENT: if( m_ID_current_state == 0 ) { Place_DrawItem( (DRAWSEGMENT*) DrawStruct, DC ); exit = true; } break; default: if( m_ID_current_state == 0 ) { DisplayError( this, wxT( "WinEDA_PcbFrame::OnLeftClick() err: m_Flags != 0" ) ); exit = true; } break; } DrawPanel->m_IgnoreMouseEvents = FALSE; DrawPanel->CursorOn( DC ); if ( exit ) return; } else if( !wxGetKeyState(WXK_SHIFT) && !wxGetKeyState(WXK_ALT) && !wxGetKeyState(WXK_CONTROL) ) { DrawStruct = PcbGeneralLocateAndDisplay(); if( DrawStruct ) SendMessageToEESCHEMA( DrawStruct ); } } switch( m_ID_current_state ) { case ID_MAIN_MENUBAR: case 0: break; case ID_NO_SELECT_BUTT: break; case ID_PCB_MUWAVE_TOOL_SELF_CMD: case ID_PCB_MUWAVE_TOOL_GAP_CMD: 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 ); break; case ID_PCB_HIGHLIGHT_BUTT: { int netcode = Select_High_Light( DC ); if( netcode < 0 ) m_Pcb->Display_Infos( this ); else Affiche_Infos_Equipot( netcode, this ); } break; case ID_PCB_SHOW_1_RATSNEST_BUTT: #if 0 DrawStruct = m_Pcb->FindPadOrModule( GetScreen()->RefPos(true), GetScreen()->m_Active_Layer ); #else DrawStruct = PcbGeneralLocateAndDisplay(); #endif Show_1_Ratsnest( DrawStruct, DC ); if( DrawStruct ) SendMessageToEESCHEMA( DrawStruct ); break; case ID_PCB_MIRE_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { SetCurItem( Create_Mire( DC ) ); DrawPanel->MouseToCursorSchema(); } else if( DrawStruct->Type() == TYPEMIRE ) { Place_Mire( (MIREPCB*) DrawStruct, DC ); } else DisplayError( this, wxT( "Internal err: Struct not TYPEMIRE" ) ); break; case ID_PCB_CIRCLE_BUTT: case ID_PCB_ARC_BUTT: case ID_LINE_COMMENT_BUTT: { int shape = S_SEGMENT; if( m_ID_current_state == ID_PCB_CIRCLE_BUTT ) shape = S_CIRCLE; if( m_ID_current_state == ID_PCB_ARC_BUTT ) shape = S_ARC; if( GetScreen()->m_Active_Layer <= CMP_N ) { DisplayError( this, _( "Graphic not autorized on Copper layers" ) ); break; } if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawStruct = Begin_DrawSegment( NULL, shape, DC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = TRUE; } else if( DrawStruct && (DrawStruct->Type() == TYPEDRAWSEGMENT) && (DrawStruct->m_Flags & IS_NEW) ) { DrawStruct = Begin_DrawSegment( (DRAWSEGMENT*) DrawStruct, shape, DC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = TRUE; } break; } case ID_TRACK_BUTT: if( GetScreen()->m_Active_Layer > CMP_N ) { DisplayError( this, _( "Tracks on Copper layers only " ) ); break; } if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawStruct = Begin_Route( NULL, DC ); SetCurItem( DrawStruct ); if( DrawStruct ) DrawPanel->m_AutoPAN_Request = TRUE; } else if( DrawStruct && // (DrawStruct->Type() == TYPETRACK) && (DrawStruct->m_Flags & IS_NEW) ) { TRACK* track = Begin_Route( (TRACK*) DrawStruct, DC ); if( track ) // c'est a dire si OK SetCurItem( DrawStruct = track ); DrawPanel->m_AutoPAN_Request = TRUE; } break; case ID_PCB_ZONES_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { SetCurItem( DrawStruct = Begin_Zone() ); } else if( DrawStruct && (DrawStruct->Type() == TYPEEDGEZONE) && (DrawStruct->m_Flags & IS_NEW) ) { SetCurItem( DrawStruct = Begin_Zone() ); } else DisplayError( this, wxT( "Edit: zone internal error" ) ); break; case ID_TEXT_COMMENT_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { SetCurItem( Create_Texte_Pcb( DC ) ); DrawPanel->MouseToCursorSchema(); DrawPanel->m_AutoPAN_Request = TRUE; } else if( DrawStruct->Type() == TYPETEXTE ) { Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, DC ); DrawPanel->m_AutoPAN_Request = FALSE; } else DisplayError( this, wxT( "Internal err: Struct not TYPETEXTE" ) ); break; case ID_COMPONENT_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawPanel->MouseToCursorSchema(); DrawStruct = Load_Module_From_Library( wxEmptyString, DC ); SetCurItem( DrawStruct ); if( DrawStruct ) StartMove_Module( (MODULE*) DrawStruct, DC ); } else if( DrawStruct->Type() == TYPEMODULE ) { Place_Module( (MODULE*) DrawStruct, DC ); DrawPanel->m_AutoPAN_Request = FALSE; } else DisplayError( this, wxT( "Internal err: Struct not TYPEMODULE" ) ); break; case ID_PCB_COTATION_BUTT: if( GetScreen()->m_Active_Layer <= CMP_N ) { DisplayError( this, _( "Cotation not autorized on Copper layers" ) ); break; } if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawStruct = Begin_Cotation( NULL, DC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = TRUE; } else if( DrawStruct && (DrawStruct->Type() == TYPECOTATION) && (DrawStruct->m_Flags & IS_NEW) ) { DrawStruct = Begin_Cotation( (COTATION*) DrawStruct, DC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = TRUE; } else DisplayError( this, wxT( "Internal err: Struct not COTATION" ) ); break; case ID_PCB_DELETE_ITEM_BUTT: if( !DrawStruct || (DrawStruct->m_Flags == 0) ) { DrawStruct = PcbGeneralLocateAndDisplay(); if( DrawStruct && (DrawStruct->m_Flags == 0) ) { RemoveStruct( DrawStruct, DC ); SetCurItem( DrawStruct = NULL ); } } break; case ID_PCB_PLACE_OFFSET_COORD_BUTT: DrawPanel->m_Draw_Auxiliary_Axis( DC, GR_XOR ); m_Auxiliary_Axis_Position = GetScreen()->m_Curseur; DrawPanel->m_Draw_Auxiliary_Axis( DC, GR_COPY ); GetScreen()->SetModify(); break; default: DrawPanel->SetCursor( wxCURSOR_ARROW ); DisplayError( this, wxT( "WinEDA_PcbFrame::OnLeftClick() id error" ) ); SetToolID( 0, wxCURSOR_ARROW, wxEmptyString ); break; } } // see wxstruct.h void WinEDA_PcbFrame::SendMessageToEESCHEMA( EDA_BaseStruct* objectToSync ) { Loading Loading @@ -363,7 +63,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) pos.y += 20; switch( id ) // Arret eventuel de la commande de d�placement en cours switch( id ) // Some (not all ) edit commands must be finished or aborted { case wxID_CUT: case wxID_COPY: Loading Loading @@ -456,7 +156,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) { DrawPanel->ForceCloseManageCurseur( DrawPanel, &dc ); } /* ne devrait pas etre execute, sauf bug */ /* Should not be executed, just in case */ if( m_CurrentScreen->BlockLocate.m_Command != BLOCK_IDLE ) { m_CurrentScreen->BlockLocate.m_Command = BLOCK_IDLE; Loading @@ -469,7 +169,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) SetCursor( DrawPanel->m_PanelCursor = DrawPanel->m_PanelDefaultCursor ); break; default: // Arret de la commande de d�placement en cours default: // Finish (abort ) the command if( DrawPanel->ManageCurseur && DrawPanel->ForceCloseManageCurseur ) { Loading @@ -479,7 +179,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) break; } switch( id ) // Traitement des commandes switch( id ) // Execute command { case ID_EXIT: Close( TRUE ); Loading Loading @@ -1230,126 +930,6 @@ static void Process_Move_Item( WinEDA_PcbFrame* frame, } } /********************************************************************************/ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) /********************************************************************************/ /* Appel� sur un double click: * pour un �l�ment editable (textes, composant): * appel de l'editeur correspondant. * pour une connexion en cours: * termine la connexion */ { BOARD_ITEM* DrawStruct = GetCurItem(); wxPoint pos = GetPosition(); wxClientDC dc( DrawPanel ); DrawPanel->PrepareGraphicContext( &dc ); switch( m_ID_current_state ) { case 0: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawStruct = PcbGeneralLocateAndDisplay(); } if( (DrawStruct == NULL) || (DrawStruct->m_Flags != 0) ) break; SendMessageToEESCHEMA( DrawStruct ); // Element localis� SetCurItem( DrawStruct ); switch( DrawStruct->Type() ) { case TYPETRACK: case TYPEVIA: if( DrawStruct->m_Flags & IS_NEW ) { End_Route( (TRACK*) DrawStruct, DC ); DrawPanel->m_AutoPAN_Request = FALSE; } else if( DrawStruct->m_Flags == 0 ) { Edit_TrackSegm_Width( DC, (TRACK*) DrawStruct ); } break; case TYPETEXTE: InstallTextPCBOptionsFrame( (TEXTE_PCB*) DrawStruct, DC, ( (TEXTE_PCB*) DrawStruct )->m_Pos ); DrawPanel->MouseToCursorSchema(); break; case TYPEPAD: InstallPadOptionsFrame( (D_PAD*) DrawStruct, &dc, pos ); DrawPanel->MouseToCursorSchema(); break; case TYPEMODULE: InstallModuleOptionsFrame( (MODULE*) DrawStruct, &dc, pos ); DrawPanel->MouseToCursorSchema(); break; case TYPEMIRE: InstallMireOptionsFrame( (MIREPCB*) DrawStruct, &dc, pos ); DrawPanel->MouseToCursorSchema(); break; case TYPETEXTEMODULE: InstallTextModOptionsFrame( (TEXTE_MODULE*) DrawStruct, &dc, pos ); DrawPanel->MouseToCursorSchema(); break; case TYPEDRAWSEGMENT: break; default: break; } break; // end case 0 case ID_TRACK_BUTT: if( DrawStruct && (DrawStruct->m_Flags & IS_NEW) ) { End_Route( (TRACK*) DrawStruct, DC ); DrawPanel->m_AutoPAN_Request = FALSE; } break; case ID_PCB_ZONES_BUTT: End_Zone( DC ); DrawPanel->m_AutoPAN_Request = FALSE; SetCurItem( NULL ); break; case ID_LINE_COMMENT_BUTT: case ID_PCB_ARC_BUTT: case ID_PCB_CIRCLE_BUTT: if( DrawStruct == NULL ) break; if( DrawStruct->Type() != TYPEDRAWSEGMENT ) { DisplayError( this, wxT( "DrawStruct Type error" ) ); DrawPanel->m_AutoPAN_Request = FALSE; break; } if( (DrawStruct->m_Flags & IS_NEW) ) { End_Edge( (DRAWSEGMENT*) DrawStruct, &dc ); DrawPanel->m_AutoPAN_Request = FALSE; SetCurItem( NULL ); } break; } } /***************************************************************/ void WinEDA_PcbFrame::RemoveStruct( EDA_BaseStruct* Item, wxDC* DC ) /***************************************************************/ Loading Loading
change_log.txt +8 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,14 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with email address. 2007-Sep-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ + pcbnew create new file onleftclick.cpp move onleftcligk() and onleftDcligk() from edit.cpp to onleftclick.cpp 2007-Sep-27 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ + all Loading
eeschema/onrightclick.cpp +11 −9 Original line number Diff line number Diff line Loading @@ -92,6 +92,13 @@ void WinEDA_SchematicFrame::OnRightClick( const wxPoint& MousePos, DrawPanel->m_CanStartBlock = -1; // Ne pas engager un debut de bloc sur validation menu if( BlockActive ) { AddMenusForBlock( PopMenu, this ); PopMenu->AppendSeparator(); return; } // Simple localisation des elements si possible if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { Loading Loading @@ -121,18 +128,13 @@ void WinEDA_SchematicFrame::OnRightClick( const wxPoint& MousePos, } else { if( (DrawStruct && DrawStruct->m_Flags) || BlockActive ) if( DrawStruct && DrawStruct->m_Flags ) { if( BlockActive ) AddMenusForBlock( PopMenu, this ); else ADD_MENUITEM( PopMenu, ID_POPUP_CANCEL_CURRENT_COMMAND, _( "Cancel" ), cancel_xpm ); PopMenu->AppendSeparator(); } } if( BlockActive ) return; if( DrawStruct == NULL ) { if( m_CurrentScreen != ScreenSch ) Loading
pcbnew/edit.cpp +4 −424 Original line number Diff line number Diff line Loading @@ -19,306 +19,6 @@ static void Process_Move_Item( WinEDA_PcbFrame* frame, EDA_BaseStruct* DrawStruct, wxDC* DC ); /********************************************************************/ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) /********************************************************************/ /* Handle the left buttom mouse click, when a tool is active */ { BOARD_ITEM* DrawStruct = GetCurItem(); bool exit = false; if( (m_ID_current_state == 0) || ( DrawStruct && DrawStruct->m_Flags ) ) { DrawPanel->m_AutoPAN_Request = FALSE; if( DrawStruct && DrawStruct->m_Flags ) // "POPUP" in progress { DrawPanel->m_IgnoreMouseEvents = TRUE; DrawPanel->CursorOff( DC ); switch( DrawStruct->Type() ) { case TYPETRACK: case TYPEVIA: if( DrawStruct->m_Flags & IS_DRAGGED ) { PlaceDraggedTrackSegment( (TRACK*) DrawStruct, DC ); exit = true; } break; case TYPETEXTE: Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, DC ); exit = true; break; case TYPETEXTEMODULE: PlaceTexteModule( (TEXTE_MODULE*) DrawStruct, DC ); exit = true; break; case TYPEPAD: PlacePad( (D_PAD*) DrawStruct, DC ); exit = true; break; case TYPEMODULE: Place_Module( (MODULE*) DrawStruct, DC ); exit = true; break; case TYPEMIRE: Place_Mire( (MIREPCB*) DrawStruct, DC ); exit = true; break; case TYPEDRAWSEGMENT: if( m_ID_current_state == 0 ) { Place_DrawItem( (DRAWSEGMENT*) DrawStruct, DC ); exit = true; } break; default: if( m_ID_current_state == 0 ) { DisplayError( this, wxT( "WinEDA_PcbFrame::OnLeftClick() err: m_Flags != 0" ) ); exit = true; } break; } DrawPanel->m_IgnoreMouseEvents = FALSE; DrawPanel->CursorOn( DC ); if ( exit ) return; } else if( !wxGetKeyState(WXK_SHIFT) && !wxGetKeyState(WXK_ALT) && !wxGetKeyState(WXK_CONTROL) ) { DrawStruct = PcbGeneralLocateAndDisplay(); if( DrawStruct ) SendMessageToEESCHEMA( DrawStruct ); } } switch( m_ID_current_state ) { case ID_MAIN_MENUBAR: case 0: break; case ID_NO_SELECT_BUTT: break; case ID_PCB_MUWAVE_TOOL_SELF_CMD: case ID_PCB_MUWAVE_TOOL_GAP_CMD: 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 ); break; case ID_PCB_HIGHLIGHT_BUTT: { int netcode = Select_High_Light( DC ); if( netcode < 0 ) m_Pcb->Display_Infos( this ); else Affiche_Infos_Equipot( netcode, this ); } break; case ID_PCB_SHOW_1_RATSNEST_BUTT: #if 0 DrawStruct = m_Pcb->FindPadOrModule( GetScreen()->RefPos(true), GetScreen()->m_Active_Layer ); #else DrawStruct = PcbGeneralLocateAndDisplay(); #endif Show_1_Ratsnest( DrawStruct, DC ); if( DrawStruct ) SendMessageToEESCHEMA( DrawStruct ); break; case ID_PCB_MIRE_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { SetCurItem( Create_Mire( DC ) ); DrawPanel->MouseToCursorSchema(); } else if( DrawStruct->Type() == TYPEMIRE ) { Place_Mire( (MIREPCB*) DrawStruct, DC ); } else DisplayError( this, wxT( "Internal err: Struct not TYPEMIRE" ) ); break; case ID_PCB_CIRCLE_BUTT: case ID_PCB_ARC_BUTT: case ID_LINE_COMMENT_BUTT: { int shape = S_SEGMENT; if( m_ID_current_state == ID_PCB_CIRCLE_BUTT ) shape = S_CIRCLE; if( m_ID_current_state == ID_PCB_ARC_BUTT ) shape = S_ARC; if( GetScreen()->m_Active_Layer <= CMP_N ) { DisplayError( this, _( "Graphic not autorized on Copper layers" ) ); break; } if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawStruct = Begin_DrawSegment( NULL, shape, DC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = TRUE; } else if( DrawStruct && (DrawStruct->Type() == TYPEDRAWSEGMENT) && (DrawStruct->m_Flags & IS_NEW) ) { DrawStruct = Begin_DrawSegment( (DRAWSEGMENT*) DrawStruct, shape, DC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = TRUE; } break; } case ID_TRACK_BUTT: if( GetScreen()->m_Active_Layer > CMP_N ) { DisplayError( this, _( "Tracks on Copper layers only " ) ); break; } if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawStruct = Begin_Route( NULL, DC ); SetCurItem( DrawStruct ); if( DrawStruct ) DrawPanel->m_AutoPAN_Request = TRUE; } else if( DrawStruct && // (DrawStruct->Type() == TYPETRACK) && (DrawStruct->m_Flags & IS_NEW) ) { TRACK* track = Begin_Route( (TRACK*) DrawStruct, DC ); if( track ) // c'est a dire si OK SetCurItem( DrawStruct = track ); DrawPanel->m_AutoPAN_Request = TRUE; } break; case ID_PCB_ZONES_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { SetCurItem( DrawStruct = Begin_Zone() ); } else if( DrawStruct && (DrawStruct->Type() == TYPEEDGEZONE) && (DrawStruct->m_Flags & IS_NEW) ) { SetCurItem( DrawStruct = Begin_Zone() ); } else DisplayError( this, wxT( "Edit: zone internal error" ) ); break; case ID_TEXT_COMMENT_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { SetCurItem( Create_Texte_Pcb( DC ) ); DrawPanel->MouseToCursorSchema(); DrawPanel->m_AutoPAN_Request = TRUE; } else if( DrawStruct->Type() == TYPETEXTE ) { Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, DC ); DrawPanel->m_AutoPAN_Request = FALSE; } else DisplayError( this, wxT( "Internal err: Struct not TYPETEXTE" ) ); break; case ID_COMPONENT_BUTT: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawPanel->MouseToCursorSchema(); DrawStruct = Load_Module_From_Library( wxEmptyString, DC ); SetCurItem( DrawStruct ); if( DrawStruct ) StartMove_Module( (MODULE*) DrawStruct, DC ); } else if( DrawStruct->Type() == TYPEMODULE ) { Place_Module( (MODULE*) DrawStruct, DC ); DrawPanel->m_AutoPAN_Request = FALSE; } else DisplayError( this, wxT( "Internal err: Struct not TYPEMODULE" ) ); break; case ID_PCB_COTATION_BUTT: if( GetScreen()->m_Active_Layer <= CMP_N ) { DisplayError( this, _( "Cotation not autorized on Copper layers" ) ); break; } if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawStruct = Begin_Cotation( NULL, DC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = TRUE; } else if( DrawStruct && (DrawStruct->Type() == TYPECOTATION) && (DrawStruct->m_Flags & IS_NEW) ) { DrawStruct = Begin_Cotation( (COTATION*) DrawStruct, DC ); SetCurItem( DrawStruct ); DrawPanel->m_AutoPAN_Request = TRUE; } else DisplayError( this, wxT( "Internal err: Struct not COTATION" ) ); break; case ID_PCB_DELETE_ITEM_BUTT: if( !DrawStruct || (DrawStruct->m_Flags == 0) ) { DrawStruct = PcbGeneralLocateAndDisplay(); if( DrawStruct && (DrawStruct->m_Flags == 0) ) { RemoveStruct( DrawStruct, DC ); SetCurItem( DrawStruct = NULL ); } } break; case ID_PCB_PLACE_OFFSET_COORD_BUTT: DrawPanel->m_Draw_Auxiliary_Axis( DC, GR_XOR ); m_Auxiliary_Axis_Position = GetScreen()->m_Curseur; DrawPanel->m_Draw_Auxiliary_Axis( DC, GR_COPY ); GetScreen()->SetModify(); break; default: DrawPanel->SetCursor( wxCURSOR_ARROW ); DisplayError( this, wxT( "WinEDA_PcbFrame::OnLeftClick() id error" ) ); SetToolID( 0, wxCURSOR_ARROW, wxEmptyString ); break; } } // see wxstruct.h void WinEDA_PcbFrame::SendMessageToEESCHEMA( EDA_BaseStruct* objectToSync ) { Loading Loading @@ -363,7 +63,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) pos.y += 20; switch( id ) // Arret eventuel de la commande de d�placement en cours switch( id ) // Some (not all ) edit commands must be finished or aborted { case wxID_CUT: case wxID_COPY: Loading Loading @@ -456,7 +156,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) { DrawPanel->ForceCloseManageCurseur( DrawPanel, &dc ); } /* ne devrait pas etre execute, sauf bug */ /* Should not be executed, just in case */ if( m_CurrentScreen->BlockLocate.m_Command != BLOCK_IDLE ) { m_CurrentScreen->BlockLocate.m_Command = BLOCK_IDLE; Loading @@ -469,7 +169,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) SetCursor( DrawPanel->m_PanelCursor = DrawPanel->m_PanelDefaultCursor ); break; default: // Arret de la commande de d�placement en cours default: // Finish (abort ) the command if( DrawPanel->ManageCurseur && DrawPanel->ForceCloseManageCurseur ) { Loading @@ -479,7 +179,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) break; } switch( id ) // Traitement des commandes switch( id ) // Execute command { case ID_EXIT: Close( TRUE ); Loading Loading @@ -1230,126 +930,6 @@ static void Process_Move_Item( WinEDA_PcbFrame* frame, } } /********************************************************************************/ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ) /********************************************************************************/ /* Appel� sur un double click: * pour un �l�ment editable (textes, composant): * appel de l'editeur correspondant. * pour une connexion en cours: * termine la connexion */ { BOARD_ITEM* DrawStruct = GetCurItem(); wxPoint pos = GetPosition(); wxClientDC dc( DrawPanel ); DrawPanel->PrepareGraphicContext( &dc ); switch( m_ID_current_state ) { case 0: if( (DrawStruct == NULL) || (DrawStruct->m_Flags == 0) ) { DrawStruct = PcbGeneralLocateAndDisplay(); } if( (DrawStruct == NULL) || (DrawStruct->m_Flags != 0) ) break; SendMessageToEESCHEMA( DrawStruct ); // Element localis� SetCurItem( DrawStruct ); switch( DrawStruct->Type() ) { case TYPETRACK: case TYPEVIA: if( DrawStruct->m_Flags & IS_NEW ) { End_Route( (TRACK*) DrawStruct, DC ); DrawPanel->m_AutoPAN_Request = FALSE; } else if( DrawStruct->m_Flags == 0 ) { Edit_TrackSegm_Width( DC, (TRACK*) DrawStruct ); } break; case TYPETEXTE: InstallTextPCBOptionsFrame( (TEXTE_PCB*) DrawStruct, DC, ( (TEXTE_PCB*) DrawStruct )->m_Pos ); DrawPanel->MouseToCursorSchema(); break; case TYPEPAD: InstallPadOptionsFrame( (D_PAD*) DrawStruct, &dc, pos ); DrawPanel->MouseToCursorSchema(); break; case TYPEMODULE: InstallModuleOptionsFrame( (MODULE*) DrawStruct, &dc, pos ); DrawPanel->MouseToCursorSchema(); break; case TYPEMIRE: InstallMireOptionsFrame( (MIREPCB*) DrawStruct, &dc, pos ); DrawPanel->MouseToCursorSchema(); break; case TYPETEXTEMODULE: InstallTextModOptionsFrame( (TEXTE_MODULE*) DrawStruct, &dc, pos ); DrawPanel->MouseToCursorSchema(); break; case TYPEDRAWSEGMENT: break; default: break; } break; // end case 0 case ID_TRACK_BUTT: if( DrawStruct && (DrawStruct->m_Flags & IS_NEW) ) { End_Route( (TRACK*) DrawStruct, DC ); DrawPanel->m_AutoPAN_Request = FALSE; } break; case ID_PCB_ZONES_BUTT: End_Zone( DC ); DrawPanel->m_AutoPAN_Request = FALSE; SetCurItem( NULL ); break; case ID_LINE_COMMENT_BUTT: case ID_PCB_ARC_BUTT: case ID_PCB_CIRCLE_BUTT: if( DrawStruct == NULL ) break; if( DrawStruct->Type() != TYPEDRAWSEGMENT ) { DisplayError( this, wxT( "DrawStruct Type error" ) ); DrawPanel->m_AutoPAN_Request = FALSE; break; } if( (DrawStruct->m_Flags & IS_NEW) ) { End_Edge( (DRAWSEGMENT*) DrawStruct, &dc ); DrawPanel->m_AutoPAN_Request = FALSE; SetCurItem( NULL ); } break; } } /***************************************************************/ void WinEDA_PcbFrame::RemoveStruct( EDA_BaseStruct* Item, wxDC* DC ) /***************************************************************/ Loading