protected AutocompleteItem(IFunctionsDetails sharedViewState)
        {
            this.sharedViewState = sharedViewState;
#if USE_TEXT_WIDTH
            TextWidth = 400;
#endif
        }
Beispiel #2
0
        private static void AddSignatureWithType(string name, string addition, string additionWithType, string typeName,
                                                 List <AutocompleteItem> items, IFunctionsDetails functionDetails)
        {
            var imageIndex = GetImageIndexFromType(typeName);

            items.Add(new AutocompleteItem(name, addition, additionWithType,
                                           TypeNameToAlias(typeName), imageIndex, functionDetails));
        }
Beispiel #3
0
        GetFunctionsNamesWithDescription(Type type, IFunctionsDetails functionDetails, bool noMethod = false,
                                         bool fullName = false)
        {
            var items = new List <AutocompleteItem>();

            if (!noMethod)
            {
                foreach (var m in type.GetMethods(BindingFlags.Static | BindingFlags.Public))
                {
                    var fullNameExtension = "";
                    if (fullName)
                    {
                        fullNameExtension = m.ReflectedType.Name + ".";
                    }

                    if (m.IsGenericMethod || m.IsGenericMethodDefinition)
                    {
                        var sigWithTypes             = m.GetSignature();
                        var nameAndAdditionWithTypes = sigWithTypes.Split('(');
                        var sig             = m.GetSignature(true);
                        var nameAndAddition = sig.Split('(');

                        items.Add(new AutocompleteItem(nameAndAddition[0], MakeAddition(m, false), MakeAddition(m, true),
                                                       TypeNameToAlias(m.ReturnType.Name), GetImageIndexFromType(m.ReturnType.Name), functionDetails));
                    }
                    else
                    {
                        AddSignatureWithType(fullNameExtension + m.Name, MakeAddition(m, false), MakeAddition(m, true),
                                             IsDynamic(m)
                                ? /*&& m.GetParameters().Length>0 ? m.GetParameters()[0].ParameterType.Name*/ "T"
                                : m.ReturnType.Name, items, functionDetails);
                    }

                    AddMetadata(m, type, items);
                }
            }

            foreach (var p in type.GetProperties(BindingFlags.Static | BindingFlags.Public))
            {
                AddSignatureWithType(p.Name, "", "", p.PropertyType.Name, items, functionDetails);
                AddMetadata(p, type, items);
            }

            foreach (var f in type.GetFields(BindingFlags.Static | BindingFlags.Public))
            {
                AddSignatureWithType(f.Name, "", "", f.FieldType.Name, items, functionDetails);
                AddMetadata(f, type, items);
            }

            foreach (var t in type.GetNestedTypes())
            {
                items.AddRange(GetFunctionsNamesWithDescription(t, functionDetails, noMethod, fullName));
            }

            items.RemoveAll(i => i.Text == "ToCode");
            return(items);
        }
Beispiel #4
0
 public SubstringAutocompleteItem(string text, IFunctionsDetails functionsDetails, bool ignoreCase = true)
     : base(text, functionsDetails)
 {
     this.ignoreCase = ignoreCase;
     if (ignoreCase)
     {
         lowercaseText = text.ToLower();
     }
 }
 public AvalonEditCodeEditor(ISharedViewState sharedViewState, IFunctionsDetails functionsDetails)
 {
     _sharedViewState = sharedViewState;
     completionDatas  =
         CompletionDataConverter.ConvertAutocompleteItemsToCompletionDatas(
             AutocompletionData.GetAutocompleteItemsForScripting(functionsDetails));
     InitializeComponent();
     _documents =
         new Dictionary <string, TextDocument>();
     TextArea.TextView.LineTransformers.Add(_offsetColorizer);
 }
Beispiel #6
0
        public AutocompleteMenuHost(AutocompleteMenu menu, IFunctionsDetails functionsDetails)
        {
            AutoClose = false;
            AutoSize  = false;

            Margin  = Padding.Empty;
            Padding = Padding.Empty;

            Menu = menu;
            _functionsDetails = functionsDetails;
            ListView          = new AutocompleteListView(functionsDetails);
        }
Beispiel #7
0
        public static AutocompleteItem[] GetAutocompleteItemsForScripting(IFunctionsDetails functionDetails)
        {
            var items = GetAutocompleteItemsForExpressions(functionDetails).ToList();

            items.AddRange(GetFunctionsNamesWithDescription(typeof(MatrixFunctions), functionDetails));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(MathematicalTransformations), functionDetails));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(ScriptingFunctions), functionDetails));
            items.AddRange(TslCompiler.Keywords.Select(s => new AutocompleteItem(s, functionDetails)));


            items.Sort((i1, i2) => i1.Text.CompareTo(i2.Text));
            items.ForEach(i => i.IsScripting = true);
            return(items.ToArray());
        }
        public AutocompleteItem(string name, string addition, string additionWithTypes, string returnTypeName,
                                int imageIndex, IFunctionsDetails sharedViewState) : this(sharedViewState)
        {
            Text = name + addition;
            _textForComparison = name.ToLowerInvariant();


            ImageIndex = imageIndex;

            _name              = name;
            _returnTypeName    = returnTypeName;
            _addition          = addition;
            _additionWithTypes = additionWithTypes;
        }
Beispiel #9
0
        public ExpressionTextBox(ISharedViewState sharedViewState, IFunctionsDetails functionsDetails)
        {
            _sharedViewState  = sharedViewState;
            _functionsDetails = functionsDetails;
            KeyPress         += ExpressionTextBox_KeyPress;
            _autocompleteMenu = new AutocompleteMenu.AutocompleteMenu(_sharedViewState, _functionsDetails);
            _autocompleteMenu.SetAutocompleteMenu(this, _autocompleteMenu);

            GotFocus         += ExpressionTextBox_GotFocus;
            MouseDoubleClick += Control_MouseDoubleClick;
            SetFont(Settings.Default.ExpressionFont);
            SizeChanged +=
                (o, e) =>
            {
                _autocompleteMenu.MaximumSize = new Size(Size.Width, _autocompleteMenu.MaximumSize.Height);
            };

            Settings.Default.PropertyChanged += (o, e) =>
            {
                switch (e.PropertyName)
                {
                case nameof(Settings.Default.FunctionsOrder):
                    RefreshAutoComplete();
                    break;

                case nameof(Settings.Default.ExpressionFont):
                    SetFont(Settings.Default.ExpressionFont);
                    break;
                }
            };

            if (!DesignMode)
            {
                RefreshAutoComplete();
                _sharedViewState.PropertyChanged += (o, e) =>
                {
                    if (e.PropertyName == nameof(SharedViewState.IsExponent))
                    {
                        _showCaret();
                    }
                };
            }
        }
Beispiel #10
0
        public AutocompleteMenu(ISharedViewState sharedViewState, IFunctionsDetails functionsDetails)
        {
            _sharedViewState  = sharedViewState;
            _functionsDetails = functionsDetails;
            Host = new AutocompleteMenuHost(this, _functionsDetails);
            Host.ListView.ItemSelected += ListView_ItemSelected;
            Host.ListView.ItemHovered  += ListView_ItemHovered;
            VisibleItems   = new List <AutocompleteItem>();
            Enabled        = true;
            AppearInterval = 500;
            timer.Tick    += timer_Tick;
            MaximumSize    = new Size(2000, 200);
            AutoPopup      = true;

            SearchPattern     = @"[\w\.]";
            MinFragmentLength = 2;

            setupAutocomplete();
        }
 public ScintillaCodeEditorControl(ISharedViewState sharedViewState, IFunctionsDetails functionsDetails)
 {
     _sharedViewState  = sharedViewState;
     _functionsDetails = functionsDetails;
     _autocompleteMenu = new AutocompleteMenu.AutocompleteMenu(sharedViewState, _functionsDetails)
     {
         TargetControlWrapper = new ScintillaWrapper(this),
         MaximumSize          = new Size(500, 180)
     };
     _autocompleteMenu.SetAutocompleteItems(AutocompletionData.GetAutocompleteItemsForScripting(_functionsDetails));
     //_autocompleteMenu.CaptureFocus = true;
     InitializeComponent();
     // this.BorderStyle=BorderStyle.None;
     Dock         = DockStyle.Fill;
     _documents   = new Dictionary <string, Document>();
     SizeChanged +=
         (o, e) =>
     {
         _autocompleteMenu.MaximumSize = new Size(Size.Width, _autocompleteMenu.MaximumSize.Height);
     };
 }
Beispiel #12
0
 internal AutocompleteListView(IFunctionsDetails functionDetails)
 {
     _functionDetails = functionDetails;
     // functionsDetails = new Dictionary<string, FunctionInfo>();
     toolTip = new WebBrowserToolTip();
     SetStyle(
         ControlStyles.AllPaintingInWmPaint |
         ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint,
         true);
     base.Font  = new Font(FontFamily.GenericSansSerif, 9);
     ItemHeight = Font.Height + 2;
     VerticalScroll.SmallChange = ItemHeight;
     BackColor       = Color.White;
     LeftPadding     = 18;
     ToolTipDuration = 3000;
     // this.LostFocus += Control_LostFocus;
     //this.VisibleChanged += Control_VisibleChanged;
     //this.ClientSizeChanged += Control_ClientSizeChanged;
     // toolTip.Click += ToolTip_Click;
     //  toolTip.LostFocus += ToolTip_LostFocus;
     formTip       = new WebBrowserForm();
     Colors        = new Colors();
     AutoScaleMode = AutoScaleMode.None;
 }
 public FunctionsCommand(ITextProvider expressionTextProvider, IScriptProvider scriptingTextProvider, IScriptProvider customFunctionsTextProvider, ISharedViewState sharedViewState, IFunctionsDetails functionsDetails, IClickedMouseButtonsProvider clickedMouseButtonsProvider, IShowFunctionDetails showFunctionDetails) : base(MenuStrings.functionsToolStripMenuItem_Text,
                                                                                                                                                                                                                                                                                                                                    new Dictionary <string, string>()
 {
     { "ElementaryFunctions", MenuStrings.elementaryFunctionsToolStripMenuItem_Text },
     { "SpecialFunctions", MenuStrings.specialFunctionsToolStripMenuItem_Text }
 },
                                                                                                                                                                                                                                                                                                                                    expressionTextProvider, scriptingTextProvider, customFunctionsTextProvider, sharedViewState, functionsDetails, clickedMouseButtonsProvider, showFunctionDetails)
 {
 }
Beispiel #14
0
 public FuzzyAutoCompleteItem(string text, IFunctionsDetails functionsDetails) : base(text, functionsDetails)
 {
     _functionsDetails = functionsDetails;
 }
Beispiel #15
0
 public MethodAutocompleteItem(string text, IFunctionsDetails functionsDetails)
     : base(text, functionsDetails)
 {
     lowercaseText = Text.ToLower();
 }
Beispiel #16
0
 public FuzzyAutoCompleteItem(string name, string addition, string additionWithTypes, string returnTypeName,
                              int imageIndex, IFunctionsDetails functionsDetails) : base(name, addition, additionWithTypes, returnTypeName, imageIndex, functionsDetails)
 {
     _functionsDetails = functionsDetails;
 }
Beispiel #17
0
 public FunctionOrConstantCommand(string text, string toolTip, ITextProvider expressionTextProvider,
                                  IScriptProvider scriptingTextProvider, IScriptProvider customFunctionsTextProvider, ISharedViewState sharedViewState, IFunctionsDetails functionsDetails, IClickedMouseButtonsProvider clickedMouseButtonsProvider, IShowFunctionDetails showFunctionDetails)
 {
     Text    = text;
     ToolTip = toolTip;
     _expressionTextProvider      = expressionTextProvider;
     _scriptingTextProvider       = scriptingTextProvider;
     _customFunctionsTextProvider = customFunctionsTextProvider;
     _sharedViewState             = sharedViewState;
     this._functionsDetails       = functionsDetails;
     _clickedMouseButtonsProvider = clickedMouseButtonsProvider;
     _showFunctionDetails         = showFunctionDetails;
 }
        private static List <IToolbarCommand> BuildFunctionsOrConstantsCommands(string key, ITextProvider expressionTextProvider, IScriptProvider scriptingTextProvider, IScriptProvider customFunctionsTextProvider, ISharedViewState sharedViewState, IFunctionsDetails functionsDetails, IClickedMouseButtonsProvider mouseButtonsProvider, IShowFunctionDetails showFunctionDetails)
        {
            var dict = new Dictionary <string, IToolbarCommand>();

            var functions = functionsDetails.ToArray();


            foreach (var f in functions)
            {
                if (f.Value.Type != key)
                {
                    continue;
                }


                if (f.Value.Category == "")
                {
                    f.Value.Category = "_empty_";
                }

                if (!dict.ContainsKey(f.Value.Category))
                {
                    //var cat = new ToolStripMenuItem(f.Value.Category) { Name = f.Value.Category };
                    var command = new DummyCommand(f.Value.Category)
                    {
                        ChildrenCommands = new List <IToolbarCommand>()
                    };
                    dict.Add(f.Value.Category, command);
                }
                (dict[f.Value.Category].ChildrenCommands as List <IToolbarCommand>).Add(
                    new FunctionOrConstantCommand(f.Value.Signature, f.Value.Title, expressionTextProvider,
                                                  scriptingTextProvider, customFunctionsTextProvider, sharedViewState, functionsDetails, mouseButtonsProvider, showFunctionDetails));
            }

            return(dict.Values.ToList());
        }
 public AutocompleteItem(string text, IFunctionsDetails sharedViewState) : this(sharedViewState)
 {
     Text = text;
     _textForComparison = text.ToLowerInvariant();
 }
Beispiel #20
0
 public CompletionData(string text, string menuText, FunctionInfo functionInfo, int imageIndex, IFunctionsDetails functionsDetails)
 {
     Text     = text;
     _content = menuText;
     _alternativeDescription = functionInfo;
     this._functionsDetails  = functionsDetails;
     //////////////////////////////////// this._image= imageIndexToImage(imageIndex).ToBitmapSource();//TODO: implement image show
 }
Beispiel #21
0
        //private int imageIndex;//TODO: implement image show

        public CompletionData(string text, IFunctionsDetails functionsDetails)
        {
            Text = text;
            this._functionsDetails = functionsDetails;
        }
 public ConstantsCommand(ITextProvider expressionTextProvider, IScriptProvider scriptingTextProvider, IScriptProvider customFunctionsTextProvider, ISharedViewState sharedViewState, IFunctionsDetails functionsDetails, IClickedMouseButtonsProvider clickedMouseButtonsProvider, IShowFunctionDetails showFunctionDetails) : base(MenuStrings.constantsToolStripMenuItem_Text,
                                                                                                                                                                                                                                                                                                                                    new Dictionary <string, string>()
 {
     { "MathematicalConstants", MenuStrings.mathematicalConstantsToolStripMenuItem_Text },
     { "PhysicalConstants", MenuStrings.physicalConstantsToolStripMenuItem_Text }
 },
                                                                                                                                                                                                                                                                                                                                    expressionTextProvider, scriptingTextProvider, customFunctionsTextProvider, sharedViewState, functionsDetails, clickedMouseButtonsProvider, showFunctionDetails)
 {
 }
        public FunctionDetailsBasedCommand(string name, Dictionary <string, string> KeyAndNameOfCommandCollection, ITextProvider expressionTextProvider, IScriptProvider scriptingTextProvider, IScriptProvider customFunctionsTextProvider, ISharedViewState sharedViewState, IFunctionsDetails functionsDetails, IClickedMouseButtonsProvider mouseButtonsProvider, IShowFunctionDetails showFunctionDetails) : base(name)
        {
            var childrenCommands = new List <IToolbarCommand>();

            foreach (var keyValue in KeyAndNameOfCommandCollection)
            {
                childrenCommands.Add(new DummyCommand(keyValue.Value)
                {
                    ChildrenCommands = BuildFunctionsOrConstantsCommands(keyValue.Key, expressionTextProvider,
                                                                         scriptingTextProvider, customFunctionsTextProvider, sharedViewState, functionsDetails, mouseButtonsProvider, showFunctionDetails)
                });
            }

            ChildrenCommands = childrenCommands;
        }
Beispiel #24
0
        public static AutocompleteItem[] GetAutocompleteItemsForExpressions(IFunctionsDetails functionsDetails,
                                                                            bool removeAdvanced = false)
        {
            var items = GetFunctionsNamesWithDescription(typeof(ElementaryFunctions), functionsDetails);

            items.AddRange(GetFunctionsNamesWithDescription(typeof(FunctionRoot), functionsDetails, false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Integral), functionsDetails, false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Derivative), functionsDetails, false, true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(StatisticsFunctions), functionsDetails));


            items.AddRange(GetFunctionsNamesWithDescription(typeof(Normal), functionsDetails, false, true));


            items.AddRange(GetFunctionsNamesWithDescription(typeof(Bernoulli), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Beta), functionsDetails, false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Binomial), functionsDetails, false,
                                                            true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(Categorical), functionsDetails, false,
                                                            true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(Cauchy), functionsDetails, false, true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(Chi), functionsDetails, false, true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(ChiSquared), functionsDetails, false,
                                                            true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(ContinuousUniform), functionsDetails,
                                                            false, true));

            items.AddRange(GetFunctionsNamesWithDescription(
                               typeof(ConwayMaxwellPoisson), functionsDetails, false, true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(Dirichlet), functionsDetails, false,
                                                            true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(DiscreteUniform), functionsDetails,
                                                            false, true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(Erlang), functionsDetails, false, true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(Exponential), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(FisherSnedecor), functionsDetails,
                                                            false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Gamma), functionsDetails, false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Geometric), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Hypergeometric), functionsDetails,
                                                            false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(InverseGamma), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(InverseWishart), functionsDetails,
                                                            false, true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(Laplace), functionsDetails, false, true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(LogNormal), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(MatrixNormal), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Multinomial), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(NegativeBinomial), functionsDetails,
                                                            false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(NormalGamma), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Pareto), functionsDetails, false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Poisson), functionsDetails, false, true));

            items.AddRange(GetFunctionsNamesWithDescription(typeof(Rayleigh), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Stable), functionsDetails, false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(StudentT), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Triangular), functionsDetails, false,
                                                            true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Weibull), functionsDetails, false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Wishart), functionsDetails, false, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(Zipf), functionsDetails, false, true));


            items.AddRange(GetFunctionsNamesWithDescription(typeof(SpecialFunctions), functionsDetails));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(MathematicalConstants), functionsDetails, true));
            items.AddRange(GetFunctionsNamesWithDescription(typeof(PhysicalConstants), functionsDetails, true));



            items.RemoveAll(i => i.Text == "ToCode");

            if (removeAdvanced)
            {
                items.RemoveAll(i => i.ImageIndex == -1);
            }

            return(items.ToArray());
        }