예제 #1
0
        /// <param name="cmd">Pushed command</param>
        /// <param name="component">INodeInfo component for searching</param>
        /// <param name="raw">Full raw string to finding</param>
        /// <returns></returns>
        protected IEnumerable <ICompletionData> find(KeysCommand cmd, INodeInfo component, string raw)
        {
            if (raw == null)
            {
                if (cmd == KeysCommand.CtrlSpace || cmd == KeysCommand.Space)
                {
                    return(list(new NodeIdent(component.Name, null)));
                }
                return(ListNull);
            }

            if (cmd == KeysCommand.Space)
            {
                return(ListNull);
            }

            string ident = (new StringHandler()).protectMixedQuotes(raw.Trim());

            if (_isLatest('.', ident))
            {
                ident = ident.Substring(0, ident.Length - 1);
                if (cmd == KeysCommand.CtrlSpace)
                {
                    cmd = KeysCommand.LevelByDot;
                }
            }

            if (cmd == KeysCommand.CtrlSpace)
            {
                if (Regex.IsMatch(raw, @"(?:
                                          \s+
                                         |
                                          \([^.)]*?
                                         |
                                          \)
                                        )$", RegexOptions.IgnorePatternWhitespace))
                {
                    return(ListNull);
                }
            }

            string[] parts = Regex.Replace(ident,
                                           RPattern.RoundBracketsContent,
                                           "()",
                                           RegexOptions.IgnorePatternWhitespace
                                           ).Split('.');

            NodeIdent id = new NodeIdent(component.Name, null);

            for (int i = 0; i < parts.Length; ++i)
            {
                parts[i] = parts[i].Trim();

                if (cmd == KeysCommand.CtrlSpace && i == parts.Length - 1)
                {
                    return(list(id, parts[i]));
                }

                INodeInfo info = infoBy(parts[i], id, (cmd == KeysCommand.LevelByDot));
                if (info == null)
                {
                    return(ListEmpty);
                }

                id = info.Link;
            }

            if (cmd == KeysCommand.LevelByDot)
            {
                return(list(id));
            }
            return(ListEmpty);
        }
예제 #2
0
        /// <param name="data">Where to find</param>
        /// <param name="offset">Position in data to begin viewing</param>
        /// <param name="cmd">Pushed command</param>
        /// <returns>Complete list for code completion</returns>
        public IEnumerable <ICompletionData> find(string data, int offset, KeysCommand cmd)
        {
            if (cmd == KeysCommand.Default)
            {
                return(ListEmpty);
            }

            if (cmd == KeysCommand.MSBuildContainer)  // '#[' - root of the MSBuild container
            {
                return(listMSBuildProperties(null));
            }

            if (cmd == KeysCommand.Container)  // '#[' - root of the SBE container
            {
                return(listComponents(null));
            }

            data = region(data, offset);

            // '$( '<--
            if (Regex.IsMatch(data, @"\$\(\s*\w*$"))
            {
                return((cmd == KeysCommand.CtrlSpace)? listMSBuildProperties() : ListNull);
            }

            // '#[ '<--
            Match root = Regex.Match(data, @"\#\[
                                             (?:
                                                (?'data'\S+)
                                              |
                                                \s*
                                             )$", RegexOptions.IgnorePatternWhitespace);


            if (root.Success)
            {
                return((cmd == KeysCommand.CtrlSpace)? listComponents(root.Groups["data"].Value) : ListNull);
            }

            // '#[...' -->
            Match m = Regex.Match(data, @"^\#\[
                                          \s*
                                          (\S+)     #1 - Component
                                          \s*
                                          (.+)?     #2 - properties/methods etc. (optional)",
                                  RegexOptions.IgnorePatternWhitespace);

            if (!m.Success)
            {
                return(ListNull);
            }

            INodeInfo component = findComponent(data);

            if (component == null)
            {
                // hidden components:
                //Match hc = Regex.Match(data, @"^\s*\#\[(\S+)");
                //if(hc.Groups[1].Success) {
                //    return list(new NodeIdent(hc.Groups[1].Value, null));
                //}
                return(ListNull);
            }
            return(find(cmd, component, (m.Groups[2].Success)? m.Groups[2].Value : null));
        }
예제 #3
0
        private void listViewEventMap_DoubleClick(object sender, EventArgs e)
        {
            if (listViewEventMap.SelectedItems.Count != 1)
            {
                return;
            }

            string command    = listViewEventMap.SelectedItems[0].SubItems[1].Text;
            string newCommand = null;

            if (command.StartsWith(IrssUtils.Common.CmdPrefixRun, StringComparison.OrdinalIgnoreCase))
            {
                string[]        commands        = IrssUtils.Common.SplitRunCommand(command.Substring(IrssUtils.Common.CmdPrefixRun.Length));
                ExternalProgram externalProgram = new ExternalProgram(commands);
                if (externalProgram.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixRun + externalProgram.CommandString;
                }
            }
            else if (command.StartsWith(IrssUtils.Common.CmdPrefixGotoScreen, StringComparison.OrdinalIgnoreCase))
            {
                GoToScreen goToScreen = new GoToScreen(command.Substring(IrssUtils.Common.CmdPrefixGotoScreen.Length));
                if (goToScreen.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixGotoScreen + goToScreen.CommandString;
                }
            }
            else if (command.StartsWith(IrssUtils.Common.CmdPrefixSerial, StringComparison.OrdinalIgnoreCase))
            {
                string[]      commands      = IrssUtils.Common.SplitSerialCommand(command.Substring(IrssUtils.Common.CmdPrefixSerial.Length));
                SerialCommand serialCommand = new SerialCommand(commands);
                if (serialCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixSerial + serialCommand.CommandString;
                }
            }
            else if (command.StartsWith(IrssUtils.Common.CmdPrefixWindowMsg, StringComparison.OrdinalIgnoreCase))
            {
                string[]       commands       = IrssUtils.Common.SplitWindowMessageCommand(command.Substring(IrssUtils.Common.CmdPrefixWindowMsg.Length));
                MessageCommand messageCommand = new MessageCommand(commands);
                if (messageCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixWindowMsg + messageCommand.CommandString;
                }
            }
            else if (command.StartsWith(IrssUtils.Common.CmdPrefixKeys, StringComparison.OrdinalIgnoreCase))
            {
                KeysCommand keysCommand = new KeysCommand(command.Substring(IrssUtils.Common.CmdPrefixKeys.Length));
                if (keysCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixKeys + keysCommand.CommandString;
                }
            }
            else if (command.StartsWith(IrssUtils.Common.CmdPrefixBlast, StringComparison.OrdinalIgnoreCase))
            {
                string[] commands = IrssUtils.Common.SplitBlastCommand(command.Substring(IrssUtils.Common.CmdPrefixBlast.Length));

                BlastCommand blastCommand = new BlastCommand(
                    MPControlPlugin.BlastIR,
                    IrssUtils.Common.FolderIRCommands,
                    MPControlPlugin.TransceiverInformation.Ports,
                    commands);

                if (blastCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixBlast + blastCommand.CommandString;
                }
            }

            if (!String.IsNullOrEmpty(newCommand))
            {
                listViewEventMap.SelectedItems[0].SubItems[1].Text = newCommand;
            }
        }
예제 #4
0
        private void buttonSetCommand_Click(object sender, EventArgs e)
        {
            if (comboBoxCommands.SelectedIndex == -1)
            {
                return;
            }

            string selected   = comboBoxCommands.SelectedItem as string;
            string newCommand = null;

            if (selected.Equals(IrssUtils.Common.UITextRun, StringComparison.OrdinalIgnoreCase))
            {
                ExternalProgram externalProgram = new ExternalProgram();
                if (externalProgram.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixRun + externalProgram.CommandString;
                }
            }
            else if (selected.Equals(IrssUtils.Common.UITextSerial, StringComparison.OrdinalIgnoreCase))
            {
                SerialCommand serialCommand = new SerialCommand();
                if (serialCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixSerial + serialCommand.CommandString;
                }
            }
            else if (selected.Equals(IrssUtils.Common.UITextWindowMsg, StringComparison.OrdinalIgnoreCase))
            {
                MessageCommand messageCommand = new MessageCommand();
                if (messageCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixWindowMsg + messageCommand.CommandString;
                }
            }
            else if (selected.Equals(IrssUtils.Common.UITextTcpMsg, StringComparison.OrdinalIgnoreCase))
            {
                TcpMessageCommand tcpMessageCommand = new TcpMessageCommand();
                if (tcpMessageCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixTcpMsg + tcpMessageCommand.CommandString;
                }
            }
            else if (selected.Equals(IrssUtils.Common.UITextKeys, StringComparison.OrdinalIgnoreCase))
            {
                KeysCommand keysCommand = new KeysCommand();
                if (keysCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixKeys + keysCommand.CommandString;
                }
            }
            else if (selected.Equals(IrssUtils.Common.UITextEject, StringComparison.OrdinalIgnoreCase))
            {
                EjectCommand ejectCommand = new EjectCommand();
                if (ejectCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixEject + ejectCommand.CommandString;
                }
            }
            else if (selected.Equals(IrssUtils.Common.UITextGotoScreen, StringComparison.OrdinalIgnoreCase))
            {
                GoToScreen goToScreen = new GoToScreen();
                if (goToScreen.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixGotoScreen + goToScreen.CommandString;
                }
            }
            else if (selected.StartsWith(IrssUtils.Common.CmdPrefixBlast, StringComparison.OrdinalIgnoreCase))
            {
                BlastCommand blastCommand = new BlastCommand(
                    MPControlPlugin.BlastIR,
                    IrssUtils.Common.FolderIRCommands,
                    MPControlPlugin.TransceiverInformation.Ports,
                    selected.Substring(IrssUtils.Common.CmdPrefixBlast.Length));

                if (blastCommand.ShowDialog(this) == DialogResult.OK)
                {
                    newCommand = IrssUtils.Common.CmdPrefixBlast + blastCommand.CommandString;
                }
            }
            else
            {
                newCommand = selected;
            }

            foreach (ListViewItem listViewItem in listViewEventMap.SelectedItems)
            {
                listViewItem.SubItems[1].Text = newCommand;
            }
        }
예제 #5
0
        private void buttonAddCommand_Click(object sender, EventArgs e)
        {
            if (comboBoxCommands.SelectedIndex == -1)
            {
                return;
            }

            try
            {
                string selected   = comboBoxCommands.SelectedItem as string;
                string newCommand = null;

                if (selected.Equals(Common.UITextRun, StringComparison.OrdinalIgnoreCase))
                {
                    ExternalProgram externalProgram = new ExternalProgram();
                    if (externalProgram.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixRun + externalProgram.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextPause, StringComparison.OrdinalIgnoreCase))
                {
                    PauseTime pauseTime = new PauseTime();
                    if (pauseTime.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixPause + pauseTime.Time;
                    }
                }
                else if (selected.Equals(Common.UITextSerial, StringComparison.OrdinalIgnoreCase))
                {
                    SerialCommand serialCommand = new SerialCommand();
                    if (serialCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixSerial + serialCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextWindowMsg, StringComparison.OrdinalIgnoreCase))
                {
                    MessageCommand messageCommand = new MessageCommand();
                    if (messageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixWindowMsg + messageCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextTcpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    TcpMessageCommand tcpMessageCommand = new TcpMessageCommand();
                    if (tcpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixTcpMsg + tcpMessageCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextHttpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    HttpMessageCommand httpMessageCommand = new HttpMessageCommand();
                    if (httpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixHttpMsg + httpMessageCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextKeys, StringComparison.OrdinalIgnoreCase))
                {
                    KeysCommand keysCommand = new KeysCommand();
                    if (keysCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixKeys + keysCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextEject, StringComparison.OrdinalIgnoreCase))
                {
                    EjectCommand ejectCommand = new EjectCommand();
                    if (ejectCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixEject + ejectCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextStandby, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixStandby;
                }
                else if (selected.Equals(Common.UITextHibernate, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixHibernate;
                }
                else if (selected.Equals(Common.UITextReboot, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixReboot;
                }
                else if (selected.Equals(Common.UITextShutdown, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixShutdown;
                }
                else if (selected.StartsWith(Common.CmdPrefixBlast, StringComparison.OrdinalIgnoreCase))
                {
                    BlastCommand blastCommand = new BlastCommand(
                        TV3BlasterPlugin.BlastIR,
                        Common.FolderIRCommands,
                        TV3BlasterPlugin.TransceiverInformation.Ports,
                        selected.Substring(Common.CmdPrefixBlast.Length));

                    if (blastCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixBlast + blastCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixMacro, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = selected;
                }
                else
                {
                    throw new CommandStructureException(String.Format("Unknown command in macro command list \"{0}\"", selected));
                }

                if (!String.IsNullOrEmpty(newCommand))
                {
                    listBoxMacro.Items.Add(newCommand);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.ToString());
                MessageBox.Show(this, ex.Message, "Failed to add macro command", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #6
0
        private void listBoxCommandSequence_DoubleClick(object sender, EventArgs e)
        {
            if (listBoxMacro.SelectedIndex == -1)
            {
                return;
            }

            try
            {
                string selected   = listBoxMacro.SelectedItem as string;
                string newCommand = null;

                if (selected.StartsWith(Common.CmdPrefixRun, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitRunCommand(selected.Substring(Common.CmdPrefixRun.Length));

                    ExternalProgram executeProgram = new ExternalProgram(commands);
                    if (executeProgram.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixRun + executeProgram.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixPause, StringComparison.OrdinalIgnoreCase))
                {
                    PauseTime pauseTime = new PauseTime(int.Parse(selected.Substring(Common.CmdPrefixPause.Length)));
                    if (pauseTime.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixPause + pauseTime.Time;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixSerial, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitSerialCommand(selected.Substring(Common.CmdPrefixSerial.Length));

                    SerialCommand serialCommand = new SerialCommand(commands);
                    if (serialCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixSerial + serialCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixWindowMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitWindowMessageCommand(selected.Substring(Common.CmdPrefixWindowMsg.Length));

                    MessageCommand messageCommand = new MessageCommand(commands);
                    if (messageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixWindowMsg + messageCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixTcpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitTcpMessageCommand(selected.Substring(Common.CmdPrefixTcpMsg.Length));

                    TcpMessageCommand tcpMessageCommand = new TcpMessageCommand(commands);
                    if (tcpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixTcpMsg + tcpMessageCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixHttpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitHttpMessageCommand(selected.Substring(Common.CmdPrefixHttpMsg.Length));

                    HttpMessageCommand httpMessageCommand = new HttpMessageCommand(commands);
                    if (httpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixHttpMsg + httpMessageCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixKeys, StringComparison.OrdinalIgnoreCase))
                {
                    KeysCommand keysCommand = new KeysCommand(selected.Substring(Common.CmdPrefixKeys.Length));
                    if (keysCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixKeys + keysCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixMouse, StringComparison.OrdinalIgnoreCase))
                {
                    MouseCommand mouseCommand = new MouseCommand(selected.Substring(Common.CmdPrefixMouse.Length));
                    if (mouseCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixMouse + mouseCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixEject, StringComparison.OrdinalIgnoreCase))
                {
                    EjectCommand ejectCommand = new EjectCommand(selected.Substring(Common.CmdPrefixEject.Length));
                    if (ejectCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixEject + ejectCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixBlast, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitBlastCommand(selected.Substring(Common.CmdPrefixBlast.Length));

                    BlastCommand blastCommand = new BlastCommand(
                        TV3BlasterPlugin.BlastIR,
                        Common.FolderIRCommands,
                        TV3BlasterPlugin.TransceiverInformation.Ports,
                        commands);

                    if (blastCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixBlast + blastCommand.CommandString;
                    }
                }

                if (!String.IsNullOrEmpty(newCommand))
                {
                    int index = listBoxMacro.SelectedIndex;
                    listBoxMacro.Items.RemoveAt(index);
                    listBoxMacro.Items.Insert(index, newCommand);
                    listBoxMacro.SelectedIndex = index;
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.ToString());
                MessageBox.Show(this, ex.Message, "Failed to edit macro item", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #7
0
        private void listViewExternalCommands_DoubleClick(object sender, EventArgs e)
        {
            if (listViewExternalCommands.SelectedIndices.Count != 1)
            {
                return;
            }

            try
            {
                string selected   = listViewExternalCommands.SelectedItems[0].SubItems[1].Text;
                string newCommand = null;

                if (selected.StartsWith(Common.CmdPrefixBlast, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitBlastCommand(selected.Substring(Common.CmdPrefixBlast.Length));

                    BlastCommand blastCommand = new BlastCommand(
                        new BlastIrDelegate(Tray.BlastIR),
                        Common.FolderIRCommands,
                        Tray.TransceiverInformation.Ports,
                        commands);

                    if (blastCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixBlast + blastCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixSTB, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitBlastCommand(selected.Substring(Common.CmdPrefixSTB.Length));

                    BlastCommand blastCommand = new BlastCommand(
                        new BlastIrDelegate(Tray.BlastIR),
                        Common.FolderSTB,
                        Tray.TransceiverInformation.Ports,
                        commands);

                    if (blastCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixSTB + blastCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixRun, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitRunCommand(selected.Substring(Common.CmdPrefixRun.Length));

                    ExternalProgram executeProgram = new ExternalProgram(commands, ParameterInfo);
                    if (executeProgram.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixRun + executeProgram.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixSerial, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitSerialCommand(selected.Substring(Common.CmdPrefixSerial.Length));

                    SerialCommand serialCommand = new SerialCommand(commands, ParameterInfo);
                    if (serialCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixSerial + serialCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixWindowMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitWindowMessageCommand(selected.Substring(Common.CmdPrefixWindowMsg.Length));

                    MessageCommand messageCommand = new MessageCommand(commands);
                    if (messageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixWindowMsg + messageCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixTcpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitTcpMessageCommand(selected.Substring(Common.CmdPrefixTcpMsg.Length));

                    TcpMessageCommand tcpMessageCommand = new TcpMessageCommand(commands);
                    if (tcpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixTcpMsg + tcpMessageCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixHttpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitHttpMessageCommand(selected.Substring(Common.CmdPrefixHttpMsg.Length));

                    HttpMessageCommand httpMessageCommand = new HttpMessageCommand(commands);
                    if (httpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixHttpMsg + httpMessageCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixKeys, StringComparison.OrdinalIgnoreCase))
                {
                    KeysCommand keysCommand = new KeysCommand(selected.Substring(Common.CmdPrefixKeys.Length));

                    if (keysCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixKeys + keysCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixPopup, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = Common.SplitPopupCommand(selected.Substring(Common.CmdPrefixPopup.Length));

                    PopupMessage popupMessage = new PopupMessage(commands);
                    if (popupMessage.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixPopup + popupMessage.CommandString;
                    }
                }

                if (!String.IsNullOrEmpty(newCommand))
                {
                    listViewExternalCommands.SelectedItems[0].SubItems[1].Text = newCommand;
                }
            }
            catch (Exception ex)
            {
                IrssLog.Error(ex);
                MessageBox.Show(this, ex.Message, "Failed to edit command", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #8
0
        private void buttonSet_Click(object sender, EventArgs e)
        {
            if (listViewExternalCommands.SelectedIndices.Count == 0 || comboBoxCommands.SelectedIndex == -1)
            {
                return;
            }

            try
            {
                string selected   = comboBoxCommands.SelectedItem as string;
                string newCommand = null;

                if (selected.Equals(Common.UITextRun, StringComparison.OrdinalIgnoreCase))
                {
                    ExternalProgram externalProgram = new ExternalProgram(ParameterInfo);
                    if (externalProgram.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixRun + externalProgram.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextSerial, StringComparison.OrdinalIgnoreCase))
                {
                    SerialCommand serialCommand = new SerialCommand(ParameterInfo);
                    if (serialCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixSerial + serialCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextWindowMsg, StringComparison.OrdinalIgnoreCase))
                {
                    MessageCommand messageCommand = new MessageCommand();
                    if (messageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixWindowMsg + messageCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextTcpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    TcpMessageCommand tcpMessageCommand = new TcpMessageCommand();
                    if (tcpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixTcpMsg + tcpMessageCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextHttpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    HttpMessageCommand httpMessageCommand = new HttpMessageCommand();
                    if (httpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixHttpMsg + httpMessageCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextKeys, StringComparison.OrdinalIgnoreCase))
                {
                    KeysCommand keysCommand = new KeysCommand();
                    if (keysCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixKeys + keysCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextPopup, StringComparison.OrdinalIgnoreCase))
                {
                    PopupMessage popupMessage = new PopupMessage();
                    if (popupMessage.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixPopup + popupMessage.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixBlast, StringComparison.OrdinalIgnoreCase))
                {
                    BlastCommand blastCommand = new BlastCommand(
                        new BlastIrDelegate(Tray.BlastIR),
                        Common.FolderIRCommands,
                        Tray.TransceiverInformation.Ports,
                        selected.Substring(Common.CmdPrefixBlast.Length));

                    if (blastCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixBlast + blastCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixMacro, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = selected;
                }
                else
                {
                    throw new CommandStructureException(String.Format("Invalid command in STB Setup: {0}", selected));
                }

                if (!String.IsNullOrEmpty(newCommand))
                {
                    foreach (ListViewItem item in listViewExternalCommands.SelectedItems)
                    {
                        item.SubItems[1].Text = newCommand;
                    }
                }
            }
            catch (Exception ex)
            {
                IrssLog.Error(ex);
                MessageBox.Show(this, ex.Message, "Failed to set command", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #9
0
        /// <param name="data">Where to find</param>
        /// <param name="offset">Position in data to begin viewing</param>
        /// <param name="cmd">Pushed command</param>
        /// <returns>Complete list for code completion</returns>
        public IEnumerable<ICompletionData> find(string data, int offset, KeysCommand cmd)
        {
            if(cmd == KeysCommand.Default) {
                return ListEmpty;
            }

            if(cmd == KeysCommand.MSBuildContainer) { // '#[' - root of the MSBuild container
                return listMSBuildProperties(null);
            }

            if(cmd == KeysCommand.Container) { // '#[' - root of the SBE container
                return listComponents(null);
            }

            data = region(data, offset);

            // '$( '<--
            if(Regex.IsMatch(data, @"\$\(\s*\w*$")) {
                return (cmd == KeysCommand.CtrlSpace)? listMSBuildProperties() : ListNull;
            }

            // '#[ '<--
            Match root = Regex.Match(data, @"\#\[
                                             (?:
                                                (?'data'\S+)
                                              |
                                                \s*
                                             )$", RegexOptions.IgnorePatternWhitespace);

            if(root.Success) {
                return (cmd == KeysCommand.CtrlSpace)? listComponents(root.Groups["data"].Value) : ListNull;
            }

            // '#[...' -->
            Match m = Regex.Match(data, @"^\#\[
                                          \s*
                                          (\S+)     #1 - Component
                                          \s*
                                          (.+)?     #2 - properties/methods etc. (optional)",
                                          RegexOptions.IgnorePatternWhitespace);

            if(!m.Success) {
                return ListNull;
            }

            INodeInfo component = findComponent(data);
            if(component == null) {
                // hidden components:
                    //Match hc = Regex.Match(data, @"^\s*\#\[(\S+)");
                    //if(hc.Groups[1].Success) {
                    //    return list(new NodeIdent(hc.Groups[1].Value, null));
                    //}
                return ListNull;
            }
            return find(cmd, component, (m.Groups[2].Success)? m.Groups[2].Value : null);
        }
예제 #10
0
        /// <param name="cmd">Pushed command</param>
        /// <param name="component">INodeInfo component for searching</param>
        /// <param name="raw">Full raw string to finding</param>
        /// <returns></returns>
        protected IEnumerable<ICompletionData> find(KeysCommand cmd, INodeInfo component, string raw)
        {
            if(raw == null)
            {
                if(cmd == KeysCommand.CtrlSpace || cmd == KeysCommand.Space) {
                    return list(new NodeIdent(component.Name, null));
                }
                return ListNull;
            }

            if(cmd == KeysCommand.Space) {
                return ListNull;
            }

            string ident = (new StringHandler()).protectMixedQuotes(raw.Trim());

            if(_isLatest('.', ident))
            {
                ident = ident.Substring(0, ident.Length - 1);
                if(cmd == KeysCommand.CtrlSpace) {
                    cmd = KeysCommand.LevelByDot;
                }
            }

            if(cmd == KeysCommand.CtrlSpace)
            {
                if(Regex.IsMatch(raw, @"(?:
                                          \s+
                                         |
                                          \([^.)]*?
                                         |
                                          \)
                                        )$", RegexOptions.IgnorePatternWhitespace))
                {
                    return ListNull;
                }
            }

            string[] parts = Regex.Replace(ident,
                                            RPattern.RoundBracketsContent,
                                            "()",
                                            RegexOptions.IgnorePatternWhitespace
                                           ).Split('.');

            NodeIdent id = new NodeIdent(component.Name, null);
            for(int i = 0; i < parts.Length; ++i)
            {
                parts[i] = parts[i].Trim();

                if(cmd == KeysCommand.CtrlSpace && i == parts.Length - 1) {
                    return list(id, parts[i]);
                }

                INodeInfo info = infoBy(parts[i], id, (cmd == KeysCommand.LevelByDot));
                if(info == null) {
                    return ListEmpty;
                }

                id = info.Link;
            }

            if(cmd == KeysCommand.LevelByDot) {
                return list(id);
            }
            return ListEmpty;
        }
예제 #11
0
        private void listBoxCommandSequence_DoubleClick(object sender, EventArgs e)
        {
            if (listBoxMacro.SelectedIndex == -1)
            {
                return;
            }

            try
            {
                string selected   = listBoxMacro.SelectedItem as string;
                string newCommand = null;

                if (selected.StartsWith(IrssUtils.Common.CmdPrefixRun, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitRunCommand(selected.Substring(IrssUtils.Common.CmdPrefixRun.Length));

                    ExternalProgram executeProgram = new ExternalProgram(commands);
                    if (executeProgram.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixRun + executeProgram.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixPause, StringComparison.OrdinalIgnoreCase))
                {
                    PauseTime pauseTime = new PauseTime(int.Parse(selected.Substring(IrssUtils.Common.CmdPrefixPause.Length)));
                    if (pauseTime.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixPause + pauseTime.Time;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixSerial, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitSerialCommand(selected.Substring(IrssUtils.Common.CmdPrefixSerial.Length));

                    SerialCommand serialCommand = new SerialCommand(commands);
                    if (serialCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixSerial + serialCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixWindowMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitWindowMessageCommand(selected.Substring(IrssUtils.Common.CmdPrefixWindowMsg.Length));

                    MessageCommand messageCommand = new MessageCommand(commands);
                    if (messageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixWindowMsg + messageCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixTcpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitTcpMessageCommand(selected.Substring(IrssUtils.Common.CmdPrefixTcpMsg.Length));

                    TcpMessageCommand tcpMessageCommand = new TcpMessageCommand(commands);
                    if (tcpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixTcpMsg + tcpMessageCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixHttpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitHttpMessageCommand(selected.Substring(IrssUtils.Common.CmdPrefixHttpMsg.Length));

                    HttpMessageCommand httpMessageCommand = new HttpMessageCommand(commands);
                    if (httpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixHttpMsg + httpMessageCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixKeys, StringComparison.OrdinalIgnoreCase))
                {
                    KeysCommand keysCommand = new KeysCommand(selected.Substring(IrssUtils.Common.CmdPrefixKeys.Length));
                    if (keysCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixKeys + keysCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixMouse, StringComparison.OrdinalIgnoreCase))
                {
                    MouseCommand mouseCommand = new MouseCommand(selected.Substring(IrssUtils.Common.CmdPrefixMouse.Length));
                    if (mouseCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixMouse + mouseCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixEject, StringComparison.OrdinalIgnoreCase))
                {
                    EjectCommand ejectCommand = new EjectCommand(selected.Substring(IrssUtils.Common.CmdPrefixEject.Length));
                    if (ejectCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixEject + ejectCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixPopup, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitPopupCommand(selected.Substring(IrssUtils.Common.CmdPrefixPopup.Length));

                    PopupMessage popupMessage = new PopupMessage(commands);
                    if (popupMessage.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixPopup + popupMessage.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixGotoScreen, StringComparison.OrdinalIgnoreCase))
                {
                    GoToScreen goToScreen = new GoToScreen(selected.Substring(IrssUtils.Common.CmdPrefixGotoScreen.Length));
                    if (goToScreen.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixGotoScreen + goToScreen.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixSendMPAction, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitSendMPActionCommand(selected.Substring(IrssUtils.Common.CmdPrefixSendMPAction.Length));

                    MPAction edit = new MPAction(commands);
                    if (edit.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixSendMPAction + edit.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixSendMPMsg, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitSendMPMsgCommand(selected.Substring(IrssUtils.Common.CmdPrefixSendMPMsg.Length));

                    MPMessage edit = new MPMessage(commands);
                    if (edit.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixSendMPMsg + edit.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixBeep, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitBeepCommand(selected.Substring(IrssUtils.Common.CmdPrefixBeep.Length));

                    BeepCommand beepCommand = new BeepCommand(commands);
                    if (beepCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixBeep + beepCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixSound, StringComparison.OrdinalIgnoreCase))
                {
                    OpenFileDialog openFileDialog = new OpenFileDialog();
                    openFileDialog.Filter      = "Wave Files|*.wav";
                    openFileDialog.Multiselect = false;
                    openFileDialog.FileName    = selected.Substring(IrssUtils.Common.CmdPrefixSound.Length);

                    if (openFileDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixSound + openFileDialog.FileName;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixDisplayMode, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitDisplayModeCommand(selected.Substring(IrssUtils.Common.CmdPrefixDisplayMode.Length));

                    DisplayModeCommand displayModeCommand = new DisplayModeCommand(commands);
                    if (displayModeCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixDisplayMode + displayModeCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixBlast, StringComparison.OrdinalIgnoreCase))
                {
                    string[] commands = IrssUtils.Common.SplitBlastCommand(selected.Substring(IrssUtils.Common.CmdPrefixBlast.Length));

                    BlastCommand blastCommand = new BlastCommand(
                        MPBlastZonePlugin.BlastIR,
                        IrssUtils.Common.FolderIRCommands,
                        MPBlastZonePlugin.TransceiverInformation.Ports,
                        commands);

                    if (blastCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixBlast + blastCommand.CommandString;
                    }
                }

                if (!String.IsNullOrEmpty(newCommand))
                {
                    int index = listBoxMacro.SelectedIndex;
                    listBoxMacro.Items.RemoveAt(index);
                    listBoxMacro.Items.Insert(index, newCommand);
                    listBoxMacro.SelectedIndex = index;
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                MessageBox.Show(this, ex.Message, "Failed to edit macro item", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #12
0
        private void buttonAddCommand_Click(object sender, EventArgs e)
        {
            if (comboBoxCommands.SelectedIndex == -1)
            {
                return;
            }

            try
            {
                string selected   = comboBoxCommands.SelectedItem as string;
                string newCommand = null;

                if (selected.Equals(IrssUtils.Common.UITextRun, StringComparison.OrdinalIgnoreCase))
                {
                    ExternalProgram externalProgram = new ExternalProgram();
                    if (externalProgram.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixRun + externalProgram.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextPause, StringComparison.OrdinalIgnoreCase))
                {
                    PauseTime pauseTime = new PauseTime();
                    if (pauseTime.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixPause + pauseTime.Time;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextSerial, StringComparison.OrdinalIgnoreCase))
                {
                    SerialCommand serialCommand = new SerialCommand();
                    if (serialCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixSerial + serialCommand.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextWindowMsg, StringComparison.OrdinalIgnoreCase))
                {
                    MessageCommand messageCommand = new MessageCommand();
                    if (messageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixWindowMsg + messageCommand.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextTcpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    TcpMessageCommand tcpMessageCommand = new TcpMessageCommand();
                    if (tcpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixTcpMsg + tcpMessageCommand.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextHttpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    HttpMessageCommand httpMessageCommand = new HttpMessageCommand();
                    if (httpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixHttpMsg + httpMessageCommand.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextKeys, StringComparison.OrdinalIgnoreCase))
                {
                    KeysCommand keysCommand = new KeysCommand();
                    if (keysCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixKeys + keysCommand.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextMouse, StringComparison.OrdinalIgnoreCase))
                {
                    MouseCommand mouseCommand = new MouseCommand();
                    if (mouseCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixMouse + mouseCommand.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextEject, StringComparison.OrdinalIgnoreCase))
                {
                    EjectCommand ejectCommand = new EjectCommand();
                    if (ejectCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixEject + ejectCommand.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextPopup, StringComparison.OrdinalIgnoreCase))
                {
                    PopupMessage popupMessage = new PopupMessage();
                    if (popupMessage.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixPopup + popupMessage.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextGotoScreen, StringComparison.OrdinalIgnoreCase))
                {
                    GoToScreen goToScreen = new GoToScreen();
                    if (goToScreen.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixGotoScreen + goToScreen.CommandString;
                    }
                }

                /*
                 * else if (selected.Equals(IrssUtils.Common.UITextWindowState, StringComparison.OrdinalIgnoreCase))
                 * {
                 * newCommand = IrssUtils.Common.CmdPrefixWindowState;
                 * }
                 */
                else if (selected.Equals(IrssUtils.Common.UITextFocus, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = IrssUtils.Common.CmdPrefixFocus;
                }
                else if (selected.Equals(IrssUtils.Common.UITextExit, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = IrssUtils.Common.CmdPrefixExit;
                }
                else if (selected.Equals(IrssUtils.Common.UITextSendMPAction, StringComparison.OrdinalIgnoreCase))
                {
                    MPAction edit = new MPAction();
                    if (edit.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixSendMPAction + edit.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextSendMPMsg, StringComparison.OrdinalIgnoreCase))
                {
                    MPMessage edit = new MPMessage();
                    if (edit.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixSendMPMsg + edit.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextVirtualKB, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = IrssUtils.Common.CmdPrefixVirtualKB;
                }
                else if (selected.Equals(IrssUtils.Common.UITextSmsKB, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = IrssUtils.Common.CmdPrefixSmsKB;
                }
                else if (selected.Equals(IrssUtils.Common.UITextBeep, StringComparison.OrdinalIgnoreCase))
                {
                    BeepCommand beepCommand = new BeepCommand();
                    if (beepCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixBeep + beepCommand.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextSound, StringComparison.OrdinalIgnoreCase))
                {
                    OpenFileDialog openFileDialog = new OpenFileDialog();
                    openFileDialog.Filter      = "Wave Files|*.wav";
                    openFileDialog.Multiselect = false;

                    if (openFileDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixSound + openFileDialog.FileName;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextDisplayMode, StringComparison.OrdinalIgnoreCase))
                {
                    DisplayModeCommand displayModeCommand = new DisplayModeCommand();
                    if (displayModeCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixDisplayMode + displayModeCommand.CommandString;
                    }
                }
                else if (selected.Equals(IrssUtils.Common.UITextStandby, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = IrssUtils.Common.CmdPrefixStandby;
                }
                else if (selected.Equals(IrssUtils.Common.UITextHibernate, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = IrssUtils.Common.CmdPrefixHibernate;
                }
                else if (selected.Equals(IrssUtils.Common.UITextReboot, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = IrssUtils.Common.CmdPrefixReboot;
                }
                else if (selected.Equals(IrssUtils.Common.UITextShutdown, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = IrssUtils.Common.CmdPrefixShutdown;
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixBlast, StringComparison.OrdinalIgnoreCase))
                {
                    BlastCommand blastCommand = new BlastCommand(
                        MPBlastZonePlugin.BlastIR,
                        IrssUtils.Common.FolderIRCommands,
                        MPBlastZonePlugin.TransceiverInformation.Ports,
                        selected.Substring(IrssUtils.Common.CmdPrefixBlast.Length));

                    if (blastCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = IrssUtils.Common.CmdPrefixBlast + blastCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(IrssUtils.Common.CmdPrefixMacro, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = selected;
                }
                else
                {
                    throw new CommandStructureException(String.Format("Unknown command in macro command list \"{0}\"", selected));
                }

                if (!String.IsNullOrEmpty(newCommand))
                {
                    listBoxMacro.Items.Add(newCommand);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                MessageBox.Show(this, ex.Message, "Failed to add macro command", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #13
0
        private void buttonAddCommand_Click(object sender, EventArgs e)
        {
            if (comboBoxCommands.SelectedIndex == -1)
            {
                return;
            }

            try
            {
                string selected   = comboBoxCommands.SelectedItem as string;
                string newCommand = null;

                if (selected.Equals(Common.UITextIf, StringComparison.OrdinalIgnoreCase))
                {
                    IfCommand ifCommand = new IfCommand();
                    if (ifCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixIf + ifCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextLabel, StringComparison.OrdinalIgnoreCase))
                {
                    LabelNameDialog labelDialog = new LabelNameDialog();
                    if (labelDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixLabel + labelDialog.LabelName;
                    }
                }
                else if (selected.Equals(Common.UITextGotoLabel, StringComparison.OrdinalIgnoreCase))
                {
                    LabelNameDialog labelDialog = new LabelNameDialog();
                    if (labelDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixGotoLabel + labelDialog.LabelName;
                    }
                }
                else if (selected.Equals(Common.UITextSetVar, StringComparison.OrdinalIgnoreCase))
                {
                    SetVariableCommand setVariableCommand = new SetVariableCommand();
                    if (setVariableCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixSetVar + setVariableCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextClearVars, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixClearVars;
                }
                else if (selected.Equals(Common.UITextLoadVars, StringComparison.OrdinalIgnoreCase))
                {
                    VariablesFileDialog varsFileDialog = new VariablesFileDialog();
                    if (varsFileDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixLoadVars + varsFileDialog.FileName;
                    }
                }
                else if (selected.Equals(Common.UITextSaveVars, StringComparison.OrdinalIgnoreCase))
                {
                    VariablesFileDialog varsFileDialog = new VariablesFileDialog();
                    if (varsFileDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixSaveVars + varsFileDialog.FileName;
                    }
                }
                else if (selected.Equals(Common.UITextRun, StringComparison.OrdinalIgnoreCase))
                {
                    ExternalProgram externalProgram = new ExternalProgram();
                    if (externalProgram.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixRun + externalProgram.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextPause, StringComparison.OrdinalIgnoreCase))
                {
                    PauseTime pauseTime = new PauseTime();
                    if (pauseTime.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixPause + pauseTime.Time;
                    }
                }
                else if (selected.Equals(Common.UITextSerial, StringComparison.OrdinalIgnoreCase))
                {
                    SerialCommand serialCommand = new SerialCommand();
                    if (serialCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixSerial + serialCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextWindowMsg, StringComparison.OrdinalIgnoreCase))
                {
                    MessageCommand messageCommand = new MessageCommand();
                    if (messageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixWindowMsg + messageCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextTcpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    TcpMessageCommand tcpMessageCommand = new TcpMessageCommand();
                    if (tcpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixTcpMsg + tcpMessageCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextHttpMsg, StringComparison.OrdinalIgnoreCase))
                {
                    HttpMessageCommand httpMessageCommand = new HttpMessageCommand();
                    if (httpMessageCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixHttpMsg + httpMessageCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextKeys, StringComparison.OrdinalIgnoreCase))
                {
                    KeysCommand keysCommand = new KeysCommand();
                    if (keysCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixKeys + keysCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextMouse, StringComparison.OrdinalIgnoreCase))
                {
                    MouseCommand mouseCommand = new MouseCommand();
                    if (mouseCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixMouse + mouseCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextEject, StringComparison.OrdinalIgnoreCase))
                {
                    EjectCommand ejectCommand = new EjectCommand();
                    if (ejectCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixEject + ejectCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextPopup, StringComparison.OrdinalIgnoreCase))
                {
                    PopupMessage popupMessage = new PopupMessage();
                    if (popupMessage.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixPopup + popupMessage.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextVirtualKB, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixVirtualKB;
                }
                else if (selected.Equals(Common.UITextSmsKB, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixSmsKB;
                }
                else if (selected.Equals(Common.UITextBeep, StringComparison.OrdinalIgnoreCase))
                {
                    BeepCommand beepCommand = new BeepCommand();
                    if (beepCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixBeep + beepCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextSound, StringComparison.OrdinalIgnoreCase))
                {
                    OpenFileDialog openFileDialog = new OpenFileDialog();
                    openFileDialog.Filter      = "Wave Files|*.wav";
                    openFileDialog.Multiselect = false;

                    if (openFileDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixSound + openFileDialog.FileName;
                    }
                }
                else if (selected.Equals(Common.UITextDisplayMode, StringComparison.OrdinalIgnoreCase))
                {
                    DisplayModeCommand displayModeCommand = new DisplayModeCommand();
                    if (displayModeCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixDisplayMode + displayModeCommand.CommandString;
                    }
                }
                else if (selected.Equals(Common.UITextStandby, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixStandby;
                }
                else if (selected.Equals(Common.UITextHibernate, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixHibernate;
                }
                else if (selected.Equals(Common.UITextReboot, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixReboot;
                }
                else if (selected.Equals(Common.UITextShutdown, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = Common.CmdPrefixShutdown;
                }
                else if (selected.StartsWith(Common.CmdPrefixBlast, StringComparison.OrdinalIgnoreCase))
                {
                    BlastCommand blastCommand = new BlastCommand(
                        Program.BlastIR,
                        Common.FolderIRCommands,
                        Program.TransceiverInformation.Ports,
                        selected.Substring(Common.CmdPrefixBlast.Length));

                    if (blastCommand.ShowDialog(this) == DialogResult.OK)
                    {
                        newCommand = Common.CmdPrefixBlast + blastCommand.CommandString;
                    }
                }
                else if (selected.StartsWith(Common.CmdPrefixMacro, StringComparison.OrdinalIgnoreCase))
                {
                    newCommand = selected;
                }
                else
                {
                    throw new CommandStructureException(String.Format("Unknown macro command ({0})", selected));
                }

                if (!String.IsNullOrEmpty(newCommand))
                {
                    listBoxMacro.Items.Add(newCommand);
                }
            }
            catch (Exception ex)
            {
                IrssLog.Error(ex);
                MessageBox.Show(this, ex.Message, "Failed to add macro command", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #14
0
        /// <param name="data">Where to find</param>
        /// <param name="offset">Position in data to begin viewing</param>
        /// <param name="cmd">Pushed command</param>
        /// <returns>Complete list for code completion</returns>
        public IEnumerable<ICompletionData> find(string data, int offset, KeysCommand cmd)
        {
            if(cmd == KeysCommand.Default) {
                return ListEmpty;
            }

            if(cmd == KeysCommand.Container) { // '#[' - root for any place
                return listComponents(null);
            }

            data = region(data, offset);

            Match mRoot = Regex.Match(data, @"^\#\[
                                              (?:
                                                 \s*
                                                 |
                                                 (\S+)  #1 - component name
                                              )$", RegexOptions.IgnorePatternWhitespace);

            if(mRoot.Success) // '#[ '<--
            {
                if(cmd == KeysCommand.CtrlSpace) {
                    return listComponents(mRoot.Groups[1].Value);
                }
                return ListNull;
            }

            Match m = Regex.Match(data, @"^\#\[
                                          \s*
                                          (\S+)     #1 - Component
                                          \s*
                                          (.+)?     #2 - properties/methods etc. (optional)",
                                          RegexOptions.IgnorePatternWhitespace);

            if(!m.Success) {
                return ListNull;
            }

            INodeInfo component = findComponent(data);
            if(component == null) {
                // hidden components:
                    //Match hc = Regex.Match(data, @"^\s*\#\[(\S+)");
                    //if(hc.Groups[1].Success) {
                    //    return list(new NodeIdent(hc.Groups[1].Value, null));
                    //}
                return ListNull;
            }
            return find(cmd, component, (m.Groups[2].Success)? m.Groups[2].Value : null);
        }
예제 #15
0
        /// <summary>
        /// Manages the keys menu
        /// </summary>
        /// <returns><c>true</c>, if the exit command was issued, <c>false</c> otherwise.</returns>
        bool KeysMenu()
        {
            KeysCommand command = KeysCommand.Invalid;

            while (command != KeysCommand.Back)
            {
                Console.Write("\r" + commandPrefix);
                string cmd = Console.ReadLine();
                command = (KeysCommand)ToCommand(Menu.Keys, cmd);
                switch (command)
                {
                case KeysCommand.Add:
                    MenuEventArgs addArgs   = ProcessCommandArgs(Menu.Keys, KeysCommand.Add, cmd);
                    string        addEntity = (string)addArgs.Arguments.First(m => m.Key.Equals(KeysArg.Entity)).Value;
                    string        addKey    = (string)addArgs.Arguments.First(m => m.Key.Equals(KeysArg.Key)).Value;
                    Keys.AddAction(Keys.Action.Add, addEntity, addKey);
                    break;

                case KeysCommand.Back:
                    if (Keys.Pending > 0)
                    {
                        ProcessLog(ProcessPrint.Warn, "There are pending changes to apply!");
                        ProcessLog(ProcessPrint.Question, "Do you want to discard the changes (y/n)");
                        if (Console.ReadLine().ToBool())
                        {
                            Keys.Discard();
                        }
                        else
                        {
                            Keys.Save();
                        }
                    }
                    break;

                case KeysCommand.Clear: Console.Clear(); break;

                case KeysCommand.Del:
                    MenuEventArgs delArgs   = ProcessCommandArgs(Menu.Keys, KeysCommand.Del, cmd);
                    string        delEntity = (string)delArgs.Arguments.First(m => m.Key.Equals(KeysArg.Entity)).Value;
                    Keys.AddAction(Keys.Action.Del, delEntity, "");
                    break;

                case KeysCommand.Discard: Keys.Discard(); break;

                case KeysCommand.Exit: return(true);

                case KeysCommand.Help: HelpPrints.PrintKeyshelp(); break;

                case KeysCommand.Invalid:
                    ProcessLog(ProcessPrint.Error, "Invalid command", true);
                    break;

                case KeysCommand.List:
                    MenuEventArgs listArgs = ProcessCommandArgs(Menu.Keys, KeysCommand.List, cmd);
                    bool          showKey  = (bool)listArgs.Arguments.First(m => m.Key.Equals(KeysArg.ShowKey)).Value;
                    Program.database.PrintEntities(showKey);
                    break;

                case KeysCommand.ListChanges: Keys.PrintChanges(); break;

                case KeysCommand.Save: Keys.Save(); break;
                }
            }
            return(false);
        }