wyInt32 FindAndReplace::ReplaceAll(wyString& replacewhat, wyString& replacewith, wyUInt32 wholeworld, wyUInt32 matchcase) { if (replacewhat.GetLength() == 0) { return -1; } wyInt32 startposition = 0; wyInt32 endposition = SendMessage(m_hwndedit, SCI_GETLENGTH, 0, 0); wyInt32 flags = 0; if(wholeworld)flags = SCFIND_WHOLEWORD; if(matchcase)flags = SCFIND_MATCHCASE; ::SendMessage(m_hwndedit, SCI_SETTARGETSTART, startposition, 0); ::SendMessage(m_hwndedit, SCI_SETTARGETEND, endposition, 0); ::SendMessage(m_hwndedit, SCI_SETSEARCHFLAGS, flags, 0); wyInt32 posfind = SendMessage(m_hwndedit, SCI_SEARCHINTARGET, replacewhat.GetLength(), (LPARAM)replacewhat.GetString()); if((posfind != -1) && (posfind <= endposition)) { ::SendMessage(m_hwndedit, SCI_BEGINUNDOACTION, 0, 0); return Replace(posfind, endposition, replacewhat, replacewith, wholeworld, matchcase); } return 0; }
wyInt32 FindAndReplace::Replace(wyInt32 posfind, wyInt32 endposition, wyString &replacewhat, wyString &replacewith, wyUInt32 wholeworld, wyUInt32 matchcase) { wyInt32 lastmatch = posfind; wyInt32 replacements = 0; //Replacement loop while(posfind != -1) { wyInt32 lentarget = SendMessage(m_hwndedit, SCI_GETTARGETEND, 0, 0) - SendMessage(m_hwndedit, SCI_GETTARGETSTART, 0, 0); wyInt32 movepasteol = 0; wyInt32 replacelen = replacewith.GetLength(); wyInt32 lenreplaced = replacelen; ::SendMessage(m_hwndedit, SCI_REPLACETARGET, replacelen, (LPARAM)replacewith.GetString()); //Modify for change caused by replacement endposition += lenreplaced - lentarget; // For the special cases of start of line and end of line // something better could be done but there are too many special cases lastmatch = posfind + lenreplaced + movepasteol; if(lentarget == 0) { lastmatch = SendMessage(m_hwndedit, SCI_POSITIONAFTER, lastmatch, 0); } if(lastmatch >= endposition) { // Run off the end of the document/selection with an empty match posfind = -1; } else { ::SendMessage(m_hwndedit, SCI_SETTARGETSTART, lastmatch, 0); ::SendMessage(m_hwndedit, SCI_SETTARGETEND, endposition, 0); posfind = SendMessage(m_hwndedit, SCI_SEARCHINTARGET, replacewhat.GetLength(), (LPARAM)replacewhat.GetString()); } replacements++; } ::SendMessage(m_hwndedit, SCI_SETSEL, lastmatch, lastmatch); ::SendMessage(m_hwndedit, SCI_ENDUNDOACTION, 0, 0); return replacements; }
//get column name wyBool TableView::GetColumnName(wyString& column, wyInt32 col) { if(m_data && m_data->m_datares && col >= 0 && col < m_data->m_datares->field_count) { if(m_data->m_datares->fields[col].name && m_data->m_datares->fields[col].name[0]) { column.SetAs(m_data->m_datares->fields[col].name, m_wnd->m_ismysql41); } return column.GetLength() ? wyTrue : wyFalse; } return wyFalse; }
// Function to create a favorite file or folder in the given path // wyBool FavoriteBase::InsertFavoriteItem(wyString &path, wyBool isfolder , wyString &favquery) { DWORD byteswritten; HANDLE hfile; //const unsigned char utf8bom[10] = {unsigned char(0xEF), unsigned char(0xBB), unsigned char(0xBF)}; // if the favorite is file type then add the extension// if(!isfolder) { path.Add(".sql"); hfile = ::CreateFile(path.GetAsWideChar(), GENERIC_WRITE, 0, NULL, CREATE_NEW, NULL, NULL); if(hfile == INVALID_HANDLE_VALUE) { if(::GetLastError() == ERROR_FILE_EXISTS) { if(::MessageBox(NULL, _(L"The name you have entered for the shortcut already exists in Favorites menu.\nWould you like to overwrite it?"), _(L"Add Favorite"), MB_YESNO | MB_TASKMODAL | MB_ICONINFORMATION | MB_DEFBUTTON2) == IDYES) { hfile = ::CreateFile(path.GetAsWideChar(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, NULL, NULL); if(hfile == INVALID_HANDLE_VALUE) OnError(_("Cannot write into Favorite File")); } else return wyFalse; } else return OnError(_("Cannot write into Favorite File")); } //if (!::WriteFile(hfile, utf8bom, 3, &byteswritten , NULL)) // return OnError("Cannot write into Favorite File"); if (!::WriteFile(hfile, favquery.GetString(), favquery.GetLength(), &byteswritten , NULL)) return OnError(_("Cannot write into Favorite File")); ::CloseHandle(hfile); } else if(!::CreateDirectory(path.GetAsWideChar(), NULL)) return OnError(_("Cannot create Favorite Folder")); return wyTrue; }
// function to process file type Favorite// wyBool FavoriteBase::AddFile(HMENU hmenu, wyString &parentpath, wyWChar *filename) { wyInt32 i , j=0; wyUInt32 lengthwchar = 1; wyWChar ext[_MAX_EXT] = {0} , *data = {0}; wyChar *path = {0}; MENUITEMINFO lpmii={0}; parentpath.GetAsWideChar(&lengthwchar); path = AllocateBuff(parentpath.GetLength() + 2); data = AllocateBuffWChar(wcslen(filename) + 2); wcscpy(data, (wyWChar*)filename); strcpy(path, (wyChar*)parentpath.GetString()); for(i = wcslen(data) - 1; i && data[i]!='.'; i--, j++) ext[j] = data[i]; if(wcsnicmp(ext, L"lqs", 3) != 0) return wyFalse; ext[j] = 0; data[i] = 0; lpmii.cbSize = sizeof(MENUITEMINFO); lpmii.fMask = MIIM_STRING|MIIM_ID|MIIM_DATA; lpmii.wID = m_menuid++; lpmii.dwItemData = (ULONG_PTR)path; lpmii.cch = wcslen(data); lpmii.dwTypeData = data; VERIFY(::InsertMenuItem(hmenu, -1, TRUE, &lpmii)); free(data); return wyTrue; }
//get table name wyBool TableView::GetTableName(wyString& table, wyInt32 col) { table.SetAs(m_data->m_table); return table.GetLength() ? wyTrue : wyFalse; }
//get the database name wyBool TableView::GetDBName(wyString& db, wyInt32 col) { db.SetAs(m_data->m_db); return db.GetLength() ? wyTrue : wyFalse; }