예제 #1
0
파일: Program.cs 프로젝트: prozum/cas.net
    public void EvaluateInput()
    {
        Expression res;
        TextIter   insertIter = Buffer.StartIter;

        if (InputView.Buffer.Text.Length == 0)
        {
            Buffer.InsertWithTagsByName(ref insertIter, "No input\n", "error");
            return;
        }

        Eval.Parse(InputView.Buffer.Text);

        res = Eval.Evaluate();

        if (res is Error)
        {
            Eval.SideEffects.Add(new ErrorData(res as Error));
        }
        else if (!(res is Null))
        {
            Buffer.Insert(ref insertIter, "ret: " + res.ToString() + "\n");
        }

        foreach (var data in Eval.SideEffects)
        {
            if (data is PrintData)
            {
                Buffer.Insert(ref insertIter, data.ToString() + "\n");
            }
            else if (data is ErrorData)
            {
                Buffer.InsertWithTagsByName(ref insertIter, data.ToString() + "\n", "error");
            }
            else if (data is DebugData && Eval.GetBool("debug"))
            {
                Buffer.InsertWithTagsByName(ref insertIter, data.ToString() + "\n", "debug");
            }
            else if (data is PlotData)
            {
                DrawView.Plot(data as PlotData);
                DrawView.Show();
            }
            else if (data is WidgetData)
            {
                WidgetView.AddWidget(data as WidgetData);
                WidgetView.Show();
            }
        }
    }
예제 #2
0
        private static void LoadView(this WidgetId id, bool systemStartup = false)
        {
            WidgetView widgetView = null;

            try
            {
                foreach (var view in App.WidgetViews.Where(view => view.Id == id).ToList())
                {
                    view.Close();
                }

                widgetView = new WidgetView(id, id.GetNewViewModel(), id.GetNewControlView(), systemStartup);
                App.WidgetViews.Add(widgetView);
                widgetView.Show();
            }
            catch (Exception ex)
            {
                widgetView?.Close();
                var name = id.GetName();
                Popup.ShowAsync($"{name} failed to load.\n\n{ex.Message}", image: MessageBoxImage.Error);
            }
        }
예제 #3
0
        public override void Start(object[] args = null)
        {
            base.Start(args);

            ApplyScreenSettings();

            WidgetView.Show();

            if (!SavePrefsManager.GetBool(SavePrefsManager.DMARKET_USER_AGREEMENTS))
            {
                ApplyState <UserAgreementsState>();
                return;
            }

            if (Controller.IsLogged)
            {
                ApplyState <BasicWidgetLoggedFormState>();
            }
            else
            {
                ApplyState <BasicWidgetLoginFormState>();
            }
        }
예제 #4
0
        public void Show(bool animate = true, bool activate = false)
        {
            if (_view.AnimationRunning || _view.IsVisible ||
                ((App.IsMuted || _settings.IsMuted()) && !_settings.IgnoreMute) ||
                _settings.ForceHide)
            {
                return;
            }
            if (animate && _settings.Style.AnimationTime != 0)
            {
                _view.Animate(AnimationMode.Show, activate);
            }
            else
            {
                _view.Show();
            }
            if (activate && _settings.ActivateOnShow)
            {
                _view.Activate();
            }

            _view.ViewModel.OnShow();
        }
예제 #5
0
        public static void Animate(this WidgetView view, AnimationMode animationMode, bool focus = false,
                                   Action astartAction = null,
                                   Action aendAction   = null,
                                   bool?isDocked       = null,
                                   HorizontalAlignment?dockHorizontalAlignment = null,
                                   VerticalAlignment?dockVerticalAlignment     = null)
        {
            var settings = view.Id.GetSettings();

            var horizontalAlignment = dockHorizontalAlignment ?? settings.HorizontalAlignment;
            var verticalAlignment   = dockVerticalAlignment ?? settings.VerticalAlignment;
            var docked = isDocked ?? settings.IsDocked;

            view.RenderTransformOrigin = new Point(0.5, 0.5);
            if (docked)
            {
                switch (horizontalAlignment)
                {
                case HorizontalAlignment.Left:
                    view.RenderTransformOrigin = new Point(0, view.RenderTransformOrigin.Y);
                    break;

                case HorizontalAlignment.Right:
                    view.RenderTransformOrigin = new Point(1, view.RenderTransformOrigin.Y);
                    break;
                }
                switch (verticalAlignment)
                {
                case VerticalAlignment.Top:
                    view.RenderTransformOrigin = new Point(view.RenderTransformOrigin.X, 0);
                    break;

                case VerticalAlignment.Bottom:
                    view.RenderTransformOrigin = new Point(view.RenderTransformOrigin.X, 1);
                    break;
                }
            }

            Action startAction = delegate
            {
                if (animationMode == AnimationMode.Show)
                {
                    view.Show();
                }
                astartAction?.Invoke();
                view.AnimationRunning = true;
            };
            Action finishAction = delegate
            {
                if (animationMode == AnimationMode.Hide)
                {
                    view.Hide();
                }
                else
                {
                    if (focus && view.Settings.RefocusMainElementOnShow)
                    {
                        view.FocusMainElement();
                    }
                }
                aendAction?.Invoke();
                view.AnimationRunning = false;
            };

            if (settings.Style.AnimationType == AnimationType.None)
            {
                startAction();
                finishAction();
                return;
            }

            var doubleAnimation = new DoubleAnimation
            {
                Duration       = new Duration(TimeSpan.FromMilliseconds(settings.Style.AnimationTime)),
                From           = animationMode == AnimationMode.Show ? 0 : 1,
                To             = animationMode == AnimationMode.Show ? 1 : 0,
                FillBehavior   = FillBehavior.Stop,
                EasingFunction = settings.Style.AnimationEase
                    ? new SineEase
                {
                    EasingMode = animationMode == AnimationMode.Show ? EasingMode.EaseIn : EasingMode.EaseOut
                }
                    : null
            };

            // Start animation.
            startAction();
            switch (settings.Style.AnimationType)
            {
            case AnimationType.Fade:
                var storyBoard = new Storyboard();
                storyBoard.Completed += (sender, args) => finishAction();
                storyBoard.Children.Add(doubleAnimation);
                Storyboard.SetTarget(doubleAnimation, view);
                Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(UIElement.OpacityProperty));
                storyBoard.Begin();
                break;

            case AnimationType.Slide:
                var counter = 0;
                doubleAnimation.Completed += delegate
                {
                    counter++;
                    if (counter == 2)
                    {
                        finishAction();
                    }
                };
                var trans = new ScaleTransform();
                view.RenderTransform = trans;
                trans.BeginAnimation(ScaleTransform.ScaleXProperty, doubleAnimation);
                trans.BeginAnimation(ScaleTransform.ScaleYProperty, doubleAnimation);
                break;

            default:
                finishAction();
                break;
            }
        }