diff --git a/change_log.txt b/change_log.txt index 0a7598f558..9a3a0d9f2f 100644 --- a/change_log.txt +++ b/change_log.txt @@ -11,6 +11,10 @@ email address. Renaming the sheet filename now works in simple and complex hierarchies. Use carefully because this can change the whole schematic structure. ++all + Display filename and full sheet name ("sheet path") in sheet reference + the full sheet name has no meanning in pcbnew. + 2008-Feb-28 UPDATE Jean-Pierre Charras ================================================================================ diff --git a/common/worksheet.cpp b/common/worksheet.cpp index ba46d98339..53c97def36 100644 --- a/common/worksheet.cpp +++ b/common/worksheet.cpp @@ -159,7 +159,7 @@ int width = line_width; GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width); break; - case WS_LICENCE: + case WS_KICAD_VERSION: if(WsItem->m_Legende) msg = WsItem->m_Legende; msg += g_ProductName + g_Main_Title; msg += wxT(" ") + GetBuildVersion(); @@ -179,11 +179,33 @@ int width = line_width; case WS_IDENTSHEET: if(WsItem->m_Legende) msg = WsItem->m_Legende; + msg << screen->m_ScreenNumber << wxT("/") << screen->m_NumberOfScreen; DrawGraphicText(DrawPanel, DC, pos, Color, - GetScreenDesc(), TEXT_ORIENT_HORIZ, size, + msg, TEXT_ORIENT_HORIZ, size, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width); break; + case WS_FILENAME: + { + wxString fname, fext; + wxFileName::SplitPath(screen->m_FileName, (wxString*)NULL, &fname, &fext); + if(WsItem->m_Legende) msg = WsItem->m_Legende; + msg << fname << wxT(".") << fext; + DrawGraphicText(DrawPanel, DC, pos, Color, + msg, TEXT_ORIENT_HORIZ, size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width); + } + break; + + case WS_FULLSHEETNAME: + if(WsItem->m_Legende) msg = WsItem->m_Legende; + msg += GetScreenDesc(); + DrawGraphicText(DrawPanel, DC, pos, Color, + msg, TEXT_ORIENT_HORIZ, size, + GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width); + break; + + case WS_COMPANY_NAME: if(WsItem->m_Legende) msg = WsItem->m_Legende; msg += screen->m_Company; diff --git a/include/worksheet.h b/include/worksheet.h index 48f0bf96a7..c7b17c649c 100644 --- a/include/worksheet.h +++ b/include/worksheet.h @@ -18,8 +18,8 @@ seront soustraires de cette origine */ #define BLOCK_OX 4200 -#define BLOCK_LICENCE_X BLOCK_OX - SIZETEXT -#define BLOCK_LICENCE_Y SIZETEXT +#define BLOCK_KICAD_VERSION_X BLOCK_OX - SIZETEXT +#define BLOCK_KICAD_VERSION_Y SIZETEXT #define BLOCK_REV_X 820 #define BLOCK_REV_Y (SIZETEXT*3) #define BLOCK_DATE_X BLOCK_OX - (SIZETEXT*15) @@ -30,13 +30,17 @@ seront soustraires de cette origine #define BLOCK_SIZE_SHEET_Y (SIZETEXT*3) #define BLOCK_TITLE_X BLOCK_OX - SIZETEXT #define BLOCK_TITLE_Y (SIZETEXT*5) +#define BLOCK_FULLSHEETNAME_X BLOCK_OX - SIZETEXT +#define BLOCK_FULLSHEETNAME_Y (SIZETEXT * 7) +#define BLOCK_FILENAME_X BLOCK_OX - SIZETEXT +#define BLOCK_FILENAME_Y (SIZETEXT * 9) #define BLOCK_COMMENT_X BLOCK_OX - SIZETEXT -#define VARIABLE_BLOCK_START_POSITION (SIZETEXT * 6) -#define BLOCK_COMPANY_Y (SIZETEXT*7) -#define BLOCK_COMMENT1_Y (SIZETEXT*9) -#define BLOCK_COMMENT2_Y (SIZETEXT*11) -#define BLOCK_COMMENT3_Y (SIZETEXT*13) -#define BLOCK_COMMENT4_Y (SIZETEXT*15) +#define VARIABLE_BLOCK_START_POSITION (SIZETEXT * 10) +#define BLOCK_COMPANY_Y (SIZETEXT*11) +#define BLOCK_COMMENT1_Y (SIZETEXT*13) +#define BLOCK_COMMENT2_Y (SIZETEXT*15) +#define BLOCK_COMMENT3_Y (SIZETEXT*17) +#define BLOCK_COMMENT4_Y (SIZETEXT*19) struct Ki_WorkSheetData { @@ -54,10 +58,12 @@ enum TypeKi_WorkSheetData { WS_DATE, WS_REV, - WS_LICENCE, + WS_KICAD_VERSION, WS_SIZESHEET, WS_IDENTSHEET, WS_TITLE, + WS_FILENAME, + WS_FULLSHEETNAME, WS_COMPANY_NAME, WS_COMMENT1, WS_COMMENT2, @@ -74,12 +80,15 @@ extern Ki_WorkSheetData WS_Revision; extern Ki_WorkSheetData WS_Licence; extern Ki_WorkSheetData WS_SizeSheet; extern Ki_WorkSheetData WS_IdentSheet; +extern Ki_WorkSheetData WS_FullSheetName; +extern Ki_WorkSheetData WS_SheetFilename; extern Ki_WorkSheetData WS_Title; extern Ki_WorkSheetData WS_Company; extern Ki_WorkSheetData WS_Comment1; extern Ki_WorkSheetData WS_Comment2; extern Ki_WorkSheetData WS_Comment3; extern Ki_WorkSheetData WS_Comment4; +extern Ki_WorkSheetData WS_SeparatorLine; extern Ki_WorkSheetData WS_MostLeftLine; extern Ki_WorkSheetData WS_MostUpperLine; extern Ki_WorkSheetData WS_Segm3; @@ -101,9 +110,9 @@ Ki_WorkSheetData WS_Date = Ki_WorkSheetData WS_Licence = { - WS_LICENCE, + WS_KICAD_VERSION, &WS_Revision, - BLOCK_LICENCE_X, BLOCK_LICENCE_Y, + BLOCK_KICAD_VERSION_X, BLOCK_KICAD_VERSION_Y, 0,0, NULL, NULL }; @@ -132,18 +141,36 @@ Ki_WorkSheetData WS_IdentSheet = &WS_Title, BLOCK_ID_SHEET_X, BLOCK_ID_SHEET_Y, 0,0, - wxT("Sheet: "),NULL + wxT("Id: "),NULL }; Ki_WorkSheetData WS_Title = { WS_TITLE, - &WS_Company, + &WS_SheetFilename, BLOCK_TITLE_X, BLOCK_TITLE_Y, 0,0, wxT("Title: "),NULL }; +Ki_WorkSheetData WS_SheetFilename = + { + WS_FILENAME, + &WS_FullSheetName, + BLOCK_FILENAME_X, BLOCK_FILENAME_Y, + 0,0, + wxT("File: "),NULL + }; + +Ki_WorkSheetData WS_FullSheetName = + { + WS_FULLSHEETNAME, + &WS_Company, + BLOCK_FULLSHEETNAME_X, BLOCK_FULLSHEETNAME_Y, + 0,0, + wxT("Sheet: "),NULL + }; + Ki_WorkSheetData WS_Company = { WS_COMPANY_NAME, @@ -192,12 +219,21 @@ Ki_WorkSheetData WS_Comment4 = Ki_WorkSheetData WS_MostLeftLine = /* segment vertical gauche */ { WS_LEFT_SEGMENT, - &WS_MostUpperLine, + &WS_SeparatorLine, BLOCK_OX, SIZETEXT * 16, BLOCK_OX, 0, NULL,NULL }; +Ki_WorkSheetData WS_SeparatorLine = /* horizontal segment between filename and comments*/ + { + WS_SEGMENT, + &WS_MostUpperLine, + BLOCK_OX, VARIABLE_BLOCK_START_POSITION, + 0, VARIABLE_BLOCK_START_POSITION, + NULL,NULL + }; + Ki_WorkSheetData WS_MostUpperLine = /* segment horizontal superieur */ { WS_UPPER_SEGMENT, diff --git a/share/worksheet.cpp b/share/worksheet.cpp deleted file mode 100644 index 16fcc82a50..0000000000 --- a/share/worksheet.cpp +++ /dev/null @@ -1,280 +0,0 @@ - /**************************************************/ - /* WORKSHEET.CPP : routines de trace du cartouche */ - /**************************************************/ - -#include "fctsys.h" -#include "gr_basic.h" - -#include "common.h" - -#ifdef EESCHEMA -#include "program.h" -#include "libcmp.h" -#include "general.h" -#endif - -#ifdef PCBNEW -#include "pcbnew.h" -#endif - -#include "worksheet.h" - -#include "protos.h" - -/*********************************************************************/ -void WinEDA_DrawFrame::TraceWorkSheet(wxDC * DC, BASE_SCREEN * screen) -/*********************************************************************/ -/* Trace l'encadrement de la feuille de travail et le cartouche -*/ -{ - if ( ! m_Draw_Sheet_Ref ) return; - -Ki_PageDescr * Sheet = screen->m_CurrentSheetDesc; -int ii, jj, xg , yg, ipas, gxpas, gypas; -wxPoint pos; -int refx, refy,Color; -wxString Line; -Ki_WorkSheetData * WsItem; -int scale = m_InternalUnits/1000; -wxSize size(SIZETEXT*scale,SIZETEXT*scale); -wxSize size_ref(SIZETEXT_REF*scale,SIZETEXT_REF*scale); -wxString msg; -int UpperLimit = VARIABLE_BLOCK_START_POSITION; - - Color = RED; - if(Sheet == NULL) - { - DisplayError(this, - wxT("WinEDA_DrawFrame::TraceWorkSheet() error: m_CurrentSheet NULL")); - return; - } - - // if not printing, draw the page limits: - if ( ! g_IsPrinting & g_ShowPageLimits ) - { - GRSetDrawMode(DC, GR_COPY); - GRRect(&DrawPanel->m_ClipBox, DC, 0, 0, - Sheet->m_Size.x * scale, Sheet->m_Size.y * scale, - g_DrawBgColor == WHITE ? LIGHTGRAY : DARKDARKGRAY ); - } - - GRSetDrawMode(DC, GR_COPY); - /* trace de la bordure */ - refx = Sheet->m_LeftMargin; - refy = Sheet->m_TopMargin; /* Upper left corner */ - xg = Sheet->m_Size.x - Sheet->m_RightMargin; - yg = Sheet->m_Size.y - Sheet->m_BottomMargin; /* lower right corner */ - - for ( ii = 0; ii < 2 ; ii++ ) - { - GRRect(&DrawPanel->m_ClipBox, DC, refx * scale, refy * scale, - xg * scale, yg * scale, Color); - - refx += GRID_REF_W; refy += GRID_REF_W; - xg -= GRID_REF_W; yg -= GRID_REF_W; - } - /* trace des reperes */ - refx = Sheet->m_LeftMargin; - refy = Sheet->m_TopMargin; /* Upper left corner */ - xg = Sheet->m_Size.x - Sheet->m_RightMargin; - yg = Sheet->m_Size.y - Sheet->m_BottomMargin; /* lower right corner */ - - /* Trace des reperes selon l'axe X */ - ipas = (xg - refx) / PAS_REF; - gxpas = ( xg - refx) / ipas; - for ( ii = refx + gxpas, jj = 1; ipas > 0 ; ii += gxpas , jj++, ipas--) - { - Line.Printf( wxT("%d"),jj); - if( ii < xg - PAS_REF/2 ) - { - GRLine(&DrawPanel->m_ClipBox, DC, ii * scale, refy * scale, - ii * scale, (refy + GRID_REF_W) * scale, Color); - } - DrawGraphicText(DrawPanel, DC, - wxPoint( (ii - gxpas/2) * scale, (refy + GRID_REF_W/2) * scale), - Color, - Line, TEXT_ORIENT_HORIZ, size_ref, - GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER); - if( ii < xg - PAS_REF/2 ) - { - GRLine(&DrawPanel->m_ClipBox, DC,ii * scale, yg * scale, - ii * scale, (yg - GRID_REF_W) * scale, Color); - } - DrawGraphicText(DrawPanel, DC, - wxPoint( (ii - gxpas/2) * scale, (yg - GRID_REF_W/2) * scale), - Color, - Line, TEXT_ORIENT_HORIZ, size_ref, - GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER); - } - - /* Trace des reperes selon l'axe Y */ - ipas = (yg - refy) / PAS_REF; - gypas = ( yg - refy) / ipas; - for ( ii = refy + gypas, jj = 0; ipas > 0 ; ii += gypas , jj++, ipas--) - { - Line.Empty(); - if( jj < 26 ) Line.Printf(wxT("%c"), jj + 'A'); - else Line.Printf(wxT("%c"), 'a' + jj - 26); - if( ii < yg - PAS_REF/2 ) - { - GRLine(&DrawPanel->m_ClipBox, DC, refx * scale, ii * scale, - (refx + GRID_REF_W) * scale, ii * scale, Color); - } - DrawGraphicText(DrawPanel, DC, - wxPoint((refx + GRID_REF_W/2) * scale, (ii - gypas/2) * scale), - Color, - Line, TEXT_ORIENT_HORIZ, size_ref, - GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER); - if( ii < yg - PAS_REF/2 ) - { - GRLine(&DrawPanel->m_ClipBox, DC, xg * scale, ii * scale, - (xg - GRID_REF_W) * scale, ii * scale, Color); - } - DrawGraphicText(DrawPanel, DC, - wxPoint((xg - GRID_REF_W/2) * scale, (ii - gxpas/2) * scale), - Color, - Line, TEXT_ORIENT_HORIZ, size_ref, - GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER); - } - - - - /* Trace du cartouche */ - refx = Sheet->m_Size.x - Sheet->m_RightMargin - GRID_REF_W; - refy = Sheet->m_Size.y - Sheet->m_BottomMargin - GRID_REF_W; /* lower right corner */ - - for( WsItem = &WS_Date; WsItem != NULL; WsItem = WsItem->Pnext ) - { - pos.x = (refx - WsItem->m_Posx)* scale; - pos.y = (refy - WsItem->m_Posy)* scale; - msg.Empty(); - switch( WsItem->m_Type ) - { - case WS_DATE: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += screen->m_Date; - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - break; - - case WS_REV: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += screen->m_Revision; - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - break; - - case WS_LICENCE: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += g_ProductName + Main_Title; - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - break; - - case WS_SIZESHEET: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += Sheet->m_Name; - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - break; - - - case WS_IDENTSHEET: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg = GetScreenDesc(); - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - break; - - case WS_COMPANY_NAME: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += screen->m_Company; - if ( ! msg.IsEmpty() ) - { - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - UpperLimit = MAX(UpperLimit, WsItem->m_Posy+SIZETEXT); - } - break; - - case WS_TITLE: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += screen->m_Title; - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - break; - - case WS_COMMENT1: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += screen->m_Commentaire1; - if ( ! msg.IsEmpty() ) - { - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - UpperLimit = MAX(UpperLimit, WsItem->m_Posy+SIZETEXT); - } - break; - - case WS_COMMENT2: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += screen->m_Commentaire2; - if ( ! msg.IsEmpty() ) - { - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - UpperLimit = MAX(UpperLimit, WsItem->m_Posy+SIZETEXT); - } - break; - - case WS_COMMENT3: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += screen->m_Commentaire3; - if ( ! msg.IsEmpty() ) - { - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - UpperLimit = MAX(UpperLimit, WsItem->m_Posy+SIZETEXT); - } - break; - - case WS_COMMENT4: - if(WsItem->m_Legende) msg = WsItem->m_Legende; - msg += screen->m_Commentaire4; - if ( ! msg.IsEmpty() ) - { - DrawGraphicText(DrawPanel, DC, pos, Color, - msg, TEXT_ORIENT_HORIZ, size, - GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER); - UpperLimit = MAX(UpperLimit, WsItem->m_Posy+SIZETEXT); - } - break; - - case WS_UPPER_SEGMENT: - if (UpperLimit == 0 ) break; - case WS_LEFT_SEGMENT: - WS_MostUpperLine.m_Posy = - WS_MostUpperLine.m_Endy = - WS_MostLeftLine.m_Posy = UpperLimit; - pos.y = (refy - WsItem->m_Posy)* scale; - case WS_SEGMENT: - xg = Sheet->m_Size.x - - GRID_REF_W - Sheet->m_RightMargin - WsItem->m_Endx; - yg = Sheet->m_Size.y - - GRID_REF_W - Sheet->m_BottomMargin - WsItem->m_Endy; - GRLine(&DrawPanel->m_ClipBox, DC, pos.x, pos.y, - xg * scale, yg * scale, Color); - break; - - } - } -} \ No newline at end of file