void OnGUI() { scrollPos = EditorGUILayout.BeginScrollView(scrollPos); //@asvo,这里不明白为什么在ExcuteModule()后 mSettingData有时候会为null。暂时不清楚原因,先这样强行处理,mSettingData为null的时候重新载入. if (mSettingData != null) { ShowConntent(); } else { ProtoBuildTool.ReloadSettingData(); } EditorGUILayout.EndScrollView(); }
void ExecPartialFiles(List <BaseWindowListData> partialDataList) { string tempExcelDir = ProtoBuildTool.tempExcelDir; //拷贝文件到临时目录 if (Directory.Exists(tempExcelDir)) { //清空目录下的excel文件 DirectoryInfo directoryInfo = new DirectoryInfo(tempExcelDir); foreach (var fileInfo in directoryInfo.GetFiles()) { string name = fileInfo.Name; if (name.EndsWith(".xls") || name.EndsWith(".xlsx")) { File.Delete(fileInfo.FullName); } } } else { Directory.CreateDirectory(tempExcelDir); } int fileCount = 0; foreach (var selectFile in partialDataList) { string srcFilePath = OriginFilePath + "/" + selectFile.name; string destFilePath = tempExcelDir + "/" + selectFile.name; if (File.Exists(srcFilePath)) { ++fileCount; File.Copy(srcFilePath, destFilePath, true); } } if (0 == fileCount) { ProtoBuildTool.ShowDialog("没有任何文件被选中!"); return; } ProtoBuildTool.ExcuteModule(false, isNeedSyncCsv2Server); //同步 if (isNeedSyncCsv2Server) { string exprotCsvPath = toolsPath + "/python_protoc/csv/"; //DirectoryInfo info = new DirectoryInfo(ProtoBuildTool.serverCsvDataDir); EditorConfig.CopyDir(exprotCsvPath, ProtoBuildTool.serverCsvDataDir.Replace("/", "\\")); } }
void ShowConntent() { EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); useDefaultConfig = GUILayout.Toggle(useDefaultConfig, "", GUILayout.Width(30)); GUILayout.Label("是否使用默认配置", GUILayout.Width(100)); EditorGUILayout.EndHorizontal(); GUILayout.Space(20); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Excel文件目录", GUILayout.Width(100)); GUILayout.Label(mSettingData.excelPath, GUILayout.Width(500)); if (GUILayout.Button("设置", GUILayout.Width(80))) { mSettingData.excelPath = EditorUtility.OpenFolderPanel("选择excel路径", "", ""); } EditorGUILayout.EndHorizontal(); GUILayout.Space(20); EditorGUILayout.BeginHorizontal(); GUILayout.Label("生成bytes路径", GUILayout.Width(100)); GUILayout.Label(mSettingData.bytesPath, GUILayout.Width(500)); if (GUILayout.Button("设置", GUILayout.Width(80))) { mSettingData.bytesPath = EditorUtility.OpenFolderPanel("选择bytes路径", "", ""); } EditorGUILayout.EndHorizontal(); GUILayout.Space(20); EditorGUILayout.BeginHorizontal(); GUILayout.Label("生成C#代码路径", GUILayout.Width(100)); GUILayout.Label(mSettingData.csPath, GUILayout.Width(500)); if (GUILayout.Button("设置", GUILayout.Width(80))) { mSettingData.csPath = EditorUtility.OpenFolderPanel("选择C#代码路径", "", ""); } EditorGUILayout.EndHorizontal(); GUILayout.Space(20); EditorGUILayout.BeginHorizontal(); GUILayout.Label("commdef.proto所在目录", GUILayout.Width(100)); GUILayout.Label(mSettingData.commdefPath, GUILayout.Width(500)); if (GUILayout.Button("设置", GUILayout.Width(80))) { mSettingData.commdefPath = EditorUtility.OpenFolderPanel("commdef.proto所在目录", "", ""); } EditorGUILayout.EndHorizontal(); GUILayout.Space(20); EditorGUILayout.BeginHorizontal(); GUILayout.Label("tools目录路径", GUILayout.Width(100)); GUILayout.Label(mSettingData.protoToolsDir, GUILayout.Width(500)); if (GUILayout.Button("设置", GUILayout.Width(80))) { mSettingData.protoToolsDir = EditorUtility.OpenFolderPanel("tools目录路径", "", ""); } EditorGUILayout.EndHorizontal(); GUILayout.Space(20); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("保存设置", GUILayout.Width(150))) { ProtoBuildTool.SaveConfig(useDefaultConfig); } if (GUILayout.Button("一键导出excel+重新生成代码和数据", GUILayout.Width(250))) { ProtoBuildTool.ExcuteModule(); } EditorGUILayout.EndHorizontal(); GUILayout.Space(30); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("打开生成列表窗口", GUILayout.ExpandWidth(true))) { BuildProtoListWindow bplw = (BuildProtoListWindow)EditorWindow.GetWindow <BuildProtoListWindow> (); bplw.titleContent.text = "生成列表窗口"; bplw.InitListWindow(mSettingData.excelPath, mSettingData.bytesPath, mSettingData.csPath, mSettingData.protoToolsDir); bplw.Show(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); }
protected override void ExecAll() { ProtoBuildTool.ExcuteModule(true, isNeedSyncCsv2Server); }