Esempio n. 1
0
        private void Preview()
        {
            if (sepBox == null)
            {
                sepBox = new HBox();
                Widget sep = rootTerm.SeparatorWidget();
                if (sep != null)
                {
                    sep.Show();
                    sepBox.PackStart(sep, false, false, 0);
                }
                rootBox.Add(sepBox);
            }

            help.Hide();
            sepBox.Show();
        }
Esempio n. 2
0
        public List <Literal> InsertTerm(Tag [] tags, Term parent, Literal after)
        {
            int position;

            if (after != null)
            {
                position = WidgetPosition(after.Widget) + 1;
            }
            else
            {
                position = Children.Length - 1;
            }

            List <Literal> added = new List <Literal>();

            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);
        }
		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.TermAdded  += HandleTermAdded;
				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;
		}