import math
import matplotlib

import matplotlib.pyplot as plt
import numpy as np
import numexpr as ne 

import openpyxl as op
from tkinter import ttk

from matplotlib.figure import Figure



class Graph:
    def __init__(self,check_butt_cond,x, y,lab="f(x)",xl="x",yl="y",linetype='k',lims=False):
        #словарь из настроек?



        self.__x=x
        self.__y=y
        self.__fig =Figure(figsize=(5,4),dpi=100)
        self.__chb=check_butt_cond
        self.__ax=self.__fig.add_subplot()



        
        #сделать отслеживание за состояние кнопок потом
        """
        if self.__chb==0:
            if len(self.__x)>1:
                for i in range(len(self.__x)):
                    n=int(f"{len(self.__x)}1{i+1}")
                
                    axes=self.__fig.add_subplot(n)
                    axes.set_title(f"График №{i+1}")
                    c=axes.plot(self.__x[i],self.__y[i],label=lab,linestyle=linetype,)
            else:
                line=self.__ax.plot(self.__x,self.__y,label=lab,)

        else:
            if len(self.__x)>1: #много графиков на одном холсте
                for i in range(len(self.__x)):
                    self.__ax.plot(self.__x[i],self.__y[i])
                    
            
            else:

                line=self.__ax.plot(self.__x,self.__y,label=lab,)
        """
        self.draw_n_func_plot()
        self.draw_one_func()
        self.draw_subplots()



        self.__ax.set_xlabel(xl)
        self.__ax.set_ylabel(yl)
        

    def add_vline( ax,x=0, ymin=0, ymax=1):
        ax.axvline(x,ymin,ymax)
        #принимаем плот и на нем же рисуем

    
    def add_hline(ax,y=0, xmin=0, xmax=1,):
        ax.axhline(y, xmin, xmax)
        

    def draw_n_func_plot(self,): #много графиков на одном холсте
        if self.__chb==1 and len(self.__x)>1:
            for i in range(len(self.__x)):
                self.__ax.plot(self.__x[i],self.__y[i])


    def draw_one_func(self,lab="f(x)"):
        if len(self.__x)==1:
            self.__ax.plot(self.__x,self.__y,label=lab,)

    def draw_subplots(self,lab="f(x)"):
        
        if self.__chb==0 and len(self.__x)>1:
            for i in range(len(self.__x)):
                n=int(f"{len(self.__x)}1{i+1}")
            
                axes=self.__fig.add_subplot(n)
                axes.set_title(f"График №{i+1}")
                axes.plot(self.__x[i],self.__y[i],label=lab,)
    @property
    def figure(self,):
        return self.__fig