这篇教程C++ GetToolId函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GetToolId函数的典型用法代码示例。如果您正苦于以下问题:C++ GetToolId函数的具体用法?C++ GetToolId怎么用?C++ GetToolId使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GetToolId函数的23个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: GetCurItembool PCB_EDIT_FRAME::OnHotkeyPlaceItem( wxDC* aDC ){ BOARD_ITEM* item = GetCurItem(); bool no_tool = GetToolId() == ID_NO_TOOL_SELECTED; bool itemCurrentlyEdited = item && item->GetFlags(); m_canvas->SetAutoPanRequest( false ); if( itemCurrentlyEdited ) { m_canvas->SetIgnoreMouseEvents( true ); m_canvas->CrossHairOff( aDC ); switch( item->Type() ) { case PCB_TRACE_T: case PCB_VIA_T: if( item->IsDragging() ) PlaceDraggedOrMovedTrackSegment( static_cast<TRACK*>( item ), aDC ); break; case PCB_TEXT_T: Place_Texte_Pcb( static_cast<TEXTE_PCB*>( item ), aDC ); break; case PCB_MODULE_TEXT_T: PlaceTexteModule( static_cast<TEXTE_MODULE*>( item ), aDC ); break; case PCB_PAD_T: PlacePad( static_cast<D_PAD*>( item ), aDC ); break; case PCB_MODULE_T: PlaceModule( static_cast<MODULE*>( item ), aDC ); break; case PCB_TARGET_T: PlaceTarget( static_cast<PCB_TARGET*>( item ), aDC ); break; case PCB_LINE_T: if( no_tool ) // when no tools: existing item moving. Place_DrawItem( static_cast<DRAWSEGMENT*>( item ), aDC ); break; default: break; } m_canvas->SetIgnoreMouseEvents( false ); m_canvas->CrossHairOn( aDC ); return true; } return false;}
开发者ID:johnbeard,项目名称:kicad,代码行数:60,
示例2: GetToolIdvoid LIB_EDIT_FRAME::OnUpdateEditingPart( wxUpdateUIEvent& aEvent ){ aEvent.Enable( m_component != NULL ); if( m_component != NULL && aEvent.GetEventObject() == m_drawToolBar ) aEvent.Check( GetToolId() == aEvent.GetId() );}
开发者ID:manasdas17,项目名称:kicad-source-mirror,代码行数:7,
示例3: wxASSERTvoid 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 );}
开发者ID:barrem,项目名称:kicad-source-mirror,代码行数:29,
示例4: GetBoardvoid FOOTPRINT_EDIT_FRAME::OnUpdateVerticalToolbar( wxUpdateUIEvent& aEvent ){ aEvent.Enable( GetBoard()->m_Modules != NULL ); if( aEvent.GetEventObject() == m_drawToolBar ) aEvent.Check( GetToolId() == aEvent.GetId() );}
开发者ID:flighta-zeng,项目名称:kicad-source-mirror,代码行数:7,
示例5: GetCurPartvoid LIB_EDIT_FRAME::OnUpdateEditingPart( wxUpdateUIEvent& aEvent ){ LIB_PART* part = GetCurPart(); aEvent.Enable( part != NULL ); if( part && aEvent.GetEventObject() == m_drawToolBar ) aEvent.Check( GetToolId() == aEvent.GetId() );}
开发者ID:KiCad,项目名称:kicad-source-mirror,代码行数:9,
示例6: GetBoardvoid PCB_EDIT_FRAME::HandleBlockPlace( wxDC* DC ){ GetBoard()->m_Status_Pcb &= ~DO_NOT_SHOW_GENERAL_RASTNEST; if( !m_canvas->IsMouseCaptured() ) { DisplayError( this, wxT( "Error in HandleBlockPLace : m_mouseCaptureCallback = NULL" ) ); } GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_STOP ); const BLOCK_COMMAND_T command = GetScreen()->m_BlockLocate.GetCommand(); switch( command ) { case BLOCK_IDLE: break; case BLOCK_DRAG: // Drag case BLOCK_MOVE: // Move case BLOCK_PRESELECT_MOVE: // Move with preselection list if( m_canvas->IsMouseCaptured() ) m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); Block_Move(); GetScreen()->m_BlockLocate.ClearItemsList(); break; case BLOCK_COPY: // Copy case BLOCK_COPY_AND_INCREMENT: if( m_canvas->IsMouseCaptured() ) m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); Block_Duplicate( command == BLOCK_COPY_AND_INCREMENT ); GetScreen()->m_BlockLocate.ClearItemsList(); break; case BLOCK_PASTE: break; case BLOCK_ZOOM: // Handled by HandleBlockEnd() default: break; } OnModify(); m_canvas->EndMouseCapture( GetToolId(), m_canvas->GetCurrentCursor(), wxEmptyString, false ); GetScreen()->ClearBlockCommand(); if( GetScreen()->m_BlockLocate.GetCount() ) { DisplayError( this, wxT( "Error in HandleBlockPLace some items left in list" ) ); GetScreen()->m_BlockLocate.ClearItemsList(); }}
开发者ID:BTR1,项目名称:kicad-source-mirror,代码行数:56,
示例7: wxUnusedVarvoid NewToolDlg::OnButtonOk( wxCommandEvent& event ){ wxUnusedVar(event); int rc(wxID_OK); // load all the tools ExternalToolsData inData; m_mgr->GetConfigTool()->ReadObject(wxT("ExternalTools"), &inData); for(size_t i=0; i<inData.GetTools().size(); i++){ if(GetToolId() == inData.GetTools().at(i).GetId()){ int answer = wxMessageBox(wxString::Format(wxT("Continue updating tool ID '%s'"), GetToolId().c_str()), wxT("EmbeddedLite"), wxYES_NO|wxCANCEL, this); if(answer != wxYES){ rc = wxID_CANCEL; } break; } } EndModal(rc);}
开发者ID:RVictor,项目名称:EmbeddedLite,代码行数:20,
示例8: GetToolIdvoid PCB_BASE_FRAME::SetToolID( int aId, int aCursor, const wxString& aToolMsg ){ bool redraw = false; EDA_DRAW_FRAME::SetToolID( aId, aCursor, aToolMsg ); if( aId < 0 ) return; // handle color changes for transitions in and out of ID_TRACK_BUTT if( ( GetToolId() == ID_TRACK_BUTT && aId != ID_TRACK_BUTT ) || ( GetToolId() != ID_TRACK_BUTT && aId== ID_TRACK_BUTT ) ) { if( DisplayOpt.ContrastModeDisplay ) redraw = true; } // must do this after the tool has been set, otherwise pad::Draw() does // not show proper color when DisplayOpt.ContrastModeDisplay is true. if( redraw && m_canvas) m_canvas->Refresh();}
开发者ID:james-sakalaukus,项目名称:kicad,代码行数:22,
示例9: SaveCopyInUndoListvoid LIB_EDIT_FRAME::OnRotateItem( wxCommandEvent& aEvent ){ if( m_drawItem == NULL ) return; if( !m_drawItem->InEditMode() ) { SaveCopyInUndoList( m_component ); m_drawItem->SetUnit( m_unit ); } m_drawItem->Rotate(); OnModify(); if( !m_drawItem->InEditMode() ) m_drawItem->ClearFlags(); m_canvas->Refresh(); if( GetToolId() == ID_NO_TOOL_SELECTED ) m_lastDrawItem = NULL;}
开发者ID:manasdas17,项目名称:kicad-source-mirror,代码行数:22,
示例10: switchbool GERBVIEW_FRAME::HandleBlockEnd( wxDC* DC ){ bool nextcmd = false; bool zoom_command = false; if( m_canvas->IsMouseCaptured() ) switch( GetScreen()->m_BlockLocate.GetCommand() ) { case BLOCK_MOVE: /* Move */ GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_MOVE ); nextcmd = true; m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); m_canvas->SetMouseCaptureCallback( DrawMovingBlockOutlines ); m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); break; case BLOCK_ZOOM: /* Window Zoom */ zoom_command = true; break; default: wxFAIL_MSG( wxT("HandleBlockEnd: Unexpected block command") ); break; } if( ! nextcmd ) { GetScreen()->ClearBlockCommand(); m_canvas->EndMouseCapture( GetToolId(), m_canvas->GetCurrentCursor(), wxEmptyString, false ); } if( zoom_command ) Window_Zoom( GetScreen()->m_BlockLocate ); return nextcmd ;}
开发者ID:barrem,项目名称:kicad-source-mirror,代码行数:38,
示例11: GetDrawItemvoid LIB_EDIT_FRAME::EndDrawGraphicItem( wxDC* DC ){ LIB_ITEM* item = GetDrawItem(); if( item == NULL ) return; if( LIB_PART* part = GetCurPart() ) { if( GetToolId() != ID_NO_TOOL_SELECTED ) SetCursor( wxCURSOR_PENCIL ); else SetCursor( (wxStockCursor) m_canvas->GetDefaultCursor() ); if( GetTempCopyComponent() ) // used when editing an existing item SaveCopyInUndoList( GetTempCopyComponent() ); else { // When creating a new item, there is still no change for the // current symbol. So save it. SaveCopyInUndoList( part ); } if( item->IsNew() ) part->AddDrawItem( item ); item->EndEdit( GetCrossHairPosition( true ) ); SetDrawItem( NULL ); OnModify(); m_canvas->SetMouseCapture( NULL, NULL ); m_canvas->Refresh(); }}
开发者ID:cpavlina,项目名称:kicad,代码行数:36,
示例12: GetCurItem/* * Called on a mouse left button double click */void FOOTPRINT_EDIT_FRAME::OnLeftDClick( wxDC* DC, const wxPoint& MousePos ){ BOARD_ITEM* item = GetCurItem(); switch( GetToolId() ) { case ID_NO_TOOL_SELECTED: if( ( item == NULL ) || ( item->GetFlags() == 0 ) ) { item = ModeditLocateAndDisplay(); } if( ( item == NULL ) || ( item->GetFlags() != 0 ) ) break; // Item found SetCurItem( item ); OnEditItemRequest( DC, item ); break; // end case 0 case ID_PCB_ADD_LINE_BUTT: { if( item && item->IsNew() ) { End_Edge_Module( (EDGE_MODULE*) item ); SetCurItem( NULL ); m_canvas->Refresh(); } break; } default: break; }}
开发者ID:danstiurca,项目名称:kicad-source-mirror,代码行数:39,
示例13: switch/* Must be called on a click on the left toolbar (options toolbar * Update variables according to tools states */void PCB_EDIT_FRAME::OnSelectOptionToolbar( wxCommandEvent& event ){ int id = event.GetId(); bool state = event.IsChecked(); switch( id ) { case ID_TB_OPTIONS_DRC_OFF: g_Drc_On = !state; if( GetToolId() == ID_TRACK_BUTT ) { if( g_Drc_On ) m_canvas->SetCursor( wxCURSOR_PENCIL ); else m_canvas->SetCursor( wxCURSOR_QUESTION_ARROW ); } break; case ID_TB_OPTIONS_SHOW_RATSNEST: SetElementVisibility( RATSNEST_VISIBLE, state ); if( state && (GetBoard()->m_Status_Pcb & LISTE_RATSNEST_ITEM_OK) == 0 ) Compile_Ratsnest( NULL, true ); m_canvas->Refresh(); break; case ID_TB_OPTIONS_SHOW_MODULE_RATSNEST: g_Show_Module_Ratsnest = state; // TODO: use the visibility list break; case ID_TB_OPTIONS_AUTO_DEL_TRACK: g_AutoDeleteOldTrack = state; break; case ID_TB_OPTIONS_SHOW_ZONES: DisplayOpt.DisplayZonesMode = 0; m_canvas->Refresh(); break; case ID_TB_OPTIONS_SHOW_ZONES_DISABLE: DisplayOpt.DisplayZonesMode = 1; m_canvas->Refresh(); break; case ID_TB_OPTIONS_SHOW_ZONES_OUTLINES_ONLY: DisplayOpt.DisplayZonesMode = 2; m_canvas->Refresh(); break; case ID_TB_OPTIONS_SHOW_VIAS_SKETCH: m_DisplayViaFill = DisplayOpt.DisplayViaFill = !state; m_canvas->Refresh(); break; case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH: m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill = !state; m_canvas->Refresh(); break; case ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE: { DisplayOpt.ContrastModeDisplay = state; m_canvas->Refresh(); break; } case ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR_MICROWAVE: m_show_microwave_tools = state; m_auimgr.GetPane( wxT( "m_microWaveToolBar" ) ).Show( m_show_microwave_tools ); m_auimgr.Update(); GetMenuBar()->SetLabel( ID_MENU_PCB_SHOW_HIDE_MUWAVE_TOOLBAR, m_show_microwave_tools ? _( "Hide Microwave Toolbar" ): _( "Show Microwave Toolbar" )); break; case ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR: // show auxiliary Vertical layers and visibility manager toolbar m_show_layer_manager_tools = state; m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools ); m_auimgr.Update(); GetMenuBar()->SetLabel( ID_MENU_PCB_SHOW_HIDE_LAYERS_MANAGER_DIALOG, m_show_layer_manager_tools ? _( "Hide &Layers Manager" ) : _( "Show &Layers Manager" ) ); break; default: DisplayError( this, wxT( "PCB_EDIT_FRAME::OnSelectOptionToolbar error /n (event not handled!)" ) ); break; }}
开发者ID:LDavis4559,项目名称:kicad-source-mirror,代码行数:98,
示例14: GetCurPartvoid LIB_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& aPosition ){ LIB_ITEM* item = m_drawItem; bool item_in_edit = item && item->InEditMode(); bool no_item_edited = !item_in_edit; LIB_PART* part = GetCurPart(); if( !part ) // No component loaded ! return; if( ( GetToolId() == ID_NO_TOOL_SELECTED ) && no_item_edited ) { item = LocateItemUsingCursor( aPosition ); if( item ) { MSG_PANEL_ITEMS items; item->GetMsgPanelInfo( items ); SetMsgPanel( items ); } else { DisplayCmpDoc(); if( m_canvas->GetAbortRequest() ) m_canvas->SetAbortRequest( false ); } } switch( GetToolId() ) { case ID_NO_TOOL_SELECTED: // If an item is currently in edit, finish edit if( item_in_edit ) { switch( item->Type() ) { case LIB_PIN_T: PlacePin(); break; default: EndDrawGraphicItem( DC ); break; } } break; case ID_LIBEDIT_PIN_BUTT: if( no_item_edited ) CreatePin( DC ); else PlacePin(); break; case ID_LIBEDIT_BODY_LINE_BUTT: case ID_LIBEDIT_BODY_ARC_BUTT: case ID_LIBEDIT_BODY_CIRCLE_BUTT: case ID_LIBEDIT_BODY_RECT_BUTT: case ID_LIBEDIT_BODY_TEXT_BUTT: if( no_item_edited ) m_drawItem = CreateGraphicItem( part, DC ); else if( m_drawItem ) { if( m_drawItem->IsNew() ) GraphicItemBeginDraw( DC ); else EndDrawGraphicItem( DC ); } break; case ID_LIBEDIT_DELETE_ITEM_BUTT: m_drawItem = LocateItemUsingCursor( aPosition ); if( m_drawItem ) deleteItem( DC ); else DisplayCmpDoc(); break; case ID_LIBEDIT_ANCHOR_ITEM_BUTT: SaveCopyInUndoList( part ); PlaceAnchor(); SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); break; default: wxFAIL_MSG( wxString::Format( wxT( "Unhandled command ID %d" ), GetToolId() ) ); SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); break; }}
开发者ID:Caerbannog,项目名称:kicad-git-bzr,代码行数:94,
示例15: GetCrossHairPositionvoid PCB_EDIT_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey ){ // Filter out the 'fake' mouse motion after a keyboard movement if( !aHotKey && m_movingCursorWithKeyboard ) { m_movingCursorWithKeyboard = false; return; } // when moving mouse, use the "magnetic" grid, unless the shift+ctrl keys is pressed // for next cursor position // ( shift or ctrl key down are PAN command with mouse wheel) bool snapToGrid = true; if( !aHotKey && wxGetKeyState( WXK_SHIFT ) && wxGetKeyState( WXK_CONTROL ) ) snapToGrid = false; wxPoint oldpos = GetCrossHairPosition(); wxPoint pos = aPosition; GeneralControlKeyMovement( aHotKey, &pos, snapToGrid ); // Put cursor in new position, according to the zoom keys (if any). SetCrossHairPosition( pos, snapToGrid ); /* Put cursor on grid or a pad centre if requested. If the tool DELETE is active the * cursor is left off grid this is better to reach items to delete off grid, */ if( GetToolId() == ID_PCB_DELETE_ITEM_BUTT ) snapToGrid = false; // Cursor is left off grid if no block in progress if( GetScreen()->m_BlockLocate.GetState() != STATE_NO_BLOCK ) snapToGrid = true; wxPoint curs_pos = pos; wxRealPoint gridSize = GetScreen()->GetGridSize(); wxSize igridsize; igridsize.x = KiROUND( gridSize.x ); igridsize.y = KiROUND( gridSize.y ); if( Magnetize( this, GetToolId(), igridsize, curs_pos, &pos ) ) { SetCrossHairPosition( pos, false ); } else { // If there's no intrusion and DRC is active, we pass the cursor // "as is", and let ShowNewTrackWhenMovingCursor figure out what to do. if( !g_Drc_On || !g_CurrentTrackSegment || (BOARD_ITEM*)g_CurrentTrackSegment != this->GetCurItem() || !LocateIntrusion( m_Pcb->m_Track, g_CurrentTrackSegment, GetScreen()->m_Active_Layer, RefPos( true ) ) ) { SetCrossHairPosition( curs_pos, snapToGrid ); } } RefreshCrossHair( oldpos, aPosition, aDC ); if( aHotKey ) { OnHotKey( aDC, aHotKey, aPosition ); } UpdateStatusBar(); // Display new cursor coordinates}
开发者ID:johnbeard,项目名称:kicad-source-mirror,代码行数:66,
示例16: SetCrossHairPosition//.........这里部分代码省略......... case BLOCK_DELETE: GetScreen()->UpdatePickList(); DrawAndSizingBlockOutlines( m_canvas, aDC, wxDefaultPosition, false ); if( block->GetCount() ) { DeleteItemsInList( m_canvas, block->GetItems() ); OnModify(); } block->ClearItemsList(); GetScreen()->TestDanglingEnds( m_canvas, aDC ); m_canvas->Refresh(); break; case BLOCK_SAVE: // Save a copy of items in paste buffer GetScreen()->UpdatePickList(); DrawAndSizingBlockOutlines( m_canvas, aDC, wxDefaultPosition, false ); if( block->GetCount() ) { wxPoint move_vector = -GetScreen()->m_BlockLocate.GetLastCursorPosition(); copyBlockItems( block->GetItems() ); MoveItemsInList( m_blockItems.GetItems(), move_vector ); } block->ClearItemsList(); break; case BLOCK_PASTE: block->SetState( STATE_BLOCK_MOVE ); break; case BLOCK_ZOOM: zoom_command = true; break; case BLOCK_MIRROR_X: GetScreen()->UpdatePickList(); DrawAndSizingBlockOutlines( m_canvas, aDC, wxDefaultPosition, false ); if( block->GetCount() ) { // Compute the mirror center and put it on grid. wxPoint mirrorPoint = block->Centre(); mirrorPoint = GetNearestGridPosition( mirrorPoint ); SetCrossHairPosition( mirrorPoint ); SaveCopyInUndoList( block->GetItems(), UR_MIRRORED_X, mirrorPoint ); MirrorX( block->GetItems(), mirrorPoint ); OnModify(); } GetScreen()->TestDanglingEnds( m_canvas, aDC ); m_canvas->Refresh(); break; case BLOCK_MIRROR_Y: GetScreen()->UpdatePickList(); DrawAndSizingBlockOutlines( m_canvas, aDC, wxDefaultPosition, false ); if( block->GetCount() ) { // Compute the mirror center and put it on grid. wxPoint mirrorPoint = block->Centre(); mirrorPoint = GetNearestGridPosition( mirrorPoint ); SetCrossHairPosition( mirrorPoint ); SaveCopyInUndoList( block->GetItems(), UR_MIRRORED_Y, mirrorPoint ); MirrorY( block->GetItems(), mirrorPoint ); OnModify(); } GetScreen()->TestDanglingEnds( m_canvas, aDC ); m_canvas->Refresh(); break; default: break; } } if( block->GetCommand() == BLOCK_ABORT ) { GetScreen()->ClearDrawingState(); m_canvas->Refresh(); } if( ! nextcmd ) { block->SetState( STATE_NO_BLOCK ); block->SetCommand( BLOCK_IDLE ); GetScreen()->SetCurItem( NULL ); m_canvas->EndMouseCapture( GetToolId(), m_canvas->GetCurrentCursor(), wxEmptyString, false ); } if( zoom_command ) Window_Zoom( GetScreen()->m_BlockLocate ); return nextcmd;}
开发者ID:grtwall,项目名称:kicad-source-mirror,代码行数:101,
示例17: GetToolIdvoid PCB_EDIT_FRAME::OnUpdateMuWaveToolbar( wxUpdateUIEvent& aEvent ){ if( aEvent.GetEventObject() == m_microWaveToolBar ) aEvent.Check( GetToolId() == aEvent.GetId() );}
开发者ID:UIKit0,项目名称:kicad-source-mirror,代码行数:5,
示例18: GetNearestGridPositionvoid PCB_EDIT_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey ){ wxRealPoint gridSize; wxPoint oldpos; wxPoint pos = aPosition; // when moving mouse, use the "magnetic" grid, unless the shift+ctrl keys is pressed // for next cursor position // ( shift or ctrl key down are PAN command with mouse wheel) bool snapToGrid = true; if( !aHotKey && wxGetKeyState( WXK_SHIFT ) && wxGetKeyState( WXK_CONTROL ) ) snapToGrid = false; if( snapToGrid ) pos = GetNearestGridPosition( pos ); oldpos = GetCrossHairPosition(); gridSize = GetScreen()->GetGridSize(); switch( aHotKey ) { case WXK_NUMPAD8: case WXK_UP: pos.y -= KiROUND( gridSize.y ); m_canvas->MoveCursor( pos ); break; case WXK_NUMPAD2: case WXK_DOWN: pos.y += KiROUND( gridSize.y ); m_canvas->MoveCursor( pos ); break; case WXK_NUMPAD4: case WXK_LEFT: pos.x -= KiROUND( gridSize.x ); m_canvas->MoveCursor( pos ); break; case WXK_NUMPAD6: case WXK_RIGHT: pos.x += KiROUND( gridSize.x ); m_canvas->MoveCursor( pos ); break; default: break; } // Put cursor in new position, according to the zoom keys (if any). SetCrossHairPosition( pos, snapToGrid ); /* Put cursor on grid or a pad centre if requested. If the tool DELETE is active the * cursor is left off grid this is better to reach items to delete off grid, */ if( GetToolId() == ID_PCB_DELETE_ITEM_BUTT ) snapToGrid = false; // Cursor is left off grid if no block in progress if( GetScreen()->m_BlockLocate.GetState() != STATE_NO_BLOCK ) snapToGrid = true; wxPoint curs_pos = pos; wxSize igridsize; igridsize.x = KiROUND( gridSize.x ); igridsize.y = KiROUND( gridSize.y ); if( Magnetize( this, GetToolId(), igridsize, curs_pos, &pos ) ) { SetCrossHairPosition( pos, false ); } else { // If there's no intrusion and DRC is active, we pass the cursor // "as is", and let ShowNewTrackWhenMovingCursor figure out what to do. if( !g_Drc_On || !g_CurrentTrackSegment || (BOARD_ITEM*)g_CurrentTrackSegment != this->GetCurItem() || !LocateIntrusion( m_Pcb->m_Track, g_CurrentTrackSegment, GetScreen()->m_Active_Layer, RefPos( true ) ) ) { SetCrossHairPosition( curs_pos, snapToGrid ); } } if( oldpos != GetCrossHairPosition() ) { pos = GetCrossHairPosition(); SetCrossHairPosition( oldpos, false ); m_canvas->CrossHairOff( aDC ); SetCrossHairPosition( pos, false ); m_canvas->CrossHairOn( aDC ); if( m_canvas->IsMouseCaptured() ) {#ifdef USE_WX_OVERLAY wxDCOverlay oDC( m_overlay, (wxWindowDC*)aDC ); oDC.Clear();//.........这里部分代码省略.........
开发者ID:ianohara,项目名称:kicad-source-mirror,代码行数:101,
示例19: GetBoard//.........这里部分代码省略......... SetCrossHairPosition( wxPoint( GetScreen()->m_BlockLocate.GetRight(), GetScreen()->m_BlockLocate.GetBottom() ) ); m_canvas->MoveCursorToCrossHair(); } switch( GetScreen()->m_BlockLocate.GetCommand() ) { case BLOCK_IDLE: DisplayError( this, wxT( "Error in HandleBlockPLace" ) ); break; case BLOCK_DRAG: // Drag case BLOCK_MOVE: // Move case BLOCK_COPY: // Copy itemsCount = MarkItemsInBloc( currentModule, GetScreen()->m_BlockLocate ); if( itemsCount ) { nextcmd = true; if( m_canvas->IsMouseCaptured() ) { m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); m_canvas->SetMouseCaptureCallback( DrawMovingBlockOutlines ); m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); } GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_MOVE ); m_canvas->Refresh( true ); } break; case BLOCK_PRESELECT_MOVE: // Move with preselection list nextcmd = true; m_canvas->SetMouseCaptureCallback( DrawMovingBlockOutlines ); GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_MOVE ); break; case BLOCK_DELETE: // Delete itemsCount = MarkItemsInBloc( currentModule, GetScreen()->m_BlockLocate ); if( itemsCount ) SaveCopyInUndoList( currentModule, UR_MODEDIT ); DeleteMarkedItems( currentModule ); break; case BLOCK_SAVE: // Save case BLOCK_PASTE: break; case BLOCK_ROTATE: itemsCount = MarkItemsInBloc( currentModule, GetScreen()->m_BlockLocate ); if( itemsCount ) SaveCopyInUndoList( currentModule, UR_MODEDIT ); RotateMarkedItems( currentModule, GetScreen()->m_BlockLocate.Centre() ); break; case BLOCK_MIRROR_X: case BLOCK_MIRROR_Y: case BLOCK_FLIP: // mirror itemsCount = MarkItemsInBloc( currentModule, GetScreen()->m_BlockLocate ); if( itemsCount ) SaveCopyInUndoList( currentModule, UR_MODEDIT ); MirrorMarkedItems( currentModule, GetScreen()->m_BlockLocate.Centre() ); break; case BLOCK_ZOOM: // Window Zoom Window_Zoom( GetScreen()->m_BlockLocate ); break; case BLOCK_ABORT: break; case BLOCK_SELECT_ITEMS_ONLY: break; } if( !nextcmd ) { if( GetScreen()->m_BlockLocate.GetCommand() != BLOCK_SELECT_ITEMS_ONLY ) { ClearMarkItems( currentModule ); } GetScreen()->ClearBlockCommand(); SetCurItem( NULL ); m_canvas->EndMouseCapture( GetToolId(), m_canvas->GetCurrentCursor(), wxEmptyString, false ); m_canvas->Refresh( true ); } return nextcmd;}
开发者ID:Th0rN13,项目名称:kicad-source-mirror,代码行数:101,
示例20: GeneralControlKeyMovementbool SCH_EDIT_FRAME::GeneralControl( wxDC* aDC, const wxPoint& aPosition, EDA_KEY aHotKey ){ // Filter out the 'fake' mouse motion after a keyboard movement if( !aHotKey && m_movingCursorWithKeyboard ) { m_movingCursorWithKeyboard = false; return false; } // when moving mouse, use the "magnetic" grid, unless the shift+ctrl keys is pressed // for next cursor position // ( shift or ctrl key down are PAN command with mouse wheel) bool snapToGrid = true; if( !aHotKey && wxGetKeyState( WXK_SHIFT ) && wxGetKeyState( WXK_CONTROL ) ) snapToGrid = false; // Cursor is left off grid only if no block in progress if( GetScreen()->m_BlockLocate.GetState() != STATE_NO_BLOCK ) snapToGrid = true; wxPoint pos = aPosition; bool keyHandled = GeneralControlKeyMovement( aHotKey, &pos, snapToGrid ); if( GetToolId() == ID_NO_TOOL_SELECTED ) m_canvas->CrossHairOff( aDC ); else m_canvas->CrossHairOn( aDC ); GetGalCanvas()->GetViewControls()->SetSnapping( snapToGrid ); SetCrossHairPosition( pos, snapToGrid ); if( m_canvas->IsMouseCaptured() ) m_canvas->CallMouseCapture( aDC, aPosition, true ); if( aHotKey ) { if( m_movingCursorWithKeyboard ) // The hotkey was a move crossahir cursor command { // The crossair was moved. move the mouse cursor to the new crosshair position: GetGalCanvas()->GetViewControls()->WarpCursor( GetCrossHairPosition(), true ); m_movingCursorWithKeyboard = 0; } else { SCH_SCREEN* screen = GetScreen(); bool hk_handled; if( screen->GetCurItem() && screen->GetCurItem()->GetFlags() ) hk_handled = OnHotKey( aDC, aHotKey, aPosition, screen->GetCurItem() ); else hk_handled = OnHotKey( aDC, aHotKey, aPosition, NULL ); if( hk_handled ) keyHandled = true; } } UpdateStatusBar(); /* Display cursor coordinates info */ return keyHandled;}
开发者ID:Lotharyx,项目名称:kicad-source-mirror,代码行数:62,
示例21: GetToolIdbool PCB_EDIT_FRAME::HandleBlockEnd( wxDC* DC ){ bool nextcmd = false; // Will be set to true if a block place is needed bool cancelCmd = false; // If coming here after cancel block, clean up and exit if( GetScreen()->m_BlockLocate.GetState() == STATE_NO_BLOCK ) { m_canvas->EndMouseCapture( GetToolId(), m_canvas->GetCurrentCursor(), wxEmptyString, false ); GetScreen()->ClearBlockCommand(); return false; } // Show dialog if there are no selected items and we're not zooming if( !GetScreen()->m_BlockLocate.GetCount() && GetScreen()->m_BlockLocate.GetCommand() != BLOCK_ZOOM ) { if( InstallBlockCmdFrame( this, _( "Block Operation" ) ) == false ) { cancelCmd = true; // undraw block outline m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); } else { DrawAndSizingBlockOutlines( m_canvas, DC, wxDefaultPosition, false ); Block_SelectItems(); // Exit if no items found if( !GetScreen()->m_BlockLocate.GetCount() ) cancelCmd = true; } } if( !cancelCmd && m_canvas->IsMouseCaptured() ) { switch( GetScreen()->m_BlockLocate.GetCommand() ) { case BLOCK_IDLE: DisplayError( this, wxT( "Error in HandleBlockPLace" ) ); break; case BLOCK_DRAG: // Drag (not used, for future enhancements) case BLOCK_MOVE: // Move case BLOCK_COPY: // Copy case BLOCK_COPY_AND_INCREMENT: // Copy and increment relevant references case BLOCK_PRESELECT_MOVE: // Move with preselection list GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_MOVE ); nextcmd = true; m_canvas->SetMouseCaptureCallback( drawMovingBlock ); m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); break; case BLOCK_DELETE: // Delete m_canvas->SetMouseCaptureCallback( NULL ); GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_STOP ); Block_Delete(); break; case BLOCK_ROTATE: // Rotation m_canvas->SetMouseCaptureCallback( NULL ); GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_STOP ); Block_Rotate(); break; case BLOCK_FLIP: // Flip m_canvas->SetMouseCaptureCallback( NULL ); GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_STOP ); Block_Flip(); break; case BLOCK_SAVE: // Save (not used, for future enhancements) GetScreen()->m_BlockLocate.SetState( STATE_BLOCK_STOP ); if( GetScreen()->m_BlockLocate.GetCount() ) { // @todo (if useful) Save_Block( ); } break; case BLOCK_PASTE: break; case BLOCK_ZOOM: // Window Zoom // Turn off the redraw block routine now so it is not displayed // with one corner at the new center of the screen m_canvas->SetMouseCaptureCallback( NULL ); Window_Zoom( GetScreen()->m_BlockLocate ); break; default: break; } } if( ! nextcmd ) { GetBoard()->m_Status_Pcb |= DO_NOT_SHOW_GENERAL_RASTNEST;//.........这里部分代码省略.........
开发者ID:BTR1,项目名称:kicad-source-mirror,代码行数:101,
示例22: GetCollectorsGuideBOARD_ITEM* PCB_BASE_FRAME::PcbGeneralLocateAndDisplay( int aHotKeyCode ){ BOARD_ITEM* item; GENERAL_COLLECTORS_GUIDE guide = GetCollectorsGuide(); // Assign to scanList the proper item types desired based on tool type // or hotkey that is in play. const KICAD_T* scanList = NULL; if( aHotKeyCode ) { // @todo: add switch here and add calls to PcbGeneralLocateAndDisplay( int aHotKeyCode ) // when searching is needed from a hotkey handler } else if( GetToolId() == ID_NO_TOOL_SELECTED ) { if( m_mainToolBar->GetToolToggled( ID_TOOLBARH_PCB_MODE_MODULE ) ) scanList = GENERAL_COLLECTOR::ModuleItems; else scanList = (DisplayOpt.DisplayZonesMode == 0) ? GENERAL_COLLECTOR::AllBoardItems : GENERAL_COLLECTOR::AllButZones; } else { switch( GetToolId() ) { case ID_PCB_SHOW_1_RATSNEST_BUTT: scanList = GENERAL_COLLECTOR::PadsOrModules; break; case ID_TRACK_BUTT: scanList = GENERAL_COLLECTOR::Tracks; break; case ID_PCB_MODULE_BUTT: scanList = GENERAL_COLLECTOR::ModuleItems; break; case ID_PCB_ZONES_BUTT: case ID_PCB_KEEPOUT_AREA_BUTT: scanList = GENERAL_COLLECTOR::Zones; break; default: scanList = DisplayOpt.DisplayZonesMode == 0 ? GENERAL_COLLECTOR::AllBoardItems : GENERAL_COLLECTOR::AllButZones; } } m_Collector->Collect( m_Pcb, scanList, RefPos( true ), guide );#if 0 // debugging: print out the collected items, showing their priority order too. for( int i = 0; i<m_Collector->GetCount(); ++i ) (*m_Collector)[i]->Show( 0, std::cout );#endif /* Remove redundancies: sometime, legacy zones are found twice, * because zones can be filled by overlapping segments (this is a fill option) * Trigger the selection of the current edge for new-style zones */ time_t timestampzone = 0; for( int ii = 0; ii < m_Collector->GetCount(); ii++ ) { item = (*m_Collector)[ii]; switch( item->Type() ) { case PCB_ZONE_T: // Found a TYPE ZONE if( item->GetTimeStamp() == timestampzone ) // Remove it, redundant, zone already found { m_Collector->Remove( ii ); ii--; } else { timestampzone = item->GetTimeStamp(); } break; case PCB_ZONE_AREA_T: { /* We need to do the selection now because the menu text * depends on it */ ZONE_CONTAINER *zone = static_cast<ZONE_CONTAINER*>( item ); zone->SetSelectedCorner( RefPos( true ) ); } break; default: break; } }//.........这里部分代码省略.........
开发者ID:johnbeard,项目名称:kicad-source-mirror,代码行数:101,
示例23: DisplayErrorvoid SCH_EDIT_FRAME::HandleBlockPlace( wxDC* DC ){ BLOCK_SELECTOR* block = &GetScreen()->m_BlockLocate; if( !m_canvas->IsMouseCaptured() ) { DisplayError( this, wxT( "HandleBlockPLace() : m_mouseCaptureCallback = NULL" ) ); } if( block->GetCount() == 0 ) { wxString msg; msg.Printf( wxT( "HandleBlockPLace() error : no items to place (cmd %d, state %d)" ), block->GetCommand(), block->GetState() ); DisplayError( this, msg ); } block->SetState( STATE_BLOCK_STOP ); switch( block->GetCommand() ) { case BLOCK_DRAG: // Drag from mouse case BLOCK_DRAG_ITEM: // Drag from a component selection and drag command case BLOCK_MOVE: if( m_canvas->IsMouseCaptured() ) m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); SaveCopyInUndoList( block->GetItems(), UR_MOVED, block->GetMoveVector() ); MoveItemsInList( block->GetItems(), block->GetMoveVector() ); block->ClearItemsList(); break; case BLOCK_COPY: /* Copy */ case BLOCK_PRESELECT_MOVE: /* Move with preselection list*/ if( m_canvas->IsMouseCaptured() ) m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); DuplicateItemsInList( GetScreen(), block->GetItems(), block->GetMoveVector() ); SaveCopyInUndoList( block->GetItems(), ( block->GetCommand() == BLOCK_PRESELECT_MOVE ) ? UR_CHANGED : UR_NEW ); block->ClearItemsList(); break; case BLOCK_PASTE: if( m_canvas->IsMouseCaptured() ) m_canvas->CallMouseCapture( DC, wxDefaultPosition, false ); PasteListOfItems( DC ); block->ClearItemsList(); break; default: // others are handled by HandleBlockEnd() break; } OnModify(); // clear dome flags and pointers GetScreen()->ClearDrawingState(); GetScreen()->ClearBlockCommand(); GetScreen()->SetCurItem( NULL ); GetScreen()->TestDanglingEnds( m_canvas, DC ); if( block->GetCount() ) { DisplayError( this, wxT( "HandleBlockPLace() error: some items left in buffer" ) ); block->ClearItemsList(); } m_canvas->EndMouseCapture( GetToolId(), m_canvas->GetCurrentCursor(), wxEmptyString, false ); m_canvas->Refresh();}
开发者ID:grtwall,项目名称:kicad-source-mirror,代码行数:74,
注:本文中的GetToolId函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ GetTop函数代码示例 C++ GetToolBarCtrl函数代码示例 |