public QueryBuilderForm(Framework.Interfaces.IPlugin owner, Framework.Interfaces.ICore core) : base(owner, core) { InitializeComponent(); _queriesFileName = System.IO.Path.Combine(new string[] { core.PluginDataPath, "FreeQueries.xml" }); try { if (System.IO.File.Exists(_queriesFileName)) { XmlDocument doc = new XmlDocument(); doc.Load(_queriesFileName); XmlNodeList nl = doc.SelectNodes("/queries/query"); foreach (XmlNode n in nl) { FreeQuery fq = new FreeQuery(this, n); _freeQueries.Add(fq); comboBox1.Items.Add(fq); } } } catch { } SelectedLanguageChanged(this, EventArgs.Empty); }
private void button1_Click(object sender, EventArgs e) { FreeQuery fq = _activeQuery; if (fq != null) { comboBox1.Items.Remove(fq); _freeQueries.Remove(fq); Framework.Interfaces.IPluginUIMainWindow main = (from Framework.Interfaces.IPluginUIMainWindow a in Core.GetPlugin(Framework.PluginType.UIMainWindow) select a).FirstOrDefault(); main.RemoveAction(OwnerPlugin, "Query builder", fq.Name); for (int r = 0; r < fq.Rows.Count; r++) { for (int c = 0; c < fq.Rows[r].Columns.Count; c++) { if (fq.Rows[r].Columns[c].QExpression != null) { panel2.Controls.Remove(fq.Rows[r].Columns[c].QExpression); fq.Rows[r].Columns[c].QExpression.Dispose(); fq.Rows[r].Columns[c].QExpression = null; } if (fq.Rows[r].Columns[c].QOperator != null) { panel2.Controls.Remove(fq.Rows[r].Columns[c].QOperator); fq.Rows[r].Columns[c].QOperator.Dispose(); fq.Rows[r].Columns[c].QOperator = null; } } } comboBox1_SelectedValueChanged(this, EventArgs.Empty); } }
public void ExecuteQuery(string name) { FreeQuery fq = (from f in _freeQueries where f.Name == name select f).FirstOrDefault(); if (fq != null) { ExecuteQuery(fq); } }
public static bool GetQueryResult(FreeQuery fq, Framework.Data.Geocache gc) { //circular check if (gc == _refgc) { if (_processedfq.Contains(fq)) { throw new Exception(Utils.LanguageSupport.Instance.GetTranslation(STR_CIRCULARREFRENCE)); } else { _processedfq.Add(fq); } } //process per column bool result = true; for (int c = 0; c < fq.Rows[0].Columns.Count; c += 2) { if (fq.Rows[0].Columns[c].QExpression != null) { bool colResult = GetQueryResultForColumn(fq, c, gc); if (c == 0) { result = colResult; } else { switch (fq.Rows[0].Columns[c - 1].QOperator.SelectedOperator) { case QueryOperator.Operator.And: result &= colResult; break; case QueryOperator.Operator.Or: result |= colResult; break; case QueryOperator.Operator.End: c = fq.Rows[0].Columns.Count; //exit break; } } } } return(result); }
private void checkButtonStates() { //new / rename if (textBox1.Text.Length == 0) { button2.Enabled = false; button3.Enabled = false; } else { FreeQuery fq = (from f in _freeQueries where f.Name == textBox1.Text select f).FirstOrDefault(); button2.Enabled = (fq == null); button3.Enabled = (fq == null && _activeQuery != null); } button5.Enabled = (_activeQuery != null); button1.Enabled = (_activeQuery != null); }
private void button3_Click(object sender, EventArgs e) { FreeQuery fq = _activeQuery; if (fq != null) { Framework.Interfaces.IPluginUIMainWindow main = (from Framework.Interfaces.IPluginUIMainWindow a in Core.GetPlugin(Framework.PluginType.UIMainWindow) select a).FirstOrDefault(); main.RemoveAction(OwnerPlugin, "Query builder", fq.Name); renameQueryReference(fq.Name, textBox1.Text); fq.Name = textBox1.Text; main.AddAction(OwnerPlugin, "Query builder", fq.Name); typeof(ComboBox).InvokeMember("RefreshItems", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, null, comboBox1, new object[] { }); comboBox1_SelectedValueChanged(this, EventArgs.Empty); } }
public static bool GetQueryResultForColumn(FreeQuery fq, int col, Framework.Data.Geocache gc) { //process per column bool result = true; for (int r = 0; r < fq.Rows.Count; r += 2) { if (col < fq.Rows[r].Columns.Count && fq.Rows[r].Columns[col].QExpression != null) { if (r > 0) { switch (fq.Rows[r - 1].Columns[col].QOperator.SelectedOperator) { case QueryOperator.Operator.And: result &= fq.Rows[r].Columns[col].QExpression.GetExpressionResult(gc); break; case QueryOperator.Operator.Or: result |= fq.Rows[r].Columns[col].QExpression.GetExpressionResult(gc); break; case QueryOperator.Operator.End: //oeps! result = false; break; } } else { result = fq.Rows[r].Columns[col].QExpression.GetExpressionResult(gc); } } else { break; } } return(result); }
public void ExecuteQuery(FreeQuery fq) { if (Core.Geocaches.Count > 0) { _refgc = Core.Geocaches[0] as Framework.Data.Geocache; _processedfq.Clear(); Core.Geocaches.BeginUpdate(); try { foreach (Framework.Data.Geocache gc in Core.Geocaches) { gc.Selected = GetQueryResult(fq, gc); } } catch (Exception e) { MessageBox.Show(e.Message, Utils.LanguageSupport.Instance.GetTranslation(STR_ERROR)); } Core.Geocaches.EndUpdate(); } }
private void button2_Click(object sender, EventArgs e) { FreeQuery fq = new FreeQuery(); fq.Name = textBox1.Text; _freeQueries.Add(fq); Framework.Interfaces.IPluginUIMainWindow main = (from Framework.Interfaces.IPluginUIMainWindow a in Core.GetPlugin(Framework.PluginType.UIMainWindow) select a).FirstOrDefault(); main.AddAction(OwnerPlugin, "Query builder", fq.Name); comboBox1.Items.Add(fq); comboBox1.SelectedItem = fq; for (int r = 0; r < fq.Rows.Count; r++) { for (int c = 0; c < fq.Rows[r].Columns.Count; c++) { if (fq.Rows[r].Columns[c].QOperator != null) { fq.Rows[r].Columns[c].QOperator.SelectedValueChanged += new EventHandler(QOperator_SelectedValueChanged); } } } }
private void comboBox1_SelectedValueChanged(object sender, EventArgs e) { _activeQuery = comboBox1.SelectedItem as FreeQuery; buildActiveQueryTable(); checkButtonStates(); }
public static bool GetQueryResultForColumn(FreeQuery fq, int col, Framework.Data.Geocache gc) { //process per column bool result = true; for (int r = 0; r < fq.Rows.Count; r += 2) { if (col < fq.Rows[r].Columns.Count && fq.Rows[r].Columns[col].QExpression!=null) { if (r > 0) { switch (fq.Rows[r-1].Columns[col].QOperator.SelectedOperator) { case QueryOperator.Operator.And: result &= fq.Rows[r].Columns[col].QExpression.GetExpressionResult(gc); break; case QueryOperator.Operator.Or: result |= fq.Rows[r].Columns[col].QExpression.GetExpressionResult(gc); break; case QueryOperator.Operator.End: //oeps! result = false; break; } } else { result = fq.Rows[r].Columns[col].QExpression.GetExpressionResult(gc); } } else { break; } } return result; }
public static bool GetQueryResult(FreeQuery fq, Framework.Data.Geocache gc) { //circular check if (gc == _refgc) { if (_processedfq.Contains(fq)) { throw new Exception(Utils.LanguageSupport.Instance.GetTranslation(STR_CIRCULARREFRENCE)); } else { _processedfq.Add(fq); } } //process per column bool result = true; for (int c = 0; c < fq.Rows[0].Columns.Count; c += 2) { if (fq.Rows[0].Columns[c].QExpression != null) { bool colResult = GetQueryResultForColumn(fq, c, gc); if (c == 0) { result = colResult; } else { switch (fq.Rows[0].Columns[c - 1].QOperator.SelectedOperator) { case QueryOperator.Operator.And: result &= colResult; break; case QueryOperator.Operator.Or: result |= colResult; break; case QueryOperator.Operator.End: c = fq.Rows[0].Columns.Count; //exit break; } } } } return result; }