Наследование: MonoBehaviour
Пример #1
0
        private void WriteGroup(OptionGroup group, int nameColumnWidth)
        {
            writer.Write(group.Title);
            writer.WriteLine(":");

            foreach (OptionHelp entry in group)
            {
                string helpName = entry.Name;
                string helpText = entry.HelpText;

                int padding = nameColumnWidth - helpName.Length;
                writer.Write(Settings.IndentChars);
                writer.Write(helpName);

                // Break on long option names.
                if (padding < 0)
                {
                    writer.WriteLine();
                    padding = nameColumnWidth + Settings.IndentChars.Length;
                }

                int totalWidth = Settings.IndentChars.Length + nameColumnWidth + 1 + helpText.Length;
                if (totalWidth <= Settings.MaxLineLength)
                {
                    writer.Write(new string(' ', padding + 1));
                    writer.WriteLine(helpText);
                }
                else
                {
                    writer.Write(new string(' ', padding));
                    WriteTextBlock(helpText, nameColumnWidth);
                }
            }
        }
Пример #2
0
        protected override void SetupHandler()
        {
            OptionGroup toplevelGroup = Handler.AddGroup(TOP_LEVEL);

            //the toplevel group will show neither in Table view nor in dialog view explicitely
            //it's children will be shown one level above
            ((IOptionItem)toplevelGroup).Attributes[TableEditorFactory.RenderingHintsAttribute]   = TableEditorFactory.RenderingHints.Invisible;
            ((IOptionItem)toplevelGroup).Attributes[DefaultEditorFactory.RenderingHintsAttribute] = DefaultEditorFactory.RenderingHints.Invisible;

            OptionGroup spcg = toplevelGroup.AddGroup(SourcePortConstraints);

            spcg.Add(PortConstraintStr, PortConstraintType.Any).Attributes[OptionItem.SupportNullValueAttribute] = false;
            spcg.AddBool(StrongPortConstraint, false);
            OptionGroup tpcg = toplevelGroup.AddGroup(TargetPortConstraints);

            tpcg.Add(PortConstraintStr, PortConstraintType.Any).Attributes[OptionItem.SupportNullValueAttribute] = false;
            tpcg.AddBool(StrongPortConstraint, false);
            CollectionOptionItem <string> scopeItem = toplevelGroup.AddList(Scope, scopes, ScopeAllEdges);
            var clearItem        = toplevelGroup.AddBool(ClearAllConstraints, false);
            ConstraintManager cm = new ConstraintManager(Handler);

            cm.SetEnabledOnValueEquals(clearItem, false, spcg);
            cm.SetEnabledOnValueEquals(clearItem, false, scopeItem);
            cm.SetEnabledOnValueEquals(clearItem, false, tpcg);
        }
Пример #3
0
        private static Option2 <T> CreateCommonOption <T>(OptionGroup group, string name, T defaultValue, params OptionStorageLocation2[] storageLocations)
        {
            var option = new Option2 <T>("CodeStyleOptions", group, name, defaultValue, storageLocations);

            s_allOptionsBuilder.Add(option);
            return(option);
        }
Пример #4
0
        ///<inheritdoc/>
        protected override void SetupHandler()
        {
            BalloonLayout balloonLayout = new BalloonLayout();

            OptionGroup generalGroup = Handler.AddGroup(GENERAL);

            generalGroup.AddList(ROOT_NODE_POLICY, enumRoot.Keys, DIRECTED_ROOT);
            IOptionItem       allowNonTreeItem = generalGroup.AddBool(ALLOW_NON_TREE_EDGES, true);
            IOptionItem       nonTreeStyleItem = generalGroup.AddList(ROUTING_STYLE_FOR_NON_TREE_EDGES, enumRoute, ROUTE_ORTHOGONAL);
            ConstraintManager cm = new ConstraintManager(Handler);

            cm.SetEnabledOnValueEquals(allowNonTreeItem, true, nonTreeStyleItem);
            IOptionItem ebs = generalGroup.AddDouble(EDGE_BUNDLING_STRENGTH, 0.99, 0, 1);

            cm.SetEnabledOnValueEquals(nonTreeStyleItem, ROUTE_BUNDLED, ebs);
            generalGroup.AddBool(ACT_ON_SELECTION_ONLY, false);
            generalGroup.AddInt(PREFERRED_CHILD_WEDGE, balloonLayout.PreferredChildWedge, 1, 359);
            generalGroup.AddInt(PREFERRED_ROOT_WEDGE, balloonLayout.PreferredRootWedge, 1, 360);
            generalGroup.AddInt(MINIMAL_EDGE_LENGTH, balloonLayout.MinimumEdgeLength, 10, int.MaxValue);
            generalGroup.AddDouble(COMPACTNESS_FACTOR, balloonLayout.CompactnessFactor, 0.1, 0.9);
            generalGroup.AddBool(ALLOW_OVERLAPS, balloonLayout.AllowOverlaps);
            generalGroup.AddBool(BALLOON_FROM_SKETCH, balloonLayout.FromSketchMode);
            generalGroup.AddBool(PLACE_CHILDREN_INTERLEAVED, balloonLayout.InterleavedMode == InterleavedMode.AllNodes);
            generalGroup.AddBool(STRAIGHTEN_CHAINS, balloonLayout.ChainStraighteningMode);

            OptionGroup labelingGroup = Handler.AddGroup(LABELING);

            labelingGroup.AddBool(INTEGRATED_EDGE_LABELING, true);
            labelingGroup.AddList(NODE_LABELING_STYLE, nodeLabelingPolicies, nodeLabelingPolicies[3]);
        }
 private OptionGroup SetupOptionGroup(OptionGroup optionGroup)
 {
     optionGroup.Name        = uxNameOptionText.Text;
     optionGroup.Type        = GetOptionGroupType();
     optionGroup.DisplayText = uxDisplayNameText.Text;
     return(optionGroup);
 }
Пример #6
0
        ///<inheritdoc/>
        protected override void SetupHandler()
        {
            OptionGroup scopeGroup = Handler.AddGroup(SCOPE);

            scopeGroup.AddBool(PLACE_NODE_LABELS, true);
            scopeGroup.AddBool(PLACE_EDGE_LABELS, true);
            scopeGroup.AddBool(CONSIDER_SELECTED_FEATURES_ONLY, false);

            OptionGroup qualityGroup = Handler.AddGroup(QUALITY);

            qualityGroup.AddBool(USE_OPTIMIZATION, false);
            qualityGroup.AddOptionItem(new OptionItem(OPTIMIZATION_STRATEGY)
            {
                Value = OptimizationStrategy.Balanced, Type = typeof(OptimizationStrategy)
            });
            qualityGroup.AddBool(ALLOW_NODE_OVERLAPS, false);
            qualityGroup.AddBool(ALLOW_EDGE_OVERLAPS, true);
            qualityGroup.AddBool(USE_POSTPROCESSING, false);

            var edgeLabelGroup   = Handler.AddGroup(MODEL);
            var labelModelItem   = edgeLabelGroup.AddList(EDGE_LABEL_MODEL, edgeLabelModel, BEST);
            var autoRotationItem = edgeLabelGroup.AddBool(AUTO_ROTATE, true);
            ConstraintManager cm = new ConstraintManager(Handler);

            cm.SetEnabledOnCondition(cm.CreateValueIsOneOfCondition(labelModelItem, CENTER_SLIDER, SIDE_SLIDER), autoRotationItem);
        }
Пример #7
0
        public async Task ShouldUpdateSuccessfully()
        {
            var itemGroup    = new ItemGroup().Of(_token.TenantId);
            var optionGroup1 = new OptionGroup().To(itemGroup);
            var optionGroup2 = new OptionGroup().To(itemGroup);
            var option       = new Option().To(optionGroup1);

            _server.Database.ItemGroups.Add(itemGroup);
            _server.Database.OptionGroups.AddRange(optionGroup1, optionGroup2);
            _server.Database.Options.Add(option);

            await _server.Database.SaveChangesAsync();

            var path        = $"/options/{option.Id}";
            var jsonRequest = new SaveOptionJson().Build(groupId: optionGroup2.Id);
            var response    = await _client.PutJsonAsync(path, jsonRequest);

            var jsonResponse = await _client.ReadJsonAsync <OptionJson>(response);

            await _server.Database.Entry(option).ReloadAsync();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(_token.TenantId, option.TenantId);
            Assert.Equal(jsonRequest.GroupId, option.OptionGroupId);
            Assert.Equal(jsonRequest.Name, option.Name);
            Assert.Equal(jsonRequest.Description, option.Description);
            Assert.Equal(jsonRequest.Price, option.Price);
            Assert.Equal(jsonRequest.IsAvailable, option.IsAvailable);
            Assert.Equal(option.Id, jsonResponse.Id);
            Assert.Equal(option.OptionGroupId, optionGroup2.Id);
            Assert.Equal(option.Name, jsonResponse.Name);
            Assert.Equal(option.Description, jsonResponse.Description);
            Assert.Equal(option.Price, jsonResponse.Price);
            Assert.Equal(option.IsAvailable, jsonResponse.Available);
        }
        ///<inheritdoc/>
        protected override void ConfigureLayout()
        {
            CreateOrganic();
            OptionGroup visualGroup    = Handler.GetGroupByName(VISUAL);
            OptionGroup algorithmGroup = Handler.GetGroupByName(ALGORITHM);

            organic.PreferredEdgeLength = (int)visualGroup[PREFERRED_EDGE_LENGTH].Value;
            bool considerNodeLabels = (bool)visualGroup[CONSIDER_NODE_LABELS].Value;

            organic.ConsiderNodeLabels = considerNodeLabels;

            organic.NodeOverlapsAllowed = (bool)visualGroup[ALLOW_NODE_OVERLAPS].Value && !considerNodeLabels;
            organic.MinimumNodeDistance = (double)visualGroup[MINIMAL_NODE_DISTANCE].Value;
            string scopeChoice = (string)visualGroup[SCOPE].Value;

            organic.Scope             = scopes[scopeChoice];
            organic.CompactnessFactor = (double)visualGroup[COMPACTNESS].Value;
            //Doesn't really make sense to ignore node sizes (for certain configurations, this setting
            //doesn't have an effect anyway)
            organic.ConsiderNodeSizes = true;
            organic.ClusterNodes      = (bool)visualGroup[USE_AUTO_CLUSTERING].Value;
            organic.ClusteringQuality = (double)visualGroup[AUTO_CLUSTERING_QUALITY].Value;

            organic.NodeEdgeOverlapAvoided = (bool)visualGroup[AVOID_NODE_EDGE_OVERLAPS].Value;

            organic.Deterministic         = (bool)algorithmGroup[ACTIVATE_DETERMINISTIC_MODE].Value;
            organic.MaximumDuration       = 1000 * ((int)algorithmGroup[MAXIMAL_DURATION].Value);
            organic.QualityTimeRatio      = (double)algorithmGroup[QUALITY_TIME_RATIO].Value;
            organic.MultiThreadingAllowed = (bool)algorithmGroup[ALLOW_MULTI_THREADING].Value;
            ((ComponentLayout)organic.ComponentLayout).Style = ComponentArrangementStyles.MultiRows;

            ConfigureOutputRestrictions();

            LayoutAlgorithm = organic;
        }
Пример #9
0
        void InitialChat()
        {
            option = new OptionGroup();
            option.AddEvent(view.left.userEvent);
            option.AddEvent(view.right.userEvent);
            option.AddEvent(view.center.userEvent);
            option.SelectChanged = SelectChanged;
            option.Selecet       = view.right.userEvent;

            //input = view.input.userEvent as TextInput;

            view.input.OnSubmit = OnSubmit;
            container           = view.chatbox.composite as UIContainer;
            //other = new UILinker<ChatItem, ChatData>(container,view.other);
            other = new UILinker <ChatItem, ChatData>(container, view.other);
            other.LayoutCallback = GetContentSize;
            other.ItemUpdate     = ItemUpdate;
            self = new UILinker <ChatItem, ChatData>(container, view.self);
            self.LayoutCallback = GetContentSize;
            self.ItemUpdate     = ItemUpdate;
            tip = new UILinker <TipItem, TipData>(container, view.tip);
            //tip.ItemUpdate = TipItemUpdate;
            view.send.userEvent.Click = (o, e) => { OnSubmit(view.input); };
            view.ItemText.activeSelf  = false;
            var size = view.ItemText.SizeDelta;

            view.ItemText.GetGenerationSettings(ref size, ref settings);
        }
Пример #10
0
        ///<inheritdoc/>
        protected override void SetupHandler()
        {
            createRouter();
            OptionGroup layoutGroup = Handler.AddGroup(GROUP_LAYOUT);

            ConstraintManager cm = new ConstraintManager(Handler);

            //Layout options
            layoutGroup.AddList(SCOPE, new[] { ALL, SUBSET_BUS, SUBSET, PARTIAL }, ALL);
            layoutGroup.AddList(BUSES, new[] { SINGLE, LABEL, TAG, CUSTOM }, SINGLE);
            IOptionItem gridEnabledItem = layoutGroup.AddBool(GRID_ENABLED, router.GridRouting);
            IOptionItem gridSpacingItem = layoutGroup.AddInt(GRID_SPACING, router.GridSpacing, 1, int.MaxValue);

            layoutGroup.AddInt(MIN_DISTANCE_TO_NODES, router.MinimumDistanceToNode, 1, int.MaxValue);
            layoutGroup.AddInt(MIN_DISTANCE_TO_EDGES, router.MinimumDistanceToEdge, 1, int.MaxValue);
            cm.SetEnabledOnValueEquals(gridEnabledItem, true, gridSpacingItem);

            //Selection options
            OptionGroup selectionGroup = Handler.AddGroup(GROUP_SELECTION);

            selectionGroup.AddInt(PREFERRED_BACKBONE_COUNT, router.PreferredBackboneSegmentCount, 1, int.MaxValue);
            selectionGroup.AddDouble(MINIMUM_BACKBONE_LENGTH, router.MinimumBackboneSegmentLength, 1, double.MaxValue);

            //Routing options
            OptionGroup routingGroup = Handler.AddGroup(GROUP_ROUTING);

            routingGroup.AddDouble(CROSSING_COST, router.CrossingCost, 0, double.MaxValue);
            routingGroup.AddBool(CROSSING_REROUTING, router.Rerouting);
            routingGroup.AddInt(MINIMUM_CONNECTIONS_COUNT, router.MinimumBusConnectionsCount, 0, int.MaxValue);
        }
Пример #11
0
        private static DiceOptions MergeOptions(OptionGroup options)
        {
            var result = new DiceOptions();

            if (options == null)
            {
                return(result);
            }
            foreach (var option in options.Options)
            {
                if (option is FilterOption filter)
                {
                    result.Filter = filter;
                }

                if (option is RankingOption ranking)
                {
                    result.Ranking = ranking;
                }

                if (option is AggregateOption aggregate)
                {
                    result.Aggregation = aggregate.Type;
                }

                if (option is ExplodingOption)
                {
                    result.Exploding = true;
                }
            }
            return(result);
        }
Пример #12
0
        public async Task ShouldRespond422IfGroupHasOptions()
        {
            var itemGroup   = new ItemGroup().Of(_token.TenantId);
            var optionGroup = new OptionGroup().To(itemGroup);
            var option      = new Option().To(optionGroup);

            _server.Database.ItemGroups.Add(itemGroup);
            _server.Database.OptionGroups.Add(optionGroup);
            _server.Database.Options.Add(option);

            await _server.Database.SaveChangesAsync();

            var path     = $"/option-groups/{optionGroup.Id}";
            var response = await _client.DeleteAsync(path);

            var jsonResponse = await _client.ReadJsonAsync <UnprocessableEntityError>(response);

            var hasBeenDeleted = !await _server.Database.OptionGroups
                                 .WhereKey(_token.TenantId, optionGroup.Id)
                                 .AnyAsync();

            Assert.Equal(HttpStatusCode.UnprocessableEntity, response.StatusCode);
            Assert.Equal("OPTION_GROUP_HAS_OPTIONS", jsonResponse.Error);
            Assert.False(hasBeenDeleted);
        }
Пример #13
0
        private void ApplyOptions(OrthogonalLayout layout)
        {
            OptionGroup topLevelGroup = Handler.GetGroupByName(TOP_LEVEL);
            IOptionItem styleItem     = topLevelGroup.GetItemByName(ORTHOGONAL_LAYOUT_STYLE);

            layout.LayoutStyle = styles[(string)styleItem.Value];
        }
Пример #14
0
        private static PerLanguageOption <T> CreateOption <T>(OptionGroup group, string name, T defaultValue, params OptionStorageLocation[] storageLocations)
        {
            var option = new PerLanguageOption <T>(nameof(CodeStyleOptions), group, name, defaultValue, storageLocations);

            s_allOptionsBuilder.Add(option);
            return(option);
        }
        private static Option2 <T> CreateOption <T>(OptionGroup group, string name, T defaultValue, params OptionStorageLocation2[] storageLocations)
        {
            var option = new Option2 <T>(nameof(FormattingOptions), group, name, defaultValue, storageLocations);

            s_allOptionsBuilder.Add(option);
            return(option);
        }
Пример #16
0
        ///<inheritdoc/>
        protected override void SetupHandler()
        {
            ConstraintManager cm            = new ConstraintManager(Handler);
            OptionGroup       toplevelGroup = Handler.AddGroup(TOP_LEVEL);

            //the toplevel group will show neither in Table view nor in dialog view explicitely
            //it's children will be shown one level above
            toplevelGroup.SetAttribute(TableEditorFactory.RENDERING_HINTS_ATTRIBUTE,
                                       (int)TableEditorFactory.RenderingHints.Invisible);
            toplevelGroup.SetAttribute(DefaultEditorFactory.RENDERING_HINTS_ATTRIBUTE,
                                       (int)DefaultEditorFactory.RenderingHints.Invisible);

            OptionGroup generalGroup  = toplevelGroup.AddGroup(GENERAL);
            OptionItem  operationItem = generalGroup.AddList(OPERATION, operationEnum.Keys, SCALE);

            generalGroup.AddBool(ACT_ON_SELECTION_ONLY, false);

            OptionGroup rotateGroup = toplevelGroup.AddGroup(ROTATE);

            cm.SetEnabledOnValueEquals(operationItem, ROTATE, rotateGroup);
            rotateGroup.AddInt(ROTATION_ANGLE, (int)transformer.RotationAngle, -360, 360);
            rotateGroup.AddBool(APPLY_BEST_FIT_ROTATION, applyBestFitRotation);

            OptionGroup scaleGroup = toplevelGroup.AddGroup(SCALE);

            cm.SetEnabledOnValueEquals(operationItem, SCALE, scaleGroup);
            scaleGroup.AddDouble(SCALE_FACTOR, transformer.ScaleFactorX, 0.1, 10.0);
            scaleGroup.AddBool(SCALE_NODE_SIZE, transformer.ScaleNodeSize);

            OptionGroup translateGroup = toplevelGroup.AddGroup(TRANSLATE);

            cm.SetEnabledOnValueEquals(operationItem, TRANSLATE, translateGroup);
            translateGroup.AddDouble(TRANSLATE_X, transformer.TranslateX);
            translateGroup.AddDouble(TRANSLATE_Y, transformer.TranslateY);
        }
Пример #17
0
        /// <summary>
        /// Creates a class type option description
        /// </summary>
        /// <param name="group">	a reference to the option group. </param>
        /// <param name="name">	the name of the option. </param>
        /// <param name="shortDescription">	a short description of the option. </param>
        /// <param name="flag">	a short string that can be used in the command line. </param>
        /// <param name="usage">	a string that explains the usage of the option. </param>
        /// <exception cref="OptionException"> </exception>
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: public ClassOption(org.maltparser.core.options.OptionGroup group, String name, String shortDescription, String flag, String usage) throws org.maltparser.core.exception.MaltChainedException
        public ClassOption(OptionGroup group, string name, string shortDescription, string flag, string usage) : base(group, name, shortDescription, flag, usage)
        {
            legalValues      = Collections.synchronizedSortedSet(new SortedSet <string>());
            legalValueDesc   = Collections.synchronizedMap(new Dictionary <string, string>());
            legalValueClass  = Collections.synchronizedMap(new Dictionary <string, Type>());
            classLegalValues = Collections.synchronizedMap(new Dictionary <Type, string>());
        }
        protected override void SetupHandler()
        {
            OptionGroup toplevelGroup = Handler.AddGroup(TOP_LEVEL);

            //the toplevel group will show neither in Table view nor in dialog view explicitely
            //it's children will be shown one level above
            toplevelGroup.SetAttribute(TableEditorFactory.RENDERING_HINTS_ATTRIBUTE,
                                       (int)TableEditorFactory.RenderingHints.Invisible);
            toplevelGroup.SetAttribute(DefaultEditorFactory.RENDERING_HINTS_ATTRIBUTE,
                                       (int)DefaultEditorFactory.RenderingHints.Invisible);

            OptionGroup spcg = toplevelGroup.AddGroup(SourcePortConstraints);

            spcg.AddGeneric(PortConstraintStr, PortConstraintType.Any).SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE,
                                                                                    false);
            spcg.AddBool(StrongPortConstraint, false);
            OptionGroup tpcg = toplevelGroup.AddGroup(TargetPortConstraints);

            tpcg.AddGeneric(PortConstraintStr, PortConstraintType.Any).SetAttribute(OptionItem.SUPPORT_NULL_VALUE_ATTRIBUTE,
                                                                                    false);
            tpcg.AddBool(StrongPortConstraint, false);
            CollectionOptionItem <string> scopeItem = toplevelGroup.AddList(Scope, scopes, ScopeAllEdges);
            BoolOptionItem    clearItem             = toplevelGroup.AddBool(ClearAllConstraints, false);
            ConstraintManager cm = new ConstraintManager(Handler);

            cm.SetEnabledOnValueEquals(clearItem, false, spcg);
            cm.SetEnabledOnValueEquals(clearItem, false, scopeItem);
            cm.SetEnabledOnValueEquals(clearItem, false, tpcg);
        }
            private bool DrawMultiSelectorEditBegin(OptionGroup group)
            {
                var groupName = group.GroupName;

                if (ImGuiCustom.BeginFramedGroupEdit(ref groupName) &&
                    groupName != group.GroupName &&
                    !Meta !.Groups.ContainsKey(groupName))
                {
                    var oldConf = Mod !.Settings[group.GroupName];
                    Meta.Groups.Remove(group.GroupName);
                    Mod.FixSpecificSetting(group.GroupName);
                    if (groupName.Length > 0)
                    {
                        Meta.Groups[groupName] = new OptionGroup()
                        {
                            GroupName     = groupName,
                            SelectionType = SelectType.Multi,
                            Options       = group.Options,
                        };
                        Mod.Settings[groupName] = oldConf;
                    }

                    return(true);
                }

                return(false);
            }
        ///<inheritdoc/>
        protected override void SetupHandler()
        {
            createOrganic();
            OptionGroup visualGroup = Handler.AddGroup(VISUAL);

            visualGroup.AddList(SCOPE, scopeEnum.Keys, ALL);
            visualGroup.AddList(INITIAL_PLACEMENT, initialPlacementEnum.Keys, AS_IS);
            visualGroup.AddDouble(PREFERRED_EDGE_LENGTH, organic.PreferredEdgeLength, 0.0, double.MaxValue);
            visualGroup.AddBool(OBEY_NODE_SIZES, organic.ConsiderNodeSizes);
            visualGroup.AddInt(ATTRACTION, organic.Attraction, 0, 2);
            visualGroup.AddInt(REPULSION, organic.Repulsion, 0, 2);
            visualGroup.AddDouble(GRAVITY_FACTOR, organic.GravityFactor, -0.2, 2);
            visualGroup.AddBool(ACTIVATE_TREE_BEAUTIFIER, organic.ActivateTreeBeautifier);

            OptionGroup algoGroup = Handler.AddGroup(ALGORITHM);

            algoGroup.AddDouble(ITERATION_FACTOR, organic.IterationFactor);
            algoGroup.AddInt(MAXIMAL_DURATION, (int)(organic.MaximumDuration / 1000));
            algoGroup.AddBool(ACTIVATE_DETERMINISTIC_MODE, organic.Deterministic);
            algoGroup.AddBool(ACTIVATE_MULTI_THREADING, organic.MultiThreadingAllowed);

            OptionGroup groupingGroup = Handler.AddGroup(GROUPING);

            groupingGroup.AddList(GROUP_LAYOUT_POLICY, groupPolicyEnum.Keys, LAYOUT_GROUPS);
            groupingGroup.AddDouble(GROUP_NODE_COMPACTNESS, organic.GroupNodeCompactness, 0, 1);
        }
Пример #21
0
        public async Task <ActionResult <OptionGroup> > PostOptionGroup(OptionGroup optionGroup)
        {
            _dbContext.OptionGroup.Add(optionGroup);
            await _dbContext.SaveChangesAsync();

            return(CreatedAtAction("GetOptionGroup", new { key = optionGroup.OptionGroupKey }, optionGroup));
        }
        ///<inheritdoc/>
        protected override void ConfigureLayout()
        {
            createOrganic();
            OptionGroup visualGroup = (OptionGroup)Handler.GetGroupByName(VISUAL);

            organic.PreferredEdgeLength = (int)visualGroup[PREFERRED_EDGE_LENGTH].Value;
            string initialPlacementChoice = (string)visualGroup[INITIAL_PLACEMENT].Value;

            organic.InitialPlacement = initialPlacementEnum[initialPlacementChoice];
            string scopeChoice = (string)visualGroup[SCOPE].Value;

            organic.Scope                  = scopeEnum[scopeChoice];
            organic.GravityFactor          = (double)visualGroup[GRAVITY_FACTOR].Value;
            organic.ConsiderNodeSizes      = (bool)visualGroup[OBEY_NODE_SIZES].Value;
            organic.ActivateTreeBeautifier = (bool)visualGroup[ACTIVATE_TREE_BEAUTIFIER].Value;
            organic.Attraction             = (int)visualGroup[ATTRACTION].Value;
            organic.Repulsion              = 2 - (int)visualGroup[REPULSION].Value;

            OptionGroup algoGroup = (OptionGroup)Handler.GetGroupByName(ALGORITHM);

            organic.MaximumDuration = 1000 * (int)algoGroup[MAXIMAL_DURATION].Value;
            organic.IterationFactor = (double)algoGroup[ITERATION_FACTOR].Value;
            organic.Deterministic   = (bool)algoGroup[ACTIVATE_DETERMINISTIC_MODE].Value;

            if (ContainsGroupNodes())
            {
                string groupPolicyChoice = (string)Handler.GetValue(GROUPING, GROUP_LAYOUT_POLICY);
                organic.GroupNodePolicy      = groupPolicyEnum[groupPolicyChoice];
                organic.GroupNodeCompactness = (double)Handler.GetValue(GROUPING, GROUP_NODE_COMPACTNESS);
            }

            organic.MultiThreadingAllowed = (bool)algoGroup[ACTIVATE_MULTI_THREADING].Value;

            LayoutAlgorithm = organic;
        }
Пример #23
0
        public async Task <IActionResult> PutOptionGroup(Guid key, OptionGroup optionGroup)
        {
            if (key != optionGroup.OptionGroupKey)
            {
                return(BadRequest());
            }

            _dbContext.Entry(optionGroup).State = EntityState.Modified;

            try
            {
                await _dbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!OptionGroupExists(key))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Пример #24
0
        static void Main(string[] args)
        {
            // create Options object
            Options options = new Options();

            // add t option
            options.AddOption("t", false, "display current time");
            options.AddOption("h", false, "Display help options");
            CommandLineParser parser = new DefaultParser();
            CommandLine       cmd    = parser.Parse(options, args);

            options.AddOption("h", "help", false, "Print this usage information");
            options.AddOption("v", "verbose", false, "Print out VERBOSE information");

            OptionGroup optionGroup = new OptionGroup();

            optionGroup.AddOption(new OptionBuilder("f").HasArg(true).ArgName("filename").Build());
            optionGroup.AddOption(new OptionBuilder("m").HasArg(true).ArgName("email").Build());
            options.AddOptionGroup(optionGroup);

            if (cmd.HasOption("h"))
            {
                HelpFormatter formatter = new HelpFormatter();
                formatter.printHelp("x", options, true);
                return;
            }
            if (cmd.HasOption("t"))
            {
                Console.WriteLine(System.DateTime.Now);
            }
        }
Пример #25
0
        ///<inheritdoc/>
        protected override void ConfigureLayout()
        {
            OptionGroup toplevelGroup   = (OptionGroup)Handler.GetGroupByName(TOP_LEVEL);
            OptionGroup generalGroup    = (OptionGroup)toplevelGroup.GetGroupByName(GENERAL);
            string      operationChoice = (string)generalGroup[OPERATION].Value;

            transformer.Operation             = operationEnum[operationChoice];
            transformer.SubgraphLayoutEnabled = (bool)generalGroup[ACT_ON_SELECTION_ONLY].Value;

            transformer.RotationAngle = (int)toplevelGroup.GetValue(ROTATE, ROTATION_ANGLE);
            if ((bool)toplevelGroup.GetValue(ROTATE, APPLY_BEST_FIT_ROTATION) &&
                ((string)toplevelGroup.GetValue(GENERAL, OPERATION)).Equals(ROTATE))
            {
                CanvasControl cv = Context.Lookup <CanvasControl>();
                if (cv != null)
                {
                    var size = cv.InnerSize;
                    applyBestFitRotation      = true;
                    transformer.RotationAngle =
                        GraphTransformer.FindBestFitRotationAngle(CurrentLayoutGraph, size.Width, size.Height);
                }
            }
            else
            {
                applyBestFitRotation = false;
            }

            transformer.ScaleFactor   = (double)toplevelGroup.GetValue(SCALE, SCALE_FACTOR);
            transformer.ScaleNodeSize = (bool)toplevelGroup.GetValue(SCALE, SCALE_NODE_SIZE);

            transformer.TranslateX = (double)toplevelGroup.GetValue(TRANSLATE, TRANSLATE_X);
            transformer.TranslateY = (double)toplevelGroup.GetValue(TRANSLATE, TRANSLATE_Y);
            LayoutAlgorithm        = transformer;
        }
Пример #26
0
        /// <summary>
        /// sets the global layout options.
        /// </summary>
        /// <param name="orthogonal"></param>
        private void SetGlobalOptions(OrthogonalLayout orthogonal)
        {
            OptionGroup layoutGroup = Handler.GetGroupByName(LAYOUT);
            OptionGroup edgeGroup   = Handler.GetGroupByName(EDGES);

            orthogonal.LayoutStyle = styles[(string)layoutGroup[STYLE].Value];

            if ((bool)edgeGroup[DRAW_SELECTED_EDGES_UPWARDS].Value)
            {
                var    ol = (OrientationLayout)orthogonal.OrientationLayout;
                string orientationChoice = (string)edgeGroup[ORIENTATION].Value;
                ol.Orientation = orientEnum[orientationChoice];
            }

            orthogonal.GridSpacing            = ((int)layoutGroup[GRID].Value);
            orthogonal.EdgeLengthReduction    = ((bool)layoutGroup[LENGTH_REDUCTION].Value);
            orthogonal.OptimizePerceivedBends = ((bool)layoutGroup[PERCEIVED_BENDS_POSTPROCESSING].Value);
            orthogonal.CrossingReduction      =
                (bool)layoutGroup[CROSSING_POSTPROCESSING].Value;
            orthogonal.Randomization    = (bool)layoutGroup[USE_RANDOMIZATION].Value;
            orthogonal.FaceMaximization = (bool)layoutGroup[USE_FACE_MAXIMIZATION].Value;
            orthogonal.FromSketchMode   = (bool)layoutGroup[USE_EXISTING_DRAWING_AS_SKETCH].Value;
            orthogonal.EdgeLayoutDescriptor.MinimumFirstSegmentLength = (double)edgeGroup[MINIMUM_FIRST_SEGMENT_LENGTH].Value;
            orthogonal.EdgeLayoutDescriptor.MinimumLastSegmentLength  = (double)edgeGroup[MINIMUM_LAST_SEGMENT_LENGTH].Value;
            orthogonal.EdgeLayoutDescriptor.MinimumSegmentLength      = (double)edgeGroup[MINIMUM_SEGMENT_LENGTH].Value;
        }
        protected override void SetupHandler()
        {
            CreateLayout();

            OptionGroup generalGroup = Handler.AddGroup(GENERAL);

            generalGroup.AddList(CENTER_STRATEGY, centerNodeStrategies.Keys, CENTER_WEIGHTED_CENTRAL);
            generalGroup.AddList(LAYERING_STRATEGY, layeringStrategies.Keys, LAYERING_BFS);
            generalGroup.AddDouble(MINIMAL_LAYER_DISTANCE, (int)layout.MinimumLayerDistance, 1, 1000);
            generalGroup.AddDouble(MINIMAL_NODE_DISTANCE, (int)layout.MinimumNodeToNodeDistance, 0, 300);
            generalGroup.AddDouble(MAXIMAL_CHILD_SECTOR_SIZE, (int)layout.MaximumChildSectorAngle, 15, 360);

            OptionItem routingStrategyItem = generalGroup.AddList(EDGE_ROUTING_STRATEGY, edgeRoutingStrategies, EDGE_ARC);

            int smoothness =
                (int)
                Math.Min(MAXIMUM_SMOOTHNESS,
                         (1 + MAXIMUM_SMOOTHNESS * SMOOTHNESS_ANGLE_FACTOR - layout.MinimumBendAngle) / SMOOTHNESS_ANGLE_FACTOR);
            IOptionItem       smoothnessItem = generalGroup.AddInt(EDGE_SMOOTHNESS, smoothness, MINIMUM_SMOOTHNESS, MAXIMUM_SMOOTHNESS);
            ConstraintManager cm             = new ConstraintManager(Handler);

            cm.SetEnabledOnValueEquals(routingStrategyItem, EDGE_ARC, smoothnessItem);
            var bundlingStrength = generalGroup.AddDouble(EDGE_BUNDLING_STRENGTH, 0.99, 0, 1);

            cm.SetEnabledOnValueEquals(routingStrategyItem, EDGE_BUNDLES, bundlingStrength);
            generalGroup.AddBool(CONSIDER_NODE_LABELS, layout.ConsiderNodeLabels);
        }
            private bool DrawSingleSelectorEditGroup(OptionGroup group, ref bool selectionChanged)
            {
                var groupName = group.GroupName;

                if (ImGui.InputText($"##{groupName}_add", ref groupName, 64, ImGuiInputTextFlags.EnterReturnsTrue) &&
                    !Meta !.Groups.ContainsKey(groupName))
                {
                    var oldConf = Mod !.Settings[group.GroupName];
                    if (groupName != group.GroupName)
                    {
                        Meta.Groups.Remove(group.GroupName);
                        selectionChanged |= Mod.FixSpecificSetting(group.GroupName);
                    }

                    if (groupName.Length > 0)
                    {
                        Meta.Groups.Add(groupName, new OptionGroup()
                        {
                            GroupName     = groupName,
                            Options       = group.Options,
                            SelectionType = SelectType.Single,
                        });
                        Mod.Settings[groupName] = oldConf;
                    }

                    return(true);
                }

                return(false);
            }
Пример #29
0
        public async Task ShouldPublishEventAfterUpdateSuccessfully()
        {
            var itemGroup    = new ItemGroup().Of(_token.TenantId);
            var optionGroup1 = new OptionGroup().To(itemGroup);
            var optionGroup2 = new OptionGroup().To(itemGroup);
            var option       = new Option().To(optionGroup1);

            _server.Database.ItemGroups.Add(itemGroup);
            _server.Database.OptionGroups.AddRange(optionGroup1, optionGroup2);
            _server.Database.Options.Add(option);

            await _server.Database.SaveChangesAsync();

            var path        = $"options/{option.Id}";
            var jsonRequest = new SaveOptionJson().Build(groupId: optionGroup2.Id);
            var response    = await _client.PutJsonAsync(path, jsonRequest);

            var publishedEvent = _server.EventBus.PublishedEvents
                                 .Single(@event => @event.Name == "menu.option.updated");
            var payload = (OptionPayload)publishedEvent.Payload;

            await _server.Database.Entry(option).ReloadAsync();

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(payload.Id, option.Id);
            Assert.Equal(payload.TenantId, option.TenantId);
            Assert.Equal(payload.Name, option.Name);
            Assert.Equal(payload.Description, option.Description);
            Assert.Equal(payload.Price, option.Price);
            Assert.Equal(payload.IsAvailable, option.IsAvailable);
        }
        ///<inheritdoc/>
        protected override void ConfigureLayout()
        {
            OptionGroup layoutGroup = (OptionGroup)Handler.GetGroupByName(LAYOUT_OPTIONS);

            router.MinimumDistance   = (int)layoutGroup[MINIMAL_NODE_DISTANCE].Value;
            router.KeepExistingBends = (bool)layoutGroup[USE_BENDS].Value;
            router.RouteAllEdges     = (bool)layoutGroup[ROUTE_ONLY_NECESSARY].Value;

            SequentialLayout sl = new SequentialLayout();

            if ((bool)layoutGroup[ALLOW_MOVING_NODES].Value)
            {
                //if we are allowed to move nodes, we can improve the routing results by temporarily enlarging nodes and removing overlaps
                //(this strategy ensures that there is enough space for the edges)
                CompositeLayoutStage cls = new CompositeLayoutStage();
                cls.AppendStage(router.CreateNodeEnlargementStage());
                cls.AppendStage(new RemoveOverlapsStage(0));
                sl.AppendLayout(cls);
            }
            if (router.KeepExistingBends)
            {
                //we want to keep the original bends
                BendConverter bendConverter = new BendConverter();
                bendConverter.AffectedEdgesDpKey = OrganicEdgeRouter.AffectedEdgesDpKey;
                bendConverter.AdoptAffectedEdges = (bool)layoutGroup[SELECTION_ONLY].Value;
                bendConverter.CoreLayout         = router;
                sl.AppendLayout(bendConverter);
            }
            else
            {
                sl.AppendLayout(router);
            }

            LayoutAlgorithm = new HideGroupsStage(sl);
        }
Пример #31
0
        public static Options CreateFromType(Type type)
        {
            if (type == null)
                throw new ArgumentNullException("type");

            //if (!Attribute.IsDefined(type, typeof(OptionsAttribute)))
            //	throw new ArgumentException("The type '" + type + "' is not marked as options");

            MemberInfo[] members = type.FindMembers(MemberTypes.Field | MemberTypes.Property,
                                                    BindingFlags.Public | BindingFlags.Instance,
                                                    FilterMember, null);

            var groups = new Dictionary<string, OptionGroup>();
            var requiredGroups = new List<string>();

            Attribute[] groupsAttrs = Attribute.GetCustomAttributes(type, typeof(OptionGroupAttribute));
            foreach (OptionGroupAttribute groupAttr in groupsAttrs) {
                OptionGroup group;
                if (!groups.TryGetValue(groupAttr.Name, out @group)) {
                    @group = new OptionGroup {IsRequired = groupAttr.IsRequired};
                    groups[groupAttr.Name] = @group;
                    if (groupAttr.IsRequired)
                        requiredGroups.Add(groupAttr.Name);
                }
            }

            var options = new Options();

            foreach (MemberInfo member in members) {
                Option option = CreateOptionFromMember(member, groups);
                if (option != null)
                    options.AddOption(option);
            }

            foreach(var entry in groups) {
                var group = entry.Value;
                options.AddOptionGroup(group);
            }

            return options;
        }
Пример #32
0
        public Options AddOptionGroup(OptionGroup group)
        {
            if (group.IsRequired) {
                foreach (var option in group.Options) {
                    requiredOpts.Add(option.Key());
                }
            }

            foreach(var opt in group.Options) {
                var option = (Option) opt;
                // an Option cannot be required if it is in an
                // OptionGroup, either the group is required or
                // nothing is required
                option.IsRequired = false;
                AddOption(option);

                optionGroups[option.Key()] = group;
            }

            return this;
        }
Пример #33
0
		/// <summary>
		/// Creates a option group based on the given info.
		/// </summary>
		/// <param name="p_xelGroup">The script file node corresponding to the group to add.</param>
		/// <returns>The added group.</returns>
		protected override OptionGroup ParseGroup(XElement p_xelGroup)
		{
			string strName = p_xelGroup.Attribute("name").Value;
			OptionGroupType gtpType = (OptionGroupType)Enum.Parse(typeof(OptionGroupType), p_xelGroup.Attribute("type").Value);

			XElement xelOptions = p_xelGroup.Element("plugins");
			SortOrder sodOptionOrder = ParseSortOrder(xelOptions.Attribute("order").Value);

			OptionGroup pgpGroup = new OptionGroup(strName, gtpType, sodOptionOrder);
			foreach (XElement xelOption in xelOptions.Elements())
				pgpGroup.Options.Add(ParseOption(xelOption));
			return pgpGroup;
		}
		/// <summary>
		/// Adds a new <see cref="Option"/> to the script.
		/// </summary>
		/// <param name="p_ogpGroup">The step to which to add the <see cref="Option"/>.</param>
		protected void AddOption(OptionGroup p_ogpParent)
		{
			if (p_ogpParent == null)
				return;
			string strOptionName = null;
			for (Int32 i = 1; i < Int32.MaxValue; i++)
			{
				strOptionName = String.Format("New Option {0}", i);
				if (!p_ogpParent.Options.Contains(x => strOptionName.Equals(x.Name)))
					break;
				strOptionName = null;
			}
			if (strOptionName == null)
				throw new Exception("Unable to new new Option: too many options exist.");
			p_ogpParent.Options.Add(new Option(strOptionName, null, null, null));
		}
		/// <summary>
		/// Deletes the given <see cref="OptionGroup"/> from the script.
		/// </summary>
		/// <param name="p_ogpGroup">The <see cref="OptionGroup"/> to delete.</param>
		protected void DeleteOptionGroup(OptionGroup p_ogpGroup)
		{
			if (p_ogpGroup == null)
				return;
			foreach (InstallStep ispStep in Script.InstallSteps)
				if (ispStep.OptionGroups.Remove(p_ogpGroup))
					return;
		}
Пример #36
0
 public OptionProfileCreator(OptionGroup options)
 {
     Options = options;
 }
Пример #37
0
		/// <summary>
		/// Adds a group to the list of plugins.
		/// </summary>
		/// <param name="p_ogpGroup">The plugin group to add.</param>
		/// <returns>The new <see cref="ListViewGroup"/> representing the group.</returns>
		private ListViewGroup AddGroup(OptionGroup p_ogpGroup)
		{
			ListViewGroup lvgGroup = null;
			foreach (ListViewGroup lvgExistingGroup in lvwPlugins.Groups)
				if (lvgExistingGroup.Name.Equals(p_ogpGroup.Name))
				{
					lvgGroup = lvgExistingGroup;
					break;
				}
			if (lvgGroup == null)
			{
				lvgGroup = new ListViewGroup();
				lvwPlugins.Groups.Add(lvgGroup);
			}
			lvgGroup.Name = p_ogpGroup.Name;
			lvgGroup.Tag = p_ogpGroup.Type;
			switch (p_ogpGroup.Type)
			{
				case OptionGroupType.SelectAll:
					lvgGroup.Header = p_ogpGroup.Name + " (All Required)";
					break;
				case OptionGroupType.SelectAtLeastOne:
					lvgGroup.Header = p_ogpGroup.Name + " (One Required)";
					break;
				case OptionGroupType.SelectAtMostOne:
					lvgGroup.Header = p_ogpGroup.Name + " (Select Only One)";
					break;
				case OptionGroupType.SelectExactlyOne:
					lvgGroup.Header = p_ogpGroup.Name + " (Select One)";
					break;
				case OptionGroupType.SelectAny:
					lvgGroup.Header = p_ogpGroup.Name;
					break;
			}
			return lvgGroup;
		}
Пример #38
0
 public KeyboardProfile(OptionGroup options)
     : base(options)
 {
 }
		public OptionGroupVM(OptionGroup p_opgGroup)
		{
			OptionGroup = p_opgGroup;
			Reset();
		}
Пример #40
0
		protected void FormatOptionGroup(XmlScriptTreeNode p_stnNode, OptionGroup p_opgGroup)
		{
			p_stnNode.Text = String.Format("Option Group: {0}", p_opgGroup.Name);
		}
		/// <summary>
		/// The editor to use to edit an <see cref="OptionGroup"/>.
		/// </summary>
		/// <param name="p_opgGroup">The <see cref="OptionGroup"/> to edit.</param>
		/// <param name="p_lstModFiles">The list of files in the mod to which the <see cref="XmlScript"/>
		/// being edited belongs.</param>
		/// <returns>The editor to use to edit an <see cref="OptionGroup"/>. <c>null</c> is returned if the
		/// current <see cref="XmlScript"/> does not support editing <see cref="OptionGroup"/>s.</returns>
		public virtual NodeEditor GetOptionGroupEditor(OptionGroup p_opgGroup, IList<VirtualFileSystemItem> p_lstModFiles)
		{
			OptionGroupEditorVM vmlGroupEditor = new OptionGroupEditorVM(p_opgGroup, OptionGroupProperties.Name | OptionGroupProperties.Type);
			return new OptionGroupEditor(vmlGroupEditor);
		}
		public OptionGroupEditorVM(OptionGroup p_opgGroup, OptionGroupProperties p_ogpEditableProperties)
		{
			OptionGroup = p_opgGroup;
			NameVisible = (p_ogpEditableProperties & OptionGroupProperties.Name) > 0;
			TypeVisible = (p_ogpEditableProperties & OptionGroupProperties.Type) > 0;
			OptionSortOrderVisible = (p_ogpEditableProperties & OptionGroupProperties.OptionSortOrder) > 0;

			OptionGroupTypes = Enum.GetValues(typeof(OptionGroupType));
			SortOrders = Enum.GetValues(typeof(SortOrder));
			Errors = new ErrorContainer();
		}
Пример #43
0
		protected void HandleOptionGroupPropertyChange(XmlScriptTreeNode p_stnNode, OptionGroup p_opgGroup, string p_strPropertyName)
		{
			if (p_strPropertyName.Equals(ObjectHelper.GetPropertyName<OptionGroup>(x => x.Options)))
			{
				SelectedNode = p_stnNode;
				AddOptions((XmlScriptTreeNode<OptionGroup>)p_stnNode);
			}
		}
Пример #44
0
        private static Option CreateOptionFromMember(MemberInfo member, IDictionary<string, OptionGroup> groups)
        {
            var attribute = (OptionAttribute) Attribute.GetCustomAttribute(member, typeof(OptionAttribute));

            string optionName = null;
            string optionLongName = null;
            if (attribute != null) {
                optionLongName = attribute.LongName;
                optionName = attribute.Name;
            }

            if (String.IsNullOrEmpty(optionName))
                optionName = member.Name[0].ToString(CultureInfo.InvariantCulture);
            if (String.IsNullOrEmpty(optionLongName))
                optionLongName = member.Name;

            var desc = attribute != null ? attribute.Description : null;
            var option = new Option(optionName, desc) {
                LongName = optionLongName,
                ArgumentCount = attribute != null ? attribute.ArgumentCount : 0,
                IsRequired = attribute != null && attribute.IsRequired,
                ArgumentName = attribute != null ? attribute.ArgumentName : "arg",
                ValueSeparator = attribute != null ? attribute.ValueSeparator : ' ',
                HasOptionalArgument = attribute != null && attribute.HasOptionalArgument
            };

            var groupAttr = (OptionGroupAttribute)Attribute.GetCustomAttribute(member, typeof(OptionGroupAttribute));
            if (groupAttr != null) {
                OptionGroup group;
                if (!groups.TryGetValue(groupAttr.Name, out group)) {
                    group = new OptionGroup();
                    groups[groupAttr.Name] = group;
                }

                group.AddOption(option);
                return null;
            }

            return option;
        }
Пример #45
0
		/// <summary>
		/// Unparses the given <see cref="OptionGroup"/>.
		/// </summary>
		/// <remarks>
		/// This method can be overidden to provide game-specific or newer-version unparsing.
		/// </remarks>
		/// <param name="p_ogpGroup">The <see cref="OptionGroup"/> for which to generate XML.</param>
		/// <returns>The XML representation of the given <see cref="OptionGroup"/>.</returns>
		protected override XElement UnparseOptionGroup(OptionGroup p_ogpGroup)
		{
			XElement xelGroup = base.UnparseOptionGroup(p_ogpGroup);
			XElement xelOptions = xelGroup.Element("plugins");
			xelOptions.Add(new XAttribute("order", UnparseSortOrder(p_ogpGroup.OptionSortOrder)));
			return xelGroup;
		}
Пример #46
0
		/// <summary>
		/// Creates a option group based on the given info.
		/// </summary>
		/// <param name="p_xelGroup">The script file node corresponding to the group to add.</param>
		/// <returns>The added group.</returns>
		protected virtual OptionGroup ParseGroup(XElement p_xelGroup)
		{
			string strName = p_xelGroup.Attribute("name").Value;
			OptionGroupType gtpType = (OptionGroupType)Enum.Parse(typeof(OptionGroupType), p_xelGroup.Attribute("type").Value);

			XElement xelOptions = p_xelGroup.Element("plugins");

			OptionGroup pgpGroup = new OptionGroup(strName, gtpType, SortOrder.Ascending);
			foreach (XElement xelOption in xelOptions.Elements())
				pgpGroup.Options.Add(ParseOption(xelOption));
			return pgpGroup;
		}
Пример #47
0
		/// <summary>
		/// Unparses the given <see cref="OptionGroup"/>.
		/// </summary>
		/// <remarks>
		/// This method can be overidden to provide game-specific or newer-version unparsing.
		/// </remarks>
		/// <param name="p_ogpGroup">The <see cref="OptionGroup"/> for which to generate XML.</param>
		/// <returns>The XML representation of the given <see cref="OptionGroup"/>.</returns>
		protected virtual XElement UnparseOptionGroup(OptionGroup p_ogpGroup)
		{
			XElement xelGroup = new XElement("group",
											new XAttribute("name", p_ogpGroup.Name),
											new XAttribute("type", UnparseOptionGroupType(p_ogpGroup.Type)));
			XElement xelOptions = new XElement("plugins");
			xelGroup.Add(xelOptions);
			foreach (Option optOption in p_ogpGroup.Options)
				xelOptions.Add(UnparseOption(optOption));
			return xelGroup;
		}