bool PCB_BASE_FRAME::InvokeDialogGrid() { wxPoint grid_origin = GetGridOrigin(); DIALOG_SET_GRID dlg( this, &m_UserGridUnit, g_UserUnit, &m_UserGridSize, &grid_origin, &m_FastGrid1, &m_FastGrid2, m_gridSelectBox->GetStrings() ); int ret = dlg.ShowModal(); if( ret == wxID_OK ) { if( GetGridOrigin() != grid_origin && IsType( FRAME_PCB ) ) OnModify(); // because grid origin is saved in board, show as modified SetGridOrigin( grid_origin ); BASE_SCREEN* screen = GetScreen(); screen->AddGrid( m_UserGridSize, m_UserGridUnit, ID_POPUP_GRID_USER ); // If the user grid is the current option, recall SetGrid() // to force new values put in list as current grid value if( screen->GetGridCmdId() == ID_POPUP_GRID_USER ) screen->SetGrid( ID_POPUP_GRID_USER ); // Notify GAL TOOL_MANAGER* mgr = GetToolManager(); if( mgr && IsGalCanvasActive() ) { mgr->RunAction( "common.Control.gridPreset", true, screen->GetGridCmdId() - ID_POPUP_GRID_LEVEL_1000 ); TOOL_EVENT gridOriginUpdate = COMMON_ACTIONS::gridSetOrigin.MakeEvent(); gridOriginUpdate.SetParameter( new VECTOR2D( grid_origin ) ); mgr->ProcessEvent( gridOriginUpdate ); } m_canvas->Refresh(); return true; } return false; }
void EDA_DRAW_FRAME::SetPrevGrid() { BASE_SCREEN * screen = GetScreen(); int new_grid_cmd = screen->GetGridCmdId(); // if the grid id is the not the first, increment it if( screen->GridExists( new_grid_cmd - 1 ) ) new_grid_cmd -= 1; SetPresetGrid( new_grid_cmd - ID_POPUP_GRID_LEVEL_1000 ); }
void GRID_MENU::update() { BASE_SCREEN* screen = m_parent->GetScreen(); int currentId = screen->GetGridCmdId(); wxArrayString gridsList; screen->BuildGridsChoiceList( gridsList, m_parent->GetUserUnits() != INCHES ); for( unsigned int i = 0; i < GetMenuItemCount(); ++i ) { int menuId = ID_POPUP_GRID_SELECT + 1 + i; SetLabel( menuId, gridsList[i] ); // Refresh label in case units have changed Check( menuId, menuId == currentId ); // Refresh checkmark } }