public filter_item(ui_filter filter) { filter_ = filter; }
public void update_filter_row(string id, string filter_str, bool apply_to_existing_lines) { bool updated = false; bool was_selected = false; string unique_id = new raw_filter_row(filter_str, apply_to_existing_lines).unique_id; for (int idx = 0; idx < filterCtrl.GetItemCount(); ++idx) { var i = filterCtrl.GetItem(idx).RowObject as filter_item; bool is_same = i.filter_id == id; if ( !is_same) // in this case, check if we have an existing filter exactly the same, but with a different color is_same = unique_id == i.unique_id; if (is_same) { i.text = raw_filter_row.merge_lines(i.text, filter_str); was_selected = idx == filterCtrl.SelectedIndex; filterCtrl.RefreshObject(i); updated = true; break; } } if (!updated) { // new filter ui_filter new_ui = new ui_filter {enabled = true, dimmed = false, text = filter_str, apply_to_existing_lines = apply_to_existing_lines}; filter_item new_ = new filter_item( new_ui); view_.filters.Add( new_ui ); ++ignore_change_; filterCtrl.AddObject(new_); --ignore_change_; } // if editing, need to update that as well if (was_selected) { ++ignore_change_; curFilterCtrl.Text = filter_str; --ignore_change_; } on_save(); ui_to_view(view_idx_); if (updated) do_refresh(); else on_rerun_view(view_idx_); }
private void addFilter_Click(object sender, EventArgs e) { if (view_ == null) { Debug.Assert(false); return; } ui_filter new_ui = new ui_filter {enabled = true, dimmed = false, text = "", apply_to_existing_lines = false}; filter_item new_ = new filter_item( new_ui); view_.filters.Add( new_ui ); ++ignore_change_; filterCtrl.AddObject(new_); filterCtrl.SelectedIndices.Clear(); filterCtrl.SelectObject(new_); curFilterCtrl.Text = ""; --ignore_change_; on_save(); util.postpone(() => { curFilterCtrl.Focus(); curFilterCtrl.SelectionStart = curFilterCtrl.TextLength; }, 10); }