diff --git a/napi_IntelliJ_plugin/src/com/sk/dialog/GenerateDialogPane.form b/napi_IntelliJ_plugin/src/com/sk/dialog/GenerateDialogPane.form index 38db3ee12f01dde6bb64738e761f65f1ac9169f1..aa4ebed53b0e2e05c439be1a9732b34aab629eb8 100644 --- a/napi_IntelliJ_plugin/src/com/sk/dialog/GenerateDialogPane.form +++ b/napi_IntelliJ_plugin/src/com/sk/dialog/GenerateDialogPane.form @@ -81,6 +81,9 @@ + + + @@ -117,6 +120,9 @@ + + + @@ -153,6 +159,9 @@ + + + @@ -192,7 +201,7 @@ - + diff --git a/napi_vs_plugin/src/extension.js b/napi_vs_plugin/src/extension.js index 0b2c09422d25a7382c4ffd66147744c6c02d9e6d..ad77bb21897cb3590870d0f5d86826938eb7cc35 100644 --- a/napi_vs_plugin/src/extension.js +++ b/napi_vs_plugin/src/extension.js @@ -58,6 +58,19 @@ function executor(name, genDir, mode, importIsCheck) { }); } +function executorH2Ts(name, genDir) { + var command = exeFilePath + " -f " + name + " -o " + genDir; + var exec = require('child_process').exec; + exec(command, function (error, stdout, stderr) { + VsPluginLog.logInfo('VsPlugin: stdout =' + stdout + ", stderr =" + stderr); + if (error || stdout.indexOf("success") < 0) { + vscode.window.showErrorMessage("genError:" + (error != null ? error : "") + stdout); + return VsPluginLog.logError("VsPlugin:" + error + stdout); + } + vscode.window.showInformationMessage("Generated successfully"); + }); +} + function genCommand(name, genDir, mode, importIsCheck) { var genFileMode = mode == 0 ? " -f " : " -d "; if (genDir == ""){ @@ -87,8 +100,9 @@ function register(context, command) { } ); panel.webview.html = getWebviewContent(context); + let msg; panel.webview.onDidReceiveMessage(message => { - let msg = message.msg; + msg = message.msg; if (msg == "cancel") { panel.dispose(); } else if(msg == "param") { @@ -97,12 +111,25 @@ function register(context, command) { let genDir = message.genDir; let importIsCheck = message.importIsCheck; checkMode(name, genDir, mode, importIsCheck); - } else { + } else if(msg == "h2ts") { + let name = message.fileNames; + let genDir = message.genDir; + name = re.replaceAll(name, " ", ""); + if ("" == name) { + vscode.window.showErrorMessage("Please enter the path!"); + return; + } + if (exeFileExit()) { + executorH2Ts(name, genDir); + } else { + vscode.window.showInformationMessage("Copy executable program to " + __dirname); + } + }else { selectPath(panel, message); } }, undefined, context.subscriptions); let fn = re.getFileInPath(uri.fsPath); - let tt = re.match("@ohos.[a-zA-Z_0-9]+.d.ts", fn); + let tt = re.match("(@ohos.[a-zA-Z_0-9]+.d.ts)|([a-zA-Z_0-9]+.h)", fn); var result = { msg: "selectInterPath", path: tt ? uri.fsPath : "" @@ -116,6 +143,7 @@ function register(context, command) { * 选择本地目录/文件夹 */ function selectPath(panel, message) { + let msg = message.msg; let mode = 1; if (message.mode != undefined) { mode = message.mode; @@ -126,7 +154,9 @@ function register(context, command) { canSelectFiles: mode == 0 ? true : false,//是否选择文件 canSelectFolders: mode == 0 ? false : true,//是否选择文件夹 defaultUri:vscode.Uri.file(''),//默认打开本地路径 - filters: { + filters: msg == "selectHFilePath" ? { + 'Text files': ['h'] + } : { 'Text files': ['d.ts'] } }; diff --git a/napi_vs_plugin/src/vs_plugin_view.html b/napi_vs_plugin/src/vs_plugin_view.html index c7dce1cbb87310fa536b0eb98f80a74f4ad5a415..2714fa7457dbb9beb12f13a877746b3a51255639 100644 --- a/napi_vs_plugin/src/vs_plugin_view.html +++ b/napi_vs_plugin/src/vs_plugin_view.html @@ -1,24 +1,17 @@ - - + - + Napi - - - + -
- 选择生成方式: -
- .d.ts文件(多个文件之间用,号分割)
-
- 文件夹 -
-
-
-
- 选择接口文件: - - -
- -
- 生成框架路径: - - -
-
- 编译脚本路径: - - -
-
- 启用import功能 -
-
- - - - - -
- + function fillInputDir(fileNames, message) { + var dir; + var fileName; + if (mode == 0) { + if (fileNames.indexOf(",") != -1) { + fileName = fileNames.substring(0, fileNames.indexOf(",")); + } else { + fileName = fileNames; + } + dir = fileName.substring(0, fileName.lastIndexOf("\\")); + } else { + dir = fileNames; + } + if(message == "selectInterPath") { + let regex = new RegExp("[a-zA-Z_0-9]+.h"); + if(regex.exec(fileNames)){ + document.getElementById("genHResultDir").value = dir; + }else{ + document.getElementById("genFile").value = dir; + document.getElementById("buildFile").value = dir; + } + }else{ + document.getElementById("genHResultDir").value = dir; + } + } + + +
+
+ + +
+
+ 选择生成方式: +
+ .d.ts文件 + 文件夹 +
+
+
+
+ 选择接口文件: + + +
+ +
+ 生成框架路径: + + +
+
+ 编译脚本路径: + + +
+
+ 启用import功能: + +
+
+ + + + + +
+
+
+
+ + +
+
+ 文件路径选择: + + +
+ +
+ 输出目录选择: + + +
+ +
+ + + + + +
+
+
+
+ \ No newline at end of file