Esempio n. 1
0
        public CodeRecognition(MainWindow window)
        {
            ///<summery>
            ///iPointer[0] -> Header section pointer
            ///iPointer[1] -> Class section pointer
            ///iPointer[2] -> Global function pointer
            ///</summery>
            ///
            iPointer    = new int[4];
            iPointer[0] = 0;
            iPointer[1] = 0;
            iPointer[2] = 0;

            location = new cLocation[4] {
                new cLocation(1, 1, 0),
                new cLocation(1, 1, 0),
                new cLocation(1, 1, 0),
                new cLocation(1, 1, 0)
            };

            Code  = window.textEditor;
            Caret = window.textEditor.TextArea.Caret;

            XmlDocument doc = new XmlDocument();

#if debug
            doc.Load(@"..\..\Resource\MainResource.xml");
#else
            doc.Load(@"Resource\MainResource.xml");
#endif

            this.window = window;

            XmlNodeList nodeList = doc.GetElementsByTagName("Command");

            cmd = new string[nodeList.Count];

            int i = 0;
            foreach (XmlNode node in nodeList)
            {
                cmd[i] = node.Attributes["value"].Value;
                i++;
            }

            //CPPGrammar.InitializeDefaultGrammer();
            rec = new SpeechRecognitionEngine(new CultureInfo("en-US"));
            rec.SetInputToDefaultAudioDevice();
            rec.LoadGrammarAsync(new Grammar(new GrammarBuilder(new Choices(cmd))));
            rec.LoadGrammarAsync(new CPPGrammar().GetGrammar);


            //All event handler
            rec.SpeechRecognized +=
                new EventHandler <SpeechRecognizedEventArgs>(Rec_Recognised);
            rec.SpeechDetected +=
                new EventHandler <SpeechDetectedEventArgs>(Rec_Detected);
            rec.RecognizeCompleted +=
                new EventHandler <RecognizeCompletedEventArgs>(Rec_Completed);
            rec.AudioLevelUpdated +=
                new EventHandler <AudioLevelUpdatedEventArgs>(Rec_AudioUpdate);
        }
        private string GetId(ICSharpCode.AvalonEdit.Document.IDocument doc, ICSharpCode.AvalonEdit.Editing.Caret caret)
        {
            string amlQuery;
            var    settings = new System.Xml.XmlReaderSettings();

            if (this.Helper == null)
            {
                amlQuery = doc.Text;
            }
            else
            {
                amlQuery = this.Helper.GetCurrentQuery(doc.Text, caret.Offset);
                var loc = doc.GetLocation(doc.Text.IndexOf(amlQuery));
                settings.LineNumberOffset = loc.Line;
            }

            string lastItemId = null;
            string lastId     = null;
            var    elems      = new Stack <string>();


            using (var reader = new System.IO.StringReader(amlQuery))
            {
                using (var xmlReader = System.Xml.XmlReader.Create(reader))
                {
                    var lineInfo = (System.Xml.IXmlLineInfo)xmlReader;
                    while (xmlReader.Read())
                    {
                        switch (xmlReader.NodeType)
                        {
                        case System.Xml.XmlNodeType.Element:
                        case System.Xml.XmlNodeType.EndElement:
                            if (lineInfo.LineNumber > this.editor.TextArea.Caret.Line ||
                                (lineInfo.LineNumber == this.editor.TextArea.Caret.Line && (lineInfo.LinePosition - 1) > this.editor.TextArea.Caret.Column))
                            {
                                return(lastId ?? lastItemId);
                            }
                            break;
                        }

                        switch (xmlReader.NodeType)
                        {
                        case System.Xml.XmlNodeType.Element:
                            switch (xmlReader.LocalName)
                            {
                            case "Item":
                                lastItemId = xmlReader.GetAttribute("id");
                                lastId     = xmlReader.GetAttribute("id");
                                break;
                            }
                            if (!xmlReader.IsEmptyElement)
                            {
                                elems.Push(xmlReader.LocalName);
                            }
                            break;

                        case System.Xml.XmlNodeType.Text:
                            if (xmlReader.Value.IsGuid())
                            {
                                switch (elems.Peek())
                                {
                                case "id":
                                    lastItemId = xmlReader.Value;
                                    break;

                                default:
                                    lastId = xmlReader.Value;
                                    break;
                                }
                            }
                            break;

                        case System.Xml.XmlNodeType.EndElement:
                            lastId = null;
                            if (elems.Pop() == "Item")
                            {
                                lastItemId = null;
                            }
                            break;
                        }
                    }
                }
            }

            return(null);
        }