From d55989cc0e5758ab1dd97d5c81e967ddfe53ce79 Mon Sep 17 00:00:00 2001 From: charras Date: Sat, 16 Aug 2008 17:42:40 +0000 Subject: [PATCH] patch for 3D viewer from Emanuel Rumpf and minor other changes --- 3d-viewer/3d_aux.cpp | 8 + 3d-viewer/3d_canvas.cpp | 3 +- 3d-viewer/3d_draw.cpp | 250 ++++++++--- 3d-viewer/3d_frame.cpp | 105 ++++- 3d-viewer/3d_toolbar.cpp | 23 + 3d-viewer/3d_viewer.h | 18 + common/makefile.include | 2 +- include/id.h | 8 + internat/fr/kicad.mo | Bin 155921 -> 157785 bytes internat/fr/kicad.po | 891 +++++++++++++++++++++---------------- pcbnew/dialog_gendrill.cpp | 48 +- pcbnew/dialog_gendrill.h | 8 +- pcbnew/dialog_gendrill.pjd | 33 +- 13 files changed, 922 insertions(+), 475 deletions(-) diff --git a/3d-viewer/3d_aux.cpp b/3d-viewer/3d_aux.cpp index f368611a93..2f0cd2be15 100644 --- a/3d-viewer/3d_aux.cpp +++ b/3d-viewer/3d_aux.cpp @@ -172,6 +172,14 @@ Info_3D_Visu::Info_3D_Visu() m_Layers = 1; m_BoardSettings = NULL; + m_Draw3DAxis = TRUE; + m_Draw3DModule = TRUE; + m_Draw3DPlace = TRUE; + m_Draw3DZone = TRUE; + m_Draw3DComments = TRUE; + m_Draw3DDrawings = TRUE; + m_Draw3DEco1 = TRUE; + m_Draw3DEco2 = TRUE; } diff --git a/3d-viewer/3d_canvas.cpp b/3d-viewer/3d_canvas.cpp index 682e7dd483..d924ef9d74 100644 --- a/3d-viewer/3d_canvas.cpp +++ b/3d-viewer/3d_canvas.cpp @@ -83,6 +83,7 @@ Pcb3D_GLCanvas::~Pcb3D_GLCanvas() /*************************************/ { ClearLists(); + m_init = FALSE; } @@ -92,7 +93,7 @@ void Pcb3D_GLCanvas::ClearLists() { if( m_gllist > 0 ) glDeleteLists( m_gllist, 1 ); - m_init = FALSE; +// m_init = FALSE; m_gllist = 0; } diff --git a/3d-viewer/3d_draw.cpp b/3d-viewer/3d_draw.cpp index 4502227239..2a01dd76fa 100644 --- a/3d-viewer/3d_draw.cpp +++ b/3d-viewer/3d_draw.cpp @@ -1,5 +1,4 @@ ////////////////////////////////////// - // Name: 3d_draw.cpp ////////////////////////////////////// @@ -47,7 +46,8 @@ static void Draw3D_ArcSegment(double startx, double starty, double endx, double endy,double width, double zpos); static void Draw3D_CircleSegment(double startx, double starty, double endx, double endy,double width, double zpos); - +static int Get3DLayerEnable(int act_layer); +static GLfloat Get3DLayerSide(int act_layer); /******************************************/ void Pcb3D_GLCanvas::Redraw( bool finish ) @@ -122,7 +122,8 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List() g_Parm_3D_Visu.m_LayerZcoord[ii] = g_Parm_3D_Visu.m_Epoxy_Width; } - GLfloat zpos_cu = 500 * g_Parm_3D_Visu.m_BoardScale; + //GLfloat zpos_cu = 500 * g_Parm_3D_Visu.m_BoardScale; + GLfloat zpos_cu = 10 * g_Parm_3D_Visu.m_BoardScale; GLfloat zpos_cmp = g_Parm_3D_Visu.m_Epoxy_Width + zpos_cu; g_Parm_3D_Visu.m_LayerZcoord[ADHESIVE_N_CU] = -zpos_cu * 2; g_Parm_3D_Visu.m_LayerZcoord[ADHESIVE_N_CMP] = zpos_cmp + zpos_cu; @@ -138,19 +139,21 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List() glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE ); /* draw axes */ - glEnable( GL_COLOR_MATERIAL ); - SetGLColor( WHITE ); - glBegin( GL_LINES ); - glNormal3f( 0.0, 0.0, 1.0 ); // Normal is Z axis - glVertex3f( 0.0, 0.0, 0.0 ); - glVertex3f( 1.0, 0.0, 0.0 ); // X axis - glVertex3f( 0.0, 0.0, 0.0 ); - glVertex3f( 0.0, -1.0, 0.0 ); // Y axis - glNormal3f( 1.0, 0.0, 0.0 ); // Normal is Y axis - glVertex3f( 0.0, 0.0, 0.0 ); - glVertex3f( 0.0, 0.0, 0.3 ); // Z axis - glEnd(); - + if (g_Parm_3D_Visu.m_Draw3DAxis){ + glEnable( GL_COLOR_MATERIAL ); + SetGLColor( WHITE ); + glBegin( GL_LINES ); + glNormal3f( 0.0, 0.0, 1.0 ); // Normal is Z axis + glVertex3f( 0.0, 0.0, 0.0 ); + glVertex3f( 1.0, 0.0, 0.0 ); // X axis + glVertex3f( 0.0, 0.0, 0.0 ); + glVertex3f( 0.0, -1.0, 0.0 ); // Y axis + glNormal3f( 1.0, 0.0, 0.0 ); // Normal is Y axis + glVertex3f( 0.0, 0.0, 0.0 ); + glVertex3f( 0.0, 0.0, 0.3 ); // Z axis + glEnd(); + } + /* Draw epoxy limits (do not use, works and test in progress) */ #if 0 glEnable( GL_FOG ); @@ -198,15 +201,32 @@ GLuint Pcb3D_GLCanvas::CreateDrawGL_List() else Draw3D_Track( pt_piste ); } + if (g_Parm_3D_Visu.m_Draw3DZone){ + for( pt_piste = pcb->m_Zone; pt_piste != NULL; pt_piste = (TRACK*) pt_piste->Pnext ) + { + if( pt_piste->Type() == TYPEZONE ) + Draw3D_Track( pt_piste ); + } + } /* Tracé des edges */ EDA_BaseStruct* PtStruct; for( PtStruct = pcb->m_Drawings; PtStruct != NULL; PtStruct = PtStruct->Pnext ) { - #define STRUCT ( (DRAWSEGMENT*) PtStruct ) - if( PtStruct->Type() != TYPEDRAWSEGMENT ) - continue; - Draw3D_DrawSegment( STRUCT ); + //if( PtStruct->Type() != TYPEDRAWSEGMENT ) + // continue; + if( PtStruct->Type() == TYPEDRAWSEGMENT ) + { + #undef STRUCT + #define STRUCT ( (DRAWSEGMENT*) PtStruct ) + Draw3D_DrawSegment( STRUCT ); + } + if( PtStruct->Type() == TYPETEXTE ) + { + #undef STRUCT + #define STRUCT ( (TEXTE_PCB*) PtStruct ) + Draw3D_DrawText( STRUCT ); + } } /* tracé des modules */ @@ -284,8 +304,11 @@ void Pcb3D_GLCanvas::Draw3D_Via( SEGVIA* via ) color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[CMP_N]; if( color & ITEM_NOT_SHOW ) continue; - SetGLColor( color ); + //SetGLColor( color ); + SetGLColor( LIGHTGRAY ); glNormal3f( 0.0, 0.0, (layer == COPPER_LAYER_N) ? -1.0 : 1.0 ); + if (layer == COPPER_LAYER_N) zpos = zpos - 5 * g_Parm_3D_Visu.m_BoardScale; + else zpos = zpos + 5 * g_Parm_3D_Visu.m_BoardScale; Draw3D_FilledCircle( x, -y, r, hole, zpos ); if( layer >= top_layer ) break; @@ -339,11 +362,75 @@ void Pcb3D_GLCanvas::Draw3D_DrawSegment( DRAWSEGMENT* segment ) } else { - zpos = g_Parm_3D_Visu.m_LayerZcoord[segment->GetLayer()]; - Draw3D_FilledSegment( x, -y, xf, -yf, w, zpos ); + layer = segment->GetLayer(); + glNormal3f( 0.0, 0.0, Get3DLayerSide(layer) ); + zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; + if (Get3DLayerEnable(layer)) + { + switch( segment->m_Shape ) + { + case S_ARC: + Draw3D_ArcSegment( x, -y, xf, -yf, w, zpos); + break; + case S_CIRCLE: + Draw3D_CircleSegment( x, -y, xf, -yf, w, zpos); + break; + default : + Draw3D_FilledSegment( x, -y, xf, -yf, w, zpos); + break; + } + } } } +/*************************************************************/ +void Pcb3D_GLCanvas::Draw3D_DrawText( TEXTE_PCB* text ) +/*************************************************************/ +{ + int layer = text->GetLayer(); + double x, y, xf, yf; + double zpos, w; + int color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[layer]; + int coord[104]; + int ii, jj, kk, ll, nbpoints; + + + if (Get3DLayerEnable(layer)) + { + zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; + glNormal3f( 0.0, 0.0, Get3DLayerSide(layer) ); + + text->CreateDrawData(); + jj = 5; ii = jj + 1; + while( ii < text->m_TextDrawingsSize ) + { + nbpoints = text->m_TextDrawings[jj]; + if( nbpoints > 50 ) + nbpoints = 50; + + for( kk = 0, ll = 0; (kk < nbpoints) && (ii < text->m_TextDrawingsSize); kk++ ) + { + coord[ll++] = text->m_TextDrawings[ii++] + text->m_Pos.x; + coord[ll++] = text->m_TextDrawings[ii++] + text->m_Pos.y; + } + + jj = ii++; + + for( kk = 0, ll = 0; kk < (nbpoints - 1); kk++, ll += 2 ) + { + SetGLColor( color ); + w = text->m_Width * g_Parm_3D_Visu.m_BoardScale; + x = coord[ll] * g_Parm_3D_Visu.m_BoardScale; + y = coord[ll + 1] * g_Parm_3D_Visu.m_BoardScale; + xf = coord[ll + 2] * g_Parm_3D_Visu.m_BoardScale; + yf = coord[ll + 3] * g_Parm_3D_Visu.m_BoardScale; + + //printf("text koordinata x=%d, y=%d, x2=%d, y2=%d\n",x,y,xf,yf); + Draw3D_FilledSegment( x, -y, xf, -yf, w, zpos ); + } + } + } +} /*********************************************/ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) @@ -373,34 +460,43 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas ) } /* Draw module shape: 3D shape if exists (or module edge if not exists) */ - Struct3D_Master* Struct3D = m_3D_Drawings; - bool As3dShape = FALSE; - glPushMatrix(); - glTranslatef( m_Pos.x * g_Parm_3D_Visu.m_BoardScale, - -m_Pos.y * g_Parm_3D_Visu.m_BoardScale, - g_Parm_3D_Visu.m_LayerZcoord[m_Layer] ); - if( m_Orient ) - { - glRotatef( (double) m_Orient / 10, 0.0, 0.0, 1.0 ); - } - if( m_Layer == COPPER_LAYER_N ) - { - glRotatef( 180.0, 0.0, 1.0, 0.0 ); - glRotatef( 180.0, 0.0, 0.0, 1.0 ); - } - DataScale3D = g_Parm_3D_Visu.m_BoardScale * UNITS3D_TO_UNITSPCB; - - for( ; Struct3D != NULL; Struct3D = (Struct3D_Master*) Struct3D->Pnext ) - { - if( !Struct3D->m_Shape3DName.IsEmpty() ) - { - As3dShape = TRUE; - Struct3D->ReadData(); - } - } - - glPopMatrix(); + Struct3D_Master* Struct3D = m_3D_Drawings; + bool As3dShape = FALSE; + bool Place3D; + if ( (Struct3D->m_Shape3DName.Find(wxString(wxT("placa"))) != -1) || + (Struct3D->m_Shape3DName.Find(wxString(wxT("place"))) != -1) ) + Place3D = TRUE; + else Place3D = FALSE; + + if ( (g_Parm_3D_Visu.m_Draw3DModule && !Place3D) || + (g_Parm_3D_Visu.m_Draw3DPlace && Place3D) ) + { + glPushMatrix(); + glTranslatef( m_Pos.x * g_Parm_3D_Visu.m_BoardScale, + -m_Pos.y * g_Parm_3D_Visu.m_BoardScale, + g_Parm_3D_Visu.m_LayerZcoord[m_Layer] ); + if( m_Orient ) + { + glRotatef( (double) m_Orient / 10, 0.0, 0.0, 1.0 ); + } + if( m_Layer == COPPER_LAYER_N ) + { + glRotatef( 180.0, 0.0, 1.0, 0.0 ); + glRotatef( 180.0, 0.0, 0.0, 1.0 ); + } + DataScale3D = g_Parm_3D_Visu.m_BoardScale * UNITS3D_TO_UNITSPCB; + for( ; Struct3D != NULL; Struct3D = (Struct3D_Master*) Struct3D->Pnext ) + { + if( !Struct3D->m_Shape3DName.IsEmpty() ) + { + As3dShape = TRUE; + Struct3D->ReadData(); + } + } + glPopMatrix(); + } + if( !As3dShape ) { EDA_BaseStruct* Struct = m_Drawings; @@ -546,9 +642,12 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas ) color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[layer]; if( color & ITEM_NOT_SHOW ) continue; - SetGLColor( color ); + //SetGLColor( color ); + SetGLColor( LIGHTGRAY ); glNormal3f( 0.0, 0.0, (layer == COPPER_LAYER_N) ? -1.0 : 1.0 ); zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; + if (layer == COPPER_LAYER_N) zpos = zpos - 5 * g_Parm_3D_Visu.m_BoardScale; + else zpos = zpos + 5 * g_Parm_3D_Visu.m_BoardScale; Draw3D_FilledCircle( x, -y, r, hole, zpos ); } @@ -591,8 +690,11 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas ) glNormal3f( 0.0, 0.0, (layer == COPPER_LAYER_N) ? -1.0 : 1.0 ); if( color & ITEM_NOT_SHOW ) continue; - SetGLColor( color ); - zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; + //SetGLColor( color ); + SetGLColor( LIGHTGRAY ); + zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; + if (layer == COPPER_LAYER_N) zpos = zpos - 5 * g_Parm_3D_Visu.m_BoardScale; + else zpos = zpos + 5 * g_Parm_3D_Visu.m_BoardScale; Draw3D_FilledSegmentWithHole( ox, -oy, fx, -fy, w, drillx, -drilly, hole, zpos ); } } @@ -662,8 +764,11 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas ) glNormal3f( 0.0, 0.0, (layer == COPPER_LAYER_N) ? -1.0 : 1.0 ); if( color & ITEM_NOT_SHOW ) continue; - SetGLColor( color ); + //SetGLColor( color ); + SetGLColor( LIGHTGRAY ); zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; + if (layer == COPPER_LAYER_N) zpos = zpos - 5 * g_Parm_3D_Visu.m_BoardScale; + else zpos = zpos + 5 * g_Parm_3D_Visu.m_BoardScale; glBegin( GL_QUAD_STRIP ); for( ii = 0; ii < 8; ii++ ) { @@ -946,3 +1051,40 @@ double x, y, hole, rayon; } glEnd(); } + +/******************************************/ +static int Get3DLayerEnable(int act_layer) +/******************************************/ +{ + bool enablelayer; + + enablelayer = TRUE; + if (act_layer == DRAW_N && !g_Parm_3D_Visu.m_Draw3DDrawings) + enablelayer = FALSE; + if (act_layer == COMMENT_N && !g_Parm_3D_Visu.m_Draw3DComments) + enablelayer = FALSE; + if (act_layer == ECO1_N && !g_Parm_3D_Visu.m_Draw3DEco1) + enablelayer = FALSE; + if (act_layer == ECO2_N && !g_Parm_3D_Visu.m_Draw3DEco2) + enablelayer = FALSE; + + return enablelayer; +} + +/******************************************/ +static GLfloat Get3DLayerSide(int act_layer) +/******************************************/ +{ + GLfloat nZ; + nZ = 1.0; + if ( + (act_layer <= LAST_COPPER_LAYER-1) || + (act_layer == ADHESIVE_N_CU) || + (act_layer == SOLDERPASTE_N_CU) || + (act_layer == SILKSCREEN_N_CU) || + (act_layer == SOLDERMASK_N_CU) + ) + nZ = -1.0; + return nZ; + +} diff --git a/3d-viewer/3d_frame.cpp b/3d-viewer/3d_frame.cpp index fe1ad3b819..1e2a19f64f 100644 --- a/3d-viewer/3d_frame.cpp +++ b/3d-viewer/3d_frame.cpp @@ -293,6 +293,38 @@ void WinEDA3D_DrawFrame::Process_Special_Functions( wxCommandEvent& event ) Set3DBgColor(); return; + case ID_MENU3D_AXIS_ONOFF: + Set3DAxisOnOff(); + return; + + case ID_MENU3D_MODULE_ONOFF: + Set3DModuleOnOff(); + return; + + case ID_MENU3D_PLACE_ONOFF: + Set3DPlaceOnOff(); + return; + + case ID_MENU3D_ZONE_ONOFF: + Set3DZoneOnOff(); + return; + + case ID_MENU3D_COMMENTS_ONOFF: + Set3DCommentsOnOff(); + return; + + case ID_MENU3D_DRAWINGS_ONOFF: + Set3DDrawingsOnOff(); + return; + + case ID_MENU3D_ECO1_ONOFF: + Set3DEco1OnOff(); + return; + + case ID_MENU3D_ECO2_ONOFF: + Set3DEco2OnOff(); + return; + default: wxMessageBox( wxT( "WinEDA3D_DrawFrame::Process_Special_Functions() error: unknown command" ) ); @@ -315,7 +347,6 @@ void WinEDA3D_DrawFrame::NewDisplay() m_Canvas->Refresh( true ); } - /******************************************/ void WinEDA3D_DrawFrame::Set3DBgColor() /******************************************/ @@ -339,3 +370,75 @@ void WinEDA3D_DrawFrame::Set3DBgColor() NewDisplay(); } } + +/******************************************/ +void WinEDA3D_DrawFrame::Set3DAxisOnOff() +/******************************************/ +{ + if (g_Parm_3D_Visu.m_Draw3DAxis) g_Parm_3D_Visu.m_Draw3DAxis = FALSE; + else g_Parm_3D_Visu.m_Draw3DAxis = TRUE; + NewDisplay(); +} + +/******************************************/ +void WinEDA3D_DrawFrame::Set3DModuleOnOff() +/******************************************/ +{ + if (g_Parm_3D_Visu.m_Draw3DModule) g_Parm_3D_Visu.m_Draw3DModule = FALSE; + else g_Parm_3D_Visu.m_Draw3DModule = TRUE; + NewDisplay(); +} + +/******************************************/ +void WinEDA3D_DrawFrame::Set3DPlaceOnOff() +/******************************************/ +{ + if (g_Parm_3D_Visu.m_Draw3DPlace) g_Parm_3D_Visu.m_Draw3DPlace = FALSE; + else g_Parm_3D_Visu.m_Draw3DPlace = TRUE; + NewDisplay(); +} + +/******************************************/ +void WinEDA3D_DrawFrame::Set3DZoneOnOff() +/******************************************/ +{ + if (g_Parm_3D_Visu.m_Draw3DZone) g_Parm_3D_Visu.m_Draw3DZone = FALSE; + else g_Parm_3D_Visu.m_Draw3DZone = TRUE; + NewDisplay(); +} + +/******************************************/ +void WinEDA3D_DrawFrame::Set3DCommentsOnOff() +/******************************************/ +{ + if (g_Parm_3D_Visu.m_Draw3DComments) g_Parm_3D_Visu.m_Draw3DComments = FALSE; + else g_Parm_3D_Visu.m_Draw3DComments = TRUE; + NewDisplay(); +} + +/******************************************/ +void WinEDA3D_DrawFrame::Set3DDrawingsOnOff() +/******************************************/ +{ + if (g_Parm_3D_Visu.m_Draw3DDrawings) g_Parm_3D_Visu.m_Draw3DDrawings = FALSE; + else g_Parm_3D_Visu.m_Draw3DDrawings = TRUE; + NewDisplay(); +} + +/******************************************/ +void WinEDA3D_DrawFrame::Set3DEco1OnOff() +/******************************************/ +{ + if (g_Parm_3D_Visu.m_Draw3DEco1) g_Parm_3D_Visu.m_Draw3DEco1 = FALSE; + else g_Parm_3D_Visu.m_Draw3DEco1 = TRUE; + NewDisplay(); +} + +/******************************************/ +void WinEDA3D_DrawFrame::Set3DEco2OnOff() +/******************************************/ +{ + if (g_Parm_3D_Visu.m_Draw3DEco2) g_Parm_3D_Visu.m_Draw3DEco2 = FALSE; + else g_Parm_3D_Visu.m_Draw3DEco2 = TRUE; + NewDisplay(); +} diff --git a/3d-viewer/3d_toolbar.cpp b/3d-viewer/3d_toolbar.cpp index 8b021a5393..d1b424eac5 100644 --- a/3d-viewer/3d_toolbar.cpp +++ b/3d-viewer/3d_toolbar.cpp @@ -120,6 +120,29 @@ void WinEDA3D_DrawFrame::ReCreateMenuBar() ADD_MENUITEM( referencesMenu, ID_MENU3D_BGCOLOR_SELECTION, _( "Choose background color" ), palette_xpm ); + ADD_MENUITEM( referencesMenu, ID_MENU3D_AXIS_ONOFF, + _( "Axis On/Off" ), axis3d_front_xpm ); + + ADD_MENUITEM( referencesMenu, ID_MENU3D_MODULE_ONOFF, + _( "Module 3D On/Off" ), add_component_xpm ); + + ADD_MENUITEM( referencesMenu, ID_MENU3D_PLACE_ONOFF, + _( "PCB place 3D On/off" ), select_w_layer_xpm ); + + ADD_MENUITEM( referencesMenu, ID_MENU3D_ZONE_ONOFF, + _( "Zone On/Off" ), add_zone_xpm ); + + ADD_MENUITEM( referencesMenu, ID_MENU3D_COMMENTS_ONOFF, + _( "Comments On/Off" ), edit_sheet_xpm ); + + ADD_MENUITEM( referencesMenu, ID_MENU3D_DRAWINGS_ONOFF, + _( "Drawings On/Off" ), options_text_xpm ); + + ADD_MENUITEM( referencesMenu, ID_MENU3D_ECO1_ONOFF, + _( "Eco1 On/Off" ), options_text_xpm ); + + ADD_MENUITEM( referencesMenu, ID_MENU3D_ECO2_ONOFF, + _( "Eco2 On/Off" ), options_text_xpm ); SetMenuBar( menuBar ); } diff --git a/3d-viewer/3d_viewer.h b/3d-viewer/3d_viewer.h index 8d4b370c03..e7de18cc01 100644 --- a/3d-viewer/3d_viewer.h +++ b/3d-viewer/3d_viewer.h @@ -54,6 +54,14 @@ public: float m_Rot[4]; /* man rotation of object */ float m_Zoom; /* field of view in degrees */ S3D_Color m_BgColor; + bool m_Draw3DAxis; + bool m_Draw3DModule; + bool m_Draw3DPlace; + bool m_Draw3DZone; + bool m_Draw3DComments; + bool m_Draw3DDrawings; + bool m_Draw3DEco1; + bool m_Draw3DEco2; wxPoint m_BoardPos; wxSize m_BoardSize; int m_Layers; @@ -107,6 +115,8 @@ public: void Draw3D_Track(TRACK * track); void Draw3D_Via(SEGVIA * via); void Draw3D_DrawSegment(DRAWSEGMENT * segment); + void Draw3D_DrawText(TEXTE_PCB * text); + //int Get3DLayerEnable(int act_layer); DECLARE_EVENT_TABLE() }; @@ -151,6 +161,14 @@ public: void NewDisplay(); void Set3DBgColor(); + void Set3DAxisOnOff(); + void Set3DModuleOnOff(); + void Set3DPlaceOnOff(); + void Set3DZoneOnOff(); + void Set3DCommentsOnOff(); + void Set3DDrawingsOnOff(); + void Set3DEco1OnOff(); + void Set3DEco2OnOff(); DECLARE_EVENT_TABLE() }; diff --git a/common/makefile.include b/common/makefile.include index e93d834b30..2d6c26ad43 100644 --- a/common/makefile.include +++ b/common/makefile.include @@ -15,7 +15,7 @@ OBJECTS= \ common_plotHPGL_functions.o\ hotkeys_basic.o\ drawtxt.o \ - infospgm.o\ + about_kicad.o\ wxwineda.o \ string.o \ gr_basic.o\ diff --git a/include/id.h b/include/id.h index a37e598457..b00b34a439 100644 --- a/include/id.h +++ b/include/id.h @@ -852,6 +852,14 @@ enum main_id { ID_MOVE3D_UP, ID_MOVE3D_DOWN, ID_MENU3D_BGCOLOR_SELECTION, + ID_MENU3D_AXIS_ONOFF, + ID_MENU3D_MODULE_ONOFF, + ID_MENU3D_PLACE_ONOFF, + ID_MENU3D_ZONE_ONOFF, + ID_MENU3D_DRAWINGS_ONOFF, + ID_MENU3D_COMMENTS_ONOFF, + ID_MENU3D_ECO1_ONOFF, + ID_MENU3D_ECO2_ONOFF, ID_3D_UNUSED0, ID_3D_UNUSED1, ID_3D_UNUSED2, diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index fcae32be454f58eb5bcd4af7f7f9b0c7e95e673f..f03f701a3c78d3b0759e2ef40b7c1320eec63d7d 100644 GIT binary patch delta 54405 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�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 jpbg&p1%ldU{lDI7bxQ3gE{^S*jwQ3 delta 52691 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≫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 diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index 91498050b0..d6722b539b 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-08-05 09:14+0100\n" -"PO-Revision-Date: 2008-08-05 09:16+0100\n" +"POT-Creation-Date: 2008-08-12 13:05+0100\n" +"PO-Revision-Date: 2008-08-12 13:05+0100\n" "Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" @@ -341,7 +341,7 @@ msgstr "dimension" #: pcbnew/class_drawsegment.cpp:302 #: pcbnew/class_marker.cpp:133 -#: pcbnew/class_text_mod.cpp:410 +#: pcbnew/class_text_mod.cpp:503 #: pcbnew/class_track.cpp:852 #: pcbnew/class_zone.cpp:608 msgid "Type" @@ -361,11 +361,11 @@ msgid "Segment" msgstr "Segment" #: pcbnew/class_drawsegment.cpp:327 -#: pcbnew/class_module.cpp:1121 -#: pcbnew/class_pad.cpp:983 +#: pcbnew/class_module.cpp:1080 +#: pcbnew/class_pad.cpp:993 #: pcbnew/class_pcb_text.cpp:190 -#: pcbnew/class_text_mod.cpp:420 -#: pcbnew/class_text_mod.cpp:424 +#: pcbnew/class_text_mod.cpp:513 +#: pcbnew/class_text_mod.cpp:517 #: pcbnew/class_track.cpp:909 #: pcbnew/class_zone.cpp:637 msgid "Layer" @@ -374,7 +374,7 @@ msgstr "Couche" #: pcbnew/class_drawsegment.cpp:332 #: pcbnew/class_edge_mod.cpp:297 #: pcbnew/class_pcb_text.cpp:204 -#: pcbnew/class_text_mod.cpp:437 +#: pcbnew/class_text_mod.cpp:530 #: pcbnew/class_track.cpp:932 msgid "Width" msgstr "Epaisseur" @@ -444,9 +444,9 @@ msgid "Seg" msgstr "Seg" #: pcbnew/class_edge_mod.cpp:286 -#: pcbnew/class_module.cpp:1148 -#: pcbnew/class_pad.cpp:893 -#: pcbnew/class_text_mod.cpp:401 +#: pcbnew/class_module.cpp:1107 +#: pcbnew/class_pad.cpp:903 +#: pcbnew/class_text_mod.cpp:494 msgid "Module" msgstr "Module" @@ -466,73 +466,73 @@ msgstr "Couche Seg." msgid "ErrType" msgstr "Type Err" -#: pcbnew/class_module.cpp:1111 +#: pcbnew/class_module.cpp:1070 msgid "Last Change" msgstr "Last Change" -#: pcbnew/class_module.cpp:1117 +#: pcbnew/class_module.cpp:1076 msgid "Netlist path" msgstr "Chemin Netliste " -#: pcbnew/class_module.cpp:1141 +#: pcbnew/class_module.cpp:1100 #: pcbnew/class_track.cpp:893 msgid "Stat" msgstr "Stat" -#: pcbnew/class_module.cpp:1145 -#: pcbnew/class_pad.cpp:1025 +#: pcbnew/class_module.cpp:1104 +#: pcbnew/class_pad.cpp:1035 #: pcbnew/class_pcb_text.cpp:201 -#: pcbnew/class_text_mod.cpp:434 +#: pcbnew/class_text_mod.cpp:527 msgid "Orient" msgstr "Orient" -#: pcbnew/class_module.cpp:1151 +#: pcbnew/class_module.cpp:1110 msgid "3D-Shape" msgstr "Forme 3D" -#: pcbnew/class_module.cpp:1155 +#: pcbnew/class_module.cpp:1114 msgid "Doc: " msgstr "Doc: " -#: pcbnew/class_module.cpp:1156 +#: pcbnew/class_module.cpp:1115 msgid "KeyW: " msgstr "KeyW: " -#: pcbnew/class_pad.cpp:810 +#: pcbnew/class_pad.cpp:820 msgid "Unknown Pad shape" msgstr "Forme pad inconnue" -#: pcbnew/class_pad.cpp:896 +#: pcbnew/class_pad.cpp:906 msgid "RefP" msgstr "RefP" -#: pcbnew/class_pad.cpp:996 +#: pcbnew/class_pad.cpp:1006 #: pcbnew/class_pcb_text.cpp:207 -#: pcbnew/class_text_mod.cpp:440 +#: pcbnew/class_text_mod.cpp:533 msgid "H Size" msgstr "Taille H" -#: pcbnew/class_pad.cpp:1000 +#: pcbnew/class_pad.cpp:1010 #: pcbnew/class_pcb_text.cpp:210 -#: pcbnew/class_text_mod.cpp:443 +#: pcbnew/class_text_mod.cpp:536 msgid "V Size" msgstr "Taille V" -#: pcbnew/class_pad.cpp:1006 +#: pcbnew/class_pad.cpp:1016 #: pcbnew/class_track.cpp:924 #: pcbnew/class_track.cpp:929 msgid "Drill" msgstr "Perçage" -#: pcbnew/class_pad.cpp:1014 +#: pcbnew/class_pad.cpp:1024 msgid "Drill X / Y" msgstr "Perçage X/Y" -#: pcbnew/class_pad.cpp:1029 +#: pcbnew/class_pad.cpp:1039 msgid "X Pos" msgstr "X Pos" -#: pcbnew/class_pad.cpp:1033 +#: pcbnew/class_pad.cpp:1043 msgid "Y pos" msgstr "Y pos" @@ -545,25 +545,25 @@ msgid "PCB Text" msgstr "Texte Pcb" #: pcbnew/class_pcb_text.cpp:194 -#: pcbnew/class_text_mod.cpp:431 +#: pcbnew/class_text_mod.cpp:524 msgid "Mirror" msgstr "Miroir" #: pcbnew/class_pcb_text.cpp:196 -#: pcbnew/class_text_mod.cpp:414 +#: pcbnew/class_text_mod.cpp:506 msgid "No" msgstr "Non" #: pcbnew/class_pcb_text.cpp:198 -#: pcbnew/class_text_mod.cpp:416 +#: pcbnew/class_text_mod.cpp:508 msgid "Yes" msgstr "Oui" -#: pcbnew/class_text_mod.cpp:396 +#: pcbnew/class_text_mod.cpp:488 msgid "Ref." msgstr "Ref." -#: pcbnew/class_text_mod.cpp:412 +#: pcbnew/class_text_mod.cpp:509 msgid "Display" msgstr "Affichage" @@ -1225,158 +1225,10 @@ msgid "The URL of the FreeRouting.net website" msgstr "L' URL du site FreeRouting.net" #: pcbnew/dialog_freeroute_exchange.cpp:222 -#: pcbnew/dialog_gendrill.cpp:282 #: pcbnew/dialog_netlist.cpp:253 msgid "&Close" msgstr "&Fermer" -#: pcbnew/dialog_gendrill.cpp:164 -msgid "Millimeters" -msgstr "Millimetres" - -#: pcbnew/dialog_gendrill.cpp:165 -#: pcbnew/dialog_general_options.cpp:299 -msgid "Inches" -msgstr "Pouces" - -#: pcbnew/dialog_gendrill.cpp:166 -msgid "Drill Units:" -msgstr "UnitĂ©s perçage:" - -#: pcbnew/dialog_gendrill.cpp:171 -msgid "decimal format" -msgstr "Format dĂ©cimal" - -#: pcbnew/dialog_gendrill.cpp:172 -msgid "suppress leading zeros" -msgstr "Suppression zeros de tĂȘte" - -#: pcbnew/dialog_gendrill.cpp:173 -msgid "suppress trailing zeros" -msgstr "Suppression zeros de fin" - -#: pcbnew/dialog_gendrill.cpp:174 -msgid "keep zeros" -msgstr "Garder les zĂ©ros" - -#: pcbnew/dialog_gendrill.cpp:175 -msgid "Zeros Format" -msgstr "Format des zĂ©ros" - -#: pcbnew/dialog_gendrill.cpp:180 -msgid "2:3" -msgstr "2:3" - -#: pcbnew/dialog_gendrill.cpp:181 -msgid "2:4" -msgstr "2:4" - -#: pcbnew/dialog_gendrill.cpp:182 -msgid "Precision" -msgstr "PrĂ©cision" - -#: pcbnew/dialog_gendrill.cpp:187 -msgid "absolute" -msgstr "Absolu" - -#: pcbnew/dialog_gendrill.cpp:188 -msgid "auxiliary axis" -msgstr "Axe Auxiliaire" - -#: pcbnew/dialog_gendrill.cpp:189 -msgid "Drill Origin:" -msgstr "Origine des coord de percage:" - -#: pcbnew/dialog_gendrill.cpp:197 -#: pcbnew/dialog_gendrill.cpp:205 -msgid "None" -msgstr "Aucun" - -#: pcbnew/dialog_gendrill.cpp:198 -msgid "drill sheet (HPGL)" -msgstr "Plan de perçage (HPGL)" - -#: pcbnew/dialog_gendrill.cpp:199 -msgid "drill sheet (PostScript)" -msgstr "Plan de perçage (Postscript)" - -#: pcbnew/dialog_gendrill.cpp:200 -msgid "Drill Sheet:" -msgstr "Plan de perçage:" - -#: pcbnew/dialog_gendrill.cpp:206 -msgid "Drill report" -msgstr "Rapport de perçage" - -#: pcbnew/dialog_gendrill.cpp:207 -msgid "Drill Report:" -msgstr "Rapport de perçage:" - -#: pcbnew/dialog_gendrill.cpp:211 -msgid "HPGL plotter Options:" -msgstr "Options de TracĂ© HPGL:" - -#: pcbnew/dialog_gendrill.cpp:215 -msgid "Speed (cm/s)" -msgstr "Vitesse plume ( cm/s )" - -#: pcbnew/dialog_gendrill.cpp:221 -msgid "Pen Number" -msgstr "NumĂ©ro de plume" - -#: pcbnew/dialog_gendrill.cpp:227 -#: pcbnew/dialog_general_options.cpp:376 -msgid "Options:" -msgstr "Options :" - -#: pcbnew/dialog_gendrill.cpp:231 -msgid "mirror y axis" -msgstr "Miroir sur axe Y" - -#: pcbnew/dialog_gendrill.cpp:235 -msgid "minimal header" -msgstr "EntĂȘte minimal" - -#: pcbnew/dialog_gendrill.cpp:242 -msgid "Info:" -msgstr "Infos:" - -#: pcbnew/dialog_gendrill.cpp:246 -msgid "Default Vias Drill:" -msgstr "Perçage vias par DĂ©faut" - -#: pcbnew/dialog_gendrill.cpp:250 -msgid "Via Drill Value" -msgstr "Perçage des Vias" - -#: pcbnew/dialog_gendrill.cpp:253 -msgid "Micro Vias Drill:" -msgstr "Perçage Micro Via:" - -#: pcbnew/dialog_gendrill.cpp:257 -msgid "Micro Via Drill Value" -msgstr "Valeur Perçage Micro Via" - -#: pcbnew/dialog_gendrill.cpp:260 -msgid "Holes Count:" -msgstr "Nb Trous" - -#: pcbnew/dialog_gendrill.cpp:264 -msgid "Pads:" -msgstr "Pastilles:" - -#: pcbnew/dialog_gendrill.cpp:267 -msgid "Through Vias:" -msgstr "Via Traversantes:" - -#: pcbnew/dialog_gendrill.cpp:270 -msgid "Micro Vias:" -msgstr "Micro Vias:" - -#: pcbnew/dialog_gendrill.cpp:273 -msgid "Buried Vias:" -msgstr "Via EnterrĂ©es:" - #: pcbnew/dialog_general_options.cpp:288 msgid "No Display" msgstr "Pas d'affichage" @@ -1385,6 +1237,10 @@ msgstr "Pas d'affichage" msgid "Display Polar Coord" msgstr "Affichage coord Polaires" +#: pcbnew/dialog_general_options.cpp:299 +msgid "Inches" +msgstr "Pouces" + #: pcbnew/dialog_general_options.cpp:300 msgid "millimeters" msgstr "millimetres" @@ -1417,6 +1273,10 @@ msgstr "Liens max:" msgid "Auto Save (minuts):" msgstr "Sauveg. Auto (min)" +#: pcbnew/dialog_general_options.cpp:376 +msgid "Options:" +msgstr "Options :" + #: pcbnew/dialog_general_options.cpp:385 msgid "Drc ON" msgstr "Drc ACTIVE" @@ -1786,6 +1646,10 @@ msgstr "Via enterrĂ©e ou Aveugle" msgid "Default Via Type" msgstr "Via par DĂ©faut" +#: pcbnew/dialog_track_options.cpp:223 +msgid "Micro Vias:" +msgstr "Micro Vias:" + #: pcbnew/dialog_track_options.cpp:232 msgid "Micro Via Size" msgstr "Diametre Micro Via" @@ -2081,14 +1945,6 @@ msgid "GenCAD file:" msgstr "Fichier GenCAD:" #: pcbnew/export_gencad.cpp:83 -#: pcbnew/files.cpp:352 -#: pcbnew/gen_modules_placefile.cpp:128 -#: pcbnew/gen_modules_placefile.cpp:139 -#: pcbnew/gen_modules_placefile.cpp:292 -#: pcbnew/librairi.cpp:308 -#: pcbnew/librairi.cpp:454 -#: pcbnew/librairi.cpp:604 -#: pcbnew/librairi.cpp:808 msgid "Unable to create " msgstr "Impossible de crĂ©er " @@ -2194,6 +2050,14 @@ msgstr "Fichier de percage" msgid "Unable to create file " msgstr "Impossible de crĂ©er le fichier " +#: pcbnew/gendrill.cpp:378 +msgid "2:3" +msgstr "2:3" + +#: pcbnew/gendrill.cpp:379 +msgid "2:4" +msgstr "2:4" + #: pcbnew/gendrill.cpp:384 msgid "3:2" msgstr "3:2" @@ -2902,22 +2766,27 @@ msgid "Place anchor" msgstr "Place Ancre" #: pcbnew/modedit_onclick.cpp:196 +#: pcbnew/onrightclick.cpp:127 msgid "End Tool" msgstr "Fin Outil" #: pcbnew/modedit_onclick.cpp:206 +#: pcbnew/onrightclick.cpp:445 msgid "Cancel Block" msgstr "Annuler Bloc" #: pcbnew/modedit_onclick.cpp:208 +#: pcbnew/onrightclick.cpp:447 msgid "Zoom Block (drag middle mouse)" msgstr "Zoom Bloc (drag bouton du milieu souris)" #: pcbnew/modedit_onclick.cpp:211 +#: pcbnew/onrightclick.cpp:450 msgid "Place Block" msgstr "Place Bloc" #: pcbnew/modedit_onclick.cpp:213 +#: pcbnew/onrightclick.cpp:452 msgid "Copy Block (shift + drag mouse)" msgstr "Copie Bloc (shift + drag mouse)" @@ -2926,14 +2795,18 @@ msgid "Mirror Block (alt + drag mouse)" msgstr "Bloc Miroir (alt + drag mouse)" #: pcbnew/modedit_onclick.cpp:217 +#: pcbnew/onrightclick.cpp:456 msgid "Rotate Block (ctrl + drag mouse)" msgstr "Rotation Bloc (ctrl + drag mouse)" #: pcbnew/modedit_onclick.cpp:219 +#: pcbnew/onrightclick.cpp:458 msgid "Delete Block (shift+ctrl + drag mouse)" msgstr "Effacement Bloc (shift+ctrl + drag mouse)" #: pcbnew/modedit_onclick.cpp:241 +#: pcbnew/onrightclick.cpp:754 +#: pcbnew/onrightclick.cpp:858 msgid "Rotate" msgstr "Rotation" @@ -2958,14 +2831,17 @@ msgid "Move Pad" msgstr "DĂ©place Pad" #: pcbnew/modedit_onclick.cpp:263 +#: pcbnew/onrightclick.cpp:793 msgid "Edit Pad" msgstr "Edit Pad" #: pcbnew/modedit_onclick.cpp:265 +#: pcbnew/onrightclick.cpp:797 msgid "New Pad Settings" msgstr "Nouvelles Caract. Pads" #: pcbnew/modedit_onclick.cpp:267 +#: pcbnew/onrightclick.cpp:801 msgid "Export Pad Settings" msgstr "Exporte Caract. Pads" @@ -2974,6 +2850,7 @@ msgid "delete Pad" msgstr "Supprimer Pad" #: pcbnew/modedit_onclick.cpp:274 +#: pcbnew/onrightclick.cpp:808 msgid "Global Pad Settings" msgstr "Edition Globale des pads" @@ -3006,6 +2883,9 @@ msgid "Place edge" msgstr "Place contour" #: pcbnew/modedit_onclick.cpp:306 +#: pcbnew/onrightclick.cpp:722 +#: pcbnew/onrightclick.cpp:756 +#: pcbnew/onrightclick.cpp:860 msgid "Edit" msgstr "Editer" @@ -3041,11 +2921,12 @@ msgstr "Editeur de Module: module modifiĂ©! Continuer ?" msgid "Footprint name:" msgstr "Nom Module: " -#: pcbnew/modules.cpp:291 +#: pcbnew/modules.cpp:305 +#: pcbnew/onrightclick.cpp:728 msgid "Delete Module" msgstr "Supprimer Module" -#: pcbnew/modules.cpp:292 +#: pcbnew/modules.cpp:306 msgid "Value " msgstr "Valeur " @@ -3790,16 +3671,16 @@ msgstr "Mode d'affichage Contraste normal" msgid "Hight Contrast Mode Display" msgstr "Mode d'affichage Haut Contraste" -#: pcbnew/pcbnew.cpp:42 +#: pcbnew/pcbnew.cpp:43 msgid "Pcbnew is already running, Continue?" msgstr "Pcbnew est est cours d'exĂ©cution. Continuer ?" -#: pcbnew/pcbplot.cpp:146 +#: pcbnew/pcbplot.cpp:147 #: pcbnew/pcbplot.cpp:272 msgid "Plot" msgstr "Tracer" -#: pcbnew/pcbplot.cpp:190 +#: pcbnew/pcbplot.cpp:191 msgid "Plot Format" msgstr "Format de tracĂ©" @@ -4026,33 +3907,6 @@ msgstr "Ne peut pas rĂ©ouvrir fichier <%s>" msgid "Tracks" msgstr "Pistes" -#: pcbnew/plot_rtn.cpp:224 -#, c-format -msgid "" -"Your BOARD has a bad layer number of %u for module\n" -" %s's \"reference\" text." -msgstr "" -"Votre PCB a un mauvais numero de couche %u pour le module\n" -" %s's \"reference\"." - -#: pcbnew/plot_rtn.cpp:244 -#, c-format -msgid "" -"Your BOARD has a bad layer number of %u for module\n" -" %s's \"value\" text." -msgstr "" -"Votre PCB a un mauvais numero de couche %u pour le module\n" -" %s's \"valeur\"." - -#: pcbnew/plot_rtn.cpp:290 -#, c-format -msgid "" -"Your BOARD has a bad layer number of %u for module\n" -" %s's \"module text\" text of %s." -msgstr "" -"Votre PCB a un mauvais numero de couche %u pour le module\n" -" %s's \"texte module\" de %s." - #: pcbnew/router.cpp:60 msgid "Unable to create temporary file " msgstr "Impossible de crĂ©er le fichier temporaire " @@ -4267,6 +4121,7 @@ msgid "Delete part in current library" msgstr "Supprimer composant en librairie de travail" #: pcbnew/tool_modedit.cpp:61 +#: pcbnew/xchgmod.cpp:156 msgid "New Module" msgstr "Nouveau Module" @@ -4840,6 +4695,182 @@ msgstr "couche E.C.O.2" msgid "Draft layer" msgstr "Couche dessin" +#: pcbnew/plot_rtn.cpp:224 +#, c-format +msgid "" +"Your BOARD has a bad layer number of %u for module\n" +" %s's \"reference\" text." +msgstr "" +"Votre PCB a un mauvais numero de couche %u pour le module\n" +" %s's \"reference\"." + +#: pcbnew/plot_rtn.cpp:244 +#, c-format +msgid "" +"Your BOARD has a bad layer number of %u for module\n" +" %s's \"value\" text." +msgstr "" +"Votre PCB a un mauvais numero de couche %u pour le module\n" +" %s's \"valeur\"." + +#: pcbnew/plot_rtn.cpp:290 +#, c-format +msgid "" +"Your BOARD has a bad layer number of %u for module\n" +" %s's \"module text\" text of %s." +msgstr "" +"Votre PCB a un mauvais numero de couche %u pour le module\n" +" %s's \"texte module\" de %s." + +#: pcbnew/dialog_gendrill.cpp:166 +msgid "Millimeters" +msgstr "Millimetres" + +#: pcbnew/dialog_gendrill.cpp:168 +msgid "Drill Units:" +msgstr "UnitĂ©s perçage:" + +#: pcbnew/dialog_gendrill.cpp:173 +msgid "decimal format" +msgstr "Format dĂ©cimal" + +#: pcbnew/dialog_gendrill.cpp:174 +msgid "suppress leading zeros" +msgstr "Suppression zeros de tĂȘte" + +#: pcbnew/dialog_gendrill.cpp:175 +msgid "suppress trailing zeros" +msgstr "Suppression zeros de fin" + +#: pcbnew/dialog_gendrill.cpp:176 +msgid "keep zeros" +msgstr "Garder les zĂ©ros" + +#: pcbnew/dialog_gendrill.cpp:177 +msgid "Zeros Format" +msgstr "Format des zĂ©ros" + +#: pcbnew/dialog_gendrill.cpp:180 +msgid "Choose EXCELLON numbers notation" +msgstr "Choisir la notation des nombres en format EXCELLON" + +#: pcbnew/dialog_gendrill.cpp:186 +msgid "Precision" +msgstr "PrĂ©cision" + +#: pcbnew/dialog_gendrill.cpp:189 +msgid "Choose EXCELLON numbers precision" +msgstr "Choisir la prĂ©cision des nombres en format EXCELLON" + +#: pcbnew/dialog_gendrill.cpp:193 +msgid "absolute" +msgstr "Absolu" + +#: pcbnew/dialog_gendrill.cpp:194 +msgid "auxiliary axis" +msgstr "Axe Auxiliaire" + +#: pcbnew/dialog_gendrill.cpp:195 +msgid "Drill Origin:" +msgstr "Origine des coord de percage:" + +#: pcbnew/dialog_gendrill.cpp:198 +msgid "Choose the coordinate origin: absolute or relative to the auxiliray axis" +msgstr "Choisir l'origine des coordonnĂ©es: absolue ou relative Ă  l'axe auxiliaire" + +#: pcbnew/dialog_gendrill.cpp:205 +#: pcbnew/dialog_gendrill.cpp:215 +msgid "None" +msgstr "Aucun" + +#: pcbnew/dialog_gendrill.cpp:206 +msgid "drill sheet (HPGL)" +msgstr "Plan de perçage (HPGL)" + +#: pcbnew/dialog_gendrill.cpp:207 +msgid "drill sheet (PostScript)" +msgstr "Plan de perçage (Postscript)" + +#: pcbnew/dialog_gendrill.cpp:208 +msgid "Drill Sheet:" +msgstr "Plan de perçage:" + +#: pcbnew/dialog_gendrill.cpp:211 +msgid "Creates a drill map in PS or HPGL format" +msgstr "CrĂ©er un plan de perçage en format PS ou HPGL" + +#: pcbnew/dialog_gendrill.cpp:216 +msgid "Drill report" +msgstr "Rapport de perçage" + +#: pcbnew/dialog_gendrill.cpp:217 +msgid "Drill Report:" +msgstr "Rapport de perçage:" + +#: pcbnew/dialog_gendrill.cpp:220 +msgid "Creates a plain text report" +msgstr "CrĂ©er un fichier rapport ascii" + +#: pcbnew/dialog_gendrill.cpp:223 +msgid "HPGL plotter Options:" +msgstr "Options de TracĂ© HPGL:" + +#: pcbnew/dialog_gendrill.cpp:227 +msgid "Speed (cm/s)" +msgstr "Vitesse plume ( cm/s )" + +#: pcbnew/dialog_gendrill.cpp:233 +msgid "Pen Number" +msgstr "NumĂ©ro de plume" + +#: pcbnew/dialog_gendrill.cpp:243 +msgid "mirror y axis" +msgstr "Miroir sur axe Y" + +#: pcbnew/dialog_gendrill.cpp:247 +msgid "minimal header" +msgstr "EntĂȘte minimal" + +#: pcbnew/dialog_gendrill.cpp:250 +msgid "If checked, the EXCELLON header is minimal" +msgstr "Si activĂ©, l'entĂȘte di fichier EXELLON est minimale" + +#: pcbnew/dialog_gendrill.cpp:256 +msgid "Info:" +msgstr "Infos:" + +#: pcbnew/dialog_gendrill.cpp:260 +msgid "Default Vias Drill:" +msgstr "Perçage vias par DĂ©faut" + +#: pcbnew/dialog_gendrill.cpp:264 +msgid "Via Drill Value" +msgstr "Perçage des Vias" + +#: pcbnew/dialog_gendrill.cpp:267 +msgid "Micro Vias Drill:" +msgstr "Perçage Micro Via:" + +#: pcbnew/dialog_gendrill.cpp:271 +msgid "Micro Via Drill Value" +msgstr "Valeur Perçage Micro Via" + +#: pcbnew/dialog_gendrill.cpp:274 +msgid "Holes Count:" +msgstr "Nb Trous" + +#: pcbnew/dialog_gendrill.cpp:278 +msgid "Pads:" +msgstr "Pastilles:" + +#: pcbnew/dialog_gendrill.cpp:281 +msgid "Through Vias:" +msgstr "Via Traversantes:" + +#: pcbnew/dialog_gendrill.cpp:287 +msgid "Buried Vias:" +msgstr "Via EnterrĂ©es:" + #: eeschema/affiche.cpp:22 msgid "Name" msgstr "Nom" @@ -6987,6 +7018,7 @@ msgstr "&Placer" #: eeschema/netform.cpp:60 #: eeschema/netform.cpp:278 +#: eeschema/save_schemas.cpp:86 msgid "Failed to create file " msgstr "Impossible de crĂ©er le fichier " @@ -7303,11 +7335,13 @@ msgstr "Supprimer Fil" #: eeschema/onrightclick.cpp:513 #: eeschema/onrightclick.cpp:545 +#: eeschema/schedit.cpp:201 msgid "Add Junction" msgstr "Ajout jonctions" #: eeschema/onrightclick.cpp:514 #: eeschema/onrightclick.cpp:546 +#: eeschema/schedit.cpp:205 msgid "Add Label" msgstr "Ajout Label" @@ -7392,216 +7426,68 @@ msgstr "Miroir Bloc ||" msgid "Copy to Clipboard" msgstr "Copie dans Presse papier" -#: eeschema/pinedit-dialog.cpp:234 -msgid "Pin Name :" -msgstr "Nom de la pin :" - -#: eeschema/pinedit-dialog.cpp:240 -msgid "Pin Num :" -msgstr "Num de la pin :" - -#: eeschema/pinedit-dialog.cpp:248 -msgid " Pin Options :" -msgstr "Options pin :" - -#: eeschema/pinedit-dialog.cpp:253 -msgid "Pin lenght :" -msgstr "Longueur pin:" - -#: eeschema/pinedit-dialog.cpp:267 -msgid "No Draw" -msgstr "Invisible" - -#: eeschema/pinedit-dialog.cpp:293 -msgid "Pin Orient:" -msgstr "Pin Orient:" - -#: eeschema/pinedit-dialog.cpp:317 #: eeschema/pinedit.cpp:22 msgid "line" msgstr "Ligne" -#: eeschema/pinedit-dialog.cpp:318 #: eeschema/pinedit.cpp:22 msgid "invert" msgstr "invert" -#: eeschema/pinedit-dialog.cpp:319 #: eeschema/pinedit.cpp:22 msgid "clock" msgstr "clock" -#: eeschema/pinedit-dialog.cpp:320 #: eeschema/pinedit.cpp:22 msgid "clock inv" msgstr "clock inv" -#: eeschema/pinedit-dialog.cpp:321 #: eeschema/pinedit.cpp:23 msgid "low in" msgstr "low in" -#: eeschema/pinedit-dialog.cpp:322 #: eeschema/pinedit.cpp:23 msgid "low clock" msgstr "low clock" -#: eeschema/pinedit-dialog.cpp:323 #: eeschema/pinedit.cpp:23 msgid "low out" msgstr "low out" -#: eeschema/pinedit-dialog.cpp:324 -msgid "Pin Shape:" -msgstr "Forme Pin:" - -#: eeschema/pinedit-dialog.cpp:333 -msgid "3 States" -msgstr "3 Etats" - -#: eeschema/pinedit-dialog.cpp:335 -msgid "Unspecified" -msgstr "Non specifiĂ©" - -#: eeschema/pinedit-dialog.cpp:336 -msgid "Power In" -msgstr "Power In" - -#: eeschema/pinedit-dialog.cpp:337 -msgid "Power Out" -msgstr "Power Out" - -#: eeschema/pinedit-dialog.cpp:338 -msgid "Open coll" -msgstr "Coll ouvert" - -#: eeschema/pinedit-dialog.cpp:339 -msgid "Open emit" -msgstr "Emetteur ouv." - -#: eeschema/pinedit-dialog.cpp:340 -msgid "Electrical Type:" -msgstr "Type Ă©lectrique:" - -#: eeschema/pinedit.cpp:206 +#: eeschema/pinedit.cpp:216 msgid "Occupied by other pin. Continue?" msgstr "OccupĂ© une autre pin, Continuer ?" -#: eeschema/pinedit.cpp:997 +#: eeschema/pinedit.cpp:1007 #, c-format msgid "Duplicate Pin %4.4s (Pin %s loc %d, %d, and Pin %s loc %d, %d)" msgstr "Pin dupliquĂ©e %4.4s (Pin %s loc %d, %d, etPin %s loc %d, %d)" -#: eeschema/pinedit.cpp:1003 +#: eeschema/pinedit.cpp:1013 #, c-format msgid " Part %d" msgstr "Composant %d" -#: eeschema/pinedit.cpp:1009 +#: eeschema/pinedit.cpp:1019 msgid " Convert" msgstr " Convert" -#: eeschema/pinedit.cpp:1011 +#: eeschema/pinedit.cpp:1021 msgid " Normal" msgstr " Normal" -#: eeschema/plothpgl.cpp:222 -msgid "Sheet Size" -msgstr "Dim. feuille" - -#: eeschema/plothpgl.cpp:223 #: eeschema/plotps.cpp:196 msgid "Page Size A4" msgstr "Feuille A4" -#: eeschema/plothpgl.cpp:224 -msgid "Page Size A3" -msgstr "Feuille A3" - -#: eeschema/plothpgl.cpp:225 -msgid "Page Size A2" -msgstr "Feuille A2" - -#: eeschema/plothpgl.cpp:226 -msgid "Page Size A1" -msgstr "Feuille A1" - -#: eeschema/plothpgl.cpp:227 -msgid "Page Size A0" -msgstr "Feuille A0" - -#: eeschema/plothpgl.cpp:228 #: eeschema/plotps.cpp:197 msgid "Page Size A" msgstr "Feuille A" -#: eeschema/plothpgl.cpp:229 -msgid "Page Size B" -msgstr "Feuille B" - -#: eeschema/plothpgl.cpp:230 -msgid "Page Size C" -msgstr "Feuille C" - -#: eeschema/plothpgl.cpp:231 -msgid "Page Size D" -msgstr "Feuille D" - -#: eeschema/plothpgl.cpp:232 -msgid "Page Size E" -msgstr "Feuille E" - -#: eeschema/plothpgl.cpp:233 #: eeschema/plotps.cpp:199 msgid "Plot page size:" msgstr "Format de la feuille:" -#: eeschema/plothpgl.cpp:240 -msgid "Pen control:" -msgstr "Controle plume" - -#: eeschema/plothpgl.cpp:244 -msgid "Pen Width ( mils )" -msgstr "Epaiss plume (mils)" - -#: eeschema/plothpgl.cpp:250 -msgid "Pen Speed ( cm/s )" -msgstr "Vitesse plume ( cm/s )" - -#: eeschema/plothpgl.cpp:262 -msgid "Page offset:" -msgstr "Offset page:" - -#: eeschema/plothpgl.cpp:266 -msgid "Plot Offset X" -msgstr "Offset de tracĂ© X" - -#: eeschema/plothpgl.cpp:272 -msgid "Plot Offset Y" -msgstr "Offset de tracĂ© Y" - -#: eeschema/plothpgl.cpp:283 -#: eeschema/plotps.cpp:242 -msgid "&Plot CURRENT" -msgstr "&Imprimer courant" - -#: eeschema/plothpgl.cpp:287 -#: eeschema/plotps.cpp:249 -msgid "Plot A&LL" -msgstr "&Tout tracer" - -#: eeschema/plothpgl.cpp:298 -msgid "&Accept Offset" -msgstr "&Accepter Offset" - -#: eeschema/plothpgl.cpp:580 -msgid "** Plot End **\n" -msgstr "** Fin de TracĂ© **\n" - -#: eeschema/plothpgl.cpp:605 -msgid "Plot " -msgstr "Trace " - #: eeschema/plotps.cpp:209 msgid "Plot Options:" msgstr "Options de tracĂ©:" @@ -7622,6 +7508,14 @@ msgstr "TracĂ© et Couleurs:" msgid "Print Sheet Ref" msgstr "Imprimer cartouche" +#: eeschema/plotps.cpp:242 +msgid "&Plot CURRENT" +msgstr "&Imprimer courant" + +#: eeschema/plotps.cpp:249 +msgid "Plot A&LL" +msgstr "&Tout tracer" + #: eeschema/plotps.cpp:268 msgid "Messages :" msgstr "Messages :" @@ -8033,6 +7927,229 @@ msgstr "Cmp Courant: <%s>" msgid "Library browser" msgstr "Visualisateur des librairies" +#: eeschema/plothpgl.cpp:222 +msgid "Sheet Size" +msgstr "Dim. feuille" + +#: eeschema/plothpgl.cpp:224 +msgid "Page Size A3" +msgstr "Feuille A3" + +#: eeschema/plothpgl.cpp:225 +msgid "Page Size A2" +msgstr "Feuille A2" + +#: eeschema/plothpgl.cpp:226 +msgid "Page Size A1" +msgstr "Feuille A1" + +#: eeschema/plothpgl.cpp:227 +msgid "Page Size A0" +msgstr "Feuille A0" + +#: eeschema/plothpgl.cpp:229 +msgid "Page Size B" +msgstr "Feuille B" + +#: eeschema/plothpgl.cpp:230 +msgid "Page Size C" +msgstr "Feuille C" + +#: eeschema/plothpgl.cpp:231 +msgid "Page Size D" +msgstr "Feuille D" + +#: eeschema/plothpgl.cpp:232 +msgid "Page Size E" +msgstr "Feuille E" + +#: eeschema/plothpgl.cpp:240 +msgid "Pen control:" +msgstr "Controle plume" + +#: eeschema/plothpgl.cpp:244 +msgid "Pen Width ( mils )" +msgstr "Epaiss plume (mils)" + +#: eeschema/plothpgl.cpp:250 +msgid "Pen Speed ( cm/s )" +msgstr "Vitesse plume ( cm/s )" + +#: eeschema/plothpgl.cpp:262 +msgid "Page offset:" +msgstr "Offset page:" + +#: eeschema/plothpgl.cpp:266 +msgid "Plot Offset X" +msgstr "Offset de tracĂ© X" + +#: eeschema/plothpgl.cpp:272 +msgid "Plot Offset Y" +msgstr "Offset de tracĂ© Y" + +#: eeschema/plothpgl.cpp:298 +msgid "&Accept Offset" +msgstr "&Accepter Offset" + +#: eeschema/plothpgl.cpp:580 +msgid "** Plot End **\n" +msgstr "** Fin de TracĂ© **\n" + +#: eeschema/plothpgl.cpp:605 +msgid "Plot " +msgstr "Trace " + +#: eeschema/pinedit-dialog.cpp:160 +msgid "Pin Name :" +msgstr "Nom de la pin :" + +#: eeschema/pinedit-dialog.cpp:166 +msgid "Pin Num :" +msgstr "Num de la pin :" + +#: eeschema/pinedit-dialog.cpp:174 +msgid " Pin Options :" +msgstr "Options pin :" + +#: eeschema/pinedit-dialog.cpp:190 +msgid "Pin Lenght" +msgstr "Longueur Pin" + +#: eeschema/pinedit-dialog.cpp:201 +msgid "No Draw" +msgstr "Invisible" + +#: eeschema/pinedit-dialog.cpp:227 +msgid "Pin Orient:" +msgstr "Pin Orient:" + +#: eeschema/pinedit-dialog.cpp:258 +msgid "Pin Shape:" +msgstr "Forme Pin:" + +#: eeschema/pinedit-dialog.cpp:267 +msgid "3 States" +msgstr "3 Etats" + +#: eeschema/pinedit-dialog.cpp:269 +msgid "Unspecified" +msgstr "Non specifiĂ©" + +#: eeschema/pinedit-dialog.cpp:270 +msgid "Power In" +msgstr "Power In" + +#: eeschema/pinedit-dialog.cpp:271 +msgid "Power Out" +msgstr "Power Out" + +#: eeschema/pinedit-dialog.cpp:272 +msgid "Open coll" +msgstr "Coll ouvert" + +#: eeschema/pinedit-dialog.cpp:273 +msgid "Open emit" +msgstr "Emetteur ouv." + +#: eeschema/pinedit-dialog.cpp:274 +msgid "Electrical Type:" +msgstr "Type Ă©lectrique:" + +#: eeschema/component_wizard/ki_component_setup.cpp:141 +msgid "Quick KICAD Library Component Builder" +msgstr "" + +#: eeschema/component_wizard/ki_component_setup.cpp:145 +msgid "Component Features" +msgstr "PropriĂ©tĂ©s du Composant" + +#: eeschema/component_wizard/ki_component_setup.cpp:153 +msgid "Component Name" +msgstr "Nom du Composant!" + +#: eeschema/component_wizard/ki_component_setup.cpp:156 +#, fuzzy +msgid "MyComponent" +msgstr "Composant" + +#: eeschema/component_wizard/ki_component_setup.cpp:159 +msgid " Symbol Text Size " +msgstr "Taille du Texte" + +#: eeschema/component_wizard/ki_component_setup.cpp:162 +#: eeschema/component_wizard/ki_component_setup.cpp:212 +#: eeschema/component_wizard/ki_component_setup.cpp:235 +msgid "50" +msgstr "50" + +#: eeschema/component_wizard/ki_component_setup.cpp:165 +msgid "Parts Count" +msgstr "Nb Parts" + +#: eeschema/component_wizard/ki_component_setup.cpp:168 +msgid "1" +msgstr "1" + +#: eeschema/component_wizard/ki_component_setup.cpp:171 +msgid "Pin Distance" +msgstr "Distance entre Pins" + +#: eeschema/component_wizard/ki_component_setup.cpp:174 +msgid "100" +msgstr "100" + +#: eeschema/component_wizard/ki_component_setup.cpp:177 +msgid "Pin Features" +msgstr "PropriĂ©tĂ©s des Pins" + +#: eeschema/component_wizard/ki_component_setup.cpp:185 +msgid "Default Pin Format" +msgstr "Format des Pins par DĂ©faut" + +#: eeschema/component_wizard/ki_component_setup.cpp:209 +msgid "Pin Name Text Size" +msgstr "Taille du Texte Nom de Pin" + +#: eeschema/component_wizard/ki_component_setup.cpp:215 +msgid "Default Pin Type" +msgstr "Type Pin par DĂ©faut" + +#: eeschema/component_wizard/ki_component_setup.cpp:221 +msgid "BiDir" +msgstr "Bidi" + +#: eeschema/component_wizard/ki_component_setup.cpp:222 +msgid "Tri-State" +msgstr "3 Ă©tats" + +#: eeschema/component_wizard/ki_component_setup.cpp:225 +msgid "Power Input" +msgstr "Power Input" + +#: eeschema/component_wizard/ki_component_setup.cpp:226 +msgid "Power Output" +msgstr "Power Output" + +#: eeschema/component_wizard/ki_component_setup.cpp:227 +msgid "Open Colletor" +msgstr "Coll Ouvert" + +#: eeschema/component_wizard/ki_component_setup.cpp:228 +msgid "Open Emitter" +msgstr "Emetteur Ouv." + +#: eeschema/component_wizard/ki_component_setup.cpp:232 +msgid " Pin Number Text Size" +msgstr "Taille Texte NumĂ©ro de Pin" + +#: eeschema/component_wizard/ki_component_setup.cpp:241 +msgid "Pin Count" +msgstr "Nombre de Pins" + +#: eeschema/component_wizard/ki_component_setup.cpp:244 +msgid "Component Style" +msgstr "Style du Composant" + #: cvpcb/autosel.cpp:68 #, c-format msgid "Library: <%s> not found" @@ -9884,10 +10001,6 @@ msgstr "PropriĂ©tĂ©s du Texte sur Module" msgid "dialog_freeroute_exchange" msgstr "dialog_freeroute_exchange" -#: pcbnew/dialog_gendrill.h:50 -msgid "WinEDA_DrillFrame" -msgstr "WinEDA_DrillFrame" - #: pcbnew/dialog_general_options.h:60 msgid "General Options" msgstr "Options gĂ©nĂ©rales" @@ -10011,6 +10124,10 @@ msgstr "Afficher Modules Cu" msgid "Pad properties" msgstr "PropriĂ©tĂ©s des Pads" +#: pcbnew/dialog_gendrill.h:50 +msgid "Drill Files Generation" +msgstr "GĂ©nĂ©ration Fichiers de Perçagee" + #: eeschema/annotate_dialog.h:52 msgid "EESchema Annotation" msgstr "Annotation des composants" @@ -10131,10 +10248,6 @@ msgstr "Marqueur ERC" msgid "Other" msgstr "Autre" -#: eeschema/pinedit-dialog.h:65 -msgid "Pin properties" -msgstr "PropriĂ©tĂ©s des Pins" - #: eeschema/plothpgl.h:55 msgid "EESchema Plot HPGL" msgstr "EESchema TracĂ© HPGL" @@ -10151,6 +10264,14 @@ msgstr "PropriĂ©tĂ©s de la feuille" msgid "Graphic text properties" msgstr "PropriĂ©tĂ©s du texte" +#: eeschema/pinedit-dialog.h:66 +msgid "Pin properties" +msgstr "PropriĂ©tĂ©s des Pins" + +#: eeschema/component_wizard/ki_component_setup.h:54 +msgid "Component Builder" +msgstr "GĂ©nĂ©rateur de Composant" + #: cvpcb/dialog_cvpcb_config.h:49 msgid "Cvpcb Configuration" msgstr "Configuration de Cvpcb" @@ -10315,6 +10436,8 @@ msgstr "Ajustage opt Page" msgid "Create SVG file" msgstr "CrĂ©er Fichier SVG" +#~ msgid "WinEDA_DrillFrame" +#~ msgstr "WinEDA_DrillFrame" #~ msgid "Spot min" #~ msgstr "Spot min" #~ msgid "Pen speed (cm/s)" diff --git a/pcbnew/dialog_gendrill.cpp b/pcbnew/dialog_gendrill.cpp index 09601fc02a..c1f5377ee7 100644 --- a/pcbnew/dialog_gendrill.cpp +++ b/pcbnew/dialog_gendrill.cpp @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// // Name: dialog_gendrill.cpp -// Purpose: +// Purpose: // Author: jean-pierre Charras -// Modified by: +// Modified by: // Created: 13/01/2008 17:26:27 -// RCS-ID: +// RCS-ID: // Copyright: License GNU -// Licence: +// Licence: ///////////////////////////////////////////////////////////////////////////// // Generated by DialogBlocks (unregistered), 13/01/2008 17:26:27 @@ -53,7 +53,7 @@ BEGIN_EVENT_TABLE( WinEDA_DrillFrame, wxDialog ) EVT_BUTTON( wxID_OK, WinEDA_DrillFrame::OnOkClick ) - EVT_BUTTON( wxID_CLOSE, WinEDA_DrillFrame::OnCloseClick ) + EVT_BUTTON( wxID_CANCEL, WinEDA_DrillFrame::OnCancelClick ) ////@end WinEDA_DrillFrame event table entries @@ -139,6 +139,8 @@ void WinEDA_DrillFrame::Init() m_ThroughViasInfoMsg = NULL; m_MicroViasInfoMsg = NULL; m_BuriedViasInfoMsg = NULL; + m_OkButton = NULL; + m_CancelButton = NULL; ////@end WinEDA_DrillFrame member initialisation } @@ -148,9 +150,9 @@ void WinEDA_DrillFrame::Init() */ void WinEDA_DrillFrame::CreateControls() -{ +{ ////@begin WinEDA_DrillFrame content construction - // Generated by DialogBlocks, 14/01/2008 08:32:06 (unregistered) + // Generated by DialogBlocks, 12/08/2008 13:05:18 (unregistered) WinEDA_DrillFrame* itemDialog1 = this; @@ -174,6 +176,8 @@ void WinEDA_DrillFrame::CreateControls() m_Choice_Zeros_FormatStrings.Add(_("keep zeros")); m_Choice_Zeros_Format = new wxRadioBox( itemDialog1, ID_SEL_ZEROS_FMT, _("Zeros Format"), wxDefaultPosition, wxDefaultSize, m_Choice_Zeros_FormatStrings, 1, wxRA_SPECIFY_COLS ); m_Choice_Zeros_Format->SetSelection(0); + if (WinEDA_DrillFrame::ShowToolTips()) + m_Choice_Zeros_Format->SetToolTip(_("Choose EXCELLON numbers notation")); m_LeftBoxSizer->Add(m_Choice_Zeros_Format, 0, wxALIGN_LEFT|wxALL, 5); wxArrayString m_Choice_PrecisionStrings; @@ -181,6 +185,8 @@ void WinEDA_DrillFrame::CreateControls() m_Choice_PrecisionStrings.Add(_("2:4")); m_Choice_Precision = new wxRadioBox( itemDialog1, ID_SEL_PRECISION, _("Precision"), wxDefaultPosition, wxDefaultSize, m_Choice_PrecisionStrings, 1, wxRA_SPECIFY_COLS ); m_Choice_Precision->SetSelection(0); + if (WinEDA_DrillFrame::ShowToolTips()) + m_Choice_Precision->SetToolTip(_("Choose EXCELLON numbers precision")); m_LeftBoxSizer->Add(m_Choice_Precision, 0, wxGROW|wxALL, 5); wxArrayString m_Choice_Drill_OffsetStrings; @@ -188,6 +194,8 @@ void WinEDA_DrillFrame::CreateControls() m_Choice_Drill_OffsetStrings.Add(_("auxiliary axis")); m_Choice_Drill_Offset = new wxRadioBox( itemDialog1, ID_SEL_DRILL_SHEET, _("Drill Origin:"), wxDefaultPosition, wxDefaultSize, m_Choice_Drill_OffsetStrings, 1, wxRA_SPECIFY_COLS ); m_Choice_Drill_Offset->SetSelection(0); + if (WinEDA_DrillFrame::ShowToolTips()) + m_Choice_Drill_Offset->SetToolTip(_("Choose the coordinate origin: absolute or relative to the auxiliray axis")); m_LeftBoxSizer->Add(m_Choice_Drill_Offset, 0, wxGROW|wxALL, 5); wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxVERTICAL); @@ -199,6 +207,8 @@ void WinEDA_DrillFrame::CreateControls() m_Choice_Drill_MapStrings.Add(_("drill sheet (PostScript)")); m_Choice_Drill_Map = new wxRadioBox( itemDialog1, ID_SEL_DRILL_SHEET, _("Drill Sheet:"), wxDefaultPosition, wxDefaultSize, m_Choice_Drill_MapStrings, 1, wxRA_SPECIFY_COLS ); m_Choice_Drill_Map->SetSelection(0); + if (WinEDA_DrillFrame::ShowToolTips()) + m_Choice_Drill_Map->SetToolTip(_("Creates a drill map in PS or HPGL format")); itemBoxSizer8->Add(m_Choice_Drill_Map, 0, wxGROW|wxALL, 5); wxArrayString m_Choice_Drill_ReportStrings; @@ -206,6 +216,8 @@ void WinEDA_DrillFrame::CreateControls() m_Choice_Drill_ReportStrings.Add(_("Drill report")); m_Choice_Drill_Report = new wxRadioBox( itemDialog1, ID_SEL_DRILL_REPORT, _("Drill Report:"), wxDefaultPosition, wxDefaultSize, m_Choice_Drill_ReportStrings, 1, wxRA_SPECIFY_COLS ); m_Choice_Drill_Report->SetSelection(0); + if (WinEDA_DrillFrame::ShowToolTips()) + m_Choice_Drill_Report->SetToolTip(_("Creates a plain text report")); itemBoxSizer8->Add(m_Choice_Drill_Report, 0, wxGROW|wxALL, 5); wxStaticBox* itemStaticBoxSizer11Static = new wxStaticBox(itemDialog1, wxID_ANY, _("HPGL plotter Options:")); @@ -234,6 +246,8 @@ void WinEDA_DrillFrame::CreateControls() m_Check_Minimal = new wxCheckBox( itemDialog1, ID_CHECKBOX3, _("minimal header"), wxDefaultPosition, wxDefaultSize, 0 ); m_Check_Minimal->SetValue(false); + if (WinEDA_DrillFrame::ShowToolTips()) + m_Check_Minimal->SetToolTip(_("If checked, the EXCELLON header is minimal")); itemStaticBoxSizer16->Add(m_Check_Minimal, 0, wxGROW|wxALL, 5); wxBoxSizer* itemBoxSizer19 = new wxBoxSizer(wxVERTICAL); @@ -275,13 +289,14 @@ void WinEDA_DrillFrame::CreateControls() itemBoxSizer19->Add(5, 5, 1, wxGROW|wxALL, 5); - wxButton* itemButton31 = new wxButton( itemDialog1, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 ); - itemButton31->SetForegroundColour(wxColour(156, 1, 5)); - itemBoxSizer19->Add(itemButton31, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + m_OkButton = new wxButton( itemDialog1, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + m_OkButton->SetDefault(); + m_OkButton->SetForegroundColour(wxColour(156, 1, 5)); + itemBoxSizer19->Add(m_OkButton, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); - wxButton* itemButton32 = new wxButton( itemDialog1, wxID_CLOSE, _("&Close"), wxDefaultPosition, wxDefaultSize, 0 ); - itemButton32->SetForegroundColour(wxColour(16, 1, 205)); - itemBoxSizer19->Add(itemButton32, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); + m_CancelButton = new wxButton( itemDialog1, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + m_CancelButton->SetForegroundColour(wxColour(16, 1, 205)); + itemBoxSizer19->Add(m_CancelButton, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); // Set validators m_Choice_Unit->SetValidator( wxGenericValidator(& s_Unit_Drill_is_Inch) ); @@ -290,6 +305,7 @@ void WinEDA_DrillFrame::CreateControls() m_Check_Minimal->SetValidator( wxGenericValidator(& Minimal) ); ////@end WinEDA_DrillFrame content construction + SetFocus(); // Under wxGTK: mandatory to close dialog by the ESC key InitDisplayParams(); } @@ -318,10 +334,10 @@ void WinEDA_DrillFrame::OnOkClick( wxCommandEvent& event ) * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CLOSE */ -void WinEDA_DrillFrame::OnCloseClick( wxCommandEvent& event ) +void WinEDA_DrillFrame::OnCancelClick( wxCommandEvent& event ) { UpdateConfig(); /* Save drill options: */ - Close( true ); // true is to force the frame to close + event.Skip(); // Process the default cancel event (close dialog) } @@ -380,6 +396,6 @@ void WinEDA_DrillFrame::OnCloseWindow( wxCloseEvent& event ) ////@begin wxEVT_CLOSE_WINDOW event handler for ID_WINEDA_DRILLFRAME in WinEDA_DrillFrame. // Before editing this code, remove the block markers. event.Skip(); -////@end wxEVT_CLOSE_WINDOW event handler for ID_WINEDA_DRILLFRAME in WinEDA_DrillFrame. +////@end wxEVT_CLOSE_WINDOW event handler for ID_WINEDA_DRILLFRAME in WinEDA_DrillFrame. } diff --git a/pcbnew/dialog_gendrill.h b/pcbnew/dialog_gendrill.h index 0fbaf1458f..6c0805e842 100644 --- a/pcbnew/dialog_gendrill.h +++ b/pcbnew/dialog_gendrill.h @@ -47,7 +47,7 @@ class wxBoxSizer; #define ID_CHECKBOX2 10011 #define ID_CHECKBOX3 10012 #define SYMBOL_WINEDA_DRILLFRAME_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX|wxTAB_TRAVERSAL -#define SYMBOL_WINEDA_DRILLFRAME_TITLE _("WinEDA_DrillFrame") +#define SYMBOL_WINEDA_DRILLFRAME_TITLE _("Drill Files Generation") #define SYMBOL_WINEDA_DRILLFRAME_IDNAME ID_WINEDA_DRILLFRAME #define SYMBOL_WINEDA_DRILLFRAME_SIZE wxSize(400, 300) #define SYMBOL_WINEDA_DRILLFRAME_POSITION wxDefaultPosition @@ -99,8 +99,8 @@ public: /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK void OnOkClick( wxCommandEvent& event ); - /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CLOSE - void OnCloseClick( wxCommandEvent& event ); + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL + void OnCancelClick( wxCommandEvent& event ); ////@end WinEDA_DrillFrame event handler declarations @@ -136,6 +136,8 @@ public: wxStaticText* m_ThroughViasInfoMsg; wxStaticText* m_MicroViasInfoMsg; wxStaticText* m_BuriedViasInfoMsg; + wxButton* m_OkButton; + wxButton* m_CancelButton; ////@end WinEDA_DrillFrame member variables private: diff --git a/pcbnew/dialog_gendrill.pjd b/pcbnew/dialog_gendrill.pjd index a9115a4b09..4b23319eeb 100644 --- a/pcbnew/dialog_gendrill.pjd +++ b/pcbnew/dialog_gendrill.pjd @@ -128,6 +128,7 @@ 0 "" 1 + -8519680 "" "Debug" "ANSI" @@ -169,6 +170,8 @@ "%AUTO%" "%AUTO%" "%AUTO%" + 0 + 1 @@ -219,7 +222,7 @@ "dialog_gendrill.cpp" "dialog_gendrill.h" "" - "WinEDA_DrillFrame" + "Drill Files Generation" 1 "" 0 @@ -405,7 +408,7 @@ "decimal format|suppress leading zeros|suppress trailing zeros|keep zeros" 0 "" - "" + "Choose EXCELLON numbers notation" "" "" "" @@ -469,7 +472,7 @@ "2:3|2:4" 0 "" - "" + "Choose EXCELLON numbers precision" "" "" "" @@ -533,7 +536,7 @@ "absolute|auxiliary axis" 0 "" - "" + "Choose the coordinate origin: absolute or relative to the auxiliray axis" "" "" "" @@ -623,7 +626,7 @@ "None|drill sheet (HPGL)|drill sheet (PostScript)" 0 "" - "" + "Creates a drill map in PS or HPGL format" "" "" "" @@ -687,7 +690,7 @@ "None|Drill report" 0 "" - "" + "Creates a plain text report" "" "" "" @@ -1185,7 +1188,7 @@ "minimal header" 0 "" - "" + "If checked, the EXCELLON header is minimal" "Minimal" "wxGenericValidator(& %VARIABLE%)" "" @@ -1860,9 +1863,9 @@ 0 "" "" - "" + "m_OkButton" "OK" - 0 + 1 "" "" "" @@ -1907,7 +1910,7 @@ "" - "wxButton: wxID_CLOSE" + "wxButton: wxID_CANCEL" "dialog-control-document" "" "dialogcontrol" @@ -1917,9 +1920,9 @@ 0 "13/1/2008" "wbButtonProxy" - "wxEVT_COMMAND_BUTTON_CLICKED|OnCloseClick|NONE||WinEDA_DrillFrame" - "wxID_CLOSE" - 5001 + "wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick|NONE||WinEDA_DrillFrame" + "wxID_CANCEL" + 5101 "" "wxButton" "wxButton" @@ -1927,8 +1930,8 @@ 0 "" "" - "" - "&Close" + "m_CancelButton" + "Cancel" 0 "" ""