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
b941da6b
Commit
b941da6b
authored
Jan 08, 2015
by
Garth Corral
Browse files
Options
Browse Files
Download
Plain Diff
Merge trunk @ 5359
parents
d0aeb879
7d8df042
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
220 additions
and
67 deletions
+220
-67
layers_id_colors_and_visibility.h
include/layers_id_colors_and_visibility.h
+0
-16
wxBasePcbFrame.h
include/wxBasePcbFrame.h
+0
-1
kicad.cpp
kicad/kicad.cpp
+9
-2
prjconfig.cpp
kicad/prjconfig.cpp
+3
-3
class_pcb_layer_widget.cpp
pcbnew/class_pcb_layer_widget.cpp
+66
-7
class_pcb_layer_widget.h
pcbnew/class_pcb_layer_widget.h
+22
-2
edgemod.cpp
pcbnew/edgemod.cpp
+5
-10
edtxtmod.cpp
pcbnew/edtxtmod.cpp
+28
-20
layer_widget.h
pcbnew/layer_widget.h
+1
-1
modedit.cpp
pcbnew/modedit.cpp
+4
-0
module_editor_frame.h
pcbnew/module_editor_frame.h
+45
-0
moduleframe.cpp
pcbnew/moduleframe.cpp
+37
-5
No files found.
include/layers_id_colors_and_visibility.h
View file @
b941da6b
...
@@ -126,22 +126,6 @@ enum LAYER_ID
...
@@ -126,22 +126,6 @@ enum LAYER_ID
#define MAX_CU_LAYERS (B_Cu - F_Cu + 1)
#define MAX_CU_LAYERS (B_Cu - F_Cu + 1)
/* These were moved to legacy_plugin.cpp, please don't ever use them
outside there. Now with the advent of class LSEQ, we don't iterate over
LAYER_ID any more, so therefore FIRST_COPPER_LAYER and LAST_COPPER_LAYER are
dead concepts. They in fact failed to do what they were intended to do because
they implied a particular sequence which in and of itself was subject to change
and actually did when we flipped the pretty and *.kicad_pcb copper layer stack.
LSEQ is the way to go, use it. It gives a level of manipulation between
LAYER_ID and iteration.
#define FIRST_COPPER_LAYER brain dead
#define LAST_COPPER_LAYER brain dead
#define FIRST_LAYER brain dead
#define NB_LAYERS use LAYER_ID_COUNT instead
#define NB_COPPER_LAYERS was always a max, not a number, use MAX_CU_LAYERS now.
*/
/// A sequence of layers, a sequence provides a certain order.
/// A sequence of layers, a sequence provides a certain order.
typedef
std
::
vector
<
LAYER_ID
>
BASE_SEQ
;
typedef
std
::
vector
<
LAYER_ID
>
BASE_SEQ
;
...
...
include/wxBasePcbFrame.h
View file @
b941da6b
...
@@ -343,7 +343,6 @@ public:
...
@@ -343,7 +343,6 @@ public:
void
DeleteTextModule
(
TEXTE_MODULE
*
Text
);
void
DeleteTextModule
(
TEXTE_MODULE
*
Text
);
void
PlaceTexteModule
(
TEXTE_MODULE
*
Text
,
wxDC
*
DC
);
void
PlaceTexteModule
(
TEXTE_MODULE
*
Text
,
wxDC
*
DC
);
void
StartMoveTexteModule
(
TEXTE_MODULE
*
Text
,
wxDC
*
DC
);
void
StartMoveTexteModule
(
TEXTE_MODULE
*
Text
,
wxDC
*
DC
);
TEXTE_MODULE
*
CreateTextModule
(
MODULE
*
Module
,
wxDC
*
DC
);
/**
/**
* Function ResetTextSize
* Function ResetTextSize
...
...
kicad/kicad.cpp
View file @
b941da6b
...
@@ -6,8 +6,8 @@
...
@@ -6,8 +6,8 @@
/*
/*
* This program source code file is part of KiCad, a free EDA CAD application.
* This program source code file is part of KiCad, a free EDA CAD application.
*
*
* Copyright (C) 2004-201
2
Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 2004-201
5
Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 2004-201
2
KiCad Developers, see change_log.txt for contributors.
* Copyright (C) 2004-201
5
KiCad Developers, see change_log.txt for contributors.
*
*
* This program is free software; you can redistribute it and/or
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* modify it under the terms of the GNU General Public License
...
@@ -173,6 +173,13 @@ bool PGM_KICAD::OnPgmInit( wxApp* aWxApp )
...
@@ -173,6 +173,13 @@ bool PGM_KICAD::OnPgmInit( wxApp* aWxApp )
prjloaded
=
true
;
// OnFileHistory() loads the project
prjloaded
=
true
;
// OnFileHistory() loads the project
}
}
}
}
else
// there is no history
{
wxFileName
namelessProject
(
wxGetCwd
(),
NAMELESS_PROJECT
,
ProjectFileExtension
);
frame
->
SetProjectFileName
(
namelessProject
.
GetFullPath
()
);
}
if
(
!
prjloaded
)
if
(
!
prjloaded
)
{
{
...
...
kicad/prjconfig.cpp
View file @
b941da6b
...
@@ -6,8 +6,8 @@
...
@@ -6,8 +6,8 @@
/*
/*
* This program source code file is part of KiCad, a free EDA CAD application.
* This program source code file is part of KiCad, a free EDA CAD application.
*
*
* Copyright (C) 2004-201
2
Jean-Pierre Charras
* Copyright (C) 2004-201
5
Jean-Pierre Charras
* Copyright (C) 2004-201
2
KiCad Developers, see change_log.txt for contributors.
* Copyright (C) 2004-201
5
KiCad Developers, see change_log.txt for contributors.
*
*
* This program is free software; you can redistribute it and/or
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* modify it under the terms of the GNU General Public License
...
@@ -259,7 +259,7 @@ void KICAD_MANAGER_FRAME::OnLoadProject( wxCommandEvent& event )
...
@@ -259,7 +259,7 @@ void KICAD_MANAGER_FRAME::OnLoadProject( wxCommandEvent& event )
wxString
nameless_prj
=
NAMELESS_PROJECT
wxT
(
".pro"
);
wxString
nameless_prj
=
NAMELESS_PROJECT
wxT
(
".pro"
);
// Check if project file exists and if it is not noname.pro
// Check if project file exists and if it is not noname.pro
if
(
!
wxFileExists
(
prj_filename
)
&&
!
prj_filename
.
IsSameAs
(
nameless_prj
)
)
if
(
!
wxFileExists
(
prj_filename
)
&&
!
wxFileName
(
prj_filename
).
GetFullName
()
.
IsSameAs
(
nameless_prj
)
)
{
{
wxString
msg
=
wxString
::
Format
(
_
(
wxString
msg
=
wxString
::
Format
(
_
(
"KiCad project file '%s' not found"
),
"KiCad project file '%s' not found"
),
...
...
pcbnew/class_pcb_layer_widget.cpp
View file @
b941da6b
/*
/*
* This program source code file is part of KiCad, a free EDA CAD application.
* This program source code file is part of KiCad, a free EDA CAD application.
*
*
* Copyright (C) 2004-201
0
Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2004-201
5
Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2010-2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010-2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010 KiCad Developers, see change_log.txt for contributors.
* Copyright (C) 2010 KiCad Developers, see change_log.txt for contributors.
*
*
...
@@ -79,15 +79,22 @@ const LAYER_WIDGET::ROW PCB_LAYER_WIDGET::s_render_rows[] = {
...
@@ -79,15 +79,22 @@ const LAYER_WIDGET::ROW PCB_LAYER_WIDGET::s_render_rows[] = {
RR
(
_
(
"References"
),
MOD_REFERENCES_VISIBLE
,
UNSPECIFIED_COLOR
,
_
(
"Show footprint's references"
)
),
RR
(
_
(
"References"
),
MOD_REFERENCES_VISIBLE
,
UNSPECIFIED_COLOR
,
_
(
"Show footprint's references"
)
),
};
};
static
int
s_allowed_in_FpEditor
[]
=
{
MOD_TEXT_INVISIBLE
,
PAD_FR_VISIBLE
,
PAD_BK_VISIBLE
,
GRID_VISIBLE
,
MOD_VALUES_VISIBLE
,
MOD_REFERENCES_VISIBLE
};
PCB_LAYER_WIDGET
::
PCB_LAYER_WIDGET
(
PCB_BASE_FRAME
*
aParent
,
wxWindow
*
aFocusOwner
,
int
aPointSize
)
:
PCB_LAYER_WIDGET
::
PCB_LAYER_WIDGET
(
PCB_BASE_FRAME
*
aParent
,
wxWindow
*
aFocusOwner
,
LAYER_WIDGET
(
aParent
,
aFocusOwner
,
aPointSize
),
int
aPointSize
,
bool
aFpEditorMode
)
:
myframe
(
aParent
)
LAYER_WIDGET
(
aParent
,
aFocusOwner
,
aPointSize
),
myframe
(
aParent
)
{
{
m_alwaysShowActiveCopperLayer
=
false
;
m_alwaysShowActiveCopperLayer
=
false
;
m_fp_editor_mode
=
aFpEditorMode
;
ReFillRender
();
ReFillRender
();
// Update default tabs labels
for GerbView
// Update default tabs labels
SetLayersManagerTabsText
();
SetLayersManagerTabsText
();
//-----<Popup menu>-------------------------------------------------
//-----<Popup menu>-------------------------------------------------
...
@@ -106,6 +113,33 @@ PCB_LAYER_WIDGET::PCB_LAYER_WIDGET( PCB_BASE_FRAME* aParent, wxWindow* aFocusOwn
...
@@ -106,6 +113,33 @@ PCB_LAYER_WIDGET::PCB_LAYER_WIDGET( PCB_BASE_FRAME* aParent, wxWindow* aFocusOwn
}
}
/* return true if item aId has meaning in footprint editor mode,
* i.e. is in s_allowed_in_FpEditor and therefore is shown in render panel
*/
bool
PCB_LAYER_WIDGET
::
isAllowedInFpMode
(
int
aId
)
{
for
(
unsigned
ii
=
0
;
ii
<
DIM
(
s_allowed_in_FpEditor
);
ii
++
)
if
(
s_allowed_in_FpEditor
[
ii
]
==
aId
)
return
true
;
return
false
;
}
/* return true if item aId has meaning in footprint editor mode,
* i.e. is in s_allowed_in_FpEditor and therefore is shown in render panel
* Note: User layers, which are not paired, are not shown in layers manager.
* However a not listed layer can be reachable in the graphic item proprerties
* dialog.
*/
bool
PCB_LAYER_WIDGET
::
isLayerAllowedInFpMode
(
LAYER_ID
aLayer
)
{
static
LSET
allowed
=
LSET
::
AllTechMask
();
// Currently not in use because putting a graphic item on a copper layer
// is not currently supported by DRC.
// allowed.set( F_Cu ).set( B_Cu );
return
allowed
.
test
(
aLayer
);
}
void
PCB_LAYER_WIDGET
::
installRightLayerClickHandler
()
void
PCB_LAYER_WIDGET
::
installRightLayerClickHandler
()
{
{
int
rowCount
=
GetLayerRowCount
();
int
rowCount
=
GetLayerRowCount
();
...
@@ -223,6 +257,9 @@ void PCB_LAYER_WIDGET::ReFillRender()
...
@@ -223,6 +257,9 @@ void PCB_LAYER_WIDGET::ReFillRender()
{
{
LAYER_WIDGET
::
ROW
renderRow
=
s_render_rows
[
row
];
LAYER_WIDGET
::
ROW
renderRow
=
s_render_rows
[
row
];
if
(
!
isAllowedInFpMode
(
renderRow
.
id
)
)
continue
;
renderRow
.
tooltip
=
wxGetTranslation
(
s_render_rows
[
row
].
tooltip
);
renderRow
.
tooltip
=
wxGetTranslation
(
s_render_rows
[
row
].
tooltip
);
renderRow
.
rowName
=
wxGetTranslation
(
s_render_rows
[
row
].
rowName
);
renderRow
.
rowName
=
wxGetTranslation
(
s_render_rows
[
row
].
rowName
);
...
@@ -247,6 +284,9 @@ void PCB_LAYER_WIDGET::SyncRenderStates()
...
@@ -247,6 +284,9 @@ void PCB_LAYER_WIDGET::SyncRenderStates()
{
{
int
rowId
=
s_render_rows
[
row
].
id
;
int
rowId
=
s_render_rows
[
row
].
id
;
if
(
!
isAllowedInFpMode
(
rowId
)
)
continue
;
// this does not fire a UI event
// this does not fire a UI event
SetRenderState
(
rowId
,
board
->
IsElementVisible
(
rowId
)
);
SetRenderState
(
rowId
,
board
->
IsElementVisible
(
rowId
)
);
}
}
...
@@ -305,6 +345,13 @@ void PCB_LAYER_WIDGET::ReFill()
...
@@ -305,6 +345,13 @@ void PCB_LAYER_WIDGET::ReFill()
AppendLayerRow
(
LAYER_WIDGET
::
ROW
(
AppendLayerRow
(
LAYER_WIDGET
::
ROW
(
brd
->
GetLayerName
(
layer
),
layer
,
brd
->
GetLayerColor
(
layer
),
brd
->
GetLayerName
(
layer
),
layer
,
brd
->
GetLayerColor
(
layer
),
dsc
,
true
)
);
dsc
,
true
)
);
if
(
m_fp_editor_mode
&&
!
isLayerAllowedInFpMode
(
layer
)
)
{
getLayerComp
(
GetLayerRowCount
()
-
1
,
COLUMN_COLOR_LYRNAME
)
->
Enable
(
false
);
getLayerComp
(
GetLayerRowCount
()
-
1
,
COLUMN_COLORBM
)
->
SetToolTip
(
wxEmptyString
);
}
}
}
...
@@ -345,6 +392,13 @@ void PCB_LAYER_WIDGET::ReFill()
...
@@ -345,6 +392,13 @@ void PCB_LAYER_WIDGET::ReFill()
AppendLayerRow
(
LAYER_WIDGET
::
ROW
(
AppendLayerRow
(
LAYER_WIDGET
::
ROW
(
brd
->
GetLayerName
(
layer
),
layer
,
brd
->
GetLayerColor
(
layer
),
brd
->
GetLayerName
(
layer
),
layer
,
brd
->
GetLayerColor
(
layer
),
wxGetTranslation
(
non_cu_seq
[
i
].
tooltip
),
true
)
);
wxGetTranslation
(
non_cu_seq
[
i
].
tooltip
),
true
)
);
if
(
m_fp_editor_mode
&&
!
isLayerAllowedInFpMode
(
layer
)
)
{
getLayerComp
(
GetLayerRowCount
()
-
1
,
COLUMN_COLOR_LYRNAME
)
->
Enable
(
false
);
getLayerComp
(
GetLayerRowCount
()
-
1
,
COLUMN_COLORBM
)
->
SetToolTip
(
wxEmptyString
);
}
}
}
installRightLayerClickHandler
();
installRightLayerClickHandler
();
...
@@ -371,7 +425,12 @@ bool PCB_LAYER_WIDGET::OnLayerSelect( int aLayer )
...
@@ -371,7 +425,12 @@ bool PCB_LAYER_WIDGET::OnLayerSelect( int aLayer )
{
{
// the layer change from the PCB_LAYER_WIDGET can be denied by returning
// the layer change from the PCB_LAYER_WIDGET can be denied by returning
// false from this function.
// false from this function.
myframe
->
SetActiveLayer
(
ToLAYER_ID
(
aLayer
)
);
LAYER_ID
layer
=
ToLAYER_ID
(
aLayer
);
if
(
m_fp_editor_mode
&&
!
isLayerAllowedInFpMode
(
layer
)
)
return
false
;
myframe
->
SetActiveLayer
(
layer
);
if
(
m_alwaysShowActiveCopperLayer
)
if
(
m_alwaysShowActiveCopperLayer
)
OnLayerSelected
();
OnLayerSelected
();
...
@@ -382,7 +441,7 @@ bool PCB_LAYER_WIDGET::OnLayerSelect( int aLayer )
...
@@ -382,7 +441,7 @@ bool PCB_LAYER_WIDGET::OnLayerSelect( int aLayer )
}
}
bool
PCB_LAYER_WIDGET
::
OnLayerSelected
()
bool
PCB_LAYER_WIDGET
::
OnLayerSelected
()
{
{
if
(
!
m_alwaysShowActiveCopperLayer
)
if
(
!
m_alwaysShowActiveCopperLayer
)
return
false
;
return
false
;
...
...
pcbnew/class_pcb_layer_widget.h
View file @
b941da6b
/*
/*
* This program source code file is part of KiCad, a free EDA CAD application.
* This program source code file is part of KiCad, a free EDA CAD application.
*
*
* Copyright (C) 2004-201
0
Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2004-201
5
Jean-Pierre Charras, jean-pierre.charras@gpisa-lab.inpg.fr
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2010 KiCad Developers, see change_log.txt for contributors.
* Copyright (C) 2010 KiCad Developers, see change_log.txt for contributors.
*
*
...
@@ -50,8 +50,12 @@ public:
...
@@ -50,8 +50,12 @@ public:
* @param aPointSize is the font point size to use within the widget. This
* @param aPointSize is the font point size to use within the widget. This
* effectively sets the overal size of the widget via the row height and bitmap
* effectively sets the overal size of the widget via the row height and bitmap
* button sizes.
* button sizes.
* @param aFpEditorMode false for the board editor (default), true for fp editor
* when true, some options or layers which cannot be used in editor mode are not
* displayed
*/
*/
PCB_LAYER_WIDGET
(
PCB_BASE_FRAME
*
aParent
,
wxWindow
*
aFocusOwner
,
int
aPointSize
=
10
);
PCB_LAYER_WIDGET
(
PCB_BASE_FRAME
*
aParent
,
wxWindow
*
aFocusOwner
,
int
aPointSize
=
10
,
bool
aFpEditorMode
=
false
);
void
ReFill
();
void
ReFill
();
...
@@ -109,6 +113,7 @@ protected:
...
@@ -109,6 +113,7 @@ protected:
static
const
LAYER_WIDGET
::
ROW
s_render_rows
[];
static
const
LAYER_WIDGET
::
ROW
s_render_rows
[];
bool
m_alwaysShowActiveCopperLayer
;
// If true: Only shows the current active layer
bool
m_alwaysShowActiveCopperLayer
;
// If true: Only shows the current active layer
// even if it is changed
// even if it is changed
bool
m_fp_editor_mode
;
PCB_BASE_FRAME
*
myframe
;
PCB_BASE_FRAME
*
myframe
;
...
@@ -118,6 +123,21 @@ protected:
...
@@ -118,6 +123,21 @@ protected:
#define ID_SHOW_NO_COPPERS_BUT_ACTIVE (wxID_HIGHEST+2)
#define ID_SHOW_NO_COPPERS_BUT_ACTIVE (wxID_HIGHEST+2)
#define ID_ALWAYS_SHOW_NO_COPPERS_BUT_ACTIVE (wxID_HIGHEST+3)
#define ID_ALWAYS_SHOW_NO_COPPERS_BUT_ACTIVE (wxID_HIGHEST+3)
/**
* Function isAllowedInFpMode
* @return true if item aId has meaning in footprint editor mode.
* and therefore is shown in render panel
*/
bool
isAllowedInFpMode
(
int
aId
);
/**
* Function isLayerAllowedInFpMode
* @param aLayer is the layer id to test
* @return true if LAYER_ID aLayer has meaning in footprint editor mode.
* and therefore is shown in render panel
*/
bool
isLayerAllowedInFpMode
(
LAYER_ID
aLayer
);
/**
/**
* Function OnRightDownLayers
* Function OnRightDownLayers
* puts up a popup menu for the layer panel.
* puts up a popup menu for the layer panel.
...
...
pcbnew/edgemod.cpp
View file @
b941da6b
...
@@ -207,10 +207,11 @@ void FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer( EDGE_MODULE* aEdge )
...
@@ -207,10 +207,11 @@ void FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer( EDGE_MODULE* aEdge )
if
(
IsCopperLayer
(
new_layer
)
)
if
(
IsCopperLayer
(
new_layer
)
)
{
{
/
* an edge is put on a copper layer, and it is very dangerous. a
/
/ an edge is put on a copper layer, and it is very dangerous.
*confirmation is requested */
// A confirmation is requested
if
(
!
IsOK
(
this
,
if
(
!
IsOK
(
this
,
_
(
"The graphic item will be on a copper layer. This is very dangerous. Are you sure?"
)
)
)
_
(
"The graphic item will be on a copper layer.
\n
"
"This is very dangerous. Are you sure?"
)
)
)
return
;
return
;
}
}
...
@@ -346,13 +347,7 @@ EDGE_MODULE* FOOTPRINT_EDIT_FRAME::Begin_Edge_Module( EDGE_MODULE* aEdge,
...
@@ -346,13 +347,7 @@ EDGE_MODULE* FOOTPRINT_EDIT_FRAME::Begin_Edge_Module( EDGE_MODULE* aEdge,
aEdge
->
SetAngle
(
ArcValue
);
aEdge
->
SetAngle
(
ArcValue
);
aEdge
->
SetWidth
(
GetDesignSettings
().
m_ModuleSegmentWidth
);
aEdge
->
SetWidth
(
GetDesignSettings
().
m_ModuleSegmentWidth
);
aEdge
->
SetLayer
(
module
->
GetLayer
()
);
aEdge
->
SetLayer
(
GetActiveLayer
()
);
// The default layer for an edge is the corresponding silk layer
if
(
module
->
IsFlipped
()
)
aEdge
->
SetLayer
(
B_SilkS
);
else
aEdge
->
SetLayer
(
F_SilkS
);
// Initialize the starting point of the new segment or arc
// Initialize the starting point of the new segment or arc
aEdge
->
SetStart
(
GetCrossHairPosition
()
);
aEdge
->
SetStart
(
GetCrossHairPosition
()
);
...
...
pcbnew/edtxtmod.cpp
View file @
b941da6b
/*
/*
* This program source code file is part of KiCad, a free EDA CAD application.
* This program source code file is part of KiCad, a free EDA CAD application.
*
*
* Copyright (C) 201
2 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble
.fr
* Copyright (C) 201
5 Jean-Pierre Charras, jp.charras at wanadoo
.fr
* Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors.
*
*
* This program is free software; you can redistribute it and/or
* This program is free software; you can redistribute it and/or
...
@@ -38,6 +38,7 @@
...
@@ -38,6 +38,7 @@
#include <pcbnew.h>
#include <pcbnew.h>
#include <wxPcbStruct.h>
#include <wxPcbStruct.h>
#include <module_editor_frame.h>
#include <class_board.h>
#include <class_board.h>
#include <class_module.h>
#include <class_module.h>
...
@@ -62,36 +63,43 @@ static double TextInitialOrientation; // module text initial orientation for
...
@@ -62,36 +63,43 @@ static double TextInitialOrientation; // module text initial orientation for
* Note there always are 2 mandatory texts: reference and value.
* Note there always are 2 mandatory texts: reference and value.
* New texts have the member TEXTE_MODULE.GetType() set to TEXT_is_DIVERS
* New texts have the member TEXTE_MODULE.GetType() set to TEXT_is_DIVERS
*/
*/
TEXTE_MODULE
*
PCB_BASE_FRAME
::
CreateTextModule
(
MODULE
*
Module
,
wxDC
*
DC
)
TEXTE_MODULE
*
FOOTPRINT_EDIT_FRAME
::
CreateTextModule
(
MODULE
*
aModule
,
wxDC
*
a
DC
)
{
{
TEXTE_MODULE
*
Text
=
new
TEXTE_MODULE
(
Module
);
TEXTE_MODULE
*
text
=
new
TEXTE_MODULE
(
a
Module
);
// Add the new text object to the beginning of the draw item list.
text
->
SetFlags
(
IS_NEW
);
if
(
Module
)
Module
->
GraphicalItems
().
PushFront
(
Text
);
Text
->
SetFlags
(
IS_NEW
);
GetDesignSettings
().
m_ModuleTextWidth
=
Clamp_Text_PenSize
(
GetDesignSettings
().
m_ModuleTextWidth
,
std
::
min
(
GetDesignSettings
().
m_ModuleTextSize
.
x
,
GetDesignSettings
().
m_ModuleTextSize
.
y
),
true
);
text
->
SetSize
(
GetDesignSettings
().
m_ModuleTextSize
);
text
->
SetThickness
(
GetDesignSettings
().
m_ModuleTextWidth
);
text
->
SetPosition
(
GetCrossHairPosition
()
);
Text
->
SetText
(
wxT
(
"text"
)
);
if
(
LSET
::
AllTechMask
().
test
(
GetActiveLayer
()
)
)
// i.e. a possible layer for a text
text
->
SetLayer
(
GetActiveLayer
()
);
GetDesignSettings
().
m_ModuleTextWidth
=
Clamp_Text_PenSize
(
GetDesignSettings
().
m_ModuleTextWidth
,
InstallTextModOptionsFrame
(
text
,
NULL
);
std
::
min
(
GetDesignSettings
().
m_ModuleTextSize
.
x
,
GetDesignSettings
().
m_ModuleTextSize
.
y
),
true
);
Text
->
SetSize
(
GetDesignSettings
().
m_ModuleTextSize
);
Text
->
SetThickness
(
GetDesignSettings
().
m_ModuleTextWidth
);
Text
->
SetTextPosition
(
GetCrossHairPosition
()
);
Text
->
SetLocalCoord
();
InstallTextModOptionsFrame
(
Text
,
NULL
);
m_canvas
->
MoveCursorToCrossHair
();
m_canvas
->
MoveCursorToCrossHair
();
Text
->
ClearFlags
();
if
(
text
->
GetText
().
IsEmpty
()
)
{
delete
text
;
return
NULL
;
}
if
(
DC
)
// Add the new text object to the beginning of the footprint draw list.
Text
->
Draw
(
m_canvas
,
DC
,
GR_OR
);
if
(
aModule
)
aModule
->
GraphicalItems
().
PushFront
(
text
);
SetMsgPanel
(
Text
);
text
->
ClearFlags
();
if
(
aDC
)
text
->
Draw
(
m_canvas
,
aDC
,
GR_OR
);
SetMsgPanel
(
text
);
return
T
ext
;
return
t
ext
;
}
}
...
...
pcbnew/layer_widget.h
View file @
b941da6b
...
@@ -401,7 +401,7 @@ public:
...
@@ -401,7 +401,7 @@ public:
* is called to notify client code about a layer visibility change.
* is called to notify client code about a layer visibility change.
*
*
* @param aLayer is the board layer to select
* @param aLayer is the board layer to select
* @param isVisible is the new v
o
sible state
* @param isVisible is the new v
i
sible state
* @param isFinal is true when this is the last of potentially several
* @param isFinal is true when this is the last of potentially several
* such calls, and can be used to decide when to update the screen only
* such calls, and can be used to decide when to update the screen only
* one time instead of several times in the midst of a multiple layer change.
* one time instead of several times in the midst of a multiple layer change.
...
...
pcbnew/modedit.cpp
View file @
b941da6b
...
@@ -39,6 +39,7 @@
...
@@ -39,6 +39,7 @@
#include <kicad_device_context.h>
#include <kicad_device_context.h>
#include <macros.h>
#include <macros.h>
#include <invoke_pcb_dialog.h>
#include <invoke_pcb_dialog.h>
#include <class_pcb_layer_widget.h>
#include <class_board.h>
#include <class_board.h>
#include <class_module.h>
#include <class_module.h>
...
@@ -909,6 +910,9 @@ void FOOTPRINT_EDIT_FRAME::SetActiveLayer( LAYER_ID aLayer )
...
@@ -909,6 +910,9 @@ void FOOTPRINT_EDIT_FRAME::SetActiveLayer( LAYER_ID aLayer )
GetGalCanvas
()
->
SetHighContrastLayer
(
aLayer
);
GetGalCanvas
()
->
SetHighContrastLayer
(
aLayer
);
m_Layers
->
SelectLayer
(
GetActiveLayer
()
);
m_Layers
->
OnLayerSelected
();
if
(
IsGalCanvasActive
()
)
if
(
IsGalCanvasActive
()
)
GetGalCanvas
()
->
Refresh
();
GetGalCanvas
()
->
Refresh
();
}
}
...
...
pcbnew/module_editor_frame.h
View file @
b941da6b
...
@@ -416,6 +416,43 @@ public:
...
@@ -416,6 +416,43 @@ public:
*/
*/
bool
DeleteModuleFromCurrentLibrary
();
bool
DeleteModuleFromCurrentLibrary
();
/**
* Function IsElementVisible
* tests whether a given element category is visible. Keep this as an
* inline function.
* @param aElement is from the enum by the same name
* @return bool - true if the element is visible.
* @see enum PCB_VISIBLE
*/
bool
IsElementVisible
(
int
aElement
)
const
;
/**
* Function SetElementVisibility
* changes the visibility of an element category
* @param aElement is from the enum by the same name
* @param aNewState = The new visibility state of the element category
* @see enum PCB_VISIBLE
*/
void
SetElementVisibility
(
int
aElement
,
bool
aNewState
);
/**
* Function IsGridVisible() , virtual
* @return true if the grid must be shown
*/
virtual
bool
IsGridVisible
()
const
;
/**
* Function SetGridVisibility() , virtual
* It may be overloaded by derived classes
* if you want to store/retrieve the grid visibility in configuration.
* @param aVisible = true if the grid must be shown
*/
virtual
void
SetGridVisibility
(
bool
aVisible
);
/**
* Function GetGridColor() , virtual
* @return the color of the grid
*/
virtual
EDA_COLOR_T
GetGridColor
()
const
;
virtual
EDA_COLOR_T
GetGridColor
()
const
;
///> @copydoc PCB_BASE_FRAME::SetActiveLayer()
///> @copydoc PCB_BASE_FRAME::SetActiveLayer()
...
@@ -447,6 +484,14 @@ protected:
...
@@ -447,6 +484,14 @@ protected:
void
restoreLastFootprint
();
void
restoreLastFootprint
();
void
retainLastFootprint
();
void
retainLastFootprint
();
/**
* Creates a new text for the footprint
* @param aModule is the owner of the text
* @param aDC is the current DC (can be NULL )
* @return a pointer to the new text, or NULL if aborted
*/
TEXTE_MODULE
*
CreateTextModule
(
MODULE
*
aModule
,
wxDC
*
aDC
);
};
};
#endif // MODULE_EDITOR_FRAME_H_
#endif // MODULE_EDITOR_FRAME_H_
pcbnew/moduleframe.cpp
View file @
b941da6b
/*
/*
* This program source code file is part of KiCad, a free EDA CAD application.
* This program source code file is part of KiCad, a free EDA CAD application.
*
*
* Copyright (C) 2012 Jean-Pierre Charras, j
ean-pierre.charras@ujf-grenoble
.fr
* Copyright (C) 2012 Jean-Pierre Charras, j
p.charras at wanadoo
.fr
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2012 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 2012 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors.
...
@@ -198,10 +198,13 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
...
@@ -198,10 +198,13 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
restoreLastFootprint
();
restoreLastFootprint
();
// Ensure all layers and items are visible:
// Ensure all layers and items are visible:
// In footprint editor, some layers have no meaning or
// cannot be used, but we show all of them, at least to be able
// to edit a bad layer
GetBoard
()
->
SetVisibleAlls
();
GetBoard
()
->
SetVisibleAlls
();
wxFont
font
=
wxSystemSettings
::
GetFont
(
wxSYS_DEFAULT_GUI_FONT
);
wxFont
font
=
wxSystemSettings
::
GetFont
(
wxSYS_DEFAULT_GUI_FONT
);
m_Layers
=
new
PCB_LAYER_WIDGET
(
this
,
GetCanvas
(),
font
.
GetPointSize
()
);
m_Layers
=
new
PCB_LAYER_WIDGET
(
this
,
GetCanvas
(),
font
.
GetPointSize
()
,
true
);
SetScreen
(
new
PCB_SCREEN
(
GetPageSettings
().
GetSizeIU
()
)
);
SetScreen
(
new
PCB_SCREEN
(
GetPageSettings
().
GetSizeIU
()
)
);
...
@@ -257,7 +260,7 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
...
@@ -257,7 +260,7 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
// Add the layer manager ( most right side of pcbframe )
// Add the layer manager ( most right side of pcbframe )
m_auimgr
.
AddPane
(
m_Layers
,
lyrs
.
Name
(
wxT
(
"m_LayersManagerToolBar"
)
).
Right
().
Layer
(
2
)
);
m_auimgr
.
AddPane
(
m_Layers
,
lyrs
.
Name
(
wxT
(
"m_LayersManagerToolBar"
)
).
Right
().
Layer
(
2
)
);
// Layers manager is visible and served only in GAL canvas mode.
// Layers manager is visible and served only in GAL canvas mode.
m_auimgr
.
GetPane
(
wxT
(
"m_LayersManagerToolBar"
)
).
Show
(
parentFrame
->
IsGalCanvasActive
()
);
m_auimgr
.
GetPane
(
wxT
(
"m_LayersManagerToolBar"
)
).
Show
(
true
);
//
parentFrame->IsGalCanvasActive() );
// The left vertical toolbar (fast acces to display options)
// The left vertical toolbar (fast acces to display options)
m_auimgr
.
AddPane
(
m_optionsToolBar
,
m_auimgr
.
AddPane
(
m_optionsToolBar
,
...
@@ -295,15 +298,17 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
...
@@ -295,15 +298,17 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
m_toolManager
->
ResetTools
(
TOOL_BASE
::
RUN
);
m_toolManager
->
ResetTools
(
TOOL_BASE
::
RUN
);
m_toolManager
->
InvokeTool
(
"pcbnew.InteractiveSelection"
);
m_toolManager
->
InvokeTool
(
"pcbnew.InteractiveSelection"
);
UseGalCanvas
(
true
);
}
if
(
m_auimgr
.
GetPane
(
wxT
(
"m_LayersManagerToolBar"
)
).
IsShown
()
)
{
m_Layers
->
ReFill
();
m_Layers
->
ReFill
();
m_Layers
->
ReFillRender
();
m_Layers
->
ReFillRender
();
GetScreen
()
->
m_Active_Layer
=
F_SilkS
;
GetScreen
()
->
m_Active_Layer
=
F_SilkS
;
m_Layers
->
SelectLayer
(
F_SilkS
);
m_Layers
->
SelectLayer
(
F_SilkS
);
m_Layers
->
OnLayerSelected
();
m_Layers
->
OnLayerSelected
();
UseGalCanvas
(
true
);
}
}
m_auimgr
.
Update
();
m_auimgr
.
Update
();
...
@@ -714,3 +719,30 @@ void FOOTPRINT_EDIT_FRAME::updateView()
...
@@ -714,3 +719,30 @@ void FOOTPRINT_EDIT_FRAME::updateView()
m_toolManager
->
ResetTools
(
TOOL_BASE
::
MODEL_RELOAD
);
m_toolManager
->
ResetTools
(
TOOL_BASE
::
MODEL_RELOAD
);
m_toolManager
->
RunAction
(
COMMON_ACTIONS
::
zoomFitScreen
,
true
);
m_toolManager
->
RunAction
(
COMMON_ACTIONS
::
zoomFitScreen
,
true
);
}
}
bool
FOOTPRINT_EDIT_FRAME
::
IsGridVisible
()
const
{
return
IsElementVisible
(
GRID_VISIBLE
);
}
void
FOOTPRINT_EDIT_FRAME
::
SetGridVisibility
(
bool
aVisible
)
{
SetElementVisibility
(
GRID_VISIBLE
,
aVisible
);
}
bool
FOOTPRINT_EDIT_FRAME
::
IsElementVisible
(
int
aElement
)
const
{
return
GetBoard
()
->
IsElementVisible
(
aElement
);
}
void
FOOTPRINT_EDIT_FRAME
::
SetElementVisibility
(
int
aElement
,
bool
aNewState
)
{
GetGalCanvas
()
->
GetView
()
->
SetLayerVisible
(
ITEM_GAL_LAYER
(
aElement
),
aNewState
);
GetBoard
()
->
SetElementVisibility
(
aElement
,
aNewState
);
m_Layers
->
SetRenderState
(
aElement
,
aNewState
);
}
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