diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-08-26 10:37:38 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-08-26 10:37:38 +0300 |
| commit | e6704dce7a2b7f6d5f9bbf1b8374cc7f00ea061e (patch) | |
| tree | e405f333819560543274119432dd01667d850b77 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner | |
| parent | 9f112324a1196bffd1660122285aafc2aff63219 (diff) | |
| parent | f98cac2d6e331eaf62167d63524134d53db921ef (diff) | |
| download | Tango-e6704dce7a2b7f6d5f9bbf1b8374cc7f00ea061e.tar.gz Tango-e6704dce7a2b7f6d5f9bbf1b8374cc7f00ea061e.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner')
10 files changed, 226 insertions, 120 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/AutoComplete/MachineVersionsProvider.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/AutoComplete/MachineVersionsProvider.cs index 18cfca79d..75b4718cd 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/AutoComplete/MachineVersionsProvider.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/AutoComplete/MachineVersionsProvider.cs @@ -21,7 +21,7 @@ namespace Tango.MachineStudio.MachineDesigner.AutoComplete public IEnumerable GetSuggestions(string filter) { Text = filter; - return ObservablesEntitiesAdapter.Instance.MachineVersions.Where(x => x.Version.ToString().StartsWith(filter, StringComparison.CurrentCultureIgnoreCase) || x.Name.StartsWith(filter, StringComparison.CurrentCultureIgnoreCase)).ToList(); + return ObservablesStaticCollections.Instance.MachineVersions.Where(x => x.Version.ToString().StartsWith(filter, StringComparison.CurrentCultureIgnoreCase) || x.Name.StartsWith(filter, StringComparison.CurrentCultureIgnoreCase)).ToList(); } } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/AutoComplete/MachinesProvider.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/AutoComplete/MachinesProvider.cs deleted file mode 100644 index 01b74e8a6..000000000 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/AutoComplete/MachinesProvider.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.AutoComplete.Editors; -using Tango.BL; -using Tango.BL.Entities; - -namespace Tango.MachineStudio.MachineDesigner.AutoComplete -{ - /// <summary> - /// Represents an auto-complete <see cref="Machine">Machines</see> provider. - /// </summary> - /// <seealso cref="Tango.AutoComplete.Editors.ISuggestionProvider" /> - public class MachinesProvider : ISuggestionProvider - { - /// <summary> - /// Gets the suggestions. - /// </summary> - /// <param name="filter">The filter.</param> - /// <returns></returns> - public IEnumerable GetSuggestions(string filter) - { - return ObservablesEntitiesAdapter.Instance.Machines.Where(x => x.SerialNumber.StartsWith(filter, StringComparison.CurrentCultureIgnoreCase)).ToList(); - } - } -} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Properties/AssemblyInfo.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Properties/AssemblyInfo.cs index 832feca43..a5e99504c 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Properties/AssemblyInfo.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Properties/AssemblyInfo.cs @@ -5,7 +5,7 @@ using System.Runtime.InteropServices; using System.Windows; [assembly: AssemblyTitle("Tango - Machine Studio Machine Designer Module")] -[assembly: AssemblyVersion("2.0.8.1633")] +[assembly: AssemblyVersion("2.0.10.1159")] [assembly: ComVisible(false)] diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Tango.MachineStudio.MachineDesigner.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Tango.MachineStudio.MachineDesigner.csproj index 0d6708246..a578d0e54 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Tango.MachineStudio.MachineDesigner.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Tango.MachineStudio.MachineDesigner.csproj @@ -8,7 +8,7 @@ <OutputType>library</OutputType> <RootNamespace>Tango.MachineStudio.MachineDesigner</RootNamespace> <AssemblyName>Tango.MachineStudio.MachineDesigner</AssemblyName> - <TargetFrameworkVersion>v4.6</TargetFrameworkVersion> + <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <WarningLevel>4</WarningLevel> @@ -31,6 +31,12 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> + <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.dll</HintPath> + </Reference> + <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.SqlServer.dll</HintPath> + </Reference> <Reference Include="FontAwesome.WPF, Version=4.7.0.37774, Culture=neutral, PublicKeyToken=0758b07a11a4f466, processorArchitecture=MSIL"> <HintPath>..\..\..\packages\FontAwesome.WPF.4.7.0.9\lib\net40\FontAwesome.WPF.dll</HintPath> </Reference> @@ -47,6 +53,7 @@ <HintPath>..\..\..\packages\SimpleValidator.0.6.1.0\lib\net40\SimpleValidator.dll</HintPath> </Reference> <Reference Include="System" /> + <Reference Include="System.ComponentModel.DataAnnotations" /> <Reference Include="System.Data" /> <Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\..\..\packages\Expression.Blend.Sdk.1.0.2\lib\net45\System.Windows.Interactivity.dll</HintPath> @@ -68,7 +75,6 @@ <Compile Include="..\..\..\Versioning\GlobalVersionInfo.cs"> <Link>GlobalVersionInfo.cs</Link> </Compile> - <Compile Include="AutoComplete\MachinesProvider.cs" /> <Compile Include="AutoComplete\MachineVersionsProvider.cs" /> <Compile Include="ViewModelLocator.cs" /> <Compile Include="ViewModels\MachineVersionDialogVM.cs" /> @@ -114,7 +120,9 @@ <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>Resources.Designer.cs</LastGenOutput> </EmbeddedResource> - <None Include="app.config" /> + <None Include="app.config"> + <SubType>Designer</SubType> + </None> <None Include="packages.config" /> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> @@ -224,7 +232,7 @@ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> + <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineVersionDialogVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineVersionDialogVM.cs index 40358344d..b332ebc6b 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineVersionDialogVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineVersionDialogVM.cs @@ -14,7 +14,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { public class MachineVersionDialogVM : DialogViewVM { - public ObservablesEntitiesAdapter Adapter { get; set; } + public ObservablesStaticCollections Adapter { get; set; } public double Version { get; set; } @@ -46,7 +46,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels public MachineVersionDialogVM() { - Adapter = ObservablesEntitiesAdapter.Instance; + Adapter = ObservablesStaticCollections.Instance; AcceptCommand = new RelayCommand(() => { Accept(); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs index 1f410d49c..de9a8de4a 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs @@ -16,27 +16,39 @@ using SimpleValidator.Extensions; using Tango.MachineStudio.Common.StudioApplication; using Tango.MachineStudio.Common; using Tango.BL; +using Tango.AutoComplete.Editors; +using System.Data.Entity; namespace Tango.MachineStudio.MachineDesigner.ViewModels { - public class MainViewVM : StudioViewModel<MachineDesignerModule> + public class MainViewVM : StudioViewModel { - private bool _isSaving; private INotificationProvider _notification; - + private ObservablesContext _db; + private Configuration _original_configuration; #region Properties - private ObservablesEntitiesAdapter _adapter; + private ObservablesStaticCollections _adapter; /// <summary> - /// Gets or sets the db adapter. + /// Gets or sets the db static adapter. /// </summary> - public ObservablesEntitiesAdapter Adapter + public ObservablesStaticCollections Adapter { get { return _adapter; } set { _adapter = value; RaisePropertyChangedAuto(); } } + private bool _canWork; + /// <summary> + /// Gets or sets a value indicating whether this instance can work. + /// </summary> + public bool CanWork + { + get { return _canWork; } + set { _canWork = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } + } + private Machine _machine; /// <summary> /// Gets or sets the current editable machine. @@ -54,7 +66,13 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels public Machine SelectedMachine { get { return _selectedMachine; } - set { _selectedMachine = value; RaisePropertyChangedAuto(); OnSelectedMachineChanged(); } + set + { + if (_selectedMachine != value) + { + _selectedMachine = value; RaisePropertyChangedAuto(); OnSelectedMachineChanged(); + } + } } private Configuration _configuration; @@ -107,6 +125,11 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(); } } + /// <summary> + /// Gets or sets the machines provider. + /// </summary> + public ISuggestionProvider MachinesProvider { get; set; } + #endregion #region Commands @@ -136,6 +159,11 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels /// </summary> public RelayCommand SetAsDefaultCommand { get; set; } + /// <summary> + /// Gets or sets the reset command. + /// </summary> + public RelayCommand ResetCommand { get; set; } + #endregion #region Constructors @@ -150,23 +178,81 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels /// </summary> public MainViewVM(INotificationProvider notification) { + CanWork = true; + _notification = notification; - Adapter = ObservablesEntitiesAdapter.Instance; Configuration = new Configuration(); Configuration.Name = "Untitled"; Machine = new Machine(); Machine.Configuration = Configuration; - SaveCommand = new RelayCommand(Save, (x) => !_isSaving); - AddIdsCommand = new RelayCommand(AddIds, (x) => !_isSaving && Configuration.IdsPacks.Count < 8); - RemoveIdsCommand = new RelayCommand(RemoveIds, (x) => !_isSaving && SelectedIds != null); - SetVersionConfigurationCommand = new RelayCommand(SetVersionConfiguration, (x) => !_isSaving); - SetAsDefaultCommand = new RelayCommand(SetAsDefaultConfiguration, (x) => !_isSaving); + SaveCommand = new RelayCommand(Save, (x) => CanWork); + AddIdsCommand = new RelayCommand(AddIds, (x) => CanWork && Configuration.IdsPacks.Count < 8); + RemoveIdsCommand = new RelayCommand(RemoveIds, (x) => CanWork && SelectedIds != null); + SetVersionConfigurationCommand = new RelayCommand(SetVersionConfiguration, (x) => CanWork); + SetAsDefaultCommand = new RelayCommand(SetAsDefaultConfiguration, (x) => CanWork); + ResetCommand = new RelayCommand(Reset, () => CanWork); + + MachinesProvider = new SuggestionProvider((filter) => + { + return _db.Machines.Where(x => x.SerialNumber.StartsWith(filter)).ToList(); + }); + } + + #endregion + + #region Application Ready + + public async override void OnApplicationReady() + { + await InitCollections(); } #endregion + private Task InitCollections() + { + return Task.Factory.StartNew(() => + { + CanWork = false; + + _db = ObservablesContext.CreateDefault(); + + Adapter = new ObservablesStaticCollections(); + Adapter.ApplicationDisplayPanelVersions = _db.ApplicationDisplayPanelVersions.ToObservableCollection(); + Adapter.ApplicationFirmwareVersions = _db.ApplicationFirmwareVersions.ToObservableCollection(); + Adapter.ApplicationOsVersions = _db.ApplicationOsVersions.ToObservableCollection(); + Adapter.EmbeddedFirmwareVersions = _db.EmbeddedFirmwareVersions.ToObservableCollection(); + Adapter.DispenserTypes = _db.DispenserTypes.ToObservableCollection(); + Adapter.LiquidTypes = _db.LiquidTypes.ToObservableCollection(); + Adapter.MidTankTypes = _db.MidTankTypes.ToObservableCollection(); + Adapter.CartridgeTypes = _db.CartridgeTypes.ToObservableCollection(); + Adapter.IdsPackFormulas = _db.IdsPackFormulas.ToObservableCollection(); + Adapter.HardwareVersions = _db.HardwareVersions.ToObservableCollection(); + Adapter.MachineVersions = _db.MachineVersions.ToObservableCollection(); + Adapter.Organizations = _db.Organizations.ToObservableCollection(); + + Adapter.InitCollectionSources(); + + CanWork = true; + }); + } + + private void Reset() + { + using (_notification.PushTaskItem("Resetting designer...")) + { + SelectedMachine = null; + Machine = new Machine(); + Configuration = new Configuration(); + History = new ObservableCollection<Configuration>(); + SelectedHistoryConfiguration = null; + Filter = String.Empty; + InitCollections(); + } + } + #region Virtual Methods /// <summary> @@ -176,9 +262,23 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { if (SelectedMachine != null) { - Machine = SelectedMachine.Clone(); - Configuration = Machine.Configuration.Clone(); - History = SelectedMachine.MachinesConfigurations.Select(x => x.Configuration).ToObservableCollection(); + CanWork = false; + + using (_notification.PushTaskItem("Loading machine configuration...")) + { + Task.Factory.StartNew(() => + { + InitCollections().Wait(); + Machine = _db.Machines.Where(x => x.Guid == SelectedMachine.Guid).Include(x => x.Organization).SingleOrDefault(x => x.Guid == SelectedMachine.Guid); + Configuration = _db.Adapter.GetConfiguration(x => x.Guid == Machine.ConfigurationGuid); + + SetHistory(); + + _original_configuration = Configuration.Clone(); + }); + } + + CanWork = true; } else { @@ -191,9 +291,21 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels /// </summary> protected virtual void OnHistoryConfigurationSelected() { - if (SelectedHistoryConfiguration != null) + if (SelectedHistoryConfiguration != null && CanWork) { - Configuration = SelectedHistoryConfiguration.Clone(); + using (_notification.PushTaskItem("Loading Configuration...")) + { + Task.Factory.StartNew(() => + { + CanWork = false; + + SelectedHistoryConfiguration = _db.Adapter.GetConfiguration(x => x.Guid == SelectedHistoryConfiguration.Guid); + Configuration = SelectedHistoryConfiguration; + Machine.Configuration = Configuration; + + CanWork = true; + }); + } } } @@ -202,8 +314,6 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels /// </summary> protected virtual void OnFilterChanged() { - - List<ICollectionView> collections = new List<ICollectionView>(); collections.Add(Adapter.ApplicationFirmwareVersionsViewSource); collections.Add(Adapter.ApplicationDisplayPanelVersionsViewSource); @@ -223,7 +333,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { String value = prop.GetValue(x).ToStringSafe(); - if (value != null) + if (value != null && Filter != null) { if (value.ToLower().Contains(Filter.ToLower())) { @@ -366,7 +476,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels /// </summary> private void RemoveIds() { - Configuration.IdsPacks.Remove(SelectedIds); + _db.IdsPacks.Remove(SelectedIds); SelectedIds = null; } @@ -375,7 +485,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels /// </summary> private void AddIds() { - Configuration.IdsPacks.Add(new IdsPack() { Configuration = Configuration }); + _db.IdsPacks.Add(new IdsPack() { Configuration = Configuration }); InvalidateRelayCommands(); } @@ -494,17 +604,17 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels //Validate - _isSaving = true; - InvalidateRelayCommands(); - try { + CanWork = false; + using (_notification.PushTaskItem("Saving Machine Configuration...")) { - if (!Adapter.Machines.ToList().Exists(x => x.SerialNumber.ToLower() == Machine.SerialNumber.ToLower())) + if (!_db.Machines.Any(x => x.SerialNumber.ToLower() == Machine.SerialNumber.ToLower())) { if (!_notification.ShowQuestion("The specified machine serial number does not exist. Do you wish to create a new machine?")) { + CanWork = true; return; } else @@ -512,53 +622,34 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels Machine.Configuration = Configuration; Configuration.CreationDate = DateTime.UtcNow; Machine.ProductionDate = DateTime.UtcNow; - Machine.MachinesConfigurations.Add(new MachinesConfiguration() + + _db.Machines.Add(Machine); + _db.MachinesConfigurations.Add(new MachinesConfiguration() { Configuration = Configuration, Machine = Machine, }); - await Machine.SaveAsync(Adapter.Context); - - Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == Machine.Guid); - Configuration = Machine.Configuration.Clone(); } } else { - var machine = Adapter.Machines.Single(x => x.SerialNumber.ToLower() == Machine.SerialNumber.ToLower()); - - //Set 'Real machine' parameters... - - bool add_history = History.Count == 0 || History.First().Name != Configuration.Name; - - machine.Name = Machine.Name; - machine.SerialNumber = Machine.SerialNumber; - machine.Organization = Machine.Organization; - + bool add_history = History.Count == 0 || _original_configuration.Name != Configuration.Name; if (add_history) { - machine.MachinesConfigurations.Add(new MachinesConfiguration() + _db.Configurations.Add(_original_configuration); + + _db.MachinesConfigurations.Add(new MachinesConfiguration() { - Configuration = Configuration, - Machine = machine + Configuration = _original_configuration, + Machine = Machine }); } - else - { - machine.Configuration.DefferedDelete(Adapter.Context); - } - - machine.Configuration = Configuration; - - await machine.SaveAsync(Adapter.Context); - - Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == machine.Guid); - Configuration = Machine.Configuration.Clone(); } - SetHistory(Machine); - Machine = Machine.Clone(); + await _db.SaveChangesAsync(); + OnSelectedMachineChanged(); + } } catch (Exception ex) @@ -567,7 +658,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels } finally { - _isSaving = false; + CanWork = true; InvalidateRelayCommands(); } } @@ -576,20 +667,33 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels /// Sets the specified machine history. /// </summary> /// <param name="machine">The machine.</param> - private void SetHistory(Machine machine) + private void SetHistory() { - History = machine.MachinesConfigurations.Select(x => x.Configuration).ToObservableCollection(); - History.Insert(0, machine.Configuration); + History = _db.MachinesConfigurations.Where(x => x.MachineGuid == Machine.Guid).Select(x => x.Configuration).ToObservableCollection(); + //History.Insert(0, Machine.Configuration); } /// <summary> /// Sets the current configuration to the selected machine version default configuration. /// </summary> - private void SetVersionConfiguration() + private async void SetVersionConfiguration() { if (Machine.MachineVersion != null) { - Configuration = Machine.MachineVersion.DefaultConfiguration.Clone(); + using (_notification.PushTaskItem("Applying default configuration...")) + { + CanWork = false; + + await Task.Factory.StartNew(() => + { + var version = _db.MachineVersions.Where(x => x.Guid == Machine.MachineVersion.Guid).Include(x => x.DefaultConfiguration).FirstOrDefault(); + var version_config = _db.Adapter.GetConfiguration(x => x.Guid == version.DefaultConfiguration.Guid); + Configuration = version_config.Clone(); + Machine.Configuration = Configuration; + }); + + CanWork = true; + } } else { @@ -604,15 +708,23 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { _notification.ShowModalDialog<MachineVersionDialogVM>(async (vm) => { + CanWork = false; + try { using (_notification.PushTaskItem("Saving Default Configuration...")) { if (vm.SelectedVersion != null) { - vm.SelectedVersion.DefaultConfiguration = Configuration.Clone(); - vm.SelectedVersion.DefaultConfigurationGuid = vm.SelectedVersion.DefaultConfiguration.Guid; - await vm.SelectedVersion.SaveAsync(Adapter.Context); + var version = _db.MachineVersions.Where(x => x.Guid == vm.SelectedVersion.Guid).Include(x => x.DefaultConfiguration).SingleOrDefault(x => x.Guid == vm.SelectedVersion.Guid); + + _db.Configurations.Remove(version.DefaultConfiguration); + + var cloned = Configuration.Clone(); + _db.Configurations.Add(cloned); + version.DefaultConfiguration = cloned; + + await _db.SaveChangesAsync(); } else { @@ -620,9 +732,12 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels newVersion.Version = vm.Version; newVersion.Name = vm.VersionName; - newVersion.DefaultConfiguration = Configuration.Clone(); - newVersion.DefaultConfigurationGuid = newVersion.DefaultConfiguration.Guid; - await newVersion.SaveAsync(Adapter.Context); + var cloned = Configuration.Clone(); + + _db.Configurations.Add(cloned); + newVersion.DefaultConfiguration = cloned; + _db.MachineVersions.Add(newVersion); + await _db.SaveChangesAsync(); } } } @@ -630,6 +745,10 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { _notification.ShowError(ex.Message); } + finally + { + CanWork = true; + } }, () => { @@ -638,14 +757,5 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels } #endregion - - #region IStudioModuleVM - - public override void OnModuleRequest(params object[] args) - { - SelectedMachine = Adapter.Machines.SingleOrDefault(x => x.Guid == (args[0] as Machine).Guid); - } - - #endregion } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineView.xaml index 4d75651f7..e2dd7c5a9 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MachineView.xaml @@ -17,7 +17,6 @@ <UserControl.Resources> <sharedConverters:ColorToIntegerConverter x:Key="ColorToIntegerConverter" /> - <providers:MachinesProvider x:Key="MachinesProvider"></providers:MachinesProvider> <Style x:Key="draggableGrid" TargetType="Grid"> <Setter Property="RenderTransform"> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml index 4e3e31326..e12f85cdf 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/Views/MainView.xaml @@ -17,7 +17,6 @@ <UserControl.Resources> <sharedConverters:ColorToIntegerConverter x:Key="ColorToIntegerConverter" /> - <providers:MachinesProvider x:Key="MachinesProvider"></providers:MachinesProvider> <Style x:Key="draggableGrid" TargetType="Grid"> <Setter Property="RenderTransform"> @@ -89,7 +88,7 @@ <TextBlock FontSize="30" FontStyle="Italic" VerticalAlignment="Center" Margin="50 10 10 0" Foreground="Silver" FontWeight="Bold">MACHINE DESIGNER</TextBlock> <StackPanel Orientation="Horizontal" Margin="20 10 0 0" VerticalAlignment="Center"> <materialDesign:PackIcon Kind="BarcodeScan" VerticalAlignment="Bottom" Width="24" Height="24" Foreground="Silver"></materialDesign:PackIcon> - <autoComplete:AutoCompleteTextBox FontSize="16" FontWeight="Bold" FontStyle="Italic" Width="300" Margin="5 0 0 0" materialDesign:HintAssist.Hint="Enter serial number" DisplayMember="SerialNumber" Provider="{StaticResource ResourceKey=MachinesProvider}" SelectedItem="{Binding SelectedMachine,Mode=TwoWay}"> + <autoComplete:AutoCompleteTextBox FontSize="16" FontWeight="Bold" FontStyle="Italic" Width="300" Margin="5 0 0 0" materialDesign:HintAssist.Hint="Enter serial number" DisplayMember="SerialNumber" Provider="{Binding MachinesProvider}" SelectedItem="{Binding SelectedMachine,Mode=TwoWay}"> <autoComplete:AutoCompleteTextBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding SerialNumber}"></TextBlock> @@ -99,6 +98,10 @@ <TextBlock Text="Loading..." Margin="5" FontSize="14" /> </autoComplete:AutoCompleteTextBox.LoadingContent> </autoComplete:AutoCompleteTextBox> + + <Button Style="{StaticResource MaterialDesignFlatButton}" Margin="10 0 0 0" Padding="0" Foreground="Gray" Width="40" Command="{Binding ResetCommand}" ToolTip="Reset the designer"> + <materialDesign:PackIcon Kind="Refresh" Width="24" Height="24" /> + </Button> </StackPanel> </StackPanel> </StackPanel> @@ -417,7 +420,7 @@ </Grid> </Grid> - <Grid Grid.Column="1"> + <Grid Grid.Column="1" IsEnabled="{Binding CanWork}"> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition Height="60"/> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/app.config b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/app.config index 5d794b958..0e58ccf54 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/app.config +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/app.config @@ -1,5 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <configuration> + <configSections> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> + </configSections> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> @@ -46,6 +50,16 @@ <assemblyIdentity name="System.Diagnostics.StackTrace" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="System.Xml.ReaderWriter" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" /> + </dependentAssembly> </assemblyBinding> </runtime> + <entityFramework> + <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> + <providers> + <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> + </providers> + </entityFramework> </configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/packages.config b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/packages.config index 59e34e36f..8b579e95a 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/packages.config +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/packages.config @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="CommonServiceLocator" version="1.3" targetFramework="net46" /> + <package id="EntityFramework" version="6.0.0" targetFramework="net472" /> <package id="Expression.Blend.Sdk" version="1.0.2" targetFramework="net46" /> <package id="FontAwesome.WPF" version="4.7.0.9" targetFramework="net46" /> <package id="MahApps.Metro" version="1.5.0" targetFramework="net46" /> |
