public void messageLoop() { while (true) { //try to connect to OpenCOVER if (!COVER.Instance.isConnected()) { string host = Globals.Ribbons.Ribbon1.host.Text; int port = Convert.ToInt32(Globals.Ribbons.Ribbon1.port.Text); if (COVER.Instance.ConnectToOpenCOVER(host, port)) { sendApplicationType(); Globals.Ribbons.Ribbon1.connected.Checked = true; } else { Thread.Sleep(3000); Globals.Ribbons.Ribbon1.connected.Checked = false; } } COVER.Instance.checkForMessages(); while (COVER.Instance.messageQueue.Count > 0) { COVERMessage m = COVER.Instance.messageQueue.Dequeue(); if ((COVER.MessageTypes)m.messageType == COVER.MessageTypes.StringMessage) { string input = m.message.readString(); if (input.StartsWith("save ")) { // FIXME hard coded filename word.save("newdoc"); sendStringMessage("OK"); System.Console.Error.Flush(); } else if (input.StartsWith("gotoPage ")) { string[] parameters = input.Split(' '); bool result; if (parameters.Length > 2) { result = word.gotoPage(int.Parse(parameters[1]), int.Parse(parameters[2])); } else { result = word.gotoPage(int.Parse(parameters[1])); } if (result) { sendStringMessage("OK"); } else { sendStringMessage("FAIL"); } } else if (input == "createMinutes") { word.createMinutes(); sendStringMessage("OK"); System.Console.Error.Flush(); } else if (input.StartsWith("addPart ")) { string[] parts = input.Split(' '); input = input.Remove(0, parts[0].Length + parts[1].Length + 2); if (parts[1].Trim() == "snapshot") { word.addPart(new Word.DocumentPart(parts[1].Trim(), input, Word.DocumentPartType.Picture)); sendStringMessage("OK"); System.Console.Error.Flush(); } else { word.addPart(parts[1].Trim(), input); sendStringMessage("OK"); System.Console.Error.Flush(); } } else if (input.StartsWith("setPart ")) { string[] parts = input.Split(' '); input = input.Remove(0, parts[0].Length + parts[1].Length + 2); word.setPart(parts[1].Trim(), input); sendStringMessage("OK"); System.Console.Error.Flush(); } } else if ((COVER.MessageTypes)m.messageType == COVER.MessageTypes.MSG_PNGSnapshot) { int numBytes = m.message.readInt(); string fn = System.IO.Path.GetTempFileName(); fn += (".png"); Byte[] bytes = m.message.readBytes(numBytes); ByteArrayToFile(fn, bytes); string transform = m.message.readString(); addImage(fn, transform); } } } }