Commit 6270af66 authored by jean-pierre charras's avatar jean-pierre charras

Rework on env. variable KISYS3DMOD. Until now, was used in different files...

Rework on env. variable KISYS3DMOD. Until now, was used in different files using different ways, so no consistency between files.
Fix also an incorrect default 3d path read from KISYS3DMOD, when the path was defined without trailing directory separator.
code cleanup.
parents f0391648 5a38d2b6
...@@ -77,7 +77,7 @@ const wxString S3D_MASTER::GetShape3DFullFilename() ...@@ -77,7 +77,7 @@ const wxString S3D_MASTER::GetShape3DFullFilename()
return shapeName; return shapeName;
wxString default_path; wxString default_path;
wxGetEnv( wxT( KISYS3DMOD ), &default_path ); wxGetEnv( KISYS3DMOD, &default_path );
if( default_path.IsEmpty() ) if( default_path.IsEmpty() )
return shapeName; return shapeName;
......
...@@ -40,13 +40,18 @@ ...@@ -40,13 +40,18 @@
#include <3d_struct.h> #include <3d_struct.h>
#include <info3d_visu.h> #include <info3d_visu.h>
#define KISYS3DMOD "KISYS3DMOD" /// A variable name whose value holds the path of 3D shape files.
/// Currently an environment variable, eventually a project variable.
#define KISYS3DMOD wxT( "KISYS3DMOD" )
/// All 3D files are expected to be stored in LIB3D_FOLDER, or one of
/// its subdirectory.
#define LIB3D_FOLDER wxT( "packages3d" )
class EDA_3D_CANVAS; class EDA_3D_CANVAS;
class PCB_BASE_FRAME; class PCB_BASE_FRAME;
#define KICAD_DEFAULT_3D_DRAWFRAME_STYLE (wxDEFAULT_FRAME_STYLE | wxWANTS_CHARS) #define KICAD_DEFAULT_3D_DRAWFRAME_STYLE (wxDEFAULT_FRAME_STYLE | wxWANTS_CHARS)
#define LIB3D_PATH wxT( "packages3d" )
class EDA_3D_FRAME : public KIWAY_PLAYER class EDA_3D_FRAME : public KIWAY_PLAYER
......
...@@ -23,49 +23,128 @@ ...@@ -23,49 +23,128 @@
*/ */
/* /*
* This file contains the global constants and variables used in the PCB * This file contains some functions used in the PCB
* applications Pcbnew, CvPcb, and GervView. The goal of this was to * applications Pcbnew and CvPcb.
* unobfuscate the original header file design that made it very difficult
* to figure out where these variables lived. Ideally, they should be pushed
* back into the application layer.
*/ */
#include <fctsys.h> #include <fctsys.h>
#include <pcbcommon.h> #include <pgm_base.h>
#include <plot_common.h> #include <kiface_i.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_pad.h> #include <3d_viewer.h>
#include <class_zone_settings.h>
#include <class_board_design_settings.h> /**
* attempts to set the environment variable given by aKiSys3Dmod to a valid path.
* (typically "KISYS3DMOD" )
* If the environment variable is already set, then it left as is to respect
* the wishes of the user.
*
* The path is determined by attempting to find the path modules/packages3d
* files in kicad tree.
* This may or may not be the best path but it provides the best solution for
* backwards compatibility with the previous 3D shapes search path implementation.
*
* @note This must be called after #SetBinDir() is called at least on Windows.
* Otherwise, the kicad path is not known (Windows specific)
*
* @param aKiSys3Dmod = the value of environment variable, typically "KISYS3DMOD"
* @param aProcess = the current process
* @return false if the aKiSys3Dmod path is not valid.
*/
bool Set3DShapesDefaultPath( const wxString& aKiSys3Dmod, const PGM_BASE* aProcess )
{
wxString path;
// Set the KISYS3DMOD environment variable for the current process,
// if it is not already defined in the user's environment and valid.
if( wxGetEnv( aKiSys3Dmod, &path ) && wxFileName::DirExists( path ) )
return true;
class MODULE; #if 1
// Try to find a valid path is standard KiCad paths
SEARCH_STACK& search = Kiface().KifaceSearch();
path = search.FindValidPath( LIB3D_FOLDER );
if( !path.IsEmpty() )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
#endif
DISPLAY_OPTIONS DisplayOpt; // Display options for board items // Attempt to determine where the 3D shape libraries were installed using the
// legacy path:
// on Unix: /usr/local/kicad/share/modules/packages3d
// or /usr/share/kicad/modules/packages3d
// On Windows: bin../share/modules/packages3d
wxString relpath( wxT( "modules/" ) );
relpath += LIB3D_FOLDER;
int g_AnchorColor = BLUE; // Apple MacOSx
int g_ModuleTextCMPColor = LIGHTGRAY; #ifdef __WXMAC__
int g_ModuleTextCUColor = MAGENTA; path = wxT("/Library/Application Support/kicad/modules/packages3d/");
int g_ModuleTextNOVColor = DARKGRAY;
int g_PadCUColor = GREEN;
int g_PadCMPColor = RED;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
/** path = wxString( wxGetenv( wxT( "HOME" ) ) ) + wxT("/Library/Application Support/kicad/modules/packages3d/");
* Used in track creation, a list of track segments currently being created,
* with the newest track at the end of the list, sorted by new-ness. e.g. use
* TRACK->Back() to get the next older track, TRACK->Next() to get the next
* newer track.
*/
DLIST<TRACK> g_CurrentTrackList;
void AccumulateDescription( wxString &aDesc, const wxString &aItem ) if( wxFileName::DirExists( path ) )
{ {
if( !aDesc.IsEmpty() ) wxSetEnv( aKiSys3Dmod, path );
aDesc << wxT(", "); return true;
aDesc << aItem; }
#elif defined(__UNIX__) // Linux and non-Apple Unix
// Try the home directory:
path.Empty();
wxGetEnv( wxT("HOME"), &path );
path += wxT("/kicad/share/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
// Try the standard install path:
path = wxT("/usr/local/kicad/share/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
// Try the official distrib standard install path:
path = wxT("/usr/share/kicad/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
#else // Windows
// On Windows, the install path is given by the path of executables
wxFileName fn;
fn.AssignDir( aProcess->GetExecutablePath() );
fn.RemoveLastDir();
path = fn.GetPathWithSep() + wxT("share/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
#endif
return false;
} }
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <macros.h> #include <macros.h>
#include <gr_basic.h>
#include <pgm_base.h> #include <pgm_base.h>
#include <project.h> #include <project.h>
#include <common.h> // NAMELESS_PROJECT #include <common.h> // NAMELESS_PROJECT
......
...@@ -53,6 +53,8 @@ ...@@ -53,6 +53,8 @@
#include <3d_viewer.h> #include <3d_viewer.h>
DISPLAY_OPTIONS DisplayOpt; // General display options
BEGIN_EVENT_TABLE( DISPLAY_FOOTPRINTS_FRAME, PCB_BASE_FRAME ) BEGIN_EVENT_TABLE( DISPLAY_FOOTPRINTS_FRAME, PCB_BASE_FRAME )
EVT_CLOSE( DISPLAY_FOOTPRINTS_FRAME::OnCloseWindow ) EVT_CLOSE( DISPLAY_FOOTPRINTS_FRAME::OnCloseWindow )
......
/* /*
* 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) 2007 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com * Copyright (C) 2007 Jean-Pierre Charras, jp..charras at wanadoo.fr
* Copyright (C) 1992-2012 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2014 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 1992-2014 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
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
...@@ -29,12 +30,12 @@ ...@@ -29,12 +30,12 @@
#include <fctsys.h> #include <fctsys.h>
#include <macros.h> #include <macros.h>
#include <fp_lib_table.h> #include <fp_lib_table.h>
#include <gr_basic.h>
#include <kiface_i.h> #include <kiface_i.h>
#include <pgm_base.h> #include <pgm_base.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <confirm.h> #include <confirm.h>
#include <gestfich.h> #include <3d_viewer.h>
#include <pcbcommon.h>
#include <cvpcb.h> #include <cvpcb.h>
#include <zones.h> #include <zones.h>
...@@ -50,13 +51,11 @@ ...@@ -50,13 +51,11 @@
COLORS_DESIGN_SETTINGS g_ColorsSettings; COLORS_DESIGN_SETTINGS g_ColorsSettings;
// Constant string definitions for CvPcb // Constant string definitions for CvPcb
const wxString RetroFileExtension( wxT( "stf" ) );
const wxString FootprintAliasFileExtension( wxT( "equ" ) ); const wxString FootprintAliasFileExtension( wxT( "equ" ) );
// Wildcard for schematic retroannotation (import footprint names in schematic): // Wildcard for schematic retroannotation (import footprint names in schematic):
const wxString FootprintAliasFileWildcard( _( "KiCad footprint alias files (*.equ)|*.equ" ) ); const wxString FootprintAliasFileWildcard( _( "KiCad footprint alias files (*.equ)|*.equ" ) );
#if 0 // add this logic to OpenProjectFiles() #if 0 // add this logic to OpenProjectFiles()
/* /*
...@@ -165,106 +164,6 @@ PGM_BASE& Pgm() ...@@ -165,106 +164,6 @@ PGM_BASE& Pgm()
} }
/**
* Function set3DShapesPath
* attempts to set the environment variable given by aKiSys3Dmod to a valid path.
* (typically "KISYS3DMOD" )
* If the environment variable is already set,
* then it left as is to respect the wishes of the user.
*
* The path is determined by attempting to find the path modules/packages3d
* files in kicad tree.
* This may or may not be the best path but it provides the best solution for
* backwards compatibility with the previous 3D shapes search path implementation.
*
* @note This must be called after #SetBinDir() is called at least on Windows.
* Otherwise, the kicad path is not known (Windows specific)
*
* @param aKiSys3Dmod = the value of environment variable, typically "KISYS3DMOD"
* @return false if the aKiSys3Dmod path is not valid.
*/
static bool set3DShapesPath( const wxString& aKiSys3Dmod )
{
wxString path;
// Set the KISYS3DMOD environment variable for the current process,
// if it is not already defined in the user's environment and valid.
if( wxGetEnv( aKiSys3Dmod, &path ) && wxFileName::DirExists( path ) )
return true;
// Attempt to determine where the 3D shape libraries were installed using the
// legacy path:
// on Unix: /usr/local/kicad/share/modules/packages3d
// or /usr/share/kicad/modules/packages3d
// On Windows: bin../share/modules/packages3d
wxString relpath( wxT( "modules/packages3d" ) );
// Apple MacOSx
#ifdef __WXMAC__
path = wxT("/Library/Application Support/kicad/modules/packages3d/");
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
path = wxString( wxGetenv( wxT( "HOME" ) ) ) + wxT("/Library/Application Support/kicad/modules/packages3d/");
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
#elif defined(__UNIX__) // Linux and non-Apple Unix
// Try the home directory:
path.Empty();
wxGetEnv( wxT("HOME"), &path );
path += wxT("/kicad/share/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
// Try the standard install path:
path = wxT("/usr/local/kicad/share/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
// Try the official distrib standard install path:
path = wxT("/usr/share/kicad/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
#else // Windows
// On Windows, the install path is given by the path of executables
wxFileName fn;
fn.AssignDir( Pgm().GetExecutablePath() );
fn.RemoveLastDir();
path = fn.GetPathWithSep() + wxT("share/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
#endif
return false;
}
//!!!!!!!!!!!!!!! This code is obsolete because of the merge into pcbnew, don't bother with it. //!!!!!!!!!!!!!!! This code is obsolete because of the merge into pcbnew, don't bother with it.
FP_LIB_TABLE GFootprintTable; FP_LIB_TABLE GFootprintTable;
...@@ -282,8 +181,10 @@ bool IFACE::OnKifaceStart( PGM_BASE* aProgram, int aCtlBits ) ...@@ -282,8 +181,10 @@ bool IFACE::OnKifaceStart( PGM_BASE* aProgram, int aCtlBits )
start_common( aCtlBits ); start_common( aCtlBits );
// Set 3D shape path from environment variable KISYS3DMOD // Set 3D shape path (environment variable KISYS3DMOD (if not defined or valid)
set3DShapesPath( wxT("KISYS3DMOD") ); // Currently, called here, but could be moved ( OpenProjectFiles() ? )
// if KISYS3DMOD is defined in a project config file
Set3DShapesDefaultPath( KISYS3DMOD, aProgram );
/* Now that there are no *.mod files in the standard library, this function /* Now that there are no *.mod files in the standard library, this function
has no utility. User should simply set the variable manually. has no utility. User should simply set the variable manually.
......
...@@ -17,8 +17,6 @@ ...@@ -17,8 +17,6 @@
wxLC_SINGLE_SEL | wxVSCROLL | wxHSCROLL ) wxLC_SINGLE_SEL | wxVSCROLL | wxHSCROLL )
extern const wxString FootprintAliasFileExtension; extern const wxString FootprintAliasFileExtension;
extern const wxString RetroFileExtension;
extern const wxString FootprintAliasFileWildcard; extern const wxString FootprintAliasFileWildcard;
......
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/** /**
* @file pcbcommon.h * @file pcbcommon.h
*/ */
...@@ -5,31 +28,35 @@ ...@@ -5,31 +28,35 @@
#ifndef PCBCOMMON_H_ #ifndef PCBCOMMON_H_
#define PCBCOMMON_H_ #define PCBCOMMON_H_
class PGM_BASE;
#include <dlist.h> /**
#include <layers_id_colors_and_visibility.h> * attempts to set (when not set or valid) the environment variable given by aKiSys3Dmod
* (typically "KISYS3DMOD" ) to a valid path.
* If the environment variable is already set, then it left as is to respect
#define MIN_DRAW_WIDTH 1 ///< Minimum trace drawing width. * the wishes of the user.
*
* The path is determined by attempting to find the path modules/packages3d
class D_PAD; * files in kicad tree.
class TRACK; * This may or may not be the best path but it provides the best solution for
class BOARD; * backwards compatibility with the previous 3D shapes search path implementation.
class DISPLAY_OPTIONS; *
* @note This must be called after #SetBinDir() is called at least on Windows.
extern DISPLAY_OPTIONS DisplayOpt; * Otherwise, the kicad path is not known (Windows specific)
*
extern int g_CurrentVersionPCB; * @param aKiSys3Dmod = the value of environment variable, typically "KISYS3DMOD"
* @param aProcess = the current process
/// List of segments of the trace currently being drawn. * @return false if the aKiSys3Dmod path is not valid.
extern DLIST<TRACK> g_CurrentTrackList; */
bool Set3DShapesDefaultPath( const wxString& aKiSys3Dmod, const PGM_BASE* aProcess );
#define g_CurrentTrackSegment g_CurrentTrackList.GetLast() ///< most recently created segment
#define g_FirstTrackSegment g_CurrentTrackList.GetFirst() ///< first segment created
/// Utility for comma separated lists /// Utility for comma separated lists
void AccumulateDescription( wxString &aDesc, const wxString &aItem ); inline void AccumulateDescription( wxString &aDesc, const wxString &aItem )
{
if( !aDesc.IsEmpty() )
aDesc << wxT(", ");
aDesc << aItem;
}
#endif // PCBCOMMON_H_ #endif // PCBCOMMON_H_
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <msgpanel.h> #include <msgpanel.h>
#include <autorout.h> #include <autorout.h>
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include <common.h> #include <common.h>
#include <macros.h> #include <macros.h>
#include <trigo.h> #include <trigo.h>
#include <pcbcommon.h>
#include <math_for_graphics.h> #include <math_for_graphics.h>
#include <class_board.h> #include <class_board.h>
#include <class_track.h> #include <class_track.h>
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <common.h> #include <common.h>
#include <pcbcommon.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <cell.h> #include <cell.h>
......
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_track.h> #include <class_track.h>
......
...@@ -31,9 +31,7 @@ ...@@ -31,9 +31,7 @@
#include <fctsys.h> #include <fctsys.h>
#include <kiface_i.h> #include <kiface_i.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <pcbcommon.h>
#include <confirm.h> #include <confirm.h>
//#include <pgm_base.h>
#include <kiface_i.h> #include <kiface_i.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <kicad_device_context.h> #include <kicad_device_context.h>
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <block_commande.h> #include <block_commande.h>
#include <pcbcommon.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <trigo.h> #include <trigo.h>
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <common.h> #include <common.h>
#include <kicad_string.h> #include <kicad_string.h>
#include <pcbcommon.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <msgpanel.h> #include <msgpanel.h>
#include <pcb_netlist.h> #include <pcb_netlist.h>
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <macros.h> #include <macros.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <pcbcommon.h>
#include <trigo.h> #include <trigo.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
#include <class_pcb_screen.h> #include <class_pcb_screen.h>
#include <colors_selection.h> #include <colors_selection.h>
#include <trigo.h> #include <trigo.h>
#include <pcbcommon.h>
#include <msgpanel.h> #include <msgpanel.h>
#include <pcbnew.h> #include <pcbnew.h>
......
...@@ -42,7 +42,6 @@ ...@@ -42,7 +42,6 @@
#include <macros.h> #include <macros.h>
#include <math_for_graphics.h> #include <math_for_graphics.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <pcbcommon.h>
#include <msgpanel.h> #include <msgpanel.h>
#include <base_units.h> #include <base_units.h>
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include <common.h> #include <common.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <kicad_string.h> #include <kicad_string.h>
#include <pcbcommon.h>
#include <colors_selection.h> #include <colors_selection.h>
#include <trigo.h> #include <trigo.h>
#include <macros.h> #include <macros.h>
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include <trigo.h> #include <trigo.h>
#include <confirm.h> #include <confirm.h>
#include <kicad_string.h> #include <kicad_string.h>
#include <pcbcommon.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <colors_selection.h> #include <colors_selection.h>
#include <richio.h> #include <richio.h>
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include <drawtxt.h> #include <drawtxt.h>
#include <layers_id_colors_and_visibility.h> #include <layers_id_colors_and_visibility.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <pcbcommon.h>
#include <pcbnew_id.h> // ID_TRACK_BUTT #include <pcbnew_id.h> // ID_TRACK_BUTT
#include <pcbnew.h> #include <pcbnew.h>
#include <class_board.h> #include <class_board.h>
......
...@@ -40,7 +40,6 @@ ...@@ -40,7 +40,6 @@
#include <pcbstruct.h> // enum PCB_VISIBLE #include <pcbstruct.h> // enum PCB_VISIBLE
#include <layer_widget.h> #include <layer_widget.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_pcb_layer_widget.h> #include <class_pcb_layer_widget.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <drawtxt.h> #include <drawtxt.h>
#include <kicad_string.h> #include <kicad_string.h>
#include <trigo.h> #include <trigo.h>
#include <pcbcommon.h>
#include <colors_selection.h> #include <colors_selection.h>
#include <richio.h> #include <richio.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <drawtxt.h> #include <drawtxt.h>
#include <kicad_string.h> #include <kicad_string.h>
#include <pcbcommon.h>
#include <colors_selection.h> #include <colors_selection.h>
#include <richio.h> #include <richio.h>
#include <macros.h> #include <macros.h>
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <class_pcb_screen.h> #include <class_pcb_screen.h>
#include <drawtxt.h> #include <drawtxt.h>
#include <pcbcommon.h>
#include <colors_selection.h> #include <colors_selection.h>
#include <wxstruct.h> #include <wxstruct.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <pcbcommon.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <class_board.h> #include <class_board.h>
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <common.h> #include <common.h>
#include <pcbcommon.h>
#include <macros.h> #include <macros.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbcommon.h>
#include <pcbnew_id.h> #include <pcbnew_id.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <confirm.h> #include <confirm.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <ratsnest_data.h> #include <ratsnest_data.h>
#include <class_board.h> #include <class_board.h>
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbstruct.h> #include <pcbstruct.h>
#include <pcbcommon.h>
#include <pcbnew_id.h> #include <pcbnew_id.h>
......
...@@ -242,7 +242,7 @@ void DIALOG_MODULE_BOARD_EDITOR::ModuleOrientEvent( wxCommandEvent& event ) ...@@ -242,7 +242,7 @@ void DIALOG_MODULE_BOARD_EDITOR::ModuleOrientEvent( wxCommandEvent& event )
void DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties() void DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties()
{ {
wxString default_path; wxString default_path;
wxGetEnv( wxT( KISYS3DMOD ), &default_path ); wxGetEnv( KISYS3DMOD, &default_path );
#ifdef __WINDOWS__ #ifdef __WINDOWS__
default_path.Replace( wxT( "/" ), wxT( "\\" ) ); default_path.Replace( wxT( "/" ), wxT( "\\" ) );
#endif #endif
...@@ -393,11 +393,6 @@ void DIALOG_MODULE_BOARD_EDITOR::On3DShapeNameSelected( wxCommandEvent& event ) ...@@ -393,11 +393,6 @@ void DIALOG_MODULE_BOARD_EDITOR::On3DShapeNameSelected( wxCommandEvent& event )
} }
void DIALOG_MODULE_BOARD_EDITOR::Add3DShape( wxCommandEvent& event )
{
Browse3DLib( event );
}
void DIALOG_MODULE_BOARD_EDITOR::Remove3DShape( wxCommandEvent& event ) void DIALOG_MODULE_BOARD_EDITOR::Remove3DShape( wxCommandEvent& event )
{ {
...@@ -423,92 +418,72 @@ void DIALOG_MODULE_BOARD_EDITOR::Remove3DShape( wxCommandEvent& event ) ...@@ -423,92 +418,72 @@ void DIALOG_MODULE_BOARD_EDITOR::Remove3DShape( wxCommandEvent& event )
} }
void DIALOG_MODULE_BOARD_EDITOR::Browse3DLib( wxCommandEvent& event ) void DIALOG_MODULE_BOARD_EDITOR::BrowseAndAdd3DShapeFile()
{ {
PROJECT& prj = Prj(); PROJECT& prj = Prj();
SEARCH_STACK& search = Kiface().KifaceSearch();
wxString fullpath; // here, the KISYS3DMOD default path for 3D shape files is expected
wxString kisys3dmod = wxGetenv( wxT( KISYS3DMOD ) ); // to be already defined (when starting Pcbnew, it is defined
// from the user defined env variable, or set to a default value)
wxFileName fn( wxGetenv( KISYS3DMOD ), wxEmptyString );
wxString default3DPath = fn.GetPathWithSep();
if( !kisys3dmod || !wxFileName::IsDirReadable( kisys3dmod ) ) wxString initialpath = prj.GetRString( PROJECT::VIEWER_3D_PATH );
{
fullpath = search.FindValidPath( LIB3D_PATH );
}
if( !fullpath ) if( !initialpath )
{ initialpath = default3DPath;
fullpath = prj.GetRString( PROJECT::VIEWER_3D_PATH );
if( !fullpath )
fullpath = search.LastVisitedPath( LIB3D_PATH );
}
#ifdef __WINDOWS__
fullpath.Replace( wxT( "/" ), wxT( "\\" ) );
#endif
wxString fullfilename;
wxString shortfilename;
wxString fileFilters = wxGetTranslation( Shapes3DFileWildcard ); wxString fileFilters = wxGetTranslation( Shapes3DFileWildcard );
fileFilters += wxChar( '|' ); fileFilters += wxChar( '|' );
fileFilters += wxGetTranslation( IDF3DFileWildcard ); fileFilters += wxGetTranslation( IDF3DFileWildcard );
fullfilename = EDA_FileSelector( _( "3D Shape:" ), wxString filename = EDA_FileSelector( _( "3D Shape:" ), initialpath,
fullpath, wxEmptyString, wxEmptyString,
wxEmptyString, fileFilters, this, wxFD_OPEN, true );
wxEmptyString,
wxGetTranslation( fileFilters ), if( filename.IsEmpty() )
this,
wxFD_OPEN,
true
);
if( fullfilename.IsEmpty() )
return; return;
wxFileName fn = fullfilename; fn = filename;
prj.SetRString( PROJECT::VIEWER_3D_PATH, fn.GetPath() ); prj.SetRString( PROJECT::VIEWER_3D_PATH, fn.GetPath() );
/* If the file path is already in the library search paths /* If the file path is already in the 3D shape file default path
* list, just add the library name to the list. Otherwise, add * just add the file name relative to this path to the list.
* the library name with the full or relative path. * Otherwise, add the file name with a full or relative path.
* the relative path, when possible is preferable, * The relative path, when possible, is preferable
* because it preserve use of default libraries paths, when the path is a * because it preserve use of default path, when the path is a sub path of this path
* sub path of these default paths
*/ */
shortfilename = search.FilenameWithRelativePathInSearchList( wxString rootpath = filename.SubString( 0, default3DPath.Length()-1 );
fullfilename, wxPathOnly( Prj().GetProjectFullName() ) ); bool useRelPath = rootpath.IsSameAs( default3DPath, wxFileName::IsCaseSensitive() );
wxFileName aux = shortfilename; if( useRelPath )
if( aux.IsAbsolute() ) fn.MakeRelativeTo( default3DPath );
else // Absolute path given, not a subpath of the default path,
// therefore ask if the user wants a relative (to the default path) one
{ {
// Absolute path, ask if the user wants a relative one wxString msg;
int diag = wxMessageBox( msg.Printf( _( "Use a path relative to '%s'?" ), GetChars( default3DPath ) );
_( "Use a relative path?" ), int diag = wxMessageBox( msg, _( "Path type" ),
_( "Path type" ), wxYES_NO | wxICON_QUESTION, this );
wxYES_NO | wxICON_QUESTION, this );
if( diag == wxYES ) if( diag == wxYES ) // Make it relative to the default 3D path
{ fn.MakeRelativeTo( default3DPath );
// Make it relative
aux.MakeRelativeTo( wxT(".") );
shortfilename = aux.GetPathWithSep() + aux.GetFullName();
}
} }
filename = fn.GetFullPath();
S3D_MASTER* new3DShape = new S3D_MASTER( NULL ); S3D_MASTER* new3DShape = new S3D_MASTER( NULL );
#ifdef __WINDOWS__ #ifdef __WINDOWS__
// Store filename in Unix notation // In Kicad files, filenames and paths are stored using Unix notation
shortfilename.Replace( wxT( "\\" ), wxT( "/" ) ); filename.Replace( wxT( "\\" ), wxT( "/" ) );
#endif #endif
new3DShape->SetShape3DName( shortfilename ); new3DShape->SetShape3DName( filename );
m_Shapes3D_list.push_back( new3DShape ); m_Shapes3D_list.push_back( new3DShape );
m_3D_ShapeNameListBox->Append( shortfilename ); m_3D_ShapeNameListBox->Append( filename );
if( m_LastSelected3DShapeIndex >= 0 ) if( m_LastSelected3DShapeIndex >= 0 )
TransfertDisplayTo3DValues( m_LastSelected3DShapeIndex ); TransfertDisplayTo3DValues( m_LastSelected3DShapeIndex );
......
...@@ -31,16 +31,21 @@ public: ...@@ -31,16 +31,21 @@ public:
~DIALOG_MODULE_BOARD_EDITOR(); ~DIALOG_MODULE_BOARD_EDITOR();
private: private:
void BrowseAndAdd3DShapeFile();
void InitBoardProperties(); void InitBoardProperties();
void InitModeditProperties(); void InitModeditProperties();
void Transfert3DValuesToDisplay( S3D_MASTER * aStruct3DSource ); void Transfert3DValuesToDisplay( S3D_MASTER * aStruct3DSource );
void TransfertDisplayTo3DValues( int aIndexSelection ); void TransfertDisplayTo3DValues( int aIndexSelection );
// virtual event functions
void OnEditValue( wxCommandEvent& event ); void OnEditValue( wxCommandEvent& event );
void OnEditReference( wxCommandEvent& event ); void OnEditReference( wxCommandEvent& event );
void On3DShapeSelection( wxCommandEvent& event ); void On3DShapeSelection( wxCommandEvent& event );
void On3DShapeNameSelected( wxCommandEvent& event ); void On3DShapeNameSelected( wxCommandEvent& event );
void Browse3DLib( wxCommandEvent& event ); void Add3DShape( wxCommandEvent& event )
void Add3DShape( wxCommandEvent& event ); {
BrowseAndAdd3DShapeFile();
}
void Remove3DShape( wxCommandEvent& event ); void Remove3DShape( wxCommandEvent& event );
void OnCancelClick( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
void OnOkClick( wxCommandEvent& event ); void OnOkClick( wxCommandEvent& event );
......
...@@ -93,7 +93,7 @@ void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties() ...@@ -93,7 +93,7 @@ void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties()
// Display the default path, given by environment variable KISYS3DMOD // Display the default path, given by environment variable KISYS3DMOD
wxString default_path; wxString default_path;
wxGetEnv( wxT( KISYS3DMOD ), &default_path ); wxGetEnv( KISYS3DMOD, &default_path );
#ifdef __WINDOWS__ #ifdef __WINDOWS__
default_path.Replace( wxT( "/" ), wxT( "\\" ) ); default_path.Replace( wxT( "/" ), wxT( "\\" ) );
#endif #endif
...@@ -288,88 +288,77 @@ void DIALOG_MODULE_MODULE_EDITOR::Remove3DShape(wxCommandEvent& event) ...@@ -288,88 +288,77 @@ void DIALOG_MODULE_MODULE_EDITOR::Remove3DShape(wxCommandEvent& event)
} }
void DIALOG_MODULE_MODULE_EDITOR::BrowseAndAdd3DLib( wxCommandEvent& event ) void DIALOG_MODULE_MODULE_EDITOR::BrowseAndAdd3DShapeFile()
{ {
PROJECT& prj = Prj(); PROJECT& prj = Prj();
SEARCH_STACK& search = Kiface().KifaceSearch();
wxString fullpath; // here, the KISYS3DMOD default path for 3D shape files is expected
wxString kisys3dmod = wxGetenv( wxT( KISYS3DMOD ) ); // to be already defined (when starting Pcbnew, it is defined
// from the user defined env variable, or set to a default value)
wxFileName fn( wxGetenv( KISYS3DMOD ), wxEmptyString );
wxString default3DPath = fn.GetPathWithSep();
if( !kisys3dmod || !wxFileName::IsDirReadable( kisys3dmod ) ) wxString initialpath = prj.GetRString( PROJECT::VIEWER_3D_PATH );
{
fullpath = search.FindValidPath( LIB3D_PATH );
}
if( !fullpath ) if( !initialpath )
{ initialpath = default3DPath;
fullpath = prj.GetRString( PROJECT::VIEWER_3D_PATH );
if( !fullpath )
fullpath = search.LastVisitedPath( LIB3D_PATH );
}
#ifdef __WINDOWS__ #ifdef __WINDOWS__
fullpath.Replace( wxT( "/" ), wxT( "\\" ) ); initialpath.Replace( wxT( "/" ), wxT( "\\" ) );
#endif #endif
wxString fullfilename, shortfilename;
wxString fileFilters = wxGetTranslation( Shapes3DFileWildcard ); wxString fileFilters = wxGetTranslation( Shapes3DFileWildcard );
fileFilters += wxChar( '|' ); fileFilters += wxChar( '|' );
fileFilters += wxGetTranslation( IDF3DFileWildcard ); fileFilters += wxGetTranslation( IDF3DFileWildcard );
fullfilename = EDA_FileSelector( _( "3D Shape:" ), wxString filename = EDA_FileSelector( _( "3D Shape:" ), initialpath,
fullpath, wxEmptyString, wxEmptyString,
wxEmptyString, wxGetTranslation( fileFilters ),
wxEmptyString, this, wxFD_OPEN, true );
wxGetTranslation( fileFilters ),
this, if( filename.IsEmpty() )
wxFD_OPEN,
true
);
if( fullfilename.IsEmpty() )
return; return;
wxFileName fn = fullfilename; fn = filename;
prj.SetRString( PROJECT::VIEWER_3D_PATH, fn.GetPath() ); prj.SetRString( PROJECT::VIEWER_3D_PATH, fn.GetPath() );
/* If the file path is already in the library search paths /* If the file path is already in the 3D shape file default path
* list, just add the library name to the list. Otherwise, add * just add the file name relative to this path to the list.
* the library name with the full or relative path. * Otherwise, add the file name with a full or relative path.
* the relative path, when possible is preferable, * The relative path, when possible, is preferable
* because it preserve use of default libraries paths, when the path is a sub path of these default paths * because it preserve use of default path, when the path is a sub path of this path
*/ */
shortfilename = search.FilenameWithRelativePathInSearchList( wxString rootpath = filename.SubString( 0, default3DPath.Length()-1 );
fullfilename, wxPathOnly( Prj().GetProjectFullName() ) ); bool useRelPath = rootpath.IsSameAs( default3DPath, wxFileName::IsCaseSensitive() );
wxFileName aux = shortfilename; if( useRelPath )
fn.MakeRelativeTo( default3DPath );
if( aux.IsAbsolute() ) else // Absolute path given, not a subpath of the default path,
{ // Absolute path, ask if the user wants a relative one // therefore ask if the user wants a relative (to the default path) one
int diag = wxMessageBox( {
_( "Use a relative path?" ), wxString msg;
_( "Path type" ), msg.Printf( _( "Use a path relative to '%s'?" ), GetChars( default3DPath ) );
wxYES_NO | wxICON_QUESTION, this ); int diag = wxMessageBox( msg, _( "Path type" ),
wxYES_NO | wxICON_QUESTION, this );
if( diag == wxYES )
{ // Make it relative if( diag == wxYES ) // Make it relative to the default 3D path
aux.MakeRelativeTo( wxT( "." ) ); fn.MakeRelativeTo( default3DPath );
shortfilename = aux.GetPathWithSep() + aux.GetFullName();
}
} }
filename = fn.GetFullPath();
S3D_MASTER* new3DShape = new S3D_MASTER(NULL); S3D_MASTER* new3DShape = new S3D_MASTER(NULL);
#ifdef __WINDOWS__ #ifdef __WINDOWS__
// Store filename in Unix notation // Store filename in Unix notation
shortfilename.Replace( wxT( "\\" ), wxT( "/" ) ); filename.Replace( wxT( "\\" ), wxT( "/" ) );
#endif #endif
new3DShape->SetShape3DName( shortfilename ); new3DShape->SetShape3DName( filename );
m_shapes3D_list.push_back( new3DShape ); m_shapes3D_list.push_back( new3DShape );
m_3D_ShapeNameListBox->Append( shortfilename ); m_3D_ShapeNameListBox->Append( filename );
if( m_lastSelected3DShapeIndex >= 0 ) if( m_lastSelected3DShapeIndex >= 0 )
TransfertDisplayTo3DValues( m_lastSelected3DShapeIndex ); TransfertDisplayTo3DValues( m_lastSelected3DShapeIndex );
......
...@@ -34,14 +34,20 @@ public: ...@@ -34,14 +34,20 @@ public:
~DIALOG_MODULE_MODULE_EDITOR(); ~DIALOG_MODULE_MODULE_EDITOR();
private: private:
void BrowseAndAdd3DShapeFile();
void initModeditProperties(); void initModeditProperties();
void Transfert3DValuesToDisplay( S3D_MASTER * aStruct3DSource ); void Transfert3DValuesToDisplay( S3D_MASTER * aStruct3DSource );
void TransfertDisplayTo3DValues( int aIndexSelection ); void TransfertDisplayTo3DValues( int aIndexSelection );
// virtual event functions
void OnEditValue( wxCommandEvent& event ); void OnEditValue( wxCommandEvent& event );
void OnEditReference( wxCommandEvent& event ); void OnEditReference( wxCommandEvent& event );
void On3DShapeSelection( wxCommandEvent& event ); void On3DShapeSelection( wxCommandEvent& event );
void On3DShapeNameSelected( wxCommandEvent& event ); void On3DShapeNameSelected( wxCommandEvent& event );
void BrowseAndAdd3DLib( wxCommandEvent& event ); void Add3DShape( wxCommandEvent& event )
{
BrowseAndAdd3DShapeFile();
}
void Remove3DShape( wxCommandEvent& event ); void Remove3DShape( wxCommandEvent& event );
void OnCancelClick( wxCommandEvent& event ); void OnCancelClick( wxCommandEvent& event );
void OnOkClick( wxCommandEvent& event ); void OnOkClick( wxCommandEvent& event );
......
...@@ -327,7 +327,7 @@ DIALOG_MODULE_MODULE_EDITOR_BASE::DIALOG_MODULE_MODULE_EDITOR_BASE( wxWindow* pa ...@@ -327,7 +327,7 @@ DIALOG_MODULE_MODULE_EDITOR_BASE::DIALOG_MODULE_MODULE_EDITOR_BASE( wxWindow* pa
m_button4->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnEditReference ), NULL, this ); m_button4->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnEditReference ), NULL, this );
m_button5->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnEditValue ), NULL, this ); m_button5->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnEditValue ), NULL, this );
m_3D_ShapeNameListBox->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::On3DShapeNameSelected ), NULL, this ); m_3D_ShapeNameListBox->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::On3DShapeNameSelected ), NULL, this );
m_buttonBrowse->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::BrowseAndAdd3DLib ), NULL, this ); m_buttonBrowse->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::Add3DShape ), NULL, this );
m_buttonRemove->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::Remove3DShape ), NULL, this ); m_buttonRemove->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::Remove3DShape ), NULL, this );
m_sdbSizerStdButtonsCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnCancelClick ), NULL, this ); m_sdbSizerStdButtonsCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnCancelClick ), NULL, this );
m_sdbSizerStdButtonsOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnOkClick ), NULL, this ); m_sdbSizerStdButtonsOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnOkClick ), NULL, this );
...@@ -339,7 +339,7 @@ DIALOG_MODULE_MODULE_EDITOR_BASE::~DIALOG_MODULE_MODULE_EDITOR_BASE() ...@@ -339,7 +339,7 @@ DIALOG_MODULE_MODULE_EDITOR_BASE::~DIALOG_MODULE_MODULE_EDITOR_BASE()
m_button4->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnEditReference ), NULL, this ); m_button4->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnEditReference ), NULL, this );
m_button5->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnEditValue ), NULL, this ); m_button5->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnEditValue ), NULL, this );
m_3D_ShapeNameListBox->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::On3DShapeNameSelected ), NULL, this ); m_3D_ShapeNameListBox->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::On3DShapeNameSelected ), NULL, this );
m_buttonBrowse->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::BrowseAndAdd3DLib ), NULL, this ); m_buttonBrowse->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::Add3DShape ), NULL, this );
m_buttonRemove->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::Remove3DShape ), NULL, this ); m_buttonRemove->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::Remove3DShape ), NULL, this );
m_sdbSizerStdButtonsCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnCancelClick ), NULL, this ); m_sdbSizerStdButtonsCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnCancelClick ), NULL, this );
m_sdbSizerStdButtonsOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnOkClick ), NULL, this ); m_sdbSizerStdButtonsOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_MODULE_MODULE_EDITOR_BASE::OnOkClick ), NULL, this );
......
...@@ -4173,7 +4173,7 @@ ...@@ -4173,7 +4173,7 @@
<property name="window_extra_style"></property> <property name="window_extra_style"></property>
<property name="window_name"></property> <property name="window_name"></property>
<property name="window_style"></property> <property name="window_style"></property>
<event name="OnButtonClick">BrowseAndAdd3DLib</event> <event name="OnButtonClick">Add3DShape</event>
<event name="OnChar"></event> <event name="OnChar"></event>
<event name="OnEnterWindow"></event> <event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event> <event name="OnEraseBackground"></event>
......
...@@ -109,7 +109,7 @@ class DIALOG_MODULE_MODULE_EDITOR_BASE : public DIALOG_SHIM ...@@ -109,7 +109,7 @@ class DIALOG_MODULE_MODULE_EDITOR_BASE : public DIALOG_SHIM
virtual void OnEditReference( wxCommandEvent& event ) { event.Skip(); } virtual void OnEditReference( wxCommandEvent& event ) { event.Skip(); }
virtual void OnEditValue( wxCommandEvent& event ) { event.Skip(); } virtual void OnEditValue( wxCommandEvent& event ) { event.Skip(); }
virtual void On3DShapeNameSelected( wxCommandEvent& event ) { event.Skip(); } virtual void On3DShapeNameSelected( wxCommandEvent& event ) { event.Skip(); }
virtual void BrowseAndAdd3DLib( wxCommandEvent& event ) { event.Skip(); } virtual void Add3DShape( wxCommandEvent& event ) { event.Skip(); }
virtual void Remove3DShape( wxCommandEvent& event ) { event.Skip(); } virtual void Remove3DShape( wxCommandEvent& event ) { event.Skip(); }
virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); } virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); } virtual void OnOkClick( wxCommandEvent& event ) { event.Skip(); }
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbcommon.h>
#include <dialog_footprint_wizard_list.h> #include <dialog_footprint_wizard_list.h>
#include <class_footprint_wizard.h> #include <class_footprint_wizard.h>
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <fctsys.h> #include <fctsys.h>
#include <project.h> #include <project.h>
#include <3d_viewer.h> // for KISYS3DMOD
#include <dialog_fp_lib_table_base.h> #include <dialog_fp_lib_table_base.h>
#include <fp_lib_table.h> #include <fp_lib_table.h>
#include <fp_lib_table_lexer.h> #include <fp_lib_table_lexer.h>
...@@ -713,6 +714,9 @@ private: ...@@ -713,6 +714,9 @@ private:
// the current project. // the current project.
unique.insert( PROJECT_VAR_NAME ); unique.insert( PROJECT_VAR_NAME );
unique.insert( FP_LIB_TABLE::GlobalPathEnvVariableName() ); unique.insert( FP_LIB_TABLE::GlobalPathEnvVariableName() );
// This special environment variable is used to locad 3d shapes
unique.insert( KISYS3DMOD );
unique.insert( FP_LIB_TABLE::GlobalPathEnvVariableName() );
m_path_subs_grid->AppendRows( unique.size() ); m_path_subs_grid->AppendRows( unique.size() );
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <class_board_design_settings.h> #include <class_board_design_settings.h>
#include <pcbcommon.h>
#include <kicad_string.h> #include <kicad_string.h>
#include <pcbnew_id.h> #include <pcbnew_id.h>
#include <class_board.h> #include <class_board.h>
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include <confirm.h> #include <confirm.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbcommon.h>
#include <ratsnest_data.h> #include <ratsnest_data.h>
#include <class_board.h> #include <class_board.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <html_messagebox.h> #include <html_messagebox.h>
#include <base_units.h> #include <base_units.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbcommon.h>
#include <pcb_netlist.h> #include <pcb_netlist.h>
#include <netlist_reader.h> #include <netlist_reader.h>
#include <reporter.h> #include <reporter.h>
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbcommon.h>
#include <dialog_scripting.h> #include <dialog_scripting.h>
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
#include <gestfich.h> #include <gestfich.h>
#include <kicad_device_context.h> #include <kicad_device_context.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbcommon.h>
#include <pcbnew_id.h> #include <pcbnew_id.h>
#include <pcbnew.h> #include <pcbnew.h>
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <confirm.h> #include <confirm.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <pcbcommon.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <protos.h> #include <protos.h>
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <fctsys.h> #include <fctsys.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <trigo.h> #include <trigo.h>
#include <pcbcommon.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <colors_selection.h> #include <colors_selection.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <gestfich.h> #include <gestfich.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <3d_viewer.h> #include <3d_viewer.h>
#include <richio.h> #include <richio.h>
#include <filter_reader.h> #include <filter_reader.h>
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <3d_viewer.h> #include <3d_viewer.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <3d_viewer.h> #include <3d_viewer.h>
#include <pcbcommon.h>
#include <msgpanel.h> #include <msgpanel.h>
#include <macros.h> #include <macros.h>
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbcommon.h>
#include <module_editor_frame.h> #include <module_editor_frame.h>
#include <class_board.h> #include <class_board.h>
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <filter_reader.h> #include <filter_reader.h>
#include <pcbcommon.h>
#include <macros.h> #include <macros.h>
#include <fp_lib_table.h> #include <fp_lib_table.h>
#include <validators.h> #include <validators.h>
......
...@@ -36,13 +36,11 @@ ...@@ -36,13 +36,11 @@
#include <kicad_string.h> #include <kicad_string.h>
#include <pgm_base.h> #include <pgm_base.h>
#include <kiway.h> #include <kiway.h>
//#include <frame_type.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <filter_reader.h> #include <filter_reader.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <fp_lib_table.h> #include <fp_lib_table.h>
#include <fpid.h> #include <fpid.h>
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <pcbnew.h> #include <pcbnew.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_track.h> #include <class_track.h>
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <kicad_device_context.h> #include <kicad_device_context.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <invoke_pcb_dialog.h> #include <invoke_pcb_dialog.h>
#include <class_board.h> #include <class_board.h>
......
...@@ -40,7 +40,6 @@ ...@@ -40,7 +40,6 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <3d_viewer.h> #include <3d_viewer.h>
#include <pcbcommon.h>
#include <msgpanel.h> #include <msgpanel.h>
#include <fp_lib_table.h> #include <fp_lib_table.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <trigo.h> #include <trigo.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <pcb_draw_panel_gal.h> #include <pcb_draw_panel_gal.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <3d_viewer.h> #include <3d_viewer.h>
#include <pcbcommon.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <msgpanel.h> #include <msgpanel.h>
#include <macros.h> #include <macros.h>
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <trigo.h> #include <trigo.h>
#include <block_commande.h> #include <block_commande.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#include <trigo.h> #include <trigo.h>
#include <macros.h> #include <macros.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
......
...@@ -40,7 +40,6 @@ ...@@ -40,7 +40,6 @@
#include <richio.h> #include <richio.h>
#include <filter_reader.h> #include <filter_reader.h>
#include <gr_basic.h> #include <gr_basic.h>
#include <pcbcommon.h>
#include <macros.h> #include <macros.h>
#include <base_units.h> #include <base_units.h>
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
#include <class_track.h> #include <class_track.h>
#include <pcbcommon.h>
#include <boost/bind.hpp> #include <boost/bind.hpp>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <pcbcommon.h> // enum PCB_VISIBLE
#include <collectors.h> #include <collectors.h>
#include <build_version.h> #include <build_version.h>
#include <macros.h> #include <macros.h>
......
...@@ -42,8 +42,6 @@ ...@@ -42,8 +42,6 @@
#include <eda_dde.h> #include <eda_dde.h>
#include <pcbcommon.h> #include <pcbcommon.h>
#include <colors_selection.h> #include <colors_selection.h>
#include <gr_basic.h>
#include <3d_viewer.h>
#include <wx/stdpaths.h> #include <wx/stdpaths.h>
#include <wx/file.h> #include <wx/file.h>
...@@ -52,7 +50,6 @@ ...@@ -52,7 +50,6 @@
#include <gestfich.h> #include <gestfich.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <protos.h>
#include <hotkeys.h> #include <hotkeys.h>
#include <wildcards_and_files_ext.h> #include <wildcards_and_files_ext.h>
#include <class_board.h> #include <class_board.h>
...@@ -81,7 +78,9 @@ int g_MaxLinksShowed; ...@@ -81,7 +78,9 @@ int g_MaxLinksShowed;
int g_MagneticPadOption = capture_cursor_in_track_tool; int g_MagneticPadOption = capture_cursor_in_track_tool;
int g_MagneticTrackOption = capture_cursor_in_track_tool; int g_MagneticTrackOption = capture_cursor_in_track_tool;
wxPoint g_Offset_Module; /* Distance to offset module trace when moving. */ wxPoint g_Offset_Module; // module offset used when moving a footprint
DISPLAY_OPTIONS DisplayOpt; // General display options
/* Name of the document footprint list /* Name of the document footprint list
* usually located in share/modules/footprints_doc * usually located in share/modules/footprints_doc
...@@ -90,6 +89,13 @@ wxPoint g_Offset_Module; /* Distance to offset module trace when moving. ...@@ -90,6 +89,13 @@ wxPoint g_Offset_Module; /* Distance to offset module trace when moving.
*/ */
wxString g_DocModulesFileName = wxT( "footprints_doc/footprints.pdf" ); wxString g_DocModulesFileName = wxT( "footprints_doc/footprints.pdf" );
/*
* Used in track creation, a list of track segments currently being created,
* with the newest track at the end of the list, sorted by new-ness. e.g. use
* TRACK->Back() to get the next older track, TRACK->Next() to get the next
* newer track.
*/
DLIST<TRACK> g_CurrentTrackList;
namespace PCB { namespace PCB {
...@@ -205,105 +211,6 @@ PGM_BASE& Pgm() ...@@ -205,105 +211,6 @@ PGM_BASE& Pgm()
} }
#endif #endif
/**
* Function set3DShapesPath
* attempts to set the environment variable given by aKiSys3Dmod to a valid path.
* (typically "KISYS3DMOD" )
* If the environment variable is already set,
* then it left as is to respect the wishes of the user.
*
* The path is determined by attempting to find the path modules/packages3d
* files in kicad tree.
* This may or may not be the best path but it provides the best solution for
* backwards compatibility with the previous 3D shapes search path implementation.
*
* @note This must be called after #SetBinDir() is called at least on Windows.
* Otherwise, the kicad path is not known (Windows specific)
*
* @param aKiSys3Dmod = the value of environment variable, typically "KISYS3DMOD"
* @return false if the aKiSys3Dmod path is not valid.
*/
static bool set3DShapesPath( const wxString& aKiSys3Dmod )
{
wxString path;
// Set the KISYS3DMOD environment variable for the current process,
// if it is not already defined in the user's environment and valid.
if( wxGetEnv( aKiSys3Dmod, &path ) && wxFileName::DirExists( path ) )
return true;
// Attempt to determine where the 3D shape libraries were installed using the
// legacy path:
// on Unix: /usr/local/kicad/share/modules/packages3d
// or /usr/share/kicad/modules/packages3d
// On Windows: bin../share/modules/packages3d
wxString relpath( wxT( "modules/packages3d" ) );
// Apple MacOSx
#ifdef __WXMAC__
path = wxT("/Library/Application Support/kicad/modules/packages3d/");
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
path = wxString( wxGetenv( wxT( "HOME" ) ) ) + wxT("/Library/Application Support/kicad/modules/packages3d/");
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
#elif defined(__UNIX__) // Linux and non-Apple Unix
// Try the home directory:
path.Empty();
wxGetEnv( wxT("HOME"), &path );
path += wxT("/kicad/share/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
// Try the standard install path:
path = wxT("/usr/local/kicad/share/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
// Try the official distrib standard install path:
path = wxT("/usr/share/kicad/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
#else // Windows
// On Windows, the install path is given by the path of executables
wxFileName fn;
fn.AssignDir( Pgm().GetExecutablePath() );
fn.RemoveLastDir();
path = fn.GetPathWithSep() + wxT("share/") + relpath;
if( wxFileName::DirExists( path ) )
{
wxSetEnv( aKiSys3Dmod, path );
return true;
}
#endif
return false;
}
#if defined(KICAD_SCRIPTING) #if defined(KICAD_SCRIPTING)
static bool scriptingSetup() static bool scriptingSetup()
...@@ -412,8 +319,10 @@ bool IFACE::OnKifaceStart( PGM_BASE* aProgram, int aCtlBits ) ...@@ -412,8 +319,10 @@ bool IFACE::OnKifaceStart( PGM_BASE* aProgram, int aCtlBits )
// display the real hotkeys in menus or tool tips // display the real hotkeys in menus or tool tips
ReadHotkeyConfig( wxT( "PcbFrame" ), g_Board_Editor_Hokeys_Descr ); ReadHotkeyConfig( wxT( "PcbFrame" ), g_Board_Editor_Hokeys_Descr );
// Set 3D shape path from environment variable KISYS3DMOD // Set 3D shape path (environment variable KISYS3DMOD) if not defined or valid
set3DShapesPath( wxT(KISYS3DMOD) ); // Currently, called here, but could be moved ( OpenProjectFiles() ? )
// if KISYS3DMOD is defined in a project config file
Set3DShapesDefaultPath( KISYS3DMOD, aProgram );
try try
{ {
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <fctsys.h> // wxWidgets include. #include <fctsys.h> // wxWidgets include.
#include <base_struct.h> // IS_DRAGGED and IN_EDIT definitions. #include <base_struct.h> // IS_DRAGGED and IN_EDIT definitions.
#include <dlist.h>
#include <convert_to_biu.h> // to define DMils2iu() conversion function #include <convert_to_biu.h> // to define DMils2iu() conversion function
#include <layers_id_colors_and_visibility.h> #include <layers_id_colors_and_visibility.h>
...@@ -37,6 +38,7 @@ enum ENDPOINT_T { ...@@ -37,6 +38,7 @@ enum ENDPOINT_T {
#define TEXTS_MIN_SIZE DMils2iu( 50 ) ///< Minimum text size in Pcbnew units value (50 * 0.0001 mils) #define TEXTS_MIN_SIZE DMils2iu( 50 ) ///< Minimum text size in Pcbnew units value (50 * 0.0001 mils)
#define TEXTS_MAX_SIZE DMils2iu( 10000 ) ///< Maximum text size in Pcbnew units value (1 inch) ) #define TEXTS_MAX_SIZE DMils2iu( 10000 ) ///< Maximum text size in Pcbnew units value (1 inch) )
#define TEXTS_MAX_WIDTH DMils2iu( 5000 ) ///< Maximum text width in Pcbnew units value (0.5 inches) #define TEXTS_MAX_WIDTH DMils2iu( 5000 ) ///< Maximum text width in Pcbnew units value (0.5 inches)
#define MIN_DRAW_WIDTH 1 ///< Minimum trace drawing width in pixels.
// Flag to force the SKETCH mode to display items (.m_Flags member) // Flag to force the SKETCH mode to display items (.m_Flags member)
...@@ -71,6 +73,16 @@ extern int g_MagneticTrackOption; ...@@ -71,6 +73,16 @@ extern int g_MagneticTrackOption;
extern wxPoint g_Offset_Module; // Offset trace when moving footprint. extern wxPoint g_Offset_Module; // Offset trace when moving footprint.
/// List of segments of the trace currently being drawn.
class TRACK;
extern DLIST<TRACK> g_CurrentTrackList;
#define g_CurrentTrackSegment g_CurrentTrackList.GetLast() ///< most recently created segment
#define g_FirstTrackSegment g_CurrentTrackList.GetFirst() ///< first segment created
class DISPLAY_OPTIONS;
extern DISPLAY_OPTIONS DisplayOpt;
enum MagneticPadOptionValues { enum MagneticPadOptionValues {
no_effect, no_effect,
capture_cursor_in_track_tool, capture_cursor_in_track_tool,
......
...@@ -37,7 +37,6 @@ ...@@ -37,7 +37,6 @@
#include <gestfich.h> #include <gestfich.h>
#include <xnode.h> #include <xnode.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <class_board_design_settings.h> #include <class_board_design_settings.h>
#include <plot_common.h> #include <plot_common.h>
......
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#include <drawtxt.h> #include <drawtxt.h>
#include <trigo.h> #include <trigo.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <pcbcommon.h>
#include <macros.h> #include <macros.h>
#include <class_board.h> #include <class_board.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <trigo.h> #include <trigo.h>
#include <macros.h> #include <macros.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
......
...@@ -30,8 +30,6 @@ ...@@ -30,8 +30,6 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <printout_controler.h> #include <printout_controler.h>
#include <colors_selection.h> #include <colors_selection.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
#include <class_edge_mod.h> #include <class_edge_mod.h>
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include <macros.h> #include <macros.h>
#include <pcbnew_id.h> #include <pcbnew_id.h>
#include <view/view_controls.h> #include <view/view_controls.h>
#include <pcbcommon.h>
#include <pcb_painter.h> #include <pcb_painter.h>
#include <dialogs/dialog_pns_settings.h> #include <dialogs/dialog_pns_settings.h>
#include <dialogs/dialog_track_via_size.h> #include <dialogs/dialog_track_via_size.h>
...@@ -213,7 +212,7 @@ public: ...@@ -213,7 +212,7 @@ public:
Add( ACT_SwitchPosture ); Add( ACT_SwitchPosture );
AppendSeparator(); AppendSeparator();
CONTEXT_TRACK_WIDTH_MENU* trackMenu = new CONTEXT_TRACK_WIDTH_MENU; CONTEXT_TRACK_WIDTH_MENU* trackMenu = new CONTEXT_TRACK_WIDTH_MENU;
trackMenu->SetBoard( aBoard ); trackMenu->SetBoard( aBoard );
AppendSubMenu( trackMenu, wxT( "Select Track Width" ) ); AppendSubMenu( trackMenu, wxT( "Select Track Width" ) );
...@@ -594,7 +593,7 @@ void ROUTER_TOOL::performRouting() ...@@ -594,7 +593,7 @@ void ROUTER_TOOL::performRouting()
if( m_router->FixRoute( m_endSnapPoint, m_endItem ) ) if( m_router->FixRoute( m_endSnapPoint, m_endItem ) )
break; break;
} }
handleCommonEvents( *evt ); handleCommonEvents( *evt );
} }
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include <class_drawpanel.h> #include <class_drawpanel.h>
#include <confirm.h> #include <confirm.h>
#include <wxBasePcbFrame.h> #include <wxBasePcbFrame.h>
#include <pcbcommon.h>
#include <class_layer_box_selector.h> #include <class_layer_box_selector.h>
#include <class_board.h> #include <class_board.h>
#include <dialogs/dialog_layer_selection_base.h> #include <dialogs/dialog_layer_selection_base.h>
......
...@@ -35,10 +35,7 @@ ...@@ -35,10 +35,7 @@
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <3d_viewer.h> #include <3d_viewer.h>
#include <dialog_helpers.h> #include <dialog_helpers.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <pcbnew.h> #include <pcbnew.h>
#include <pcbnew_id.h> #include <pcbnew_id.h>
#include <drc_stuff.h> #include <drc_stuff.h>
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <class_zone.h> #include <class_zone.h>
#include <class_draw_panel_gal.h> #include <class_draw_panel_gal.h>
#include <class_pcb_screen.h> #include <class_pcb_screen.h>
#include <pcbcommon.h>
#include <confirm.h> #include <confirm.h>
#include <gal/graphics_abstraction_layer.h> #include <gal/graphics_abstraction_layer.h>
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
#include <kicad_string.h> #include <kicad_string.h>
#include <wxPcbStruct.h> #include <wxPcbStruct.h>
#include <macros.h> #include <macros.h>
#include <pcbcommon.h>
#include <class_board.h> #include <class_board.h>
#include <class_module.h> #include <class_module.h>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment