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
af7b6691
Commit
af7b6691
authored
Apr 21, 2008
by
charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
see changelog
parent
9b082be0
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
11342 additions
and
140 deletions
+11342
-140
change_log.txt
change_log.txt
+10
-0
annotate.cpp
eeschema/annotate.cpp
+71
-47
annotate_dialog.cpp
eeschema/annotate_dialog.cpp
+1
-3
block.cpp
eeschema/block.cpp
+4
-4
class_drawsheet.cpp
eeschema/class_drawsheet.cpp
+0
-26
class_drawsheet.h
eeschema/class_drawsheet.h
+44
-41
component_class.cpp
eeschema/component_class.cpp
+28
-11
component_class.h
eeschema/component_class.h
+7
-1
controle.cpp
eeschema/controle.cpp
+257
-3
hierarch.cpp
eeschema/hierarch.cpp
+1
-1
schedit.cpp
eeschema/schedit.cpp
+1
-1
schframe.cpp
eeschema/schframe.cpp
+2
-1
wxEeschemaStruct.h
include/wxEeschemaStruct.h
+10
-0
CMakeLists.txt
internat/CMakeLists.txt
+1
-1
kicad.mo
internat/nl/kicad.mo
+0
-0
kicad.po
internat/nl/kicad.po
+10905
-0
No files found.
change_log.txt
View file @
af7b6691
...
...
@@ -5,6 +5,16 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
email address.
2008-Apr-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+eeschema
* Added WinEDA_LibeditFrame::GeneralControle( wxDC* DC, wxPoint Mouse );
* Added WinEDA_ViewlibFrame::GeneralControle( wxDC* DC, wxPoint Mouse );
Needed: Move redundant code to WinEDA_DrawFrame::GeneralControle
** Current sheet only Annotation and clear annotation now works for complex hierarchies
2008-Apr-17 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
+all
...
...
eeschema/annotate.cpp
View file @
af7b6691
...
...
@@ -16,8 +16,8 @@ static void BreakReference( CmpListStruct* BaseListeCmp, int NbOfCmp );
static
void
ReAnnotateComponents
(
CmpListStruct
*
BaseListeCmp
,
int
NbOfCmp
);
static
void
ComputeReferenceNumber
(
CmpListStruct
*
BaseListeCmp
,
int
NbOfCmp
);
int
GetLastReferenceNumber
(
CmpListStruct
*
Objet
,
CmpListStruct
*
BaseListeCmp
,
int
NbOfCmp
);
CmpListStruct
*
BaseListeCmp
,
int
NbOfCmp
);
static
int
ExistUnit
(
CmpListStruct
*
Objet
,
int
Unit
,
CmpListStruct
*
BaseListeCmp
,
int
NbOfCmp
);
...
...
@@ -90,7 +90,7 @@ void ReAnnotatePowerSymbolsOnly( void )
{
if
(
DrawList
->
Type
()
!=
TYPE_SCH_COMPONENT
)
continue
;
SCH_COMPONENT
*
DrawLibItem
=
SCH_COMPONENT
*
DrawLibItem
=
(
SCH_COMPONENT
*
)
DrawList
;
EDA_LibComponentStruct
*
Entry
=
FindLibPart
(
...
...
@@ -118,27 +118,23 @@ void ReAnnotatePowerSymbolsOnly( void )
CmpListStruct
*
AllocateCmpListStrct
(
int
numcomponents
)
{
int
ii
=
numcomponents
*
sizeof
(
CmpListStruct
);
CmpListStruct
*
list
=
(
CmpListStruct
*
)
MyZMalloc
(
ii
);
//fill this memory with zeros.
char
*
cptr
=
(
char
*
)
list
;
int
ii
=
numcomponents
*
sizeof
(
CmpListStruct
);
for
(
int
i
=
0
;
i
<
ii
;
i
++
)
*
cptr
++
=
0
;
//allocate memory and fill this memory with zeros.
CmpListStruct
*
list
=
(
CmpListStruct
*
)
MyZMalloc
(
ii
)
;
return
list
;
}
/* qsort function to annotate items by their position.
* Components are sorted
* by reference
* if same reference: by sheet
* if same sheet, by X pos
* if same X pos, by Y pos
* if same Y pos, by time stamp
*/
* Components are sorted
* by reference
* if same reference: by sheet
* if same sheet, by X pos
* if same X pos, by Y pos
* if same Y pos, by time stamp
*/
int
AnnotateByPosition
(
const
void
*
o1
,
const
void
*
o2
)
{
CmpListStruct
*
item1
=
(
CmpListStruct
*
)
o1
;
...
...
@@ -192,24 +188,53 @@ int AnnotateByValue( const void* o1, const void* o2 )
}
/*****************************************************************************
* DeleteAnnotation:
*
* Clear the current annotation.
****************************************************************************/
void
DeleteAnnotation
(
WinEDA_SchematicFrame
*
parent
,
bool
annotateSchematic
)
/**************************************************************************************/
void
WinEDA_SchematicFrame
::
DeleteAnnotation
(
bool
aCurrentSheetOnly
,
bool
aRedraw
)
/**************************************************************************************/
/** Function DeleteAnnotation
* Remove current component annotations
* @param aCurrentSheetOnly : if false: remove all annotations, else remove annotation relative to the current sheet only
* @param aRedraw : true to refresh display
*/
{
DrawSheetStruct
*
sheet
;
EDA_BaseStruct
*
strct
;
SCH_SCREEN
*
screen
;
EDA_ScreenList
ScreenList
;
if
(
annotateSchematic
)
sheet
=
g_RootSheet
;
else
sheet
=
parent
->
GetSheet
()
->
Last
();
screen
=
ScreenList
.
GetFirst
();
sheet
->
DeleteAnnotation
(
annotateSchematic
);
if
(
aCurrentSheetOnly
)
screen
=
GetScreen
();
g_RootSheet
->
m_AssociatedScreen
->
SetModify
();
parent
->
DrawPanel
->
Refresh
(
true
);
if
(
screen
==
NULL
)
return
;
while
(
screen
)
{
strct
=
screen
->
EEDrawList
;
for
(
;
strct
;
strct
=
strct
->
Pnext
)
{
if
(
strct
->
Type
()
==
TYPE_SCH_COMPONENT
)
{
if
(
aCurrentSheetOnly
)
(
(
SCH_COMPONENT
*
)
strct
)
->
ClearAnnotation
(
m_CurrentSheet
);
else
(
(
SCH_COMPONENT
*
)
strct
)
->
ClearAnnotation
(
NULL
);
}
}
screen
->
SetModify
();
if
(
aCurrentSheetOnly
)
break
;
screen
=
ScreenList
.
GetNext
();
}
//update the References
m_CurrentSheet
->
UpdateAllScreenReferences
();
if
(
aRedraw
)
DrawPanel
->
Refresh
(
true
);
}
...
...
@@ -236,9 +261,9 @@ void AnnotateComponents( WinEDA_SchematicFrame* parent,
wxBusyCursor
dummy
;
/* If it is an annotation for all the components, reset previous
* annotation: */
* annotation: */
if
(
resetAnnotation
)
DeleteAnnotation
(
parent
,
annotateSchematic
);
parent
->
DeleteAnnotation
(
!
annotateSchematic
,
false
);
/* Build the sheet list */
EDA_SheetList
SheetList
(
g_RootSheet
);
...
...
@@ -281,7 +306,7 @@ void AnnotateComponents( WinEDA_SchematicFrame* parent,
DisplayError
(
parent
,
wxT
(
"Internal error in AnnotateComponents()"
)
);
/* Break full components reference in name (prefix) and number:
* example: IC1 become IC, and 1 */
* example: IC1 become IC, and 1 */
BreakReference
(
BaseListeCmp
,
NbOfCmp
);
if
(
sortByPosition
)
...
...
@@ -289,7 +314,7 @@ void AnnotateComponents( WinEDA_SchematicFrame* parent,
(
int
(
*
)
(
const
void
*
,
const
void
*
)
)
AnnotateByPosition
);
else
qsort
(
BaseListeCmp
,
NbOfCmp
,
sizeof
(
CmpListStruct
),
(
int
(
*
)
(
const
void
*
,
const
void
*
)
)
AnnotateByValue
);
(
int
(
*
)
(
const
void
*
,
const
void
*
)
)
AnnotateByValue
);
/* Recalculate reference numbers */
ComputeReferenceNumber
(
BaseListeCmp
,
NbOfCmp
);
...
...
@@ -312,7 +337,7 @@ int ListeComposants( CmpListStruct* BaseListeCmp, DrawSheetPath* sheet )
{
int
NbrCmp
=
0
;
EDA_BaseStruct
*
DrawList
=
sheet
->
LastDrawList
();
SCH_COMPONENT
*
DrawLibItem
;
SCH_COMPONENT
*
DrawLibItem
;
EDA_LibComponentStruct
*
Entry
;
for
(
;
DrawList
;
DrawList
=
DrawList
->
Pnext
)
...
...
@@ -334,7 +359,7 @@ int ListeComposants( CmpListStruct* BaseListeCmp, DrawSheetPath* sheet )
BaseListeCmp
[
NbrCmp
].
m_Cmp
=
DrawLibItem
;
BaseListeCmp
[
NbrCmp
].
m_NbParts
=
Entry
->
m_UnitCount
;
BaseListeCmp
[
NbrCmp
].
m_Unit
=
DrawLibItem
->
GetUnitSelection
(
sheet
);
// DrawLibItem->m_Multi;
BaseListeCmp
[
NbrCmp
].
m_Unit
=
DrawLibItem
->
GetUnitSelection
(
sheet
);
// DrawLibItem->m_Multi;
BaseListeCmp
[
NbrCmp
].
m_PartsLocked
=
Entry
->
m_UnitSelectionLocked
;
BaseListeCmp
[
NbrCmp
].
m_SheetList
=
*
sheet
;
BaseListeCmp
[
NbrCmp
].
m_IsNew
=
FALSE
;
...
...
@@ -368,8 +393,8 @@ int ListeComposants( CmpListStruct* BaseListeCmp, DrawSheetPath* sheet )
*****************************************************************************/
static
void
ReAnnotateComponents
(
CmpListStruct
*
BaseListeCmp
,
int
NbOfCmp
)
{
int
ii
;
char
*
Text
;
int
ii
;
char
*
Text
;
SCH_COMPONENT
*
DrawLibItem
;
/* Reattribution des numeros */
...
...
@@ -439,7 +464,6 @@ void BreakReference( CmpListStruct* BaseListeCmp, int NbOfCmp )
break
;
}
}
}
}
...
...
@@ -497,7 +521,7 @@ static void ComputeReferenceNumber( CmpListStruct* BaseListeCmp, int NbOfCmp )
}
/* Annotation of multi-part components ( n parts per package )
* (complex case) */
* (complex case) */
ValText
=
BaseListeCmp
[
ii
].
m_TextValue
;
NumberOfUnits
=
BaseListeCmp
[
ii
].
m_NbParts
;
...
...
@@ -537,7 +561,7 @@ static void ComputeReferenceNumber( CmpListStruct* BaseListeCmp, int NbOfCmp )
}
/* Component without reference number found, annotate it if
* possible */
* possible */
if
(
!
BaseListeCmp
[
jj
].
m_PartsLocked
||
(
BaseListeCmp
[
jj
].
m_Unit
==
Unit
)
)
{
...
...
@@ -609,15 +633,15 @@ static int ExistUnit( CmpListStruct* Objet, int Unit,
ItemToTest
<
EndList
;
ItemToTest
++
,
ii
++
)
{
if
(
Objet
==
ItemToTest
)
// Do not compare with itself !
if
(
Objet
==
ItemToTest
)
// Do not compare with itself !
continue
;
if
(
ItemToTest
->
m_IsNew
)
// Not already with an updated reference
if
(
ItemToTest
->
m_IsNew
)
// Not already with an updated reference
continue
;
if
(
ItemToTest
->
m_NumRef
!=
NumRef
)
// Not the same reference number (like 35 in R35)
if
(
ItemToTest
->
m_NumRef
!=
NumRef
)
// Not the same reference number (like 35 in R35)
continue
;
if
(
strnicmp
(
RefText
,
ItemToTest
->
m_TextRef
,
32
)
!=
0
)
// Not the same reference prefix
continue
;
if
(
ItemToTest
->
m_Unit
==
Unit
)
// A part with the same reference and the given unit is found
if
(
ItemToTest
->
m_Unit
==
Unit
)
// A part with the same reference and the given unit is found
{
return
ii
;
}
...
...
@@ -685,7 +709,7 @@ int CheckAnnotate( WinEDA_SchematicFrame* frame, bool oneSheetOnly )
qsort
(
ListeCmp
,
NbOfCmp
,
sizeof
(
CmpListStruct
),
AnnotateByValue
);
/* Break full components reference in name (prefix) and number: example:
* IC1 become IC, and 1 */
* IC1 become IC, and 1 */
BreakReference
(
ListeCmp
,
NbOfCmp
);
/* count not yet annotated items */
...
...
eeschema/annotate_dialog.cpp
View file @
af7b6691
...
...
@@ -34,8 +34,6 @@
#include "program.h"
#include "annotate_dialog.h"
extern
void
DeleteAnnotation
(
WinEDA_SchematicFrame
*
parent
,
bool
annotateSchematic
);
extern
void
AnnotateComponents
(
WinEDA_SchematicFrame
*
parent
,
bool
annotateSchematic
,
bool
sortByPosition
,
...
...
@@ -262,7 +260,7 @@ void WinEDA_AnnotateFrame::OnClearAnnotationCmpClick( wxCommandEvent& event )
wxICON_EXCLAMATION
|
wxOK
|
wxCANCEL
);
if
(
response
==
wxCANCEL
)
return
;
DeleteAnnotation
(
m_Parent
,
GetLevel
()
);
m_Parent
->
DeleteAnnotation
(
GetLevel
()
?
false
:
true
,
true
);
m_btnClear
->
Enable
(
false
);
}
...
...
eeschema/block.cpp
View file @
af7b6691
...
...
@@ -828,7 +828,7 @@ static SCH_ITEM * CopyStruct( WinEDA_DrawPanel* panel, wxDC* DC, BASE_SCREEN* sc
case
TYPE_SCH_COMPONENT
:
{
(
(
SCH_COMPONENT
*
)
Struct
)
->
m_TimeStamp
=
GetTimeStamp
();
(
(
SCH_COMPONENT
*
)
Struct
)
->
ClearAnnotation
();
(
(
SCH_COMPONENT
*
)
Struct
)
->
ClearAnnotation
(
NULL
);
}
break
;
...
...
@@ -893,7 +893,7 @@ static SCH_ITEM * CopyStruct( WinEDA_DrawPanel* panel, wxDC* DC, BASE_SCREEN* sc
case
TYPE_SCH_COMPONENT
:
(
(
SCH_COMPONENT
*
)
NewDrawStruct
)
->
m_TimeStamp
=
GetTimeStamp
();
(
(
SCH_COMPONENT
*
)
NewDrawStruct
)
->
ClearAnnotation
();
(
(
SCH_COMPONENT
*
)
NewDrawStruct
)
->
ClearAnnotation
(
NULL
);
break
;
}
...
...
@@ -1051,7 +1051,7 @@ void WinEDA_SchematicFrame::PasteStruct( wxDC* DC )
if
(
Struct
->
Type
()
==
TYPE_SCH_COMPONENT
)
{
(
(
SCH_COMPONENT
*
)
Struct
)
->
m_TimeStamp
=
GetTimeStamp
();
(
(
SCH_COMPONENT
*
)
Struct
)
->
ClearAnnotation
();
(
(
SCH_COMPONENT
*
)
Struct
)
->
ClearAnnotation
(
NULL
);
SetStructFather
(
Struct
,
GetScreen
()
);
}
PickedList
=
(
DrawPickedStruct
*
)
PickedList
->
Pnext
;
...
...
@@ -1075,7 +1075,7 @@ void WinEDA_SchematicFrame::PasteStruct( wxDC* DC )
if
(
DrawStruct
->
Type
()
==
TYPE_SCH_COMPONENT
)
{
(
(
SCH_COMPONENT
*
)
DrawStruct
)
->
m_TimeStamp
=
GetTimeStamp
();
(
(
SCH_COMPONENT
*
)
DrawStruct
)
->
ClearAnnotation
();
(
(
SCH_COMPONENT
*
)
DrawStruct
)
->
ClearAnnotation
(
NULL
);
}
SetStructFather
(
DrawStruct
,
GetScreen
()
);
RedrawOneStruct
(
DrawPanel
,
DC
,
DrawStruct
,
GR_DEFAULT_DRAWMODE
);
...
...
eeschema/class_drawsheet.cpp
View file @
af7b6691
...
...
@@ -359,32 +359,6 @@ EDA_Rect DrawSheetStruct::GetBoundingBox()
}
/**************************************************************************************/
void
DrawSheetStruct
::
DeleteAnnotation
(
bool
recurse
)
/**************************************************************************************/
{
if
(
recurse
&&
m_AssociatedScreen
)
{
EDA_BaseStruct
*
strct
=
m_AssociatedScreen
->
EEDrawList
;
for
(
;
strct
;
strct
=
strct
->
Pnext
)
{
if
(
strct
->
Type
()
==
DRAW_SHEET_STRUCT_TYPE
)
{
DrawSheetStruct
*
sheet
=
(
DrawSheetStruct
*
)
strct
;
sheet
->
DeleteAnnotation
(
recurse
);
}
}
}
EDA_BaseStruct
*
comp
=
m_AssociatedScreen
->
EEDrawList
;
for
(
;
comp
;
comp
=
comp
->
Pnext
)
{
if
(
comp
->
Type
()
==
TYPE_SCH_COMPONENT
)
{
(
(
SCH_COMPONENT
*
)
comp
)
->
ClearAnnotation
();
}
}
}
/*******************************************************************/
int
DrawSheetStruct
::
ComponentCount
()
...
...
eeschema/class_drawsheet.h
View file @
af7b6691
...
...
@@ -20,13 +20,13 @@ class Hierarchical_PIN_Sheet_Struct : public SCH_ITEM,
public
:
int
m_Edge
,
m_Shape
;
bool
m_IsDangling
;
// TRUE non connected
int
m_Number
;
// used to numbered labels when writing data on file . m_Number >= 2
int
m_Number
;
// used to numbered labels when writing data on file . m_Number >= 2
// value 0 is for sheet name and 1 for sheet filename
public
:
Hierarchical_PIN_Sheet_Struct
(
DrawSheetStruct
*
parent
,
const
wxPoint
&
pos
=
wxPoint
(
0
,
0
),
const
wxString
&
text
=
wxEmptyString
);
const
wxPoint
&
pos
=
wxPoint
(
0
,
0
),
const
wxString
&
text
=
wxEmptyString
);
~
Hierarchical_PIN_Sheet_Struct
()
{
}
virtual
wxString
GetClass
()
const
...
...
@@ -35,14 +35,14 @@ public:
}
Hierarchical_PIN_Sheet_Struct
*
GenCopy
();
Hierarchical_PIN_Sheet_Struct
*
GenCopy
();
Hierarchical_PIN_Sheet_Struct
*
Next
()
{
return
(
Hierarchical_PIN_Sheet_Struct
*
)
Pnext
;
}
void
Place
(
WinEDA_SchematicFrame
*
frame
,
wxDC
*
DC
);
void
Draw
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
const
wxPoint
&
offset
,
int
draw_mode
,
int
Color
=
-
1
);
void
Place
(
WinEDA_SchematicFrame
*
frame
,
wxDC
*
DC
);
void
Draw
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
const
wxPoint
&
offset
,
int
draw_mode
,
int
Color
=
-
1
);
/**
* Function Save
...
...
@@ -50,38 +50,38 @@ public:
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
*/
bool
Save
(
FILE
*
aFile
)
const
;
bool
Save
(
FILE
*
aFile
)
const
;
};
/* class DrawSheetStruct
* This class is the sheet symbol placed in a schematic, and is the entry point for a sub schematic
* This class is the sheet symbol placed in a schematic, and is the entry point for a sub schematic
*/
WX_DEFINE_ARRAY
(
DrawSheetStruct
*
,
SheetGrowArray
);
class
DrawSheetStruct
:
public
SCH_ITEM
/*public SCH_SCREEN*/
/* Gestion de la hierarchie */
{
public
:
wxString
m_SheetName
;
//
this is equivalent to C101 for components:
// it is stored in F0 ... of the file.
wxString
m_SheetName
;
/*
this is equivalent to C101 for components:
* it is stored in F0 ... of the file. */
private
:
wxString
m_FileName
;
//
also in SCH_SCREEN (redundant),
//
but need it here for loading after
//reading the sheet description from file.
wxString
m_FileName
;
/*
also in SCH_SCREEN (redundant),
*
but need it here for loading after
* reading the sheet description from file. */
public
:
int
m_SheetNameSize
;
// Size (height) of the text, used to draw the name
int
m_FileNameSize
;
// Size (height) of the text, used to draw the name
wxPoint
m_Pos
;
wxSize
m_Size
;
/* Position and Size of sheet symbol */
int
m_Layer
;
Hierarchical_PIN_Sheet_Struct
*
m_Label
;
/* Points de connection, linked list.*/
int
m_NbLabel
;
/* Nombre de points de connexion */
SCH_SCREEN
*
m_AssociatedScreen
;
/* Associated Screen which handle the physical data
* In complex hierarchies we can have many DrawSheetStruct using the same data
int
m_SheetNameSize
;
/* Size (height) of the text, used to draw the name */
int
m_FileNameSize
;
/* Size (height) of the text, used to draw the name */
wxPoint
m_Pos
;
wxSize
m_Size
;
/* Position and Size of sheet symbol */
int
m_Layer
;
Hierarchical_PIN_Sheet_Struct
*
m_Label
;
/* Points de connection, linked list.*/
int
m_NbLabel
;
/* Nombre de points de connexion */
SCH_SCREEN
*
m_AssociatedScreen
;
/* Associated Screen which handle the physical data
* In complex hierarchies we can have many DrawSheetStruct using the same data
*/
int
m_SheetNumber
;
// sheet number (used for info)
int
m_NumberOfSheets
;
// Sheets count in the whole schematic (used for info)
int
m_SheetNumber
;
// sheet number (used for info)
int
m_NumberOfSheets
;
// Sheets count in the whole schematic (used for info)
public
:
DrawSheetStruct
(
const
wxPoint
&
pos
=
wxPoint
(
0
,
0
)
);
...
...
@@ -91,13 +91,14 @@ public:
return
wxT
(
"DrawSheetStruct"
);
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
*/
bool
Save
(
FILE
*
aFile
)
const
;
bool
Save
(
FILE
*
aFile
)
const
;
void
Place
(
WinEDA_SchematicFrame
*
frame
,
wxDC
*
DC
);
DrawSheetStruct
*
GenCopy
();
...
...
@@ -107,15 +108,14 @@ public:
int
draw_mode
,
int
Color
=
-
1
);
EDA_Rect
GetBoundingBox
();
void
SwapData
(
DrawSheetStruct
*
copyitem
);
void
DeleteAnnotation
(
bool
recurse
);
int
ComponentCount
();
bool
Load
(
WinEDA_SchematicFrame
*
frame
);
bool
SearchHierarchy
(
wxString
filename
,
SCH_SCREEN
**
screen
);
bool
SearchHierarchy
(
wxString
filename
,
SCH_SCREEN
**
screen
);
//search the existing hierarchy for an instance of screen "FileName".
bool
LocatePathOfScreen
(
SCH_SCREEN
*
screen
,
DrawSheetPath
*
list
);
int
CountSheets
();
wxString
GetFileName
(
void
);
void
SetFileName
(
const
wxString
&
aFilename
);
// Set a new filename without changing anything else
bool
ChangeFileName
(
WinEDA_SchematicFrame
*
aFrame
,
const
wxString
&
aFileName
);
// Set a new filename and manage data and associated screen
wxString
GetFileName
(
void
);
void
SetFileName
(
const
wxString
&
aFilename
);
// Set a new filename without changing anything else
bool
ChangeFileName
(
WinEDA_SchematicFrame
*
aFrame
,
const
wxString
&
aFileName
);
// Set a new filename and manage data and associated screen
//void RemoveSheet(DrawSheetStruct* sheet);
//to remove a sheet, just delete it
...
...
@@ -143,23 +143,26 @@ public:
EDA_BaseStruct
*
LastDrawList
();
void
Push
(
DrawSheetStruct
*
sheet
);
DrawSheetStruct
*
Pop
();
/** Function Path
* the path uses the time stamps which do not changes even when editing sheet parameters
* a path is something like / (root) or /34005677 or /34005677/00AE4523
*/
* the path uses the time stamps which do not changes even when editing sheet parameters
* a path is something like / (root) or /34005677 or /34005677/00AE4523
*/
wxString
Path
();
/** Function PathHumanReadable
* Return the sheet path in a readable form, i.e.
* as a path made from sheet names.
* (the "normal" path uses the time stamps which do not changes even when editing sheet parameters)
*/
* Return the sheet path in a readable form, i.e.
* as a path made from sheet names.
* (the "normal" path uses the time stamps which do not changes even when editing sheet parameters)
*/
wxString
PathHumanReadable
();
/** Function UpdateAllScreenReferences
* Update the reference and the m_Multi parameter (part selection) for all components on a screen
* depending on the actual sheet path.
* Mandatory in complex hierarchies because sheets use the same screen (basic schematic)
* but with different references and part selection according to the displayed sheet
*/
*/
void
UpdateAllScreenReferences
();
bool
operator
=
(
const
DrawSheetPath
&
d1
);
...
...
@@ -181,7 +184,7 @@ class EDA_SheetList
private
:
DrawSheetPath
*
m_List
;
int
m_count
;
/* Number of sheets included in hierarchy,
* starting at the given sheet in constructor . the given sheet is counted
* starting at the given sheet in constructor . the given sheet is counted
*/
int
m_index
;
DrawSheetPath
m_currList
;
...
...
eeschema/component_class.cpp
View file @
af7b6691
...
...
@@ -442,16 +442,21 @@ void SCH_COMPONENT::Place( WinEDA_SchematicFrame* frame, wxDC* DC )
}
/***************************************************/
void
SCH_COMPONENT
::
ClearAnnotation
()
/***************************************************/
/***************************************************
*******
/
void
SCH_COMPONENT
::
ClearAnnotation
(
DrawSheetPath
*
aSheet
)
/***************************************************
*******
/
/* Suppress annotation ( i.i IC23 changed to IC? and part reset to 1)
/**
* Suppress annotation ( i.i IC23 changed to IC? and part reset to 1)
* @param aSheet: DrawSheetPath value: if NULL remove all annotations,
* else remove annotation relative to this sheetpath
*/
{
wxString
defRef
=
m_PrefixString
;
bool
KeepMulti
=
false
;
wxString
defRef
=
m_PrefixString
;
bool
KeepMulti
=
false
;
EDA_LibComponentStruct
*
Entry
;
wxString
separators
(
wxT
(
" "
)
);
wxArrayString
reference_fields
;
Entry
=
FindLibPart
(
m_ChipName
.
GetData
(),
wxEmptyString
,
FIND_ROOT
);
...
...
@@ -465,15 +470,27 @@ void SCH_COMPONENT::ClearAnnotation()
wxString
multi
=
wxT
(
"1"
);
wxString
NewHref
;
wxString
path
;
if
(
aSheet
)
path
=
GetPath
(
aSheet
);;
for
(
unsigned
int
ii
=
0
;
ii
<
m_PathsAndReferences
.
GetCount
();
ii
++
)
{
if
(
KeepMulti
)
// Get and keep part selection
multi
=
m_PathsAndReferences
[
ii
].
AfterLast
(
wxChar
(
' '
)
);
NewHref
=
m_PathsAndReferences
[
ii
].
BeforeFirst
(
wxChar
(
' '
)
);
NewHref
<<
wxT
(
" "
)
<<
defRef
<<
wxT
(
" "
)
<<
multi
;
m_PathsAndReferences
[
ii
]
=
NewHref
;
// Break hierachical reference in path, ref and multi selection:
reference_fields
=
wxStringTokenize
(
m_PathsAndReferences
[
ii
],
separators
);
if
(
aSheet
==
NULL
||
reference_fields
[
0
].
Cmp
(
path
)
==
0
)
{
if
(
KeepMulti
)
// Get and keep part selection
multi
=
reference_fields
[
2
];
NewHref
=
reference_fields
[
0
];
NewHref
<<
wxT
(
" "
)
<<
defRef
<<
wxT
(
" "
)
<<
multi
;
m_PathsAndReferences
[
ii
]
=
NewHref
;
}
}
// These 2 changes do not work in complex hierarchy.
// When a clear annotation is made, the calling function must call a
// UpdateAllScreenReferences for the active sheet.
// But this call does not made here.
m_Field
[
REFERENCE
].
m_Text
=
defRef
;
//for drawing.
if
(
!
KeepMulti
)
...
...
eeschema/component_class.h
View file @
af7b6691
...
...
@@ -140,7 +140,13 @@ public:
int
GetRotationMiroir
();
wxPoint
GetScreenCoord
(
const
wxPoint
&
coord
);
void
Display_Infos
(
WinEDA_DrawFrame
*
frame
);
void
ClearAnnotation
();
/**
* Suppress annotation ( i.i IC23 changed to IC? and part reset to 1)
* @param aSheet: DrawSheetPath value: if NULL remove all annotations,
* else remove annotation relative to this sheetpath
*/
void
ClearAnnotation
(
DrawSheetPath
*
aSheet
);
EDA_Rect
GetBoundaryBox
()
const
;
EDA_Rect
GetBoundingBox
();
...
...
eeschema/controle.cpp
View file @
af7b6691
...
...
@@ -216,9 +216,264 @@ SCH_ITEM* WinEDA_SchematicFrame:: SchematicGeneralLocateAndDisplay( const wxPoin
}
/***********************************************************************/
/***********************************************************************
**************
/
void
WinEDA_SchematicFrame
::
GeneralControle
(
wxDC
*
DC
,
wxPoint
MousePositionInPixels
)
/***********************************************************************/
/*************************************************************************************/
{
wxSize
delta
;
SCH_SCREEN
*
screen
=
GetScreen
();
int
zoom
=
screen
->
GetZoom
();
wxPoint
curpos
,
oldpos
;
int
hotkey
=
0
;
curpos
=
screen
->
m_MousePosition
;
oldpos
=
screen
->
m_Curseur
;
delta
.
x
=
screen
->
GetGrid
().
x
/
zoom
;
delta
.
y
=
screen
->
GetGrid
().
y
/
zoom
;
if
(
delta
.
x
<=
0
)
delta
.
x
=
1
;
if
(
delta
.
y
<=
0
)
delta
.
y
=
1
;
switch
(
g_KeyPressed
)
{
case
0
:
break
;
case
EDA_PANNING_UP_KEY
:
OnZoom
(
ID_ZOOM_PANNING_UP
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_PANNING_DOWN_KEY
:
OnZoom
(
ID_ZOOM_PANNING_DOWN
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_PANNING_LEFT_KEY
:
OnZoom
(
ID_ZOOM_PANNING_LEFT
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_PANNING_RIGHT_KEY
:
OnZoom
(
ID_ZOOM_PANNING_RIGHT
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_ZOOM_IN_FROM_MOUSE
:
OnZoom
(
ID_ZOOM_IN_KEY
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_ZOOM_OUT_FROM_MOUSE
:
OnZoom
(
ID_ZOOM_OUT_KEY
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_ZOOM_CENTER_FROM_MOUSE
:
OnZoom
(
ID_ZOOM_CENTER_KEY
);
curpos
=
screen
->
m_Curseur
;
break
;
case
WXK_NUMPAD8
:
/* Deplacement curseur vers le haut */
case
WXK_UP
:
MousePositionInPixels
.
y
-=
delta
.
y
;
DrawPanel
->
MouseTo
(
MousePositionInPixels
);
break
;
case
WXK_NUMPAD2
:
/* Deplacement curseur vers le bas */
case
WXK_DOWN
:
MousePositionInPixels
.
y
+=
delta
.
y
;
DrawPanel
->
MouseTo
(
MousePositionInPixels
);
break
;
case
WXK_NUMPAD4
:
/* Deplacement curseur vers la gauche */
case
WXK_LEFT
:
MousePositionInPixels
.
x
-=
delta
.
x
;
DrawPanel
->
MouseTo
(
MousePositionInPixels
);
break
;
case
WXK_NUMPAD6
:
/* Deplacement curseur vers la droite */
case
WXK_RIGHT
:
MousePositionInPixels
.
x
+=
delta
.
x
;
DrawPanel
->
MouseTo
(
MousePositionInPixels
);
break
;
default
:
hotkey
=
g_KeyPressed
;
break
;
}
/* Recalcul de la position du curseur schema */
screen
->
m_Curseur
=
curpos
;
/* Placement sur la grille generale */
PutOnGrid
(
&
(
screen
->
m_Curseur
)
);
if
(
screen
->
IsRefreshReq
()
)
{
RedrawActiveWindow
(
DC
,
TRUE
);
}
if
(
oldpos
!=
screen
->
m_Curseur
)
{
curpos
=
screen
->
m_Curseur
;
screen
->
m_Curseur
=
oldpos
;
DrawPanel
->
CursorOff
(
DC
);
screen
->
m_Curseur
=
curpos
;
DrawPanel
->
CursorOn
(
DC
);
if
(
DrawPanel
->
ManageCurseur
)
{
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
TRUE
);
}
}
if
(
hotkey
)
{
if
(
screen
->
GetCurItem
()
&&
screen
->
GetCurItem
()
->
m_Flags
)
OnHotKey
(
DC
,
hotkey
,
screen
->
GetCurItem
()
);
else
OnHotKey
(
DC
,
hotkey
,
NULL
);
}
Affiche_Status_Box
();
/* Affichage des coord curseur */
}
/*************************************************************************************/
void
WinEDA_LibeditFrame
::
GeneralControle
(
wxDC
*
DC
,
wxPoint
MousePositionInPixels
)
/*************************************************************************************/
{
wxSize
delta
;
SCH_SCREEN
*
screen
=
GetScreen
();
int
zoom
=
screen
->
GetZoom
();
wxPoint
curpos
,
oldpos
;
int
hotkey
=
0
;
curpos
=
screen
->
m_MousePosition
;
oldpos
=
screen
->
m_Curseur
;
delta
.
x
=
screen
->
GetGrid
().
x
/
zoom
;
delta
.
y
=
screen
->
GetGrid
().
y
/
zoom
;
if
(
delta
.
x
<=
0
)
delta
.
x
=
1
;
if
(
delta
.
y
<=
0
)
delta
.
y
=
1
;
switch
(
g_KeyPressed
)
{
case
0
:
break
;
case
EDA_PANNING_UP_KEY
:
OnZoom
(
ID_ZOOM_PANNING_UP
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_PANNING_DOWN_KEY
:
OnZoom
(
ID_ZOOM_PANNING_DOWN
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_PANNING_LEFT_KEY
:
OnZoom
(
ID_ZOOM_PANNING_LEFT
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_PANNING_RIGHT_KEY
:
OnZoom
(
ID_ZOOM_PANNING_RIGHT
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_ZOOM_IN_FROM_MOUSE
:
OnZoom
(
ID_ZOOM_IN_KEY
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_ZOOM_OUT_FROM_MOUSE
:
OnZoom
(
ID_ZOOM_OUT_KEY
);
curpos
=
screen
->
m_Curseur
;
break
;
case
EDA_ZOOM_CENTER_FROM_MOUSE
:
OnZoom
(
ID_ZOOM_CENTER_KEY
);
curpos
=
screen
->
m_Curseur
;
break
;
case
WXK_NUMPAD8
:
/* Deplacement curseur vers le haut */
case
WXK_UP
:
MousePositionInPixels
.
y
-=
delta
.
y
;
DrawPanel
->
MouseTo
(
MousePositionInPixels
);
break
;
case
WXK_NUMPAD2
:
/* Deplacement curseur vers le bas */
case
WXK_DOWN
:
MousePositionInPixels
.
y
+=
delta
.
y
;
DrawPanel
->
MouseTo
(
MousePositionInPixels
);
break
;
case
WXK_NUMPAD4
:
/* Deplacement curseur vers la gauche */
case
WXK_LEFT
:
MousePositionInPixels
.
x
-=
delta
.
x
;
DrawPanel
->
MouseTo
(
MousePositionInPixels
);
break
;
case
WXK_NUMPAD6
:
/* Deplacement curseur vers la droite */
case
WXK_RIGHT
:
MousePositionInPixels
.
x
+=
delta
.
x
;
DrawPanel
->
MouseTo
(
MousePositionInPixels
);
break
;
default
:
hotkey
=
g_KeyPressed
;
break
;
}
/* Recalcul de la position du curseur schema */
screen
->
m_Curseur
=
curpos
;
/* Placement sur la grille generale */
PutOnGrid
(
&
(
screen
->
m_Curseur
)
);
if
(
screen
->
IsRefreshReq
()
)
{
RedrawActiveWindow
(
DC
,
TRUE
);
}
if
(
oldpos
!=
screen
->
m_Curseur
)
{
curpos
=
screen
->
m_Curseur
;
screen
->
m_Curseur
=
oldpos
;
DrawPanel
->
CursorOff
(
DC
);
screen
->
m_Curseur
=
curpos
;
DrawPanel
->
CursorOn
(
DC
);
if
(
DrawPanel
->
ManageCurseur
)
{
DrawPanel
->
ManageCurseur
(
DrawPanel
,
DC
,
TRUE
);
}
}
if
(
hotkey
)
{
if
(
screen
->
GetCurItem
()
&&
screen
->
GetCurItem
()
->
m_Flags
)
OnHotKey
(
DC
,
hotkey
,
screen
->
GetCurItem
()
);
else
OnHotKey
(
DC
,
hotkey
,
NULL
);
}
Affiche_Status_Box
();
/* Affichage des coord curseur */
}
/*************************************************************************************/
void
WinEDA_ViewlibFrame
::
GeneralControle
(
wxDC
*
DC
,
wxPoint
MousePositionInPixels
)
/*************************************************************************************/
{
wxSize
delta
;
SCH_SCREEN
*
screen
=
GetScreen
();
...
...
@@ -285,7 +540,6 @@ void WinEDA_SchematicFrame::GeneralControle( wxDC* DC, wxPoint MousePositionInPi
case
WXK_NUMPAD2
:
/* Deplacement curseur vers le bas */
case
WXK_DOWN
:
D
(
printf
(
"DOWN
\n
"
);)
MousePositionInPixels
.
y
+=
delta
.
y
;
DrawPanel
->
MouseTo
(
MousePositionInPixels
);
break
;
...
...
eeschema/hierarch.cpp
View file @
af7b6691
...
...
@@ -314,7 +314,7 @@ static bool UpdateScreenFromSheet(WinEDA_SchematicFrame * frame)
NewScreen
->
m_ScrollbarPos
.
x
,
NewScreen
->
m_ScrollbarPos
.
y
,
TRUE
);
//update the References
//update the References
frame
->
m_CurrentSheet
->
UpdateAllScreenReferences
();
frame
->
DrawPanel
->
m_CanStartBlock
=
-
1
;
ActiveScreen
=
frame
->
m_CurrentSheet
->
LastScreen
();
...
...
eeschema/schedit.cpp
View file @
af7b6691
...
...
@@ -549,7 +549,7 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event )
break
;
newitem
=
olditem
->
GenCopy
();
newitem
->
m_TimeStamp
=
GetTimeStamp
();
newitem
->
ClearAnnotation
();
newitem
->
ClearAnnotation
(
NULL
);
newitem
->
m_Flags
=
IS_NEW
;
StartMovePart
(
newitem
,
&
dc
);
...
...
eeschema/schframe.cpp
View file @
af7b6691
...
...
@@ -255,8 +255,9 @@ void WinEDA_SchematicFrame::CreateScreens()
}
/**************************************************************/
/**************************************************************
***
/
void
WinEDA_SchematicFrame
::
OnCloseWindow
(
wxCloseEvent
&
Event
)
/*****************************************************************/
{
DrawSheetPath
*
sheet
;
...
...
include/wxEeschemaStruct.h
View file @
af7b6691
...
...
@@ -101,6 +101,12 @@ public:
/* netlist generation */
void
*
BuildNetListBase
();
/** Function DeleteAnnotation
* Remove current component annotations
* @param aCurrentSheetOnly : if false: remove all annotations, else remove annotation relative to the current sheet only
* @param aRedraw : true to refresh display
*/
void
DeleteAnnotation
(
bool
aCurrentSheetOnly
,
bool
aRedraw
);
// FUnctions used for hierarchy handling
void
InstallPreviousSheet
();
...
...
@@ -307,6 +313,8 @@ public:
SCH_SCREEN
*
GetScreen
()
{
return
(
SCH_SCREEN
*
)
GetBaseScreen
();
}
void
OnHotKey
(
wxDC
*
DC
,
int
hotkey
,
EDA_BaseStruct
*
DrawStruct
);
void
GeneralControle
(
wxDC
*
DC
,
wxPoint
MousePositionInPixels
);
private
:
// General:
...
...
@@ -416,6 +424,8 @@ public:
SCH_SCREEN
*
GetScreen
()
{
return
(
SCH_SCREEN
*
)
GetBaseScreen
();
}
void
GeneralControle
(
wxDC
*
DC
,
wxPoint
MousePositionInPixels
);
private
:
void
SelectCurrentLibrary
();
void
SelectAndViewLibraryPart
(
int
option
);
...
...
internat/CMakeLists.txt
View file @
af7b6691
install
(
DIRECTORY ca cs de es fr hu it ko pl pt ru sl sv zh_CN
install
(
DIRECTORY ca cs de es fr hu it ko
nl
pl pt ru sl sv zh_CN
DESTINATION
${
KICAD_INTERNAT
}
COMPONENT resources
PATTERN
".svn"
EXCLUDE
...
...
internat/nl/kicad.mo
0 → 100644
View file @
af7b6691
File added
internat/nl/kicad.po
0 → 100644
View file @
af7b6691
This diff is collapsed.
Click to expand it.
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