0 作为 Geneious 的用户,您只需选择文件夹中的所有文件并将它们拖放到一个组中,Geneious 应该为每个文件调用您的导入程序。对于将于今年晚些时候发布的 Geneious R9,Geneious 将有一个文件夹导入选项,该选项将自动为用户选择的文件夹中的每个文件调用您的导入程序。我建议你等到那时,但如果你现在真的需要导入文件夹,你可能需要在你的插件中实现一个 DocumentOperation 来提示用户输入一个文件夹并生成文档作为操作的输出。 希拉里·米勒(Hilary Miller) 2015年6月5日8:47 0 票分享 评论动作 永久链接
0 Thank you.但只要不清楚何时发布新版本,我想我最好自己实现它。不幸的是,我是 Geneious Plugins 的新手,不太明白我应该如何将我的导入器集成到 DocumentOperation 中。我有几个导入器类,如 MegAlign、PrimerSelection 、...我的类中的导入器 MyImporter 扩展了 GeneiousPlugin。我真的不明白应该在哪里集成 DocumentOperation。当我阅读 doumentation 时,似乎 GeneiousGridImporter[] getImporter() 将是正确的函数。但同样在 MyImporter 中从未调用过此函数。 VL 2015年6月9日13:44 0 票分享 评论动作 永久链接
0 你好 忽略网格类。这些用于在计算机网络上运行。 您应该做的是实现 GeneiousPlugin.getDocumentOperations() 并定义一个不需要输入的 DocumentOperation 并生成您作为输出导入的文档。例如: 公共文档操作[] getDocumentOperations() {文档操作操作 = 新文档操作(){ @覆盖公共 GeneiousActionOptions getActionOptions() { return new GeneiousActionOptions("我从文件夹中自定义格式").setMainMenuLocation(GeneiousActionOptions.MainMenu.Import); } @覆盖公共字符串 getHelp() {返回空; } @覆盖公共 DocumentSelectionSignature[] getSelectionSignatures() {返回新的 DocumentSelectionSignature[0]; } @覆盖public void performOperation(AnnotatedPluginDocument[] annotatedDocuments, ProgressListener progressListener, Options options, SequenceSelection sequenceSelection, OperationCallback callback) 抛出 DocumentOperationException { callback.addDocument(new DefaultNucleotideSequence("a", "GATT"), false, ProgressListener.EMPTY); } };返回新的文档操作[]{操作}; } 您应该填写 performOperation 的详细信息以提示用户输入文件夹并创建文档。 希拉里·米勒(Hilary Miller) 2015年6月9日20:57 0 票分享 评论动作 永久链接
0 您可以使用 callback.setSubFolder(),但它不支持嵌套子文件夹。因此,如果您需要超过 1 级深的子文件夹,您可以在 performOperation 方法中执行以下操作: DefaultNucleotideSequence sequence = new DefaultNucleotideSequence( "a" , "GATT" ); GeneiousService selectedService = ServiceUtilities。 getSelectedService ();试试{ if (selectedService instanceof WritableDatabaseService) { WritableDatabaseService 服务 = (WritableDatabaseService) selectedService; service = service.createChildFolder( "folderName" ).createChildFolder( "subFolderName" ); service.addDocumentCopy(DocumentUtilities createAnnotatedPluginDocument(序列),ProgressListener EMPTY。); }其他{ callback.setSubFolder( "文件夹名" ); // 这不支持子文件夹callback.addDocument(序列,假,ProgressListener EMPTY。); } } catch (DatabaseServiceException e) {抛出新的DocumentOperationException(e); } 希拉里·米勒(Hilary Miller) 2015年6月21日22:42 0 票分享 评论动作 永久链接
0 如果未选择文件夹,则会弹出另一个窗口并询问目标文件夹。但是我无法通过 ServiceUtilities.getSelectedService() 获取这个新文件夹。我试图调用 ServiceUtilities.getResultsDestination(),但它第二次请求路径...我怎样才能抑制第一个弹出窗口或获取它的路径? VL 2015年6月29日14:07 0 票分享 评论动作 永久链接
0 在 performOperation 开始时,您应该调用 ServiceUtilities.getSelectedService()。如果没有返回 WritableDatabaseService,则调用 ServiceUtilities.getResultsDestination()。然后将所有文档导入到该服务或其子文件夹中。 希拉里·米勒(Hilary Miller) 2015年6月29日21:39 0 票分享 评论动作 永久链接
0 这是我尝试过的。但是在performOperation之前已经显示了目的地选择的弹出窗口。当我调用 ServiceUtilities.getResultsDestination() 时,选择窗口会再次弹出,尽管我已经选择了一个文件夹。当我调用 ServiceUtilities.getResultsDestination() 时没有问题,我得到了我的目标文件夹。但是这个函数之前被调用过(我没有在其他地方调用它)并且我无法捕捉到它。 这是我为 performOperation 得到的: public void performOperation(AnnotatedPluginDocument[] annotatedDocuments, ProgressListener progressListener, Options options, SequenceSelection sequenceSelection, OperationCallback callback) 抛出 DocumentOperationException { // 此时已经调用了 ResultsDestination options.getOptions(); String pathname = options.getValueAsString("FolderToBeImported"); File[] files = new File(pathname).listFiles(); WritableDatabaseService service= (WritableDatabaseService) PluginUtilities.getGeneiousService("LocalDocuments"); GeneiousService selectedService = ServiceUtilities.getSelectedService(); if (!(selectedService instanceof WritableDatabaseService)) { selectedService = ServiceUtilities.getResultsDestination(); // 这里调用了另一个 ResultsDestination } for(文件文件:文件){服务 = (WritableDatabaseService) selectedService; 尝试 { parentFolder = file.getParentFile().getName(); service = service.createChildFolder(parentFolder); }抓住{...} } VL 2015年6月30日9:54 0 票分享 评论动作 永久链接
0 抱歉,一开始我不太明白这个问题。您可以通过将其添加到您的 DocumentOperation 来解决这个问题: @覆盖公共布尔isDocumentGenerator() {返回假; } 希拉里·米勒(Hilary Miller) 2015年6月30日22:39 0 票分享 评论动作 永久链接
0 这解决了一个问题,但实际上我返回了一个 PluginDocument (TextDocument),以防我的导入程序无法导入某些文档。我使用了 callback.addDocument(),但如果我将其设置为 false,这将不起作用;据我所知,该服务不支持 PluginDocuments,而只支持 AnnotatedPluginDocuments。 VL 2015年7月1日10:18 0 票分享 评论动作 永久链接
0 当覆盖 isDocumentGenerator 时,您应该忽略回调并将所有文档直接添加到服务中。任何 PluginDocument 都可以使用 DocumentUtilities.createAnnotatedPluginDocument() 包装在 AnnotatedPluginDocument 中。 希拉里·米勒(Hilary Miller) 2015年7月1日20:40 0 票分享 评论动作 永久链接