Commit 4d9ea908 authored by CHARRAS's avatar CHARRAS

Display filename and full sheet name ("sheet path") in sheet references

parent a664e14b
...@@ -11,6 +11,10 @@ email address. ...@@ -11,6 +11,10 @@ email address.
Renaming the sheet filename now works in simple and complex hierarchies. Renaming the sheet filename now works in simple and complex hierarchies.
Use carefully because this can change the whole schematic structure. 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 <jean-pierre.charras@inpg.fr> 2008-Feb-28 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================ ================================================================================
......
...@@ -159,7 +159,7 @@ int width = line_width; ...@@ -159,7 +159,7 @@ int width = line_width;
GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width); GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width);
break; break;
case WS_LICENCE: case WS_KICAD_VERSION:
if(WsItem->m_Legende) msg = WsItem->m_Legende; if(WsItem->m_Legende) msg = WsItem->m_Legende;
msg += g_ProductName + g_Main_Title; msg += g_ProductName + g_Main_Title;
msg += wxT(" ") + GetBuildVersion(); msg += wxT(" ") + GetBuildVersion();
...@@ -179,11 +179,33 @@ int width = line_width; ...@@ -179,11 +179,33 @@ int width = line_width;
case WS_IDENTSHEET: case WS_IDENTSHEET:
if(WsItem->m_Legende) msg = WsItem->m_Legende; if(WsItem->m_Legende) msg = WsItem->m_Legende;
msg << screen->m_ScreenNumber << wxT("/") << screen->m_NumberOfScreen;
DrawGraphicText(DrawPanel, DC, pos, Color, 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); GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, width);
break; break;
case WS_COMPANY_NAME: case WS_COMPANY_NAME:
if(WsItem->m_Legende) msg = WsItem->m_Legende; if(WsItem->m_Legende) msg = WsItem->m_Legende;
msg += screen->m_Company; msg += screen->m_Company;
......
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
seront soustraires de cette origine seront soustraires de cette origine
*/ */
#define BLOCK_OX 4200 #define BLOCK_OX 4200
#define BLOCK_LICENCE_X BLOCK_OX - SIZETEXT #define BLOCK_KICAD_VERSION_X BLOCK_OX - SIZETEXT
#define BLOCK_LICENCE_Y SIZETEXT #define BLOCK_KICAD_VERSION_Y SIZETEXT
#define BLOCK_REV_X 820 #define BLOCK_REV_X 820
#define BLOCK_REV_Y (SIZETEXT*3) #define BLOCK_REV_Y (SIZETEXT*3)
#define BLOCK_DATE_X BLOCK_OX - (SIZETEXT*15) #define BLOCK_DATE_X BLOCK_OX - (SIZETEXT*15)
...@@ -30,13 +30,17 @@ seront soustraires de cette origine ...@@ -30,13 +30,17 @@ seront soustraires de cette origine
#define BLOCK_SIZE_SHEET_Y (SIZETEXT*3) #define BLOCK_SIZE_SHEET_Y (SIZETEXT*3)
#define BLOCK_TITLE_X BLOCK_OX - SIZETEXT #define BLOCK_TITLE_X BLOCK_OX - SIZETEXT
#define BLOCK_TITLE_Y (SIZETEXT*5) #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 BLOCK_COMMENT_X BLOCK_OX - SIZETEXT
#define VARIABLE_BLOCK_START_POSITION (SIZETEXT * 6) #define VARIABLE_BLOCK_START_POSITION (SIZETEXT * 10)
#define BLOCK_COMPANY_Y (SIZETEXT*7) #define BLOCK_COMPANY_Y (SIZETEXT*11)
#define BLOCK_COMMENT1_Y (SIZETEXT*9) #define BLOCK_COMMENT1_Y (SIZETEXT*13)
#define BLOCK_COMMENT2_Y (SIZETEXT*11) #define BLOCK_COMMENT2_Y (SIZETEXT*15)
#define BLOCK_COMMENT3_Y (SIZETEXT*13) #define BLOCK_COMMENT3_Y (SIZETEXT*17)
#define BLOCK_COMMENT4_Y (SIZETEXT*15) #define BLOCK_COMMENT4_Y (SIZETEXT*19)
struct Ki_WorkSheetData struct Ki_WorkSheetData
{ {
...@@ -54,10 +58,12 @@ enum TypeKi_WorkSheetData ...@@ -54,10 +58,12 @@ enum TypeKi_WorkSheetData
{ {
WS_DATE, WS_DATE,
WS_REV, WS_REV,
WS_LICENCE, WS_KICAD_VERSION,
WS_SIZESHEET, WS_SIZESHEET,
WS_IDENTSHEET, WS_IDENTSHEET,
WS_TITLE, WS_TITLE,
WS_FILENAME,
WS_FULLSHEETNAME,
WS_COMPANY_NAME, WS_COMPANY_NAME,
WS_COMMENT1, WS_COMMENT1,
WS_COMMENT2, WS_COMMENT2,
...@@ -74,12 +80,15 @@ extern Ki_WorkSheetData WS_Revision; ...@@ -74,12 +80,15 @@ extern Ki_WorkSheetData WS_Revision;
extern Ki_WorkSheetData WS_Licence; extern Ki_WorkSheetData WS_Licence;
extern Ki_WorkSheetData WS_SizeSheet; extern Ki_WorkSheetData WS_SizeSheet;
extern Ki_WorkSheetData WS_IdentSheet; extern Ki_WorkSheetData WS_IdentSheet;
extern Ki_WorkSheetData WS_FullSheetName;
extern Ki_WorkSheetData WS_SheetFilename;
extern Ki_WorkSheetData WS_Title; extern Ki_WorkSheetData WS_Title;
extern Ki_WorkSheetData WS_Company; extern Ki_WorkSheetData WS_Company;
extern Ki_WorkSheetData WS_Comment1; extern Ki_WorkSheetData WS_Comment1;
extern Ki_WorkSheetData WS_Comment2; extern Ki_WorkSheetData WS_Comment2;
extern Ki_WorkSheetData WS_Comment3; extern Ki_WorkSheetData WS_Comment3;
extern Ki_WorkSheetData WS_Comment4; extern Ki_WorkSheetData WS_Comment4;
extern Ki_WorkSheetData WS_SeparatorLine;
extern Ki_WorkSheetData WS_MostLeftLine; extern Ki_WorkSheetData WS_MostLeftLine;
extern Ki_WorkSheetData WS_MostUpperLine; extern Ki_WorkSheetData WS_MostUpperLine;
extern Ki_WorkSheetData WS_Segm3; extern Ki_WorkSheetData WS_Segm3;
...@@ -101,9 +110,9 @@ Ki_WorkSheetData WS_Date = ...@@ -101,9 +110,9 @@ Ki_WorkSheetData WS_Date =
Ki_WorkSheetData WS_Licence = Ki_WorkSheetData WS_Licence =
{ {
WS_LICENCE, WS_KICAD_VERSION,
&WS_Revision, &WS_Revision,
BLOCK_LICENCE_X, BLOCK_LICENCE_Y, BLOCK_KICAD_VERSION_X, BLOCK_KICAD_VERSION_Y,
0,0, 0,0,
NULL, NULL NULL, NULL
}; };
...@@ -132,18 +141,36 @@ Ki_WorkSheetData WS_IdentSheet = ...@@ -132,18 +141,36 @@ Ki_WorkSheetData WS_IdentSheet =
&WS_Title, &WS_Title,
BLOCK_ID_SHEET_X, BLOCK_ID_SHEET_Y, BLOCK_ID_SHEET_X, BLOCK_ID_SHEET_Y,
0,0, 0,0,
wxT("Sheet: "),NULL wxT("Id: "),NULL
}; };
Ki_WorkSheetData WS_Title = Ki_WorkSheetData WS_Title =
{ {
WS_TITLE, WS_TITLE,
&WS_Company, &WS_SheetFilename,
BLOCK_TITLE_X, BLOCK_TITLE_Y, BLOCK_TITLE_X, BLOCK_TITLE_Y,
0,0, 0,0,
wxT("Title: "),NULL 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 = Ki_WorkSheetData WS_Company =
{ {
WS_COMPANY_NAME, WS_COMPANY_NAME,
...@@ -192,12 +219,21 @@ Ki_WorkSheetData WS_Comment4 = ...@@ -192,12 +219,21 @@ Ki_WorkSheetData WS_Comment4 =
Ki_WorkSheetData WS_MostLeftLine = /* segment vertical gauche */ Ki_WorkSheetData WS_MostLeftLine = /* segment vertical gauche */
{ {
WS_LEFT_SEGMENT, WS_LEFT_SEGMENT,
&WS_MostUpperLine, &WS_SeparatorLine,
BLOCK_OX, SIZETEXT * 16, BLOCK_OX, SIZETEXT * 16,
BLOCK_OX, 0, BLOCK_OX, 0,
NULL,NULL 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 */ Ki_WorkSheetData WS_MostUpperLine = /* segment horizontal superieur */
{ {
WS_UPPER_SEGMENT, WS_UPPER_SEGMENT,
......
/**************************************************/
/* 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment