Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CompilePalX/Compilers/CompileProcess.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public CompileProcess(string name, string? parameterFolder = null)

}

ParameterList = ConfigurationManager.GetParameters(Metadata.Name, Metadata.DoRun, this.ParameterFolder);
ParameterList = ConfigurationManager.GetParameters(Metadata.Name, Metadata.IsExternal, this.ParameterFolder);
}

public static CompileMetadata LoadLegacyData(string csvFile)
Expand Down Expand Up @@ -142,6 +142,7 @@ public virtual void Cancel()
}

public ObservableCollection<ConfigItem> ParameterList = [];
public bool SupportsCustomParameters { get => ParameterList.Any(i => i.Name == "Command Line Argument"); }
public ObservableDictionary<Preset, ObservableCollection<ConfigItem>> PresetDictionary = [];


Expand Down Expand Up @@ -190,6 +191,7 @@ class CompileMetadata
{
public string Name { get; set; }
public string Path { get; set; }
public bool IsExternal { get => Path != "builtin"; }
public string Arguments { get; set; } = String.Empty;
public float Order { get; set; }

Expand Down
6 changes: 3 additions & 3 deletions CompilePalX/Configuration/ConfigurationManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ public static void RemoveProcess(string name)
}


public static ObservableCollection<ConfigItem> GetParameters(string processName, bool doRun = false, string? parameterFolder = null)
public static ObservableCollection<ConfigItem> GetParameters(string processName, bool external = false, string? parameterFolder = null)
{
var list = new ObservableCollection<ConfigItem>();

Expand All @@ -470,8 +470,8 @@ public static ObservableCollection<ConfigItem> GetParameters(string processName,
list.Add(configItem);
}

// add custom parameter to all runnable steps
if (doRun)
// add custom parameter to all external programs
if (external)
{
list.Add(new ConfigItem()
{
Expand Down
7 changes: 5 additions & 2 deletions CompilePalX/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -373,12 +373,15 @@
</Grid.RowDefinitions>
<DockPanel Background="{StaticResource CompilePal.Brushes.GridBackground}" Height="25" Margin="10, 0, 10, 0">
<TextBlock TextAlignment="Right" FontSize="16" Margin="0, 0, 0, 0" FontWeight="SemiBold" DockPanel.Dock="Left">Parameters</TextBlock>
<Button Name="AddParameterButton" DockPanel.Dock="Right" MinHeight="25" Height="25" Width="25" Padding="0" Margin="0, 0, 3, 0" Click="AddParameterButton_Click" ToolTip="Add Parameter">
<Button Name="AddParameterButton" DockPanel.Dock="Right" MinHeight="25" Width="25" Padding="0" Margin="0, 0, 3, 0" Click="AddParameterButton_Click" ToolTip="Add Parameter">
<iconPacks:Material Kind="Plus" Height="10" Width="10"/>
</Button>
<Button Name="RemoveParameterButton" DockPanel.Dock="Right" MinHeight="25" Height="25" Width="25" Padding="0" Margin="0, 0, 3, 0" Click="RemoveParameterButton_OnClickParameterButton_Click" ToolTip="Remove Parameter">
<Button Name="RemoveParameterButton" DockPanel.Dock="Right" MinHeight="25" Width="25" Padding="0" Margin="0, 0, 3, 0" Click="RemoveParameterButton_OnClickParameterButton_Click" ToolTip="Remove Parameter">
<iconPacks:Material Kind="Minus" Height="10" Width="10"/>
</Button>
<Button Name="AddCustomParameterButton" DockPanel.Dock="Right" MinHeight="25" Width="25" Padding="0" Margin="0, 0, 3, 0" Click="AddCustomParameterButton_Click" ToolTip="Add Custom Parameter" IsEnabled="{Binding AddCustomParameterButtonEnabled, ElementName=CompileWindow, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}">
<iconPacks:Material Kind="PlaylistPlus" Height="10" Width="10"/>
</Button>
<TextBox Name="ParametersTextBox" Margin="20,0, 20,0" IsEnabled="True" IsReadOnly="True" Background="{StaticResource MahApps.Brushes.Gray.SemiTransparent}" FontWeight="DemiBold" BorderThickness="0"/>
</DockPanel>
<DataGrid Grid.Row ="1" Name="ConfigDataGrid" Margin="10,0,10,10" AutoGenerateColumns="False" CanUserAddRows="False" ItemsSource="{Binding}">
Expand Down
164 changes: 113 additions & 51 deletions CompilePalX/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,28 @@ namespace CompilePalX
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow
public partial class MainWindow : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
private void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(AddCustomParameterButtonEnabled)));
}

public static Dispatcher ActiveDispatcher;
private ObservableCollection<CompileProcess> CompileProcessesSubList = [];
private bool processModeEnabled;
private bool _processModeEnabled;
private bool processModeEnabled
{
get => _processModeEnabled;
set {
if (value == _processModeEnabled)
return;

_processModeEnabled = value;
OnPropertyChanged(nameof(AddCustomParameterButtonEnabled));
}
}

public bool PresetFilterEnabled { get; set; } = true;

Expand All @@ -58,6 +75,19 @@ private int SelectedMapIndex

private int selectedMapIndex = 0;

private bool _isCompiling = false;
public bool IsCompiling { get => _isCompiling;
set {
if (value == _isCompiling)
return;

_isCompiling = value;
OnPropertyChanged(nameof(AddCustomParameterButtonEnabled));
}
}

public bool AddCustomParameterButtonEnabled { get => !IsCompiling && !processModeEnabled && selectedProcess != null && selectedProcess.SupportsCustomParameters; }

public MainWindow()
{
Instance = this;
Expand Down Expand Up @@ -388,6 +418,8 @@ void CompilingManager_OnClear()

private void CompilingManager_OnStart()
{
IsCompiling = true;

ConfigDataGrid.IsEnabled = false;
ProcessDataGrid.IsEnabled = false;
OrderGrid.IsEnabled = false;
Expand Down Expand Up @@ -417,6 +449,8 @@ private void CompilingManager_OnStart()

private void CompilingManager_OnFinish()
{
IsCompiling = false;

//If process grid is enabled, disable config grid
ConfigDataGrid.IsEnabled = !processModeEnabled;
ProcessDataGrid.IsEnabled = processModeEnabled;
Expand Down Expand Up @@ -504,6 +538,17 @@ private void RemoveParameterButton_OnClickParameterButton_Click(object sender, R

UpdateParameterTextBox();
}
private void AddCustomParameterButton_Click(object sender, RoutedEventArgs e)
{
if (selectedProcess != null)
{
var customArgumentItem = selectedProcess.ParameterList.FirstOrDefault(i => i.Name == "Command Line Argument");
selectedProcess.PresetDictionary[ConfigurationManager.CurrentPreset].Add((ConfigItem)customArgumentItem.Clone());
}
AnalyticsManager.ModifyPreset();

UpdateParameterTextBox();
}

private void AddProcessButton_Click(object sender, RoutedEventArgs e)
{
Expand Down Expand Up @@ -706,7 +751,17 @@ private void CompileProcessesListBox_SelectionChanged(object sender, SelectionCh
}


private CompileProcess selectedProcess;
private CompileProcess? _selectedProcess;
private CompileProcess? selectedProcess
{
get => _selectedProcess;
set {
if (value == selectedProcess)
return;
_selectedProcess = value;
OnPropertyChanged(nameof(AddCustomParameterButtonEnabled));
}
}

private void UpdateConfigGrid()
{
Expand All @@ -716,63 +771,67 @@ private void UpdateConfigGrid()

if (selectedProcess != null && ConfigurationManager.CurrentPreset != null && selectedProcess.PresetDictionary.ContainsKey(ConfigurationManager.CurrentPreset))
{
//Switch to the process grid for custom program screen
if (selectedProcess.Name == "CUSTOM")
{
ProcessDataGrid.BeginAnimation(OpacityProperty, new DoubleAnimation(0, 1, new Duration(TimeSpan.FromMilliseconds(50))));
processModeEnabled = true;
//Switch to the process grid for custom program screen
if (selectedProcess.Name == "CUSTOM")
{
ProcessDataGrid.BeginAnimation(OpacityProperty, new DoubleAnimation(0, 1, new Duration(TimeSpan.FromMilliseconds(50))));
processModeEnabled = true;

ProcessDataGrid.ItemsSource = selectedProcess.PresetDictionary[ConfigurationManager.CurrentPreset];

ConfigDataGrid.IsEnabled = false;
ConfigDataGrid.Visibility = Visibility.Hidden;
ParametersTextBox.Visibility = Visibility.Hidden;
ProcessDataGrid.ItemsSource = selectedProcess.PresetDictionary[ConfigurationManager.CurrentPreset];

ProcessDataGrid.IsEnabled = true;
ProcessDataGrid.Visibility = Visibility.Visible;
ConfigDataGrid.IsEnabled = false;
ConfigDataGrid.Visibility = Visibility.Hidden;
ParametersTextBox.Visibility = Visibility.Hidden;

ProcessTab.IsEnabled = true;
ProcessTab.Visibility = Visibility.Visible;
ProcessDataGrid.IsEnabled = true;
ProcessDataGrid.Visibility = Visibility.Visible;

//Hide parameter buttons if ORDER is the current tab
if ((string)(ProcessTab.SelectedItem as TabItem)?.Header == "ORDER")
{
AddParameterButton.Visibility = Visibility.Hidden;
AddParameterButton.IsEnabled = false;
ProcessTab.IsEnabled = true;
ProcessTab.Visibility = Visibility.Visible;

RemoveParameterButton.Visibility = Visibility.Hidden;
RemoveParameterButton.IsEnabled = false;
}
}
else
{
ConfigDataGrid.BeginAnimation(OpacityProperty, new DoubleAnimation(0, 1, new Duration(TimeSpan.FromMilliseconds(50))));
processModeEnabled = false;
//Hide parameter buttons if ORDER is the current tab
if ((string)(ProcessTab.SelectedItem as TabItem)?.Header == "ORDER")
{
AddParameterButton.Visibility = Visibility.Hidden;
AddParameterButton.IsEnabled = false;

ConfigDataGrid.IsEnabled = true;
ConfigDataGrid.Visibility = Visibility.Visible;
ParametersTextBox.Visibility = Visibility.Visible;
RemoveParameterButton.Visibility = Visibility.Hidden;
RemoveParameterButton.IsEnabled = false;

ProcessDataGrid.IsEnabled = false;
ProcessDataGrid.Visibility = Visibility.Hidden;
AddCustomParameterButton.Visibility = Visibility.Hidden;
}
}
else
{
ConfigDataGrid.BeginAnimation(OpacityProperty, new DoubleAnimation(0, 1, new Duration(TimeSpan.FromMilliseconds(50))));
processModeEnabled = false;

ProcessTab.IsEnabled = false;
ProcessTab.Visibility = Visibility.Hidden;
ConfigDataGrid.IsEnabled = true;
ConfigDataGrid.Visibility = Visibility.Visible;
ParametersTextBox.Visibility = Visibility.Visible;

ConfigDataGrid.ItemsSource = selectedProcess.PresetDictionary[ConfigurationManager.CurrentPreset];
ProcessDataGrid.IsEnabled = false;
ProcessDataGrid.Visibility = Visibility.Hidden;

//Make buttons visible if they were disabled
if (!AddParameterButton.IsEnabled)
{
AddParameterButton.Visibility = Visibility.Visible;
AddParameterButton.IsEnabled = true;
ProcessTab.IsEnabled = false;
ProcessTab.Visibility = Visibility.Hidden;

RemoveParameterButton.Visibility = Visibility.Visible;
RemoveParameterButton.IsEnabled = true;
}
ConfigDataGrid.ItemsSource = selectedProcess.PresetDictionary[ConfigurationManager.CurrentPreset];

UpdateParameterTextBox();
}
//Make buttons visible if they were disabled
if (!AddParameterButton.IsEnabled)
{
AddParameterButton.Visibility = Visibility.Visible;
AddParameterButton.IsEnabled = true;

RemoveParameterButton.Visibility = Visibility.Visible;
RemoveParameterButton.IsEnabled = true;

AddCustomParameterButton.Visibility = Visibility.Visible;
}

UpdateParameterTextBox();
}


}
Expand Down Expand Up @@ -883,15 +942,19 @@ private void ProcessTab_OnSelectionChanged(object sender, SelectionChangedEventA

RemoveParameterButton.Visibility = Visibility.Hidden;
RemoveParameterButton.IsEnabled = false;
}

AddCustomParameterButton.Visibility = Visibility.Hidden;
}
else
{
AddParameterButton.Visibility = Visibility.Visible;
AddParameterButton.IsEnabled = true;

RemoveParameterButton.Visibility = Visibility.Visible;
RemoveParameterButton.IsEnabled = true;
}

AddCustomParameterButton.Visibility = Visibility.Visible;
}
}

private void MapListBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
Expand Down Expand Up @@ -1114,7 +1177,6 @@ protected override void OnClosing(CancelEventArgs e)
}
base.OnClosing(e);
}

}

public static class ObservableCollectionExtension
Expand Down