Exemple #1
0
 public void CopyAIObject <T>(string title, T selected, AITable <T> aitable, BrightIdeasSoftware.ObjectListView olv)
     where T : class, IAIObject
 {
     if (selected == null)
     {
         return;
     }
     InputBox.InputResult res = InputBox.Show(title, "Enter name:", selected.Name);
     if (res.ReturnCode == DialogResult.OK)
     {
         T newai = selected.Copy(nextID(), res.Text) as T;
         aitable.Add(newai);
         olv.BeginUpdate();
         olv.AddObject(newai);
         olv.EndUpdate();
         olv.SelectedObject = newai;
         olv.EnsureVisible();
     }
 }
Exemple #2
0
        public void label_logmeter_TextChanged(object sender, EventArgs e)
        {
            if (
                objectListView_data_table1.Focused
                )
            {
                return;
            }
            item_selection_done_by_code = true;

            // remove line segment of interest and point of interest if any
            the_parent_form.show_point_of_interest(new GMap.NET.PointLatLng(0.0, 0.0));
            the_parent_form.show_line_of_interest_segment(-1.0, -1.0);

            double logmeter = 0.0;
            double logmeter_0, logmeter_0_loaded, logmeter_1, logmeter_1_loaded;
            int    index_of_first_selected_item = -1;
            int    index_of_last_selected_item = -1;

            try
            {
                logmeter = Convert.ToDouble(label_logmeter.Text);
            }
            catch
            {
                return;
            }
            objectListView_data_table1.SelectedIndices.Clear();
            for (int i = 0; i < list_data_table.Count; i++)
            {
                logmeter_0 = logmeter_0_loaded = utility.get_double(list_data_table[i]["logmeter_0"], -10000.0);
                logmeter_1 = logmeter_1_loaded = utility.get_double(list_data_table[i]["logmeter_1"], -10000.0);

                // swap if necessary so the processing below can be simple
                // this is the anti-log case from data in old database
                if (
                    (logmeter_1_loaded > -10000.0)
                    &&
                    (logmeter_0_loaded > logmeter_1_loaded)
                    )
                {
                    logmeter_0 = logmeter_1_loaded;
                    logmeter_1 = logmeter_0_loaded;
                }

                if (
                    ((logmeter_0 <= logmeter) && (logmeter_1 >= logmeter))
                    ||
                    ((logmeter_1 < 0) && (logmeter_0 - 30 <= logmeter) && (logmeter_0 + 30 >= logmeter))
                    )
                {
                    if (index_of_first_selected_item == -1)
                    {
                        index_of_first_selected_item = i;
                    }
                    index_of_last_selected_item = i;
//					objectListView_data_table1.SelectedIndices.Add(i);
                    objectListView_data_table1.SelectObject(list_data_table[i], false);
                }
            }

            // try to leave one unselected row on top
            if (index_of_first_selected_item < list_data_table.Count)
            {
                if (index_of_first_selected_item > 0)
                {
                    try
                    {
                        objectListView_data_table1.EnsureVisible(index_of_first_selected_item - 1);
                    }
                    catch { }
                }
                else if (index_of_first_selected_item >= 0)
                {
                    try
                    {
                        objectListView_data_table1.EnsureVisible(index_of_first_selected_item);
                    }
                    catch { }
                }
            }

            // try to leave one unselected row at the bottom
            if (index_of_last_selected_item >= 0)
            {
                if (index_of_last_selected_item < list_data_table.Count - 1)
                {
                    try
                    {
                        objectListView_data_table1.EnsureVisible(index_of_last_selected_item + 1);
                    }
                    catch { }
                }
                else if (index_of_last_selected_item < list_data_table.Count)
                {
                    try
                    {
                        objectListView_data_table1.EnsureVisible(index_of_last_selected_item);
                    }
                    catch { }
                }
            }
            item_selection_done_by_code = false;
        }