Add option to make successful chat commands silent.

This commit is contained in:
Ottermandias 2023-03-05 15:16:45 +01:00
parent 6ee6e4a4ba
commit c2bb1407a9
3 changed files with 52 additions and 19 deletions

View file

@ -1,5 +1,6 @@
using System; using System;
using System.Linq; using System.Linq;
using System.Runtime.CompilerServices;
using Dalamud.Game.Command; using Dalamud.Game.Command;
using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling;
using ImGuiNET; using ImGuiNET;
@ -139,7 +140,8 @@ public class CommandHandler : IDisposable
Dalamud.Chat.Print( new SeStringBuilder().AddCommand( "collection", "Change your active collection setup. Use without further parameters for more detailed help." ) Dalamud.Chat.Print( new SeStringBuilder().AddCommand( "collection", "Change your active collection setup. Use without further parameters for more detailed help." )
.BuiltString ); .BuiltString );
Dalamud.Chat.Print( new SeStringBuilder().AddCommand( "mod", "Change a specific mods settings. Use without further parameters for more detailed help." ).BuiltString ); Dalamud.Chat.Print( new SeStringBuilder().AddCommand( "mod", "Change a specific mods settings. Use without further parameters for more detailed help." ).BuiltString );
Dalamud.Chat.Print( new SeStringBuilder().AddCommand( "bulktag", "Change multiple mods settings based on their tags. Use without further parameters for more detailed help." ) Dalamud.Chat.Print( new SeStringBuilder()
.AddCommand( "bulktag", "Change multiple mods settings based on their tags. Use without further parameters for more detailed help." )
.BuiltString ); .BuiltString );
return true; return true;
} }
@ -159,7 +161,7 @@ public class CommandHandler : IDisposable
private bool Reload( string _ ) private bool Reload( string _ )
{ {
_modManager.DiscoverMods(); _modManager.DiscoverMods();
Dalamud.Chat.Print( $"Reloaded Penumbra mods. You have {_modManager.Count} mods." ); Print( $"Reloaded Penumbra mods. You have {_modManager.Count} mods." );
return true; return true;
} }
@ -185,9 +187,7 @@ public class CommandHandler : IDisposable
return false; return false;
} }
Dalamud.Chat.Print( value Print( value ? "Debug mode enabled." : "Debug mode disabled." );
? "Debug mode enabled."
: "Debug mode disabled." );
_config.DebugMode = value; _config.DebugMode = value;
_config.Save(); _config.Save();
@ -200,13 +200,13 @@ public class CommandHandler : IDisposable
if( value == _config.EnableMods ) if( value == _config.EnableMods )
{ {
Dalamud.Chat.Print( value Print( value
? "Your mods are already enabled. To disable your mods, please run the following command instead: /penumbra disable" ? "Your mods are already enabled. To disable your mods, please run the following command instead: /penumbra disable"
: "Your mods are already disabled. To enable your mods, please run the following command instead: /penumbra enable" ); : "Your mods are already disabled. To enable your mods, please run the following command instead: /penumbra enable" );
return false; return false;
} }
Dalamud.Chat.Print( value Print( value
? "Your mods have been enabled." ? "Your mods have been enabled."
: "Your mods have been disabled." ); : "Your mods have been disabled." );
return _penumbra.SetEnabled( value ); return _penumbra.SetEnabled( value );
@ -222,12 +222,12 @@ public class CommandHandler : IDisposable
if( value ) if( value )
{ {
Dalamud.Chat.Print( "Penumbra UI locked in place." ); Print( "Penumbra UI locked in place." );
_configWindow.Flags |= ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoResize; _configWindow.Flags |= ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoResize;
} }
else else
{ {
Dalamud.Chat.Print( "Penumbra UI unlocked." ); Print( "Penumbra UI unlocked." );
_configWindow.Flags &= ~( ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoResize ); _configWindow.Flags &= ~( ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoResize );
} }
@ -251,7 +251,7 @@ public class CommandHandler : IDisposable
Dalamud.Chat.Print( new SeStringBuilder().AddText( " 》 If the type is " ).AddBlue( "Individual" ) Dalamud.Chat.Print( new SeStringBuilder().AddText( " 》 If the type is " ).AddBlue( "Individual" )
.AddText( " you need to specify an individual with an identifier of the form:" ).BuiltString ); .AddText( " you need to specify an individual with an identifier of the form:" ).BuiltString );
Dalamud.Chat.Print( new SeStringBuilder().AddText( " 》》》 " ).AddGreen( "<me>" ).AddText( " or " ).AddGreen( "<t>" ).AddText( " or " ).AddGreen( "<mo>" ) Dalamud.Chat.Print( new SeStringBuilder().AddText( " 》》》 " ).AddGreen( "<me>" ).AddText( " or " ).AddGreen( "<t>" ).AddText( " or " ).AddGreen( "<mo>" )
.AddText( " or " ).AddGreen( "<f>" ).AddText( " as placeholders for your character, your target, your mouseover or your focus, if they exist." ).BuiltString ); .AddText( " or " ).AddGreen( "<f>" ).AddText( " as placeholders for your character, your target, your mouseover or your focus, if they exist." ).BuiltString );
Dalamud.Chat.Print( new SeStringBuilder().AddText( " 》》》 " ).AddGreen( "p" ).AddText( " | " ).AddWhite( "[Player Name]@<World Name>" ) Dalamud.Chat.Print( new SeStringBuilder().AddText( " 》》》 " ).AddGreen( "p" ).AddText( " | " ).AddWhite( "[Player Name]@<World Name>" )
.AddText( ", if no @ is provided, Any World is used." ).BuiltString ); .AddText( ", if no @ is provided, Any World is used." ).BuiltString );
Dalamud.Chat.Print( new SeStringBuilder().AddText( " 》》》 " ).AddGreen( "r" ).AddText( " | " ).AddWhite( "[Retainer Name]" ).BuiltString ); Dalamud.Chat.Print( new SeStringBuilder().AddText( " 》》》 " ).AddGreen( "r" ).AddText( " | " ).AddWhite( "[Retainer Name]" ).BuiltString );
@ -358,12 +358,12 @@ public class CommandHandler : IDisposable
return false; return false;
} }
Dalamud.Chat.Print( $"Removed {oldCollection.Name} as {type.ToName()} Collection assignment {( identifier.IsValid ? $" for {identifier}." : "." )}" ); Print( $"Removed {oldCollection.Name} as {type.ToName()} Collection assignment {( identifier.IsValid ? $" for {identifier}." : "." )}" );
return true; return true;
} }
_collectionManager.SetCollection( collection!, type, individualIndex ); _collectionManager.SetCollection( collection!, type, individualIndex );
Dalamud.Chat.Print( $"Assigned {collection!.Name} as {type.ToName()} Collection{( identifier.IsValid ? $" for {identifier}." : "." )}" ); Print( $"Assigned {collection!.Name} as {type.ToName()} Collection{( identifier.IsValid ? $" for {identifier}." : "." )}" );
return true; return true;
} }
@ -462,7 +462,7 @@ public class CommandHandler : IDisposable
if( !changes ) if( !changes )
{ {
Dalamud.Chat.Print( new SeStringBuilder().AddText( "No mod states were changed in collection " ).AddYellow( collection!.Name, true ).AddText( "." ).BuiltString ); Print( () => new SeStringBuilder().AddText( "No mod states were changed in collection " ).AddYellow( collection!.Name, true ).AddText( "." ).BuiltString );
} }
return true; return true;
@ -528,7 +528,7 @@ public class CommandHandler : IDisposable
case 0: case 0:
if( collection.SetModState( mod.Index, true ) ) if( collection.SetModState( mod.Index, true ) )
{ {
Dalamud.Chat.Print( new SeStringBuilder().AddText( "Enabled mod " ).AddPurple( mod.Name, true ).AddText( " in collection " ) Print( () => new SeStringBuilder().AddText( "Enabled mod " ).AddPurple( mod.Name, true ).AddText( " in collection " )
.AddYellow( collection.Name, true ) .AddYellow( collection.Name, true )
.AddText( "." ).BuiltString ); .AddText( "." ).BuiltString );
return true; return true;
@ -538,7 +538,7 @@ public class CommandHandler : IDisposable
case 1: case 1:
if( collection.SetModState( mod.Index, false ) ) if( collection.SetModState( mod.Index, false ) )
{ {
Dalamud.Chat.Print( new SeStringBuilder().AddText( "Disabled mod " ).AddPurple( mod.Name, true ).AddText( " in collection " ) Print( () => new SeStringBuilder().AddText( "Disabled mod " ).AddPurple( mod.Name, true ).AddText( " in collection " )
.AddYellow( collection.Name, true ) .AddYellow( collection.Name, true )
.AddText( "." ).BuiltString ); .AddText( "." ).BuiltString );
return true; return true;
@ -549,7 +549,7 @@ public class CommandHandler : IDisposable
var setting = !( settings?.Enabled ?? false ); var setting = !( settings?.Enabled ?? false );
if( collection.SetModState( mod.Index, setting ) ) if( collection.SetModState( mod.Index, setting ) )
{ {
Dalamud.Chat.Print( new SeStringBuilder().AddText( setting ? "Enabled mod " : "Disabled mod " ).AddPurple( mod.Name, true ).AddText( " in collection " ) Print( () => new SeStringBuilder().AddText( setting ? "Enabled mod " : "Disabled mod " ).AddPurple( mod.Name, true ).AddText( " in collection " )
.AddYellow( collection.Name, true ) .AddYellow( collection.Name, true )
.AddText( "." ).BuiltString ); .AddText( "." ).BuiltString );
return true; return true;
@ -559,7 +559,7 @@ public class CommandHandler : IDisposable
case 3: case 3:
if( collection.SetModInheritance( mod.Index, true ) ) if( collection.SetModInheritance( mod.Index, true ) )
{ {
Dalamud.Chat.Print( new SeStringBuilder().AddText( "Set mod " ).AddPurple( mod.Name, true ).AddText( " in collection " ).AddYellow( collection.Name, true ) Print( () => new SeStringBuilder().AddText( "Set mod " ).AddPurple( mod.Name, true ).AddText( " in collection " ).AddYellow( collection.Name, true )
.AddText( " to inherit." ).BuiltString ); .AddText( " to inherit." ).BuiltString );
return true; return true;
} }
@ -569,4 +569,28 @@ public class CommandHandler : IDisposable
return false; return false;
} }
private static void Print( string text )
{
if( Penumbra.Config.PrintSuccessfulCommandsToChat )
{
Dalamud.Chat.Print( text );
}
}
private static void Print( DefaultInterpolatedStringHandler text )
{
if( Penumbra.Config.PrintSuccessfulCommandsToChat )
{
Dalamud.Chat.Print( text.ToStringAndClear() );
}
}
private static void Print( Func<SeString> text )
{
if( Penumbra.Config.PrintSuccessfulCommandsToChat )
{
Dalamud.Chat.Print( text() );
}
}
} }

View file

@ -72,6 +72,7 @@ public partial class Configuration : IPluginConfiguration
public string DefaultImportFolder { get; set; } = string.Empty; public string DefaultImportFolder { get; set; } = string.Empty;
public DoubleModifier DeleteModModifier { get; set; } = new(ModifierHotkey.Control, ModifierHotkey.Shift); public DoubleModifier DeleteModModifier { get; set; } = new(ModifierHotkey.Control, ModifierHotkey.Shift);
public bool PrintSuccessfulCommandsToChat { get; set; } = true;
public bool FixMainWindow { get; set; } = false; public bool FixMainWindow { get; set; } = false;
public bool AutoDeduplicateOnImport { get; set; } = true; public bool AutoDeduplicateOnImport { get; set; } = true;
public bool EnableHttpApi { get; set; } = true; public bool EnableHttpApi { get; set; } = true;

View file

@ -28,17 +28,21 @@ public partial class ConfigWindow
} }
private static int _singleGroupRadioMax = int.MaxValue; private static int _singleGroupRadioMax = int.MaxValue;
private void DrawSingleSelectRadioMax() private void DrawSingleSelectRadioMax()
{ {
if ( _singleGroupRadioMax == int.MaxValue) if( _singleGroupRadioMax == int.MaxValue )
{
_singleGroupRadioMax = Penumbra.Config.SingleGroupRadioMax; _singleGroupRadioMax = Penumbra.Config.SingleGroupRadioMax;
}
ImGui.SetNextItemWidth( _window._inputTextWidth.X ); ImGui.SetNextItemWidth( _window._inputTextWidth.X );
if( ImGui.DragInt( "##SingleSelectRadioMax", ref _singleGroupRadioMax, 0.01f, 1 ) ) if( ImGui.DragInt( "##SingleSelectRadioMax", ref _singleGroupRadioMax, 0.01f, 1 ) )
{ {
_singleGroupRadioMax = Math.Max( 1, _singleGroupRadioMax ); _singleGroupRadioMax = Math.Max( 1, _singleGroupRadioMax );
} }
if (ImGui.IsItemDeactivated()) if( ImGui.IsItemDeactivated() )
{ {
if( _singleGroupRadioMax != Penumbra.Config.SingleGroupRadioMax ) if( _singleGroupRadioMax != Penumbra.Config.SingleGroupRadioMax )
{ {
@ -48,6 +52,7 @@ public partial class ConfigWindow
_singleGroupRadioMax = int.MaxValue; _singleGroupRadioMax = int.MaxValue;
} }
ImGuiUtil.LabeledHelpMarker( "Upper Limit for Single-Selection Group Radio Buttons", ImGuiUtil.LabeledHelpMarker( "Upper Limit for Single-Selection Group Radio Buttons",
"All Single-Selection Groups with more options than specified here will be displayed as Combo-Boxes at the top.\n" "All Single-Selection Groups with more options than specified here will be displayed as Combo-Boxes at the top.\n"
+ "All other Single-Selection Groups will be displayed as a set of Radio-Buttons." ); + "All other Single-Selection Groups will be displayed as a set of Radio-Buttons." );
@ -89,6 +94,9 @@ public partial class ConfigWindow
} ); } );
ImGui.Dummy( _window._defaultSpace ); ImGui.Dummy( _window._defaultSpace );
Checkbox( "Print Chat Command Success Messages to Chat",
"Chat Commands usually print messages on failure but also on success to confirm your action. You can disable this here.",
Penumbra.Config.PrintSuccessfulCommandsToChat, v => Penumbra.Config.PrintSuccessfulCommandsToChat = v );
Checkbox( "Hide Redraw Bar in Mod Panel", "Hides the lower redraw buttons in the mod panel in your Mods tab.", Checkbox( "Hide Redraw Bar in Mod Panel", "Hides the lower redraw buttons in the mod panel in your Mods tab.",
Penumbra.Config.HideRedrawBar, v => Penumbra.Config.HideRedrawBar = v ); Penumbra.Config.HideRedrawBar, v => Penumbra.Config.HideRedrawBar = v );
ImGui.Dummy( _window._defaultSpace ); ImGui.Dummy( _window._defaultSpace );