Beispiel #1
0
        /// <summary>
        /// A graph object has been selected. Make the (middle part of) UI relevant to it
        /// </summary>
        /// <param name="objectName">Name of the object to be selected.</param>
        public void Select(string objectName)
        {
            ctxBox.Foreach(c => ctxBox.Remove(c));

            Arc arc = graphView.DirectedGraph.Arcs.Find(a => a.Name == objectName);

            Models.Node node = graphView.DirectedGraph.Nodes.Find(n => n.Name == objectName);
            if (node != null)
            {
                //ctxLabel.Text = "State";
                ctxFrame.Label = $"{node.Name} settings";
                // Need to detach the event handlers before changing the entries.
                // Otherwise a changed event will fire which we don't really want.
                nameEntry.Changed -= OnNameChanged;
                // Setting an entry's text to null doesn't seem to have an effect.
                nameEntry.Text     = objectName ?? "";
                nameEntry.Changed += OnNameChanged;
                if (nodeDescriptions.ContainsKey(objectName))
                {
                    descEntry.Changed -= OnDescriptionChanged;
                    descEntry.Text     = nodeDescriptions[objectName] ?? "";
                    descEntry.Changed += OnDescriptionChanged;
                }
                colourChooser.ColorSet -= OnColourChanged;
#if NETFRAMEWORK
                colourChooser.Color = Utility.Colour.ToGdk(node.Colour);
#else
                colourChooser.Rgba = node.Colour.ToRGBA();
#endif
                colourChooser.ColorSet += OnColourChanged;

                ctxBox.PackStart(nodeSelWdgt, true, true, 0);
            }
            else if (arc != null)
            {
                ctxFrame.Label  = "Transition from " + arc.SourceName + " to " + arc.DestinationName;
                RuleList.Text   = String.Join(Environment.NewLine, rules[arc.Name].ToArray());
                ActionList.Text = String.Join(Environment.NewLine, actions[arc.Name].ToArray());
                ctxBox.PackStart(arcSelWdgt, true, true, 0);
            }
            else
            {
                //ctxLabel.Text = "Information";
                //ctxBox.PackStart(infoWdgt, true, true, 0);
                ctxFrame.Label = "";
            }
            ctxBox.ShowAll();
        }
Beispiel #2
0
 /// <summary>
 /// Callback for the 'add node' context menu option.
 /// </summary>
 /// <param name="sender">Sender object.</param>
 /// <param name="args">Event data.</param>
 private void OnAddNode(object sender, EventArgs args)
 {
     try
     {
         // todo: set location to context menu location
         var node = new Models.Node {
             Name = graphView.DirectedGraph.NextNodeID()
         };
         StateNode newNode = new StateNode(node);
         AddNode?.Invoke(this, new AddNodeEventArgs(newNode));
     }
     catch (Exception err)
     {
         ShowError(err);
     }
 }
Beispiel #3
0
Datei: Trie.cs Projekt: mjin21/AH
        public void Insert(string word)
        {
            Node current = Root;
            for (int level = 0; level < word.Length; level++)
            {
                Dictionary<char, Node> children = current.Children;
                char ch = word[level];

                if (children.ContainsKey(ch))
                    current = children[ch];
                else
                {
                    Node temp = new Node(ch);
                    children.Add(ch, temp);
                    current = temp;
                }
            }

            current.IsEnd = true;
        }
Beispiel #4
0
Datei: Trie.cs Projekt: mjin21/AH
 public Trie()
 {
     Root = new Node((char)0);
 }