from ij import IJ
from ij.io import FileSaver
from ConfigParser import SafeConfigParser
from datetime import datetime
import csv

def density_recalc():
    dt_string = datetime.utcnow().strftime("%y%m%d%H%M%S")

    # Config setup
    if IJ.isWindows() == True:
        plugin_wd = IJ.getDirectory("plugins").replace("\\", "/") + "InVitro_Cellpose/scripts/"
    else:
        plugin_wd = IJ.getDirectory("plugins") + "InVitro_Cellpose/scripts/"
    
    config = SafeConfigParser()
    config.read(plugin_wd + 'plugin_config.ini')
    log_folder = plugin_wd + "logs/"
    logging_bool = config.getboolean('default_settings','logging')
   
    current = IJ.getImage()
    session_id = current.getProp("SessionID")
    img_name = current.getShortTitle()
    overlay = current.getOverlay()
    current_size = overlay.size()
    IJ.log("Updated " + img_name + " cell count: " + str(current_size))

    current.setProp("Manual_Timestamp", dt_string)
    current.setProp("Manual_Count", str(current_size))
    # IJ.log("Updated " + img_name + " density: " + str(density_calc) + " cells/mm^2")
    
    if logging_bool:
        IJ.log("Log ID: %s \n" % dt_string)
        log_img = FileSaver(current)
        # log_img.saveAsTiff(log_folder + "manual_"+ img_name + '_' + dt_string + ".tiff")   
        log_img.saveAsTiff("%s%s_manual_%s.tiff" % (log_folder, session_id, img_name))

        iterator = overlay.iterator()
        with open("%s%s_manual_%s.csv" % (log_folder, session_id, img_name), "w") as csvfile:
            log_writer = csv.writer(csvfile, delimiter=',', dialect="excel")
            while iterator.hasNext():
                write_out = str(iterator.next())[13:].strip('[]')
                x = int(write_out.split(',')[0])
                y = int(write_out.split(',')[1][3:])
                log_writer.writerow([x,y])                

if __name__ in ['__builtin__', '__main__']:
    density_recalc()
