Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
31e3e985
Commit
31e3e985
authored
Jan 08, 2009
by
charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Print and plot functions now properly prints all sheets in a complex hierarchy
parent
1fd73dff
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
343 additions
and
228 deletions
+343
-228
CHANGELOG.txt
CHANGELOG.txt
+7
-0
plothpgl.cpp
eeschema/plothpgl.cpp
+240
-152
plotps.cpp
eeschema/plotps.cpp
+3
-29
schframe.cpp
eeschema/schframe.cpp
+36
-0
wxEeschemaStruct.h
include/wxEeschemaStruct.h
+12
-1
svg_print.cpp
share/svg_print.cpp
+37
-35
svg_print.h
share/svg_print.h
+6
-9
svg_print.pjd
share/svg_print.pjd
+2
-2
No files found.
CHANGELOG.txt
View file @
31e3e985
...
...
@@ -5,6 +5,13 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
email address.
2009-Jan-08 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
++Eeschema:
Print and plot functions now properly prints all sheets in a complex hierarchy
plot files created have now a new filename in order to be compatible with complex hierarchies
2009-Jan-07 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
++Eeschema:
...
...
eeschema/plothpgl.cpp
View file @
31e3e985
This diff is collapsed.
Click to expand it.
eeschema/plotps.cpp
View file @
31e3e985
...
...
@@ -376,12 +376,11 @@ void WinEDA_PlotPSFrame::CreatePSFile( int AllPages, int pagesize )
WinEDA_SchematicFrame
*
schframe
=
(
WinEDA_SchematicFrame
*
)
m_Parent
;
SCH_SCREEN
*
screen
=
schframe
->
GetScreen
();
SCH_SCREEN
*
oldscreen
=
screen
;
DrawSheetPath
*
oldsheetpath
=
schframe
->
GetSheet
();
wxString
PlotFileName
,
ShortFileName
;
DrawSheetPath
*
sheetpath
,
*
oldsheetpath
=
schframe
->
GetSheet
();
wxString
PlotFileName
;
Ki_PageDescr
*
PlotSheet
,
*
RealSheet
;
int
BBox
[
4
];
wxPoint
plot_offset
;
DrawSheetPath
*
sheetpath
;
g_PlotFormat
=
PLOT_FORMAT_POST
;
...
...
@@ -433,32 +432,7 @@ void WinEDA_PlotPSFrame::CreatePSFile( int AllPages, int pagesize )
plot_offset
.
x
=
0
;
plot_offset
.
y
=
PlotSheet
->
m_Size
.
y
;
/* If a screen is used more than once (complex hierarchy) we create more than once file
* with the same basic filename
* To avoid that, we use the root filename and and the sheet path
* Or, if filename too long, sheet_name + sheet number
*/
wxSplitPath
(
g_RootSheet
->
GetFileName
().
GetData
(),
(
wxString
*
)
NULL
,
&
ShortFileName
,
(
wxString
*
)
NULL
);
if
(
(
ShortFileName
.
Len
()
+
schframe
->
m_CurrentSheet
->
PathHumanReadable
().
Len
()
)
<
50
)
{
ShortFileName
+=
schframe
->
m_CurrentSheet
->
PathHumanReadable
();
ShortFileName
.
Replace
(
wxT
(
"/"
),
wxT
(
"-"
)
);
ShortFileName
.
RemoveLast
();
}
else
{
wxSplitPath
(
g_RootSheet
->
GetFileName
().
GetData
(),
(
wxString
*
)
NULL
,
&
ShortFileName
,
(
wxString
*
)
NULL
);
ShortFileName
<<
wxT
(
"-"
)
<<
screen
->
m_ScreenNumber
;
}
wxString
dirbuf
=
wxGetCwd
()
+
STRING_DIR_SEP
;
if
(
!
ShortFileName
.
IsEmpty
()
)
PlotFileName
=
MakeFileName
(
dirbuf
,
ShortFileName
,
wxT
(
".ps"
)
);
else
PlotFileName
=
MakeFileName
(
dirbuf
,
g_DefaultSchematicFileName
,
wxT
(
".ps"
)
);
PlotFileName
=
schframe
->
GetUniqueFilenameForCurrentSheet
(
)
+
wxT
(
".ps"
);
PlotOneSheetPS
(
PlotFileName
,
screen
,
RealSheet
,
BBox
,
plot_offset
);
...
...
eeschema/schframe.cpp
View file @
31e3e985
...
...
@@ -450,7 +450,9 @@ void WinEDA_SchematicFrame::SetToolbars()
}
/************************************/
int
WinEDA_SchematicFrame
::
BestZoom
()
/************************************/
{
int
dx
,
dy
,
ii
,
jj
;
int
bestzoom
;
...
...
@@ -471,6 +473,40 @@ int WinEDA_SchematicFrame::BestZoom()
return
bestzoom
;
}
/*******************************************************************/
wxString
WinEDA_SchematicFrame
::
GetUniqueFilenameForCurrentSheet
(
)
/*******************************************************************/
/** Function GetUniqueFilenameForCurrentSheet
* @return a filename that can be used in plot and print functions
* for the current screen anad sheet path.
* This filename is unique and must be used insteed of the sreen filename
* (or scheen filename) when one must creates file for each sheet in the heierarchy.
* because in complex hierarchies a sheet and a SCH_SCREEN is used more than once
* Name is <root sheet filename>-<sheet path>
* and has no extension.
* However if filename is too long name is <sheet filename>-<sheet number>
*/
{
wxString
filename
;
wxSplitPath
(
g_RootSheet
->
GetFileName
().
GetData
(),
(
wxString
*
)
NULL
,
&
filename
,
(
wxString
*
)
NULL
);
if
(
(
filename
.
Len
()
+
m_CurrentSheet
->
PathHumanReadable
().
Len
()
)
<
50
)
{
filename
+=
m_CurrentSheet
->
PathHumanReadable
();
filename
.
Replace
(
wxT
(
"/"
),
wxT
(
"-"
)
);
filename
.
RemoveLast
();
}
else
{
wxSplitPath
(
g_RootSheet
->
GetFileName
().
GetData
(),
(
wxString
*
)
NULL
,
&
filename
,
(
wxString
*
)
NULL
);
filename
<<
wxT
(
"-"
)
<<
GetScreen
()
->
m_ScreenNumber
;
}
return
filename
;
}
/**************************************************************/
void
WinEDA_SchematicFrame
::
OnAnnotate
(
wxCommandEvent
&
event
)
...
...
include/wxEeschemaStruct.h
View file @
31e3e985
...
...
@@ -159,9 +159,20 @@ public:
*/
void
DeleteAnnotation
(
bool
aCurrentSheetOnly
,
bool
aRedraw
);
// F
U
nctions used for hierarchy handling
// F
u
nctions used for hierarchy handling
void
InstallPreviousSheet
();
void
InstallNextScreen
(
DrawSheetStruct
*
Sheet
);
/** Function GetUniqueFilenameForCurrentSheet
* @return a filename that can be used in plot and print functions
* for the current screen anad sheet path.
* This filename is unique and must be used insteed of the sreen filename
* (or scheen filename) when one must creates file for each sheet in the heierarchy.
* because in complex hierarchies a sheet and a SCH_SCREEN is used more than once
* Name is <root sheet filename>-<sheet path>
* and has no extension.
* However if filename is too long name is <sheet filename>-<sheet number>
*/
wxString
GetUniqueFilenameForCurrentSheet
(
);
/**
* Function SetSheetNumberAndCount
...
...
share/svg_print.cpp
View file @
31e3e985
...
...
@@ -192,7 +192,7 @@ void WinEDA_PrintSVGFrame::CreateControls()
SetFont
(
*
g_DialogFont
);
////@begin WinEDA_PrintSVGFrame content construction
// Generated by DialogBlocks,
27/08/2008 08:07:11
(unregistered)
// Generated by DialogBlocks,
08/01/2009 12:58:57
(unregistered)
WinEDA_PrintSVGFrame
*
itemDialog1
=
this
;
...
...
@@ -227,7 +227,7 @@ void WinEDA_PrintSVGFrame::CreateControls()
wxArrayString
m_PagesOptionStrings
;
m_PagesOptionStrings
.
Add
(
_
(
"Current"
));
m_PagesOptionStrings
.
Add
(
_
(
"All"
));
m_PagesOption
=
new
wxRadioBox
(
itemDialog1
,
ID_RADIOBOX
1
,
_
(
"Page Print:"
),
wxDefaultPosition
,
wxDefaultSize
,
m_PagesOptionStrings
,
1
,
wxRA_SPECIFY_COLS
);
m_PagesOption
=
new
wxRadioBox
(
itemDialog1
,
ID_RADIOBOX
_SELPAGE
,
_
(
"Page Print:"
),
wxDefaultPosition
,
wxDefaultSize
,
m_PagesOptionStrings
,
1
,
wxRA_SPECIFY_COLS
);
m_PagesOption
->
SetSelection
(
0
);
itemBoxSizer9
->
Add
(
m_PagesOption
,
0
,
wxALIGN_LEFT
|
wxALL
,
5
);
...
...
@@ -240,22 +240,14 @@ void WinEDA_PrintSVGFrame::CreateControls()
itemButton12
->
SetForegroundColour
(
wxColour
(
0
,
0
,
198
));
itemBoxSizer9
->
Add
(
itemButton12
,
0
,
wxGROW
|
wxALL
,
5
);
wxGrid
*
itemGrid13
=
new
wxGrid
(
itemDialog1
,
ID_GRID1
,
wxDefaultPosition
,
wxSize
(
200
,
150
),
wxSUNKEN_BORDER
|
wxHSCROLL
|
wxVSCROLL
);
itemGrid13
->
SetDefaultColSize
(
50
);
itemGrid13
->
SetDefaultRowSize
(
25
);
itemGrid13
->
SetColLabelSize
(
25
);
itemGrid13
->
SetRowLabelSize
(
50
);
itemGrid13
->
CreateGrid
(
5
,
5
,
wxGrid
::
wxGridSelectCells
);
itemBoxSizer3
->
Add
(
itemGrid13
,
0
,
wxALIGN_CENTER_VERTICAL
|
wxALL
,
5
);
wxStaticText
*
itemStaticText14
=
new
wxStaticText
(
itemDialog1
,
wxID_STATIC
,
_
(
"Filename:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemBoxSizer2
->
Add
(
itemStaticText14
,
0
,
wxALIGN_LEFT
|
wxLEFT
|
wxRIGHT
|
wxTOP
|
wxADJUST_MINSIZE
,
5
);
wxStaticText
*
itemStaticText13
=
new
wxStaticText
(
itemDialog1
,
wxID_STATIC
,
_
(
"Filename:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemBoxSizer2
->
Add
(
itemStaticText13
,
0
,
wxALIGN_LEFT
|
wxLEFT
|
wxRIGHT
|
wxTOP
|
wxADJUST_MINSIZE
,
5
);
m_FileNameCtrl
=
new
wxTextCtrl
(
itemDialog1
,
ID_TEXTCTRL
,
_T
(
""
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemBoxSizer2
->
Add
(
m_FileNameCtrl
,
0
,
wxGROW
|
wxLEFT
|
wxRIGHT
|
wxBOTTOM
,
5
);
wxStaticText
*
itemStaticText1
6
=
new
wxStaticText
(
itemDialog1
,
wxID_STATIC
,
_
(
"Messages:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemBoxSizer2
->
Add
(
itemStaticText1
6
,
0
,
wxALIGN_LEFT
|
wxLEFT
|
wxRIGHT
|
wxTOP
|
wxADJUST_MINSIZE
,
5
);
wxStaticText
*
itemStaticText1
5
=
new
wxStaticText
(
itemDialog1
,
wxID_STATIC
,
_
(
"Messages:"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
itemBoxSizer2
->
Add
(
itemStaticText1
5
,
0
,
wxALIGN_LEFT
|
wxLEFT
|
wxRIGHT
|
wxTOP
|
wxADJUST_MINSIZE
,
5
);
m_MessagesBox
=
new
wxTextCtrl
(
itemDialog1
,
ID_TEXTCTRL1
,
_T
(
""
),
wxDefaultPosition
,
wxSize
(
-
1
,
100
),
wxTE_MULTILINE
|
wxTE_READONLY
);
itemBoxSizer2
->
Add
(
m_MessagesBox
,
0
,
wxGROW
|
wxLEFT
|
wxRIGHT
|
wxBOTTOM
,
5
);
...
...
@@ -311,18 +303,6 @@ wxIcon WinEDA_PrintSVGFrame::GetIconResource( const wxString& name )
}
/******************************************************/
wxString
WinEDA_PrintSVGFrame
::
ReturnFullFileName
()
/******************************************************/
{
wxString
name
,
ext
;
name
=
m_Parent
->
GetBaseScreen
()
->
m_FileName
;
ChangeFileNameExt
(
name
,
wxT
(
".svg"
)
);
return
name
;
}
/********************************************/
void
WinEDA_PrintSVGFrame
::
SetPenWidth
()
/********************************************/
...
...
@@ -362,7 +342,7 @@ void WinEDA_PrintSVGFrame::PrintSVGDoc( wxCommandEvent& event )
SetPenWidth
();
wxString
FullFileName
;
BASE_SCREEN
*
screen
=
m_Parent
->
GetBaseScreen
();
BASE_SCREEN
*
oldscreen
=
screen
;
#ifndef EESCHEMA
...
...
@@ -388,14 +368,33 @@ void WinEDA_PrintSVGFrame::PrintSVGDoc( wxCommandEvent& event )
#ifdef EESCHEMA
if
(
Select_PrintAll
&&
m_Parent
->
m_Ident
==
SCHEMATIC_FRAME
)
{
EDA_ScreenList
ScreenList
;
for
(
SCH_SCREEN
*
schscreen
=
ScreenList
.
GetFirst
();
schscreen
!=
NULL
;
schscreen
=
ScreenList
.
GetNext
()
)
WinEDA_SchematicFrame
*
schframe
=
(
WinEDA_SchematicFrame
*
)
m_Parent
;
DrawSheetPath
*
sheetpath
,
*
oldsheetpath
=
schframe
->
GetSheet
();
SCH_SCREEN
*
schscreen
=
schframe
->
GetScreen
();
oldscreen
=
schscreen
;
EDA_SheetList
SheetList
(
NULL
);
sheetpath
=
SheetList
.
GetFirst
();
DrawSheetPath
list
;
for
(
;
;
)
{
/* Create all files *.svg */
(
(
WinEDA_SchematicFrame
*
)
m_Parent
)
->
SetScreen
(
schscreen
);
wxString
FullFileName
=
schscreen
->
m_FileName
;
ChangeFileNameExt
(
FullFileName
,
wxT
(
".svg"
)
);
if
(
sheetpath
==
NULL
)
break
;
list
.
Clear
();
if
(
list
.
BuildSheetPathInfoFromSheetPathValue
(
sheetpath
->
Path
()
)
)
{
schframe
->
m_CurrentSheet
=
&
list
;
schframe
->
m_CurrentSheet
->
UpdateAllScreenReferences
();
schframe
->
SetSheetNumberAndCount
();
schscreen
=
schframe
->
m_CurrentSheet
->
LastScreen
();
ActiveScreen
=
schscreen
;
}
else
// Should not happen
return
;
sheetpath
=
SheetList
.
GetNext
();
FullFileName
=
schframe
->
GetUniqueFilenameForCurrentSheet
(
)
+
wxT
(
".svg"
);
bool
success
=
DrawPage
(
FullFileName
,
schscreen
);
msg
=
_
(
"Create file "
)
+
FullFileName
;
if
(
!
success
)
...
...
@@ -403,11 +402,14 @@ void WinEDA_PrintSVGFrame::PrintSVGDoc( wxCommandEvent& event )
msg
+=
wxT
(
"
\n
"
);
m_MessagesBox
->
AppendText
(
msg
);
}
schframe
->
m_CurrentSheet
=
oldsheetpath
;
schframe
->
m_CurrentSheet
->
UpdateAllScreenReferences
();
schframe
->
SetSheetNumberAndCount
();
}
else
#endif
{
wxString
FullFileName
=
m_FileNameCtrl
->
GetValue
();
FullFileName
=
m_FileNameCtrl
->
GetValue
();
if
(
FullFileName
.
IsEmpty
()
)
{
FullFileName
=
screen
->
m_FileName
;
...
...
share/svg_print.h
View file @
31e3e985
/////////////////////////////////////////////////////////////////////////////
// Name: svg_print.h
// Purpose:
// Purpose:
// Author: jean-pierre Charras
// Modified by:
// Modified by:
// Created: 05/02/2006 11:05:20
// RCS-ID:
// RCS-ID:
// Copyright: License GNU
// Licence:
// Licence:
/////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 05/02/2006 11:05:20
...
...
@@ -24,7 +24,6 @@
////@begin includes
#include "wx/valgen.h"
#include "wx/grid.h"
////@end includes
/*!
...
...
@@ -43,9 +42,8 @@ class wxBoxSizer;
#define ID_DIALOG 10000
#define ID_RADIOBOX_SETPRINTMODE 10007
#define ID_CHECKBOX 10004
#define ID_RADIOBOX
1
10008
#define ID_RADIOBOX
_SELPAGE
10008
#define ID_PRINT_EXECUTE 10002
#define ID_GRID1 10003
#define ID_TEXTCTRL 10001
#define ID_TEXTCTRL1 10006
#define SYMBOL_WINEDA_PRINTSVGFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|wxFRAME_FLOAT_ON_PARENT|MAYBE_RESIZE_BORDER
...
...
@@ -68,7 +66,7 @@ class wxBoxSizer;
*/
class
WinEDA_PrintSVGFrame
:
public
wxDialog
{
{
DECLARE_DYNAMIC_CLASS
(
WinEDA_PrintSVGFrame
)
DECLARE_EVENT_TABLE
()
...
...
@@ -118,7 +116,6 @@ public:
void
PrintSVGDoc
(
wxCommandEvent
&
event
);
bool
DrawPage
(
const
wxString
&
FullFileName
,
BASE_SCREEN
*
screen
);
wxString
ReturnFullFileName
();
////@begin WinEDA_PrintSVGFrame member variables
wxBoxSizer
*
m_DialogPenWidthSizer
;
...
...
share/svg_print.pjd
View file @
31e3e985
...
...
@@ -556,7 +556,7 @@
<bool
name=
"proxy-wxFIXED_MINSIZE"
>
0
</bool>
<string
name=
"proxy-Platform"
>
"
<
Any platform
>
"
</string>
<document>
<string
name=
"title"
>
"wxRadioBox: ID_RADIOBOX
1
"
</string>
<string
name=
"title"
>
"wxRadioBox: ID_RADIOBOX
_SELPAGE
"
</string>
<string
name=
"type"
>
"dialog-control-document"
</string>
<string
name=
"filename"
>
""
</string>
<string
name=
"icon-name"
>
"radiobox"
</string>
...
...
@@ -566,7 +566,7 @@
<long
name=
"locked"
>
0
</long>
<string
name=
"created"
>
"23/12/2006"
</string>
<string
name=
"proxy-type"
>
"wbRadioBoxProxy"
</string>
<string
name=
"proxy-Id name"
>
"ID_RADIOBOX
1
"
</string>
<string
name=
"proxy-Id name"
>
"ID_RADIOBOX
_SELPAGE
"
</string>
<long
name=
"proxy-Id value"
>
10008
</long>
<string
name=
"proxy-Name"
>
""
</string>
<string
name=
"proxy-Class"
>
"wxRadioBox"
</string>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment