void WinEDA_GerberFrame::ReCreateOptToolbar(void) /************************************************/ { if ( m_OptionsToolBar ) return; // creation du tool bar options m_OptionsToolBar = new WinEDA_Toolbar(TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_GRID, BITMAP(grid_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Display Grid OFF")); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_POLAR_COORD, BITMAP(polar_coord_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Display Polar Coord ON")); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_INCH, "", BITMAP(unit_inch_xpm), _("Units = Inch"), wxITEM_CHECK ); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_MM, "", BITMAP(unit_mm_xpm), _("Units = mm"), wxITEM_CHECK ); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_CURSOR, BITMAP(cursor_shape_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Change Cursor Shape")); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_PADS_SKETCH, BITMAP(pad_sketch_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Show Spots Sketch")); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_TRACKS_SKETCH, BITMAP(showtrack_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Show Lines Sketch")); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_DCODES, BITMAP(show_dcodenumber_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Show dcode number")); m_OptionsToolBar->Realize(); SetToolbars(); }
void WinEDA_ModuleEditFrame::OnSelectOptionToolbar(wxCommandEvent& event) /***********************************************************************/ { int id = event.GetId(); wxClientDC dc(DrawPanel); DrawPanel->PrepareGraphicContext(&dc); switch ( id ) { case ID_TB_OPTIONS_SHOW_GRID: m_Draw_Grid = m_OptionsToolBar->GetToolState(id); DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_SELECT_UNIT_MM: UnitMetric = MILLIMETRE; case ID_TB_OPTIONS_SELECT_UNIT_INCH: if ( id == ID_TB_OPTIONS_SELECT_UNIT_INCH ) UnitMetric = INCHES; Affiche_Status_Box(); /* Reaffichage des coord curseur */ ReCreateAuxiliaryToolbar(); break; case ID_TB_OPTIONS_SHOW_POLAR_COORD: Affiche_Message(wxEmptyString); DisplayOpt.DisplayPolarCood = m_OptionsToolBar->GetToolState(id); Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SELECT_CURSOR: GetScreen()->Trace_Curseur(DrawPanel, &dc); g_CursorShape = m_OptionsToolBar->GetToolState(id); GetScreen()->Trace_Curseur(DrawPanel, &dc); break; case ID_TB_OPTIONS_SHOW_PADS_SKETCH: m_DisplayPadFill = ! m_OptionsToolBar->GetToolState(id); DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH: m_DisplayModText = m_OptionsToolBar->GetToolState(id) ? SKETCH : FILLED; DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH: m_DisplayModEdge = m_OptionsToolBar->GetToolState(id) ? SKETCH : FILLED; DrawPanel->ReDraw(&dc, TRUE); break; default: DisplayError(this, wxT("WinEDA_ModuleEditFrame::OnSelectOptionToolbar error") ); break; } SetToolbars(); }
void WinEDA_ModuleEditFrame::ReCreateOptToolbar(void) /*********************************************************/ { if ( m_OptionsToolBar ) return; // creation du tool bar options m_OptionsToolBar = new WinEDA_Toolbar(TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_GRID, BITMAP(grid_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Display Grid OFF")); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString, BITMAP(polar_coord_xpm), _("Display Polar Coord ON"), wxITEM_CHECK); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString, BITMAP(unit_inch_xpm), _("Units = Inch"), wxITEM_CHECK ); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString, BITMAP(unit_mm_xpm), _("Units = mm"), wxITEM_CHECK ); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_CURSOR, BITMAP(cursor_shape_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Change Cursor Shape")); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_PADS_SKETCH, BITMAP(pad_sketch_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Show Pads Sketch")); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH, BITMAP(text_sketch_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Show Texts Sketch")); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH, BITMAP(show_mod_edge_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Show Edges Sketch")); m_OptionsToolBar->Realize(); SetToolbars(); }
void WinEDA_ModuleEditFrame::ReCreateAuxiliaryToolbar(void) /*********************************************************/ { int ii; wxString msg; if ( m_AuxiliaryToolBar == NULL ) { m_AuxiliaryToolBar = new WinEDA_Toolbar(TOOLBAR_AUX, this, ID_AUX_TOOLBAR, TRUE); // Set up toolbar m_AuxiliaryToolBar->AddSeparator(); // Boite de selection du pas de grille m_SelGridBox = new WinEDAChoiceBox(m_AuxiliaryToolBar, ID_ON_GRID_SELECT, wxPoint(-1,-1), wxSize(LISTBOX_WIDTH , -1)); m_AuxiliaryToolBar->AddControl( m_SelGridBox); // Boite de selection du Zoom m_AuxiliaryToolBar->AddSeparator(); m_SelZoomBox = new WinEDAChoiceBox(m_AuxiliaryToolBar, ID_ON_ZOOM_SELECT, wxPoint(-1,-1), wxSize(LISTBOX_WIDTH , -1)); msg = _("Auto"); m_SelZoomBox->Append(msg); for ( int jj = 0, ii = 1; ii <= m_ZoomMaxValue; ii <<= 1, jj++ ) { msg.Printf(_("Zoom %d"), ii); m_SelZoomBox->Append(msg); } m_SelZoomBox->Append(wxT("")); m_AuxiliaryToolBar->AddControl( m_SelZoomBox); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes m_AuxiliaryToolBar->Realize(); } // mise a jour des affichages m_SelGridBox->Clear(); for ( ii = 0; g_GridList[ii].x > 0; ii++ ) { double value = To_User_Unit(UnitMetric, g_GridList[ii].x, PCB_INTERNAL_UNIT); if ( UnitMetric == INCHES ) msg.Printf(_("Grid %.1f"), value * 1000); else msg.Printf(_("Grid %.3f"), value); m_SelGridBox->Append(msg); } m_SelGridBox->Append( _("User Grid") ); SetToolbars(); }
void WinEDA_GerberFrame::ReCreateVToolbar(void) /**********************************************/ { if( m_VToolBar ) return; m_VToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE); // Set up toolbar m_VToolBar->AddTool(ID_NO_SELECT_BUTT, BITMAP(cursor_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL ); m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT,TRUE); #if 0 m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_COMPONENT_BUTT, BITMAP(component_button), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Add Flashes")); m_VToolBar->AddTool(ID_BUS_BUTT, BITMAP(bus_button), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Add Lines")); m_VToolBar->AddTool(ID_JUNCTION_BUTT, BITMAP(junction_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Add Mires")); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_TEXT_COMMENT_BUTT, BITMAP(tool_text_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Add Text")); #endif m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_PCB_DELETE_ITEM_BUTT, BITMAP(delete_body_xpm), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, _("Delete items")); m_VToolBar->Realize(); SetToolbars(); }
void WinEDA_ModuleEditFrame::ReCreateVToolbar(void) /********************************************************/ { if( m_VToolBar ) return; m_VToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE); // Set up toolbar m_VToolBar->AddTool(ID_NO_SELECT_BUTT, wxEmptyString, BITMAP(cursor_xpm), wxEmptyString, wxITEM_CHECK ); m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT, TRUE); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_MODEDIT_ADD_PAD, wxEmptyString, BITMAP(pad_xpm), _("Add Pads"), wxITEM_CHECK); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_LINE_COMMENT_BUTT, wxEmptyString, BITMAP(add_polygon_xpm), _("Add graphic line or polygon"), wxITEM_CHECK); m_VToolBar->AddTool(ID_PCB_CIRCLE_BUTT, wxEmptyString, BITMAP(add_circle_xpm), _("Add graphic circle"), wxITEM_CHECK); m_VToolBar->AddTool(ID_PCB_ARC_BUTT, wxEmptyString, BITMAP(add_arc_xpm), _("Add graphic arc"), wxITEM_CHECK); m_VToolBar->AddTool(ID_TEXT_COMMENT_BUTT, wxEmptyString, BITMAP(add_text_xpm), _("Add Text"), wxITEM_CHECK); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_MODEDIT_PLACE_ANCHOR, wxEmptyString, BITMAP(anchor_xpm), _("Place anchor"), wxITEM_CHECK); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_MODEDIT_DELETE_ITEM_BUTT, wxEmptyString, BITMAP(delete_body_xpm), _("Delete items"), wxITEM_CHECK); m_VToolBar->Realize(); SetToolbars(); }
void WinEDA_PcbFrame::ReCreateAuxVToolbar(void) /*********************************************/ /* Create the auxiliary vertical right toolbar, showing tools fo microwave applications */ { if( m_AuxVToolBar ) return; m_AuxVToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_AUX_V_TOOLBAR, FALSE); // Set up toolbar m_AuxVToolBar->AddTool(ID_PCB_MUWAVE_TOOL_SELF_CMD, BITMAP(mw_Add_Line_xpm), wxNullBitmap, TRUE, -1,-1, (wxObject *) NULL, _("Create line of specified length for microwave applications") ); m_AuxVToolBar->AddTool(ID_PCB_MUWAVE_TOOL_GAP_CMD, BITMAP(mw_Add_Gap_xpm), wxNullBitmap, TRUE, -1,-1, (wxObject *) NULL, _("Create gap of specified length for microwave applications") ); m_AuxVToolBar->AddSeparator(); m_AuxVToolBar->AddTool(ID_PCB_MUWAVE_TOOL_STUB_CMD, BITMAP(mw_Add_Stub_xpm), wxNullBitmap, TRUE, -1,-1, (wxObject *) NULL, _("Create stub of specified length for microwave applications") ); m_AuxVToolBar->AddTool(ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD, BITMAP(mw_Add_stub_arc_xpm), wxNullBitmap, TRUE, -1,-1, (wxObject *) NULL, _("Create stub (arc) of specified length for microwave applications") ); m_AuxVToolBar->AddTool(ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD, BITMAP(mw_Add_Shape_xpm), wxNullBitmap, TRUE, -1,-1, (wxObject *) NULL, _("Create a polynomial shape for microwave applications") ); m_AuxVToolBar->Realize(); SetToolbars(); }
void WinEDA_PcbFrame::Other_Layer_Route(TRACK * track, wxDC * DC) /****************************************************************/ /* Change de couche active pour le routage. Si une piste est en cours de trace : placement d'une Via */ { TRACK * pt_segm; SEGVIA * Via; int ii; int itmp; if(track == NULL) { if(GetScreen()->m_Active_Layer != GetScreen()->m_Route_Layer_TOP) GetScreen()->m_Active_Layer = GetScreen()->m_Route_Layer_TOP; else GetScreen()->m_Active_Layer = GetScreen()->m_Route_Layer_BOTTOM ; Affiche_Status_Box(); SetToolbars(); return; } /* Les vias ne doivent pas etre inutilement empilees: */ if( Locate_Via(m_Pcb, g_CurrentTrackSegment->m_End.x,g_CurrentTrackSegment->m_End.y,g_CurrentTrackSegment->m_Layer)) return; pt_segm = g_FirstTrackSegment; for ( ii = 0; ii < g_TrackSegmentCount-1 ; ii++, pt_segm = (TRACK*)pt_segm->Pnext) { if( (pt_segm->m_StructType == TYPEVIA) && (g_CurrentTrackSegment->m_End.x == pt_segm->m_Start.x) && (g_CurrentTrackSegment->m_End.y == pt_segm->m_Start.y) ) return; } /* Test si segment possible a placer */ if ( Drc_On ) if ( Drc(this, DC,g_CurrentTrackSegment,m_Pcb->m_Track,1) == BAD_DRC ) return ; /* save etat actuel pour regeneration si via impossible a placer */ itmp = g_TrackSegmentCount; Begin_Route(g_CurrentTrackSegment, DC); GetScreen()->ManageCurseur(DrawPanel, DC, FALSE); Via = new SEGVIA(m_Pcb); Via->m_Flags = IS_NEW; Via->m_Width = g_DesignSettings.m_CurrentViaSize; Via->m_Shape = g_DesignSettings.m_CurrentViaType ; Via->m_NetCode = g_HightLigth_NetCode ; Via->m_Start = Via->m_End = g_CurrentTrackSegment->m_End; Via->m_Layer = GetScreen()->m_Active_Layer; // Provisoirement if( GetScreen()->m_Active_Layer != GetScreen()->m_Route_Layer_TOP) GetScreen()->m_Active_Layer = GetScreen()->m_Route_Layer_TOP ; else GetScreen()->m_Active_Layer = GetScreen()->m_Route_Layer_BOTTOM ; if ( (Via->m_Shape & 15) == VIA_ENTERREE ) { Via->m_Layer |= GetScreen()->m_Active_Layer << 4; } else if ( (Via->m_Shape & 15) == VIA_BORGNE ) { // A revoir! ( la via devrait deboucher sur 1 cote ) Via->m_Layer |= GetScreen()->m_Active_Layer << 4; } else Via->m_Layer = 0x0F; if ( Drc_On &&( Drc(this, DC,Via,m_Pcb->m_Track,1 ) == BAD_DRC ) ) { /* Via impossible a placer ici */ delete Via; GetScreen()->m_Active_Layer = g_CurrentTrackSegment->m_Layer ; GetScreen()->ManageCurseur(DrawPanel, DC, FALSE); return; } /* la via est OK et est inseree apres le segment courant */ Via->Pback = g_CurrentTrackSegment; g_CurrentTrackSegment->Pnext = Via; g_TrackSegmentCount++; g_CurrentTrackSegment = new TRACK(*g_CurrentTrackSegment); g_CurrentTrackSegment->m_Layer = GetScreen()->m_Active_Layer; g_CurrentTrackSegment->m_Start = g_CurrentTrackSegment->m_End = Via->m_Start; g_TrackSegmentCount++; g_CurrentTrackSegment->Pback = Via; Via->Pnext = g_CurrentTrackSegment; if ( g_TwoSegmentTrackBuild ) { // Create a second segment (we must have 2 track segments to adjust) TRACK * track = g_CurrentTrackSegment; g_CurrentTrackSegment = new TRACK(*track); g_TrackSegmentCount++; g_CurrentTrackSegment->Pback = track; track->Pnext = g_CurrentTrackSegment; } GetScreen()->ManageCurseur(DrawPanel, DC, FALSE); Affiche_Infos_Piste(this, Via); Affiche_Status_Box(); SetToolbars(); }
void WinEDA_BasePcbFrame::GeneralControle(wxDC *DC, wxPoint Mouse) /****************************************************************/ /* traitement des touches de fonctions utilisees ds tous les menus Zoom Redessin d'ecran Cht Unites Cht couches Remise a 0 de l'origine des coordonnees relatives */ { wxSize delta; wxPoint curpos, oldpos; int hotkey = 0; if( GetScreen()->IsRefreshReq() ) { RedrawActiveWindow(DC, TRUE); // We must return here, instead of proceeding. // If we let the cursor move during a refresh request, // the cursor be displayed in the wrong place // during delayed repaint events that occur when // you move the mouse when a message dialog is on // the screen, and then you dismiss the dialog by // typing the Enter key. return; } curpos = DrawPanel->CursorRealPosition(Mouse); oldpos = GetScreen()->m_Curseur; delta.x = GetScreen()->GetGrid().x / GetScreen()->GetZoom(); delta.y = GetScreen()->GetGrid().y / GetScreen()->GetZoom(); if( delta.x == 0 ) delta.x = 1; if( delta.y == 0 ) delta.y = 1; switch(g_KeyPressed) { case WXK_NUMPAD_SUBTRACT : case WXK_SUBTRACT : case '-' : if(GetScreen()->m_Active_Layer > 0) GetScreen()->m_Active_Layer--; break ; case WXK_NUMPAD_ADD : case WXK_ADD : case '+' : if(GetScreen()->m_Active_Layer < 31) GetScreen()->m_Active_Layer ++; break ; case 'F' | GR_KB_CTRL : case 'f' | GR_KB_CTRL : DisplayOpt.DisplayPcbTrackFill ^= 1; DisplayOpt.DisplayPcbTrackFill &= 1 ; GetScreen()->SetRefreshReq(); break ; case ' ' : /* Mise a jour de l'origine des coord relatives */ GetScreen()->m_O_Curseur = GetScreen()->m_Curseur; break ; case 'U' | GR_KB_CTRL : case 'u' | GR_KB_CTRL : if (g_UnitMetric == INCHES ) g_UnitMetric = MILLIMETRE ; else g_UnitMetric = INCHES ; break ; case WXK_F1 : OnZoom(ID_ZOOM_PLUS_KEY); curpos = GetScreen()->m_Curseur; break; case WXK_F2 : OnZoom(ID_ZOOM_MOINS_KEY); curpos = GetScreen()->m_Curseur; break; case WXK_F3 : OnZoom(ID_ZOOM_REDRAW_KEY); break; case WXK_F4 : OnZoom(ID_ZOOM_CENTER_KEY); curpos = GetScreen()->m_Curseur; break; case WXK_NUMPAD8 : /* Deplacement curseur vers le haut */ case WXK_UP : Mouse.y -= delta.y; DrawPanel->MouseTo(Mouse); break ; case WXK_NUMPAD2: /* Deplacement curseur vers le bas */ case WXK_DOWN: Mouse.y += delta.y; DrawPanel->MouseTo(Mouse); break ; case WXK_NUMPAD4: /* Deplacement curseur vers la gauche */ case WXK_LEFT : Mouse.x -= delta.x; DrawPanel->MouseTo(Mouse); break ; case WXK_NUMPAD6: /* Deplacement curseur vers la droite */ case WXK_RIGHT : Mouse.x += delta.x; DrawPanel->MouseTo(Mouse); break ; default: hotkey = g_KeyPressed; break; } /* Recalcul de la position du curseur schema */ GetScreen()->m_Curseur = curpos; /* Placement sur la grille generale */ PutOnGrid( & GetScreen()->m_Curseur); if ( (oldpos.x != GetScreen()->m_Curseur.x) || (oldpos.y != GetScreen()->m_Curseur.y) ) { curpos = GetScreen()->m_Curseur; GetScreen()->m_Curseur = oldpos; GetScreen()->CursorOff(DrawPanel, DC); GetScreen()->m_Curseur = curpos; GetScreen()->CursorOn(DrawPanel, DC); if(GetScreen()->ManageCurseur) { GetScreen()->ManageCurseur(DrawPanel, DC, TRUE); } } SetToolbars(); Affiche_Status_Box(); /* Affichage des coord curseur */ if ( hotkey ) { OnHotKey(DC, hotkey, NULL); } }
void WinEDA3D_DrawFrame::ReCreateHToolbar(void) /*********************************************/ { if ( m_HToolBar != NULL ) { // simple mise a jour de la liste des fichiers anciens SetToolbars(); return; } m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE); SetToolBar(m_HToolBar); // Set up toolbar m_HToolBar->AddTool(ID_RELOAD3D_BOARD, "", BITMAP(import3d_xpm), _("Reload board")); #ifdef __WINDOWS__ // do not work properly under linux m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_TOOL_SCREENCOPY_TOCLIBBOARD, "", BITMAP(copy_button), _("Copy 3D Image to Clipboard")); #endif m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, "", BITMAP(zoom_in_xpm), _("zoom + (F1)")); m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, "", BITMAP(zoom_out_xpm), _("zoom - (F2)")); m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, "", BITMAP(repaint_xpm), _("redraw (F3)")); m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, "", BITMAP(zoom_optimal_xpm), _("auto zoom")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_ROTATE3D_X_POS, "", BITMAP(rotate_pos_X_xpm), _("Rotate X ->") ); m_HToolBar->AddTool(ID_ROTATE3D_X_NEG, "", BITMAP(rotate_neg_X_xpm), _("Rotate X <-") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_ROTATE3D_Y_POS, "", BITMAP(rotate_pos_Y_xpm), _("Rotate Y ->") ); m_HToolBar->AddTool(ID_ROTATE3D_Y_NEG, "", BITMAP(rotate_neg_Y_xpm), _("Rotate Y <-") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_ROTATE3D_Z_POS, "", BITMAP(rotate_pos_Z_xpm), _("Rotate Z ->") ); m_HToolBar->AddTool(ID_ROTATE3D_Z_NEG, "", BITMAP(rotate_neg_Z_xpm), _("Rotate Z <-") ); m_HToolBar->Realize(); // SetToolbars(); }
void WinEDA_PcbFrame::Process_Special_Functions(wxCommandEvent& event) /*********************************************************************/ /* Traite les selections d'outils et les commandes appelees du menu POPUP */ { int id = event.GetId(); wxPoint pos; wxClientDC dc(DrawPanel); int itmp; DrawPanel->PrepareGraphicContext(&dc); wxGetMousePosition(&pos.x, &pos.y); pos.y += 20; switch ( id ) // Arret eventuel de la commande de déplacement en cours { case wxID_CUT: case wxID_COPY: case ID_AUX_TOOLBAR_PCB_TRACK_WIDTH: case ID_AUX_TOOLBAR_PCB_VIA_SIZE: case ID_ON_GRID_SELECT: case ID_ON_ZOOM_SELECT: case ID_PCB_USER_GRID_SETUP: case ID_TOOLBARH_PCB_SELECT_LAYER: case ID_POPUP_PCB_ROTATE_TEXTEPCB: case ID_POPUP_PCB_EDIT_TEXTEPCB: case ID_POPUP_PCB_EDIT_MIRE: case ID_POPUP_PCB_ROTATE_TEXTMODULE: case ID_POPUP_PCB_ROTATE_MODULE_CLOCKWISE: case ID_POPUP_PCB_ROTATE_MODULE_COUNTERCLOCKWISE: case ID_POPUP_PCB_CHANGE_SIDE_MODULE: case ID_POPUP_PCB_EDIT_MODULE: case ID_POPUP_PCB_EDIT_TEXTMODULE: case ID_POPUP_PCB_STOP_CURRENT_DRAWING: case ID_POPUP_PCB_END_TRACK: case ID_POPUP_PCB_PLACE_VIA: case ID_POPUP_PCB_IMPORT_PAD_SETTINGS: case ID_POPUP_PCB_EXPORT_PAD_SETTINGS: case ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS: case ID_POPUP_PCB_STOP_CURRENT_EDGE_ZONE: case ID_POPUP_PCB_DELETE_EDGE_ZONE: case ID_POPUP_PCB_DELETE_ZONE_LIMIT: case ID_POPUP_PCB_EDIT_ZONE: case ID_POPUP_PCB_DELETE_ZONE: case ID_POPUP_PCB_DELETE_TRACKSEG: case ID_POPUP_PCB_DELETE_TRACK: case ID_POPUP_PCB_DELETE_TRACKNET: case ID_POPUP_PCB_FILL_ZONE: case ID_POPUP_PCB_SELECT_NET_ZONE: case ID_POPUP_PCB_SELECT_LAYER: case ID_POPUP_PCB_SELECT_CU_LAYER: case ID_POPUP_PCB_SELECT_LAYER_PAIR: case ID_POPUP_PCB_SELECT_NO_CU_LAYER: case ID_POPUP_PCB_SELECT_WIDTH: case ID_POPUP_PCB_SELECT_WIDTH1: case ID_POPUP_PCB_SELECT_WIDTH2: case ID_POPUP_PCB_SELECT_WIDTH3: case ID_POPUP_PCB_SELECT_WIDTH4: case ID_POPUP_PCB_SELECT_WIDTH5: case ID_POPUP_PCB_SELECT_WIDTH6: case ID_POPUP_PCB_SELECT_WIDTH7: case ID_POPUP_PCB_SELECT_WIDTH8: case ID_POPUP_PCB_SELECT_VIASIZE: case ID_POPUP_PCB_SELECT_VIASIZE1: case ID_POPUP_PCB_SELECT_VIASIZE2: case ID_POPUP_PCB_SELECT_VIASIZE3: case ID_POPUP_PCB_SELECT_VIASIZE4: case ID_POPUP_PCB_SELECT_VIASIZE5: case ID_POPUP_PCB_SELECT_VIASIZE6: case ID_POPUP_PCB_SELECT_VIASIZE7: case ID_POPUP_PCB_SELECT_VIASIZE8: case ID_POPUP_PCB_MOVE_TRACK_NODE: case ID_POPUP_PCB_PLACE_MOVED_TRACK_NODE: case ID_POPUP_PCB_BREAK_TRACK: case ID_POPUP_PCB_EDIT_NET: case ID_POPUP_PCB_EDIT_TRACK: case ID_POPUP_PCB_EDIT_TRACKSEG: case ID_POPUP_PCB_LOCK_ON_TRACKSEG: case ID_POPUP_PCB_LOCK_OFF_TRACKSEG: case ID_POPUP_PCB_LOCK_ON_TRACK: case ID_POPUP_PCB_LOCK_OFF_TRACK: case ID_POPUP_PCB_LOCK_ON_NET: case ID_POPUP_PCB_LOCK_OFF_NET: case ID_POPUP_DELETE_BLOCK: case ID_POPUP_PLACE_BLOCK: case ID_POPUP_ZOOM_BLOCK: case ID_POPUP_INVERT_BLOCK: case ID_POPUP_ROTATE_BLOCK: case ID_POPUP_COPY_BLOCK: case ID_POPUP_PCB_VIA_EDITING: case ID_POPUP_PCB_VIA_HOLE_TO_DEFAULT: case ID_POPUP_PCB_VIA_HOLE_TO_VALUE: case ID_POPUP_PCB_VIA_HOLE_ENTER_VALUE: case ID_POPUP_PCB_VIA_HOLE_EXPORT: case ID_POPUP_PCB_VIA_HOLE_RESET_TO_DEFAULT: case ID_POPUP_PCB_VIA_HOLE_EXPORT_TO_OTHERS: break; case ID_POPUP_CANCEL_CURRENT_COMMAND: if( GetScreen()->ManageCurseur && GetScreen()->ForceCloseManageCurseur ) { GetScreen()->ForceCloseManageCurseur(this, &dc); } /* ne devrait pas etre execute, sauf bug */ if (m_CurrentScreen->BlockLocate.m_Command != BLOCK_IDLE) { m_CurrentScreen->BlockLocate.m_Command = BLOCK_IDLE; m_CurrentScreen->BlockLocate.m_State = STATE_NO_BLOCK; m_CurrentScreen->BlockLocate.m_BlockDrawStruct = NULL; } if (m_ID_current_state == 0 ) SetToolID(0, wxCURSOR_ARROW,wxEmptyString); else SetCursor(DrawPanel->m_PanelCursor = DrawPanel->m_PanelDefaultCursor); break; default: // Arret de la commande de déplacement en cours if( GetScreen()->ManageCurseur && GetScreen()->ForceCloseManageCurseur ) { GetScreen()->ForceCloseManageCurseur(this, &dc); } SetToolID(0, wxCURSOR_ARROW,wxEmptyString); break; } switch ( id ) // Traitement des commandes { case ID_EXIT : Close(TRUE); break; case ID_OPEN_MODULE_EDITOR: if (m_Parent->m_ModuleEditFrame == NULL ) { m_Parent->m_ModuleEditFrame = new WinEDA_ModuleEditFrame(this, m_Parent,_("Module Editor"), wxPoint(-1, -1), wxSize(600,400) ); m_Parent->m_ModuleEditFrame->Show(TRUE); m_Parent->m_ModuleEditFrame->Zoom_Automatique(TRUE); } else m_Parent->m_ModuleEditFrame->Iconize(FALSE); break; case ID_NEW_PROJECT: case ID_LOAD_PROJECT: Files_io(event); break; case ID_PCB_GLOBAL_DELETE: InstallPcbGlobalDeleteFrame(pos); break; case ID_POPUP_PLACE_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_MOVE; DrawPanel->m_AutoPAN_Request = FALSE; HandleBlockPlace(&dc); break; case ID_POPUP_COPY_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_COPY; m_CurrentScreen->BlockLocate.SetMessageBlock(this); DrawPanel->m_AutoPAN_Request = FALSE; HandleBlockPlace(&dc); break; case ID_POPUP_ZOOM_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_ZOOM; m_CurrentScreen->BlockLocate.SetMessageBlock(this); m_CurrentScreen->BlockLocate.SetMessageBlock(this); HandleBlockEnd(&dc); break; case ID_POPUP_DELETE_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_DELETE; m_CurrentScreen->BlockLocate.SetMessageBlock(this); HandleBlockEnd(&dc); break; case ID_POPUP_ROTATE_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_ROTATE; m_CurrentScreen->BlockLocate.SetMessageBlock(this); HandleBlockEnd(&dc); break; case ID_POPUP_INVERT_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_INVERT; m_CurrentScreen->BlockLocate.SetMessageBlock(this); HandleBlockEnd(&dc); break; case ID_UNDO_BUTT: UnDeleteItem(&dc); break; case ID_DRC_CONTROL: Install_Test_DRC_Frame(&dc); break; case ID_GET_NETLIST: InstallNetlistFrame(&dc, wxPoint(-1,-1)); break; case ID_GET_TOOLS: // InstallToolsFrame(this, wxPoint(-1,-1) ); break; case ID_FIND_ITEMS: InstallFindFrame(pos, &dc); break; case ID_TRACK_BUTT: SetToolID( id, wxCURSOR_PENCIL, _("Add Tracks")); DisplayTrackSettings(); if ( (m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK) == 0) { Compile_Ratsnest( &dc, TRUE ); } break; case ID_PCB_ZONES_BUTT: SetToolID( id, wxCURSOR_PENCIL, _("Add Zones")); if ( ! DisplayOpt.DisplayZones ) DisplayInfo(this, _("Warning: Display Zone is OFF!!!") ); DelLimitesZone(&dc, TRUE); if( ! g_HightLigt_Status && (g_HightLigth_NetCode > 0 ) ) Hight_Light(&dc); break; case ID_PCB_MIRE_BUTT: SetToolID( id, wxCURSOR_PENCIL, _("Add Mire")); break; case ID_PCB_PLACE_OFFSET_COORD_BUTT: SetToolID( id, wxCURSOR_PENCIL, _("Adjust Zero")); break; case ID_LINE_COMMENT_BUTT: case ID_PCB_ARC_BUTT: case ID_PCB_CIRCLE_BUTT: SetToolID( id, wxCURSOR_PENCIL, _("Add Graphic")); break; case ID_TEXT_COMMENT_BUTT: SetToolID( id, wxCURSOR_PENCIL, _("Add Text")); break; case ID_COMPONENT_BUTT: SetToolID( id, wxCURSOR_HAND, _("Add Modules")); break; case ID_PCB_COTATION_BUTT: SetToolID( id, wxCURSOR_PENCIL, _("Add Cotation")); break; case ID_NO_SELECT_BUTT: SetToolID( 0, wxCURSOR_ARROW, wxEmptyString); break; case ID_PCB_HIGHLIGHT_BUTT: SetToolID( id, wxCURSOR_HAND, _("Net Highlight")); break; case ID_PCB_SHOW_1_RATSNEST_BUTT: SetToolID( id, wxCURSOR_HAND, _("Local Ratsnest")); if ( (m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK) == 0) Compile_Ratsnest( &dc, TRUE ); break; case ID_POPUP_CLOSE_CURRENT_TOOL: SetToolID( 0, wxCURSOR_ARROW, wxEmptyString); break; case ID_POPUP_CANCEL_CURRENT_COMMAND: break; case ID_POPUP_END_LINE: DrawPanel->MouseToCursorSchema(); // EndSegment(&dc); break; case ID_POPUP_PCB_EDIT_TRACK: if ( CURRENT_ITEM == NULL) break; Edit_Track_Width(&dc, (TRACK *) CURRENT_ITEM); DrawPanel->MouseToCursorSchema(); GetScreen()->SetModify(); break; case ID_POPUP_PCB_EDIT_TRACKSEG: if ( CURRENT_ITEM == NULL) break; Edit_TrackSegm_Width(&dc, (TRACK *) CURRENT_ITEM); DrawPanel->MouseToCursorSchema(); GetScreen()->SetModify(); break; case ID_POPUP_PCB_EDIT_NET: if ( CURRENT_ITEM == NULL) break; Edit_Net_Width(&dc, ((TRACK *) CURRENT_ITEM)->m_NetCode); DrawPanel->MouseToCursorSchema(); GetScreen()->SetModify(); break; case ID_POPUP_PCB_EDIT_ALL_VIAS_AND_TRACK_SIZE: case ID_POPUP_PCB_EDIT_ALL_VIAS_SIZE: case ID_POPUP_PCB_EDIT_ALL_TRACK_SIZE: if ( CURRENT_ITEM == NULL) break; { bool resize_vias = TRUE, resize_track = TRUE; if( id == ID_POPUP_PCB_EDIT_ALL_VIAS_SIZE) resize_track = FALSE; if( id == ID_POPUP_PCB_EDIT_ALL_TRACK_SIZE) resize_vias = FALSE; if ( Resize_Pistes_Vias(&dc, resize_track, resize_vias)) GetScreen()->SetModify(); } DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_END_TRACK: DrawPanel->MouseToCursorSchema(); End_Route( (TRACK *) CURRENT_ITEM, &dc); break; case ID_POPUP_PCB_PLACE_MOVED_TRACK_NODE: DrawPanel->MouseToCursorSchema(); if ( CURRENT_ITEM->m_Flags & IS_DRAGGED ) { PlaceDraggedTrackSegment((TRACK *) CURRENT_ITEM, &dc); } break; case ID_POPUP_PCB_PLACE_VIA: DrawPanel->MouseToCursorSchema(); if ( CURRENT_ITEM->m_Flags & IS_DRAGGED ) { PlaceDraggedTrackSegment((TRACK *) CURRENT_ITEM, &dc); } else { Other_Layer_Route( (TRACK *) CURRENT_ITEM, &dc); if ( DisplayOpt.ContrastModeDisplay ) GetScreen()->SetRefreshReq(); } break; case ID_POPUP_PCB_DELETE_TRACKSEG: DrawPanel->MouseToCursorSchema(); GetScreen()->m_CurrentItem = Delete_Segment(&dc, (TRACK*)CURRENT_ITEM); GetScreen()->SetModify(); break; case ID_POPUP_PCB_DELETE_TRACK: DrawPanel->MouseToCursorSchema(); Delete_Track(&dc, (TRACK*)CURRENT_ITEM); GetScreen()->m_CurrentItem = NULL; GetScreen()->SetModify(); break; case ID_POPUP_PCB_DELETE_TRACKNET: DrawPanel->MouseToCursorSchema(); Delete_net(&dc, (TRACK*)CURRENT_ITEM); GetScreen()->m_CurrentItem = NULL; GetScreen()->SetModify(); break; case ID_POPUP_PCB_LOCK_ON_TRACKSEG: Attribut_Segment((TRACK*)CURRENT_ITEM, &dc, TRUE); break; case ID_POPUP_PCB_LOCK_OFF_TRACKSEG: Attribut_Segment((TRACK*)CURRENT_ITEM, &dc, FALSE); break; case ID_POPUP_PCB_LOCK_ON_TRACK: Attribut_Track((TRACK*)CURRENT_ITEM, &dc, TRUE); break; case ID_POPUP_PCB_LOCK_OFF_TRACK: Attribut_Track((TRACK*)CURRENT_ITEM, &dc, FALSE); break; case ID_POPUP_PCB_LOCK_ON_NET: Attribut_net(&dc, ((TRACK*)CURRENT_ITEM)->m_NetCode, TRUE); break; case ID_POPUP_PCB_LOCK_OFF_NET: Attribut_net(&dc, ((TRACK*)CURRENT_ITEM)->m_NetCode, FALSE); break; case ID_POPUP_PCB_SETFLAGS_TRACK_MNU: break; case ID_POPUP_PCB_DELETE_ZONE: DrawPanel->MouseToCursorSchema(); if ( CURRENT_ITEM == NULL) break; Delete_Zone(&dc, (SEGZONE*)CURRENT_ITEM); GetScreen()->m_CurrentItem = NULL; break; case ID_POPUP_PCB_EDIT_ZONE: DrawPanel->MouseToCursorSchema(); if ( CURRENT_ITEM == NULL) break; Edit_Zone_Width(&dc, (SEGZONE*)CURRENT_ITEM); break; case ID_POPUP_PCB_DELETE_ZONE_LIMIT: DrawPanel->MouseToCursorSchema(); DelLimitesZone(&dc, TRUE); break; case ID_PCB_DELETE_ITEM_BUTT: SetToolID( id, wxCURSOR_BULLSEYE, _("Delete item")); break; case ID_POPUP_PCB_MOVE_TEXTEPCB_REQUEST: Process_Move_Item(this, CURRENT_ITEM, &dc); DrawPanel->m_AutoPAN_Request = TRUE; break; case ID_POPUP_PCB_DRAG_MODULE_REQUEST: g_Drag_Pistes_On = TRUE; case ID_POPUP_PCB_MOVE_MODULE_REQUEST: // If the current Item is a pad, text module ...: Get the parent if ( CURRENT_ITEM->m_StructType != TYPEMODULE ) CURRENT_ITEM = (MODULE *) CURRENT_ITEM->m_Parent; if ( !CURRENT_ITEM || CURRENT_ITEM->m_StructType != TYPEMODULE ) { g_Drag_Pistes_On = FALSE; break; } DrawPanel->MouseToCursorSchema(); StartMove_Module( (MODULE*)CURRENT_ITEM, &dc); break; case ID_POPUP_PCB_DELETE_MODULE: DrawPanel->MouseToCursorSchema(); // If the current Item is a pad, text module ...: Get the parent if ( CURRENT_ITEM->m_StructType != TYPEMODULE ) CURRENT_ITEM = (MODULE *) CURRENT_ITEM->m_Parent; if ( !CURRENT_ITEM || CURRENT_ITEM->m_StructType != TYPEMODULE ) break; if ( Delete_Module((MODULE*) CURRENT_ITEM, &dc) ) { GetScreen()->m_CurrentItem = NULL; } break; case ID_POPUP_PCB_ROTATE_MODULE_COUNTERCLOCKWISE: DrawPanel->MouseToCursorSchema(); // If the current Item is a pad, text module ...: Get the parent if ( CURRENT_ITEM->m_StructType != TYPEMODULE ) CURRENT_ITEM = (MODULE *) CURRENT_ITEM->m_Parent; if ( !CURRENT_ITEM || CURRENT_ITEM->m_StructType != TYPEMODULE ) break; Rotate_Module(&dc, (MODULE*)CURRENT_ITEM, -900, TRUE); break; case ID_POPUP_PCB_ROTATE_MODULE_CLOCKWISE: DrawPanel->MouseToCursorSchema(); // If the current Item is a pad, text module ...: Get the parent if ( CURRENT_ITEM->m_StructType != TYPEMODULE ) CURRENT_ITEM = (MODULE *) CURRENT_ITEM->m_Parent; if ( !CURRENT_ITEM || CURRENT_ITEM->m_StructType != TYPEMODULE ) break; Rotate_Module(&dc, (MODULE*)CURRENT_ITEM, 900, TRUE); break; case ID_POPUP_PCB_CHANGE_SIDE_MODULE: DrawPanel->MouseToCursorSchema(); // If the current Item is a pad, text module ...: Get the parent if ( CURRENT_ITEM->m_StructType != TYPEMODULE ) CURRENT_ITEM = (MODULE *) CURRENT_ITEM->m_Parent; if ( !CURRENT_ITEM || CURRENT_ITEM->m_StructType != TYPEMODULE ) break; Change_Side_Module((MODULE *) CURRENT_ITEM, &dc); break; case ID_POPUP_PCB_EDIT_MODULE: // If the current Item is a pad, text module ...: Get the parent if ( CURRENT_ITEM->m_StructType != TYPEMODULE ) CURRENT_ITEM = (MODULE *) CURRENT_ITEM->m_Parent; if ( !CURRENT_ITEM || CURRENT_ITEM->m_StructType != TYPEMODULE ) break; InstallModuleOptionsFrame((MODULE *)CURRENT_ITEM, &dc, pos); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_DRAG_PAD_REQUEST: g_Drag_Pistes_On = TRUE; case ID_POPUP_PCB_MOVE_PAD_REQUEST: DrawPanel->MouseToCursorSchema(); StartMovePad((D_PAD *)CURRENT_ITEM, &dc); break; case ID_POPUP_PCB_EDIT_PAD: InstallPadOptionsFrame((D_PAD *)CURRENT_ITEM, &dc, pos); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_IMPORT_PAD_SETTINGS: DrawPanel->MouseToCursorSchema(); Import_Pad_Settings((D_PAD *)CURRENT_ITEM, &dc); break; case ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS: DrawPanel->MouseToCursorSchema(); Global_Import_Pad_Settings((D_PAD *)CURRENT_ITEM, &dc); break; case ID_POPUP_PCB_EXPORT_PAD_SETTINGS: DrawPanel->MouseToCursorSchema(); Export_Pad_Settings((D_PAD *)CURRENT_ITEM); break; case ID_POPUP_PCB_DELETE_PAD: DeletePad((D_PAD *)CURRENT_ITEM, &dc); GetScreen()->m_CurrentItem = NULL; DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_EDIT_TEXTMODULE: InstallTextModOptionsFrame((TEXTE_MODULE *)CURRENT_ITEM, &dc, pos); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_MOVE_TEXTMODULE_REQUEST: DrawPanel->MouseToCursorSchema(); StartMoveTexteModule( (TEXTE_MODULE *) CURRENT_ITEM, &dc); break; case ID_POPUP_PCB_ROTATE_TEXTMODULE: RotateTextModule((TEXTE_MODULE *)CURRENT_ITEM, &dc); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_DELETE_TEXTMODULE: DeleteTextModule((TEXTE_MODULE *)CURRENT_ITEM, &dc); GetScreen()->m_CurrentItem = NULL; DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_SELECT_LAYER: itmp = SelectLayer(GetScreen()->m_Active_Layer, -1, -1); if ( itmp >= 0 ) GetScreen()->m_Active_Layer = itmp; DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_SELECT_NO_CU_LAYER: itmp = SelectLayer(GetScreen()->m_Active_Layer, CMP_N+1, -1); if ( itmp >= 0 ) GetScreen()->m_Active_Layer = itmp; DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_SELECT_CU_LAYER: itmp = SelectLayer(GetScreen()->m_Active_Layer, -1, CMP_N); if ( itmp >= 0 ) GetScreen()->m_Active_Layer = itmp; break; case ID_POPUP_PCB_SELECT_LAYER_PAIR: SelectLayerPair(); DrawPanel->MouseToCursorSchema(); break; case ID_TOOLBARH_PCB_SELECT_LAYER: itmp = m_SelLayerBox->GetChoice(); GetScreen()->m_Active_Layer = (int)((size_t) m_SelLayerBox->GetClientData(itmp)); if ( DisplayOpt.ContrastModeDisplay ) DrawPanel->Refresh(TRUE); break; case ID_POPUP_PCB_EDIT_TEXTEPCB: InstallTextPCBOptionsFrame((TEXTE_PCB *)CURRENT_ITEM, &dc, pos); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_ROTATE_TEXTEPCB: Rotate_Texte_Pcb((TEXTE_PCB *)CURRENT_ITEM, &dc); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_DELETE_TEXTEPCB: Delete_Texte_Pcb((TEXTE_PCB *)CURRENT_ITEM, &dc); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_MOVE_MIRE_REQUEST: StartMove_Mire((MIREPCB *)CURRENT_ITEM, &dc); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_EDIT_MIRE: InstallMireOptionsFrame((MIREPCB *)CURRENT_ITEM, &dc, pos); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_DELETE_MIRE: DrawPanel->MouseToCursorSchema(); Delete_Mire((MIREPCB *)CURRENT_ITEM, &dc); GetScreen()->m_CurrentItem = NULL; break; case ID_POPUP_PCB_DELETE_COTATION: DrawPanel->MouseToCursorSchema(); Delete_Cotation((COTATION*)CURRENT_ITEM, &dc); GetScreen()->m_CurrentItem = NULL; break; case ID_POPUP_PCB_EDIT_COTATION: Install_Edit_Cotation((COTATION*)CURRENT_ITEM, &dc, pos); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_DELETE_DRAWING: Delete_Segment_Edge((DRAWSEGMENT *)CURRENT_ITEM, &dc); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_DELETE_DRAWING_LAYER: Delete_Drawings_All_Layer((DRAWSEGMENT *)CURRENT_ITEM, &dc); GetScreen()->m_CurrentItem = NULL; DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_EDIT_DRAWING: Drawing_SetNewWidth((DRAWSEGMENT *)CURRENT_ITEM, &dc); DrawPanel->MouseToCursorSchema(); break; case ID_POPUP_PCB_MOVE_DRAWING_REQUEST: DrawPanel->MouseToCursorSchema(); Start_Move_DrawItem((DRAWSEGMENT *)CURRENT_ITEM, &dc); break; case ID_POPUP_PCB_STOP_CURRENT_DRAWING: DrawPanel->MouseToCursorSchema(); if ( CURRENT_ITEM && (CURRENT_ITEM->m_Flags & IS_NEW) ) { End_Edge( (DRAWSEGMENT *)CURRENT_ITEM, &dc); GetScreen()->m_CurrentItem = NULL; } break; case ID_POPUP_PCB_STOP_CURRENT_EDGE_ZONE: DrawPanel->MouseToCursorSchema(); if ( CURRENT_ITEM && (CURRENT_ITEM->m_Flags & IS_NEW) ) { End_Zone(&dc); GetScreen()->m_CurrentItem = NULL; } break; case ID_POPUP_PCB_DELETE_EDGE_ZONE: DrawPanel->MouseToCursorSchema(); if ( CURRENT_ITEM && (CURRENT_ITEM->m_Flags & IS_NEW) ) { GetScreen()->m_CurrentItem = Del_SegmEdgeZone(&dc, (EDGE_ZONE *) CURRENT_ITEM); } break; case ID_POPUP_PCB_FILL_ZONE: DrawPanel->MouseToCursorSchema(); Fill_Zone(&dc); break; case ID_POPUP_PCB_SELECT_NET_ZONE: DrawPanel->MouseToCursorSchema(); CaptureNetName(&dc); break; case ID_POPUP_PCB_SELECT_WIDTH: break; case ID_AUX_TOOLBAR_PCB_TRACK_WIDTH: { int ii = m_SelTrackWidthBox->GetChoice(); g_DesignSettings.m_CurrentTrackWidth = g_DesignSettings.m_TrackWidhtHistory[ii]; DisplayTrackSettings(); m_SelTrackWidthBox_Changed = FALSE; m_SelViaSizeBox_Changed = FALSE; } break; case ID_POPUP_PCB_SELECT_WIDTH1: case ID_POPUP_PCB_SELECT_WIDTH2: case ID_POPUP_PCB_SELECT_WIDTH3: case ID_POPUP_PCB_SELECT_WIDTH4: case ID_POPUP_PCB_SELECT_WIDTH5: case ID_POPUP_PCB_SELECT_WIDTH6: case ID_POPUP_PCB_SELECT_WIDTH7: case ID_POPUP_PCB_SELECT_WIDTH8: DrawPanel->MouseToCursorSchema(); { int ii = id - ID_POPUP_PCB_SELECT_WIDTH1; g_DesignSettings.m_CurrentTrackWidth = g_DesignSettings.m_TrackWidhtHistory[ii]; DisplayTrackSettings(); } break; case ID_POPUP_PCB_SELECT_VIASIZE: break; case ID_AUX_TOOLBAR_PCB_VIA_SIZE: { int ii = m_SelViaSizeBox->GetChoice(); g_DesignSettings.m_CurrentViaSize = g_DesignSettings.m_ViaSizeHistory[ii]; DisplayTrackSettings(); m_SelTrackWidthBox_Changed = FALSE; m_SelViaSizeBox_Changed = FALSE; } break; case ID_POPUP_PCB_SELECT_VIASIZE1: case ID_POPUP_PCB_SELECT_VIASIZE2: case ID_POPUP_PCB_SELECT_VIASIZE3: case ID_POPUP_PCB_SELECT_VIASIZE4: case ID_POPUP_PCB_SELECT_VIASIZE5: case ID_POPUP_PCB_SELECT_VIASIZE6: case ID_POPUP_PCB_SELECT_VIASIZE7: case ID_POPUP_PCB_SELECT_VIASIZE8: case ID_POPUP_PCB_VIA_EDITING: case ID_POPUP_PCB_VIA_HOLE_TO_DEFAULT: case ID_POPUP_PCB_VIA_HOLE_TO_VALUE: case ID_POPUP_PCB_VIA_HOLE_ENTER_VALUE: case ID_POPUP_PCB_VIA_HOLE_EXPORT: case ID_POPUP_PCB_VIA_HOLE_RESET_TO_DEFAULT: case ID_POPUP_PCB_VIA_HOLE_EXPORT_TO_OTHERS: Via_Edit_Control(&dc, id, (SEGVIA *) GetScreen()->m_CurrentItem); break; case ID_POPUP_PCB_MOVE_TRACK_NODE: DrawPanel->MouseToCursorSchema(); Start_MoveOneTrackSegment((TRACK *) GetScreen()->m_CurrentItem, &dc, TRUE); break; case ID_POPUP_PCB_BREAK_TRACK: DrawPanel->MouseToCursorSchema(); { TRACK * track = (TRACK *) GetScreen()->m_CurrentItem; wxPoint pos = GetScreen()->m_Curseur; track->Draw(DrawPanel, &dc, GR_XOR); TRACK * newtrack = CreateLockPoint(&pos.x, &pos.y, track, NULL); track->Draw(DrawPanel, &dc, GR_XOR); newtrack->Draw(DrawPanel, &dc, GR_XOR); } break; case ID_MENU_PCB_CLEAN: Clean_Pcb(&dc); break; case ID_MENU_PCB_SWAP_LAYERS: Swap_Layers(event); break; case ID_POPUP_PCB_AUTOROUTE_GET_AUTOROUTER: GlobalRoute(&dc); break; case ID_POPUP_PCB_AUTOROUTE_GET_AUTOROUTER_DATA: ReadAutoroutedTracks(&dc); break; case ID_PCB_USER_GRID_SETUP: InstallGridFrame(pos); break; case ID_POPUP_PCB_DISPLAY_FOOTPRINT_DOC: { wxString msg = FindKicadHelpPath(); msg += EDA_Appl->m_EDA_CommonConfig->Read(wxT("module_doc_file"), wxT("pcbnew/footprints.pdf")); GetAssociatedDocument(this, wxEmptyString, msg); } break; case ID_MENU_ARCHIVE_NEW_MODULES: Archive_Modules(wxEmptyString, TRUE); break; case ID_MENU_ARCHIVE_ALL_MODULES: Archive_Modules(wxEmptyString, FALSE); break; default: { DisplayError(this, wxT("WinEDA_PcbFrame::Process_Special_Functions() id error")); break; } } SetToolbars(); }
void WinEDA_GerberFrame::ReCreateHToolbar(void) /***********************************************/ { int layer = 0; GERBER_Descr * gerber_layer = NULL; int ii; // delete and recreate the toolbar if ( m_HToolBar != NULL ) return; if ( GetScreen() ) { layer = GetScreen()->m_Active_Layer; gerber_layer = g_GERBER_Descr_List[layer]; } m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE); SetToolBar(m_HToolBar); // Set up toolbar m_HToolBar->AddTool(ID_NEW_BOARD, BITMAP(new_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("New World") ); m_HToolBar->AddTool(ID_LOAD_FILE, BITMAP(open_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("Open existing Layer")); #if 0 m_HToolBar->AddTool(ID_SAVE_PROJECT, BITMAP(save_button), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("Save World")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_SHEET_SET, BITMAP(sheetset_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("page settings (size, texts)")); #endif m_HToolBar->AddSeparator(); #if 0 m_HToolBar->AddTool(wxID_CUT, BITMAP(cut_button), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("Cut selected item")); m_HToolBar->AddTool(wxID_COPY, BITMAP(copy_button), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("Copy selected item")); m_HToolBar->AddTool(wxID_PASTE, BITMAP(paste_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("Paste")); #endif m_HToolBar->AddTool(ID_UNDO_BUTT, BITMAP(undelete_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("Undelete")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_GEN_PRINT, BITMAP(print_button), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("Print World")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, BITMAP(zoom_in_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("zoom + (F1)")); m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, BITMAP(zoom_out_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("zoom - (F2)")); m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, BITMAP(repaint_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("redraw (F3)")); m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, BITMAP(zoom_optimal_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("auto zoom")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_FIND_ITEMS, BITMAP(find_xpm), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, _("Find D Codes")); wxArrayString choices; m_HToolBar->AddSeparator(); for ( ii = 0; ii < 32 ; ii ++ ) { wxString msg; msg = _("Layer "); msg << ii+1; choices.Add(msg); } m_SelLayerBox = new wxComboBox(m_HToolBar, ID_TOOLBARH_PCB_SELECT_LAYER,"", wxDefaultPosition, wxSize(150, -1), choices, wxCB_READONLY); m_SelLayerBox->SetSelection( GetScreen()->m_Active_Layer ); m_HToolBar->AddControl(m_SelLayerBox); m_HToolBar->AddSeparator(); choices.Clear(); choices.Add( _("No tool")); for ( ii = 0; ii < MAX_TOOLS ; ii ++ ) { wxString msg; msg = _("Tool "); msg << ii + FIRST_DCODE; choices.Add(msg); } m_SelLayerTool = new wxComboBox(m_HToolBar, ID_TOOLBARH_GERBER_SELECT_TOOL,"", wxDefaultPosition, wxSize(150, -1), choices, wxCB_READONLY); m_HToolBar->AddControl(m_SelLayerTool); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes m_HToolBar->Realize(); SetToolbars(); }
void EDA_3D_FRAME::ReCreateMainToolbar() { if( m_mainToolBar != NULL ) { // Simple update to the list of old files. SetToolbars(); return; } m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_HORZ_LAYOUT ); // Set up toolbar m_mainToolBar->AddTool( ID_RELOAD3D_BOARD, wxEmptyString, KiBitmap( import3d_xpm ), _( "Reload board" ) ); #if (defined(__WINDOWS__) || defined(__APPLE__ ) ) // Does not work properly under linux m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_TOOL_SCREENCOPY_TOCLIBBOARD, wxEmptyString, KiBitmap( copy_button_xpm ), _( "Copy 3D Image to Clipboard" ) ); #endif m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_TOOL_SET_VISIBLE_ITEMS, wxEmptyString, KiBitmap( read_setup_xpm ), _( "Set display options, and some layers visibility" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiBitmap( zoom_in_xpm ), _( "Zoom in" ) ); m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiBitmap( zoom_out_xpm ), _( "Zoom out" ) ); m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiBitmap( zoom_redraw_xpm ), _( "Redraw view" ) ); m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ), _( "Fit in page" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ROTATE3D_X_NEG, wxEmptyString, KiBitmap( rotate_neg_x_xpm ), _( "Rotate X <-" ) ); m_mainToolBar->AddTool( ID_ROTATE3D_X_POS, wxEmptyString, KiBitmap( rotate_pos_x_xpm ), _( "Rotate X ->" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ROTATE3D_Y_NEG, wxEmptyString, KiBitmap( rotate_neg_y_xpm ), _( "Rotate Y <-" ) ); m_mainToolBar->AddTool( ID_ROTATE3D_Y_POS, wxEmptyString, KiBitmap( rotate_pos_y_xpm ), _( "Rotate Y ->" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ROTATE3D_Z_NEG, wxEmptyString, KiBitmap( rotate_neg_z_xpm ), _( "Rotate Z <-" ) ); m_mainToolBar->AddTool( ID_ROTATE3D_Z_POS, wxEmptyString, KiBitmap( rotate_pos_z_xpm ), _( "Rotate Z ->" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_MOVE3D_LEFT, wxEmptyString, KiBitmap( left_xpm ), _( "Move left" ) ); m_mainToolBar->AddTool( ID_MOVE3D_RIGHT, wxEmptyString, KiBitmap( right_xpm ), _( "Move right" ) ); m_mainToolBar->AddTool( ID_MOVE3D_UP, wxEmptyString, KiBitmap( up_xpm ), _( "Move up" ) ); m_mainToolBar->AddTool( ID_MOVE3D_DOWN, wxEmptyString, KiBitmap( down_xpm ), _( "Move down" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ORTHO, wxEmptyString, KiBitmap( ortho_xpm ), _( "Enable/Disable orthographic projection" ), wxITEM_CHECK ); m_mainToolBar->Realize(); }
void WinEDA_ModuleEditFrame::ReCreateHToolbar(void) /***************************************************/ { // Cecreate the toolbar if ( m_HToolBar != NULL ) return; m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE); SetToolBar(m_HToolBar); // Set up toolbar m_HToolBar->AddTool(ID_LIBEDIT_SELECT_CURRENT_LIB, wxEmptyString, BITMAP(open_library_xpm), _("Select working library")); m_HToolBar->AddTool(ID_MODEDIT_SAVE_LIBMODULE, wxEmptyString, BITMAP(save_library_xpm), _("Save Module in working library")); m_HToolBar->AddTool(ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, wxEmptyString, BITMAP(new_library_xpm), _("Create new library and save current module")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_LIBEDIT_DELETE_PART, wxEmptyString, BITMAP(delete_xpm), _("Delete part in current library")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_MODEDIT_NEW_MODULE, wxEmptyString, BITMAP(new_footprint_xpm), _("New Module")); m_HToolBar->AddTool(ID_MODEDIT_LOAD_MODULE, wxEmptyString, BITMAP(module_xpm), _("Load module from lib")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_MODEDIT_LOAD_MODULE_FROM_BOARD, wxEmptyString, BITMAP(load_module_board_xpm), _("Load module from current BOARD")); m_HToolBar->AddTool(ID_MODEDIT_SAVE_MODULE_IN_BOARD, wxEmptyString, BITMAP(repl_module_board_xpm), _("Replace module in current BOARD")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_LIBEDIT_IMPORT_PART, wxEmptyString, BITMAP(import_module_xpm), _("import module")); m_HToolBar->AddTool(ID_LIBEDIT_EXPORT_PART, wxEmptyString, BITMAP(export_module_xpm), _("export module")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_MODEDIT_EDIT_MODULE_PROPERTIES, wxEmptyString, BITMAP(module_options_xpm), _("Module Properties")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_GEN_PRINT, wxEmptyString, BITMAP(print_button), _("Print Module")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP(zoom_in_xpm), _("zoom + (F1)")); m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, wxEmptyString,BITMAP(zoom_out_xpm), _("zoom - (F2)")); m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, wxEmptyString,BITMAP(repaint_xpm), _("redraw (F3)")); m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, wxEmptyString,BITMAP(zoom_optimal_xpm), _("auto zoom")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_MODEDIT_UNDO, wxEmptyString, BITMAP(undo_xpm), _("Undo last edition")); m_HToolBar->AddTool(ID_MODEDIT_REDO, wxEmptyString, BITMAP(redo_xpm), _("Redo the last undo command")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_MODEDIT_PAD_SETTINGS, wxEmptyString, BITMAP(options_pad_xpm), _("Pad Settings")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_MODEDIT_CHECK, wxEmptyString, BITMAP(module_check_xpm), _("Module Check")); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes m_HToolBar->Realize(); SetToolbars(); }
void WinEDA_PcbFrame::ReCreateOptToolbar(void) /*********************************************/ // Create the left vertical toolbar (option selections) { if ( m_OptionsToolBar ) return; // creation du tool bar options m_OptionsToolBar = new WinEDA_Toolbar(TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_DRC_OFF, wxEmptyString, BITMAP(drc_off_xpm), _("Drc OFF"), wxITEM_CHECK); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_GRID, wxEmptyString, BITMAP(grid_xpm), _("Display Grid OFF"), wxITEM_CHECK); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString, BITMAP(polar_coord_xpm), _("Display Polar Coord ON"), wxITEM_CHECK); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString, BITMAP(unit_inch_xpm), _("Units = Inch"), wxITEM_CHECK ); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString, BITMAP(unit_mm_xpm), _("Units = mm"), wxITEM_CHECK ); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString, BITMAP(cursor_shape_xpm), _("Change Cursor Shape"), wxITEM_CHECK); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_RATSNEST, wxEmptyString, BITMAP(general_ratsnet_xpm), _("Show General Ratsnest"), wxITEM_CHECK); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_MODULE_RATSNEST,wxEmptyString, BITMAP(local_ratsnet_xpm), _("Show Module Ratsnest when moving"), wxITEM_CHECK); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_AUTO_DEL_TRACK, wxEmptyString, BITMAP(auto_delete_track_xpm), _("Enable Auto Del Track"), wxITEM_CHECK); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_ZONES,wxEmptyString, BITMAP(show_zone_xpm), _("Show Zones"), wxITEM_CHECK); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_PADS_SKETCH,wxEmptyString, BITMAP(pad_sketch_xpm), _("Show Pads Sketch"), wxITEM_CHECK); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_TRACKS_SKETCH,wxEmptyString, BITMAP(showtrack_xpm), _("Show Tracks Sketch"), wxITEM_CHECK); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE, wxEmptyString, BITMAP(palette_xpm), _("Hight Contrast Mode Display"), wxITEM_CHECK); m_OptionsToolBar->ToggleTool(ID_TB_OPTIONS_SHOW_HIGHT_CONTRAST_MODE, DisplayOpt.ContrastModeDisplay); #ifdef MUWAVE_ENBL m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1, wxEmptyString, BITMAP(mw_toolbar_xpm), _("Display auxiliary vertical toolbar (tools for micro wave applications)\n This is a very experimental feature (under development)"), wxITEM_CHECK); #endif m_OptionsToolBar->Realize(); SetToolbars(); }
void WinEDA_PcbFrame::ReCreateVToolbar(void) /********************************************/ /* Create the main vertical right toolbar, showing usual tools */ { if( m_VToolBar ) return; m_VToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE); // Set up toolbar m_VToolBar->AddTool(ID_NO_SELECT_BUTT, wxEmptyString, BITMAP(cursor_xpm), wxEmptyString, wxITEM_CHECK ); m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT, TRUE); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_PCB_HIGHLIGHT_BUTT, wxEmptyString, BITMAP(net_hightlight_xpm), _("Net highlight"), wxITEM_CHECK ); m_VToolBar->AddTool(ID_PCB_SHOW_1_RATSNEST_BUTT, wxEmptyString, BITMAP(tool_ratsnet_xpm), _("Display local ratsnest (pad or module)"), wxITEM_CHECK ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_COMPONENT_BUTT, wxEmptyString, BITMAP(module_xpm), _("Add modules"), wxITEM_CHECK); m_VToolBar->AddTool(ID_TRACK_BUTT, wxEmptyString, BITMAP(add_tracks_xpm), _("Add Tracks an vias"), wxITEM_CHECK); m_VToolBar->AddTool(ID_PCB_ZONES_BUTT, wxEmptyString, BITMAP(add_zone_xpm), _("Add Zones"), wxITEM_CHECK); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_LINE_COMMENT_BUTT, wxEmptyString, BITMAP(add_dashed_line_xpm), _("Add graphic line or polygon"), wxITEM_CHECK); m_VToolBar->AddTool(ID_PCB_CIRCLE_BUTT, wxEmptyString, BITMAP(add_circle_xpm), _("Add graphic circle"), wxITEM_CHECK); m_VToolBar->AddTool(ID_PCB_ARC_BUTT, wxEmptyString, BITMAP(add_arc_xpm), _("Add graphic arc"), wxITEM_CHECK); m_VToolBar->AddTool(ID_TEXT_COMMENT_BUTT, wxEmptyString, BITMAP(add_text_xpm), _("Add Text"), wxITEM_CHECK); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_PCB_COTATION_BUTT, wxEmptyString, BITMAP(add_cotation_xpm), _("Add Cotation"), wxITEM_CHECK); m_VToolBar->AddTool(ID_PCB_MIRE_BUTT, wxEmptyString, BITMAP(add_mires_xpm), _("Add Mires"), wxITEM_CHECK); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_PCB_DELETE_ITEM_BUTT, wxEmptyString, BITMAP(delete_body_xpm), _("Delete items"), wxITEM_CHECK); m_VToolBar->AddSeparator(); m_VToolBar->AddTool(ID_PCB_PLACE_OFFSET_COORD_BUTT, wxEmptyString, BITMAP(pcb_offset_xpm), _("Offset adjust for drill and place files"), wxITEM_CHECK); m_VToolBar->Realize(); SetToolbars(); }
void WinEDA_GerberFrame::Process_Special_Functions(wxCommandEvent& event) /********************************************************************************/ /* Traite les selections d'outils et les commandes appelees du menu POPUP */ { int id = event.GetId(); int layer = GetScreen()->m_Active_Layer; GERBER_Descr * gerber_layer = g_GERBER_Descr_List[layer]; wxPoint pos; wxClientDC dc(DrawPanel); DrawPanel->PrepareGraphicContext(&dc); wxGetMousePosition(&pos.x, &pos.y); pos.y += 20; switch ( id ) // Arret eventuel de la commande de déplacement en cours { case wxID_CUT: case wxID_COPY: case ID_POPUP_DELETE_BLOCK: case ID_POPUP_PLACE_BLOCK: case ID_POPUP_ZOOM_BLOCK: case ID_POPUP_INVERT_BLOCK: case ID_POPUP_ROTATE_BLOCK: case ID_POPUP_COPY_BLOCK: break; case ID_POPUP_CANCEL_CURRENT_COMMAND: if( GetScreen()->ManageCurseur && GetScreen()->ForceCloseManageCurseur ) { GetScreen()->ForceCloseManageCurseur(this, &dc); } /* ne devrait pas etre execute, sauf bug */ if (m_CurrentScreen->BlockLocate.m_Command != BLOCK_IDLE) { m_CurrentScreen->BlockLocate.m_Command = BLOCK_IDLE; m_CurrentScreen->BlockLocate.m_State = STATE_NO_BLOCK; m_CurrentScreen->BlockLocate.m_BlockDrawStruct = NULL; } if (m_ID_current_state == 0 ) SetToolID(0, wxCURSOR_ARROW, wxEmptyString); else SetCursor(DrawPanel->m_PanelCursor = DrawPanel->m_PanelDefaultCursor); break; default: // Arret dea commande de déplacement en cours if( GetScreen()->ManageCurseur && GetScreen()->ForceCloseManageCurseur ) { GetScreen()->ForceCloseManageCurseur(this, &dc); } SetToolID(0, wxCURSOR_ARROW, wxEmptyString); break; } switch ( id ) // Traitement des commandes { case ID_EXIT : Close(TRUE); break; case ID_NEW_PROJECT: case ID_LOAD_PROJECT: Files_io(event); break; case ID_PCB_GLOBAL_DELETE: Erase_Current_Layer(&dc, TRUE); break; case wxID_CUT: break; case wxID_COPY: break; case wxID_PASTE: // HandleBlockBegin(&dc, BLOCK_PASTE); break; case ID_UNDO_BUTT: UnDeleteItem(&dc); break; case ID_GET_TOOLS: // InstallToolsFrame(this, wxPoint(-1,-1) ); break; case ID_FIND_ITEMS: // InstallFindFrame(this, pos); break; case ID_BUS_BUTT: SetToolID( id, wxCURSOR_PENCIL, wxT("Add Tracks")); break; case ID_LINE_COMMENT_BUTT: SetToolID( id, wxCURSOR_PENCIL, wxT("Add Drawing")); break; case ID_TEXT_COMMENT_BUTT: SetToolID( id, wxCURSOR_PENCIL, wxT("Add Text")); break; case ID_NO_SELECT_BUTT: SetToolID( 0, 0, wxEmptyString); break; case ID_POPUP_CLOSE_CURRENT_TOOL: SetToolID( 0, wxCURSOR_ARROW, wxEmptyString); break; case ID_POPUP_CANCEL_CURRENT_COMMAND: break; case ID_POPUP_END_LINE: DrawPanel->MouseToCursorSchema(); // EndSegment(&dc); break; case ID_POPUP_PCB_DELETE_TRACKSEG: DrawPanel->MouseToCursorSchema(); if ( GetScreen()->m_CurrentItem == NULL) break; Delete_Segment(&dc, (TRACK*)GetScreen()->m_CurrentItem); GetScreen()->m_CurrentItem = NULL; GetScreen()->SetModify(); break; case ID_PCB_DELETE_ITEM_BUTT: SetToolID( id, wxCURSOR_PENCIL, wxT("Delete item")); break; case ID_POPUP_SCH_MOVE_ITEM_REQUEST: DrawPanel->MouseToCursorSchema(); Process_Move_Item(this, GetScreen()->m_CurrentItem, &dc); break; case ID_TOOLBARH_PCB_SELECT_LAYER: { GetScreen()->m_Active_Layer = m_SelLayerBox->GetSelection(); DrawPanel->Refresh(TRUE); break; } case ID_TOOLBARH_GERBER_SELECT_TOOL: if ( gerber_layer ) { int tool = m_SelLayerTool->GetSelection(); if ( tool > 0 ) tool = tool - 1 + FIRST_DCODE; else tool = 0; gerber_layer->m_Selected_Tool = tool; DrawPanel->Refresh(TRUE); } else DisplayError(this, _("No layer selected") ); break; case ID_GERBVIEW_SHOW_LIST_DCODES: Liste_D_Codes(&dc); break; case ID_GERBVIEW_SHOW_SOURCE: if ( gerber_layer ) { wxString editorname = GetEditorName(); if ( ! editorname.IsEmpty() ) ExecuteFile(this, editorname, gerber_layer->m_FileName); } break; case ID_POPUP_PLACE_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_MOVE; DrawPanel->m_AutoPAN_Request = FALSE; HandleBlockPlace(&dc); break; case ID_POPUP_COPY_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_COPY; m_CurrentScreen->BlockLocate.SetMessageBlock(this); DrawPanel->m_AutoPAN_Request = FALSE; HandleBlockEnd(&dc); break; case ID_POPUP_ZOOM_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_ZOOM; m_CurrentScreen->BlockLocate.SetMessageBlock(this); m_CurrentScreen->BlockLocate.SetMessageBlock(this); HandleBlockEnd(&dc); break; case ID_POPUP_DELETE_BLOCK: GetScreen()->BlockLocate.m_Command = BLOCK_DELETE; m_CurrentScreen->BlockLocate.SetMessageBlock(this); HandleBlockEnd(&dc); break; default: wxMessageBox( wxT("WinEDA_GerberFrame::Process_Special_Functions error")); break; } SetToolbars(); }
void WinEDA_PcbFrame::ReCreateHToolbar(void) /******************************************/ // Create the main horizontal toolbar { int ii; if ( m_HToolBar != NULL ) { // simple mise a jour de la liste des fichiers anciens wxMenuItem * item; for ( ii = 9; ii >=0 ; ii-- ) { if( m_FilesMenu->FindItem(ID_LOAD_FILE_1 + ii) ) { item = m_FilesMenu->Remove(ID_LOAD_FILE_1 + ii); if ( item ) delete item; } } for ( ii = 0; ii < 10; ii++ ) { if ( GetLastProject(ii).IsEmpty() ) break; m_FilesMenu->Append(ID_LOAD_FILE_1 + ii, GetLastProject(ii) ); } SetToolbars(); return; } m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE); m_HToolBar->SetRows(1); SetToolBar(m_HToolBar); // Set up toolbar m_HToolBar->AddTool(ID_NEW_BOARD, wxEmptyString, BITMAP(new_xpm), _("New Board")); m_HToolBar->AddTool(ID_LOAD_FILE, wxEmptyString, BITMAP(open_xpm), _("Open existing Board")); m_HToolBar->AddTool(ID_SAVE_BOARD, wxEmptyString, BITMAP(save_xpm), _("Save Board")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_SHEET_SET, wxEmptyString, BITMAP(sheetset_xpm), _("page settings (size, texts)") ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_OPEN_MODULE_EDITOR, wxEmptyString, BITMAP(modedit_xpm), _("Open Module Editor")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(wxID_CUT, wxEmptyString, BITMAP(cut_button), _("Cut selected item")); #if 0 m_HToolBar->AddTool(wxID_COPY, wxEmptyString, BITMAP(copy_button), _("Copy selected item")); m_HToolBar->AddTool(wxID_PASTE, wxEmptyString, BITMAP(paste_xpm), _("Paste")); #endif m_HToolBar->AddTool(ID_UNDO_BUTT, wxEmptyString, BITMAP(undelete_xpm), _("Undelete")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_GEN_PRINT, wxEmptyString, BITMAP(print_button), _("Print Board")); m_HToolBar->AddTool(ID_GEN_PLOT, wxEmptyString, BITMAP(plot_xpm), _("Plot (Hplg, Postscript, or Gerber format)")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP(zoom_in_xpm), _("zoom + (F1)")); m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, wxEmptyString, BITMAP(zoom_out_xpm), _("zoom - (F2)")); m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP(repaint_xpm), _("redraw (F3)")); m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP(zoom_optimal_xpm), _("auto zoom")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_FIND_ITEMS, wxEmptyString, BITMAP(find_xpm), _("Find components and texts")); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_GET_NETLIST, wxEmptyString, BITMAP(netlist_xpm), _("Read Netlist")); m_HToolBar->AddTool(ID_DRC_CONTROL, wxEmptyString, BITMAP(erc_xpm), _("Pcb Design Rules Check")); m_HToolBar->AddSeparator(); ReCreateLayerBox(m_HToolBar); m_HToolBar->AddSeparator(); m_HToolBar->AddTool(ID_TOOLBARH_PCB_AUTOPLACE, wxEmptyString, BITMAP(mode_module_xpm), _("Mode Module: Manual and Automatic Move or Place for modules"), wxITEM_CHECK ); m_HToolBar->AddTool(ID_TOOLBARH_PCB_AUTOROUTE, wxEmptyString, BITMAP(mode_track_xpm), _("Mode Track and Autorouting"), wxITEM_CHECK); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes m_HToolBar->Realize(); SetToolbars(); }
void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar(void) /****************************************************/ /* Create auxiliary horizontal toolbar */ { int ii; wxString msg; if ( m_AuxiliaryToolBar == NULL ) { m_AuxiliaryToolBar = new WinEDA_Toolbar(TOOLBAR_AUX, this, ID_AUX_TOOLBAR, TRUE); // Set up toolbar m_AuxiliaryToolBar->AddSeparator(); m_SelTrackWidthBox = new WinEDAChoiceBox(m_AuxiliaryToolBar, ID_AUX_TOOLBAR_PCB_TRACK_WIDTH, wxPoint(-1,-1), wxSize(LISTBOX_WIDTH+20, -1)); m_AuxiliaryToolBar->AddControl(m_SelTrackWidthBox); m_SelTrackWidthBox_Changed = TRUE; m_AuxiliaryToolBar->AddSeparator(); m_SelViaSizeBox = new WinEDAChoiceBox(m_AuxiliaryToolBar, ID_AUX_TOOLBAR_PCB_VIA_SIZE, wxPoint(-1,-1), wxSize(LISTBOX_WIDTH+10, -1)); m_AuxiliaryToolBar->AddControl(m_SelViaSizeBox); m_AuxiliaryToolBar->AddSeparator(); // Boite de selection du pas de grille m_SelGridBox = new WinEDAChoiceBox(m_AuxiliaryToolBar, ID_ON_GRID_SELECT, wxPoint(-1,-1), wxSize(LISTBOX_WIDTH, -1)); m_AuxiliaryToolBar->AddControl( m_SelGridBox); // Boite de selection du Zoom m_AuxiliaryToolBar->AddSeparator(); m_SelZoomBox = new WinEDAChoiceBox(m_AuxiliaryToolBar, ID_ON_ZOOM_SELECT, wxPoint(-1,-1), wxSize(LISTBOX_WIDTH, -1)); msg = _("Auto"); m_SelZoomBox->Append(msg); for ( int jj = 0, ii = 1; ii <= m_ZoomMaxValue; ii <<= 1, jj++ ) { msg = _("Zoom "); msg << ii; m_SelZoomBox->Append(msg); } m_SelZoomBox->Append(wxT("")); m_AuxiliaryToolBar->AddControl( m_SelZoomBox); // after adding the buttons to the toolbar, must call Realize() m_AuxiliaryToolBar->Realize(); } // mise a jour des affichages m_SelGridBox->Clear(); wxString format = _("Grid"); if ( UnitMetric == INCHES ) format += wxT(" %.1f"); else format += wxT(" %.3f"); for ( ii = 0; g_GridList[ii].x > 0; ii++ ) { double value = To_User_Unit(UnitMetric, g_GridList[ii].x, PCB_INTERNAL_UNIT); if ( UnitMetric == INCHES ) msg.Printf( format.GetData(), value * 1000); else msg.Printf( format.GetData(), value); m_SelGridBox->Append(msg); } m_SelGridBox->Append( _("User Grid") ); m_SelViaSizeBox_Changed = TRUE; m_SelTrackWidthBox_Changed = TRUE; SetToolbars(); }
void WinEDA_GerberFrame::OnSelectOptionToolbar(wxCommandEvent& event) /*****************************************************************/ { int id = event.GetId(); wxClientDC dc(DrawPanel); DrawPanel->PrepareGraphicContext(&dc); switch ( id ) { case ID_TB_OPTIONS_SHOW_GRID: m_Draw_Grid = g_ShowGrid = m_OptionsToolBar->GetToolState(id); DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_SELECT_UNIT_MM: UnitMetric = MILLIMETRE; Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SELECT_UNIT_INCH: UnitMetric = INCHES; Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SHOW_POLAR_COORD: Affiche_Message(""); DisplayOpt.DisplayPolarCood = m_OptionsToolBar->GetToolState(id); Affiche_Status_Box(); /* Reaffichage des coord curseur */ break; case ID_TB_OPTIONS_SELECT_CURSOR: GetScreen()->Trace_Curseur(DrawPanel, &dc); g_CursorShape = m_OptionsToolBar->GetToolState(id); GetScreen()->Trace_Curseur(DrawPanel, &dc); break; case ID_TB_OPTIONS_SHOW_PADS_SKETCH: if ( m_OptionsToolBar->GetToolState(id) ) { m_DisplayPadFill = FALSE; DisplayOpt.DisplayPadFill = FALSE; } else { m_DisplayPadFill = TRUE; DisplayOpt.DisplayPadFill = TRUE; } DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH: if( m_OptionsToolBar->GetToolState(id) ) { m_DisplayPcbTrackFill = FALSE; DisplayOpt.DisplayPcbTrackFill = FALSE; } else { m_DisplayPcbTrackFill = TRUE; DisplayOpt.DisplayPcbTrackFill = TRUE; } DrawPanel->ReDraw(&dc, TRUE); break; case ID_TB_OPTIONS_SHOW_DCODES: DisplayOpt.DisplayPadNum = m_OptionsToolBar->GetToolState(id); DrawPanel->ReDraw(&dc, TRUE); break; default: DisplayError(this, "WinEDA_PcbFrame::OnSelectOptionToolbar error"); break; } SetToolbars(); }
void EDA_3D_VIEWER::ReCreateMainToolbar() { wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER::ReCreateMainToolbar" ) ); if( m_mainToolBar != NULL ) { // Simple update to the list of old files. SetToolbars(); return; } m_mainToolBar = new wxAuiToolBar( this, ID_H_TOOLBAR, wxDefaultPosition, wxDefaultSize, KICAD_AUI_TB_STYLE | wxAUI_TB_HORZ_LAYOUT ); // Set up toolbar m_mainToolBar->AddTool( ID_RELOAD3D_BOARD, wxEmptyString, KiBitmap( import3d_xpm ), _( "Reload board" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_TOOL_SCREENCOPY_TOCLIBBOARD, wxEmptyString, KiBitmap( copy_xpm ), _( "Copy 3D image to clipboard" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_TOOL_SET_VISIBLE_ITEMS, wxEmptyString, KiBitmap( read_setup_xpm ), _( "Set display options, and some layers visibility" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_RENDER_CURRENT_VIEW, wxEmptyString, KiBitmap( render_mode_xpm ), _( "Render current view using Raytracing" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ZOOM_IN, wxEmptyString, KiBitmap( zoom_in_xpm ), _( "Zoom in" ) ); m_mainToolBar->AddTool( ID_ZOOM_OUT, wxEmptyString, KiBitmap( zoom_out_xpm ), _( "Zoom out" ) ); m_mainToolBar->AddTool( ID_ZOOM_REDRAW, wxEmptyString, KiBitmap( zoom_redraw_xpm ), _( "Redraw view" ) ); m_mainToolBar->AddTool( ID_ZOOM_PAGE, wxEmptyString, KiBitmap( zoom_fit_in_page_xpm ), _( "Zoom to fit 3D model" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ROTATE3D_X_NEG, wxEmptyString, KiBitmap( rotate_neg_x_xpm ), _( "Rotate X Clockwise" ) ); m_mainToolBar->AddTool( ID_ROTATE3D_X_POS, wxEmptyString, KiBitmap( rotate_pos_x_xpm ), _( "Rotate X Counterclockwise" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ROTATE3D_Y_NEG, wxEmptyString, KiBitmap( rotate_neg_y_xpm ), _( "Rotate Y Clockwise" ) ); m_mainToolBar->AddTool( ID_ROTATE3D_Y_POS, wxEmptyString, KiBitmap( rotate_pos_y_xpm ), _( "Rotate Y Counterclockwise" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ROTATE3D_Z_NEG, wxEmptyString, KiBitmap( rotate_neg_z_xpm ), _( "Rotate Z Clockwise" ) ); m_mainToolBar->AddTool( ID_ROTATE3D_Z_POS, wxEmptyString, KiBitmap( rotate_pos_z_xpm ), _( "Rotate Z Counterclockwise" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_MOVE3D_LEFT, wxEmptyString, KiBitmap( left_xpm ), _( "Move left" ) ); m_mainToolBar->AddTool( ID_MOVE3D_RIGHT, wxEmptyString, KiBitmap( right_xpm ), _( "Move right" ) ); m_mainToolBar->AddTool( ID_MOVE3D_UP, wxEmptyString, KiBitmap( up_xpm ), _( "Move up" ) ); m_mainToolBar->AddTool( ID_MOVE3D_DOWN, wxEmptyString, KiBitmap( down_xpm ), _( "Move down" ) ); m_mainToolBar->AddSeparator(); m_mainToolBar->AddTool( ID_ORTHO, wxEmptyString, KiBitmap( ortho_xpm ), _( "Enable/Disable orthographic projection" ), wxITEM_CHECK ); m_mainToolBar->Realize(); }