from .Plotter import Plotter
from .Args import Args
from pathlib import PurePath 
import natsort
import os

manual_plot=False
save_result=True

def dump(filename, var=[None], mval=[None]):
    Plot = Plotter()
    args = Args([filename], Plot.dump, var, mval, oname=[None], out=[None])

    Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
    Plot.dump()

def plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None], min_y = None, max_y = None, transpose = None):
    Plot = Plotter()
    args = Args([filename], Plot.plot, var=var, mval=mval, oname=oname, out=out, transpose = transpose)
    Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
    Plot.plot()

def ani_plot(filename, out = './', oname = 'fig.gif', var=[None], mval=[None], min_y = None, max_y = None, transpose = None):
    pp = str(PurePath(filename).parent) + '/'
    name = str(PurePath(filename).name )
    command = 'find ' + pp + ' -name ' + "'" + name + "'"
    output_stream = os.popen(command)
    out_res = output_stream.read().split('\n')[0:-1]
    output_stream.close()
    names = natsort.natsorted(out_res,reverse=False)

    Plot = Plotter()
    args = Args(names, Plot.ani_plot, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y, transpose = transpose)
    Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
    Plot.ani_plot()

def plot_contour(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None, transpose = None):
    Plot = Plotter()
    args = Args([filename], Plot.plot_contour, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y, transpose=transpose)
    Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
    Plot.plot_contour()

def ani_plot_contour(filename, out = './', oname = [None], var=[None], mval=[None], min_y = None, max_y = None, transpose = None):
    pp = str(PurePath(filename).parent) + '/'
    name = str(PurePath(filename).name )
    command = 'find ' + pp + ' -name ' + "'" + name + "'"
    output_stream = os.popen(command)
    out_res = output_stream.read().split('\n')[0:-1]
    output_stream.close()
    names = natsort.natsorted(out_res,reverse=False)

    Plot = Plotter()
    args = Args(names, Plot.ani_plot_contour, var=var, mval=mval, oname=oname, out=out, min_y=min_y, max_y=max_y, transpose = transpose)
    Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
    Plot.ani_plot_contour()

def avg_plot(filename, out = './', oname = 'fig.png', var=[None], mval=[None], transpose = None):
    Plot = Plotter()
    args = Args([filename], Plot.avg_plot, var=var, mval=mval, oname=oname, out=out, transpose = None)
    Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
    Plot.avg_plot()

def plot_diff(filename, ndim, out = './', oname = 'fig.png', var=[None], mval=[None], transpose = None):
    Plot = Plotter()
    args = Args(filename, Plot.plot_diff, var=var, mval=mval, oname=oname, out=out, ndim=ndim, transpose = None)
    Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
    Plot.plot_diff()

def get_data(filename, ndim):
    Plot = Plotter()
    args = Args([filename], Plot.get_data, ndim=ndim)
    Plot.set(args, if_manual_plot=manual_plot, if_save_result=save_result)
    data = Plot.get_data()
    return data