Пример #1
0
        public MainWindow(ToolInvokeDesc desc) :
            this()
        {
            var vm = DataContext as MainViewModel;

            vm.OpenToolDesc(desc);
        }
Пример #2
0
        public BarView(ToolInvokeDesc desc) :
            base()
        {
            var vm = DataContext as BarViewModel;

            DataContext = new BarViewModel(desc);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
 public MainWindow(ToolInvokeDesc toolInvokeDesc) : this()
 {
     (DataContext as ImageViewerViewModel).LoadImage(toolInvokeDesc);
 }