void CHomeSearchCtrl::Search(bool bAutostart) { CString strText, strURI, strEntry, strClear; m_wndText.GetWindowText( strText ); strText.TrimLeft(); strText.TrimRight(); LoadString( strClear, IDS_SEARCH_PAD_CLEAR_HISTORY ); if ( _tcscmp ( strClear , strText ) == 0 ) return; // Check if user mistakenly pasted download link to search input box if (theApp.OpenURL( strText, TRUE, TRUE ) ) { m_wndText.SetWindowText( _T("") ); return; } CSchemaPtr pSchema = m_wndSchema.GetSelected(); if ( pSchema != NULL ) strURI = pSchema->GetURI(); Settings.Search.LastSchemaURI = strURI; CQuerySearchPtr pSearch = new CQuerySearch(); pSearch->m_bAutostart = bAutostart; pSearch->m_sSearch = strText; pSearch->m_pSchema = pSchema; BOOL bValid = pSearch->CheckValid( false ); if ( ! bValid && bAutostart ) { // Invalid search, open help window CQuerySearch::SearchHelp(); } else if ( AdultFilter.IsSearchFiltered( pSearch->m_sSearch ) && bAutostart ) { // Adult search blocked, open help window CHelpDlg::Show( _T("SearchHelp.AdultSearch") ); } else { if ( bValid ) { // Load all CStringList oList; for ( int i = 0; ; i++ ) { strEntry.Format( _T("Search.%.2i"), i + 1 ); CString strValue( theApp.GetProfileString( _T("Search"), strEntry ) ); if ( strValue.IsEmpty() ) break; int lf = strValue.Find( _T('\n') ); if ( strText.CompareNoCase( ( lf != -1 ) ? strValue.Left( lf ) : strValue ) ) oList.AddTail( strValue ); } // Cut to 200 items while ( oList.GetCount() >= 200 ) oList.RemoveTail(); // New one (at top) oList.AddHead( strURI.IsEmpty() ? strText : ( strText + _T('\n') + strURI ) ); // Save list POSITION pos = oList.GetHeadPosition(); for ( int i = 0; pos; ++i ) { strEntry.Format( _T("Search.%.2i"), i + 1 ); theApp.WriteProfileString( _T("Search"), strEntry, oList.GetNext( pos ) ); } FillHistory(); } new CSearchWnd( pSearch ); } m_wndText.SetWindowText( _T("") ); }
void OnDsp2H(CStringList& strFileList, CString strSrcDir, CString strDstDir, BOOL bForce) { CString strSrcFile, strDstFile, strTemp, strVal, strOut;; CStdioFile out; CFileStatus status; POSITION pos; int iDot, iOffset, iPage, iLength; strDstFile = strDstDir + strFileList.RemoveTail(); if (!PromptOverwriteFile(strDstFile, bForce)) return; #ifndef __GNUC__ CFile::GetStatus(strDstFile, status); #else stat(strDstFile.c_str(),&status); #endif iOffset = 0; iPage = 0; strOut = _T(""); #ifndef __GNUC__ for (pos = strFileList.GetHeadPosition(); pos != NULL; ) #else for (pos = strFileList.begin(); pos != strFileList.end(); ++pos) #endif { strTemp = strFileList.GetNext(pos); strSrcFile = strSrcDir + strTemp; #ifndef __GNUC__ if (!CFile::GetStatus(strSrcFile, status)) { wprintf(_T("Source file %s doesn't exist"), strSrcFile); #else if (stat(strSrcFile.c_str(),&status)) { printf("Source file %s doesn't exist", strSrcFile.c_str()); #endif return; } iLength = (int)status.m_size; iDot = strTemp.Find(_T('.')); strTemp = strTemp.Left(iDot); strTemp.MakeUpper(); #ifndef __GNUC__ strVal.Format(_T("#define SYSTEM_%s_PAGE\t\t(SYSTEM_DSP_PAGE + %d)\n"), strTemp, iPage); #else { char buff[511]; sprintf(buff, _T("#define SYSTEM_%s_PAGE\t\t(SYSTEM_DSP_PAGE + %d)\n"), strTemp.c_str(), iPage); strVal = buff; } #endif strOut += strVal; #ifndef __GNUC__ strVal.Format(_T("#define SYSTEM_%s_OFFSET\t\t0x%x\n"), strTemp, iOffset); #else { char buff[511]; sprintf(buff, _T("#define SYSTEM_%s_OFFSET\t\t0x%x\n"), strTemp.c_str(), iOffset); strVal = buff; } #endif strOut += strVal; iOffset += iLength; while (iOffset >= FILE_FLAG_PAGE_SIZE) { iOffset -= FILE_FLAG_PAGE_SIZE; iPage ++; if (iPage >= SYSTEM_DSP_PAGE_NUM) { printf("DSP dat files too large!"); return; } } } if (!out.Open(strDstFile, CFile::modeCreate|CFile::modeWrite|CFile::typeText)) { #ifndef __GNUC__ wprintf(_T("Can not create destination file %s"), strDstFile); #else printf("Can not create destination file %s", strDstFile.c_str()); #endif return; } out.WriteString(strOut); out.Close(); }