Exemple #1
0
void CFilesHashDlg::OnBnClickedFind()
{
	// TODO: 在此添加控件通知处理程序代码
	CFindDlg Find;
	Find.SetFindHash(_T(""));
	if(IDOK == Find.DoModal())
	{
		m_strFindHash = Find.GetFindHash().Trim();
		if(m_strFindHash.Compare(_T("")) != 0)
		{
			m_bFind = TRUE; // 进入搜索模式
			m_btnClr.SetWindowText(MAINDLG_CLEAR_VERIFY);
			//m_editMain.SetWindowText(_T(""));
			m_editMain.SetWindowText(ResultFind(m_strFindFile, m_strFindHash));
			//m_editMain.LineScroll(m_editMain.GetLineCount()); // 将文本框滚动到结尾
		}
	}
}
void CXMLTreeView::find()
{
	CFindDlg findDlg;
	CString strStart;
	CString strEnd;
	BOOL    isFind;
	if (findDlg.DoModal()==IDOK)
	{
		strStart = findDlg.m_strStart;
		strEnd = findDlg.m_strEnd;
	}

	CNodeManage *m_Manage = GetDocument()->m_pManage;
    //如果不为空的话
    if (m_Manage)
		isFind = m_Manage->findNodes(strStart,strEnd);

	if (FALSE == isFind)
		MessageBox("Input Error,Not Found!");
	else
		Invalidate(TRUE);
}
Exemple #3
0
bool CMainFrame::Find(CWaveProcess::FIND_SAMPLE_INFO& FindInfo, bool First)
{
	if (m_View == NULL)
		return(FALSE);
	if (First) {	// if initial find
		CFindDlg	dlg;
		if (dlg.DoModal() != IDOK)	// display find dialog
			return(FALSE);
		m_FindInfo.ChannelIdx = dlg.m_Channel;
		CWaveProcess::CSampleRange	target = dlg.GetTargetRange();
		m_FindInfo.TargetStart = target.Start;
		m_FindInfo.TargetEnd = target.End;
		m_FindInfo.StartFrame = m_View->GetIntNow();	// start searching from now
		m_FindInfo.Flags = 0;
		if (dlg.m_Wrap)
			m_FindInfo.Flags |= CWaveProcess::FIND_SAMPLE_INFO::WRAP;
		if (dlg.m_Match)
			m_FindInfo.Flags |= CWaveProcess::FIND_SAMPLE_INFO::INVERT;
		if (dlg.m_Dir)
			m_FindInfo.Flags |= CWaveProcess::FIND_SAMPLE_INFO::REVERSE;
		if (dlg.m_Unit == CWaveProcess::CConvert::DECIBELS)	// if target in dB
			m_FindInfo.Flags |= CWaveProcess::FIND_SAMPLE_INFO::ABS_VAL;
	} else {	// find next
		W64INT	now = m_View->GetIntNow();
		// if cursor still on previous matching frame
		if (now == m_FindInfo.MatchFrame) {
			if (m_FindInfo.Flags & CWaveProcess::FIND_SAMPLE_INFO::REVERSE)	// if reverse
				m_FindInfo.StartFrame = now - 1;	// start one sample before cursor
			else	// forward
				m_FindInfo.StartFrame = now + 1;	// start one sample after cursor
		} else	// cursor was moved
			m_FindInfo.StartFrame = now;	// start at cursor
	}
	if (!m_View->GetWave().FindSample(m_FindInfo))	// find matching sample
		return(FALSE);
	FindInfo = m_FindInfo;	// return find info to caller
	return(TRUE);
}
void CDebuggerView::OnDbFind()
{
    CFindDlg dlg;
    dlg.DoModal();
    ::SetFocus(m_editor.GetWindowHandle());
}
Exemple #5
0
bool FindRoutine (const CObject * pObject,       // passed back to callback routines
                  CFindInfo & FindInfo,          // details about find
                  const InitiateSearch pInitiateSearch, // how to re-initiate a find
                  const GetNextLine pGetNextLine)
  {
CFindDlg dlg (FindInfo.m_strFindStringList);

  FindInfo.m_iStartColumn = -1;     // return consistent column number

// find what the heck the user wants to do

  if (!FindInfo.m_bAgain || FindInfo.m_strFindStringList.IsEmpty ())
    {

    if (!FindInfo.m_strFindStringList.IsEmpty ())
      dlg.m_strFindText = FindInfo.m_strFindStringList.GetHead ();

    dlg.m_bMatchCase  = FindInfo.m_bMatchCase;
    dlg.m_bForwards   = FindInfo.m_bForwards;
    dlg.m_strTitle    = FindInfo.m_strTitle;
    dlg.m_bRegexp     = FindInfo.m_bRegexp;

    if (dlg.DoModal () != IDOK)
      return false;

    FindInfo.m_bMatchCase    = dlg.m_bMatchCase;
    FindInfo.m_bForwards     = dlg.m_bForwards;
    FindInfo.m_bRegexp       = dlg.m_bRegexp;

    // re-initiate the search - this will set up the POSITION parameter, if it wants to
    // we need to do it here to get the current line number for subsequent calculations

    (*pInitiateSearch) (pObject, FindInfo);

    // add find string to head of list, provided it is not empty, and not the same as before
    if (!dlg.m_strFindText.IsEmpty () &&
        (FindInfo.m_strFindStringList.IsEmpty () ||
        FindInfo.m_strFindStringList.GetHead () != dlg.m_strFindText))
      FindInfo.m_strFindStringList.AddHead (dlg.m_strFindText);

    if (FindInfo.m_bForwards)
       FindInfo.m_nCurrentLine = 0;
    else
      FindInfo.m_nCurrentLine = FindInfo.m_nTotalLines - 1;

    FindInfo.m_bAgain = false;

    delete FindInfo.m_regexp;    // get rid of earlier regular expression
    FindInfo.m_regexp = NULL;

    // compile regular expression if needed
    if (FindInfo.m_bRegexp )
      FindInfo.m_regexp = new t_regexp (FindInfo.m_strFindStringList.GetHead (),
      (FindInfo.m_bMatchCase ? 0 :  PCRE_CASELESS) | (FindInfo.m_bUTF8 ? PCRE_UTF8 : 0));

    }   // end of not repeating the last find
  else
    {
    // doing a "find again" - step past the line we were on

    if (FindInfo.m_bForwards)
      FindInfo.m_nCurrentLine++;
    else
      FindInfo.m_nCurrentLine--;

    // re-initiate the search - this will set up the POSITION parameter, if it wants to

    (*pInitiateSearch) (pObject, FindInfo);

    }    // end of "find again"

  // if we have shuffled off the end of the buffer, say "not found"
  if (FindInfo.m_nCurrentLine < 0 || 
      FindInfo.m_nCurrentLine >= FindInfo.m_nTotalLines)
    {
    // reset line pointer to a reasonable figure
    if (FindInfo.m_bForwards)
       FindInfo.m_nCurrentLine = 0;
    else
      FindInfo.m_nCurrentLine = FindInfo.m_nTotalLines - 1;
    return NotFound (FindInfo);
    }

  // re-initiate the search - this will set up the POSITION parameter, if it wants to

//  (*pInitiateSearch) (pObject, FindInfo);

// loop until end of text, or text found
  
CString strLine;
CString strFindString = FindInfo.m_strFindStringList.GetHead ();
CString strStatus = TFormat ("Finding: %s", (LPCTSTR) FindInfo.m_strFindStringList.GetHead ());

  Frame.SetStatusMessageNow (strStatus);

// find how many more lines we have to search

  long nToGo;
  
  if (FindInfo.m_bForwards)
    nToGo = FindInfo.m_nTotalLines -  FindInfo.m_nCurrentLine;    // from here to end
  else
    nToGo = FindInfo.m_nCurrentLine;    // from here to start

  if (nToGo > 500)
    {
    FindInfo.m_pProgressDlg = new CProgressDlg;
    FindInfo.m_pProgressDlg->Create ();
    FindInfo.m_pProgressDlg->SetStatus (strStatus);
    FindInfo.m_pProgressDlg->SetRange (0, FindInfo.m_nTotalLines);     
    FindInfo.m_pProgressDlg->SetWindowText (Translate ("Finding..."));                              
    }   // end of having enough lines to warrant a progress bar

// if case-insensitive search wanted, force "text to find" to lower case

  if (!FindInfo.m_bMatchCase)
    strFindString.MakeLower ();

  try
    {
    int iMilestone = 0;

    while (true)
      {

  // get the next line, return "not found" if end of text

      if ((*pGetNextLine) (pObject, FindInfo, strLine))
        return NotFound (FindInfo);

      iMilestone++;

  // update progress control

      if (FindInfo.m_pProgressDlg && iMilestone > 31)   // every 31 lines
        {
        iMilestone = 0;
        if (FindInfo.m_bForwards)
          FindInfo.m_pProgressDlg->SetPos (FindInfo.m_nCurrentLine); 
        else
          FindInfo.m_pProgressDlg->SetPos (FindInfo.m_nTotalLines - FindInfo.m_nCurrentLine); 

        if(FindInfo.m_pProgressDlg->CheckCancelButton())
          {
          WrapUpFind (FindInfo);
          FindInfo.m_iStartColumn = -1;
          return false;
          }
        } // end of having a progress control

  // if text found on this line, then we have done it!

      if (FindInfo.m_bRegexp )
        {

        if (FindInfo.m_regexp->Execute (strLine))
          {
          // work out what column it must have been at
          FindInfo.m_regexp->GetWildcardOffsets (0, FindInfo.m_iStartColumn, FindInfo.m_iEndColumn);
          WrapUpFind (FindInfo);
          return true;    // found it!
          }
        } // end of regular expression
      else
        { // not regular expression 
        // if case-insensitive search wanted, force this line to lower case
        if (!FindInfo.m_bMatchCase)
          strLine.MakeLower ();
        if ((FindInfo.m_iStartColumn = strLine.Find (strFindString)) != -1)
          {
          // work out ending column
          FindInfo.m_iEndColumn = FindInfo.m_iStartColumn + 
                          FindInfo.m_strFindStringList.GetHead ().GetLength ();
          WrapUpFind (FindInfo);
          return true;    // found it!
          } // end of found 
        } // end of not regular expression

  // keep track of line count

      if (FindInfo.m_bForwards)
        FindInfo.m_nCurrentLine++;
      else
        FindInfo.m_nCurrentLine--;

      }   // end of looping through each line

    } // end of try

    catch(CException* e)
      {
      e->ReportError ();
      e->Delete ();
      return NotFound (FindInfo);
      }

  } // end of FindRoutine