Changeset 5729


Ignore:
Timestamp:
12/03/09 13:35:55 (10 years ago)
Author:
melissa
Message:
  • Added option to disable file grouping in ImageJ plugin. Closes #440.
  • All multi-file readers now respect isGroupFiles().
  • Fixed subtle bug with reading from 2+ GB files.
  • Fixed bug that caused SVS reader to ignore thumbnail images.
  • Fixed bug that caused non-XYZCT dimensions to be ignored by Leica LIF reader.
Location:
trunk/components
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/bio-formats/src/loci/formats/in/BioRadReader.java

    r5709 r5729  
    3030import java.util.Vector; 
    3131 
     32import loci.common.DataTools; 
    3233import loci.common.Location; 
    3334import loci.common.RandomAccessInputStream; 
     
    344345    // look for companion metadata files 
    345346 
    346     Location parent = new Location(currentId).getAbsoluteFile().getParentFile(); 
    347     String[] list = parent.list(true); 
    348     Arrays.sort(list); 
    349  
    350347    Vector<String> pics = new Vector<String>(); 
    351348 
    352     for (int i=0; i<list.length; i++) { 
    353       if (list[i].endsWith("lse.xml")) { 
    354         String path = 
    355           new Location(parent.getAbsolutePath(), list[i]).getAbsolutePath(); 
    356         RandomAccessInputStream raw = new RandomAccessInputStream(path); 
    357         used.add(path); 
    358         byte[] xml = new byte[(int) raw.length()]; 
    359         raw.read(xml); 
    360         raw.close(); 
    361  
    362         DefaultHandler handler = new BioRadHandler(); 
    363         XMLTools.parseXML(xml, handler); 
    364  
    365         used.remove(currentId); 
    366         for (int q=0; q<list.length; q++) { 
    367           if (checkSuffix(list[q], PIC_SUFFIX)) { 
    368             path = 
    369               new Location(parent.getAbsolutePath(), list[q]).getAbsolutePath(); 
    370             pics.add(path); 
    371             if (!used.contains(path)) used.add(path); 
     349    if (isGroupFiles()) { 
     350      Location parent = 
     351        new Location(currentId).getAbsoluteFile().getParentFile(); 
     352      String parentPath = parent.getAbsolutePath(); 
     353      String[] list = parent.list(true); 
     354      Arrays.sort(list); 
     355 
     356      for (int i=0; i<list.length; i++) { 
     357        if (list[i].endsWith("lse.xml")) { 
     358          String path = new Location(parentPath, list[i]).getAbsolutePath(); 
     359          used.add(path); 
     360          String xml = DataTools.readFile(path); 
     361 
     362          DefaultHandler handler = new BioRadHandler(); 
     363          XMLTools.parseXML(xml, handler); 
     364 
     365          used.remove(currentId); 
     366          for (int q=0; q<list.length; q++) { 
     367            if (checkSuffix(list[q], PIC_SUFFIX)) { 
     368              path = new Location(parentPath, list[q]).getAbsolutePath(); 
     369              pics.add(path); 
     370              if (!used.contains(path)) used.add(path); 
     371            } 
    372372          } 
    373373        } 
    374       } 
    375       else if (list[i].endsWith("data.raw")) { 
    376         used.add( 
    377           new Location(parent.getAbsolutePath(), list[i]).getAbsolutePath()); 
     374        else if (list[i].endsWith("data.raw")) { 
     375          used.add(new Location(parentPath, list[i]).getAbsolutePath()); 
     376        } 
    378377      } 
    379378    } 
  • trunk/components/bio-formats/src/loci/formats/in/DeltavisionReader.java

    r5705 r5729  
    461461 
    462462    // if matching log file exists, extract key/value pairs from it 
    463     boolean logFound = parseLogFile(store); 
    464     parseDeconvolutionLog(store); 
     463    boolean logFound = isGroupFiles() ? parseLogFile(store) : false; 
     464    if (isGroupFiles()) parseDeconvolutionLog(store); 
    465465 
    466466    // Run through every image and fill in the 
  • trunk/components/bio-formats/src/loci/formats/in/L2DReader.java

    r5550 r5729  
    113113    Vector<String> files = new Vector<String>(); 
    114114    files.add(currentId); 
    115     files.addAll(metadataFiles[getSeries()]); 
     115    if (metadataFiles != null && getSeries() < metadataFiles.length) { 
     116      files.addAll(metadataFiles[getSeries()]); 
     117    } 
    116118    if (!noPixels) files.addAll(tiffs[series]); 
    117119    return files.toArray(new String[files.size()]); 
     
    138140    // See Trac ticket #266 for details. 
    139141 
    140     if (!checkSuffix(id, "l2d")) { 
     142    if (!checkSuffix(id, "l2d") && isGroupFiles()) { 
    141143      // find the corresponding .l2d file 
    142144      Location parent = new Location(id).getAbsoluteFile().getParentFile(); 
     
    150152      } 
    151153      throw new FormatException("Could not find .l2d file"); 
     154    } 
     155    else if (!isGroupFiles()) { 
     156      super.initFile(id); 
     157 
     158      tiffs = new Vector[1]; 
     159      tiffs[0] = new Vector<String>(); 
     160      tiffs[0].add(id); 
     161 
     162      TiffReader r = new TiffReader(); 
     163      r.setMetadataStore(getMetadataStore()); 
     164      r.setId(id); 
     165      core = r.getCoreMetadata(); 
     166      metadataStore = r.getMetadataStore(); 
     167      metadata = r.getMetadata(); 
     168      r.close(); 
     169      reader = new MinimalTiffReader(); 
     170      return; 
    152171    } 
    153172 
  • trunk/components/bio-formats/src/loci/formats/in/LeicaHandler.java

    r5691 r5729  
    5555 
    5656  private String elementName, collection; 
    57   private int count = 0, numChannels, extras; 
     57  private int count = 0, numChannels, extras = 1; 
    5858 
    5959  private Vector<String> lutNames; 
     
    123123      if (extras > 1) { 
    124124        if (coreMeta.sizeZ == 1) coreMeta.sizeZ = extras; 
    125         else coreMeta.sizeT *= extras; 
     125        else { 
     126          if (coreMeta.sizeT == 0) coreMeta.sizeT = extras; 
     127          else coreMeta.sizeT *= extras; 
     128        } 
    126129      } 
    127130 
  • trunk/components/bio-formats/src/loci/formats/in/LeicaReader.java

    r5668 r5729  
    251251    FormatTools.assertId(currentId, true, 1); 
    252252    Vector<String> v = new Vector<String>(); 
    253     v.add(leiFilename); 
     253    if (leiFilename != null) v.add(leiFilename); 
    254254    if (!noPixels) { 
    255255      v.addAll(files[getSeries()]); 
     
    292292    close(); 
    293293 
    294     if (checkSuffix(id, TiffReader.TIFF_SUFFIXES)) { 
     294    if (checkSuffix(id, TiffReader.TIFF_SUFFIXES) && isGroupFiles()) { 
    295295      // need to find the associated .lei file 
    296296      if (ifds == null) super.initFile(id); 
     
    350350      } 
    351351      throw new FormatException("LEI file not found."); 
     352    } 
     353    else if (checkSuffix(id, TiffReader.TIFF_SUFFIXES) && !isGroupFiles()) { 
     354      super.initFile(id); 
     355      TiffReader r = new TiffReader(); 
     356      r.setMetadataStore(getMetadataStore()); 
     357      r.setId(id); 
     358 
     359      core = r.getCoreMetadata(); 
     360      metadata = r.getMetadata(); 
     361      metadataStore = r.getMetadataStore(); 
     362      r.close(); 
     363 
     364      files = new Vector[] {new Vector()}; 
     365      files[0].add(id); 
     366      tiff = new MinimalTiffReader(); 
     367 
     368      return; 
    352369    } 
    353370 
  • trunk/components/bio-formats/src/loci/formats/in/MIASReader.java

    r5690 r5729  
    236236    } 
    237237 
    238     for (AnalysisFile file : analysisFiles) { 
    239       if (file.plate <= 0 && (file.well == getSeries() || file.well < 0 || 
    240         wellNumber[getSeries()] == file.well)) 
    241       { 
    242         files.add(file.filename); 
     238    if (analysisFiles != null) { 
     239      for (AnalysisFile file : analysisFiles) { 
     240        if (file.plate <= 0 && (file.well == getSeries() || file.well < 0 || 
     241          wellNumber[getSeries()] == file.well)) 
     242        { 
     243          files.add(file.filename); 
     244        } 
    243245      } 
    244246    } 
     
    281283    debug("MIASReader.initFile(" + id + ")"); 
    282284    super.initFile(id); 
     285 
     286    if (!isGroupFiles()) { 
     287      tiffs = new String[][] {{id}}; 
     288      readers = new MinimalTiffReader[1][1]; 
     289      readers[0][0] = new MinimalTiffReader(); 
     290 
     291      TiffReader r = new TiffReader(); 
     292      r.setMetadataStore(getMetadataStore()); 
     293      r.setId(tiffs[0][0]); 
     294      core = r.getCoreMetadata(); 
     295      metadata = r.getMetadata(); 
     296      metadataStore = r.getMetadataStore(); 
     297      r.close(); 
     298 
     299      tileRows = 1; 
     300      tileCols = 1; 
     301 
     302      return; 
     303    } 
    283304 
    284305    analysisFiles = new Vector<AnalysisFile>(); 
  • trunk/components/bio-formats/src/loci/formats/in/PrairieReader.java

    r5659 r5729  
    7676 
    7777  /** Helper reader for opening images */ 
    78   private MinimalTiffReader tiff; 
     78  private TiffReader tiff; 
    7979 
    8080  /** Names of the associated XML files */ 
     
    168168      return new String[] {xmlFile, cfgFile}; 
    169169    } 
    170     if (files == null) files = new String[0]; 
    171     String[] s = new String[files.length + 2]; 
    172     System.arraycopy(files, 0, s, 0, files.length); 
    173     s[files.length] = xmlFile; 
    174     s[files.length + 1] = cfgFile; 
    175     return s; 
     170    Vector<String> s = new Vector<String>(); 
     171    if (files != null) { 
     172      for (String file : files) { 
     173        s.add(file); 
     174      } 
     175    } 
     176    if (xmlFile != null) s.add(xmlFile); 
     177    if (cfgFile != null) s.add(cfgFile); 
     178    return s.toArray(new String[s.size()]); 
    176179  } 
    177180 
     
    213216    if (metadata == null) metadata = new Hashtable(); 
    214217    if (core == null) core = new CoreMetadata[] {new CoreMetadata()}; 
     218    if (tiff == null) { 
     219      tiff = new TiffReader(); 
     220      tiff.setMetadataStore(getMetadataStore()); 
     221    } 
    215222 
    216223    if (checkSuffix(id, PRAIRIE_SUFFIXES)) { 
     
    220227        status("Parsing XML"); 
    221228        super.initFile(id); 
    222         tiff = new MinimalTiffReader(); 
    223229        xmlFile = id; 
    224230        readXML = true; 
     
    332338      // we have been given a TIFF file - reinitialize with the proper XML file 
    333339 
    334       status("Finding XML file"); 
    335  
    336       Location file = new Location(id); 
    337       file = file.getAbsoluteFile(); 
    338       Location parent = file.getParentFile(); 
    339       String[] listing = parent.list(); 
    340       for (int i=0; i<listing.length; i++) { 
    341         if (checkSuffix(listing[i], PRAIRIE_SUFFIXES)) { 
    342           initFile(new Location(parent, listing[i]).getAbsolutePath()); 
    343           return; 
    344         } 
     340      if (isGroupFiles()) { 
     341        status("Finding XML file"); 
     342 
     343        Location file = new Location(id); 
     344        file = file.getAbsoluteFile(); 
     345        Location parent = file.getParentFile(); 
     346        String[] listing = parent.list(); 
     347        for (int i=0; i<listing.length; i++) { 
     348          if (checkSuffix(listing[i], PRAIRIE_SUFFIXES)) { 
     349            initFile(new Location(parent, listing[i]).getAbsolutePath()); 
     350            return; 
     351          } 
     352        } 
     353      } 
     354      else { 
     355        files = new String[] {id}; 
     356        tiff.setId(files[0]); 
     357        core = tiff.getCoreMetadata(); 
     358        metadataStore = tiff.getMetadataStore(); 
     359        metadata = tiff.getMetadata(); 
    345360      } 
    346361    } 
  • trunk/components/bio-formats/src/loci/formats/in/SVSReader.java

    r5517 r5729  
    8686    super.initStandardMetadata(); 
    8787 
     88    ifds = tiffParser.getIFDs(); 
     89 
    8890    core = new CoreMetadata[ifds.size()]; 
    8991 
  • trunk/components/bio-formats/src/loci/formats/in/ScanrReader.java

    r5661 r5729  
    178178 
    179179    // make sure we have the .xml file 
    180     if (!checkSuffix(id, "xml")) { 
     180    if (!checkSuffix(id, "xml") && isGroupFiles()) { 
    181181      Location parent = new Location(id).getAbsoluteFile().getParentFile(); 
    182182      if (checkSuffix(id, "tif")) { 
     
    195195          parent.getAbsolutePath()); 
    196196      } 
     197    } 
     198    else if (!isGroupFiles() && checkSuffix(id, "tif")) { 
     199      TiffReader r = new TiffReader(); 
     200      r.setMetadataStore(getMetadataStore()); 
     201      r.setId(id); 
     202      core = r.getCoreMetadata(); 
     203      metadata = r.getMetadata(); 
     204      metadataStore = r.getMetadataStore(); 
     205      r.close(); 
     206      tiffs = new String[] {id}; 
     207      reader = new MinimalTiffReader(); 
     208 
     209      return; 
    197210    } 
    198211 
     
    292305    int sizeY = reader.getSizeY(); 
    293306    int pixelType = reader.getPixelType(); 
     307 
     308    // we strongly suspect that ScanR incorrectly records the 
     309    // signedness of the pixels 
     310 
     311    switch (pixelType) { 
     312      case FormatTools.INT8: 
     313        pixelType = FormatTools.UINT8; 
     314        break; 
     315      case FormatTools.UINT8: 
     316        pixelType = FormatTools.INT8; 
     317        break; 
     318      case FormatTools.INT16: 
     319        pixelType = FormatTools.UINT16; 
     320        break; 
     321      case FormatTools.UINT16: 
     322        pixelType = FormatTools.INT16; 
     323        break; 
     324    } 
     325 
    294326    boolean rgb = reader.isRGB(); 
    295327    boolean interleaved = reader.isInterleaved(); 
  • trunk/components/bio-formats/src/loci/formats/in/TCSReader.java

    r5709 r5729  
    227227    if (list != null) { 
    228228      for (String file : list) { 
    229         if (checkSuffix(file, XML_SUFFIX) && !isXML) { 
     229        if (checkSuffix(file, XML_SUFFIX) && !isXML && isGroupFiles()) { 
    230230          xmlFile = new Location(parent, file).getAbsolutePath(); 
    231231          break; 
     
    265265    int channelCount = 0; 
    266266 
    267     FilePattern fp = new FilePattern(new Location(currentId).getAbsoluteFile()); 
    268     AxisGuesser guesser = new AxisGuesser(fp, "XYTZC", 1, ifds.size(), 1, true); 
    269     BigInteger[] first = fp.getFirst(); 
    270     BigInteger[] last = fp.getLast(); 
    271     BigInteger[] step = fp.getStep(); 
    272  
    273     int[] axisTypes = guesser.getAxisTypes(); 
    274267    core[0].sizeZ = 1; 
    275268    core[0].sizeC = tiffReaders[0].getSizeC(); 
    276  
    277269    core[0].dimensionOrder = isRGB() ? "XYC" : "XY"; 
    278270 
    279     for (int i=axisTypes.length-1; i>=0; i--) { 
    280       int size = last[i].subtract(first[i]).divide(step[i]).intValue() + 1; 
    281       if (axisTypes[i] == AxisGuesser.Z_AXIS) { 
    282         if (getDimensionOrder().indexOf("Z") == -1) { 
    283           core[0].dimensionOrder += "Z"; 
    284         } 
    285         core[0].sizeZ *= size; 
    286       } 
    287       else if (axisTypes[i] == AxisGuesser.C_AXIS) { 
    288         if (getDimensionOrder().indexOf("C") == -1) { 
    289           core[0].dimensionOrder += "C"; 
    290         } 
    291         core[0].sizeC *= size; 
     271    if (isGroupFiles()) { 
     272      FilePattern fp = 
     273        new FilePattern(new Location(currentId).getAbsoluteFile()); 
     274      AxisGuesser guesser = 
     275        new AxisGuesser(fp, "XYTZC", 1, ifds.size(), 1, true); 
     276      BigInteger[] first = fp.getFirst(); 
     277      BigInteger[] last = fp.getLast(); 
     278      BigInteger[] step = fp.getStep(); 
     279 
     280      int[] axisTypes = guesser.getAxisTypes(); 
     281 
     282      for (int i=axisTypes.length-1; i>=0; i--) { 
     283        int size = last[i].subtract(first[i]).divide(step[i]).intValue() + 1; 
     284        if (axisTypes[i] == AxisGuesser.Z_AXIS) { 
     285          if (getDimensionOrder().indexOf("Z") == -1) { 
     286            core[0].dimensionOrder += "Z"; 
     287          } 
     288          core[0].sizeZ *= size; 
     289        } 
     290        else if (axisTypes[i] == AxisGuesser.C_AXIS) { 
     291          if (getDimensionOrder().indexOf("C") == -1) { 
     292            core[0].dimensionOrder += "C"; 
     293          } 
     294          core[0].sizeC *= size; 
     295        } 
    292296      } 
    293297    } 
     
    343347    if (getDimensionOrder().indexOf("T") < 0) core[0].dimensionOrder += "T"; 
    344348 
     349    if (getSizeC() == 0) core[0].sizeC = 1; 
    345350    if (getSizeT() == 0) core[0].sizeT = 1; 
    346351    if (channelCount == 0) channelCount = 1; 
     
    435440 
    436441    Location current = new Location(currentId).getAbsoluteFile(); 
     442    if (checkSuffix(currentId, TiffReader.TIFF_SUFFIXES)) { 
     443      tiffs.add(current.getAbsolutePath()); 
     444    } 
     445    if (!isGroupFiles()) return; 
     446 
    437447    Location parent = current.getParentFile(); 
    438448 
     
    465475    String[] files = timestamps.keySet().toArray(new String[timestamps.size()]); 
    466476    Arrays.sort(files); 
    467  
    468     if (checkSuffix(currentId, TiffReader.TIFF_SUFFIXES)) { 
    469       tiffs.add(current.getAbsolutePath()); 
    470     } 
    471477 
    472478    for (String file : files) { 
  • trunk/components/bio-formats/src/loci/formats/in/TiffReader.java

    r5668 r5729  
    147147    // check for another file with the same name 
    148148 
    149     Location currentFile = new Location(currentId).getAbsoluteFile(); 
    150     String currentName = currentFile.getName(); 
    151     Location directory = currentFile.getParentFile(); 
    152     String[] files = directory.list(true); 
    153     for (String file : files) { 
    154       String name = file; 
    155       if (name.indexOf(".") != -1) name = name.substring(0, name.indexOf(".")); 
    156  
    157       if (currentName.startsWith(name) && checkSuffix(name, COMPANION_SUFFIXES)) 
    158       { 
    159         companionFile = new Location(directory, file).getAbsolutePath(); 
    160         break; 
     149    if (isGroupFiles()) { 
     150      Location currentFile = new Location(currentId).getAbsoluteFile(); 
     151      String currentName = currentFile.getName(); 
     152      Location directory = currentFile.getParentFile(); 
     153      String[] files = directory.list(true); 
     154      for (String file : files) { 
     155        String name = file; 
     156        if (name.indexOf(".") != -1) { 
     157          name = name.substring(0, name.indexOf(".")); 
     158        } 
     159 
     160        if (currentName.startsWith(name) && 
     161          checkSuffix(name, COMPANION_SUFFIXES)) 
     162        { 
     163          companionFile = new Location(directory, file).getAbsolutePath(); 
     164          break; 
     165        } 
    161166      } 
    162167    } 
  • trunk/components/bio-formats/src/loci/formats/tiff/TiffParser.java

    r5621 r5729  
    289289      int tag = in.readShort() & 0xffff; 
    290290      int type = in.readShort() & 0xffff; 
    291       // BigTIFF case is a slight hack 
     291      // BigTIFF case is a slight hack because the count could be 
     292      // greater than Integer.MAX_VALUE 
    292293      int count = bigTiff ? (int) (in.readLong() & 0xffffffff) : in.readInt(); 
     294      int bpe = IFD.getIFDTypeLength(type); 
    293295 
    294296      LogTools.debug("getIFDs: read " + IFD.getIFDTagName(tag) + 
    295297        " (type=" + IFD.getIFDTypeName(type) + "; count=" + count + ")"); 
    296       if (count < 0) return null; // invalid data 
     298      if (count < 0 || bpe <= 0) { 
     299        // invalid data 
     300        in.skipBytes(bytesPerEntry - 4 - (bigTiff ? 8 : 4)); 
     301        continue; 
     302      } 
    297303      Object value = null; 
    298  
    299       int bpe = IFD.getIFDTypeLength(type); 
    300       if (bpe <= 0) return null; // invalid data 
    301304 
    302305      if (count > threshhold / bpe) { 
  • trunk/components/common/src/loci/common/DataTools.java

    r5483 r5729  
    737737  // -- Strings -- 
    738738 
     739  /** Convert byte array to a hexadecimal string. */ 
     740  public static String getHexString(byte[] b) { 
     741    StringBuffer sb = new StringBuffer(); 
     742    for (int i=0; i<b.length; i++) { 
     743      String a = Integer.toHexString(b[i] & 0xff); 
     744      if (a.length() == 1) sb.append("0"); 
     745      sb.append(a); 
     746    } 
     747    return sb.toString(); 
     748  } 
     749 
    739750  /** Remove null bytes from a string. */ 
    740751  public static String stripString(String toStrip) { 
  • trunk/components/common/src/loci/common/RandomAccessInputStream.java

    r5713 r5729  
    521521    } 
    522522 
     523    // case 1: 
     524    // file is larger than 2 GB, so automatically use the RAF 
     525 
     526    if (length() > Integer.MAX_VALUE && raf != null) { 
     527      raf.seek(afp); 
     528      return RAF; 
     529    } 
     530 
    523531    // ensure that the DIS' file pointer is actually equal to fp before 
    524532    // we try to read from the DIS 
  • trunk/components/loci-plugins/src/loci/plugins/importer/Importer.java

    r5693 r5729  
    245245    boolean showOMEXML = options.isShowOMEXML(); 
    246246    boolean groupFiles = options.isGroupFiles(); 
     247    boolean ungroupFiles = options.isUngroupFiles(); 
    247248    boolean concatenate = options.isConcatenate(); 
    248249    boolean specifyRanges = options.isSpecifyRanges(); 
     
    265266      base.setNormalized(true); 
    266267      base.setOriginalMetadataPopulated(true); 
     268      base.setGroupFiles(!ungroupFiles); 
    267269      base.setId(id); 
    268270 
  • trunk/components/loci-plugins/src/loci/plugins/importer/ImporterDialog.java

    r5334 r5729  
    8080  protected Checkbox customColorizeBox; 
    8181  protected Checkbox groupFilesBox; 
     82  protected Checkbox ungroupFilesBox; 
    8283  protected Checkbox mergeChannelsBox; 
    8384  protected Checkbox openAllSeriesBox; 
     
    122123    addCheckbox(gd, ImporterOptions.KEY_CUSTOM_COLORIZE); 
    123124    addCheckbox(gd, ImporterOptions.KEY_GROUP_FILES); 
     125    addCheckbox(gd, ImporterOptions.KEY_UNGROUP_FILES); 
    124126    addCheckbox(gd, ImporterOptions.KEY_MERGE_CHANNELS); 
    125127    addCheckbox(gd, ImporterOptions.KEY_OPEN_ALL_SERIES); 
     
    171173      customColorizeBox = boxes.get(4); 
    172174      groupFilesBox     = boxes.get(5); 
    173       mergeChannelsBox  = boxes.get(6); 
    174       openAllSeriesBox  = boxes.get(7); 
    175       //quietBox        = boxes.get(8); 
    176       recordBox         = boxes.get(9); 
    177       showMetadataBox   = boxes.get(10); 
    178       showOMEXMLBox     = boxes.get(11); 
    179       showROIsBox       = boxes.get(12); 
    180       specifyRangesBox  = boxes.get(13); 
    181       splitZBox         = boxes.get(14); 
    182       splitTBox         = boxes.get(15); 
    183       splitCBox         = boxes.get(16); 
     175      ungroupFilesBox   = boxes.get(6); 
     176      mergeChannelsBox  = boxes.get(7); 
     177      openAllSeriesBox  = boxes.get(8); 
     178      //quietBox        = boxes.get(9); 
     179      recordBox         = boxes.get(10); 
     180      showMetadataBox   = boxes.get(11); 
     181      showOMEXMLBox     = boxes.get(12); 
     182      showROIsBox       = boxes.get(13); 
     183      specifyRangesBox  = boxes.get(14); 
     184      splitZBox         = boxes.get(15); 
     185      splitTBox         = boxes.get(16); 
     186      splitCBox         = boxes.get(17); 
    184187      stackFormatChoice = choices.get(0); 
    185188      stackFormatLabel  = labels.get(0); 
    186189      stackOrderChoice  = choices.get(1); 
    187190      stackOrderLabel   = labels.get(1); 
    188       swapDimsBox       = boxes.get(17); 
    189       virtualBox        = boxes.get(18); 
     191      swapDimsBox       = boxes.get(18); 
     192      virtualBox        = boxes.get(19); 
    190193    } 
    191194    verifyOptions(null); 
     
    199202    infoTable.put(customColorizeBox, options.getCustomColorizeInfo()); 
    200203    infoTable.put(groupFilesBox, options.getGroupFilesInfo()); 
     204    infoTable.put(ungroupFilesBox, options.getUngroupFilesInfo()); 
    201205    infoTable.put(mergeChannelsBox, options.getMergeChannelsInfo()); 
    202206    infoTable.put(openAllSeriesBox, options.getOpenAllSeriesInfo()); 
     
    229233      // Dataset organization | Memory management 
    230234      "9dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, " + 
     235      "3dlu, pref, " + 
    231236      // Color options        | Split into separate windows 
    232237      "9dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, 3dlu, pref, " + 
     
    259264    builder.add(groupFilesBox, xyw(cc, 1, row, 3)); 
    260265    row += 2; 
     266    builder.add(ungroupFilesBox, xyw(cc, 1, row, 3)); 
     267    row += 2; 
    261268    builder.add(swapDimsBox, xyw(cc, 1, row, 3)); 
    262269    row += 2; 
     
    295302    row += 2; 
    296303    builder.add(cropBox, xyw(cc, 5, row, 1)); 
    297     row += 2; 
     304    row += 4; 
    298305    builder.addSeparator("Split into separate windows", cc.xy(5, row)); 
    299306    row += 2; 
     
    327334    options.setCustomColorize(gd.getNextBoolean()); 
    328335    options.setGroupFiles(gd.getNextBoolean()); 
     336    options.setUngroupFiles(gd.getNextBoolean()); 
    329337    options.setMergeChannels(gd.getNextBoolean()); 
    330338    options.setOpenAllSeries(gd.getNextBoolean()); 
     
    400408    boolean customColorizeEnabled = customColorizeBox.isEnabled(); 
    401409    boolean groupFilesEnabled = groupFilesBox.isEnabled(); 
     410    boolean ungroupFilesEnabled = ungroupFilesBox.isEnabled(); 
    402411    boolean mergeChannelsEnabled = mergeChannelsBox.isEnabled(); 
    403412    boolean openAllSeriesEnabled = openAllSeriesBox.isEnabled(); 
     
    420429    boolean isCustomColorize = customColorizeBox.getState(); 
    421430    boolean isGroupFiles = groupFilesBox.getState(); 
     431    boolean isUngroupFiles = ungroupFilesBox.getState(); 
    422432    boolean isMergeChannels = mergeChannelsBox.getState(); 
    423433    boolean isOpenAllSeries = openAllSeriesBox.getState(); 
     
    488498    else if (src == stackFormatChoice && isStackBrowser) isGroupFiles = true; 
    489499 
     500    // ungroupFilesBox 
     501    // NB: no other options affect ungroupFilesBox 
     502 
    490503    // swapDimsBox 
    491504    // NB: no other options affect swapDimsBox 
     
    562575    customColorizeBox.setEnabled(customColorizeEnabled); 
    563576    groupFilesBox.setEnabled(groupFilesEnabled); 
     577    ungroupFilesBox.setEnabled(ungroupFilesEnabled); 
    564578    mergeChannelsBox.setEnabled(mergeChannelsEnabled); 
    565579    openAllSeriesBox.setEnabled(openAllSeriesEnabled); 
     
    582596    customColorizeBox.setState(isCustomColorize); 
    583597    groupFilesBox.setState(isGroupFiles); 
     598    ungroupFilesBox.setState(isUngroupFiles); 
    584599    mergeChannelsBox.setState(isMergeChannels); 
    585600    openAllSeriesBox.setState(isOpenAllSeries); 
     
    607622        customColorizeBox, 
    608623        groupFilesBox, 
     624        ungroupFilesBox, 
    609625        mergeChannelsBox, 
    610626        openAllSeriesBox, 
  • trunk/components/loci-plugins/src/loci/plugins/importer/ImporterOptions.java

    r5246 r5729  
    5656  public static final String KEY_FORCE_THUMBS    = "forceThumbnails"; 
    5757  public static final String KEY_GROUP_FILES     = "groupFiles"; 
     58  public static final String KEY_UNGROUP_FILES   = "ungroupFiles"; 
    5859  public static final String KEY_ID              = "id"; 
    5960  public static final String KEY_LOCATION        = "location"; 
     
    195196  public void setGroupFiles(boolean b) { setValue(KEY_GROUP_FILES, b); } 
    196197 
     198  // ungroupFiles 
     199  public String getUngroupFilesInfo() { return getInfo(KEY_UNGROUP_FILES); } 
     200  public boolean isUngroupFiles() { return isSet(KEY_UNGROUP_FILES); } 
     201  public void setUngroupFiles(boolean b) { setValue(KEY_UNGROUP_FILES, b); } 
     202 
    197203  // id 
    198204  public String getIdInfo() { return getInfo(KEY_ID); } 
  • trunk/components/loci-plugins/src/loci/plugins/importer/importer-options.txt

    r5140 r5729  
    107107  case it is incorrect. Bio-Formats will then import all 12 x 9 = 108    \ 
    108108  planes of the dataset. 
     109default = false 
     110 
     111[ungroupFiles] 
     112type = boolean 
     113label = Open_files individually 
     114info = <b>Open files individually</b> - \ 
     115  Treats each file as an individual file, instead of attempting to group \ 
     116  it together with other files that belong to a larger dataset. 
    109117default = false 
    110118 
Note: See TracChangeset for help on using the changeset viewer.