private void PopulatePresetMenu(ICustomPopupContext <string> context)
        {
            var popup = context.Popup;

            popup.AddOption(TileLang.ParticularText("Preset Name", "Default: 3D"), context, "F:3D");
            popup.AddOption(TileLang.ParticularText("Preset Name", "Default: 2D"), context, "F:2D");

            var presets = TileSystemPresetUtility.GetPresets();

            if (presets.Length == 0)
            {
                return;
            }

            popup.AddSeparator();

            var presetGroups = presets
                               .OrderBy(preset => preset.name)
                               .GroupBy(preset => TileSystemPresetUtility.IsUserPreset(preset))
                               .ToArray();

            for (int i = 0; i < presetGroups.Length; ++i)
            {
                if (i != 0)
                {
                    popup.AddSeparator();
                }

                foreach (var preset in presetGroups[i])
                {
                    popup.AddOption(preset.name, context, TileSystemPresetUtility.GetPresetGUID(preset));
                }
            }
        }
示例#2
0
 /// <summary>
 /// Adds an option to the <see cref="CustomPopup{TValue}"/>.
 /// </summary>
 /// <example>
 /// <para>Add command with a straightforward action:</para>
 /// <code language="csharp"><![CDATA[
 /// value = CustomPopupGUI.Popup(label, value, valueLabel, context => {
 ///     var popup = context.Popup;
 ///     popup.AddOption("First", context, 1);
 ///     popup.AddOption("Second", context, 2);
 ///     popup.AddOption("Third", context, 3);
 /// });
 /// ]]></code>
 /// </example>
 /// <param name="fullPath">Full path of the menu option.</param>
 /// <param name="context">Custom popup context.</param>
 /// <param name="value">The option value.</param>
 /// <returns>
 /// Fluid style API to further define the new command entry.
 /// </returns>
 /// <exception cref="System.ArgumentNullException">
 /// If <paramref name="fullPath"/> is <c>null</c>.
 /// </exception>
 /// <exception cref="System.ArgumentException">
 /// If <paramref name="fullPath"/> is an empty string or starts with a slash.
 /// </exception>
 /// <seealso cref="EditorMenu.AddCommand(string)"/>
 /// <seealso cref="EditorMenu.AddSeparator(string)"/>
 public virtual EditorMenuCommandBinder AddOption(string fullPath, ICustomPopupContext <TValue> context, TValue value)
 {
     return(this.AddCommand(fullPath)
            .Checked(() => EqualityComparer <TValue> .Default.Equals(value, context.CurrentValue))
            .Action(() => context.NotifySelection(value)));
 }