向Lona添加组件复制

如您所知,我决定继续为Lona做出更多贡献,本周早些时候,我有机会向该应用程序添加了新功能。 以下是我的贡献概述:

功能要求⚙️

用户通常会基于现有组件创建新组件,而唯一的方法是转到Finder并复制并粘贴组件文件。 因此,有一个功能请求,即向File Navigator添加组件复制支持。

首先,让我们看一下File Navigator中文件的上下文菜单:

我的任务是在上下文菜单中添加一个名为“ Duplicate As…”的新选项,选择该选项后,它将显示“保存”对话框。 用户键入文件名,选择文件的位置并按“保存”后,程序应在“组件编辑器”中打开一个新创建的组件。

链接到问题:

[Lona Studio]添加简单的组件复制·问题#355·airbnb / Lona
简介创建新组件时,通常以复制一个现有组件为起点。 有一个…… github.com

实施⚒

FileNavigator类中有一个功能menuForFile ,它创建了一个上下文菜单,这就是我需要放置新代码的地方:

  // 检查所选文件是否具有“ .component”扩展名 
如果 NSURL(fileURLWithPath:path).pathExtension ==“ component” {
menu.addItem(NSMenuItem(title:“ Duplicate As ...”,onClick:{
var saveURL:字符串
// 显示保存对话框
对话框= NSSavePanel()
dialog.title =“保存.component文件”
dialog.showsResizeIndicator = true
dialog.showsHiddenFiles = false
dialog.canCreateDirectories = true
dialog.allowedFileTypes = [“ component”]
dialog.directoryURL = URL(fileURLWithPath:path).deletingLastPathComponent()
          //用户取消了保存。  不要换出文件。 
如果 dialog.runModal()!= NSApplication.ModalResponse.OK {
返回
}
  守护  url = dialog.url else { return } 
saveURL = url.path
  //尝试复制文件。  如果成功,请在组件编辑器中打开文件。  否则,显示带有适当消息的警报。 
{
尝试 FileManager.default.copyItem(atPath:path,toPath:saveURL)
} {
警报= NSAlert()
alert.messageText =“无法将组件复制到\(saveURL)”
alert.addButton(withTitle:“确定”)
alert.runModal()
返回
}
自我 .onAction?(saveURL)
}))
}

结果

链接到PR:

修复#355:添加klymenkoo的组件复制支持·拉取请求#359·airbnb / Lona
此PR包含一个针对#355的修复程序。 它将新项目“ Duplicate as…”添加到上下文菜单。 如果用户选择此… github.com