void GERBVIEW_FRAME::HandleBlockPlace( wxDC* DC ) { wxASSERT( m_canvas->IsMouseCaptured() ); GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_STOP ); switch( GetScreen()->m_BlockLocate.GetCommand() ) { case BLOCK_MOVE: /* Move */ if( m_canvas->IsMouseCaptured() ) m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); Block_Move( DC ); GetScreen()->m_BlockLocate.ClearItemsList(); break; default: wxFAIL_MSG( wxT("HandleBlockPlace: Unexpected block command") ); break; } m_canvas->EndMouseCapture( GetToolId(), m_canvas->GetCurrentCursor(), wxEmptyString, false ); GetScreen()->SetModify(); GetScreen()->ClearBlockCommand(); wxASSERT( GetScreen()->m_BlockLocate.GetCount() == 0 ); DisplayToolMsg( wxEmptyString ); }
void EDA_DRAW_FRAME::SetToolID( int aId, int aCursor, const wxString& aToolMsg ) { // Keep default cursor in toolbars SetCursor( wxNullCursor ); // Change m_canvas cursor if requested. if( m_canvas && aCursor >= 0 ) m_canvas->SetCurrentCursor( aCursor ); DisplayToolMsg( aToolMsg ); if( aId < 0 ) return; wxCHECK2_MSG( aId >= ID_NO_TOOL_SELECTED, aId = ID_NO_TOOL_SELECTED, wxString::Format( wxT( "Current tool ID cannot be set to %d." ), aId ) ); m_toolId = aId; }
void WinEDA_GerberFrame::HandleBlockPlace(wxDC * DC) /*****************************************************/ /* Routine to handle the BLOCK PLACE commande */ { bool err = FALSE; if(GetScreen()->ManageCurseur == NULL) { err = TRUE; DisplayError(this, "Error in HandleBlockPLace : ManageCurseur = NULL" ); } GetScreen()->BlockLocate.m_State = STATE_BLOCK_STOP; switch(GetScreen()->BlockLocate.m_Command ) { case BLOCK_IDLE: err = TRUE; break; case BLOCK_DRAG: /* Drag */ case BLOCK_MOVE: /* Move */ case BLOCK_PRESELECT_MOVE: /* Move with preselection list*/ if ( GetScreen()->ManageCurseur ) GetScreen()->ManageCurseur(DrawPanel, DC, FALSE); Block_Move(DC); GetScreen()->BlockLocate.m_BlockDrawStruct = NULL; break; case BLOCK_COPY: /* Copy */ if ( GetScreen()->ManageCurseur ) GetScreen()->ManageCurseur(DrawPanel, DC, FALSE); Block_Duplicate(DC); GetScreen()->BlockLocate.m_BlockDrawStruct = NULL; break; case BLOCK_PASTE: break; case BLOCK_ZOOM: // Handle by HandleBlockEnd() case BLOCK_ROTATE: case BLOCK_INVERT: case BLOCK_DELETE: case BLOCK_SAVE: case BLOCK_ABORT: case BLOCK_SELECT_ITEMS_ONLY: break; } GetScreen()->SetModify(); GetScreen()->ManageCurseur = NULL; GetScreen()->ForceCloseManageCurseur = NULL; GetScreen()->BlockLocate.m_Flags = 0; GetScreen()->BlockLocate.m_State = STATE_NO_BLOCK; GetScreen()->BlockLocate.m_Command = BLOCK_IDLE; if ( GetScreen()->BlockLocate.m_BlockDrawStruct ) { DisplayError(this, "Error in HandleBlockPLace DrawStruct != NULL" ); GetScreen()->BlockLocate.m_BlockDrawStruct = NULL; } DisplayToolMsg(""); }
int WinEDA_GerberFrame::HandleBlockEnd(wxDC * DC) /**********************************************/ /* Routine de gestion de la commande BLOCK END returne : 0 si aucun compos ant selectionne 1 sinon -1 si commande terminée et composants trouvés (block delete, block save) */ { int endcommande = TRUE; bool zoom_command = FALSE; if(GetScreen()->ManageCurseur ) switch( GetScreen()->BlockLocate.m_Command ) { case BLOCK_IDLE: DisplayError(this, "Error in HandleBlockPLace"); break; case BLOCK_DRAG: /* Drag (not used, for future enhancements)*/ case BLOCK_MOVE: /* Move */ case BLOCK_COPY: /* Copy */ case BLOCK_PRESELECT_MOVE: /* Move with preselection list*/ GetScreen()->BlockLocate.m_State = STATE_BLOCK_MOVE; endcommande = FALSE; GetScreen()->ManageCurseur(DrawPanel, DC, FALSE); GetScreen()->ManageCurseur = DrawMovingBlockOutlines; GetScreen()->ManageCurseur(DrawPanel, DC, FALSE); break; case BLOCK_DELETE: /* Delete */ GetScreen()->BlockLocate.m_State = STATE_BLOCK_STOP; GetScreen()->ManageCurseur(DrawPanel, DC, FALSE); Block_Delete(DC); break; case BLOCK_ROTATE: /* Unused */ break; case BLOCK_INVERT: /* Fip */ break; case BLOCK_SAVE: /* Save (not used)*/ break; case BLOCK_PASTE: break; case BLOCK_ZOOM: /* Window Zoom */ zoom_command = TRUE; break; case BLOCK_ABORT: case BLOCK_SELECT_ITEMS_ONLY: break; } if ( endcommande == TRUE ) { GetScreen()->BlockLocate.m_Flags = 0; GetScreen()->BlockLocate.m_State = STATE_NO_BLOCK; GetScreen()->BlockLocate.m_Command = BLOCK_IDLE; GetScreen()->BlockLocate.m_BlockDrawStruct = NULL; GetScreen()->ManageCurseur = NULL; GetScreen()->ForceCloseManageCurseur = NULL; DisplayToolMsg(""); } if ( zoom_command ) Window_Zoom( GetScreen()->BlockLocate ); return(endcommande); }