Ejemplo n.º 1
0
        void Update()
        {
            // Clear the last root term
            RootTerm = null;

            if (ParensValid() && ConstructQuery(null, 0, entry.Text))
            {
                if (RootTerm != null)
                {
                    //Log.DebugFormat("rootTerm = {0}", RootTerm);
                    if (!(RootTerm is AndTerm))
                    {
                        // A little hacky, here to make sure the root term is a AndTerm which will
                        // ensure we handle the Hidden tag properly
                        var root_parent = new AndTerm(null, null);
                        RootTerm.Parent = root_parent;
                        RootTerm        = root_parent;
                    }

                    //Log.DebugFormat("rootTerm = {0}", RootTerm);
                    if (!(RootTerm is AndTerm))
                    {
                        // A little hacky, here to make sure the root term is a AndTerm which will
                        // ensure we handle the Hidden tag properly
                        var root_parent = new AndTerm(null, null);
                        RootTerm.Parent = root_parent;
                        RootTerm        = root_parent;
                    }
                    //Log.DebugFormat ("condition = {0}", RootTerm.SqlCondition ());
                    query.TagTerm = new ConditionWrapper(RootTerm.SqlCondition());
                }
                else
                {
                    query.TagTerm = null;
                    //Log.Debug ("root term is null");
                }
            }
        }
Ejemplo n.º 2
0
        private void Update()
        {
            // Clear the last root term
            root_term = null;

            if (ParensValid() && ConstructQuery(null, 0, entry.Text))
            {
                if (RootTerm != null)
                {
                    //Console.WriteLine("rootTerm = {0}", RootTerm);
                    if (!(RootTerm is AndTerm))
                    {
                        // A little hacky, here to make sure the root term is a AndTerm which will
                        // ensure we handle the Hidden tag properly
                        AndTerm root_parent = new AndTerm(null, null);
                        RootTerm.Parent = root_parent;
                        root_term       = root_parent;
                    }

                    //Console.WriteLine("rootTerm = {0}", RootTerm);
                    if (!(RootTerm is AndTerm))
                    {
                        // A little hacky, here to make sure the root term is a AndTerm which will
                        // ensure we handle the Hidden tag properly
                        AndTerm root_parent = new AndTerm(null, null);
                        RootTerm.Parent = root_parent;
                        root_term       = root_parent;
                    }
                    //Console.WriteLine ("condition = {0}", RootTerm.SqlCondition ());
                    query.ExtraCondition = RootTerm.SqlCondition();
                }
                else
                {
                    query.ExtraCondition = null;
                    //Console.WriteLine ("root term is null");
                }
            }
        }
Ejemplo n.º 3
0
        public ArrayList InsertTerm(Tag [] tags, Term parent, Literal after)
        {
            int position;
            if (after != null)
                position = WidgetPosition (after.Widget) + 1;
            else
                position = Children.Length - 1;

            ArrayList added = new ArrayList ();

            foreach (Tag tag in tags) {
                //Console.WriteLine ("Adding tag {0}", tag.Name);

                // Don't put a tag into a Term twice
                if (parent != Root && (parent.FindByTag (tag, true)).Count > 0)
                    continue;

                if (parent.Count > 0) {
                    Widget sep = parent.SeparatorWidget ();

                    InsertWidget (position, sep);
                    position++;
                }

                // Encapsulate new OR terms within a new AND term of which they are the
                // only member, so later other terms can be AND'd with them
                //
                // TODO should really see what type of term the parent is, and
                // encapsulate this term in a term of the opposite type. This will
                // allow the query system to be expanded to work for multiple levels much easier.
                if (parent == rootTerm) {
                    parent = new AndTerm (rootTerm, after);
                    after = null;
                }

                Literal term  = new Literal (parent, tag, after);
                term.TagsAdded  += HandleTagsAdded;
                term.LiteralsMoved += HandleLiteralsMoved;
                term.AttachTag  += HandleAttachTag;
                term.NegatedToggled += HandleNegated;
                term.Removing  += HandleRemoving;
                term.Removed  += HandleRemoved;
                term.RequireTag  += Require;
                term.UnRequireTag += UnRequire;

                added.Add (term);

                // Insert this widget into the appropriate place in the hbox
                InsertWidget (position, term.Widget);
            }

            UpdateQuery ();

            return added;
        }
Ejemplo n.º 4
0
 public void TestFixtureTearDown()
 {
     andTerm = null;
 }
Ejemplo n.º 5
0
 public void TestFixtureSetUp()
 {
     andTerm = new AndTerm (null, null);
 }