Esempio n. 1
0
        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);
                    }
                }
            }
        }