public WordCollection(Word.Words sentence, ErrorList errors, int sentenceNumber) { this.sentence = sentence; this.errorList = errors; this.sentenceNumber = sentenceNumber; this.wordUnderline = new Word.WdUnderline[sentence.Count]; this.wordColor = new Word.WdColor[sentence.Count]; markWordsIfError(); }
/** * This is the main function that checks for grammar errors. **/ public void insertText() { //Test lines to parse //Bráðum koma jólin. Eða er það ekki? Jú víst. //Hún er góði kennarans. Hann er stór strákar. Hún er góð kennari. Hún er góður. Hún hljóp í gegnum skóginum. Hann borðuðu mikið. //Check if there is a selected text to parse, if not then we take all document. Word.Selection currentSelection = Application.Selection; Sentences sentencesToParse; if (!currentSelection.Text.Equals("\r")) { sentencesToParse = currentSelection.Sentences; } else { sentencesToParse = Doc.Sentences; } //For each sentance we run it through iceparser and keep track of errors. for (int sentenceNumber = 1; sentenceNumber < sentencesToParse.Count + 1; sentenceNumber++) { string textToParse = sentencesToParse[sentenceNumber].Text; //Setup the process with the ProcessStartInfo class. ProcessStartInfo start = new ProcessStartInfo(); //TODO: Athuga afhverju environment stillingar koma ekki inn. (java finnst ekki nema ég gefi fullan path) We need another way to start this. start.FileName = @"C:\Program Files\Java\jre6\bin\javaw.exe"; // Specify exe file. start.Arguments = "-jar C:\\malvinnsla\\Malgrylan\\GrylanGit\\Grylan\\build\\jar\\Gryla.jar \"" + textToParse + "\""; start.UseShellExecute = false; start.RedirectStandardOutput = true; //Variable that gets the result. string result = ""; // Start the process. using (Process process = Process.Start(start)) { // Read in all the text from the process with the StreamReader. using (StreamReader reader = process.StandardOutput) { result = reader.ReadToEnd(); ////Print out the error list. (for debuging purpose). //System.Windows.Forms.MessageBox.Show("Villulisti:\n" + result); } } ////TODO: Ask the socket and get the reslt. //ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9090); //server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //string result = ""; //try //{ // server.Connect(ipep); // ns = new NetworkStream(server); // sr = new StreamReader(ns,Encoding.UTF8); // sw = new StreamWriter(ns, Encoding.UTF8); // sw.AutoFlush = true; // textToParse = "1" + textToParse;//We use 1 at start to say that this is a request. 0 shuts down the socket server. // //sw.WriteLine(Encoding.UTF8.GetBytes(textToParse)); // sw.WriteLine(textToParse); // //sw.Flush(); // int hvadaStatusErNuna = 0; // //if (sr.Peek() >= 0) // //{ // result = sr.ReadLine(); // //} // //result = sr.ReadToEnd().ToString(); // if (sw != null) // sw.Close(); // if (sr != null) // sr.Close(); // if (ns != null) // ns.Close(); // if (server.Connected == true) // { // server.Shutdown(SocketShutdown.Both); // server.Close(); // } //} //catch (SocketException se) //{ // System.Windows.Forms.MessageBox.Show("Unable to connect to socket:\n" + se.ToString()); // return; //} //ErrorList collects all WordErrors with its parameters (number of word, the word, rulenumber and suggestions) ErrorList errorList = new ErrorList(); if (!result.Equals("") && !result.StartsWith("ok")) { //For each line in result we create an error and put it on the ErrorList. errorList.add(parseResult(result)); } //Create the sentence class instance, Values are: an array of words, List of errors, number of the sentance. WordCollection sentence = new WordCollection(sentencesToParse[sentenceNumber].Words, errorList, sentenceNumber); sentences.Add(sentence); foreach (WordError we in errorList.getErrorList()) { allErrors.Add(we); } } displayErrors(allErrors); }