made GetAssociatedDocument() compatible with last changes in kicad path handling.

This commit is contained in:
charras 2009-04-07 15:54:40 +00:00
parent 6e54ec713d
commit e719b42e1f
10 changed files with 60 additions and 48 deletions

View File

@ -10,6 +10,10 @@ email address.
fixed: bug 2738052 (Delete tool does not delete zones outlines)
++eeschema:
fixed: void history file list in menu
++All:
made GetAssociatedDocument() compatible with last changes in kicad path handling.
Get PDF doc associated with a component now works
Some work still needed.
2009-apr-06 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================

View File

@ -259,15 +259,6 @@ void WinEDA_BasicFrame::GetKicadHelp( wxCommandEvent& event )
}
#elif defined ONLINE_HELP_FILES_FORMAT_IS_PDF
// wxString fullfilename = FindKicadHelpPath() + wxGetApp().m_HelpFileName;
// if ( wxFileExists(fullfilename) )
// GetAssociatedDocument( this, wxEmptyString, fullfilename );
// else // Try to find file in English format:
// {
// fullfilename = FindKicadHelpPath() + wxT("../en/") + wxGetApp().m_HelpFileName;;
// GetAssociatedDocument( this, wxEmptyString, fullfilename );
// }
wxString helpFile = wxGetApp().GetHelpFile();
if( !helpFile )
{
@ -276,7 +267,7 @@ void WinEDA_BasicFrame::GetKicadHelp( wxCommandEvent& event )
DisplayError( this, msg );
}
else
GetAssociatedDocument( this, wxEmptyString, helpFile );
GetAssociatedDocument( this, helpFile );
#else
# error Help files format not defined

View File

@ -71,21 +71,20 @@ static const wxFileTypeInfo EDAfallbacks[] =
};
/********************************************************************/
bool GetAssociatedDocument( wxFrame* frame, const wxString& LibPath,
const wxString& DocName )
/*********************************************************************/
/* Launch the viewer for the doc file DocName (mime type)
* LibPath is the doc file search path:
* (kicad/library)
* DocName is the short filename with ext. Wildcarts are allowed
* Seach file is made in LibPath/doc/DocName
*
/** Function GetAssociatedDocument
* open a document (file) with the suitable browser
* @param aFrame = main frame
* if DocName is starting by http: or ftp: or www. the default internet browser is launched
*/
* @param aDocName = filename of file to open (Full filename or short filename)
* @param aPaths = a wxPathList to explore.
* if NULL or aDocName is a full filename, aPath is not used.
*/
bool GetAssociatedDocument( wxFrame* aFrame,
const wxString& aDocName,
const wxPathList* aPaths)
{
wxString docpath, fullfilename, file_ext;
wxString fullfilename, file_ext;
wxString msg;
wxString command;
bool success = FALSE;
@ -95,20 +94,19 @@ bool GetAssociatedDocument( wxFrame* frame, const wxString& LibPath,
for( int ii = 0; ii < 3; ii++ )
{
if( DocName.First( url_header[ii] ) == 0 ) //. seems an internet url
if( aDocName.First( url_header[ii] ) == 0 ) //. seems an internet url
{
wxLaunchDefaultBrowser( DocName );
wxLaunchDefaultBrowser( aDocName );
return TRUE;
}
}
/* Compute the full file name */
if( wxIsAbsolutePath( DocName ) )
fullfilename = DocName;
if( wxIsAbsolutePath( aDocName ) || aPaths == NULL)
fullfilename = aDocName;
else
{
docpath = LibPath + wxT( "doc/" );
fullfilename = docpath + DocName;
fullfilename = aPaths->FindValidPath( aDocName );
}
#ifdef __WINDOWS__
@ -132,7 +130,7 @@ bool GetAssociatedDocument( wxFrame* frame, const wxString& LibPath,
fullfilename, /* nom fichier par defaut */
extension, /* extension par defaut */
mask, /* Masque d'affichage */
frame, /* parent frame */
aFrame, /* parent frame */
wxFD_OPEN, /* wxSAVE, wxFD_OPEN ..*/
TRUE, /* true = ne change pas le repertoire courant */
wxPoint( -1, -1 )
@ -145,7 +143,7 @@ bool GetAssociatedDocument( wxFrame* frame, const wxString& LibPath,
{
msg = _( "Doc File " );
msg << wxT("\"") << fullfilename << wxT("\"") << _( " not found" );
DisplayError( frame, msg );
DisplayError( aFrame, msg );
return FALSE;
}
@ -186,7 +184,7 @@ bool GetAssociatedDocument( wxFrame* frame, const wxString& LibPath,
{
msg.Printf( _( "Unknown MIME type for doc file <%s>" ),
fullfilename.GetData() );
DisplayError( frame, msg );
DisplayError( aFrame, msg );
}
return success;

View File

@ -540,6 +540,16 @@ void WinEDA_App::SetDefaultSearchPaths( void )
m_libSearchPaths.Add( fn.GetPath() );
}
/* Add schematic doc file path (library/doc)to search path list. */
fn.AppendDir( wxT( "doc") );
if( fn.IsDirReadable() )
{
wxLogDebug( wxT( "Adding <%s> to library search path list" ),
fn.GetPath().c_str() );
m_libSearchPaths.Add( fn.GetPath() );
}
fn.RemoveLastDir();
/* Add kicad template file path to search path list. */
fn.RemoveLastDir();
fn.AppendDir( wxT( "template" ) );

View File

@ -521,7 +521,7 @@ void WinEDA_CvpcbFrame::DisplayDocFile( wxCommandEvent& event )
else
fullfilename = FindKicadHelpPath() + wxT( "../" ) + DocModuleFileName;
GetAssociatedDocument( this, wxEmptyString, fullfilename );
GetAssociatedDocument( this, fullfilename );
}

View File

@ -494,7 +494,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event )
docfilename = CurrentLibEntry->m_DocFile;
if( !docfilename.IsEmpty() )
GetAssociatedDocument( this, g_RealLibDirBuffer, docfilename );
GetAssociatedDocument( this, docfilename, & wxGetApp().GetLibraryPathList() );
}
break;

View File

@ -4,6 +4,7 @@
#include "fctsys.h"
#include "gr_basic.h"
#include "appl_wxstruct.h"
#include "common.h"
#include "class_drawpanel.h"
#include "confirm.h"
@ -619,9 +620,8 @@ void WinEDA_SchematicFrame::Process_Special_Functions( wxCommandEvent& event )
wxEmptyString, FIND_ALIAS );
if( LibEntry && LibEntry->m_DocFile != wxEmptyString )
{
GetAssociatedDocument( this,
g_RealLibDirBuffer,
LibEntry->m_DocFile );
GetAssociatedDocument( this, LibEntry->m_DocFile ,
& wxGetApp().GetLibraryPathList() );
}
}
break;

View File

@ -5,6 +5,7 @@
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "appl_wxstruct.h"
#include "class_drawpanel.h"
#include "confirm.h"
#include "eda_doc.h"
@ -59,9 +60,8 @@ void WinEDA_ViewlibFrame::Process_Special_Functions( wxCommandEvent& event )
LibEntry = FindLibPart( g_CurrentViewComponentName.GetData(),
g_CurrentViewLibraryName.GetData(), FIND_ALIAS );
if( LibEntry && ( !LibEntry->m_DocFile.IsEmpty() ) )
GetAssociatedDocument( this,
g_RealLibDirBuffer,
LibEntry->m_DocFile );
GetAssociatedDocument( this, LibEntry->m_DocFile,
& wxGetApp().GetLibraryPathList());
break;
case ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT:

View File

@ -8,19 +8,28 @@
#define __INCLUDE__EDA_DOC_H__ 1
int KeyWordOk( const wxString& KeyList,
const wxString& Database );
/* Recherche si dans le texte Database on retrouve tous les mots
* cles donnes dans KeyList ( KeyList = suite de mots cles
* separes par des espaces
* Retourne:
* 0 si aucun mot cle trouv<EFBFBD>
* 1 si mot cle trouv<EFBFBD>
* 0 si aucun mot cle trouve
* 1 si mot cle trouve
*/
bool GetAssociatedDocument( wxFrame* frame,
const wxString& LibPath,
const wxString& DocName );
int KeyWordOk( const wxString& KeyList,
const wxString& Database );
/** Function GetAssociatedDocument
* open a document (file) with the suitable browser
* @param aFrame = main frame
* @param aDocName = filename of file to open (Full filename or short filename)
* if DocName is starting by http: or ftp: or www. the default internet browser is launched
* @param aPaths = a wxPathList to explore.
* if NULL or aDocName is a full filename, aPath is not used.
*/
bool GetAssociatedDocument( wxFrame* aFrame,
const wxString& aDocName,
const wxPathList* aPaths = NULL );
#endif /* __INCLUDE__EDA_DOC_H__ */

View File

@ -1032,7 +1032,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
wxString msg = FindKicadHelpPath();
msg += cfg->Read( wxT( "module_doc_file" ),
wxT( "pcbnew/footprints.pdf" ) );
GetAssociatedDocument( this, wxEmptyString, msg );
GetAssociatedDocument( this, msg );
}
break;