Ejemplo n.º 1
0
        /// <summary>
        /// Setup the backgroundworker and progress forms (Main thread)
        /// </summary>
        /// <param name="args"></param>
        public void WorkerLoadFileSetup(LoadFileArgs args)
        {
            MainController.Get().ProjectStatus = EProjectStatus.Busy;

            this.Text = Path.GetFileName(args.Filename) + " [" + args.Filename + "]";

            if (!backgroundWorker1.IsBusy)
            {
                ProgressForm = new frmProgress()
                {
                    Text            = "Loading File...",
                    StartPosition   = FormStartPosition.CenterScreen,
                    FormBorderStyle = FormBorderStyle.None
                };

                workerAction = WorkerLoadFile;
                backgroundWorker1.RunWorkerAsync(args);
                var dr = ProgressForm.ShowDialog(this);
            }
            else
            {
                MainController.LogString("The background worker is currently busy.\r\n", Logtype.Error);
            }

            MainController.Get().ProjectStatus = EProjectStatus.Ready;
        }
Ejemplo n.º 2
0
        public frmCR2WDocument(CR2WDocumentViewModel documentViewModel)
        {
            vm = documentViewModel;
            vm.ClosingRequest  += (sender, e) => this.Close();
            vm.ActivateRequest += (sender, e) => this.Activate();
            vm.PropertyChanged += ViewModel_PropertyChanged;

            InitializeComponent();
            ApplyCustomTheme();

            chunkList = new frmChunkList(vm)
            {
                DockAreas = DockAreas.Document
            };
            propertyWindow = new frmChunkProperties(vm);

            backgroundWorker1.WorkerReportsProgress      = true;
            backgroundWorker1.WorkerSupportsCancellation = true;
            backgroundWorker1.DoWork             += backgroundWorker1_DoWork;
            backgroundWorker1.ProgressChanged    += backgroundWorker1_ProgressChanged;
            backgroundWorker1.RunWorkerCompleted += backgroundWorker1_RunWorkerCompleted;

            m_deserializeDockContent = new DeserializeDockContent(GetContentFromPersistString);

            docLoggerService = new LoggerService();
            docLoggerService.PropertyChanged += LoggerUpdated;
            docLoggerService.OnStringLogged  += (sender, e) => MainController.LogString(e.Message, e.Logtype);
        }
Ejemplo n.º 3
0
        public void ShowRadishUtility()
        {
            if (MainController.Get().ActiveMod == null)
            {
                MessageBox.Show(@"Please create a new mod project."
                                , "Missing Mod Project"
                                , System.Windows.Forms.MessageBoxButtons.OK
                                , System.Windows.Forms.MessageBoxIcon.Information);
                return;
            }
            var filedir   = new DirectoryInfo(MainController.Get().ActiveMod.FileDirectory);
            var radishdir = filedir.GetFiles("*.bat", SearchOption.AllDirectories)?.FirstOrDefault(_ => _.Name == "_settings_.bat")?.Directory;

            if (radishdir == null)
            {
                MainController.LogString("ERROR! No radish mod directory found.\r\n", WolvenKit.Common.Services.Logtype.Error);
                return;
            }

            if (RadishUtility == null || RadishUtility.IsDisposed)
            {
                RadishUtility = new frmRadish();
                RadishUtility.Show(dockPanel, DockState.Document);
            }

            RadishUtility.Activate();
        }
Ejemplo n.º 4
0
        public void ImportBytes(CVariable editvar)
        {
            var dlg = new OpenFileDialog()
            {
                InitialDirectory = MainController.Get().Configuration.InitialExportDirectory
            };

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                MainController.Get().Configuration.InitialExportDirectory = Path.GetDirectoryName(dlg.FileName);

                using (var fs = new FileStream(dlg.FileName, FileMode.Open, FileAccess.Read))
                {
                    using (var reader = new BinaryReader(fs))
                    {
                        var bytes = ImportExportUtility.GetImportBytes(reader);
                        editvar.SetValue(bytes);

                        MainController.LogString(
                            $"{((CVariable) editvar).GetFullDependencyStringName()} succesfully imported from {dlg.FileName}",
                            Logtype.Success);
                    }
                }
            }
        }
Ejemplo n.º 5
0
        public frmModExplorer()
        {
            // initialize Viewmodel
            vm = MockKernel.Get().GetModExplorerModel();
            vm.PropertyChanged += ViewModel_PropertyChanged;
            //vm.UpdateMonitoringRequest += (sender, e) => this.ViewModel_UpdateMonitoringRequest(e);

            InitializeComponent();
            ApplyCustomTheme();

            // Init ObjectListView
            this.treeListView.CanExpandGetter = delegate(object x) {
                return((x is DirectoryInfo) && vm.IsTreeview && (x as DirectoryInfo).HasFilesOrFolders());
            };
            this.treeListView.ChildrenGetter = delegate(object x) {
                DirectoryInfo dir = (DirectoryInfo)x;
                return(dir.Exists ? new ArrayList(dir.GetFileSystemInfos()
                                                  .Where(_ => _.Extension != ".bat")
                                                  .ToArray()) : new ArrayList());
            };
            treeListView.SmallImageList    = new ImageList();
            this.olvColumnName.ImageGetter = delegate(object row) {
                string extension = this.GetFileExtension(row);
                if (!this.treeListView.SmallImageList.Images.ContainsKey(extension))
                {
                    try
                    {
                        Image smallImage = GetSmallIconForFileType(extension);
                        this.treeListView.SmallImageList.Images.Add(extension, smallImage);
                    }
                    catch (Exception e)
                    {
                        MainController.LogString("e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3", Logtype.Error);
                        this.Close();
                    }
                }
                return(extension);
            };
            treeListView.RevealAfterExpand = false;

            // Update the TreeView
            vm.RepopulateTreeView();
            treeListView.ExpandAll();
        }
Ejemplo n.º 6
0
        public void ExportBytes(IByteSource editvar)
        {
            var dlg   = new SaveFileDialog();
            var bytes = editvar.GetBytes();

            dlg.Filter           = string.Join("|", ImportExportUtility.GetPossibleExtensions(bytes, (CVariable)editvar));
            dlg.InitialDirectory = MainController.Get().Configuration.InitialExportDirectory;

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                MainController.Get().Configuration.InitialExportDirectory = Path.GetDirectoryName(dlg.FileName);

                using (var fs = new FileStream(dlg.FileName, FileMode.Create, FileAccess.Write))
                    using (var writer = new BinaryWriter(fs))
                    {
                        bytes = ImportExportUtility.GetExportBytes(bytes, Path.GetExtension(dlg.FileName), (CVariable)editvar);
                        writer.Write(bytes);

                        MainController.LogString(
                            $"{((CVariable) editvar).GetFullDependencyStringName()} succesfully exported to {dlg.FileName}",
                            Logtype.Success);
                    }
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="openrenderer"></param>
        public void PostLoadFile(string filename = "", bool openrenderer = false)
        {
            #region SetupFile
            // Backgroundwork Start
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();

            switch (Path.GetExtension(filename))
            {
            case ".w2scene":
            case ".w2quest":
            case ".w2phase":
            {
                //this.flowDiagram = new frmChunkFlowDiagram();
                //this.flowDiagram.OnOutput += MainController.LogString;
                //this.flowDiagram.File = this.File;
                //this.flowDiagram.DockAreas = DockAreas.Document;
                //this.flowDiagram.OnSelectChunk += this.frmCR2WDocument_OnSelectChunk;
                //this.flowDiagram.Show(this.FormPanel, DockState.Document);
                break;
            }

            case ".journal":
            {
                this.JournalEditor = new frmJournalEditor
                {
                    File      = this.File,
                    DockAreas = DockAreas.Document
                };
                this.JournalEditor.Show(this.FormPanel, DockState.Document);
                break;
            }

            case ".xbm":
            {
                this.ImageViewer = new frmImagePreview
                {
                    DockAreas = DockAreas.Document
                };
                this.ImageViewer.Show(this.FormPanel, DockState.Document);
                CR2WExportWrapper imagechunk = this.File?.Chunks?.FirstOrDefault(_ => _.data.REDType.Contains("CBitmapTexture"));
                this.ImageViewer.SetImage(imagechunk);
                break;
            }

            case ".redswf":
            {
                CR2WExportWrapper imagechunk = this.File?.Chunks?.FirstOrDefault(_ => _.data is CBitmapTexture);
                if (imagechunk != null)
                {
                    this.ImageViewer = new frmImagePreview
                    {
                        DockAreas = DockAreas.Document
                    };
                    this.ImageViewer.Show(this.FormPanel, DockState.Document);
                    this.ImageViewer.SetImage(imagechunk);
                }
                break;
            }

            case ".w2mesh":
            {
                if (openrenderer)
                {
                    try
                    {
                        // add all dependencies

                        MockKernel.Get().Window.PauseMonitoring();
                        WccHelper.AddAllImports(filename, true, false);
                        MockKernel.Get().Window.ResumeMonitoring();

                        this.RenderViewer = new Render.frmRender
                        {
                            LoadDocument = LoadDocumentAndGetFile,
                            MeshFile     = this.File,
                            DockAreas    = DockAreas.Document,
                            renderHelper = new Render.RenderHelper(MainController.Get().ActiveMod, MainController.Get().Logger)
                        };
                        this.RenderViewer.Show(this.FormPanel, DockState.Document);
                    }
                    catch (Exception ex)
                    {
                        MainController.LogString(ex.ToString(), Logtype.Error);
                    }
                }
                break;
            }

            default:
            {
                break;
            }
            }


            var output = new StringBuilder();

            if (this.File.UnknownTypes.Any())
            {
                //ShowConsole();
                //ShowOutput();

                output.Append(this.FileName + ": contains " + this.File.UnknownTypes.Count + " unknown type(s):\n");
                foreach (var unk in this.File.UnknownTypes)
                {
                    output.Append("\"" + unk + "\", \n");
                }

                output.Append("-------\n\n");
            }

            var hasUnknownBytes = false;

            foreach (var t in this.File.Chunks.Where(t => t.unknownBytes?.Bytes != null && t.unknownBytes.Bytes.Length > 0))
            {
                output.Append(t.REDName + " contains " + t.unknownBytes.Bytes.Length + " unknown bytes. \n");
                hasUnknownBytes = true;
            }

            if (hasUnknownBytes)
            {
                output.Append("-------\n\n");
            }

            //output.Append($"CR2WFile {filename} loaded in: {stopwatch.Elapsed}\n\n");
            stopwatch.Stop();

            MainController.LogString(output.ToString(), Logtype.Important);
            #endregion

            CR2WFile LoadDocumentAndGetFile(string path)
            {
                throw new NotImplementedException();
                //foreach (var t in MockKernel.Get().GetMainViewModel().OpenDocuments.Where(_ => _.File is CR2WFile).Where(t => t.FileName == path))
                //    return t.File as CR2WFile;

                ////var activedoc = vm.OpenDocuments.FirstOrDefault(d => d.IsActivated);
                //var doc2 = LoadDocument(path) as frmCR2WDocument;
                ////activedoc.Activate();
                //return doc2?.File;
            }
        }