LEditor* MainBook::FindEditor(const wxString& fileName) { wxString unixStyleFile(fileName); #ifdef __WXMSW__ unixStyleFile.Replace(wxT("\\"), wxT("/")); #endif // On gtk either fileName or the editor filepath (or both) may be (or their paths contain) symlinks wxString fileNameDest = CLRealPath(fileName); for(size_t i = 0; i < m_book->GetPageCount(); i++) { LEditor* editor = dynamic_cast<LEditor*>(m_book->GetPage(i)); if(editor) { wxString unixStyleFile(editor->GetFileName().GetFullPath()); wxString nativeFile(unixStyleFile); #ifdef __WXMSW__ unixStyleFile.Replace(wxT("\\"), wxT("/")); #endif #ifndef __WXMSW__ // On Unix files are case sensitive if(nativeFile.Cmp(fileName) == 0 || unixStyleFile.Cmp(fileName) == 0 || unixStyleFile.Cmp(fileNameDest) == 0) #else // Compare in no case sensitive manner if(nativeFile.CmpNoCase(fileName) == 0 || unixStyleFile.CmpNoCase(fileName) == 0 || unixStyleFile.CmpNoCase(fileNameDest) == 0) #endif { return editor; } #if defined(__WXGTK__) // Try again, dereferencing the editor fpath wxString editorDest = CLRealPath(unixStyleFile); if(editorDest.Cmp(fileName) == 0 || editorDest.Cmp(fileNameDest) == 0) { return editor; } #endif } } // try the detached editors EditorFrame::List_t::iterator iter = m_detachedEditors.begin(); for(; iter != m_detachedEditors.end(); ++iter) { if((*iter)->GetEditor()->GetFileName().GetFullPath() == fileName) { return (*iter)->GetEditor(); } } return NULL; }
void updatePackfileDataVersion(hkArray<char>& ioBuf) { hkArray<char> origBuf; origBuf.swap(ioBuf); // Load the entire file inplace hkBinaryPackfileReader reader; reader.loadEntireFileInplace(origBuf.begin(), origBuf.getSize()); // check versioning if( hkVersionUtil::updateToCurrentVersion( reader, hkVersionRegistry::getInstance() ) != HK_SUCCESS ) { HK_WARN_ALWAYS(0, "Couldn't update version, skipping.\n"); } // Get the top level object in the file hkRootLevelContainer* container = static_cast<hkRootLevelContainer*>( reader.getContents( hkRootLevelContainerClass.getName() ) ); HK_ASSERT2(0xa6451543, container != HK_NULL, "Could not load root level obejct" ); hkOstream nativeFile(ioBuf); hkBool success = hkpHavokSnapshot::save(container, hkRootLevelContainerClass, nativeFile.getStreamWriter(), true); HK_ASSERT(0xa6451545, success == true); }