Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        public void ExecuteQuery(string name)
        {
            FreeQuery fq = (from f in _freeQueries where f.Name == name select f).FirstOrDefault();

            if (fq != null)
            {
                ExecuteQuery(fq);
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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();
            }
        }
Ejemplo n.º 9
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 10
0
 private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
 {
     _activeQuery = comboBox1.SelectedItem as FreeQuery;
     buildActiveQueryTable();
     checkButtonStates();
 }
Ejemplo n.º 11
0
 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;
 }
Ejemplo n.º 12
0
        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;
        }
Ejemplo n.º 13
0
        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();
            }
        }
Ejemplo n.º 14
0
 private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
 {
     _activeQuery = comboBox1.SelectedItem as FreeQuery;
     buildActiveQueryTable();
     checkButtonStates();
 }
Ejemplo n.º 15
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 16
0
        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);
        }