Esempio n. 1
0
	int CategoryTree::getImageForEntry( const DatIndexEntry& p_entry ) {
		switch ( p_entry.fileType( ) ) {
		case ANFT_ATEX:
		case ANFT_ATTX:
		case ANFT_ATEC:
		case ANFT_ATEP:
		case ANFT_ATEU:
		case ANFT_ATET:
		case ANFT_DDS:
		case ANFT_JPEG:
		case ANFT_WEBP:
			return CategoryTreeImageList::IT_Image;
		case ANFT_EXE:
			return CategoryTreeImageList::IT_Executable;
		case ANFT_DLL:
			return CategoryTreeImageList::IT_Dll;
		case ANFT_EULA:
		case ANFT_StringFile:
			return CategoryTreeImageList::IT_Text;
		case ANFT_Bank:
		case ANFT_Sound:
		case ANFT_ID3:
			return CategoryTreeImageList::IT_Sound;
		case ANFT_FontFile:
			return CategoryTreeImageList::IT_Font;
		case ANFT_Bink2Video:
			return CategoryTreeImageList::IT_Video;
		default:
			return CategoryTreeImageList::IT_UnknownFile;
		}
	}
Esempio n. 2
0
	bool PreviewPanel::previewFile( DatFile& p_datFile, const DatIndexEntry& p_entry ) {
		auto entryData = p_datFile.readFile( p_entry.mftEntry( ) );
		if ( !entryData.GetSize( ) ) {
			return false;
		}

		// Create file reader
		auto reader = FileReader::readerForData( entryData, p_datFile, p_entry.fileType( ) );

		if ( reader ) {
			if ( m_currentView ) {
				// Check if we can re-use the current viewer
				if ( m_currentDataType == reader->dataType( ) ) {
					m_currentView->setReader( reader );
					return true;
				}

				// Destroy the old viewer
				if ( m_currentView ) {
					this->GetSizer( )->Remove( 0 );
					m_currentView->Destroy( );
				}
			}

			m_currentView = this->createViewerForDataType( reader->dataType( ), p_datFile );
			if ( m_currentView ) {
				// Workaround for wxWidgets fuckups
				this->GetSizer( )->Add( m_currentView, wxSizerFlags( ).Expand( ).Proportion( 1 ) );
				this->GetSizer( )->Layout( );
				this->GetSizer( )->Fit( this );
				// Set the reader
				m_currentView->setReader( reader );
				m_currentDataType = reader->dataType( );
				return true;
			}
		}

		return false;
	}