diff --git a/CHANGELOG.txt b/CHANGELOG.txt index ccbdcb0623..3eb79c1eed 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -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 ================================================================================ diff --git a/common/basicframe.cpp b/common/basicframe.cpp index 43bea77a1f..efaec89087 100644 --- a/common/basicframe.cpp +++ b/common/basicframe.cpp @@ -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 diff --git a/common/eda_doc.cpp b/common/eda_doc.cpp index f1bc8734de..a8c556fed4 100644 --- a/common/eda_doc.cpp +++ b/common/eda_doc.cpp @@ -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; diff --git a/common/edaappl.cpp b/common/edaappl.cpp index efe8ef1e09..2b334f11e3 100644 --- a/common/edaappl.cpp +++ b/common/edaappl.cpp @@ -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" ) ); diff --git a/cvpcb/cvframe.cpp b/cvpcb/cvframe.cpp index 600f36f3b5..9f13fb3f54 100644 --- a/cvpcb/cvframe.cpp +++ b/cvpcb/cvframe.cpp @@ -521,7 +521,7 @@ void WinEDA_CvpcbFrame::DisplayDocFile( wxCommandEvent& event ) else fullfilename = FindKicadHelpPath() + wxT( "../" ) + DocModuleFileName; - GetAssociatedDocument( this, wxEmptyString, fullfilename ); + GetAssociatedDocument( this, fullfilename ); } diff --git a/eeschema/libframe.cpp b/eeschema/libframe.cpp index ec167eb9a9..2c74751a58 100644 --- a/eeschema/libframe.cpp +++ b/eeschema/libframe.cpp @@ -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; diff --git a/eeschema/schedit.cpp b/eeschema/schedit.cpp index 93bf6721a4..c0719e9f62 100644 --- a/eeschema/schedit.cpp +++ b/eeschema/schedit.cpp @@ -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; diff --git a/eeschema/viewlibs.cpp b/eeschema/viewlibs.cpp index d99d049475..0dc1aaaabc 100644 --- a/eeschema/viewlibs.cpp +++ b/eeschema/viewlibs.cpp @@ -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: diff --git a/include/eda_doc.h b/include/eda_doc.h index 300bee2243..9d5d309c40 100644 --- a/include/eda_doc.h +++ b/include/eda_doc.h @@ -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� - * 1 si mot cle trouv� + * 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__ */ diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index b3e77ef80f..b1a6798109 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -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;