void PackagingUpdate() { //check ended if (packageBuildInstance != null && packageBuildInstance.State != ProductBuildInstance.StateEnum.Building) { var instance2 = packageBuildInstance; packageBuildInstance = null; if (instance2.State == ProductBuildInstance.StateEnum.Error) { EditorMessageBox.ShowWarning(instance2.Error); } } //update controls var building = packageBuildInstance != null && packageBuildInstance.State == ProductBuildInstance.StateEnum.Building; kryptonButtonPackageCreate.Enabled = CanPackageProject(); kryptonButtonPackageCreateAndRun.Enabled = kryptonButtonPackageCreate.Enabled && GetSelectedBuildConfiguration() != null && GetSelectedBuildConfiguration().SupportsBuildAndRun; kryptonTextBoxPackageDestinationFolder.Enabled = !building; kryptonButtonPackageBrowse.Enabled = !building; contentBrowserPackage.Enabled = !building; if (packageBuildInstance != null) { progressBarBuild.Value = (int)(packageBuildInstance.Progress * 100); } progressBarBuild.Visible = building; kryptonButtonBuildCancel.Visible = building; }
private void kryptonButtonDelete_Click(object sender, EventArgs e) { if (selectedPackage == null) { return; } if (!File.Exists(selectedPackage.FullFilePath)) { return; } var template = Translate("Are you sure you want to delete \'{0}\'?"); var text = string.Format(template, selectedPackage.FullFilePath); if (EditorMessageBox.ShowQuestion(text, EMessageBoxButtons.YesNo) == EDialogResult.No) { return; } try { File.Delete(selectedPackage.FullFilePath); } catch (Exception e2) { EditorMessageBox.ShowWarning(e2.Message); return; } needUpdateList = true; }
public static bool IsInstalled(string packageName) { var fileName = Path.Combine(PackagesFolder, "PackagesState.txt"); if (File.Exists(fileName)) { var block = TextBlockUtility.LoadFromRealFile(fileName, out var error); if (!string.IsNullOrEmpty(error)) { EditorMessageBox.ShowWarning(error); return(false); } foreach (var child in block.Children) { if (child.Name == "Package") { if (child.GetAttribute("Name") == packageName) { return(true); } } } } return(false); }
private void ButtonExport_Click(ProcedureUI.Button sender) { var meshes = GetObjects <Component_Mesh>(); if (meshes.Length != 1) { return; } var mesh = meshes[0]; #if !DEPLOY var dialog = new SaveFileDialog(); //dialog.InitialDirectory = Path.GetDirectoryName( RealFileName ); //dialog.FileName = RealFileName; dialog.Filter = "FBX files (*.fbx)|*.fbx"; dialog.RestoreDirectory = true; if (dialog.ShowDialog() != DialogResult.OK) { return; } var fileName = dialog.FileName; if (!mesh.ExportToFBX(fileName, out var error)) { EditorMessageBox.ShowWarning(error); } #endif }
public static bool ChangeInstalledState(string packageName, bool installed) { var fileName = Path.Combine(PackagesFolder, "PackagesState.txt"); //load TextBlock block; if (File.Exists(fileName)) { block = TextBlockUtility.LoadFromRealFile(fileName, out var error); if (!string.IsNullOrEmpty(error)) { EditorMessageBox.ShowWarning(error); return(false); } } else { block = new TextBlock(); } //update { foreach (var child in block.Children) { if (child.Name == "Package") { if (child.GetAttribute("Name") == packageName) { block.DeleteChild(child); break; } } } if (installed) { var child = block.AddChild("Package"); child.SetAttribute("Name", packageName); } } //save { if (!Directory.Exists(PackagesFolder)) { Directory.CreateDirectory(PackagesFolder); } TextBlockUtility.SaveToRealFile(block, fileName, out var error); if (!string.IsNullOrEmpty(error)) { EditorMessageBox.ShowWarning(error); return(false); } } return(true); }
void PackageCreate(bool run) { string folder = kryptonTextBoxPackageDestinationFolder.Text.Trim(); if (string.IsNullOrEmpty(folder)) { return; } //clear destination folder if (Directory.Exists(folder) && !IOUtility.IsDirectoryEmpty(folder)) { var text = string.Format(Translate("Destination folder \'{0}\' is not empty. Clear folder and continue?"), folder); if (EditorMessageBox.ShowQuestion(text, MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } //delete try { DirectoryInfo info = new DirectoryInfo(folder); foreach (FileInfo file in info.GetFiles()) { file.Delete(); } foreach (DirectoryInfo directory in info.GetDirectories()) { directory.Delete(true); } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); return; } } //start try { if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } packageBuildInstance = ProductBuildInstance.Start(GetSelectedBuildConfiguration(), folder, run); } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); return; } PackagingUpdate(); }
void CreateScene(ContentBrowser.Item item) { try { var prefix = VirtualDirectory.Exists("Scenes") ? @"Scenes\" : ""; string fileName = null; for (int n = 1; ; n++) { string f = prefix + string.Format(@"New{0}.scene", n > 1 ? n.ToString() : ""); if (!VirtualFile.Exists(f)) { fileName = f; break; } } if (!string.IsNullOrEmpty(fileName)) { var realFileName = VirtualPathUtility.GetRealPathByVirtual(fileName); var template = (Component_Scene.NewObjectSettingsScene.TemplateClass)item.Tag; string name = template.Name + ".scene"; var sourceFile = VirtualPathUtility.GetRealPathByVirtual(@"Base\Tools\NewResourceTemplates\" + name); //copy scene file var text = File.ReadAllText(sourceFile); var directoryName = Path.GetDirectoryName(realFileName); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } File.WriteAllText(realFileName, text); //copy additional folder if exist var sourceFolderPath = sourceFile + "_Files"; if (Directory.Exists(sourceFolderPath)) { var destFolderPath = realFileName + "_Files"; IOUtility.CopyDirectory(sourceFolderPath, destFolderPath); } EditorAPI.SelectFilesOrDirectoriesInMainResourcesWindow(new string[] { realFileName }); EditorAPI.OpenFileAsDocument(realFileName, true, true); } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); //Log.Warning( e.Message ); return; } }
private void kryptonButtonDelete_Click(object sender, EventArgs e) { if (selectedPackage == null) { return; } bool installed = PackageManager.IsInstalled(selectedPackage.Identifier); //Uninstall & Delete var skipDeleteMessage = false; if (installed) { if (!TryUninstall()) { return; } skipDeleteMessage = true; } //check can delete if (!File.Exists(selectedPackage.FullFilePath)) { return; } //ask to delete if (!skipDeleteMessage) { var template = Translate("Are you sure you want to delete \'{0}\'?"); var text = string.Format(template, selectedPackage.FullFilePath); if (EditorMessageBox.ShowQuestion(text, EMessageBoxButtons.YesNo) == EDialogResult.No) { return; } } //delete try { File.Delete(selectedPackage.FullFilePath); } catch (Exception e2) { EditorMessageBox.ShowWarning(e2.Message); return; } needUpdateList = true; }
public static void ExportComponentToFile(Component component) { #if !DEPLOY var componentFolder = ""; { var fileName = ComponentUtility.GetOwnedFileNameOfComponent(component); if (!string.IsNullOrEmpty(fileName)) { componentFolder = Path.GetDirectoryName(VirtualPathUtility.GetRealPathByVirtual(fileName)); } } var name = component.Name; if (string.IsNullOrEmpty(name)) { name = "Component"; } var extension = "component"; { var attribs = component.GetType().GetCustomAttributes <ResourceFileExtensionAttribute>().ToArray(); if (attribs.Length != 0) { extension = attribs[0].Extension; } } var initialFileName = GetFixedName(name + "." + extension); var dialog = new SaveFileDialog(); dialog.InitialDirectory = componentFolder; dialog.FileName = initialFileName; dialog.Filter = "All files (*.*)|*.*"; dialog.RestoreDirectory = true; if (dialog.ShowDialog() != DialogResult.OK) { return; } var saveAsFileName = dialog.FileName; if (!ComponentUtility.SaveComponentToFile(component, saveAsFileName, null, out var error)) { EditorMessageBox.ShowWarning(error); } #endif }
public static void DeleteFilesAsStartup() { try { var txtFileName = Path.Combine(PackagesFolder, "FilesToDeleteAtStartup.txt"); if (File.Exists(txtFileName)) { var fileNames = File.ReadAllLines(txtFileName); foreach (var file in fileNames) { var fullName = Path.Combine(VirtualFileSystem.Directories.Project, file); var startTime = DateTime.Now; Exception e = null; do { try { if (File.Exists(fullName)) { File.Delete(fullName); } e = null; break; } catch (Exception e2) { e = e2; } } while((DateTime.Now - startTime).TotalSeconds < 30); if (e != null) { throw e; } } File.Delete(txtFileName); } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); } }
private void kryptonButtonNewCreate_Click(object sender, EventArgs e) { //!!!! string folder = kryptonTextBoxNewFolder.Text.Trim(); if (string.IsNullOrEmpty(folder)) { return; } try { while (Directory.Exists(folder) && !IOUtility.IsDirectoryEmpty(folder)) { var text = string.Format(Translate("Destination folder \'{0}\' is not empty. Clear folder and continue?"), folder); var result = EditorMessageBox.ShowQuestion(text, MessageBoxButtons.OKCancel); if (result == DialogResult.Cancel) { return; } IOUtility.ClearDirectory(folder); } if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } creationInProgress = true; progressBarNew.Visible = true; kryptonButtonNewCancel.Visible = true; creationDirectory = folder; var tag = objectsBrowserNew.SelectedItems[0].Tag as string; creationTask = new Task(CreationFunction, tag); creationTask.Start(); } catch (Exception ex) { EditorMessageBox.ShowWarning(ex.Message); return; } }
private void kryptonButtonLogin_Click(object sender, EventArgs e) { var email = kryptonTextBoxLoginEmail.Text.Trim().ToLower(); var password = kryptonTextBoxLoginPassword.Text; if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) { return; } if (!IsValidEmail(email)) { EditorMessageBox.ShowWarning("Invalid email."); return; } LoginUtility.SetCurrentLicense(kryptonTextBoxLoginEmail.Text, kryptonTextBoxLoginPassword.Text); }
void CreateUIControl() { try { var prefix = VirtualDirectory.Exists("UI") ? @"UI\" : ""; string fileName = null; for (int n = 1; ; n++) { string f = prefix + string.Format(@"New{0}.ui", n > 1 ? n.ToString() : ""); if (!VirtualFile.Exists(f)) { fileName = f; break; } } if (!string.IsNullOrEmpty(fileName)) { var realFileName = VirtualPathUtility.GetRealPathByVirtual(fileName); var sourceFile = VirtualPathUtility.GetRealPathByVirtual(@"Base\Tools\NewResourceTemplates\UIControl.ui"); var text = VirtualFile.ReadAllText(sourceFile); var directoryName = Path.GetDirectoryName(realFileName); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } File.WriteAllText(realFileName, text); EditorAPI.SelectFilesOrDirectoriesInMainResourcesWindow(new string[] { realFileName }); EditorAPI.OpenFileAsDocument(realFileName, true, true); } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); //Log.Warning( e.Message ); return; } }
private void buttonDestinationFolderBrowse_Click(object sender, EventArgs e) { #if !DEPLOY again :; string destRealFolder = VirtualPathUtility.GetRealPathByVirtual(textBoxDestinationFolder.Text); var dialog = new CommonOpenFileDialog(); dialog.InitialDirectory = destRealFolder; dialog.IsFolderPicker = true; if (dialog.ShowDialog() == CommonFileDialogResult.Ok) { destRealFolder = dialog.FileName; if (!VirtualPathUtility.GetVirtualPathByReal(destRealFolder, out var virtualPath)) { EditorMessageBox.ShowWarning(Translate("Destination folder must be inside Assets folder.")); goto again; } textBoxDestinationFolder.Text = virtualPath; } #endif }
protected override bool OnMouseDown(Viewport viewport, EMouseButtons button) { if (button == EMouseButtons.Left) { if (GetToolPosition(viewport, out var terrain, out toolModifyStartPosition)) { var layer = DocumentWindow.TerrainPaintLayersGetSelected(); if (IsCurrentPaintTool() && layer != null) { if (layer.Mask.Value != null && layer.Mask.Value.Length != 0) { if (layer.Mask.Value.Length != terrain.GetPaintMaskSizeInteger() * terrain.GetPaintMaskSizeInteger()) { EditorMessageBox.ShowWarning(EditorLocalization.Translate("Terrain", "Unable to paint to selected layer because Mask size of the layer and MaskSize of the terrain are not equal.")); return(true); } } } if (mode == ModeEnum.PaintFlatten) { if (layer != null) { Vector2I maskIndex = terrain.GetMaskIndexByPosition(toolModifyStartPosition.ToVector2()); toolModifyStartMaskValue = layer.GetMaskValue(maskIndex); } } toolModify = true; return(true); } } return(false); }
private void ButtonImport_Click(ProcedureUI.Button sender) { var sky = GetFirstObject <Component_Skybox>(); if (sky == null) { return; } var scene = sky.FindParent <Component_Scene>(); if (scene == null) { return; } var link = editLink.Text; var notification = ScreenNotifications.ShowSticky("Importing..."); try { string destVirtualFileName; { string name = sky.GetPathFromRoot(); foreach (char c in new string( Path.GetInvalidFileNameChars()) + new string( Path.GetInvalidPathChars())) { name = name.Replace(c.ToString(), "_"); } name = name.Replace(" ", "_"); destVirtualFileName = Path.Combine(ComponentUtility.GetOwnedFileNameOfComponent(scene) + "_Files", name); destVirtualFileName += Path.GetExtension(link); } var destRealFileName = VirtualPathUtility.GetRealPathByVirtual(destVirtualFileName); if (File.Exists(destRealFileName)) { if (EditorMessageBox.ShowQuestion($"Overwrite \'{destRealFileName}\'?", EMessageBoxButtons.OKCancel) == EDialogResult.Cancel) { return; } } Directory.CreateDirectory(Path.GetDirectoryName(destRealFileName)); if (File.Exists(link)) { File.Copy(link, destRealFileName, true); } else { //if( Uri.IsWellFormedUriString( link, UriKind.Absolute ) ) //{ using (var client = new WebClient()) client.DownloadFile(link, destRealFileName); //} } var oldValue = sky.Cubemap; sky.Cubemap = ReferenceUtility.MakeReference(destVirtualFileName); //undo var property = (Metadata.Property)sky.MetadataGetMemberBySignature("property:Cubemap"); var undoItem = new UndoActionPropertiesChange.Item(sky, property, oldValue); var undoAction = new UndoActionPropertiesChange(undoItem); Provider.DocumentWindow.Document.CommitUndoAction(undoAction); } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); } finally { notification.Close(); } }
void RenderByEngineRender() { var renderToFile = RenderToFile; var scene = renderToFile.ParentRoot as Component_Scene; //get camera var camera = renderToFile.Camera.Value; if (camera == null) { camera = scene.Mode.Value == Component_Scene.ModeEnum._2D ? scene.CameraEditor2D : scene.CameraEditor; } if (camera == null) { EditorMessageBox.ShowWarning("Camera is not specified."); return; } var destRealFileName = renderToFile.OutputFileName.Value.Trim(); if (!Path.IsPathRooted(destRealFileName) && !string.IsNullOrEmpty(destRealFileName)) { destRealFileName = VirtualPathUtility.GetRealPathByVirtual(destRealFileName); } if (string.IsNullOrEmpty(destRealFileName)) { var dialog = new SaveFileDialog(); //dialog.InitialDirectory = Path.GetDirectoryName( RealFileName ); if (renderToFile.Mode.Value == Component_RenderToFile.ModeEnum.Material) { dialog.FileName = "Output.material"; dialog.Filter = "Material files (*.material)|*.material"; } else { dialog.FileName = "Output.png"; dialog.Filter = "PNG files (*.png)|*.png"; } dialog.RestoreDirectory = true; if (dialog.ShowDialog() != DialogResult.OK) { return; } destRealFileName = dialog.FileName; } else { //!!!!material mode //file already exists if (File.Exists(destRealFileName)) { var text = $"The file with name \'{destRealFileName}\' is already exists. Overwrite?"; if (EditorMessageBox.ShowQuestion(text, EMessageBoxButtons.OKCancel) == EDialogResult.Cancel) { return; } } } var item = ScreenNotifications.ShowSticky("Processing..."); try { if (renderToFile.Mode.Value == Component_RenderToFile.ModeEnum.Material) { RenderMaterial(camera, destRealFileName); } else { RenderScreenshot(camera, destRealFileName); } } finally { item.Close(); } }
void RenderScreenshot(Component_Camera camera, string destRealFileName) { var renderToFile = RenderToFile; var scene = renderToFile.ParentRoot as Component_Scene; Component_Image texture = null; Component_Image textureRead = null; try { //create var resolution = renderToFile.Resolution.Value; //!!!!impl var hdr = false; //HDR.Value; PixelFormat format = hdr ? PixelFormat.Float16RGBA : PixelFormat.A8R8G8B8; //PixelFormat format = hdr ? PixelFormat.Float32RGBA : PixelFormat.A8R8G8B8; texture = ComponentUtility.CreateComponent <Component_Image>(null, true, false); texture.CreateType = Component_Image.TypeEnum._2D; texture.CreateSize = resolution; texture.CreateMipmaps = false; texture.CreateFormat = format; texture.CreateUsage = Component_Image.Usages.RenderTarget; texture.CreateFSAA = 0; texture.Enabled = true; var renderTexture = texture.Result.GetRenderTarget(0, 0); var viewport = renderTexture.AddViewport(true, true); viewport.AttachedScene = scene; textureRead = ComponentUtility.CreateComponent <Component_Image>(null, true, false); textureRead.CreateType = Component_Image.TypeEnum._2D; textureRead.CreateSize = resolution; textureRead.CreateMipmaps = false; textureRead.CreateFormat = format; textureRead.CreateUsage = Component_Image.Usages.ReadBack | Component_Image.Usages.BlitDestination; textureRead.CreateFSAA = 0; textureRead.Enabled = true; //!!!! textureRead.Result.PrepareNativeObject(); //render //var image2D = new ImageUtility.Image2D( PixelFormat.Float32RGB, new Vector2I( size * 4, size * 3 ) ); //var position = Transform.Value.Position; //for( int face = 0; face < 6; face++ ) //{ //Vector3 dir = Vector3.Zero; //Vector3 up = Vector3.Zero; ////flipped //switch( face ) //{ //case 0: dir = -Vector3.YAxis; up = Vector3.ZAxis; break; //case 1: dir = Vector3.YAxis; up = Vector3.ZAxis; break; //case 2: dir = Vector3.ZAxis; up = -Vector3.XAxis; break; //case 3: dir = -Vector3.ZAxis; up = Vector3.XAxis; break; //case 4: dir = Vector3.XAxis; up = Vector3.ZAxis; break; //case 5: dir = -Vector3.XAxis; up = Vector3.ZAxis; break; //} try { scene.GetDisplayDevelopmentDataInThisApplicationOverride += Scene_GetDisplayDevelopmentDataInThisApplicationOverride; var cameraSettings = new Viewport.CameraSettingsClass(viewport, camera); //var cameraSettings = new Viewport.CameraSettingsClass( viewport, 1, 90, NearClipPlane.Value, FarClipPlane.Value, position, dir, up, ProjectionType.Perspective, 1, 1, 1 ); viewport.Update(true, cameraSettings); //clear temp data viewport.RenderingContext.MultiRenderTarget_DestroyAll(); viewport.RenderingContext.DynamicTexture_DestroyAll(); } finally { scene.GetDisplayDevelopmentDataInThisApplicationOverride -= Scene_GetDisplayDevelopmentDataInThisApplicationOverride; } texture.Result.GetRealObject(true).BlitTo(viewport.RenderingContext.CurrentViewNumber, textureRead.Result.GetRealObject(true), 0, 0); //!!!!pitch //get data var totalBytes = PixelFormatUtility.GetNumElemBytes(format) * resolution.X * resolution.Y; var data = new byte[totalBytes]; unsafe { fixed(byte *pBytes = data) { var demandedFrame = textureRead.Result.GetRealObject(true).Read((IntPtr)pBytes, 0); while (RenderingSystem.CallBgfxFrame() < demandedFrame) { } } } var image = new ImageUtility.Image2D(format, resolution, data); //reset alpha channel for (int y = 0; y < image.Size.Y; y++) { for (int x = 0; x < image.Size.X; x++) { var pixel = image.GetPixel(new Vector2I(x, y)); pixel.W = 1.0f; image.SetPixel(new Vector2I(x, y), pixel); } } //image.Data //image2D.Blit( index * size, faceImage ); //Vector2I index = Vector2I.Zero; //switch( face ) //{ //case 0: index = new Vector2I( 2, 1 ); break; //case 1: index = new Vector2I( 0, 1 ); break; //case 2: index = new Vector2I( 1, 0 ); break; //case 3: index = new Vector2I( 1, 2 ); break; //case 4: index = new Vector2I( 1, 1 ); break; //case 5: index = new Vector2I( 3, 1 ); break; //} //var faceImage = new ImageUtility.Image2D( format, new Vector2I( size, size ), data ); //image2D.Blit( index * size, faceImage ); //} if (!Directory.Exists(Path.GetDirectoryName(destRealFileName))) { Directory.CreateDirectory(Path.GetDirectoryName(destRealFileName)); } if (!ImageUtility.Save(destRealFileName, image.Data, image.Size, 1, image.Format, 1, 0, out var error)) { throw new Exception(error); } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); return; } finally { texture?.Dispose(); textureRead?.Dispose(); } ScreenNotifications.Show("Rendering completed successfully."); }
public virtual bool Creation(NewObjectCell.ObjectCreationContext context) { if (Window.IsFileCreation() && CreateCSharpClass) { context.disableFileCreation = true; GetCreateCSharpClassInfo(out var csharpRealFileName, out var csharpClassName, out var csharpClassNameWithoutNamespace); try { //main file { string className = csharpClassName; //string className = CreateCSharpClass ? csharpClassName : Window.SelectedType.Name; var text = ".component " + className + "\r\n{\r\n}"; File.WriteAllText(context.fileCreationRealFileName, text); } //cs file //if( CreateCSharpClass ) { string code = @"using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using NeoAxis; namespace Project { public class {Name} : {Base} { } }"; code = code.Replace("{Name}", csharpClassNameWithoutNamespace); code = code.Replace("{Base}", Window.SelectedType.Name); File.WriteAllText(csharpRealFileName, code); } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); //Log.Warning( e.Message ); return(false); } //if( CreateCSharpClass ) { //add to Project.csproj { var toAdd = new List <string>(); var fileName = Path.Combine("Assets", VirtualPathUtility.GetVirtualPathByReal(csharpRealFileName)); toAdd.Add(fileName); if (CSharpProjectFileUtility.UpdateProjectFile(toAdd, null, out var error)) { if (toAdd.Count > 1) { Log.Info(EditorLocalization.Translate("General", "Items have been added to the Project.csproj.")); } else { Log.Info(EditorLocalization.Translate("General", "The item has been added to the Project.csproj.")); } } else { EditorMessageBox.ShowWarning(error); //Log.Warning( error ); return(false); } } Window.DisableUnableToCreateReason = true; //restart application var text = EditorLocalization.Translate("General", "To apply changes need restart the editor. Restart?\r\n\r\nThe editor must be restarted to compile and enable a new created C# class."); if (EditorMessageBox.ShowQuestion(text, EMessageBoxButtons.YesNo) == EDialogResult.Yes) { EditorAPI.BeginRestartApplication(); } Window.DisableUnableToCreateReason = false; } } return(true); }
private void kryptonButtonInstall_Click(object sender, EventArgs e) { var info = PackageManager.ReadPackageArchiveInfo(selectedPackage.FullFilePath, out var error); if (info == null) { return; } var filesToCopy = new List <string>(); foreach (var file in info.Files) { var fullName = Path.Combine(VirtualFileSystem.Directories.Project, file); filesToCopy.Add(fullName); } var text = string.Format(Translate("Install {0}?\n\n{1} files will created."), selectedPackage.GetDisplayName(), filesToCopy.Count); //var text = string.Format( Translate( "Install {0}?\r\n\r\n{1} files will created." ), selectedPackage.Name, filesToCopy.Count ); //var text = $"Install {selectedPackage.Name}?\r\n\r\n{filesToCopy.Count} files will created."; if (EditorMessageBox.ShowQuestion(text, EMessageBoxButtons.YesNo) != EDialogResult.Yes) { return; } var notification = ScreenNotifications.ShowSticky("Installing the package..."); try { using (var archive = ZipFile.OpenRead(selectedPackage.FullFilePath)) { foreach (var entry in archive.Entries) { var fileName = entry.FullName; bool directory = fileName[fileName.Length - 1] == '/'; if (fileName != "Package.info" && !directory) { var fullPath = Path.Combine(VirtualFileSystem.Directories.Project, fileName); var directoryName = Path.GetDirectoryName(fullPath); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } entry.ExtractToFile(fullPath, true); } } } PackageManager.ChangeInstalledState(selectedPackage.Name, true); } catch (Exception e2) { EditorMessageBox.ShowWarning(e2.Message); return; } finally { notification.Close(); } if (!string.IsNullOrEmpty(info.AddCSharpFilesToProject)) { var toAdd = new ESet <string>(); var path = Path.Combine(VirtualFileSystem.Directories.Assets, info.AddCSharpFilesToProject); if (Directory.Exists(path)) { var fullPaths = CSharpProjectFileUtility.GetProjectFileCSFiles(false, true); var files = Directory.GetFiles(path, "*.cs", SearchOption.AllDirectories); foreach (var file in files) { if (!fullPaths.Contains(file)) { toAdd.AddWithCheckAlreadyContained(file); } } } // if( !fileItem.IsDirectory && Path.GetExtension( fileItem.FullPath ).ToLower() == ".cs" ) // { // bool added = CSharpProjectFileUtility.GetProjectFileCSFiles( false, true ).Contains( fileItem.FullPath ); // if( !added ) // toAdd.Add( fileItem.FullPath ); // } if (toAdd.Count != 0) { if (CSharpProjectFileUtility.UpdateProjectFile(toAdd, null, out var error2)) { if (toAdd.Count > 1) { Log.Info(EditorLocalization.Translate("General", "Items have been added to the Project.csproj.")); } else { Log.Info(EditorLocalization.Translate("General", "The item has been added to the Project.csproj.")); } } else { Log.Warning(error2); } } } needUpdateList = true; if (info.MustRestart) { ShowRestartLabel(); } if (!string.IsNullOrEmpty(info.OpenAfterInstall)) { var realFileName = VirtualPathUtility.GetRealPathByVirtual(info.OpenAfterInstall); if (info.MustRestart) { EditorSettingsSerialization.OpenFileAtStartup = realFileName; } else { EditorAPI.SelectFilesOrDirectoriesInMainResourcesWindow(new string[] { realFileName }, Directory.Exists(realFileName)); EditorAPI.OpenFileAsDocument(realFileName, true, true); } } ScreenNotifications.Show(EditorLocalization.Translate("General", "The package has been successfully installed.")); //restart application if (info.MustRestart) { var text2 = EditorLocalization.Translate("General", "To apply changes need restart the editor. Restart?"); if (EditorMessageBox.ShowQuestion(text2, EMessageBoxButtons.YesNo) == EDialogResult.Yes) { EditorAPI.BeginRestartApplication(); } } }
private void kryptonButtonUninstall_Click(object sender, EventArgs e) { var filesToDelete = new List <string>(); bool mustRestart = false; //get list of files to delete if (File.Exists(selectedPackage.FullFilePath)) { //get list of files from the package archive var info = PackageManager.ReadPackageArchiveInfo(selectedPackage.FullFilePath, out var error); if (info == null) { ScreenNotifications.Show("Could not read the package info.", true); Log.Warning(error); return; } foreach (var file in info.Files) { var fullName = Path.Combine(VirtualFileSystem.Directories.Project, file); if (File.Exists(fullName)) { filesToDelete.Add(file); } } mustRestart = info.MustRestart; } else { //get list of files from selectedPackage.Files in case when the archive file is not exists var str = selectedPackage.Files.Trim(new char[] { ' ', '\r', '\n' }); var files = str.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); foreach (var file in files) { var fullName = Path.Combine(VirtualFileSystem.Directories.Project, file); if (File.Exists(fullName)) { filesToDelete.Add(file); } } //!!!!mustRestart mustRestart = true; } if (filesToDelete.Count == 0) { return; } var text = string.Format(Translate("Uninstall {0}?\n\n{1} files will deleted."), selectedPackage.GetDisplayName(), filesToDelete.Count); if (EditorMessageBox.ShowQuestion(text, EMessageBoxButtons.YesNo) != EDialogResult.Yes) { return; } var filesToDeletionAtStartup = new List <string>(); try { //remove cs files from Project.csproj try { var toRemove = new List <string>(); foreach (var file in filesToDelete) { var fullName = Path.Combine(VirtualFileSystem.Directories.Project, file); if (Path.GetExtension(fullName).ToLower() == ".cs") { toRemove.Add(VirtualPathUtility.NormalizePath(fullName)); } } if (toRemove.Count != 0) { CSharpProjectFileUtility.UpdateProjectFile(null, toRemove, out _); } } catch { } //delete files foreach (var file in filesToDelete) { var fullName = Path.Combine(VirtualFileSystem.Directories.Project, file); try { File.Delete(fullName); } catch (UnauthorizedAccessException) { filesToDeletionAtStartup.Add(file); } catch (IOException) { filesToDeletionAtStartup.Add(file); } } //delete empty folders { var allFolders = new ESet <string>(); foreach (var file in filesToDelete) { var f = Path.GetDirectoryName(file); while (!string.IsNullOrEmpty(f)) { allFolders.AddWithCheckAlreadyContained(f); f = Path.GetDirectoryName(f); } } var list = allFolders.ToArray(); CollectionUtility.MergeSort(list, delegate(string f1, string f2) { var levels1 = f1.Split(new char[] { '\\' }).Length; var levels2 = f2.Split(new char[] { '\\' }).Length; return(levels2 - levels1); }); foreach (var folder in list) { var fullName = Path.Combine(VirtualFileSystem.Directories.Project, folder); if (Directory.Exists(fullName) && IsDirectoryEmpty(fullName)) { Directory.Delete(fullName); } } } PackageManager.ChangeInstalledState(selectedPackage.Name, false); } catch (Exception e2) { EditorMessageBox.ShowWarning(e2.Message); return; } if (filesToDeletionAtStartup.Count != 0) { PackageManager.AddFilesToDeletionAtStartup(filesToDeletionAtStartup); } needUpdateList = true; if (mustRestart) { ShowRestartLabel(); } ScreenNotifications.Show(EditorLocalization.Translate("General", "The package has been successfully uninstalled.")); }
void CreationFunction(object parameter) { var tag = (string)parameter; creationProgressBarValue = 0; try { string sourcePath = VirtualFileSystem.Directories.Project; FileInfo[] allFiles = new DirectoryInfo(sourcePath).GetFiles("*.*", SearchOption.AllDirectories); long totalLength = 0; foreach (var fileInfo in allFiles) { totalLength += fileInfo.Length; } foreach (string dirPath in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories)) { if (Directory.Exists(dirPath)) { Directory.CreateDirectory(dirPath.Replace(sourcePath, creationDirectory)); } } long processedLength = 0; foreach (var fileInfo in allFiles) { if (File.Exists(fileInfo.FullName)) { File.Copy(fileInfo.FullName, fileInfo.FullName.Replace(sourcePath, creationDirectory), false); } processedLength += fileInfo.Length; creationProgressBarValue = (int)((double)processedLength / (double)totalLength * 100.0); if (creationProgressBarValue > 100) { creationProgressBarValue = 100; } if (!creationInProgress) { return; } } //if( tag == "Clean" ) //{ // var directory = Path.Combine( creationDirectory, @"Project\Data\_Dev" ); // EditorMessageBox.ShowInfo( directory ); //} //Public build if (tag == "PublicBuild" || tag == "PublicBuildEmpty") { //delete files from root of Assets { var dataDirectory = Path.Combine(creationDirectory, @"Assets"); var info = new DirectoryInfo(dataDirectory); foreach (var file in info.GetFiles()) { file.Delete(); } } //clear User settings var path = Path.Combine(creationDirectory, @"User settings"); if (Directory.Exists(path)) { IOUtility.ClearDirectory(path); } //delete _Dev { path = Path.Combine(creationDirectory, @"Assets\_Dev"); if (Directory.Exists(path)) { Directory.Delete(path, true); } } //delete Caches\Files\_Dev { path = Path.Combine(creationDirectory, @"Caches\Files\_Dev"); if (Directory.Exists(path)) { Directory.Delete(path, true); } } //delete Binaries\NeoAxis.Internal\Localization path = Path.Combine(creationDirectory, @"Binaries\NeoAxis.Internal\Localization"); if (Directory.Exists(path)) { Directory.Delete(path, true); } if (tag == "PublicBuildEmpty") { //delete _Tests path = Path.Combine(creationDirectory, @"Assets\_Tests"); if (Directory.Exists(path)) { Directory.Delete(path, true); } //delete Samples\Nature Demo path = Path.Combine(creationDirectory, @"Assets\Samples\Nature Demo"); if (Directory.Exists(path)) { Directory.Delete(path, true); } //delete Samples\Sci-fi Demo path = Path.Combine(creationDirectory, @"Assets\Samples\Sci-fi Demo"); if (Directory.Exists(path)) { Directory.Delete(path, true); } ////delete Samples //path = Path.Combine( creationDirectory, @"Assets\Samples" ); //if( Directory.Exists( path ) ) // Directory.Delete( path, true ); //delete Caches\Files\_Tests path = Path.Combine(creationDirectory, @"Caches\Files\_Tests"); if (Directory.Exists(path)) { Directory.Delete(path, true); } //delete Caches\Files\Samples\Sci-fi Demo path = Path.Combine(creationDirectory, @"Caches\Files\Samples\Sci-fi Demo"); if (Directory.Exists(path)) { Directory.Delete(path, true); } ////delete Caches\Files //path = Path.Combine( creationDirectory, @"Caches\Files" ); //if( Directory.Exists( path ) ) // Directory.Delete( path, true ); //fix EditorDockingDefault.config try { File.Copy( Path.Combine(sourcePath, @"Assets\Base\Tools\EditorDockingDefault_Empty.config"), Path.Combine(creationDirectory, @"Assets\Base\Tools\EditorDockingDefault.config"), true); } catch { } ////fix Project.csproj //try //{ // var fileName = Path.Combine( creationDirectory, "Project.csproj" ); // var newLines = new List<string>(); // foreach( var line in File.ReadAllLines( fileName ) ) // { // if( !line.Contains( @"Assets\Samples\" ) ) // newLines.Add( line ); // } // File.WriteAllLines( fileName, newLines ); //} //catch { } } //delete EditorDockingDefault_Empty.config try { File.Delete(Path.Combine(creationDirectory, @"Assets\Base\Tools\EditorDockingDefault_Empty.config")); } catch { } //delete NeoAxis.DeveloperBuild.config path = Path.Combine(creationDirectory, @"NeoAxis.DeveloperBuild.config"); if (File.Exists(path)) { File.Delete(path); } //delete obj folders foreach (string dirPath in Directory.GetDirectories(creationDirectory, "obj", SearchOption.AllDirectories)) { if (Directory.Exists(dirPath)) { Directory.Delete(dirPath, true); } } //delete .vs folders foreach (string dirPath in Directory.GetDirectories(creationDirectory, ".vs", SearchOption.AllDirectories)) { if (Directory.Exists(dirPath)) { Directory.Delete(dirPath, true); } } //rewrite ProjectSettings.component { var content = @".component NeoAxis.Component_ProjectSettings { Name = All .component NeoAxis.Component_ProjectSettings_PageBasic { Name = General } .component NeoAxis.Component_ProjectSettings_PageBasic { Name = Scene Editor } .component NeoAxis.Component_ProjectSettings_PageBasic { Name = UI Editor } .component NeoAxis.Component_ProjectSettings_PageBasic { Name = C# Editor } .component NeoAxis.Component_ProjectSettings_PageBasic { Name = Shader Editor } .component NeoAxis.Component_ProjectSettings_PageBasic { Name = Text Editor } .component NeoAxis.Component_ProjectSettings_PageBasic { Name = Ribbon and Toolbar } .component NeoAxis.Component_ProjectSettings_PageBasic { Name = Shortcuts } .component NeoAxis.Component_ProjectSettings_PageBasic { Name = Custom Splash Screen } }"; var fileName = Path.Combine(creationDirectory, @"Assets\Base\ProjectSettings.component"); File.WriteAllText(fileName, content); } //make zip archive { var fileName = tag == "PublicBuild" ? "Default project with Starter Content, Sci-fi Demo, Nature Demo, Test scenes.zip" : "Default project with Starter Content.zip"; //var fileName = tag == "PublicBuild" ? "Default project with sample content.zip" : "Empty project.zip"; var zipfileName = Path.Combine(creationDirectory, fileName); //can't write zip file to same folder. using temp file. var tempFileName = Path.GetTempPath() + Guid.NewGuid().ToString() + ".zip"; ZipFile.CreateFromDirectory(creationDirectory, tempFileName, CompressionLevel.Optimal, false); File.Copy(tempFileName, zipfileName); File.Delete(tempFileName); //ZipFile.CreateFromDirectory( creationDirectory, zipfileName, CompressionLevel.Optimal, false ); } } creationProgressBarValue = 100; //open folder try { Win32Utility.ShellExecuteEx(null, creationDirectory); //Process.Start( "explorer.exe", creationDirectory ); } catch { } ////run process //string executableFileName = Path.Combine( creationDirectory, "NeoAxis.Studio.exe" ); //var runMapProcess = Process.Start( executableFileName, "" ); //end creationInProgress = false; ScreenNotifications.Show(Translate("The project was created successfully.")); } catch (Exception ex) { EditorMessageBox.ShowWarning(ex.Message); } }
void CreationFunction(object parameter) { var tag = (string)parameter; creationProgressBarValue = 0; try { string sourcePath = VirtualFileSystem.Directories.Project; FileInfo[] allFiles = new DirectoryInfo(sourcePath).GetFiles("*.*", SearchOption.AllDirectories); long totalLength = 0; foreach (var fileInfo in allFiles) { totalLength += fileInfo.Length; } foreach (string dirPath in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories)) { if (Directory.Exists(dirPath)) { Directory.CreateDirectory(dirPath.Replace(sourcePath, creationDirectory)); } } long processedLength = 0; foreach (var fileInfo in allFiles) { if (File.Exists(fileInfo.FullName)) { File.Copy(fileInfo.FullName, fileInfo.FullName.Replace(sourcePath, creationDirectory), false); } processedLength += fileInfo.Length; creationProgressBarValue = (int)((double)processedLength / (double)totalLength * 100.0); if (creationProgressBarValue > 100) { creationProgressBarValue = 100; } if (!creationInProgress) { return; } } creationProgressBarValue = 100; //open folder try { Win32Utility.ShellExecuteEx(null, creationDirectory); //Process.Start( "explorer.exe", creationDirectory ); } catch { } ////run process //string executableFileName = Path.Combine( creationDirectory, "NeoAxis.Studio.exe" ); //var runMapProcess = Process.Start( executableFileName, "" ); //end creationInProgress = false; ScreenNotifications.Show(Translate("The project was created successfully.")); } catch (Exception ex) { EditorMessageBox.ShowWarning(ex.Message); } }
public static void Import(string[] fileNames, string destRealFolder) //Initial ) { try { if (!Directory.Exists(destRealFolder)) { Directory.CreateDirectory(destRealFolder); } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); return; } ////check files inside project Data folder //{ // foreach( var fileName in fileNames ) // { // var virtualPath = VirtualPathUtils.GetVirtualPathByReal( fileName ); // if( !string.IsNullOrEmpty( virtualPath ) ) // { // Log.Warning( "Unable to import from project \'Data\' folder. The file already inside the project." ); // return; // } // } //} //processing //!!!!пока просто копирование //нужно зависимые скопировать //также может какую-то обработку делать ////select folder if exists files outside Assets folder //string destRealFolder = ""; //{ // var existsOutside = fileNames.Any( fileName => string.IsNullOrEmpty( VirtualPathUtility.GetVirtualPathByReal( fileName ) ) ); // if( existsOutside ) // { // if( string.IsNullOrEmpty( destRealFolderInitial ) ) // { // again:; // destRealFolder = VirtualPathUtility.GetRealPathByVirtual( "Import" ); // if( !Directory.Exists( destRealFolder ) ) // destRealFolder = VirtualPathUtility.GetRealPathByVirtual( "" ); // CommonOpenFileDialog dialog = new CommonOpenFileDialog(); // dialog.InitialDirectory = destRealFolder; // dialog.IsFolderPicker = true; // if( dialog.ShowDialog() == CommonFileDialogResult.Ok ) // { // destRealFolder = dialog.FileName; // if( !VirtualPathUtility.GetVirtualPathByReal( destRealFolder, out _ ) ) // { // EditorMessageBox.ShowWarning( "Need select folder inside Assets folder." ); // //Log.Warning( "Need select folder inside Data folder." ); // goto again; // } // } // } // else // destRealFolder = destRealFolderInitial; // } //} List <string> fileNamesToSelect = new List <string>(); foreach (var fileName in fileNames) { var virtualPath = VirtualPathUtility.GetVirtualPathByReal(fileName); if (!string.IsNullOrEmpty(virtualPath)) { //already inside Data folder fileNamesToSelect.Add(fileName); } else { //copy to Data folder string destinationFileName; try { destinationFileName = Path.Combine(destRealFolder, Path.GetFileName(fileName)); if (Directory.Exists(fileName)) { IOUtility.CopyDirectory(fileName, destinationFileName); } else { File.Copy(fileName, destinationFileName); } } catch (Exception e) { EditorMessageBox.ShowWarning(e.Message); //Log.Warning( e.Message ); return; } fileNamesToSelect.Add(destinationFileName); } } //select new files EditorAPI.SelectFilesOrDirectoriesInMainResourcesWindow(fileNamesToSelect.ToArray()); EditorAPI.SelectDockWindow(EditorAPI.FindWindow <ResourcesWindow>()); }