64 SEARCH_STACK* aPaths, std::vector<EMBEDDED_FILES*> aFilesStack )
67 wxString fullfilename;
82 wxString scheme = uri.GetScheme().Lower();
86 if( wxLaunchDefaultBrowser( docname ) )
91 if( aFilesStack.empty() )
93 wxLogTrace( wxT(
"KICAD_EMBED" ),
94 wxT(
"No EMBEDDED_FILES object provided for kicad_embed URI" ) );
100 wxLogTrace( wxT(
"KICAD_EMBED" ),
101 wxT(
"Invalid kicad_embed URI '%s'" ), docname );
107 wxFileName temp_file = aFilesStack[0]->GetTemporaryFileName( docname );
110 while( !temp_file.IsOk() && ii < (
int) aFilesStack.size() )
111 temp_file = aFilesStack[ii++]->GetTemporaryFileName( docname );
113 if( !temp_file.IsOk() )
115 wxLogTrace( wxT(
"KICAD_EMBED" ),
116 wxT(
"Failed to get temp file '%s' for kicad_embed URI" ), docname );
120 wxLogTrace( wxT(
"KICAD_EMBED" ),
121 wxT(
"Opening embedded file '%s' as '%s'" ),
123 temp_file.GetFullPath() );
124 docname = temp_file.GetFullPath();
136 if( wxIsAbsolutePath( docname ) || aPaths ==
nullptr )
137 fullfilename = docname;
141 else if( wxFileName::FileExists( docname ) )
142 fullfilename = docname;
144 fullfilename = aPaths->FindValidPath( docname );
149 extension = wxT(
".*" );
152 if( wxIsWild( fullfilename ) )
154 fullfilename = wxFileSelector(
_(
"Documentation File" ), wxPathOnly( fullfilename ),
155 fullfilename, extension, wxFileSelectorDefaultWildcardStr,
156 wxFD_OPEN, aParent );
158 if( fullfilename.IsEmpty() )
162 if( !wxFileExists( fullfilename ) )
164 msg.Printf(
_(
"Documentation file '%s' not found." ), docname );
169 wxFileName currentFileName( fullfilename );
172 fullfilename = currentFileName.GetAbsolutePath();
174 wxString file_ext = currentFileName.GetExt();
176 if( file_ext.Lower() == wxT(
"pdf" ) )
178 success =
OpenPDF( fullfilename );
183 wxFileType* filetype;
186 filetype = wxTheMimeTypesManager->GetFileTypeFromExtension( file_ext );
192 filetype =
mimeDatabase->GetFileTypeFromExtension( file_ext );
199 wxFileType::MessageParameters params( fullfilename, type );
201 success = filetype->GetOpenCommand( &command, params );
205 success = wxExecute( command );
210 msg.Printf(
_(
"Unknown MIME type for documentation file '%s'" ), fullfilename );
bool GetAssociatedDocument(wxWindow *aParent, const wxString &aDocName, PROJECT *aProject, SEARCH_STACK *aPaths, std::vector< EMBEDDED_FILES * > aFilesStack)
Open a document (file) with the suitable browser.