mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-19 12:21:42 +00:00
layer names in *.brd file
This commit is contained in:
parent
7c482f68b3
commit
10e13ae50a
change_log.txt
common
cvpcb
gerbview
include
pcbnew
basepcbframe.cppclass_board.cppclass_board.hclass_drawsegment.cppclass_module.cppclass_module.hclass_pcb_text.cppclass_text_mod.cppclass_zone.cppclasspcb.cppcotation.cppcross-probing.cppdialog_zones_by_polygon.cppeditedge.cppinitpcb.cppioascii.cpplocate.cpppcbframe.cpppcbnew.cpppcbplot.cpppcbtexte.cppprotos.hsel_layer.cppset_color.cppset_color.hspecctra_export.cppswap_layers.cpptool_pcb.cpp
share
@ -5,16 +5,27 @@ Started 2007-June-11
|
||||
Please add newer entries at the top, list the date and your name with
|
||||
email address.
|
||||
|
||||
2008-Mar-3 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||
================================================================================
|
||||
+pcbnew
|
||||
Completed transision to BOARD::GetLayerName() and away from ReturnPcbLayerName().
|
||||
LayerNames and LAYER_T are saved int the *.brd file and may be edited
|
||||
there with a text editor until the UI is in place to edit them in PCBNEW.
|
||||
To understand the strategy, see BOARD::GetLayerName() in class_board.cpp
|
||||
and see WinEDA_BasePcbFrame::ReadSetup(). I will be adding "Board" menu
|
||||
item to Preferences, but there is more to come before the UI gets done:
|
||||
net classes.
|
||||
|
||||
|
||||
2008-mars-03 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||
================================================================================
|
||||
3d display:
|
||||
Added Jonas Diemer's patch (enhanced movings from mouse and tools)
|
||||
Added Jonas Diemer's patch (enhanced movings from mouse and tools)
|
||||
|
||||
|
||||
2008-Mar-1 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||
================================================================================
|
||||
+pcbnew
|
||||
|
||||
Changed ioascii.cpp to save and load board specific layer names, for DEBUG
|
||||
build only. I want to add class LAYER, see below. Added
|
||||
BOARD::SetLayerName(), BOARD::SetLayerType(), and BOARD::GetLayerType().
|
||||
|
@ -265,8 +265,6 @@ void MyFree( void* pt_mem )
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**************************************************************/
|
||||
wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
|
||||
/**************************************************************/
|
||||
@ -276,32 +274,11 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
|
||||
* (not internatinalized, no space)
|
||||
*/
|
||||
{
|
||||
|
||||
#if 1 && defined(DEBUG)
|
||||
|
||||
// Dick: this code is working fine, but we have no place to store the layer names yet.
|
||||
|
||||
const unsigned LAYER_LIMIT = 29;
|
||||
|
||||
// @todo: these layer names should be configurable on a per project basis.
|
||||
// In anticipation of that enhancement, here is a different strategy for
|
||||
// deriving the file names from the "configured" layer names.
|
||||
// The main idea is to use a single array of names, and then remove
|
||||
// spaces on the fly from the names when writing to disk.
|
||||
// These are only default layer names. For PCBNEW, the copper names
|
||||
// may be over-ridden in the BOARD file *.brd.
|
||||
|
||||
|
||||
#if 1 // my specific layer names
|
||||
static const wxString layer_name_list[] = {
|
||||
_( "H2 Bottom" ), _( "Power" ), _( "V2 Signal" ), _( "H1 Signal" ),
|
||||
_( "Ground" ), _( "Inner L5" ), _( "Inner L6" ), _( "Inner L7" ),
|
||||
_( "Inner L8" ), _( "Inner L9" ), _( "Inner L10" ), _( "Inner L11" ),
|
||||
_( "Inner L12" ), _( "Inner L13" ), _( "Inner L14" ), _( "Component" ),
|
||||
_( "Adhes Cop" ), _( "Adhes Cmp" ), _( "SoldP Cop" ), _( "SoldP Cmp" ),
|
||||
_( "SilkS Cop" ), _( "SilkS Cmp" ), _( "Mask Cop" ), _( "Mask Cmp" ),
|
||||
_( "Drawings " ), _( "Comments" ), _( "Eco1" ), _( "Eco2" ),
|
||||
_( "Edges Pcb" ), _( "BAD INDEX" ),
|
||||
};
|
||||
#else
|
||||
static const wxString layer_name_list[] = {
|
||||
_( "Copper " ), _( "Inner L1 " ), _( "Inner L2 " ), _( "Inner L3 " ),
|
||||
_( "Inner L4 " ), _( "Inner L5 " ), _( "Inner L6 " ), _( "Inner L7 " ),
|
||||
@ -313,8 +290,6 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
|
||||
_( "Edges Pcb" ), _( "BAD INDEX" ),
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
if( (unsigned) layer_number > LAYER_LIMIT )
|
||||
layer_number = LAYER_LIMIT;
|
||||
|
||||
@ -332,42 +307,6 @@ wxString ReturnPcbLayerName( int layer_number, bool omitSpacePadding )
|
||||
}
|
||||
else
|
||||
return *p;
|
||||
|
||||
#else // long standing established code:
|
||||
|
||||
static const wxString layer_name_list[] = {
|
||||
_( "Copper " ), _( "Inner L1 " ), _( "Inner L2 " ), _( "Inner L3 " ),
|
||||
_( "Inner L4 " ), _( "Inner L5 " ), _( "Inner L6 " ), _( "Inner L7 " ),
|
||||
_( "Inner L8 " ), _( "Inner L9 " ), _( "Inner L10" ), _( "Inner L11" ),
|
||||
_( "Inner L12" ), _( "Inner L13" ), _( "Inner L14" ), _( "Component" ),
|
||||
_( "Adhes Cop" ), _( "Adhes Cmp" ), _( "SoldP Cop" ), _( "SoldP Cmp" ),
|
||||
_( "SilkS Cop" ), _( "SilkS Cmp" ), _( "Mask Cop " ), _( "Mask Cmp " ),
|
||||
_( "Drawings " ), _( "Comments " ), _( "Eco1 " ), _( "Eco2 " ),
|
||||
_( "Edges Pcb" ), _( "--- " ), _( "--- " ), _( "--- " )
|
||||
};
|
||||
|
||||
|
||||
// Same as layer_name_list, without space, not internationalized
|
||||
static const wxString layer_name_list_for_filename[] = {
|
||||
wxT( "Copper" ), wxT( "InnerL1" ), wxT( "InnerL2" ), wxT( "InnerL3" ),
|
||||
wxT( "InnerL4" ), wxT( "InnerL5" ), wxT( "InnerL6" ), wxT( "InnerL7" ),
|
||||
wxT( "InnerL8" ), wxT( "InnerL9" ), wxT( "InnerL10" ), wxT( "InnerL11" ),
|
||||
wxT( "InnerL12" ), wxT( "InnerL13" ), wxT( "InnerL14" ), wxT( "Component" ),
|
||||
wxT( "AdhesCop" ), wxT( "AdhesCmp" ), wxT( "SoldPCop" ), wxT( "SoldPCmp" ),
|
||||
wxT( "SilkSCop" ), wxT( "SilkSCmp" ), wxT( "MaskCop" ), wxT( "MaskCmp" ),
|
||||
wxT( "Drawings" ), wxT( "Comments" ), wxT( "Eco1" ), wxT( "Eco2" ),
|
||||
wxT( "EdgesPcb" ), wxT( "---" ), wxT( "---" ), wxT( "---" )
|
||||
};
|
||||
|
||||
|
||||
if( (unsigned) layer_number >= 31u )
|
||||
layer_number = 31;
|
||||
|
||||
return omitSpacePadding ?
|
||||
layer_name_list_for_filename[layer_number] :
|
||||
layer_name_list[layer_number];
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -125,8 +125,8 @@ void WinEDA_App::WriteProjectConfig( const wxString& local_config_filename,
|
||||
switch( pt_cfg->m_Type )
|
||||
{
|
||||
case PARAM_INT:
|
||||
#undef PTCFG
|
||||
#define PTCFG ( (PARAM_CFG_INT*) pt_cfg )
|
||||
#undef PTCFG
|
||||
#define PTCFG ( (PARAM_CFG_INT*) pt_cfg )
|
||||
if( PTCFG->m_Pt_param == NULL )
|
||||
break;
|
||||
|
||||
@ -319,7 +319,8 @@ bool WinEDA_App::ReadProjectConfig( const wxString& local_config_filename,
|
||||
{
|
||||
#undef PTCFG
|
||||
#define PTCFG ( (PARAM_CFG_DOUBLE*) pt_cfg )
|
||||
double ftmp = 0; wxString msg;
|
||||
double ftmp = 0;
|
||||
wxString msg;
|
||||
if( pt_cfg->m_Setup )
|
||||
msg = m_EDA_Config->Read( pt_cfg->m_Ident, wxT( "" ) );
|
||||
else
|
||||
|
@ -1,6 +1,6 @@
|
||||
/***************************************/
|
||||
/** cfg.cpp : configuration de CVPCB **/
|
||||
/***************************************/
|
||||
/***************************************/
|
||||
/** cfg.cpp : configuration de CVPCB **/
|
||||
/***************************************/
|
||||
|
||||
/* lit ou met a jour la configuration de CVPCB */
|
||||
|
||||
@ -18,68 +18,76 @@
|
||||
|
||||
|
||||
/**************************************************/
|
||||
void Read_Config( const wxString & FileName )
|
||||
void Read_Config( const wxString& FileName )
|
||||
/**************************************************/
|
||||
|
||||
/* lit la configuration
|
||||
1 - lit cvpcb.cnf
|
||||
2 - si non trouve lit <chemin de cvpcb.exe>/cvpcb.cnf
|
||||
3 - si non trouve: init des variables aux valeurs par defaut
|
||||
|
||||
Remarque:
|
||||
le chemin de l'executable cvpcb.exe doit etre dans BinDir
|
||||
*/
|
||||
* 1 - lit cvpcb.cnf
|
||||
* 2 - si non trouve lit <chemin de cvpcb.exe>/cvpcb.cnf
|
||||
* 3 - si non trouve: init des variables aux valeurs par defaut
|
||||
*
|
||||
* Remarque:
|
||||
* le chemin de l'executable cvpcb.exe doit etre dans BinDir
|
||||
*/
|
||||
{
|
||||
wxString FullFileName = FileName ;
|
||||
wxString FullFileName = FileName;
|
||||
|
||||
/* Init des valeurs par defaut */
|
||||
g_LibName_List.Clear();
|
||||
g_ListName_Equ.Clear();
|
||||
/* Init des valeurs par defaut */
|
||||
g_LibName_List.Clear();
|
||||
g_ListName_Equ.Clear();
|
||||
|
||||
g_EDA_Appl->ReadProjectConfig(FullFileName,
|
||||
GROUP, ParamCfgList, FALSE);
|
||||
g_EDA_Appl->ReadProjectConfig( FullFileName,
|
||||
GROUP, ParamCfgList, FALSE );
|
||||
|
||||
if ( PkgInExtBuffer.IsEmpty() ) PkgInExtBuffer = wxT(".pkg");
|
||||
if ( NetInExtBuffer.IsEmpty() ) NetInExtBuffer = wxT(".net"),
|
||||
if( PkgInExtBuffer.IsEmpty() )
|
||||
PkgInExtBuffer = wxT( ".pkg" );
|
||||
|
||||
/* Inits autres variables */
|
||||
SetRealLibraryPath( wxT("modules"));
|
||||
if( NetInExtBuffer.IsEmpty() )
|
||||
NetInExtBuffer = wxT( ".net" );
|
||||
|
||||
/* Inits autres variables */
|
||||
SetRealLibraryPath( wxT( "modules" ) );
|
||||
}
|
||||
|
||||
|
||||
/************************************************************/
|
||||
void WinEDA_CvpcbFrame::Update_Config(wxCommandEvent& event)
|
||||
void WinEDA_CvpcbFrame::Update_Config( wxCommandEvent& event )
|
||||
/************************************************************/
|
||||
|
||||
/* fonction relai d'appel a Save_Config,
|
||||
la vraie fonction de sauvegarde de la config
|
||||
*/
|
||||
* la vraie fonction de sauvegarde de la config
|
||||
*/
|
||||
{
|
||||
Save_Config(this);
|
||||
Save_Config( this );
|
||||
}
|
||||
|
||||
|
||||
/************************************/
|
||||
void Save_Config(wxWindow * parent)
|
||||
void Save_Config( wxWindow* parent )
|
||||
/************************************/
|
||||
/* enregistrement de la config */
|
||||
{
|
||||
wxString path, FullFileName;
|
||||
wxString mask( wxT("*"));
|
||||
|
||||
FullFileName = FFileName;
|
||||
ChangeFileNameExt( FullFileName, g_Prj_Config_Filename_ext );
|
||||
wxString path, FullFileName;
|
||||
|
||||
path = wxGetCwd();
|
||||
FullFileName = EDA_FileSelector(_("Save preferences"),
|
||||
path, /* Chemin par defaut */
|
||||
FullFileName, /* nom fichier par defaut */
|
||||
g_Prj_Config_Filename_ext, /* extension par defaut */
|
||||
mask, /* Masque d'affichage */
|
||||
parent,
|
||||
wxFD_SAVE,
|
||||
TRUE
|
||||
);
|
||||
if ( FullFileName.IsEmpty()) return;
|
||||
wxString mask( wxT( "*" ) );
|
||||
|
||||
/* ecriture de la configuration */
|
||||
g_EDA_Appl->WriteProjectConfig(FullFileName, GROUP, ParamCfgList);
|
||||
FullFileName = FFileName;
|
||||
ChangeFileNameExt( FullFileName, g_Prj_Config_Filename_ext );
|
||||
|
||||
path = wxGetCwd();
|
||||
FullFileName = EDA_FileSelector( _( "Save preferences" ),
|
||||
path, /* Chemin par defaut */
|
||||
FullFileName, /* nom fichier par defaut */
|
||||
g_Prj_Config_Filename_ext, /* extension par defaut */
|
||||
mask, /* Masque d'affichage */
|
||||
parent,
|
||||
wxFD_SAVE,
|
||||
TRUE
|
||||
);
|
||||
|
||||
if( FullFileName.IsEmpty() )
|
||||
return;
|
||||
|
||||
/* ecriture de la configuration */
|
||||
g_EDA_Appl->WriteProjectConfig( FullFileName, GROUP, ParamCfgList );
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ WinEDA_DisplayFrame::WinEDA_DisplayFrame( wxWindow* father, WinEDA_App* parent,
|
||||
#endif
|
||||
SetTitle( title );
|
||||
|
||||
m_Pcb = new BOARD( NULL, this );
|
||||
m_Pcb = new BOARD( NULL, this );
|
||||
|
||||
m_CurrentScreen = new PCB_SCREEN( CVPCB_DISPLAY_FRAME );
|
||||
|
||||
|
@ -55,8 +55,6 @@ bool WinEDA_App::OnInit()
|
||||
SetTopWindow( m_GerberFrame );
|
||||
m_GerberFrame->Show( TRUE );
|
||||
|
||||
m_GerberFrame->m_Pcb = new BOARD( NULL, m_GerberFrame );
|
||||
|
||||
m_GerberFrame->Zoom_Automatique( TRUE );
|
||||
|
||||
if( argc > 1 )
|
||||
|
@ -16,13 +16,16 @@
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
/* Routines Locales */
|
||||
|
||||
/* Variables locales */
|
||||
|
||||
#define HOTKEY_FILENAME wxT( "gerbview" )
|
||||
|
||||
|
||||
/* Routines Locales */
|
||||
|
||||
|
||||
/* Variables locales */
|
||||
|
||||
|
||||
/*************************************************************/
|
||||
void WinEDA_GerberFrame::Process_Config( wxCommandEvent& event )
|
||||
/*************************************************************/
|
||||
@ -32,7 +35,8 @@ void WinEDA_GerberFrame::Process_Config( wxCommandEvent& event )
|
||||
wxString FullFileName;
|
||||
|
||||
pos = GetPosition();
|
||||
pos.x += 20; pos.y += 20;
|
||||
pos.x += 20;
|
||||
pos.y += 20;
|
||||
|
||||
switch( id )
|
||||
{
|
||||
@ -69,7 +73,7 @@ void WinEDA_GerberFrame::Process_Config( wxCommandEvent& event )
|
||||
|
||||
case ID_PREFERENCES_HOTKEY_PATH_IS_HOME:
|
||||
case ID_PREFERENCES_HOTKEY_PATH_IS_KICAD:
|
||||
HandleHotkeyConfigMenuSelection( this, id );
|
||||
HandleHotkeyConfigMenuSelection( this, id );
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -13,10 +13,11 @@
|
||||
#include "wx/statline.h"
|
||||
|
||||
/* Variables locales */
|
||||
#define LAYER_UNSELECTED NB_LAYERS
|
||||
static int ButtonTable[32]; // Indexes buttons to Gerber layers
|
||||
static int LayerLookUpTable[32]; // Indexes Gerber layers to PCB file layers
|
||||
wxStaticText* layer_list[32]; // Indexes text strings to buttons
|
||||
#define LAYER_UNSELECTED NB_LAYERS
|
||||
|
||||
static int ButtonTable[32]; // Indexes buttons to Gerber layers
|
||||
static int LayerLookUpTable[32]; // Indexes Gerber layers to PCB file layers
|
||||
wxStaticText* layer_list[32]; // Indexes text strings to buttons
|
||||
|
||||
enum swap_layer_id {
|
||||
ID_WINEDA_SWAPLAYERFRAME = 1800,
|
||||
@ -75,12 +76,13 @@ int * InstallDialogLayerPairChoice(WinEDA_GerberFrame * parent)
|
||||
*/
|
||||
{
|
||||
WinEDA_SwapLayerFrame * frame = new WinEDA_SwapLayerFrame(parent);
|
||||
int ii = frame->ShowModal();
|
||||
frame->Destroy();
|
||||
if( ii >= 0 )
|
||||
return LayerLookUpTable;
|
||||
else
|
||||
return NULL;
|
||||
|
||||
int ii = frame->ShowModal();
|
||||
frame->Destroy();
|
||||
if( ii >= 0 )
|
||||
return LayerLookUpTable;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -138,7 +140,6 @@ WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame(WinEDA_GerberFrame *parent) :
|
||||
int pcb_layer_number = 0;
|
||||
for( nb_items = 0, ii = 0; ii < 32; ii++ )
|
||||
{
|
||||
|
||||
if( g_GERBER_Descr_List[ii] == NULL )
|
||||
continue;
|
||||
|
||||
@ -353,8 +354,8 @@ void WinEDA_SwapLayerFrame::OnCancelClick(wxCommandEvent& event)
|
||||
void WinEDA_SwapLayerFrame::OnOkClick(wxCommandEvent& event)
|
||||
/*********************************************************/
|
||||
{
|
||||
int ii;
|
||||
bool AsCmpLayer = false;
|
||||
int ii;
|
||||
bool AsCmpLayer = false;
|
||||
|
||||
/* Compute the number of copper layers
|
||||
* this is the max layer number + 1 (if some internal layers exist)
|
||||
|
@ -148,38 +148,6 @@ struct CHEVELU;
|
||||
/* Class to handle a board */
|
||||
#include "class_board.h"
|
||||
|
||||
|
||||
/**
|
||||
* Class LAYER
|
||||
* holds information pertinent to a layer of a BOARD.
|
||||
*/
|
||||
class LAYER
|
||||
{
|
||||
wxString m_Name;
|
||||
LAYER_T m_Type;
|
||||
int m_Color;
|
||||
bool m_Visible; // ? use flags in m_Color instead ?
|
||||
|
||||
public:
|
||||
bool SetName( const wxString& aLayerName );
|
||||
|
||||
const wxString& GetName();
|
||||
|
||||
bool SetType( LAYER_T aLayerType );
|
||||
|
||||
LAYER_T GetType();
|
||||
|
||||
int GetColor() { return m_Color; }
|
||||
|
||||
void SetColor( int aColor ) { m_Color = aColor; }
|
||||
|
||||
bool IsVisible();
|
||||
|
||||
void SetVisible( bool isVisible );
|
||||
};
|
||||
|
||||
|
||||
|
||||
// Class for handle current printed board design settings
|
||||
#define HISTORY_NUMBER 8
|
||||
class EDA_BoardDesignSettings
|
||||
@ -207,7 +175,9 @@ public:
|
||||
|
||||
// Color options for screen display of the Printed Board:
|
||||
int m_PcbGridColor; // Grid color
|
||||
|
||||
int m_LayerColor[32]; // Layer colors (tracks and graphic items)
|
||||
|
||||
int m_ViaColor[4]; // Via color (depending on is type)
|
||||
int m_ModuleTextCMPColor; // Text module color for modules on the COMPONENT layer
|
||||
int m_ModuleTextCUColor; // Text module color for modules on the COPPER layer
|
||||
|
@ -74,6 +74,14 @@ public:
|
||||
|
||||
~WinEDA_BasePcbFrame();
|
||||
|
||||
/**
|
||||
* Function SetBOARD
|
||||
* sets the m_Pcb member in such as way as to ensure deleting any previous
|
||||
* BOARD.
|
||||
* @param aBoard The BOARD to put into the frame.
|
||||
*/
|
||||
void SetBOARD( BOARD* aBoard );
|
||||
|
||||
// General
|
||||
virtual void OnCloseWindow( wxCloseEvent& Event ) = 0;
|
||||
virtual void Process_Special_Functions( wxCommandEvent& event ) = 0;
|
||||
@ -378,7 +386,7 @@ public:
|
||||
bool RecreateCmpFileFromBoard();
|
||||
|
||||
void ExportToGenCAD( wxCommandEvent& event );
|
||||
|
||||
|
||||
/**
|
||||
* Function ExporttoSPECCTRA
|
||||
* will export the current BOARD to a specctra dsn file. See
|
||||
@ -389,7 +397,7 @@ public:
|
||||
|
||||
/**
|
||||
* Function ImportSpecctraSession
|
||||
* will import a specctra *.ses file and use it to relocate MODULEs and
|
||||
* will import a specctra *.ses file and use it to relocate MODULEs and
|
||||
* to replace all vias and tracks in an existing and loaded BOARD.
|
||||
* See http://www.autotraxeda.com/docs/SPECCTRA/SPECCTRA.pdf for the
|
||||
* specification.
|
||||
@ -398,13 +406,13 @@ public:
|
||||
|
||||
/**
|
||||
* Function ImportSpecctraDesign
|
||||
* will import a specctra *.dsn file and use it to replace an entire BOARD.
|
||||
* will import a specctra *.dsn file and use it to replace an entire BOARD.
|
||||
* The new board will not have any graphics, only components, tracks and vias.
|
||||
* See http://www.autotraxeda.com/docs/SPECCTRA/SPECCTRA.pdf for the
|
||||
* specification.
|
||||
*/
|
||||
void ImportSpecctraDesign( wxCommandEvent& event );
|
||||
|
||||
|
||||
/* Fonctions specifiques */
|
||||
MODULE* ListAndSelectModuleName();
|
||||
void Liste_Equipot( wxCommandEvent& event );
|
||||
@ -499,12 +507,12 @@ public:
|
||||
|
||||
|
||||
|
||||
/** Function Delete_LastCreatedCorner
|
||||
* Used only while creating a new zone outline
|
||||
* Remove and delete the current outline segment in progress
|
||||
* @return 0 if no corner in list, or corner number
|
||||
*/
|
||||
int Delete_LastCreatedCorner( wxDC* DC);
|
||||
/** Function Delete_LastCreatedCorner
|
||||
* Used only while creating a new zone outline
|
||||
* Remove and delete the current outline segment in progress
|
||||
* @return 0 if no corner in list, or corner number
|
||||
*/
|
||||
int Delete_LastCreatedCorner( wxDC* DC);
|
||||
|
||||
/**
|
||||
* Function Begin_Zone
|
||||
@ -517,7 +525,7 @@ public:
|
||||
* Function End_Zone
|
||||
* terminates (if no DRC error ) the zone edge creation process
|
||||
* @param DC = current Device Context
|
||||
* @return true if Ok, false if DRC error
|
||||
* @return true if Ok, false if DRC error
|
||||
*/
|
||||
bool End_Zone( wxDC* DC );
|
||||
|
||||
@ -586,11 +594,11 @@ public:
|
||||
ZONE_CONTAINER* zone_container,
|
||||
int corner_id );
|
||||
|
||||
/**
|
||||
* Function End_Move_Zone_Corner_Or_Outlines
|
||||
* Terminates a move corner in a zone outline, or a move zone outlines
|
||||
* @param DC = current Device Context (can be NULL)
|
||||
* @param zone_container: the given zone
|
||||
/**
|
||||
* Function End_Move_Zone_Corner_Or_Outlines
|
||||
* Terminates a move corner in a zone outline, or a move zone outlines
|
||||
* @param DC = current Device Context (can be NULL)
|
||||
* @param zone_container: the given zone
|
||||
*/
|
||||
void End_Move_Zone_Corner_Or_Outlines( wxDC* DC, ZONE_CONTAINER* zone_container );
|
||||
|
||||
@ -612,13 +620,13 @@ public:
|
||||
*/
|
||||
void Delete_Zone_Contour( wxDC* DC, ZONE_CONTAINER* zone_container );
|
||||
|
||||
/**
|
||||
* Function Start_Move_Zone_Outlines
|
||||
* Initialise parametres to move an existing zone outlines.
|
||||
/**
|
||||
* Function Start_Move_Zone_Outlines
|
||||
* Initialise parametres to move an existing zone outlines.
|
||||
* @param DC = current Device Context (can be NULL)
|
||||
* @param zone_container: the given zone to move
|
||||
*/
|
||||
void Start_Move_Zone_Outlines( wxDC* DC, ZONE_CONTAINER* zone_container );
|
||||
* @param zone_container: the given zone to move
|
||||
*/
|
||||
void Start_Move_Zone_Outlines( wxDC* DC, ZONE_CONTAINER* zone_container );
|
||||
|
||||
// Target handling
|
||||
MIREPCB* Create_Mire( wxDC* DC );
|
||||
@ -725,7 +733,7 @@ public:
|
||||
int BestZoom(); // Retourne le meilleur zoom
|
||||
void OnSelectOptionToolbar( wxCommandEvent& event );
|
||||
void OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct );
|
||||
PCB_SCREEN* GetPCBScreen(){ return (PCB_SCREEN*)GetScreen(); }
|
||||
PCB_SCREEN* GetPCBScreen(){ return (PCB_SCREEN*)GetScreen(); }
|
||||
|
||||
EDA_BaseStruct* GerberGeneralLocateAndDisplay();
|
||||
EDA_BaseStruct* Locate( int typeloc );
|
||||
|
@ -66,6 +66,13 @@ WinEDA_BasePcbFrame::~WinEDA_BasePcbFrame( void )
|
||||
}
|
||||
|
||||
|
||||
void WinEDA_BasePcbFrame::SetBOARD( BOARD* aBoard )
|
||||
{
|
||||
delete m_Pcb;
|
||||
m_Pcb = aBoard;
|
||||
}
|
||||
|
||||
|
||||
/**************************************/
|
||||
int WinEDA_BasePcbFrame::BestZoom( void )
|
||||
/**************************************/
|
||||
@ -102,7 +109,7 @@ void WinEDA_BasePcbFrame::CursorGoto( const wxPoint& aPos )
|
||||
{
|
||||
// factored out of pcbnew/find.cpp
|
||||
|
||||
PCB_SCREEN* screen = (PCB_SCREEN*)GetScreen();
|
||||
PCB_SCREEN* screen = (PCB_SCREEN*)GetScreen();
|
||||
|
||||
wxClientDC dc( DrawPanel );
|
||||
|
||||
|
@ -38,6 +38,12 @@ BOARD::BOARD( EDA_BaseStruct* parent, WinEDA_BasePcbFrame* frame ) :
|
||||
m_LocalRatsnest = NULL; // pointeur liste rats local
|
||||
m_CurrentZoneContour = NULL; // This ZONE_CONTAINER handle the zone contour cuurently in progress
|
||||
// de determination des contours de zone
|
||||
|
||||
for( int layer=0; layer<NB_COPPER_LAYERS; ++layer )
|
||||
{
|
||||
m_Layer[layer].m_Name = ReturnPcbLayerName( layer );
|
||||
m_Layer[layer].m_Type = LT_SIGNAL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -80,28 +86,96 @@ BOARD::~BOARD()
|
||||
|
||||
wxString BOARD::GetLayerName( int aLayerIndex ) const
|
||||
{
|
||||
// copper layer names are stored in the BOARD.
|
||||
if( (unsigned) aLayerIndex < (unsigned) GetCopperLayerCount() )
|
||||
{
|
||||
// default names were set in BOARD::BOARD() but they may be
|
||||
// over-ridden by BOARD::SetLayerName()
|
||||
return m_Layer[aLayerIndex].m_Name;
|
||||
}
|
||||
|
||||
return ReturnPcbLayerName( aLayerIndex, true );
|
||||
}
|
||||
|
||||
|
||||
bool BOARD::SetLayerName( int aLayerIndex, const wxString& aLayerName )
|
||||
{
|
||||
// a dummy temporarily.
|
||||
D(printf("SetLayerName( %d, %s )\n", aLayerIndex, CONV_TO_UTF8(aLayerName) );)
|
||||
return true;
|
||||
if( (unsigned) aLayerIndex < (unsigned) GetCopperLayerCount() )
|
||||
{
|
||||
if( aLayerName == wxEmptyString || aLayerName.Len() > 20 )
|
||||
return false;
|
||||
|
||||
// no quote chars in the name allowed
|
||||
if( aLayerName.Find( wxChar('"') ) != wxNOT_FOUND )
|
||||
return false;
|
||||
|
||||
// ensure unique-ness of layer names
|
||||
for( int layer=0; layer<GetCopperLayerCount(); ++layer )
|
||||
{
|
||||
if( layer!=aLayerIndex && aLayerName == m_Layer[layer].m_Name )
|
||||
return false;
|
||||
}
|
||||
|
||||
m_Layer[aLayerIndex].m_Name = aLayerName;
|
||||
|
||||
// replace any spaces with underscores
|
||||
m_Layer[aLayerIndex].m_Name.Replace( wxT(" "), wxT("_") );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
LAYER_T BOARD::GetLayerType( int aLayerIndex ) const
|
||||
{
|
||||
if( (unsigned) aLayerIndex < (unsigned) GetCopperLayerCount() )
|
||||
return m_Layer[aLayerIndex].m_Type;
|
||||
return LT_SIGNAL;
|
||||
}
|
||||
|
||||
|
||||
bool BOARD::SetLayerType( int aLayerIndex, LAYER_T aLayerType )
|
||||
{
|
||||
// a dummy temporarily.
|
||||
return true;
|
||||
if( (unsigned) aLayerIndex < (unsigned) GetCopperLayerCount() )
|
||||
{
|
||||
m_Layer[aLayerIndex].m_Type = aLayerType;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
const char* LAYER::ShowType( LAYER_T aType )
|
||||
{
|
||||
const char* cp;
|
||||
|
||||
switch( aType )
|
||||
{
|
||||
default:
|
||||
case LT_SIGNAL: cp = "signal"; break;
|
||||
case LT_POWER: cp = "power"; break;
|
||||
case LT_MIXED: cp = "mixed"; break;
|
||||
case LT_JUMPER: cp = "jumper"; break;
|
||||
}
|
||||
|
||||
return cp;
|
||||
}
|
||||
|
||||
|
||||
LAYER_T LAYER::ParseType( const char* aType )
|
||||
{
|
||||
if( strcmp( aType, "signal" ) == 0 )
|
||||
return LT_SIGNAL;
|
||||
else if( strcmp( aType, "power" ) == 0 )
|
||||
return LT_POWER;
|
||||
else if( strcmp( aType, "mixed" ) == 0 )
|
||||
return LT_MIXED;
|
||||
else if( strcmp( aType, "jumper" ) == 0 )
|
||||
return LT_JUMPER;
|
||||
else
|
||||
return LAYER_T(-1);
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,14 +18,49 @@ enum LAYER_T
|
||||
LT_SIGNAL,
|
||||
LT_POWER,
|
||||
LT_MIXED,
|
||||
LT_JUMPER,
|
||||
};
|
||||
|
||||
|
||||
/***********************************************/
|
||||
/* class BOARD : handle datas to build a board */
|
||||
/***********************************************/
|
||||
/**
|
||||
* Struct LAYER
|
||||
* holds information pertinent to a layer of a BOARD.
|
||||
*/
|
||||
struct LAYER
|
||||
{
|
||||
/** The name of the layer, there should be no spaces in this name. */
|
||||
wxString m_Name;
|
||||
|
||||
/** The type of the layer */
|
||||
LAYER_T m_Type;
|
||||
|
||||
// int m_Color;
|
||||
// bool m_Visible; // ? use flags in m_Color instead ?
|
||||
|
||||
|
||||
/**
|
||||
* Function ShowType
|
||||
* converts a LAYER_T enum to a const char*
|
||||
* @param aType The LAYER_T to convert
|
||||
* @return const char* - The string representation of the layer type.
|
||||
*/
|
||||
static const char* ShowType( LAYER_T aType );
|
||||
|
||||
/**
|
||||
* Function ParseType
|
||||
* converts a string to a LAYER_T
|
||||
* @param aType The const char* to convert
|
||||
* @return LAYER_T - The binary representation of the layer type, or
|
||||
* LAYER_T(-1) if the string is invalid
|
||||
*/
|
||||
static LAYER_T ParseType( const char* aType );
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Class BOARD
|
||||
* holds information pertinent to a PCBNEW printed circuit board.
|
||||
*/
|
||||
class BOARD : public BOARD_ITEM
|
||||
{
|
||||
friend class WinEDA_PcbFrame;
|
||||
@ -37,6 +72,8 @@ private:
|
||||
typedef std::vector<ZONE_CONTAINER*> ZONE_CONTAINERS; // @todo: switch to boost::ptr_vector, and change ~BOARD()
|
||||
ZONE_CONTAINERS m_ZoneDescriptorList; ///< edge zone descriptors, owned by pointer
|
||||
|
||||
LAYER m_Layer[NB_COPPER_LAYERS];
|
||||
|
||||
public:
|
||||
WinEDA_BasePcbFrame* m_PcbFrame; // Window de visualisation
|
||||
EDA_Rect m_BoundaryBox; // Board size and position
|
||||
@ -294,6 +331,7 @@ public:
|
||||
return wxT( "BOARD" );
|
||||
}
|
||||
|
||||
|
||||
#if defined(DEBUG)
|
||||
/**
|
||||
* Function Show
|
||||
|
@ -150,6 +150,9 @@ void DRAWSEGMENT::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
int itype;
|
||||
wxString msg;
|
||||
|
||||
BOARD* board = (BOARD*) m_Parent;
|
||||
wxASSERT( board );
|
||||
|
||||
frame->MsgPanel->EraseMsgBox();
|
||||
|
||||
itype = m_Type & 0x0F;
|
||||
@ -173,7 +176,7 @@ void DRAWSEGMENT::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
Affiche_1_Parametre( frame, -1, wxEmptyString, _( "Segment" ), RED );
|
||||
|
||||
Affiche_1_Parametre( frame, 48, _( "Layer" ),
|
||||
ReturnPcbLayerName( m_Layer ), BROWN );
|
||||
board->GetLayerName( m_Layer ), BROWN );
|
||||
|
||||
valeur_param( (unsigned) m_Width, msg );
|
||||
Affiche_1_Parametre( frame, 60, _( "Width" ), msg, DARKCYAN );
|
||||
|
@ -1135,15 +1135,6 @@ bool MODULE::HitTest( const wxPoint& refPos )
|
||||
if( m_BoundaryBox.Inside( spot_cX, spot_cY ) )
|
||||
return true;
|
||||
|
||||
/* no
|
||||
// The GENERAL_COLLECTOR needs these two tests in order to find a MODULE
|
||||
// when the user clicks on its text. Keep these 2, needed in OnRightClick().
|
||||
if( m_Reference->HitTest( refPos ) )
|
||||
return true;
|
||||
|
||||
if( m_Value->HitTest( refPos ) )
|
||||
return true;
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1173,6 +1164,25 @@ bool MODULE::HitTest( EDA_Rect& refArea )
|
||||
}
|
||||
|
||||
|
||||
D_PAD* MODULE::FindPadByName( const wxString& aPadName ) const
|
||||
{
|
||||
wxString buf;
|
||||
|
||||
for( D_PAD* pad = m_Pads; pad; pad = pad->Next() )
|
||||
{
|
||||
pad->ReturnStringPadName( buf );
|
||||
#if 1
|
||||
if( buf.CmpNoCase( aPadName ) == 0 ) // why case insensitive?
|
||||
#else
|
||||
if( buf == aPadName )
|
||||
#endif
|
||||
return pad;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
// see class_module.h
|
||||
SEARCH_RESULT MODULE::Visit( INSPECTOR* inspector, const void* testData,
|
||||
const KICAD_T scanTypes[] )
|
||||
|
@ -65,7 +65,7 @@ public:
|
||||
|
||||
unsigned long m_Link; // variable temporaire ( pour editions, ...)
|
||||
long m_LastEdit_Time; // Date de la derniere modification du module (gestion de librairies)
|
||||
wxString m_Path;
|
||||
wxString m_Path;
|
||||
|
||||
wxString m_Doc; // Texte de description du module
|
||||
wxString m_KeyWord; // Liste des mots cles relatifs au module
|
||||
@ -197,6 +197,17 @@ public:
|
||||
return m_Value->m_Text;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function FindPadByName
|
||||
* returns a D_PAD* with a matching name. Note that names may not be
|
||||
* unique, depending on how the foot print was created.
|
||||
* @param
|
||||
* @return D_PAD* - The first matching name is returned, or NULL if not found.
|
||||
*/
|
||||
D_PAD* FindPadByName( const wxString& aPadName ) const;
|
||||
|
||||
|
||||
/**
|
||||
* Function Visit
|
||||
* should be re-implemented for each derived class in order to handle
|
||||
|
@ -119,26 +119,26 @@ bool TEXTE_PCB::Save( FILE* aFile ) const
|
||||
|
||||
if( m_Text.IsEmpty() )
|
||||
return true;
|
||||
|
||||
|
||||
bool rc = false;
|
||||
|
||||
|
||||
if( fprintf( aFile, "$TEXTPCB\n" ) != sizeof("$TEXTPCB\n")-1 )
|
||||
goto out;
|
||||
|
||||
|
||||
fprintf( aFile, "Te \"%s\"\n", CONV_TO_UTF8( m_Text ) );
|
||||
fprintf( aFile, "Po %d %d %d %d %d %d\n",
|
||||
m_Pos.x, m_Pos.y, m_Size.x, m_Size.y, m_Width, m_Orient );
|
||||
fprintf( aFile, "De %d %d %lX %d\n", m_Layer, m_Miroir, m_TimeStamp, 0 );
|
||||
|
||||
|
||||
if( fprintf( aFile, "$EndTEXTPCB\n" ) != sizeof("$EndTEXTPCB\n")-1 )
|
||||
goto out;
|
||||
|
||||
|
||||
rc = true;
|
||||
out:
|
||||
out:
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
@ -167,15 +167,18 @@ void TEXTE_PCB::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
BOARD* board = (BOARD*) m_Parent;
|
||||
wxASSERT( board );
|
||||
|
||||
frame->MsgPanel->EraseMsgBox();
|
||||
|
||||
if( m_Parent && m_Parent->Type() == TYPECOTATION )
|
||||
Affiche_1_Parametre( frame, 1, _( "COTATION" ), m_Text, DARKGREEN );
|
||||
else
|
||||
Affiche_1_Parametre( frame, 1, _( "PCB Text" ), m_Text, DARKGREEN );
|
||||
|
||||
|
||||
Affiche_1_Parametre( frame, 28, _( "Layer" ),
|
||||
ReturnPcbLayerName( m_Layer ),
|
||||
board->GetLayerName( m_Layer ),
|
||||
g_DesignSettings.m_LayerColor[m_Layer] & MASKCOLOR );
|
||||
|
||||
Affiche_1_Parametre( frame, 36, _( "Mirror" ), wxEmptyString, GREEN );
|
||||
@ -203,7 +206,7 @@ void TEXTE_PCB::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
/**
|
||||
* Function Show
|
||||
* is used to output the object tree, currently for debugging only.
|
||||
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||
* of nesting of this object within the overall tree.
|
||||
* @param os The ostream& to output to.
|
||||
*/
|
||||
@ -211,8 +214,8 @@ void TEXTE_PCB::Show( int nestLevel, std::ostream& os )
|
||||
{
|
||||
// for now, make it look like XML:
|
||||
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
||||
" string=\"" << m_Text.mb_str() << "\"/>\n";
|
||||
|
||||
" string=\"" << m_Text.mb_str() << "\"/>\n";
|
||||
|
||||
// NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() << ">\n";
|
||||
}
|
||||
|
||||
|
@ -41,21 +41,21 @@ TEXTE_MODULE::TEXTE_MODULE( MODULE* parent, int text_type ) :
|
||||
m_Orient = 0; /* en 1/10 degre */
|
||||
m_Miroir = 1; // Mode normal (pas de miroir)
|
||||
m_Unused = 0;
|
||||
|
||||
|
||||
SetLayer( SILKSCREEN_N_CMP );
|
||||
if( Module && (Module->Type() == TYPEMODULE) )
|
||||
{
|
||||
m_Pos = Module->m_Pos;
|
||||
|
||||
int moduleLayer = Module->GetLayer();
|
||||
|
||||
|
||||
if( moduleLayer == COPPER_LAYER_N )
|
||||
SetLayer( SILKSCREEN_N_CU );
|
||||
else if( moduleLayer == CMP_N )
|
||||
SetLayer( SILKSCREEN_N_CMP );
|
||||
else
|
||||
else
|
||||
SetLayer( moduleLayer );
|
||||
|
||||
|
||||
if( moduleLayer == SILKSCREEN_N_CU
|
||||
|| moduleLayer == ADHESIVE_N_CU
|
||||
|| moduleLayer == COPPER_LAYER_N )
|
||||
@ -75,20 +75,20 @@ bool TEXTE_MODULE::Save( FILE* aFile ) const
|
||||
{
|
||||
MODULE* parent = (MODULE*) GetParent();
|
||||
int orient = m_Orient;
|
||||
|
||||
|
||||
if( parent )
|
||||
orient += parent->m_Orient;
|
||||
|
||||
|
||||
int ret = fprintf( aFile, "T%d %d %d %d %d %d %d %c %c %d \"%.16s\"\n",
|
||||
m_Type,
|
||||
m_Pos0.x, m_Pos0.y,
|
||||
m_Size.y, m_Size.x,
|
||||
orient,
|
||||
orient,
|
||||
m_Width,
|
||||
m_Miroir ? 'N' : 'M', m_NoShow ? 'I' : 'V',
|
||||
GetLayer(),
|
||||
CONV_TO_UTF8( m_Text ) );
|
||||
|
||||
|
||||
return (ret > 20);
|
||||
}
|
||||
|
||||
@ -209,11 +209,11 @@ bool TEXTE_MODULE::HitTest( const wxPoint& posref )
|
||||
|
||||
/* le point de reference est tourn<72>de - angle
|
||||
* pour se ramener a un rectangle de reference horizontal */
|
||||
mX = posref.x - m_Pos.x;
|
||||
mX = posref.x - m_Pos.x;
|
||||
mY = posref.y - m_Pos.y;
|
||||
|
||||
|
||||
RotatePoint( &mX, &mY, -angle );
|
||||
|
||||
|
||||
/* le point de reference est-il dans ce rectangle */
|
||||
if( ( abs( mX ) <= abs( dx ) ) && ( abs( mY ) <= abs( dy ) ) )
|
||||
{
|
||||
@ -257,7 +257,7 @@ void TEXTE_MODULE::Draw( WinEDA_DrawPanel* panel, wxDC* DC, wxPoint offset, int
|
||||
orient = GetDrawRotation();
|
||||
miroir = m_Miroir & 1; // = 0 si vu en miroir
|
||||
width = m_Width;
|
||||
|
||||
|
||||
if( (frame->m_DisplayModText == FILAIRE) || ( (width / zoom) < L_MIN_DESSIN ) )
|
||||
width = 0;
|
||||
else if( frame->m_DisplayModText == SKETCH )
|
||||
@ -281,7 +281,7 @@ void TEXTE_MODULE::Draw( WinEDA_DrawPanel* panel, wxDC* DC, wxPoint offset, int
|
||||
|
||||
if( Module && Module->GetLayer() == COPPER_LAYER_N )
|
||||
color = g_ModuleTextCUColor;
|
||||
|
||||
|
||||
else if( Module && Module->GetLayer() == CMP_N )
|
||||
color = g_ModuleTextCMPColor;
|
||||
|
||||
@ -290,7 +290,7 @@ void TEXTE_MODULE::Draw( WinEDA_DrawPanel* panel, wxDC* DC, wxPoint offset, int
|
||||
|
||||
if( m_NoShow )
|
||||
color = g_ModuleTextNOVColor;
|
||||
|
||||
|
||||
if( (color & ITEM_NOT_SHOW) != 0 )
|
||||
return;
|
||||
|
||||
@ -330,20 +330,25 @@ int TEXTE_MODULE::GetDrawRotation()
|
||||
}
|
||||
|
||||
|
||||
// see class_text_mod.h
|
||||
void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
// see class_text_mod.h
|
||||
void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
{
|
||||
wxString msg, Line;
|
||||
int ii;
|
||||
|
||||
|
||||
MODULE* module = (MODULE*) m_Parent;
|
||||
|
||||
|
||||
wxASSERT( module );
|
||||
|
||||
if( !module )
|
||||
return;
|
||||
|
||||
static const wxString text_type_msg[3] = {
|
||||
BOARD* board = (BOARD*) module->m_Parent;
|
||||
wxASSERT( board );
|
||||
|
||||
static const wxString text_type_msg[3] = {
|
||||
_( "Ref." ), _( "Value" ), _( "Text" ) };
|
||||
|
||||
|
||||
frame->MsgPanel->EraseMsgBox();
|
||||
|
||||
Line = module->m_Reference->m_Text;
|
||||
@ -352,10 +357,10 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
Line = m_Text;
|
||||
Affiche_1_Parametre( frame, 10, _( "Text" ), Line, YELLOW );
|
||||
|
||||
ii = m_Type;
|
||||
ii = m_Type;
|
||||
if( ii > 2 )
|
||||
ii = 2;
|
||||
|
||||
|
||||
Affiche_1_Parametre( frame, 20, _( "Type" ), text_type_msg[ii], DARKGREEN );
|
||||
|
||||
Affiche_1_Parametre( frame, 25, _( "Display" ), wxEmptyString, DARKGREEN );
|
||||
@ -366,7 +371,7 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
|
||||
ii = m_Layer;
|
||||
if( ii < NB_LAYERS )
|
||||
Affiche_1_Parametre( frame, 28, _( "Layer" ), ReturnPcbLayerName( ii ), DARKGREEN );
|
||||
Affiche_1_Parametre( frame, 28, _( "Layer" ), board->GetLayerName( ii ), DARKGREEN );
|
||||
else
|
||||
{
|
||||
msg.Printf( wxT( "%d" ), ii );
|
||||
@ -376,7 +381,7 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
msg = wxT( " Yes" );
|
||||
if( m_Miroir & 1 )
|
||||
msg = wxT( " No" );
|
||||
|
||||
|
||||
Affiche_1_Parametre( frame, 36, _( "Mirror" ), msg, DARKGREEN );
|
||||
|
||||
msg.Printf( wxT( "%.1f" ), (float) m_Orient / 10 );
|
||||
@ -402,27 +407,27 @@ bool TEXTE_MODULE::IsOnLayer( int aLayer ) const
|
||||
/* test the parent, which is a MODULE */
|
||||
if( aLayer == GetParent()->GetLayer() )
|
||||
return true;
|
||||
|
||||
|
||||
if( aLayer == COPPER_LAYER_N )
|
||||
{
|
||||
if( m_Layer==ADHESIVE_N_CU || m_Layer==SILKSCREEN_N_CU )
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
else if( aLayer == CMP_N )
|
||||
{
|
||||
if( m_Layer==ADHESIVE_N_CMP || m_Layer==SILKSCREEN_N_CMP )
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* see class_text_mod.h
|
||||
bool TEXTE_MODULE::IsOnOneOfTheseLayers( int aLayerMask ) const
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
@ -431,7 +436,7 @@ bool TEXTE_MODULE::IsOnOneOfTheseLayers( int aLayerMask ) const
|
||||
/**
|
||||
* Function Show
|
||||
* is used to output the object tree, currently for debugging only.
|
||||
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||
* of nesting of this object within the overall tree.
|
||||
* @param os The ostream& to output to.
|
||||
*/
|
||||
@ -439,8 +444,8 @@ void TEXTE_MODULE::Show( int nestLevel, std::ostream& os )
|
||||
{
|
||||
// for now, make it look like XML:
|
||||
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
||||
" string=\"" << m_Text.mb_str() << "\"/>\n";
|
||||
|
||||
" string=\"" << m_Text.mb_str() << "\"/>\n";
|
||||
|
||||
// NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() << ">\n";
|
||||
}
|
||||
#endif
|
||||
|
@ -248,7 +248,7 @@ void ZONE_CONTAINER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& off
|
||||
if( DC == NULL )
|
||||
return;
|
||||
|
||||
wxPoint seg_start, seg_end;
|
||||
wxPoint seg_start, seg_end;
|
||||
int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
|
||||
int color = g_DesignSettings.m_LayerColor[m_Layer];
|
||||
|
||||
@ -319,9 +319,9 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
* @param draw_mode = draw mode: OR, XOR ..
|
||||
*/
|
||||
{
|
||||
int current_gr_mode = draw_mode;
|
||||
bool is_close_segment = false;
|
||||
wxPoint seg_start, seg_end;
|
||||
int current_gr_mode = draw_mode;
|
||||
bool is_close_segment = false;
|
||||
wxPoint seg_start, seg_end;
|
||||
|
||||
if( DC == NULL )
|
||||
return;
|
||||
@ -339,7 +339,7 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
|
||||
|
||||
// draw the lines
|
||||
wxPoint start_contour_pos = GetCornerPosition(0);
|
||||
wxPoint start_contour_pos = GetCornerPosition(0);
|
||||
for( int ic = 0; ic < GetNumCorners(); ic++ )
|
||||
{
|
||||
int xi = GetCornerPosition(ic).x;
|
||||
@ -347,27 +347,27 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||
int xf, yf;
|
||||
if( m_Poly->corner[ic].end_contour == FALSE && ic < GetNumCorners() - 1 )
|
||||
{
|
||||
is_close_segment = false;
|
||||
is_close_segment = false;
|
||||
xf = GetCornerPosition(ic + 1).x;
|
||||
yf = GetCornerPosition(ic + 1).y;
|
||||
if ( (m_Poly->corner[ic + 1].end_contour) || (ic == GetNumCorners() - 2) )
|
||||
current_gr_mode = GR_XOR;
|
||||
else
|
||||
current_gr_mode = draw_mode;
|
||||
if ( (m_Poly->corner[ic + 1].end_contour) || (ic == GetNumCorners() - 2) )
|
||||
current_gr_mode = GR_XOR;
|
||||
else
|
||||
current_gr_mode = draw_mode;
|
||||
}
|
||||
else
|
||||
{
|
||||
is_close_segment = true;
|
||||
current_gr_mode = GR_XOR;
|
||||
is_close_segment = true;
|
||||
current_gr_mode = GR_XOR;
|
||||
xf = start_contour_pos.x;
|
||||
yf = start_contour_pos.y;
|
||||
start_contour_pos = GetCornerPosition(ic + 1);
|
||||
}
|
||||
GRSetDrawMode( DC, current_gr_mode );
|
||||
if ( is_close_segment )
|
||||
GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, WHITE );
|
||||
else
|
||||
GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, color );
|
||||
GRSetDrawMode( DC, current_gr_mode );
|
||||
if ( is_close_segment )
|
||||
GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, WHITE );
|
||||
else
|
||||
GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, color );
|
||||
}
|
||||
}
|
||||
|
||||
@ -514,6 +514,10 @@ void ZONE_CONTAINER::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
wxString msg;
|
||||
int text_pos;
|
||||
|
||||
BOARD* board = (BOARD*) m_Parent;
|
||||
|
||||
wxASSERT( board );
|
||||
|
||||
frame->MsgPanel->EraseMsgBox();
|
||||
|
||||
msg = _( "Zone Outline" );
|
||||
@ -551,7 +555,7 @@ void ZONE_CONTAINER::Display_Infos( WinEDA_DrawFrame* frame )
|
||||
Affiche_1_Parametre( frame, text_pos, _( "NetCode" ), msg, RED );
|
||||
|
||||
text_pos += 8;
|
||||
msg = ReturnPcbLayerName( m_Layer );
|
||||
msg = board->GetLayerName( m_Layer );
|
||||
Affiche_1_Parametre( frame, text_pos, _( "Layer" ), msg, BROWN );
|
||||
|
||||
text_pos += 8;
|
||||
@ -588,19 +592,19 @@ void ZONE_CONTAINER::Move( const wxPoint& offset )
|
||||
*/
|
||||
void ZONE_CONTAINER::MoveEdge( const wxPoint& offset )
|
||||
{
|
||||
int ii = m_CornerSelection;
|
||||
int ii = m_CornerSelection;
|
||||
|
||||
// Move the start point of the selected edge:
|
||||
// Move the start point of the selected edge:
|
||||
SetCornerPosition(ii, GetCornerPosition(ii) + offset);
|
||||
|
||||
// Move the end point of the selected edge:
|
||||
if ( m_Poly->corner[ii].end_contour || ii == GetNumCorners() - 1)
|
||||
{
|
||||
int icont = m_Poly->GetContour( ii );
|
||||
ii = m_Poly->GetContourStart( icont );
|
||||
}
|
||||
else
|
||||
ii++;
|
||||
// Move the end point of the selected edge:
|
||||
if ( m_Poly->corner[ii].end_contour || ii == GetNumCorners() - 1)
|
||||
{
|
||||
int icont = m_Poly->GetContour( ii );
|
||||
ii = m_Poly->GetContourStart( icont );
|
||||
}
|
||||
else
|
||||
ii++;
|
||||
SetCornerPosition(ii, GetCornerPosition(ii) + offset);
|
||||
|
||||
m_Poly->Hatch();
|
||||
|
@ -156,6 +156,7 @@ EDA_BoardDesignSettings::EDA_BoardDesignSettings()
|
||||
m_MicroViaDrill = 50; // micro via drill (for the entire board)
|
||||
m_CurrentMicroViaSize = 150; // Current micro via size
|
||||
m_MicroViasAllowed = false; // true to allow micro vias
|
||||
|
||||
for( ii = 0; ii < HISTORY_NUMBER; ii++ )
|
||||
{
|
||||
m_TrackWidthHistory[ii] = 0; // Last HISTORY_NUMBER used track widths
|
||||
@ -171,6 +172,7 @@ EDA_BoardDesignSettings::EDA_BoardDesignSettings()
|
||||
m_MaskMargin = 150; // Solder mask margin
|
||||
/* Color options for screen display of the Printed Board: */
|
||||
m_PcbGridColor = DARKGRAY; // Grid color
|
||||
|
||||
for( ii = 0; ii < 32; ii++ )
|
||||
m_LayerColor[ii] = default_layer_color[ii];
|
||||
|
||||
@ -179,6 +181,7 @@ EDA_BoardDesignSettings::EDA_BoardDesignSettings()
|
||||
m_ViaColor[VIA_MICROVIA] = CYAN;
|
||||
m_ViaColor[VIA_BLIND_BURIED] = BROWN;
|
||||
m_ViaColor[VIA_THROUGH] = WHITE;
|
||||
|
||||
m_ModuleTextCMPColor = LIGHTGRAY; // Text module color for modules on the COMPONENT layer
|
||||
m_ModuleTextCUColor = MAGENTA; // Text module color for modules on the COPPER layer
|
||||
m_ModuleTextNOVColor = DARKGRAY; // Text module color for "invisible" texts (must be BLACK if really not displayed)
|
||||
|
@ -22,12 +22,12 @@ static int status_cotation; /* = 0 : pas de cotation en cours
|
||||
/*
|
||||
* Les routines generent une cotation de la forme
|
||||
* - cote usuelle:
|
||||
*
|
||||
*
|
||||
| |
|
||||
| dist |
|
||||
|<---------->|
|
||||
| |
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#define MAX_CHAR 40 /* longueur maxi de la cotation */
|
||||
@ -135,10 +135,10 @@ WinEDA_CotationPropertiesFrame::WinEDA_CotationPropertiesFrame( WinEDA_PcbFrame*
|
||||
m_SelLayerBox = new WinEDAChoiceBox( this, ID_TEXTPCB_SELECT_LAYER,
|
||||
wxDefaultPosition, wxDefaultSize );
|
||||
LeftBoxSizer->Add( m_SelLayerBox, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 );
|
||||
int ii;
|
||||
for( ii = FIRST_NO_COPPER_LAYER; ii < NB_LAYERS; ii++ )
|
||||
|
||||
for( int layer = FIRST_NO_COPPER_LAYER; layer<NB_LAYERS; layer++ )
|
||||
{
|
||||
m_SelLayerBox->Append( ReturnPcbLayerName( ii ) );
|
||||
m_SelLayerBox->Append( parent->m_Pcb->GetLayerName( layer ) );
|
||||
}
|
||||
|
||||
m_SelLayerBox->SetSelection( Cotation->GetLayer() - FIRST_NO_COPPER_LAYER );
|
||||
@ -174,8 +174,8 @@ void WinEDA_CotationPropertiesFrame::OnOkClick( wxCommandEvent& event )
|
||||
CurrentCotation->m_Text->m_Width = CurrentCotation->m_Width =
|
||||
m_TxtWidthCtrl->GetValue();
|
||||
CurrentCotation->m_Text->m_Miroir = (m_Mirror->GetSelection() == 0) ? 1 : 0;
|
||||
|
||||
CurrentCotation->SetLayer( m_SelLayerBox->GetChoice() + FIRST_NO_COPPER_LAYER );
|
||||
|
||||
CurrentCotation->SetLayer( m_SelLayerBox->GetChoice() + FIRST_NO_COPPER_LAYER );
|
||||
CurrentCotation->m_Text->SetLayer( m_SelLayerBox->GetChoice() + FIRST_NO_COPPER_LAYER );
|
||||
|
||||
CurrentCotation->m_Text->CreateDrawData();
|
||||
@ -213,7 +213,7 @@ static void Exit_EditCotation( WinEDA_DrawPanel* Panel, wxDC* DC )
|
||||
status_cotation = 0;
|
||||
Panel->ManageCurseur = NULL;
|
||||
Panel->ForceCloseManageCurseur = NULL;
|
||||
((WinEDA_PcbFrame*)Panel->m_Parent)->SetCurItem(NULL);
|
||||
((WinEDA_PcbFrame*)Panel->m_Parent)->SetCurItem(NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -48,7 +48,7 @@ void RemoteCommand( const char* cmdline )
|
||||
{
|
||||
modName = CONV_FROM_UTF8( text );
|
||||
|
||||
module = ReturnModule( frame->m_Pcb, modName );
|
||||
module = frame->m_Pcb->FindModuleByReference( modName );
|
||||
|
||||
if( module )
|
||||
msg.Printf( _( "%s found" ), modName.GetData() );
|
||||
@ -86,9 +86,9 @@ void RemoteCommand( const char* cmdline )
|
||||
|
||||
modName = CONV_FROM_UTF8( text );
|
||||
|
||||
module = ReturnModule( frame->m_Pcb, modName );
|
||||
module = frame->m_Pcb->FindModuleByReference( modName );
|
||||
if( module )
|
||||
pad = ReturnPad( module, pinName );
|
||||
pad = module->FindPadByName( pinName );
|
||||
|
||||
if( pad )
|
||||
netcode = pad->GetNet();
|
||||
|
@ -68,7 +68,7 @@ WinEDA_ZoneFrame::WinEDA_ZoneFrame()
|
||||
|
||||
|
||||
WinEDA_ZoneFrame::WinEDA_ZoneFrame( WinEDA_PcbFrame* parent,
|
||||
ZONE_CONTAINER * zone_container,
|
||||
ZONE_CONTAINER * zone_container,
|
||||
wxWindowID id,
|
||||
const wxString& caption,
|
||||
const wxPoint& pos,
|
||||
@ -76,14 +76,14 @@ WinEDA_ZoneFrame::WinEDA_ZoneFrame( WinEDA_PcbFrame* parent,
|
||||
long style )
|
||||
{
|
||||
m_Parent = parent;
|
||||
m_Zone_Container = zone_container;
|
||||
if( m_Parent->m_Parent->m_EDA_Config )
|
||||
m_Zone_Container = zone_container;
|
||||
if( m_Parent->m_Parent->m_EDA_Config )
|
||||
{
|
||||
m_NetSorting = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_SORT_OPTION_KEY, (long) BOARD::PAD_CNT_SORT );
|
||||
}
|
||||
}
|
||||
|
||||
Create( parent, id, caption, pos, size, style );
|
||||
SetReturnCode(ZONE_ABORT); // Will be changed on buttons click
|
||||
SetReturnCode(ZONE_ABORT); // Will be changed on buttons click
|
||||
}
|
||||
|
||||
|
||||
@ -110,7 +110,7 @@ bool WinEDA_ZoneFrame::Create( wxWindow* parent,
|
||||
m_ListNetNameSelection = NULL;
|
||||
m_LayerSelectionCtrl = NULL;
|
||||
////@end WinEDA_ZoneFrame member initialisation
|
||||
|
||||
|
||||
////@begin WinEDA_ZoneFrame creation
|
||||
SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
|
||||
wxDialog::Create( parent, id, caption, pos, size, style );
|
||||
@ -133,6 +133,8 @@ bool WinEDA_ZoneFrame::Create( wxWindow* parent,
|
||||
|
||||
void WinEDA_ZoneFrame::CreateControls()
|
||||
{
|
||||
BOARD* board = m_Parent->m_Pcb;
|
||||
|
||||
SetFont( *g_DialogFont );
|
||||
|
||||
////@begin WinEDA_ZoneFrame content construction
|
||||
@ -244,8 +246,8 @@ void WinEDA_ZoneFrame::CreateControls()
|
||||
m_NetSortingOption->SetValidator( wxGenericValidator(& m_NetSorting) );
|
||||
////@end WinEDA_ZoneFrame content construction
|
||||
|
||||
// Initialise options
|
||||
wxString title = _( "Zone clearance value:" ) + ReturnUnitSymbol( g_UnitMetric );
|
||||
// Initialise options
|
||||
wxString title = _( "Zone clearance value:" ) + ReturnUnitSymbol( g_UnitMetric );
|
||||
m_ClearanceValueTitle->SetLabel( title );
|
||||
|
||||
title = _( "Grid :" ) + ReturnUnitSymbol( g_UnitMetric );;
|
||||
@ -280,89 +282,97 @@ void WinEDA_ZoneFrame::CreateControls()
|
||||
{
|
||||
case ZONE_CONTAINER::PAD_NOT_IN_ZONE: // Pads are not covered
|
||||
m_FillOpt->SetSelection( 2 );
|
||||
break;
|
||||
case ZONE_CONTAINER::THERMAL_PAD: // Use thermal relief for pads
|
||||
break;
|
||||
case ZONE_CONTAINER::THERMAL_PAD: // Use thermal relief for pads
|
||||
m_FillOpt->SetSelection( 1 );
|
||||
break;
|
||||
case ZONE_CONTAINER::PAD_IN_ZONE: // pads are covered by copper
|
||||
break;
|
||||
case ZONE_CONTAINER::PAD_IN_ZONE: // pads are covered by copper
|
||||
m_FillOpt->SetSelection( 0 );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ( m_Zone_Container )
|
||||
s_Zone_Hatching = m_Zone_Container->m_Poly->GetHatchStyle();
|
||||
else
|
||||
if ( m_Zone_Container )
|
||||
s_Zone_Hatching = m_Zone_Container->m_Poly->GetHatchStyle();
|
||||
else
|
||||
s_Zone_Hatching = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_OUTLINES_HATCH_OPTION_KEY,
|
||||
(long) CPolyLine::DIAGONAL_EDGE );
|
||||
(long) CPolyLine::DIAGONAL_EDGE );
|
||||
|
||||
switch( s_Zone_Hatching )
|
||||
{
|
||||
case CPolyLine::NO_HATCH:
|
||||
m_OutlineAppearanceCtrl->SetSelection(0);
|
||||
break;
|
||||
case CPolyLine::NO_HATCH:
|
||||
m_OutlineAppearanceCtrl->SetSelection(0);
|
||||
break;
|
||||
|
||||
case CPolyLine::DIAGONAL_EDGE:
|
||||
m_OutlineAppearanceCtrl->SetSelection(1);
|
||||
break;
|
||||
case CPolyLine::DIAGONAL_EDGE:
|
||||
m_OutlineAppearanceCtrl->SetSelection(1);
|
||||
break;
|
||||
|
||||
case CPolyLine::DIAGONAL_FULL:
|
||||
m_OutlineAppearanceCtrl->SetSelection(2);
|
||||
break;
|
||||
}
|
||||
case CPolyLine::DIAGONAL_FULL:
|
||||
m_OutlineAppearanceCtrl->SetSelection(2);
|
||||
break;
|
||||
}
|
||||
|
||||
int layer_cnt = g_DesignSettings.m_CopperLayerCount;
|
||||
for( int ii = 0; ii < g_DesignSettings.m_CopperLayerCount; ii++ )
|
||||
int layer_cnt = board->GetCopperLayerCount();
|
||||
for( int ii = 0; ii < board->GetCopperLayerCount(); ii++ )
|
||||
{
|
||||
wxString msg;
|
||||
int layer_number = COPPER_LAYER_N;
|
||||
|
||||
if( layer_cnt == 0 || ii < layer_cnt - 1 )
|
||||
layer_number = ii;
|
||||
else if( ii == layer_cnt - 1 )
|
||||
else if( ii == layer_cnt - 1 )
|
||||
layer_number = LAYER_CMP_N;
|
||||
|
||||
m_LayerId[ii] = layer_number;
|
||||
msg = ReturnPcbLayerName( layer_number ).Trim();
|
||||
|
||||
msg = board->GetLayerName( layer_number ).Trim();
|
||||
m_LayerSelectionCtrl->InsertItems( 1, &msg, ii );
|
||||
if ( m_Zone_Container )
|
||||
{
|
||||
if( m_Zone_Container->GetLayer() == layer_number )
|
||||
m_LayerSelectionCtrl->SetSelection( ii );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ((PCB_SCREEN*)(m_Parent->GetScreen()))->m_Active_Layer == layer_number )
|
||||
m_LayerSelectionCtrl->SetSelection( ii );
|
||||
}
|
||||
|
||||
if( m_Zone_Container )
|
||||
{
|
||||
if( m_Zone_Container->GetLayer() == layer_number )
|
||||
m_LayerSelectionCtrl->SetSelection( ii );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ((PCB_SCREEN*)(m_Parent->GetScreen()))->m_Active_Layer == layer_number )
|
||||
m_LayerSelectionCtrl->SetSelection( ii );
|
||||
}
|
||||
}
|
||||
|
||||
m_NetSortingOption->SetSelection(m_NetSorting == BOARD::ALPHA_SORT ? 0 : 1 );
|
||||
wxString NetNameFilter;
|
||||
if( m_Parent->m_Parent->m_EDA_Config )
|
||||
m_NetSortingOption->SetSelection(m_NetSorting == BOARD::ALPHA_SORT ? 0 : 1 );
|
||||
|
||||
wxString NetNameFilter;
|
||||
if( m_Parent->m_Parent->m_EDA_Config )
|
||||
{
|
||||
NetNameFilter = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_FILTER_STRING_KEY, wxT("N_0*") );
|
||||
}
|
||||
m_NetNameFilter->SetValue(NetNameFilter);
|
||||
NetNameFilter = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_FILTER_STRING_KEY, wxT("N_0*") );
|
||||
}
|
||||
|
||||
m_NetNameFilter->SetValue(NetNameFilter);
|
||||
wxArrayString ListNetName;
|
||||
m_Parent->m_Pcb->ReturnSortedNetnamesList( ListNetName,
|
||||
m_NetSorting == 0 ? BOARD::ALPHA_SORT : BOARD::PAD_CNT_SORT );
|
||||
if ( m_NetSorting != 0 )
|
||||
{
|
||||
wxString Filter = m_NetNameFilter->GetValue();
|
||||
for (unsigned ii = 0; ii < ListNetName.GetCount(); ii ++ )
|
||||
{
|
||||
if ( ListNetName[ii].Matches(Filter.GetData() ) )
|
||||
{
|
||||
ListNetName. RemoveAt(ii);
|
||||
ii--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_NetSorting == 0 ? BOARD::ALPHA_SORT : BOARD::PAD_CNT_SORT );
|
||||
|
||||
if ( m_NetSorting != 0 )
|
||||
{
|
||||
wxString Filter = m_NetNameFilter->GetValue();
|
||||
for( unsigned ii = 0; ii < ListNetName.GetCount(); ii++ )
|
||||
{
|
||||
if( ListNetName[ii].Matches(Filter.GetData() ) )
|
||||
{
|
||||
ListNetName. RemoveAt(ii);
|
||||
ii--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_ListNetNameSelection->InsertItems( ListNetName, 0 );
|
||||
|
||||
// Select net:
|
||||
int net_select = g_HightLigth_NetCode;
|
||||
if ( m_Zone_Container )
|
||||
net_select = m_Zone_Container->GetNet();
|
||||
int net_select = g_HightLigth_NetCode;
|
||||
if( m_Zone_Container )
|
||||
net_select = m_Zone_Container->GetNet();
|
||||
|
||||
if( net_select > 0 )
|
||||
{
|
||||
EQUIPOT* equipot = m_Parent->m_Pcb->FindNet( net_select );
|
||||
@ -468,8 +478,8 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
|
||||
|
||||
if( m_Parent->m_Parent->m_EDA_Config )
|
||||
{
|
||||
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_OUTLINES_HATCH_OPTION_KEY, (long)s_Zone_Hatching);
|
||||
}
|
||||
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_OUTLINES_HATCH_OPTION_KEY, (long)s_Zone_Hatching);
|
||||
}
|
||||
|
||||
switch( m_GridCtrl->GetSelection() )
|
||||
{
|
||||
@ -481,7 +491,7 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
|
||||
g_GridRoutingSize = 50;
|
||||
break;
|
||||
|
||||
default:
|
||||
default:
|
||||
case 2:
|
||||
g_GridRoutingSize = 100;
|
||||
break;
|
||||
@ -521,7 +531,7 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
|
||||
/* Search net_code for this net */
|
||||
EQUIPOT* net;
|
||||
s_NetcodeSelection = 0;
|
||||
for( net = m_Parent->m_Pcb->m_Equipots; net; net = net->Next() )
|
||||
for( net = m_Parent->m_Pcb->m_Equipots; net; net = net->Next() )
|
||||
{
|
||||
if( net->m_Netname == net_name )
|
||||
{
|
||||
@ -529,8 +539,8 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -541,29 +551,28 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
|
||||
void WinEDA_ZoneFrame::OnNetSortingOptionSelected( wxCommandEvent& event )
|
||||
{
|
||||
wxArrayString ListNetName;
|
||||
m_NetSorting = m_NetSortingOption->GetSelection();
|
||||
m_NetSorting = m_NetSortingOption->GetSelection();
|
||||
m_Parent->m_Pcb->ReturnSortedNetnamesList( ListNetName,
|
||||
m_NetSorting == 0 ? BOARD::ALPHA_SORT : BOARD::PAD_CNT_SORT );
|
||||
if ( m_NetSorting != 0 )
|
||||
{
|
||||
wxString Filter = m_NetNameFilter->GetValue();
|
||||
for (unsigned ii = 0; ii < ListNetName.GetCount(); ii ++ )
|
||||
{
|
||||
if ( ListNetName[ii].Matches(Filter.GetData() ) )
|
||||
{
|
||||
ListNetName. RemoveAt(ii);
|
||||
ii--;
|
||||
}
|
||||
}
|
||||
}
|
||||
m_ListNetNameSelection->Clear();
|
||||
m_NetSorting == 0 ? BOARD::ALPHA_SORT : BOARD::PAD_CNT_SORT );
|
||||
if ( m_NetSorting != 0 )
|
||||
{
|
||||
wxString Filter = m_NetNameFilter->GetValue();
|
||||
for (unsigned ii = 0; ii < ListNetName.GetCount(); ii ++ )
|
||||
{
|
||||
if ( ListNetName[ii].Matches(Filter.GetData() ) )
|
||||
{
|
||||
ListNetName. RemoveAt(ii);
|
||||
ii--;
|
||||
}
|
||||
}
|
||||
}
|
||||
m_ListNetNameSelection->Clear();
|
||||
m_ListNetNameSelection->InsertItems( ListNetName, 0 );
|
||||
if( m_Parent->m_Parent->m_EDA_Config )
|
||||
{
|
||||
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_SORT_OPTION_KEY, (long) m_NetSorting );
|
||||
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_FILTER_STRING_KEY, m_NetNameFilter->GetValue() );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -573,7 +582,7 @@ void WinEDA_ZoneFrame::OnNetSortingOptionSelected( wxCommandEvent& event )
|
||||
|
||||
void WinEDA_ZoneFrame::OnOkClick( wxCommandEvent& event )
|
||||
{
|
||||
if ( AcceptOptions(true) )
|
||||
EndModal( ZONE_OK );
|
||||
if ( AcceptOptions(true) )
|
||||
EndModal( ZONE_OK );
|
||||
}
|
||||
|
||||
|
@ -174,7 +174,7 @@ void WinEDA_PcbFrame::Delete_Drawings_All_Layer( DRAWSEGMENT* Segment, wxDC* DC
|
||||
return;
|
||||
}
|
||||
|
||||
wxString msg = _( "Delete Layer " ) + ReturnPcbLayerName( layer );
|
||||
wxString msg = _( "Delete Layer " ) + m_Pcb->GetLayerName( layer );
|
||||
if( !IsOK( this, msg ) )
|
||||
return;
|
||||
|
||||
|
@ -127,26 +127,9 @@ bool WinEDA_BasePcbFrame::Clear_Pcb( bool query )
|
||||
}
|
||||
}
|
||||
|
||||
/* Suppression des listes chainees */
|
||||
m_Pcb->m_Equipots->DeleteStructList();
|
||||
m_Pcb->m_Equipots = NULL;
|
||||
|
||||
m_Pcb->m_Drawings->DeleteStructList();
|
||||
m_Pcb->m_Drawings = NULL;
|
||||
|
||||
m_Pcb->m_Modules->DeleteStructList();
|
||||
m_Pcb->m_Modules = NULL;
|
||||
|
||||
m_Pcb->m_Track->DeleteStructList();
|
||||
m_Pcb->m_Track = NULL;
|
||||
m_Pcb->m_NbSegmTrack = 0;
|
||||
|
||||
m_Pcb->m_Zone->DeleteStructList();
|
||||
m_Pcb->m_Zone = NULL;
|
||||
m_Pcb->m_NbSegmZone = 0;
|
||||
|
||||
m_Pcb->DeleteMARKERs();
|
||||
m_Pcb->DeleteZONEOutlines();
|
||||
// delete the old BOARD and create a new BOARD so that the default
|
||||
// layer names are put into the BOARD.
|
||||
SetBOARD( new BOARD( NULL, this ) );
|
||||
|
||||
for( ; g_UnDeleteStackPtr != 0; )
|
||||
{
|
||||
@ -159,30 +142,6 @@ bool WinEDA_BasePcbFrame::Clear_Pcb( bool query )
|
||||
memset( buf_work, 0, BUFMEMSIZE );
|
||||
adr_lowmem = adr_max = buf_work;
|
||||
|
||||
if( m_Pcb->m_Pads )
|
||||
{
|
||||
MyFree( m_Pcb->m_Pads );
|
||||
m_Pcb->m_Pads = NULL;
|
||||
}
|
||||
if( m_Pcb->m_Ratsnest )
|
||||
MyFree( m_Pcb->m_Ratsnest );
|
||||
if( m_Pcb->m_LocalRatsnest )
|
||||
MyFree( m_Pcb->m_LocalRatsnest );
|
||||
m_Pcb->m_Ratsnest = NULL;
|
||||
m_Pcb->m_LocalRatsnest = NULL;
|
||||
|
||||
/* remise a 0 ou a une valeur initiale des variables de la structure */
|
||||
m_Pcb->m_BoundaryBox.SetOrigin( wxPoint( 0, 0 ) );
|
||||
m_Pcb->m_BoundaryBox.SetSize( wxSize( 0, 0 ) );
|
||||
m_Pcb->m_Status_Pcb = 0;
|
||||
m_Pcb->m_NbLoclinks = 0;
|
||||
m_Pcb->m_NbLinks = 0;
|
||||
m_Pcb->m_NbPads = 0;
|
||||
m_Pcb->m_NbNets = 0;
|
||||
m_Pcb->m_NbNodes = 0;
|
||||
m_Pcb->m_NbNoconnect = 0;
|
||||
m_Pcb->m_NbSegmTrack = 0;
|
||||
m_Pcb->m_NbSegmZone = 0;
|
||||
SetCurItem( NULL );
|
||||
|
||||
/* Init parametres de gestion */
|
||||
@ -219,8 +178,8 @@ void WinEDA_PcbFrame::Erase_Zones( bool query )
|
||||
m_Pcb->m_Zone = NULL;
|
||||
m_Pcb->m_NbSegmZone = 0;
|
||||
}
|
||||
|
||||
m_Pcb->DeleteZONEOutlines();
|
||||
|
||||
m_Pcb->DeleteZONEOutlines();
|
||||
|
||||
GetScreen()->SetModify();
|
||||
}
|
||||
@ -291,10 +250,10 @@ void WinEDA_PcbFrame::Erase_Pistes( wxDC * DC, int masque_type, bool query )
|
||||
for( pt_segm = m_Pcb->m_Track; pt_segm != NULL; pt_segm = (TRACK*) PtNext )
|
||||
{
|
||||
PtNext = (TRACK*) pt_segm->Pnext;
|
||||
|
||||
|
||||
if( pt_segm->GetState( SEGM_FIXE | SEGM_AR ) & masque_type )
|
||||
continue;
|
||||
|
||||
|
||||
pt_segm->DeleteStructure();
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user