//--------------------------------------------------------------------------- void __fastcall TFileViewDlg::KPIClick(TObject *Sender) { pCurPage->m_UseIndex = pCurPage->m_UseIndex ? 0 : 1; if( pCurPage->m_UseIndex ){ LoadFileList(); } else if( pCurPage->m_Thumb.IsOpen() ){ pCurPage->m_Thumb.CloseFolder(); } }
SHORT CFreeLists::FindList(CString strFileName) { SHORT nCurFile; CString strShortFileName; LoadFileList(); strShortFileName = GetShortFileName(strFileName); for(nCurFile=0;nCurFile < m_FileList.GetNumFiles();nCurFile++) { if(m_FileList.GetFileName(nCurFile).CompareNoCase(strShortFileName)==0) return nCurFile + 1; // Match } return -1; }
SHORT CFreeLists::CreateList(CString strFileName) { SHORT nNewEntry; CString strShortFileName; SHORT nHandle; strShortFileName = GetShortFileName(strFileName); LoadFileList(); nHandle = FindList(strShortFileName); if(nHandle >= 0) return nHandle; // Assert if trying to create list that already exists ASSERT(nHandle < 0); nNewEntry = m_FileList.AddEntry(strShortFileName) + 1; SaveFileList(); return nNewEntry; }
//--------------------------------------------------------------------------- void __fastcall TFileViewDlg::UpdateList(void) { LoadFileList(); LoadImage(); UpdateBitmap(); }
//--------------------------------------------------------------------------- void __fastcall TFileViewDlg::LoadImage(void) { if( !m_Max ) return; if( pCurPage->pList == NULL ) LoadFileList(); m_CurFile = -1; UpdateStat(); CWaitCursor wait; MultProc(); SetCurrentDirectory(pCurPage->m_Folder.c_str()); Graphics::TBitmap *pBitmap = new Graphics::TBitmap(); pBitmap->PixelFormat = pf24bit; pBitmap->Width = 16; pBitmap->Height = 16; MultProc(); int i; int n = pCurPage->m_CurPage * m_Max; SetBitmapSize(); for( i = 0; i < m_Max; i++, n++ ){ TRect rc; GetRect(rc, i); if( n < pCurPage->pList->Count ){ USHORT crc; LPCSTR pn = pCurPage->pList->Get(crc, n); if( !pCurPage->m_Thumb.LoadThumb(n, pCurPage->pBitmapS, rc, crc, pCurPage->m_Size[i]) ){ LoadFile(pBitmap, pn); pCurPage->m_Size[i] = (pBitmap->Height << 16) + pBitmap->Width; Graphics::TBitmap *pBitmapT = CreateBitmap(m_RectS.Right, m_RectS.Bottom, -1); ::SetStretchBltMode(pBitmapT->Canvas->Handle, HALFTONE); MultProcA(); if( sys.m_FileViewKeep ){ FillBitmap(pBitmapT, clGray); if( ((pBitmap->Width <= pBitmapT->Width) && (pBitmap->Height <= pBitmapT->Height)) ){ pBitmapT->Canvas->Draw(0, 0, pBitmap); } else { KeepAspectDraw(pBitmapT->Canvas, pBitmapT->Width, pBitmapT->Height, pBitmap); } } else { pBitmapT->Canvas->StretchDraw(m_RectS, pBitmap); } pCurPage->m_Thumb.SaveThumb(n, pBitmapT, m_RectS, crc, pCurPage->m_Size[i]); pCurPage->pBitmapS->Canvas->CopyRect(rc, pBitmapT->Canvas, m_RectS); if( pBox[i] != NULL ){ pBox[i]->Canvas->Draw(0, 0, pBitmapT); } delete pBitmapT; } } else { pCurPage->pBitmapS->Canvas->Brush->Style = bsSolid; pCurPage->pBitmapS->Canvas->Brush->Color = clWhite; pCurPage->pBitmapS->Canvas->FillRect(rc); } MultProc(); } delete pBitmap; UpdateBitmap(); }
void InitStreams(void) { // obtain information about system // !!! FIXME: Move this into an abstraction of some sort... #ifdef PLATFORM_WIN32 SYSTEM_INFO siSystemInfo; GetSystemInfo( &siSystemInfo); // and remember page size _ulPageSize = siSystemInfo.dwPageSize*16; // cca. 64kB on WinNT/Win95 #else _ulPageSize = PAGESIZE; #endif // keep a copy of path for setting purposes _fnmApp = _fnmApplicationPath; // if no mod defined yet if (_fnmMod=="") { // check for 'default mod' file LoadStringVar(CTString("DefaultMod.txt"), _fnmMod); } CPrintF(TRANSV("Current mod: %s\n"), (_fnmMod=="") ? TRANS("<none>") : (const char *) (CTString&)_fnmMod); // if there is a mod active if (_fnmMod!="") { // load mod's include/exclude lists CPrintF(TRANSV("Loading mod include/exclude lists...\n")); BOOL bOK = FALSE; bOK |= LoadFileList(_afnmBaseWriteInc , CTString("BaseWriteInclude.lst")); bOK |= LoadFileList(_afnmBaseWriteExc , CTString("BaseWriteExclude.lst")); bOK |= LoadFileList(_afnmBaseBrowseInc, CTString("BaseBrowseInclude.lst")); bOK |= LoadFileList(_afnmBaseBrowseExc, CTString("BaseBrowseExclude.lst")); // if none found if (!bOK) { // the mod is not valid _fnmMod = CTString(""); CPrintF(TRANSV("Error: MOD not found!\n")); // if mod is ok } else { // remember mod name (the parameter that is passed on cmdline) _strModName = _fnmMod; _strModName.DeleteChar(_strModName.Length()-1); _strModName = CTFileName(_strModName).FileName(); } } // find eventual extension for the mod's dlls _strModExt = ""; LoadStringVar(CTString("ModExt.txt"), _strModExt); CPrintF(TRANSV("Loading group files...\n")); CDynamicArray<CTString> *files = NULL; // for each group file in base directory files = _pFileSystem->FindFiles(_fnmApplicationPath, "*.gro"); int max = files->Count(); int i; // for each .gro file in the directory for (i = 0; i < max; i++) { // add it to active set UNZIPAddArchive( _fnmApplicationPath+((*files)[i]) ); } delete files; // if there is a mod active if (_fnmMod!="") { // for each group file in mod directory files = _pFileSystem->FindFiles(_fnmApplicationPath+_fnmMod, "*.gro"); max = files->Count(); for (i = 0; i < max; i++) { UNZIPAddArchive( _fnmApplicationPath + _fnmMod + ((*files)[i]) ); } delete files; } // if there is a CD path if (_fnmCDPath!="") { // for each group file on the CD files = _pFileSystem->FindFiles(_fnmCDPath, "*.gro"); max = files->Count(); for (i = 0; i < max; i++) { UNZIPAddArchive( _fnmCDPath + ((*files)[i]) ); } delete files; // if there is a mod active if (_fnmMod!="") { // for each group file in mod directory files = _pFileSystem->FindFiles(_fnmCDPath+_fnmMod, "*.gro"); max = files->Count(); for (i = 0; i < max; i++) { UNZIPAddArchive( _fnmCDPath + _fnmMod + ((*files)[i]) ); } delete files; } } // try to try { // read the zip directories UNZIPReadDirectoriesReverse_t(); // if failed } catch( char *strError) { // report warning CPrintF( TRANS("There were group file errors:\n%s"), strError); } CPrintF("\n"); const char *dirsep = CFileSystem::GetDirSeparator(); LoadFileList(_afnmNoCRC, CTFILENAME("Data") + CTString(dirsep) + CTString("NoCRC.lst")); _pShell->SetINDEX(CTString("sys")+"_iCPU"+"Misc", 1); }