public void Initialize(Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, Type selectedType = null)
        {
            var types       = _manager.GetModules();
            var targetTypes = _manager.GetModules(valueType, side);

            SelectedType = selectedType;

            foreach (var type in types)
            {
                var itemView = new SelectActionItemView();
                itemView.Text = Lazurite.ActionsDomain.Utils.ExtractHumanFriendlyName(type);
                itemView.Icon = Icons.LazuriteIconAttribute.GetIcon(type);
                if (itemView.Icon == Icons.Icon._None)
                {
                    itemView.Icon = Icons.Icon.Brick;
                }
                itemView.HorizontalAlignment = HorizontalAlignment.Stretch;
                itemView.Tag    = type;
                itemView.Click += (o, e) => {
                    SelectedType = itemView.Tag as Type;
                    SelectionChanged?.Invoke(this);
                };
                itemView.IsEnabled = targetTypes.Any(x => x.Equals(type));
                var category = CategoryAttribute.Get(type);
                switch (category)
                {
                case Category.Control:
                    itemsViewControl.Children.Add(itemView);
                    break;

                case Category.DateTime:
                    itemsViewDateTime.Children.Add(itemView);
                    break;

                case Category.Geolocation:
                    itemsViewGeolocation.Children.Add(itemView);
                    break;

                case Category.Meta:
                    itemsViewMeta.Children.Add(itemView);
                    break;

                case Category.Multimedia:
                    itemsViewMedia.Children.Add(itemView);
                    break;

                case Category.Administration:
                case Category.Other:
                    itemsViewOther.Children.Add(itemView);
                    break;
                }
            }
        }
示例#2
0
        public void Initialize(Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, string selectedScenarioId = "")
        {
            var scenarioActionSource = new ScenarioActionSource(
                UsersRepository.SystemUser,
                ScenarioStartupSource.OtherScenario,
                side == ActionInstanceSide.OnlyRight ? ScenarioAction.ViewValue : ScenarioAction.Execute);
            var scenarios = ScenariosRepository.Scenarios.Where(x => valueType == null || x.ValueType.GetType().Equals(valueType));

            if (side == ActionInstanceSide.OnlyRight)
            {
                scenarios = scenarios.Where(x => !(x.ValueType is ButtonValueType) && x.IsAccessAvailable(scenarioActionSource));
            }
            else
            {
                scenarios = scenarios.Where(x => x.IsAccessAvailable(scenarioActionSource));
            }

            foreach (var scenario in scenarios)
            {
                var itemView = new ItemView();
                itemView.Content = scenario.Name;
                if (scenario.Id.Equals(selectedScenarioId))
                {
                    Loaded += (o, e) => itemView.Selected = true;
                }
                itemView.Icon   = Icons.Icon.ChevronRight;
                itemView.Tag    = scenario;
                itemView.Margin = new Thickness(2);
                itemView.Click += (o, e) =>
                {
                    SelectedScenario = itemView.Tag as ScenarioBase;
                    SelectionChanged?.Invoke(this);
                };
                itemsView.Children.Add(itemView);
            }

            if (itemsView.Children.Count > 0)
            {
                tbScensNotExist.Visibility = Visibility.Collapsed;
                MinHeight = 0;
            }
        }
示例#3
0
        /// <summary>
        /// Get all types in module libraries
        /// </summary>
        /// <returns></returns>
        public Type[] GetModules(Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both)
        {
            var  result             = new List <Type>();
            bool isValueTypeSupport = false;
            bool rightSide          = false;

            var allTypes =
                new Type[] {
                typeof(GetStateVTAction),
                typeof(GetDateTimeVTAction),
                typeof(GetFloatVTAction),
                typeof(GetInfoVTAction),
                typeof(GetToggleVTAction),
                typeof(GetInputValueAction),
                typeof(GetPreviousValueAction),
                typeof(GetExistingScenarioValueAction),
                typeof(RunExistingScenarioAction),
            }.Union(
                _allTypes
                .OrderBy(x => x.Plugin.Name)
                .Select(x => x.Type));

            foreach (var type in allTypes)
            {
                isValueTypeSupport = valueType == null ||
                                     (valueType.Equals(typeof(InfoValueType)) && side == ActionInstanceSide.OnlyRight) ||
                                     ActionsDomain.Utils.IsComparableWithValueType(type, valueType);
                rightSide = (side == ActionInstanceSide.Both) ||
                            (side == ActionInstanceSide.OnlyLeft &&
                             !ActionsDomain.Utils.IsOnlyGetValue(type)) ||
                            (side == ActionInstanceSide.OnlyRight &&
                             !ActionsDomain.Utils.IsOnlyExecute(type));

                if (rightSide && isValueTypeSupport)
                {
                    result.Add(type);
                }
            }
            return(result.ToArray());
        }
示例#4
0
        public static void Show(Action <ScenarioBase> selectedCallback, Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, string selectedScenarioId = "")
        {
            var control    = new SelectScenarioView();
            var dialogView = new DialogView(control);

            control.Initialize(valueType, side, selectedScenarioId);
            control.SelectionChanged += (ctrl) =>
            {
                selectedCallback?.Invoke(control.SelectedScenario);
                dialogView.Close();
            };
            dialogView.Show();
        }
        public static void Show(Action <Type> selectedCallback, Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, Type selectedType = null)
        {
            var control    = new SelectActionView();
            var dialogView = new DialogView(control);

            control.Initialize(valueType, side, selectedType);
            control.SelectionChanged += (ctrl) =>
            {
                selectedCallback?.Invoke(control.SelectedType);
                dialogView.Close();
            };
            dialogView.Show();
        }
示例#6
0
        public static void Show(Action <ScenarioBase, RunExistingScenarioMode> selectedCallback, Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, string selectedScenarioId = "", RunExistingScenarioMode runMode = RunExistingScenarioMode.Synchronously)
        {
            var control    = new SelectScenarioAndRunModeView();
            var dialogView = new DialogView(control);

            control.Initialize(valueType, side, selectedScenarioId, runMode);
            control.SelectionChanged += (ctrl) =>
            {
                selectedCallback?.Invoke(control.SelectedScenario, control.SelectedMode);
                dialogView.Close();
            };
            dialogView.Show();
        }