/// ------------------------------------------------------------------------------------
        /// <summary>
        /// Build the PaWordListGrid for searching.
        /// </summary>
        /// ------------------------------------------------------------------------------------
        private void Initialize(string eticWrds, string cvWrds, string glossWrds)
        {
            m_recCache = _prj.RecordCache;
            m_cache    = new WordListCache();

            AddWords(eticWrds, cvWrds, glossWrds);

            // Create grid
            m_grid = new PaWordListGrid(m_cache, GetType(), false);

            // Make all the grid's rows & columns visible and thus searchable
            for (int row = 0; row < m_grid.Rows.Count; row++)
            {
                m_grid.Rows[row].Visible = true;
                for (int col = 0; col < m_grid.Columns.Count; col++)
                {
                    m_grid.Columns[col].Visible = true;
                }
            }

            // Get rid of columns we don't care about for the tests.
            for (int i = m_grid.ColumnCount - 1; i >= 0; i--)
            {
                if (!"Phonetic CVPattern Gloss".Contains(m_grid.Columns[i].Name))
                {
                    m_grid.Columns.Remove(m_grid.Columns[i]);
                }
            }

            // Set the CVPattern & Gloss column Display Indexes to the correct order
            // based on the columnsToSearch below.
            m_grid.Columns["Phonetic"].DisplayIndex  = 0;
            m_grid.Columns["CVPattern"].DisplayIndex = 1;
            m_grid.Columns["Gloss"].DisplayIndex     = 2;

            SetField(typeof(FindInfo), "s_reverseFind", false);
            FindInfo.Grid = m_grid;

            // Add columns to search
            var columnsToSearch = new List <FindDlgColItem>();

            columnsToSearch.Add(new FindDlgColItem(m_grid.Columns["Phonetic"].Index, 0, "Phonetic", "Phonetic"));
            columnsToSearch.Add(new FindDlgColItem(m_grid.Columns["CVPattern"].Index, 1, "CV Pattern", "CVPattern"));
            columnsToSearch.Add(new FindDlgColItem(m_grid.Columns["Gloss"].Index, 2, "Gloss", "Gloss"));
            FindInfo.ColumnsToSearch = columnsToSearch.ToArray();

            m_findDlg = new FindDlg(m_grid);
            ResetStartCell();
        }
Beispiel #2
0
        public bool Find(FindData Data)
        {
            FindDlg Dlg = new FindDlg();

            //If text is selected on a single line, then use that for the new Find text.
            string strOriginalFindText = Data.Text;
            string strSelectedText;
            if (GetSingleLineSelectedText(out strSelectedText))
            {
                Data.Text = strSelectedText;
            }

            if (Dlg.Execute(this, Data))
            {
                if (Data.SearchUp)
                    return FindPrevious(Data);
                else
                    return FindNext(Data);
            }
            else
            {
                //Reset the Find text if the user cancelled.
                Data.Text = strOriginalFindText;
            }

            return false;
        }