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;
}
Esempio n. 3
0
//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;
}
Esempio n. 4
0
// 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;
}
Esempio n. 5
0
// 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;
}
Esempio n. 6
0
//get table name
wyBool 
TableView::GetTableName(wyString& table, wyInt32 col)
{
    table.SetAs(m_data->m_table);
    return table.GetLength() ? wyTrue : wyFalse;
}
Esempio n. 7
0
//get the database name
wyBool 
TableView::GetDBName(wyString& db, wyInt32 col)
{
    db.SetAs(m_data->m_db);
    return db.GetLength() ? wyTrue : wyFalse;
}