Skip to content

Commit 671734f

Browse files
committed
optimize 'ExportTemplate'
1 parent d57d9da commit 671734f

2 files changed

Lines changed: 18 additions & 13 deletions

File tree

src/EIDEProjectExplorer.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ import {
4949
uploadConfig_desc, add_lib_path, view_str$pack$components,
5050
view_str$project$title, view_str$project$excludeFolder, view_str$project$excludeFile,
5151
view_str$pack$install_component_failed, view_str$pack$remove_component_failed,
52-
view_str$compile$selectToolchain, view_str$compile$selectFlasher, view_str$project$needRefresh,
52+
view_str$compile$selectToolchain, view_str$compile$selectFlasher, view_str$project$needRefresh, view_str$project$fileNotExisted,
5353
WARNING, view_str$project$cmsis_components, view_str$project$other_settings, view_str$settings$outFolderName,
5454
view_str$dialog$add_to_source_folder, view_str$project$sel_target, view_str$project$folder_type_fs,
5555
view_str$project$folder_type_virtual, view_str$project$sel_folder_type,
@@ -855,18 +855,25 @@ class ProjectDataProvider implements vscode.TreeDataProvider<ProjTreeItem> {
855855
.forEach((rootInfo) => {
856856
const isComponent = File.ToUnixPath(rootInfo.displayName) === DependenceManager.DEPENDENCE_DIR;
857857
const folderDispName = isComponent ? view_str$project$cmsis_components : rootInfo.displayName;
858+
const isExisted = rootInfo.fileWatcher.file.IsDir();
859+
let dirIcon: string | undefined;
860+
if (isComponent) dirIcon = 'DependencyGraph_16x.svg';
861+
if (rootInfo.needUpdate || !isExisted) dirIcon = 'StatusWarning_16x.svg';
862+
let dirDesc: string | undefined;
863+
if (rootInfo.needUpdate) dirDesc = view_str$project$needRefresh;
864+
if (!isExisted) dirDesc = view_str$project$fileNotExisted;
858865
iList.push(new ProjTreeItem(TreeItemType.FOLDER_ROOT, {
859866
value: folderDispName,
860867
obj: rootInfo.fileWatcher.file,
861868
projectIndex: element.val.projectIndex,
862869
contextVal: isComponent ? 'FOLDER_ROOT_DEPS' : undefined,
870+
icon: dirIcon,
863871
tooltip: newFileTooltipString({
864872
name: rootInfo.displayName,
865873
path: rootInfo.fileWatcher.file.path,
866-
desc: rootInfo.needUpdate ? view_str$project$needRefresh : undefined,
874+
desc: dirDesc,
867875
attr: {}
868-
}, project.getRootDir()),
869-
icon: rootInfo.needUpdate ? 'StatusWarning_16x.svg' : (isComponent ? 'DependencyGraph_16x.svg' : undefined)
876+
}, project.getRootDir())
870877
}));
871878
});
872879

@@ -2496,17 +2503,18 @@ class ProjectDataProvider implements vscode.TreeDataProvider<ProjTreeItem> {
24962503
}
24972504
}
24982505

2499-
// rename project name
2506+
// init project
25002507
{
25012508
const prjFile = File.fromArray([targetDir.path, AbstractProject.EIDE_DIR, AbstractProject.prjConfigName]);
25022509
if (!prjFile.IsFile()) throw Error(`project file: '${prjFile.path}' is not exist !`);
25032510

25042511
try {
25052512
const prjConf: ProjectConfigData<any> = JSON.parse(prjFile.Read());
25062513
prjConf.name = option.name; // set project name
2514+
prjConf.miscInfo.uid = undefined; // reset uid
25072515
prjFile.Write(JSON.stringify(prjConf));
25082516
} catch (error) {
2509-
throw Error(`change project name failed !, msg: ${error.message}`);
2517+
throw Error(`Init project failed !, msg: ${error.message}`);
25102518
}
25112519
}
25122520
}
@@ -3727,7 +3735,7 @@ export class ProjectExplorer implements CustomConfigurationProvider {
37273735
}
37283736

37293737
private exportLocked: boolean = false;
3730-
async ExportToTemplate(prjItem?: ProjTreeItem, isWorkspace?: boolean) {
3738+
async ExportProjectTemplate(prjItem?: ProjTreeItem, isWorkspace?: boolean) {
37313739

37323740
if (this.exportLocked) {
37333741
GlobalEvent.emit('msg', {
@@ -3765,10 +3773,6 @@ export class ProjectExplorer implements CustomConfigurationProvider {
37653773
const prjOutFolder = File.normalize(prj.GetConfiguration().config.outDir);
37663774
defExcludeList.push(`${prjOutFolder}`, `${prjOutFolder}${File.sep}*`);
37673775
resIgnoreList = prj.readIgnoreList();
3768-
const prjUid = prjConfig.miscInfo.uid;
3769-
prjConfig.miscInfo.uid = undefined; // clear uid before save prj
3770-
prj.Save(true); // save project
3771-
prjConfig.miscInfo.uid = prjUid; // restore uid
37723776
}
37733777

37743778
/* invalid root folder, exit */

src/extension.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ export async function activate(context: vscode.ExtensionContext) {
138138
subscriptions.push(vscode.commands.registerCommand('_cl.eide.workspace.build', () => projectExplorer.buildWorkspace()));
139139
subscriptions.push(vscode.commands.registerCommand('_cl.eide.workspace.rebuild', () => projectExplorer.buildWorkspace(true)));
140140
subscriptions.push(vscode.commands.registerCommand('_cl.eide.workspace.open.config', () => projectExplorer.openWorkspaceConfig()));
141-
subscriptions.push(vscode.commands.registerCommand('_cl.eide.workspace.make.template', (item) => projectExplorer.ExportToTemplate(undefined, true)));
141+
subscriptions.push(vscode.commands.registerCommand('_cl.eide.workspace.make.template', (item) => projectExplorer.ExportProjectTemplate(undefined, true)));
142142

143143
// project user cmds
144144
subscriptions.push(vscode.commands.registerCommand('eide.project.save', (item) => projectExplorer.saveProject(item)));
@@ -162,7 +162,7 @@ export async function activate(context: vscode.ExtensionContext) {
162162
subscriptions.push(vscode.commands.registerCommand('_cl.eide.project.saveAll', () => projectExplorer.SaveAll()));
163163
subscriptions.push(vscode.commands.registerCommand('_cl.eide.project.refresh', () => projectExplorer.Refresh()));
164164
subscriptions.push(vscode.commands.registerCommand('_cl.eide.project.switchMode', (item) => projectExplorer.switchTarget(item)));
165-
subscriptions.push(vscode.commands.registerCommand('_cl.eide.project.exportAsTemplate', (item) => projectExplorer.ExportToTemplate(item)));
165+
subscriptions.push(vscode.commands.registerCommand('_cl.eide.project.exportAsTemplate', (item) => projectExplorer.ExportProjectTemplate(item)));
166166

167167
// project explorer
168168
subscriptions.push(vscode.commands.registerCommand('_cl.eide.project.addSrcDir', (item) => projectExplorer.AddSrcDir(item)));
@@ -704,6 +704,7 @@ function exportEnvToSysPath() {
704704
File.normalize(`${builderFolder.path}/bin`), // builder bin folder
705705
File.normalize(`${builderFolder.path}/utils`), // utils tool folder
706706
File.normalize(`${builderFolder.dir}/scripts`),
707+
File.normalize(`${resManager.Get7zDir().path}`), // export built-in 7za tool
707708
File.normalize(`${resManager.getBuiltInToolsDir().path}/utils`) // builtin utils tool folder
708709
];
709710

0 commit comments

Comments
 (0)