コード例 #1
0
ファイル: UdfEditor.cs プロジェクト: Mnrikard/Clippy
        private void ExecuteSubFunctions(EditorManager manager)
        {
            while (_selectedFunction.SubFunctions.Any())
            {
                string function = ReplaceDynamicParameters(_selectedFunction.SubFunctions.Dequeue());

                string[] fargs = function.ParseArguments();

                manager.GetClipEditor(fargs[0]);
                manager.ClipEditor.EditorResponse += HandleResponseFromClippy;
                manager.ClipEditor.DefineParameters();
                manager.ClipEditor.SetParameters(fargs);

                if (!manager.ClipEditor.HasAllParameters)
                {
                    throw new Exception(String.Format("Not all parameters are passed in the user defined function {0}, function: {1}", _udfName, function));
                }

                manager.ClipEditor.SourceData = SourceData;
                manager.ClipEditor.Edit();
                SourceData = manager.ClipEditor.SourceData;
                manager.ClipEditor.EditorResponse -= HandleResponseFromClippy;
            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: Mnrikard/Clippy
        private void FunctionOnLeave(object sender, EventArgs e)
        {
            errorLabel.Text     = String.Empty;
            functions.BackColor = Color.White;

            string[] arguments = clipManager.GetArgumentsFromString(functions.Text);
            if (arguments.Length == 0)
            {
                return;
            }

            if (functions.Text.Equals(_currentCommand, StringComparison.CurrentCultureIgnoreCase))
            {
                string[] newArgs = new string[parametersGrid.Rows.Count + 1];
                newArgs[0] = arguments[0];
                for (int ia = 1; ia < newArgs.Length; ia++)
                {
                    newArgs[ia] = parametersGrid.Rows[ia - 1].Cells[1].Value.ToString();
                }
                arguments = newArgs;
            }

            _currentCommand = arguments[0];

            clipManager.GetClipEditor(arguments[0]);
            clipManager.ClipEditor.EditorResponse           += HandleResponseFromClippy;
            clipManager.ClipEditor.PersistentEditorResponse += HandlePersistentResponse;
            try
            {
                clipManager.ClipEditor.SetParameters(arguments);
            }
            catch (ClippyLib.InvalidParameterException pe)
            {
                MessageBox.Show(pe.ParameterMessage, "Error creating parameters", MessageBoxButtons.OK, MessageBoxIcon.Error);
                functions.Focus();
            }
            catch (ClippyLib.UndefinedFunctionException udfe)
            {
                errorLabel.Text     = udfe.FunctionMessage;
                functions.BackColor = Color.Yellow;
                functions.Focus();
                return;
            }

            DataTable parms = new DataTable();

            parms.Columns.Add("Parameter");
            parms.Columns.Add("Value");
            foreach (Parameter p in clipManager.ClipEditor.ParameterList)
            {
                DataRow dr = parms.NewRow();
                dr["Parameter"] = p.ParameterName;
                dr["Value"]     = p.Value ?? p.DefaultValue ?? String.Empty;

                parms.Rows.Add(dr);
            }
            parametersGrid.DataSource = parms;

            int parmRow = 0;

            foreach (Parameter p in clipManager.ClipEditor.ParameterList)
            {
                parametersGrid.Rows[parmRow++].Cells[1].ToolTipText = p.Expecting;
            }

            if (clipManager.ClipEditor.ParameterList.Count == 0)
            {
                executeButton.Focus();
            }
        }
コード例 #3
0
ファイル: UdfEditor.cs プロジェクト: acbeard/Clippy
        public override void Edit()
        {
            EditorManager manager = new EditorManager();

            if(_arguments[0].Equals("help", StringComparison.CurrentCultureIgnoreCase))
            {
                RespondToExe(manager.Help(_arguments));
                return;
            }

            List<string> functions = Udf(_arguments);
            if (functions.Count == 0)
                throw new UndefinedFunctionException(String.Format("Function:{0} does not exist or is not valid", _udfName));

            //there could be multiple functions per UDF, one per line
            for (int fi = 0; fi < functions.Count; fi++)
            {
                string function = functions[fi];

                for (int i = 1; i < _arguments.Length; i++)
                {
                    function = function.Replace("%" + (i - 1).ToString() + "%", _arguments[i]);
                }

                for (int i = 0; i < ParameterList.Count; i++)
                {
                    function = function.Replace("%" + i.ToString() + "%", ParameterList[i].Value);
                }

                string[] fargs = GetArgsFromString(function);
                manager.GetClipEditor(fargs[0]);

                manager.ClipEditor.EditorResponse += new EventHandler<EditorResponseEventArgs>(HandleResponseFromClippy);

                manager.ClipEditor.DefineParameters();
                manager.ClipEditor.SetParameters(fargs);
                if (!manager.ClipEditor.HasAllParameters)
                {
                    throw new Exception(String.Format("Not all parameters are passed in the user defined function {0}, function: {1}", _udfName, function));
                }
                manager.ClipEditor.SourceData = SourceData;
                manager.ClipEditor.Edit();
                SourceData = manager.ClipEditor.SourceData;

                manager.ClipEditor.EditorResponse -= HandleResponseFromClippy;

            }
        }