Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit c9c422d8 authored by Markus QUARITSCH's avatar Markus QUARITSCH
Browse files

adding options tab panel to main window, adding options as in legacy vecto

missing: load/save options in json format
parent 689eebbd
No related branches found
No related tags found
No related merge requests found
......@@ -76,6 +76,13 @@ namespace VECTO3GUI.ViewModel.Impl
private ICommand _stopSimulationCommand;
private bool _canRunSimulation = true;
private bool _canStopSimulation = false;
private bool _writeModData;
private bool _writeModData1Hz;
private bool _validateData;
private bool _writeActualModData;
private string _outputDirectory;
private ICommand _browseOutputDirectory;
private bool _writeModelData;
#endregion
......@@ -236,6 +243,57 @@ namespace VECTO3GUI.ViewModel.Impl
set { SetProperty(ref _canStopSimulation, value); }
}
public bool WriteModData
{
get { return _writeModData; }
set { SetProperty(ref _writeModData, value); }
}
public bool WriteModData1Hz
{
get { return _writeModData1Hz; }
set { SetProperty(ref _writeModData1Hz,value); }
}
public bool ValidateData
{
get { return _validateData; }
set { SetProperty(ref _validateData, value); }
}
public bool WriteActualModData
{
get { return _writeActualModData; }
set { SetProperty(ref _writeActualModData, value); }
}
public string OutputDirectory
{
get { return _outputDirectory; }
set { SetProperty(ref _outputDirectory, value); }
}
public ICommand BrowseOutputDirectory
{
get { return _browseOutputDirectory ?? (_browseOutputDirectory = new RelayCommand(DoBrowseOutputDirectory)); }
}
public bool WriteModelData
{
get { return _writeModelData; }
set { SetProperty(ref _writeModelData, value); }
}
private void DoBrowseOutputDirectory()
{
var filePath = FileDialogHelper.ShowSelectFilesDialog(false, FileDialogHelper.JobFilter);
if (filePath.IsNullOrEmpty())
return;
OutputDirectory = filePath[0];
}
public ICommand DoubleClickCommand
{
get { return _doubleClickCommand ?? (_doubleClickCommand = new RelayCommand<JobEntry>(DoDoubleClick)); }
......@@ -820,8 +878,14 @@ namespace VECTO3GUI.ViewModel.Impl
continue;
}
var fileWriter = new FileOutputWriter(Path.GetDirectoryName(fullFileName));
var runsFactory = new SimulatorFactory(mode, input, fileWriter);
var fileWriter = new FileOutputWriter(GetOutputDirectory(fullFileName));
var runsFactory = new SimulatorFactory(mode, input, fileWriter) {
WriteModalResults = WriteModData,
ModalResults1Hz = WriteModData1Hz,
Validate = ValidateData,
ActualModalData = WriteActualModData,
SerializeVectoRunData = WriteModelData
};
foreach (var runId in jobContainer.AddRuns(runsFactory)) {
fileWriters.Add(runId, fileWriter);
}
......@@ -903,7 +967,7 @@ namespace VECTO3GUI.ViewModel.Impl
}
foreach (var jobEntry in jobs) {
var w = new FileOutputWriter(Path.GetFullPath(jobEntry.JobEntryFilePath));
var w = new FileOutputWriter(GetOutputDirectory(jobEntry.JobEntryFilePath));
foreach (var entry in new Dictionary<string, string>() { {w.XMLFullReportName, "XML ManufacturereReport"}, {w.XMLCustomerReportName, "XML Customer Report"}, { w.XMLVTPReportName, "VTP Report"}, {w.XMLPrimaryVehicleReportName, "Primary Vehicle Information File"} }) {
if (File.Exists(entry.Key)) {
sender.ReportProgress(
......@@ -932,6 +996,23 @@ namespace VECTO3GUI.ViewModel.Impl
});
}
private string GetOutputDirectory(string jobFilePath)
{
var outFile = jobFilePath;
if (!string.IsNullOrWhiteSpace(OutputDirectory)) {
if (Path.IsPathRooted(OutputDirectory)) {
outFile = Path.Combine(OutputDirectory, Path.GetFileName(jobFilePath) ?? "");
} else {
outFile = Path.Combine(Path.GetDirectoryName(jobFilePath) ?? "", OutputDirectory, Path.GetFileName(jobFilePath) ?? "");
}
if (!Directory.Exists(Path.GetDirectoryName(outFile))) {
Directory.CreateDirectory(Path.GetDirectoryName(outFile));
}
}
return outFile;
}
private void PrintRuns(Dictionary<int, JobContainer.ProgressEntry> progress, Dictionary<int, FileOutputWriter> fileWriters)
{
foreach (var p in progress) {
......
......@@ -29,5 +29,12 @@ namespace VECTO3GUI.ViewModel.Interfaces
ICommand StopSimulation { get; }
bool CanRunSimulation { get; }
bool CanStopSimulation { get; }
bool WriteModData { get; set; }
bool WriteModData1Hz { get; set; }
bool ValidateData { get; set; }
bool WriteActualModData { get; set; }
string OutputDirectory { get; set; }
ICommand BrowseOutputDirectory { get; }
bool WriteModelData { get; set; }
}
}
......@@ -7,7 +7,7 @@
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:converter="clr-namespace:VECTO3GUI.Helper.Converter"
mc:Ignorable="d"
d:DesignHeight="800" d:DesignWidth="500"
d:DesignHeight="500" d:DesignWidth="500"
xmlns:Dialog="clr-namespace:MahApps.Metro.Controls.Dialogs;assembly=MahApps.Metro"
xmlns:interfaces="clr-namespace:VECTO3GUI.ViewModel.Interfaces"
Dialog:DialogParticipation.Register="{Binding}">
......
......@@ -16,163 +16,214 @@
<d:JoblistView.DataContext>
<x:Type Type="interfaces:IJoblistViewModel"/>
</d:JoblistView.DataContext>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition Height="30"/>
<Grid.RowDefinitions>
<RowDefinition Height="*" MinHeight="270"/>
<RowDefinition Height="5"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TabControl Grid.Row="0" Grid.Column="0">
<TabItem Header="JobFiles" >
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0">
<Grid Grid.Row="1" Grid.Column="0">
<StackPanel Orientation="Vertical">
<Button VerticalAlignment="Top" Margin="10,10,0,0"
<StackPanel Orientation="Vertical">
<Button VerticalAlignment="Top" Margin="10,10,0,0"
Command="{Binding RunSimulation}" Visibility="{Binding CanRunSimulation, Converter={converter:BoolVisibilityConverter}}">
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="20" Height="15" Kind="ControlPlay" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Green"/>
<TextBlock Text="Start" Margin="5,0,0,0" />
</StackPanel>
</Button>
<Button VerticalAlignment="Top" Margin="10,10,0,0"
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="20" Height="15" Kind="ControlPlay" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Green"/>
<TextBlock Text="Start" Margin="5,0,0,0" />
</StackPanel>
</Button>
<Button VerticalAlignment="Top" Margin="10,10,0,0"
Command="{Binding StopSimulation}" Visibility="{Binding CanStopSimulation, Converter={converter:BoolVisibilityConverter}}">
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="20" Height="15" Kind="ControlStop" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Red"/>
<TextBlock Text="Stop" Margin="5,0,0,0" />
</StackPanel>
</Button>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="20" Height="15" Kind="ControlStop" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Red"/>
<TextBlock Text="Stop" Margin="5,0,0,0" />
</StackPanel>
</Button>
<StackPanel Orientation="Vertical" HorizontalAlignment="Right" Margin="0,10,0,0">
<Button Width="25"
<StackPanel Orientation="Vertical" HorizontalAlignment="Right" Margin="0,10,0,0">
<Button Width="25"
Command="{Binding MoveJobUp}"
CommandParameter="{Binding ElementName=JobList, Path=SelectedItem}">
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="15" Height="15" Kind="ArrowUp" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Green"/>
</StackPanel>
</Button>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="15" Height="15" Kind="ArrowUp" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Green"/>
</StackPanel>
</Button>
<Button Width="25" Margin="0,5,0,0"
<Button Width="25" Margin="0,5,0,0"
Command="{Binding MoveJobDown}"
CommandParameter="{Binding ElementName=JobList, Path=SelectedItem}">
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="15" Height="15" Kind="ArrowDown" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Green"/>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="15" Height="15" Kind="ArrowDown" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Green"/>
</StackPanel>
</Button>
</StackPanel>
</StackPanel>
</Button>
</StackPanel>
</StackPanel>
</Grid>
</Grid>
<Grid Grid.Row="0" Grid.Column="1" Margin="10">
<Grid Grid.Row="1" Grid.Column="1" Margin="10">
<DataGrid x:Name="JobList" ItemsSource="{Binding Jobs}"
<DataGrid x:Name="JobList" ItemsSource="{Binding Jobs}"
SelectedValue="{Binding DataContext.SelectedJobEntry, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
Style="{DynamicResource AzureDataGrid}" BorderThickness="1" CanUserAddRows="False" AutoGenerateColumns="False" SelectionUnit="FullRow"
IsReadOnly="False" HeadersVisibility="All" RowHeaderWidth="5" IsSynchronizedWithCurrentItem="True"
Drop="JobList_OnDrop" AllowDrop="True">
<DataGrid.InputBindings>
<MouseBinding
<DataGrid.InputBindings>
<MouseBinding
MouseAction="LeftDoubleClick"
Command="{Binding DoubleClickCommand}"
CommandParameter="{Binding Jobs/}"/>
</DataGrid.InputBindings>
</DataGrid.InputBindings>
<DataGrid.Resources>
<ContextMenu x:Key="RowMenu">
<MenuItem Header="{Binding DataContext.FirstContextMenu, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
<DataGrid.Resources>
<ContextMenu x:Key="RowMenu">
<MenuItem Header="{Binding DataContext.FirstContextMenu, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
Command="{Binding DataContext.OpenJob, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
CommandParameter="{Binding Source={x:Static impl:JobFileType.PrimaryBusFile}}"
Visibility="{Binding DataContext.VisibilityFirstView, Converter={converter:BoolVisibilityConverter},
RelativeSource={RelativeSource AncestorType=views:JoblistView}}"/>
<MenuItem Header="View Completed Bus File"
<MenuItem Header="View Completed Bus File"
Command="{Binding DataContext.OpenJob, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
CommandParameter="{Binding Source={x:Static impl:JobFileType.CompletedBusFile}}"
Visibility="{Binding DataContext.VisibilitySecView, Converter={converter:BoolVisibilityConverter},
RelativeSource={RelativeSource AncestorType=views:JoblistView}}"/>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<MenuItem Header="Edit Job"
<MenuItem Header="Edit Job"
Command="{Binding DataContext.EditJob, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
CommandParameter="{Binding DataContext.SelectedJobEntry, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"/>
<MenuItem Header="Edit Completed File"
<MenuItem Header="Edit Completed File"
Command="{Binding DataContext.EditCompletedFile, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
CommandParameter="{Binding DataContext.SelectedJobEntry, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"/>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<MenuItem Header="Show In Folder"
<MenuItem Header="Show In Folder"
Command="{Binding DataContext.OpenInFolder, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
CommandParameter="{Binding DataContext.SelectedJobEntry, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"/>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<MenuItem Header="Remove Job"
<MenuItem Header="Remove Job"
Command="{Binding DataContext.RemoveJob, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"
CommandParameter="{Binding DataContext.SelectedJobEntry, RelativeSource={RelativeSource AncestorType=views:JoblistView}}"/>
</ContextMenu>
</DataGrid.Resources>
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Add Job" Command="{Binding AddJob}"/>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<MenuItem Header="Create Single Bus Job"
</ContextMenu>
</DataGrid.Resources>
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Add Job" Command="{Binding AddJob}"/>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<MenuItem Header="Create Single Bus Job"
Command="{Binding AddBusJob}" CommandParameter="{Binding Source={x:Static impl:JobType.SingleBusJob}}"/>
<MenuItem Header="Create Completed Bus Job"
<MenuItem Header="Create Completed Bus Job"
Command="{Binding AddBusJob}" CommandParameter="{Binding Source={x:Static impl:JobType.CompletedBusJob}}"/>
<MenuItem Header="Create Completed XML"
<MenuItem Header="Create Completed XML"
Command="{Binding CreateNewJob}"/>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<MenuItem Header="Remove All" Command="{Binding RemoveAllJobs}"/>
</ContextMenu>
</DataGrid.ContextMenu>
<Separator HorizontalAlignment="Stretch" Background="Gray"/>
<MenuItem Header="Remove All" Command="{Binding RemoveAllJobs}"/>
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Selected, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="File Path" Binding="{Binding JobEntryFilePath}" IsReadOnly="True">
<DataGridTextColumn.CellStyle>
<Style TargetType= "{x:Type DataGridCell}" BasedOn="{StaticResource MetroDataGridCell}" >
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Selected, UpdateSourceTrigger=PropertyChanged}" />
<DataGridTextColumn Header="File Path" Binding="{Binding JobEntryFilePath}" IsReadOnly="True">
<DataGridTextColumn.CellStyle>
<Style TargetType= "{x:Type DataGridCell}" BasedOn="{StaticResource MetroDataGridCell}" >
<Setter Property="ContextMenu" Value="{StaticResource RowMenu}"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</DataGrid>
</Grid>
</Grid>
<Grid Grid.Row="1" Grid.Column="2" Margin="0,0,10,0">
<StackPanel Orientation="Vertical" Margin="0,30,0,0" Width="105">
<Button Margin="0,5,0,0" Content="Add File"
<Grid Grid.Row="0" Grid.Column="2" Margin="0,0,10,0">
<StackPanel Orientation="Vertical" Margin="0,30,0,0" Width="105">
<Button Margin="0,5,0,0" Content="Add File"
Command="{Binding AddJob}"/>
<Button Margin="0,5,0,0" Content="Edit Job"
<Button Margin="0,5,0,0" Content="Edit Job"
Command="{Binding EditJob}"
CommandParameter="{Binding ElementName=JobList, Path=SelectedItem}"/>
<Button Margin="0,5,0,0" Content="Remove Job"
<Button Margin="0,5,0,0" Content="Remove Job"
Command="{Binding RemoveJob}"
CommandParameter="{Binding ElementName=JobList, Path=SelectedItem}"/>
<Button Margin="0,5,0,0" Content="Edit Completed File"
<Button Margin="0,5,0,0" Content="Edit Completed File"
Command="{Binding EditCompletedFile}"
CommandParameter="{Binding ElementName=JobList, Path=SelectedItem}"/>
</StackPanel>
</Grid>
</StackPanel>
</Grid>
</Grid>
</TabItem>
<TabItem Header="Options">
<StackPanel Orientation="Horizontal" Margin="5,10,5,5">
<StackPanel Orientation="Vertical">
<GroupBox Header="Output">
<StackPanel Orientation="Vertical">
<CheckBox Margin="0,0,0,3" IsChecked="{Binding WriteModData}">Write modal results</CheckBox>
<CheckBox Margin="0,0,0,3" IsChecked="{Binding WriteModData1Hz}">Modal results in 1Hz</CheckBox>
</StackPanel>
</GroupBox>
<GroupBox Header="Misc" Margin="0 5,0,0">
<StackPanel Orientation="Vertical">
<CheckBox Margin="0,0,0,3" IsChecked="{Binding ValidateData}">Validate data</CheckBox>
<CheckBox Margin="0,0,0,3" IsChecked="{Binding WriteActualModData}">
<TextBlock>
<Run> Output values in vmod at</Run><LineBreak/>
<Run>beginning and end of</Run><LineBreak/>
<Run>simulation interval</Run><LineBreak/>
<Run>(EXPERT!)</Run>
</TextBlock>
</CheckBox>
</StackPanel>
</GroupBox>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5,0,0,0">
<GroupBox Header ="Output Directory">
<StackPanel Orientation="Horizontal">
<TextBox Width="200" Text="{Binding OutputDirectory}"/>
<Button Width="25" Command="{Binding BrowseOutputDirectory}" Margin="5,0,0,0">
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="15" Height="15" Kind="FolderOpen" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel>
</Button>
</StackPanel>
</GroupBox>
<GroupBox Header="Simulation Data" Margin =" 0,5,0,0">
<StackPanel Orientation="Vertical">
<CheckBox IsChecked="{Binding WriteModelData}" Margin="0,0,0,3">Write internal model data (EXPERT!)</CheckBox>
</StackPanel>
</GroupBox>
</StackPanel>
</StackPanel>
</TabItem>
</TabControl>
<GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch"/>
<Grid Grid.Row="2" Grid.ColumnSpan="3" Grid.Column="0" Margin="10,20,20,10">
<Grid Grid.Row="2" Grid.Column="0" Margin="10,10,10,10">
<DataGrid ItemsSource="{Binding Messages}" BorderThickness="1" CanUserAddRows="False" AutoGenerateColumns="False" SelectionUnit="FullRow"
IsReadOnly="True" HeadersVisibility="All" RowHeaderWidth="5" RowHeight="5" Name="MessageList">
......@@ -222,6 +273,7 @@
</DataGrid.CellStyle>
</DataGrid>
</Grid>
</Grid>
</UserControl>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment