make command-line invocation with relative paths work

This commit is contained in:
charras 2009-07-03 07:32:48 +00:00
parent 76fc40427f
commit e80d075078
9 changed files with 40 additions and 30 deletions

View File

@ -589,12 +589,12 @@ void WinEDA_App::SetDefaultSearchPaths( void )
} }
/** /** Function GetSettings
* Get application settings * Get application settings
* * @param aReopenLastUsedDirectory = true to switch to last opened directory, false to use current CWD
* @return none * @return none
*/ */
void WinEDA_App::GetSettings() void WinEDA_App::GetSettings(bool aReopenLastUsedDirectory)
{ {
wxASSERT( m_EDA_Config != NULL && m_EDA_CommonConfig != NULL ); wxASSERT( m_EDA_Config != NULL && m_EDA_CommonConfig != NULL );
@ -613,9 +613,12 @@ void WinEDA_App::GetSettings()
m_EDA_Config->Read( wxT( "ShowPageLimits" ), &g_ShowPageLimits ); m_EDA_Config->Read( wxT( "ShowPageLimits" ), &g_ShowPageLimits );
if( m_EDA_Config->Read( wxT( "WorkingDir" ), &Line ) && wxDirExists( Line ) ) if( aReopenLastUsedDirectory )
{ {
wxSetWorkingDirectory( Line ); if( m_EDA_Config->Read( wxT( "WorkingDir" ), &Line ) && wxDirExists( Line ) )
{
wxSetWorkingDirectory( Line );
}
} }
m_EDA_Config->Read( wxT( "BgColor" ), &g_DrawBgColor ); m_EDA_Config->Read( wxT( "BgColor" ), &g_DrawBgColor );

View File

@ -43,7 +43,6 @@ bool WinEDA_App::OnInit()
{ {
wxFileName fn; wxFileName fn;
wxString msg; wxString msg;
wxString currCWD = wxGetCwd();
WinEDA_CvpcbFrame* frame = NULL; WinEDA_CvpcbFrame* frame = NULL;
InitEDA_Appl( wxT( "Cvpcb" ), APP_TYPE_CVPCB ); InitEDA_Appl( wxT( "Cvpcb" ), APP_TYPE_CVPCB );
@ -54,17 +53,16 @@ bool WinEDA_App::OnInit()
return false; return false;
} }
GetSettings(); // read current setup
wxSetWorkingDirectory( currCWD ); // mofifie par GetSetting
if( argc > 1 ) if( argc > 1 )
{ {
wxLogDebug( wxT( "CvPcb opening file <%s>" ), argv[1] );
fn = argv[1]; fn = argv[1];
wxSetWorkingDirectory( fn.GetPath() ); wxSetWorkingDirectory( fn.GetPath() );
} }
// read current setup and reopen last directory if no filename to open in command line
bool reopenLastUsedDirectory = argc == 1;
GetSettings(reopenLastUsedDirectory);
g_DrawBgColor = BLACK; g_DrawBgColor = BLACK;
wxString Title = GetTitle() + wxT( " " ) + GetBuildVersion(); wxString Title = GetTitle() + wxT( " " ) + GetBuildVersion();

View File

@ -869,25 +869,14 @@ static SCH_ITEM* CopyStruct( WinEDA_DrawPanel* panel,
switch( Struct->Type() ) switch( Struct->Type() )
{ {
case TYPE_SCH_COMPONENT: case TYPE_SCH_COMPONENT:
{
( (SCH_COMPONENT*) Struct )->m_TimeStamp = GetTimeStamp(); ( (SCH_COMPONENT*) Struct )->m_TimeStamp = GetTimeStamp();
( (SCH_COMPONENT*) Struct )->ClearAnnotation( NULL ); ( (SCH_COMPONENT*) Struct )->ClearAnnotation( NULL );
}
break; break;
case DRAW_SHEET_STRUCT_TYPE: case DRAW_SHEET_STRUCT_TYPE:
{
//DuplicateStruct calls GenCopy, which should handle //DuplicateStruct calls GenCopy, which should handle
//m_AssociatedScreen and m_sRefCount properly. //m_AssociatedScreen, m_TimeStamp and m_sRefCount properly.
DrawSheetStruct* sheet = (DrawSheetStruct*) Struct;
sheet->m_TimeStamp = GetTimeStamp();
//sheet->m_AssociatedScreen->m_UndoList = NULL;
//sheet->m_AssociatedScreen->m_RedoList = NULL;
//keep m_AssociatedScreen pointer & associated.
//sheet->m_Son = NULL; m_son is involved in undo and redo.
break; break;
}
default: default:
; ;

View File

@ -146,7 +146,9 @@ DrawSheetStruct* DrawSheetStruct::GenCopy()
newitem->m_FileName = m_FileName; newitem->m_FileName = m_FileName;
newitem->m_FileNameSize = m_FileNameSize; newitem->m_FileNameSize = m_FileNameSize;
newitem->m_SheetName = m_SheetName; /* newitem->m_SheetName = m_SheetName; m_SheetName must be unique for all sub sheets in a given sheet
* so we no not duplicate sheet name
*/
newitem->m_SheetNameSize = m_SheetNameSize; newitem->m_SheetNameSize = m_SheetNameSize;
newitem->m_Label = NULL; newitem->m_Label = NULL;

View File

@ -151,7 +151,11 @@ bool WinEDA_App::OnInit()
/* init EESCHEMA */ /* init EESCHEMA */
SeedLayers(); SeedLayers();
GetSettings();
// read current setup and reopen last directory if no filename to open in command line
bool reopenLastUsedDirectory = argc == 1;
GetSettings(reopenLastUsedDirectory);
Read_Hotkey_Config( frame, false ); /* Must be called before creating Read_Hotkey_Config( frame, false ); /* Must be called before creating
* the main frame in order to * the main frame in order to
* display the real hotkeys in menus * display the real hotkeys in menus

View File

@ -45,7 +45,11 @@ bool WinEDA_App::OnInit()
ScreenPcb->m_CurrentSheetDesc = &g_Sheet_GERBER; ScreenPcb->m_CurrentSheetDesc = &g_Sheet_GERBER;
ActiveScreen = ScreenPcb; ActiveScreen = ScreenPcb;
GetSettings();
// read current setup and reopen last directory if no filename to open in command line
bool reopenLastUsedDirectory = argc == 1;
GetSettings(reopenLastUsedDirectory);
extern PARAM_CFG_BASE* ParamCfgList[]; extern PARAM_CFG_BASE* ParamCfgList[];
wxGetApp().ReadCurrentSetupValues( ParamCfgList ); wxGetApp().ReadCurrentSetupValues( ParamCfgList );

View File

@ -115,7 +115,13 @@ public:
void InitOnLineHelp(); void InitOnLineHelp();
// Sauvegarde de configurations et options: // Sauvegarde de configurations et options:
void GetSettings(); /** Function GetSettings
* Get application settings
* @param aReopenLastUsedDirectory = true to switch to last opened directory, false to use current CWD
* @return none
*/
void GetSettings(bool aReopenLastUsedDirectory);
void SaveSettings(); void SaveSettings();
void WriteProjectConfig( const wxString& local_config_filename, void WriteProjectConfig( const wxString& local_config_filename,

View File

@ -371,8 +371,9 @@ bool WinEDA_App::OnInit()
InitEDA_Appl( wxT( "KiCad" ), APP_TYPE_KICAD ); InitEDA_Appl( wxT( "KiCad" ), APP_TYPE_KICAD );
/* init kicad */ // read current setup and reopen last directory if no filename to open in command line
GetSettings(); // read current setup bool reopenLastUsedDirectory = argc == 1;
GetSettings(reopenLastUsedDirectory);
/* Make nameless project translatable */ /* Make nameless project translatable */
wxFileName namelessProject( wxGetCwd(), _( "noname" ), ProjectFileExtension ); wxFileName namelessProject( wxGetCwd(), _( "noname" ), ProjectFileExtension );

View File

@ -83,7 +83,10 @@ bool WinEDA_App::OnInit()
} }
ScreenPcb = new PCB_SCREEN(); ScreenPcb = new PCB_SCREEN();
GetSettings();
// read current setup and reopen last directory if no filename to open in command line
bool reopenLastUsedDirectory = argc == 1;
GetSettings(reopenLastUsedDirectory);
if( argc > 1 ) if( argc > 1 )
{ {