Hi!
Sorry I'm very late in this thread, but you might also write a simple
actionbar that accepts drag and drop.
Here's a simple actionbar file that will use bioformats to only display
metadata about the file you'll drop on it.
Jerome
run("Action Bar","/plugins/drag_and_drop_processor.ijm");
exit();
<line>
<text>Drop your file here
</line>
<DnDAction>
f=getArgument();
run("Bio-Formats Importer", "open=["+f+"] display_metadata view=[Metadata
only]");
</DnDAction>
//// end of file
On Thu, 7 Mar 2024 at 13:36, Stein Rørvik <
[email protected]> wrote:
> One thing that might help you is to take advantage of the fact that the
> Dialog.addDirectory macro function supports drag-and-drop. So you can then
> write a macro wrapper which reads the dropped path and decides what to do
> with each file. See this example, which opens all *.gif files in the
> dropped folder:
>
> requires("1.52s"); //File.setDefaultDir(directoryPath)
> requires("1.53d"); //Dialog.addDirectory(label, defaultPath)
>
> run("Close All");
> print("\\Clear");
> defaultDir = getDir("imagej") + "samples\\";
> File.setDefaultDir(defaultDir);
>
> Dialog.create("Example Dialog");
>
> dirLabel = "Dir";
> dirPath = getDir("imagej") + "samples";
> Dialog.addDirectory(dirLabel, dirPath);
>
> fileLabel = "File";
> filePath = getDir("imagej") + "samples\\blobs.gif";
> Dialog.addFile(fileLabel, filePath);
>
> virtual = true;
> Dialog.addCheckbox("Virtual Stack", virtual);
>
> Dialog.show(); //waits until the user clicks "OK" or "Cancel".
> The macro terminates if the user clicks "Cancel".
>
> dirPath = Dialog.getString();
> filePath = Dialog.getString();
> virtual = Dialog.getCheckbox();
> if (!dirPath.endsWith("\\")) dirPath += "\\";
>
> print("dirPath: " + dirPath);
> print("filePath: " + filePath);
> print("virtual: " + virtual);
>
> pattern = "(\\.gif$)";
> allFiles = getFileList(dirPath);
> matchedFiles = Array.filter(allFiles, pattern);
> for (i = 0; i < matchedFiles.length; i++) {
> print("file: " + matchedFiles[i]);
> open(dirPath + matchedFiles[i]);
> //call your plugin here
> }
>
> This would work fine with custom file formats as well, as the macro is
> agnostic to the type of the files that are handled. I just tried this with
> an extension for a custom format I added myself to HandleExtraFileTypes and
> it worked, using the open() command.
>
> A different approach is to create a script in your OS in a language that
> supports drag-and-drop so that you create your wrapper macro in there, and
> feed the images to ImageJ. The advantage with this approach is that you can
> easily integrate it with a right-click menu in your OS so that you do not
> need to look up the drop target. The disadvantage is that it is less
> obvious to the user how this works, it would be a black-box if the context
> menu is not intuitive. With a dialog you can add whatever options and
> explanations you want for the user.
>
> An even fancier approach is to combine everything in a hybrid script that
> your OS treats as a script and ImageJ treats as a macro. You do this by
> writing code that the other language ignores as a comment or dummy variable
> assignment. This works because macros can be run explicitly as a file with
> any extension. So you can thus drag-and-crop the folder on an icon or menu
> choice in your OS, _or_ you can launch the script via ImageJ and drop the
> folder on the dialog field using the same code. I can perhaps write an
> example for that as well, but I am on Windows so if you are on another OS I
> would not know how this works there. I often use hybrid scripts, but I have
> not yet tried with dialog code as I normally use them for headless macros.
>
> Stein
>
> -----Original Message-----
> From: Curtis Rueden <[email protected]>
> Sent: 28. februar 2024 22:10
> Subject: Re: Advice for Virtual Stack of Entire Folder
>
> Hi Alan,
>
> ImageJ does not support drag-and-drop of folders—they are always handled
> in a hardcoded way that cannot delegate to HandleExtraFileTypes. Some Fiji
> devs actually did some exploratory work recently to make it possible to
> support drag-and-dropping folders in Fiji (thanks to imagej-legacy's
> bytecode patching of ij), but it is not yet merged and released.
>
> - https://github.com/scijava/scijava-common/pull/473
> - https://github.com/imagej/imagej-legacy/pull/302
>
> Unfortunately, in our most recent testing (in Oct 2023), we found it was
> not yet working as intended, and I believe no one has had time to work
> further on it for the moment. I may revisit it in April 2024 at an upcoming
> BigDataViewer/ImgLib2 hackathon, we'll see.
>
> Regards,
> Curtis
>
> On Wed, Jan 17, 2024 at 11:14 AM Alan Brooks <[email protected]>
> wrote:
>
> > I'm looking for advice on how one might trigger a custom plugin that
> > treats an entire folder of multi-frame files as a virtual stack. I
> > have written up a plugin that does that but was not able to figure out
> > how to integrate it with HandleExtraFileTypes. For now I just made a
> > button to call the plugin directly but would be curious to find how to
> > support it via drag-and-dropping the folder.
> >
> > Thanks,
> > Alan
> >
> > --
> > ImageJ mailing list:
> > http://image/
> > j.nih.gov%2Fij%2Flist.html&data=05%7C02%7Cstein.rorvik%40sintef.no%7C0
> > f813228cb7e4c42b49b08dc38a1c6ad%7Ce1f00f39604145b0b309e0210d8b32af%7C1
> > %7C0%7C638447514677535538%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAi
> > LCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=oDce
> > NAAE0TKJMdSuziJmQiVQUGB%2BSrE6fJl%2FdELDLAs%3D&reserved=0
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html