public void ReloadProjectWorkspace() { projectWorkspacePath = MainWindow.Instance.Config.ScriptWorkspacePath; if (projectWorkspacePath.Length == 0) { lastError = "Invalid project workspace path"; return; } var exampleFileExists = false; projectFiles.Clear(); try { foreach (var file in FileUtil.ListFilesInDirectory(projectWorkspacePath)) { if (Path.GetExtension(file) == ".cs") { if (Path.GetFileName(file) == ExampleScriptFileName) { exampleFileExists = true; } projectFiles.Add(new ScriptEditorFile(File.ReadAllText(file), file)); } } if (!exampleFileExists) { var exampleFile = new ScriptEditorFile(ScriptEditorFile.DefaultSource, Path.Combine(projectWorkspacePath, ExampleScriptFileName)); projectFiles.Add(exampleFile); SaveProjectFile(exampleFile); } } catch (Exception ex) { lastError = ex.Message; return; } lastError = string.Empty; }
private void DrawHeader() { headerArea.Begin(); GUILayout.BeginHorizontal(); GUILayout.Label("Scripts are stored in project workspace. To add a script create a new .cs file in workspace and click 'Reload'", GUILayout.ExpandWidth(false)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Project workspace:", GUILayout.ExpandWidth(false)); var newProjectWorkspacePath = GUILayout.TextField(projectWorkspacePath, GUILayout.ExpandWidth(true)); if (!newProjectWorkspacePath.Equals(projectWorkspacePath)) { projectWorkspacePath = newProjectWorkspacePath.Trim(); MainWindow.Instance.Config.ScriptWorkspacePath = projectWorkspacePath; MainWindow.Instance.SaveConfig(); } if (GUILayout.Button("Reload", GUILayout.Width(100))) { ReloadProjectWorkspace(); } GUILayout.EndHorizontal(); projectFilesScrollPosition = GUILayout.BeginScrollView(projectFilesScrollPosition); GUILayout.BeginHorizontal(); foreach (var file in projectFiles) { if (GUILayout.Button(Path.GetFileName(file.Path), GUILayout.ExpandWidth(false))) { currentFile = file; } } GUILayout.EndHorizontal(); GUILayout.EndScrollView(); headerArea.End(); }
private static void SaveProjectFile(ScriptEditorFile file) => File.WriteAllText(file.Path, file.Source);