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; }
// Function to get the path the selected item in a Treeview // wyBool FavoriteBase::SelItemPath(HWND htree, HTREEITEM item, wyString &fullpath, wyBool bFileFlag) { wyWChar data[MAX_PATH + 1] = {0}; wyWChar foldpath[MAX_PATH + 1] = {0}; TVITEM tvitem; wyString path, temp, temp2, datastr, foldpathstr; // application data path // if(!pGlobals->m_configdirpath.GetLength()) { if(!SUCCEEDED(::SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, foldpath))) return OnError(_("Error in favorites")); wcscat(foldpath ,L"\\SQLyog"); } else { //wcscpy(foldpath, pGlobals->m_configdirpath.GetAsWideChar()); wcsncpy(foldpath, pGlobals->m_configdirpath.GetAsWideChar(), MAX_PATH); foldpath[MAX_PATH] = '\0'; } while(item) { tvitem.mask = TVIF_TEXT | TVIF_IMAGE; tvitem.hItem = item; tvitem.cchTextMax = MAX_PATH; tvitem.pszText = data ; TreeView_GetItem(htree, &tvitem); datastr.SetAs(data); if(tvitem.iImage != NFILE || !bFileFlag) { temp.Sprintf("\\%s", datastr.GetString()); if(path.GetLength() > 0) { temp2.SetAs(path); path.Sprintf("\\%s%s", datastr.GetString(), temp2.GetString()); } else path.Sprintf("\\%s", datastr.GetString()); } item = TreeView_GetParent(htree, item); } foldpathstr.SetAs(foldpath); fullpath.SetAs(foldpathstr.GetString()); fullpath.Add(path.GetString()); return wyTrue; }
//function to get the banner text void TableView::GetBanner(wyString& bannertext) { bannertext.Clear(); //set the text if(!m_mydata || !m_mydata->m_table.GetLength() || !m_mydata->m_db.GetLength()) { bannertext.SetAs(_("Select a Table/View from the Object Browser")); } }
void EditorBase::GetCompleteTextByPost(wyString &query, MDIWindow *wnd) { wyUInt32 nstrlen; wyChar *data; THREAD_MSG_PARAM tmp = {0}; //set the lparam sent if(GetWindowThreadProcessId(m_hwnd , NULL) == GetCurrentThreadId()) { nstrlen = SendMessage(m_hwnd, SCI_GETTEXTLENGTH, 0, 0); data = AllocateBuff(nstrlen + 1); SendMessage(m_hwnd, SCI_GETTEXT, (WPARAM)nstrlen+1, (LPARAM)data); query.SetAs(data); free(data); } else { if(WaitForSingleObject(pGlobals->m_pcmainwin->m_sqlyogcloseevent, 0) != WAIT_OBJECT_0 ) { query.SetAs(""); return; } tmp.m_lparam = (LPARAM)&query; tmp.m_hevent = CreateEvent(NULL, TRUE, FALSE, NULL); //now post the message to ui thread and wait for the event to be set PostMessage(wnd->GetHwnd(), UM_GETEDITORTEXT, (WPARAM)this->GetHWND(), (LPARAM)&tmp); if(WaitForSingleObject(tmp.m_hevent, 10000) == WAIT_TIMEOUT) { //CloseHandle(tmp.m_hevent); query.SetAs(""); //return; } //WaitForSingleObject(tmp.m_hevent, INFINITE); //close the event handle CloseHandle(tmp.m_hevent); tmp.m_hevent = NULL; //data = (wyChar*)tmp.m_lparam; } return; }
//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; }
void ExportAsSimpleSQL::AddColumnNames(ExportSQLData *data, wyString &value) { wyInt32 count; value.Add("("); for(count = 0; count < m_myres->field_count; count++) { if(data->m_selcol[count] == wyTrue) value.AddSprintf("`%s`, ", m_myres->fields[count].name); } value.Strip(2); // Strip one for ',' and one for blank space value.Add(") "); }
wyBool ExportAsSimpleSQL::WriteToFile(wyString &buffer) { DWORD dwbyteswritten; wyInt32 ret; wyString error; m_buffer.Add(buffer.GetString()); //if size of filebuffer is more then write to file if(m_buffer.GetLength() >= SIZE_8K) { ret = WriteFile(m_filename, m_buffer.GetString(), m_buffer.GetLength(), &dwbyteswritten, NULL); m_buffer.Clear(); if(!ret) { error.Sprintf(_("Error no : %d"), GetLastError()); MessageBox(m_hwnd, error.GetAsWideChar(), pGlobals->m_appname.GetAsWideChar(), MB_OK | MB_ICONERROR); return wyFalse; } } return wyTrue; }
//Function adds text in the edit box. void TabMessage::AddText(wyString& str) { SendMessage(m_hwnd, SCI_SETREADONLY, false, 0); SendMessage(m_hwnd, SCI_SETTEXT, 0, (LPARAM)str.GetString()); SendMessage(m_hwnd, SCI_SETREADONLY, true, 0); SendMessage(m_hwndcombo, CB_SETCURSEL, 0, 0); }
void FindAndReplace::NotFoundMsg(wyString tofind) { wyString msg; msg.AddSprintf(_("Finished searching the document. Cannot find \"%s\""), tofind.GetString()); ShowMessage(msg.GetAsWideChar(), MB_OK | MB_ICONINFORMATION); }
wyBool InitOpenFile(HWND hwnd, wyString &filename, wyInt32 filter, wyInt32 bufsize) { wyWChar file[MAX_PATH] = {0}; wyBool ret; ret = InitOpenFile(hwnd, file, filter, bufsize); filename.SetAs(file); return ret; }
wyInt32 EditorBase::ExecuteQueryThread(wyString query, wyInt32 *stop, MDIWindow *wnd, wyInt32& curline, wyBool isanalyze) { wyInt32 start=0, end=0, *err = 0; QueryThread thd; HANDLE evt; QueryResultList *list = NULL; wyString *str = new wyString; wyString *querystr; PMYSQL tmpmysql; err = new wyInt32; *err = 0; querystr = new wyString(); querystr->SetAs(query.GetString()); wnd->m_stopmysql= wnd->m_mysql; tmpmysql = &wnd->m_stopmysql; QUERYTHREADPARAMS *param = new QUERYTHREADPARAMS; list = new QueryResultList; param->startpos = start; param->endpos = end; param->linenum = curline; param->executestatus = EXECUTE_ALL; param->query = querystr; param->stop = stop; param->list = list; param->str = str; param->tab = wnd->GetActiveTabEditor()->m_pctabmgmt; param->tunnel = wnd->m_tunnel; param->mysql = &wnd->m_mysql; param->error = err; param->isadvedit = m_isadvedit; param->lpcs = &wnd->m_cs; param->wnd = wnd; param->isprofile = wyTrue; param->m_highlimitvalue = -1; param->m_lowlimitvalue = -1; param->m_iseditor = isanalyze; param->executeoption = ALL; param->isedit = wyFalse; param->tmpmysql = tmpmysql; param->isexplain = wyFalse; InitializeExecution(param); evt = thd.Execute(param); return 1; }
// 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; }
void EditorBase::AddResultMsg(Tunnel * tunnel, MYSQL_RES * myres, wyString& errorormsg, wyUInt32 timetaken) { wyUInt32 rowsret; wyString newmsg; rowsret = (wyUInt32)tunnel->mysql_num_rows(myres); VERIFY(newmsg.Sprintf(_("(%lu row(s) returned)\n(%d ms taken)\n\n"), rowsret, timetaken ) < SIZE_128); errorormsg.SetAs(newmsg); return; }
void EditorBase::AddNonResultMsg (Tunnel * tunnel, PMYSQL mysql, wyString& errorormsg, wyUInt32 timetaken ) { wyUInt32 rowsret; wyString newmsg; rowsret = (wyUInt32)tunnel->mysql_affected_rows(*mysql); VERIFY(newmsg.Sprintf(_("(%lu row(s) affected)\n(%lu ms taken)\n\n"), rowsret, timetaken ) < SIZE_1024); errorormsg.Add(newmsg.GetString()); return; }
// Function to add the given item to the treeview control // HTREEITEM FavoriteBase::AddItem(HWND htree, HTREEITEM parent, wyString name, wyInt32 pos) { TV_INSERTSTRUCT str ; str.hParent = parent ; str.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE ; str.hInsertAfter = TVI_SORT; str.item.pszText = (LPWSTR)name.GetAsWideChar(); str.item.iImage = pos ; str.item.iSelectedImage = pos; HTREEITEM htreeitem; VERIFY(htreeitem = (HTREEITEM)SendMessage(htree, TVM_INSERTITEM, NULL, (wyInt32)&str)); return(htreeitem); }
void EditorBase::AddErrorMsg(Tunnel * tunnel, PMYSQL mysql, wyString& errorormsg, wyUInt32 timetaken) { wyUInt32 errnum; wyString newerror; errnum = tunnel->mysql_errno(*mysql); /* it may happen that due to http error the errornumber is 0 so we return */ if(0 == errnum) return; VERIFY(newerror.Sprintf(_("Error Code: %d\n%s\n(%lu ms taken)\n\n"), errnum, tunnel->mysql_error(*mysql), timetaken) < SIZE_1024); errorormsg.Add(newerror.GetString()); return; }
void EditorBase::GetCompleteText(wyString &query) { wyUInt32 nstrlen; wyChar *data; nstrlen = SendMessage(m_hwnd, SCI_GETTEXTLENGTH, 0, 0); data = AllocateBuff(nstrlen + 1); SendMessage(m_hwnd, SCI_GETTEXT, (WPARAM)nstrlen+1, (LPARAM)data); query.SetAs(data); free(data); return; }
// 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; }
wyBool ExportAsSimpleSQL::AddValues(ExportSQLData *data, wyString &value) { wyInt32 count, last, lenrow; wyString temp, resrow, buffer; wyInt32 *lengths = NULL; wyInt32 escapeddatalen; wyBool startflag = wyFalse; if(WriteToFile(value) == wyFalse) return wyFalse; //this condition is true if export from from result tab if result set is not edited if(!data->m_tabrec->m_rowarray) { if(m_isdatafromquery == wyTrue) { lengths = (wyInt32 *)sja_mysql_fetch_lengths(m_tunnel, m_myres); } else { lengths = (wyInt32 *)m_rowlength; } } for(count = 0; count < data->m_result->field_count; count++) { if(data->m_selcol[count] == wyFalse) continue; if(startflag == wyTrue) buffer.Add(","); /// Check for NULL value or not if(!m_myrow[count]) { buffer.Add("NULL"); startflag = wyTrue; continue; } if(m_escapeddata) free(m_escapeddata); //This condion true if the result tab in table tab or edit mode or result set is edited if(!lengths) { resrow.SetAs(m_myrow[count]); lenrow = resrow.GetLength(); } else { lenrow = lengths[count]; } //It requires double buffer bcs the real_escape_string returns 2 char for special chars like '\' escapeddatalen = (lenrow * 2) + 1; m_escapeddata = AllocateBuff(escapeddatalen); last = sja_mysql_real_escape_string(m_tunnel, *m_mysql, m_escapeddata, m_myrow[count], lenrow); m_escapeddata[last] = 0; buffer.Add("'"); startflag = wyTrue; buffer.Add(m_escapeddata); buffer.Add("'"); } //Write to file WriteToFile(buffer); buffer.SetAs(""); value.SetAs(""); return wyTrue; }
void BlobMgmt::ProcessComboSelection(wyString& comboselparam) { wyChar *ansistr = NULL; wyChar *utf8str = NULL; wyWChar *ucs2str = NULL; wyInt32 lenucs2 = 0, i; if(comboselparam.CompareI("US-ascii/Ansi ") == 0 && m_isutf8 == wyTrue) { ansistr = Utf8toAnsi(m_blobdata.GetString(), m_blobdata.GetLength()); m_piub->m_data = ansistr; m_piub->m_datasize = strlen(ansistr); m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("UTF-8") == 0 && m_isansi == wyTrue) { utf8str = AnsitoUtf8(m_blobdata.GetString(), m_blobdata.GetLength()); m_piub->m_data = utf8str; m_piub->m_datasize = strlen(utf8str); m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("ucs2") == 0 && m_isutf8 == wyTrue) { ucs2str = Utf8toUcs2(m_blobdata.GetString(), m_blobdata.GetLength()); lenucs2 = wcslen(ucs2str); memset(m_piub->m_data, 0, strlen(m_piub->m_data)); for(i=0; i < lenucs2; i++) memcpy(m_piub->m_data + i, ucs2str + i, 1); m_piub->m_datasize = lenucs2; m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("US-ascii/Ansi ") == 0 && m_isucs2 == wyTrue) { ansistr = Ucs2toAnsi(m_blobdata.GetString(), m_blobdata.GetLength()); m_piub->m_data = ansistr; m_piub->m_datasize = strlen(ansistr); m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("UTF-8") == 0 && m_isucs2 == wyTrue) { utf8str = Ucs2toUtf8(m_blobdata.GetString(), m_blobdata.GetLength()); m_piub->m_data = utf8str; m_piub->m_datasize = strlen(utf8str); m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } else if(comboselparam.CompareI("ucs2") == 0 && m_isansi == wyTrue) { ucs2str = AnsitoUcs2(m_blobdata.GetString(), m_blobdata.GetLength()); lenucs2 = wcslen(ucs2str); memcpy(m_piub->m_data, ucs2str, lenucs2); for(i=0; i < lenucs2; i++) memcpy(m_piub->m_data + i, ucs2str + i, 1); m_piub->m_datasize = lenucs2; m_piub->m_isnull = wyFalse; m_piub->m_ischanged = wyTrue; } }
wyBool FavoriteBase::OnError(wyString errmsg) { DisplayErrorText(::GetLastError(), errmsg.GetString()); return wyFalse; }
//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; }
void EditorFont::SetLexerWords(HWND hwndedit, wyString &keys, wyString &funcs) { SendMessage(hwndedit, SCI_SETKEYWORDS, (WPARAM)0, (LPARAM)keys.GetString()); SendMessage(hwndedit, SCI_SETKEYWORDS, (WPARAM)3, (LPARAM)funcs.GetString()); }
// Function creates a text buffer with all the properties and sends newly allocated buffer. wyBool TableMakerAdvProperties::GetAdvPropString( Tunnel *tunnel, PMYSQL mysql, TableAdvPropValues* ptav, wyString& str) { wyBool ismysql41 = IsMySQL41(tunnel, mysql); if(ptav->m_changed == wyFalse) return wyFalse; /* nCount += sprintf( szQuery+nCount, " ,type=%s ", ptav->szType ); This comma is not required, this is required in the alter stmt when this stmt is not the first one. So we are checking it in the query builder In the latest versions we need 'Engine' in place of 'Type' */ if(ptav->m_type.GetLength()) { if(ismysql41 == wyTrue) str.AddSprintf(" Engine=%s ", ptav->m_type.GetString()); else str.AddSprintf(" Type=%s ", ptav->m_type.GetString()); } if(ptav->m_checksum.CompareI(STR_DEFAULT) != 0) str.AddSprintf("checksum=%s ", ptav->m_checksum.GetString()); if(ptav->m_auto_incr.GetLength()) str.AddSprintf("auto_increment=%s ", ptav->m_auto_incr.GetString()); if(ptav->m_avg_row.GetLength()) str.AddSprintf("avg_row_length=%s ", ptav->m_avg_row.GetString()); if(ptav->m_comment.GetLength()) str.AddSprintf("comment='%s' ", ptav->m_comment.GetString()); else str.Add("comment='' "); if(ptav->m_max_rows.GetLength()) str.AddSprintf("max_rows=%s ", ptav->m_max_rows.GetString()); if(ptav->m_min_rows.GetLength()) str.AddSprintf("min_rows=%s ", ptav->m_min_rows.GetString()); if(ptav->m_delay.CompareI(STR_DEFAULT) != 0) str.AddSprintf("delay_key_write=%s ", ptav->m_delay.GetString()); if(ptav->m_rowformat.GetLength()) str.AddSprintf("row_format=%s ", ptav->m_rowformat.GetString()); if(ptav->m_chunks.GetLength()) str.AddSprintf("raid_chunks=%s ", ptav->m_chunks.GetString()); if(ptav->m_chunksize.GetLength()) str.AddSprintf("raid_chunksize=%s ", ptav->m_chunksize.GetString()); if(ismysql41 == wyTrue) { if(ptav->m_charset.GetLength() && ptav->m_charset.Compare(STR_DEFAULT) != 0) str.AddSprintf("charset=%s ", ptav->m_charset.GetString()); if(ptav->m_collation.GetLength() && ptav->m_collation.Compare(STR_DEFAULT) != 0) str.AddSprintf("collate=%s ", ptav->m_collation.GetString()); } return wyTrue; }