public set_values ( int>.Dictionary |
||
values | int>.Dictionary | |
finished | bool | |
snooped_all_rows | bool | |
return | void |
private void add_values(snoop_around_form snoop, ref bool stop) { logger.Debug("entered test_snoop_form.add_values"); while (!stop) { Thread.Sleep(3000); if (stop) break; Dictionary<string, int> v; switch (add_snoop_idx++) { case 0: v = v0; break; case 1: v = v1; break; default: v = v2; break; } bool all_done = add_snoop_idx >= 3; snoop.set_values(v, all_done, all_done); if (all_done) break; } logger.Debug("exited test_snoop_form.add_values"); }
private void on_snoop(snoop_around_form self, ref bool keep_running) { var info = this.info(self); if (info.snoop_selection.Count > 0) { // in this case, user selected at least something, // and then applied the selection - thus, no re-snooping self.reuse_last_values(); return; } // we cannot be visible if users doesn't have any rows int sel = view_.sel_row_idx; if (sel <= 0) sel = 0; if ( info.snoop_sel >= 0) if (Math.Abs(info.snoop_sel - sel) <= app.inst.reuse_snoop_surrounding) { // we already snooped near by, reuse that self.reuse_last_values(); return; } // here, I know for sure I need to (re)snoop int all = view_.item_count; bool snoop_all = all <= app.inst.snoop_all_if_entries_less_than; int min = 0, max = all; if (!snoop_all) { var surrounding = util.surrounding(sel, app.inst.snoop_surrounding_entries, 0, all); min = surrounding.Item1; max = surrounding.Item2; } var type = info_key(self); int snoop_idx = 0; Dictionary< string, int> values = new Dictionary<string, int>(); // update int snoop_update_ui_step = (max - min) / app.inst.snoop_update_ui_times; for (int idx = min; idx < max; ++idx) { var i = view_.item_at(idx) as filter.match; var cur_value = i.line.part(type); if ( !values.ContainsKey(cur_value)) values.Add(cur_value, 0); ++values[cur_value]; if (++snoop_idx % snoop_update_ui_step == 0) if (keep_running) // ... set to a copy, since we're modifying this one self.set_values(values.ToDictionary(x => x.Key, x => x.Value), false, false); else break; } if (keep_running) { self.set_values(values, true, snoop_all); info.snoop_sel = sel; } }