//+------------------------------------------------------------------+
//|                                                   2interface.mq4 |
//|                        Copyright 2022, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#include <Controls\Dialog.mqh>
CAppDialog OurInterface ;
#include <Controls\Button.mqh>
CButton GainsboroButton,KhakiButton,DarkSlateGrayButton,WhiteButton,max5Button;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
          ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
          OurInterface.Create(0,"OurInterface",0,50,50,540,150);
          OurInterface.Caption("2Practica de inteface --- Intertar poner indicador");
          GainsboroButton.Create(0,"GainsboroButton",0,20,7,90,20);
          GainsboroButton.Text("Gainsboro");
          OurInterface.Add(GainsboroButton);                                                //  Esta funcion hace que el boton este dentro del panel
          
          KhakiButton.Create(0,"KhakiButton",0,100,7,170,20);
          KhakiButton.Text("Khaki");
          OurInterface.Add(KhakiButton);
          
          DarkSlateGrayButton.Create(0,"DarkSlateGrayButton",0,180,7,250,20);
          DarkSlateGrayButton.Text("DarkSlate");
          OurInterface.Add(DarkSlateGrayButton);
          
          WhiteButton.Create(0,"WhiteButton",0,260,7,330,20);
          WhiteButton.Text("White");
          OurInterface.Add(WhiteButton);
          
          max5Button.Create(0,"max5Button",0,340,7,410,20);
          max5Button.Text("ma x 5");
          OurInterface.Add(max5Button);
          
          OurInterface.Run();                                                             // Esta funcion hace que se pueda reducir el panel u eliminar del grafico
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {

   OurInterface.OnEvent(id,lparam,dparam,sparam);
   if(GainsboroButton.Contains(lparam,dparam))
      GainsboroButton.Pressed(true);
   else
      GainsboroButton.Pressed(false); 
    if(KhakiButton.Contains(lparam,dparam))
      KhakiButton.Pressed(true);
   else
      KhakiButton.Pressed(false); //    ***
      
   if(DarkSlateGrayButton.Contains(lparam,dparam))
      DarkSlateGrayButton.Pressed(true);
   else
      DarkSlateGrayButton.Pressed(false);  
      
   if(WhiteButton.Contains(lparam,dparam))
      WhiteButton.Pressed(true);
   else
      WhiteButton.Pressed(false);    
      
   if(max5Button.Contains(lparam,dparam))
      max5Button.Pressed(true);
   else
      max5Button.Pressed(false);      
          //  *** ///
                  
   if(id==CHARTEVENT_OBJECT_CLICK&&sparam=="GainsboroButton")
          ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrGainsboro);
          
   if(id==CHARTEVENT_OBJECT_CLICK&&sparam=="KhakiButton")
          ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrKhaki);  //  ***
          
     if(id==CHARTEVENT_OBJECT_CLICK&&sparam=="DarkSlateGrayButton")
          ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrDarkSlateGray);
    
    if(id==CHARTEVENT_OBJECT_CLICK&&sparam=="WhiteButton")
          ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrWhite);
          
            
 //          if (id==CHARTEVENT_OBJECT_CLICK && sparam==DisplayID)
          // ChartSetInteger(0,CHART_COLOR_BACKGROUND,max5Button);
  //          ObjectSetString(ChartID(),DisplayID,OBJPROP_TEXT,"max5Button"+newState);
                  
   if(id==CHARTEVENT_CHART_CHANGE)
    {      
      int rightEdge = (int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS);
      if(OurInterface.Right()>rightEdge)
      {                                          
      OurInterface.Move(rightEdge-210,0);
      }
      
      }
      
  }
  

//+------------------------------------------------------------------+

void OnDeinit(const int reason)
{
     OurInterface.Destroy(reason);                //    Esta funcion hace que el panel se pueda mover con el mousse
}
  

