public MainWindow(ToolInvokeDesc desc) : this() { var vm = DataContext as MainViewModel; vm.OpenToolDesc(desc); }
public BarView(ToolInvokeDesc desc) : base() { var vm = DataContext as BarViewModel; DataContext = new BarViewModel(desc); }
public static ToolInvokeDesc.ContentChangeInfo?OpenTool(string fileName, string temporaryFileName, Bar.Entry entry) { string name; switch (entry.Type) { // Disabling it, since it is veeeeeery buggy at the moment. //case Bar.EntryType.Bar: // name = "OpenKh.Tools.BarEditor"; // break; case Bar.EntryType.Imgd: case Bar.EntryType.Imgz: name = "OpenKh.Tools.ImageViewer"; break; case Bar.EntryType.Layout: name = "OpenKh.Tools.LayoutViewer"; break; default: throw new NotImplementedException($"Unable to find a tool for \"{entry.Type}\" files."); } var toolModule = Plugins .GetModules <IToolModule <ToolInvokeDesc> >(null, x => x.Contains(name) && Path.GetExtension(x) == ".dll") .FirstOrDefault(); if (toolModule.Item1 == null || toolModule.Item2 == null) { MessageBox.Show($"Unable to find a tool module for the tool {name}.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return(null); } var tool = Activator.CreateInstance(toolModule.Item2) as IToolModule <ToolInvokeDesc>; entry.Stream.Position = 0; var toolInvokeDesc = new ToolInvokeDesc { Title = $"{entry.Name}@{Path.GetFileName(fileName)}", ActualFileName = temporaryFileName, SelectedEntry = entry, ContentChange = ToolInvokeDesc.ContentChangeInfo.None }; tool?.ShowDialog(toolInvokeDesc); return(toolInvokeDesc.ContentChange); }
public BarViewModel(ToolInvokeDesc desc) : this() { _toolInvokeDesc = desc; OpenStream(desc.SelectedEntry.Stream); NewCommand = new RelayCommand(x => { }, x => false); OpenCommand = new RelayCommand(x => { }, x => false); SaveCommand = new RelayCommand(x => { var memoryStream = new MemoryStream(); Bar.Write(memoryStream, Items.Select(item => item.Entry), MotionsetType); var stream = _toolInvokeDesc.SelectedEntry.Stream; stream.Position = 0; stream.SetLength(0); memoryStream.Position = 0; memoryStream.CopyTo(stream); }); SaveAsCommand = new RelayCommand(x => { }, x => false); }
public MainWindow(ToolInvokeDesc toolInvokeDesc) : this() { (DataContext as ImageViewerViewModel).LoadImage(toolInvokeDesc); }