Example #1
0
        public KeyAction(string keys, bool keyDown)
        {
            List <INPUT> eventList = new List <INPUT>();
            int          length    = keys.Length;

            for (int index = 0; index < length; index++)
            {
                char character = keys[index];
                if (character.Equals('{'))
                {
                    int endIndex = keys.IndexOf('}', index + 1);
                    if (endIndex > -1)
                    {
                        string keycode = keys.Substring(index + 1, endIndex - index - 1);
                        if (keycodes.ContainsKey(keycode))
                        {
                            eventList.Add(CreateInput(keycodes[keycode], keyDown));
                        }
                        else
                        {
                            TouchPal.Warn("Bad keycode value:" + keycode);
                        }
                        index = endIndex;
                    }
                    else
                    {
                        TouchPal.Warn("Unterminated keycode!");
                        index = length + 1;
                    }
                }
                eventList.Add(CreateInput((ushort)VkKeyScan(character), keyDown));
            }
            keyEvents = eventList.ToArray();
        }
Example #2
0
        private void OnDataReceived(IAsyncResult asyn)
        {
            try
            {
                int iRx = 0;
                iRx = socket.EndReceiveFrom(asyn, ref client);

                char[] chars          = new char[iRx - 1];
                System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
                int charLen           = d.GetChars(dataBuffer,
                                                   0, iRx - 1, chars, 0);
                String szData = new System.String(chars);

                if (szData[0].Equals('*'))
                {
                    if (szData[1].Equals('C'))
                    {
                        string id = szData.Substring(2);
                        if (!id.Equals(clientID))
                        {
                            clientID = id;
                            SendData("A\n");
                            TouchPal.Debug("Client (" + id + ") connected.");
                            manager.ClientConnected();
                        }
                    }
                    if (szData[1].Equals('R') && manager != null)
                    {
                        manager.ResetControls();
                        SendData("A\n");
                    }
                }
                else if (manager != null)
                {
                    string[] controlUpdates = szData.Split(new Char[] { ':' });
                    foreach (string controlUpdate in controlUpdates)
                    {
                        string[] values = controlUpdate.Split(new Char[] { '=' });
                        if (values.Count() == 2)
                        {
                            try
                            {
                                int networkID = Convert.ToInt32(values[0]);
                                manager.UpdateControl(networkID, values[1]);
                                SendData("A\n");
                            }
                            catch (FormatException fe)
                            {
                                TouchPal.Error("Bad network id value (" + values[0] + ") received from client - " + fe.Message);
                            }
                        }
                    }
                }
                WaitForData();
            }
            catch (SocketException se)
            {
                Console.WriteLine(se.Message);
            }
        }
Example #3
0
        public Image getImage(string filename)
        {
            if (filename == null || "".Equals(filename))
            {
                return(null);
            }

            if (imageCache.ContainsKey(filename))
            {
                return(imageCache[filename]);
            }

            Image newImage = null;

            if (File.Exists(filename))
            {
                TouchPal.Debug("Loading Image:" + filename);
                newImage = Image.FromFile(filename);
                imageCache.Add(filename, newImage);
            }
            else
            {
                TouchPal.Warn("Missing Image:" + filename);
            }

            return(newImage);
        }
Example #4
0
        void IAction.Execute(ControlManager manager)
        {
            uint result = SendInput((uint)keyEvents.Length, keyEvents, Marshal.SizeOf(keyEvents[0]));

            if (result != (uint)keyEvents.Length)
            {
                TouchPal.Error("SendInput did not process all key events.");
            }
        }
Example #5
0
        private void OnDataReceived(IAsyncResult asyn)
        {
            try
            {
                int iRx = 0;
                iRx = clientSocket.EndReceive(asyn);

                char[] chars          = new char[iRx + 1];
                System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
                int charLen           = d.GetChars(dataBuffer,
                                                   0, iRx, chars, 0);
                String szData = new System.String(chars);

                if (szData[0].Equals('*'))
                {
                    if (szData[1].Equals('Q'))
                    {
                        clientSocket.Close();
                        WaitForConnect();
                    }
                    else if (szData[1].Equals('R') && manager != null)
                    {
                        manager.ResetControls();
                    }
                }
                else if (manager != null)
                {
                    string[] controlUpdates = szData.Split(new Char[] { ':' });
                    foreach (string controlUpdate in controlUpdates)
                    {
                        string[] values = controlUpdate.Split(new Char[] { '=' });
                        if (values.Count() == 2)
                        {
                            try
                            {
                                int networkID = Convert.ToInt32(values[0]);
                                manager.UpdateControl(networkID, values[1]);
                            }
                            catch (FormatException fe)
                            {
                                TouchPal.Error("Bad network id value (" + values[0] + ") received from client - " + fe.Message);
                            }
                        }
                    }
                }
                WaitForData();
            }
            catch (ObjectDisposedException)
            {
                WaitForConnect();
            }
            catch (SocketException se)
            {
                Console.WriteLine(se.Message);
            }
        }
Example #6
0
        public ControlManager(INetConnection connection, IImageCache imageCache, string[] startActions, string[] resetActions, CockpitXML.CockpitControls controls)
        {
            this.connection = connection;
            this.imageCache = imageCache;

            connection.Manager = this;

            // Load start actions
            if (startActions != null)
            {
                foreach (string action in startActions)
                {
                    this.startActions.Add(ActionFactory.CreateAction(action));
                }
            }

            if (resetActions != null)
            {
                foreach (string action in resetActions)
                {
                    if (action.StartsWith("RS:"))
                    {
                        TouchPal.Error("Reset CommandAction cannot be used as a ResetAction.");
                    }
                    else
                    {
                        this.resetActions.Add(ActionFactory.CreateAction(action));
                    }
                }
            }

            // Load all of the controls defined
            if (controls.Button != null)
            {
                foreach (CockpitXML.CockpitControlsButton control in controls.Button)
                {
                    TouchPal.Debug("Loading button control: " + control.Name);
                    ButtonCockpitControl item = new ButtonCockpitControl(this, control);
                    this.controls.Add(control.Name, item);
                }
            }

            // Load all of the controls defined
            if (controls.Text != null)
            {
                foreach (CockpitXML.CockpitControlsText control in controls.Text)
                {
                    TouchPal.Debug("Loading text control: " + control.Name);
                    TextCockpitControl item = new TextCockpitControl(this, control);
                    this.controls.Add(control.Name, item);
                }
            }
        }
Example #7
0
 public ChangeValueAction(string change)
 {
     string[] values = change.Split(new Char[] { '=' });
     try
     {
         networkID = Convert.ToInt32(values[0]);
         value     = values[1];
     }
     catch (FormatException fe)
     {
         TouchPal.Warn("Bad network id value (" + values[0] + ") - " + fe.Message);
     }
 }
Example #8
0
        public static IAction CreateAction(string description)
        {
            if (description == null || description.Equals(""))
            {
                return(null);
            }

            if (description[2].Equals(':'))
            {
                string command      = description.Substring(0, 2);
                string commandValue = description.Substring(3);

                if (command.Equals("NS"))
                {
                    return(new NetworkSendAction(commandValue));
                }
                if (command.Equals("KD"))
                {
                    return(new KeyAction(commandValue, true));
                }
                if (command.Equals("KU"))
                {
                    return(new KeyAction(commandValue, false));
                }
                if (command.Equals("CV"))
                {
                    return(new ChangeValueAction(commandValue));
                }
                if (command.Equals("EX"))
                {
                    return(new ExitAction());
                }
                if (command.Equals("RS"))
                {
                    return(new ResetAction());
                }
                if (command.Equals("PH"))
                {
                    return(new PanelVisibleAction(commandValue, false));
                }
                if (command.Equals("PS"))
                {
                    return(new PanelVisibleAction(commandValue, true));
                }
            }

            TouchPal.Warn("Invalid action definition: " + description);
            return(null);
        }
Example #9
0
        public void UpdateControl(int networkID, string value)
        {
            bool controlUpdated = false;

            foreach (KeyValuePair <string, ICockpitControl> kvp in controls)
            {
                if (kvp.Value.NetworkID == networkID)
                {
                    controlUpdated  = true;
                    kvp.Value.Value = value;
                }
            }
            if (!controlUpdated)
            {
                TouchPal.Debug("NetworkID " + networkID + " recieved with value " + value + " but there are no matching controls.");
            }
        }
Example #10
0
 private void OnClientConnect(IAsyncResult asyn)
 {
     try
     {
         TouchPal.Debug("Client connected.");
         clientSocket = mainSocket.EndAccept(asyn);
         WaitForData();
         if (manager != null)
         {
             manager.ClientConnected();
         }
     }
     catch (ObjectDisposedException)
     {
         WaitForConnect();
     }
     catch (SocketException se)
     {
         Console.WriteLine(se.Message);
     }
 }
Example #11
0
 private void WaitForConnect()
 {
     clientSocket = null;
     mainSocket.BeginAccept(socketConnectCallback, null);
     TouchPal.Debug("Waiting on client connect on TCP port 9089.");
 }
Example #12
0
 static private void serializer_UnknownNode
     (object sender, XmlNodeEventArgs e)
 {
     TouchPal.Log(LOG_LEVEL.WARN, "Unknown Node:" + e.Name + "\t" + e.Text);
 }
Example #13
0
 public void StartConnection()
 {
     TouchPal.Debug("Starting TCP Connection");
     WaitForConnect();
 }
Example #14
0
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            int forceX = -1;
            int forceY = -1;

            string profile = "TouchPal.xml";

            foreach (string argument in args)
            {
                if (argument.StartsWith("-log="))
                {
                    string level = argument.Substring(5).ToLower();
                    if (logLevels.ContainsKey(level))
                    {
                        logLevel = logLevels[level];
                    }
                }

                if (argument.StartsWith("-profile="))
                {
                    profile = argument.Substring(9);
                }

                if (argument.StartsWith("-homedir="))
                {
                    touchPalDirectory = argument.Substring(9);
                }

                if (argument.StartsWith("-tcp"))
                {
                    udp = false;
                }

                if (argument.StartsWith("-udp"))
                {
                    udp = true;
                }

                if (argument.StartsWith("-x="))
                {
                    forceX = Convert.ToInt32(argument.Substring(3));
                    TouchPal.Debug("Forceing window x to " + argument.Substring(3));
                }

                if (argument.StartsWith("-y="))
                {
                    forceY = Convert.ToInt32(argument.Substring(3));
                    TouchPal.Debug("Forceing window y to " + argument.Substring(3));
                }
            }

            ResetEnvironment();

            INetConnection connection = null;

            if (udp)
            {
                connection = new UDPNetConnection();
            }
            else
            {
                connection = new TCPNetConnection();
            }

            IImageCache cache = new BasicImageCache();

            try {
                TouchPal.Debug("Parsing profile " + profile);
                CockpitXML.Cockpit co = ReadConfig(profile);

                TouchPal.Debug("Loading controls");
                ControlManager manager = new ControlManager(connection, cache, co.StartAction, co.ResetAction, co.Controls);

                connection.StartConnection();

                TouchPal.Debug("Setting up form");
                CockpitForm form = new CockpitForm(manager, cache, co.Layout, forceX, forceY);

                Application.Run(form);
            }
            catch (XmlSchemaException e)
            {
                TouchPal.Log(LOG_LEVEL.ERROR, "Error parsing profile at position " + e.LinePosition + " on line " + e.LineNumber + " {" + e.Message + "}");
            }
        }
Example #15
0
 void IAction.Execute(ControlManager manager)
 {
     TouchPal.Debug("Exit action fired.");
     manager.Exit();
 }
Example #16
0
 public void StartConnection()
 {
     TouchPal.Debug("Starting UDP server.");
     WaitForData();
 }
Example #17
0
 static private void serializer_UnknownAttribute
     (object sender, XmlAttributeEventArgs e)
 {
     System.Xml.XmlAttribute attr = e.Attr;
     TouchPal.Log(LOG_LEVEL.WARN, "Unknown attribute " + attr.Name + "='" + attr.Value + "'");
 }