AiDataTaskRuner/UI/TabUtil/Main.mqh
Nique_372 fbb4f76e57
2026-03-27 22:30:19 -05:00

243 lines
7.9 KiB
MQL5

//+------------------------------------------------------------------+
//| Main.mqh |
//| Copyright 2026, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property strict
#ifndef AIDATATASKRUNER_UI_TABUTIL_MAIN_MQH
#define AIDATATASKRUNER_UI_TABUTIL_MAIN_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//--- Incluimos el decypther este a su vez ya incluye a los demas
#include "Decrypter.mqh"
//---
#define AIDATATASKRUNER_TABUITLS_TABS_TOTAL (4)
//---
#define AIDATATASKRUNER_TABUITLS_TAB_GENERAL (0)
#define AIDATATASKRUNER_TABUITLS_TAB_CLEAN (1)
#define AIDATATASKRUNER_TABUITLS_TAB_ENC (2)
#define AIDATATASKRUNER_TABUITLS_TAB_DEC (3)
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CTabUtils : public CGuiBaseComponent<CLoggerBase>
{
private:
CTabs m_tabs;
CTabUtilsGeneral m_sec_general;
CTabUtilsClean m_sec_clean;
CTabUtilsEncryther m_sec_enc;
CTabUtilsDecrypther m_sec_dec;
public:
CTabUtils(void) : CGuiBaseComponent<CLoggerBase>("CTabUtils") {}
~CTabUtils(void) {}
//---
bool Create(CWndCreate* p, CWindow& main_window, int top_gap, int left_gap, int right_gap, int bottom_gap);
//---
void OnLenguajeChange() override final;
bool OnClickButtom(const long lparam);
bool OnComboxItemClick(const long lparam);
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTabUtils::Create(CWndCreate *p, CWindow &main_window, int top_gap, int left_gap, int right_gap, int bottom_gap)
{
//---
top_gap += 24;
left_gap += 4;
right_gap += 4;
bottom_gap += 4;
//--- Creacion del control tabs
// header
string tab_header[];
const string str_header = m_language[AIDATATASKRUNNERL_COMPONENT_NAME(m_tabs)];
if(!StrTo::CstArray(tab_header, str_header, '|', true))
{
FastLog(FUNCION_ACTUAL, ERROR_TEXT, "Fallo al hacer str to array str");
return false;
}
ArrayResize(tab_header, AIDATATASKRUNER_TABUITLS_TABS_TOTAL); // trim
// Colores
color clrs_tab_label[AIDATATASKRUNER_TABUITLS_TABS_TOTAL] =
{
AIDATATASKRUNER_COLOR_TEXT_SECONDARY,
AIDATATASKRUNER_COLOR_TEXT_SECONDARY,
AIDATATASKRUNER_COLOR_TEXT_SECONDARY,
AIDATATASKRUNER_COLOR_TEXT_SECONDARY
};
color clrs_tab_label_pressed[AIDATATASKRUNER_TABUITLS_TABS_TOTAL] =
{
AIDATATASKRUNER_COLOR_ACCENT,
AIDATATASKRUNER_COLOR_ACCENT,
AIDATATASKRUNER_COLOR_ACCENT,
AIDATATASKRUNER_COLOR_ACCENT
};
//---
int width[AIDATATASKRUNER_TABUITLS_TABS_TOTAL] = { 90, 90, 90, 90 };
m_tabs.BackColor(AIDATATASKRUNER_COLOR_FONDO_SUBTAB);
m_tabs.BackColorHover(AIDATATASKRUNER_COLOR_FONDO_SUBTAB_HOVER);
m_tabs.BackColorPressed(AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED);
m_tabs.BackColorLocked(AIDATATASKRUNER_COLOR_FONDO_SUBTAB_LOCKED);
m_tabs.BorderColor(AIDATATASKRUNER_COLOR_BORDER);
m_tabs.BorderColorHover(AIDATATASKRUNER_COLOR_BORDER_HOVER);
m_tabs.BorderColorPressed(AIDATATASKRUNER_COLOR_BORDER_HOVER);
m_tabs.BorderColorLocked(AIDATATASKRUNER_COLOR_BORDER);
// m_tabs.LabelColor(AIDATATASKRUNER_COLOR_TEXT_SECONDARY);
// m_tabs.LabelColorLocked(AIDATATASKRUNER_COLOR_TEXT_LOCKED);
// Creacion
if(!p.CreateTabs(m_tabs, main_window, 0, m_base_tab, m_base_tab_idx, left_gap, top_gap, 0, 0, tab_header,
width, clrs_tab_label, clrs_tab_label_pressed,
TABS_TOP, true, true, right_gap, bottom_gap))
{
AIDATATASKRUNER_ERROR_CREATION(m_tabs);
return false;
}
//---
//top_gap += 5;
//---
m_sec_general.AddLogFlags(LogFlags());
m_sec_general.SetInitValues(m_language, &m_tabs, AIDATATASKRUNER_TABUITLS_TAB_GENERAL);
if(!m_sec_general.Create(p, main_window, top_gap, left_gap, right_gap, bottom_gap))
{
AIDATATASKRUNER_ERROR_CREATION(m_sec_general);
return false;
}
//---
m_sec_clean.AddLogFlags(LogFlags());
m_sec_clean.SetGeneral(&m_sec_general);
m_sec_clean.SetInitValues(m_language, &m_tabs, AIDATATASKRUNER_TABUITLS_TAB_CLEAN);
if(!m_sec_clean.Create(p, main_window, top_gap, left_gap, right_gap, bottom_gap))
{
AIDATATASKRUNER_ERROR_CREATION(m_sec_clean);
return false;
}
//---
m_sec_enc.AddLogFlags(LogFlags());
m_sec_enc.SetGeneral(&m_sec_general);
m_sec_enc.SetInitValues(m_language, &m_tabs, AIDATATASKRUNER_TABUITLS_TAB_ENC);
if(!m_sec_enc.Create(p, main_window, top_gap, left_gap, right_gap, bottom_gap))
{
AIDATATASKRUNER_ERROR_CREATION(m_sec_enc);
return false;
}
//---
m_sec_dec.AddLogFlags(LogFlags());
m_sec_dec.SetGeneral(&m_sec_general);
m_sec_dec.SetInitValues(m_language, &m_tabs, AIDATATASKRUNER_TABUITLS_TAB_DEC);
if(!m_sec_dec.Create(p, main_window, top_gap, left_gap, right_gap, bottom_gap))
{
AIDATATASKRUNER_ERROR_CREATION(m_sec_dec);
return false;
}
//---
return true;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CTabUtils::OnLenguajeChange(void)
{
//--- Actualizacion de las tabs
string tab_header[];
const string str_header = m_language[AIDATATASKRUNNERL_COMPONENT_NAME(m_tabs)];
if(!StrTo::CstArray(tab_header, str_header, '|', true))
{
FastLog(FUNCION_ACTUAL, ERROR_TEXT, "Fallo al hacer str to array str");
return;
}
const int t = m_tabs.TabsTotal(); // Solo iteramos sobre las que ya existen (es el total real si hay mas tamñao se omite)
for(int i = 0; i < t; i++)
m_tabs.Text(i, tab_header[i]);
m_tabs.Update();
//---
m_sec_general.OnLenguajeChange();
m_sec_clean.OnLenguajeChange();
m_sec_enc.OnLenguajeChange();
m_sec_dec.OnLenguajeChange();
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTabUtils::OnClickButtom(const long lparam)
{
switch(m_tabs.SelectedTab())
{
//---
case AIDATATASKRUNER_TABUITLS_TAB_GENERAL:
return m_sec_general.OnClickButtom(lparam);
//---
case AIDATATASKRUNER_TABUITLS_TAB_CLEAN:
return m_sec_clean.OnClickButtom(lparam);
//---
case AIDATATASKRUNER_TABUITLS_TAB_ENC:
return m_sec_enc.OnClickButtom(lparam);
//---
case AIDATATASKRUNER_TABUITLS_TAB_DEC:
return m_sec_dec.OnClickButtom(lparam);
}
return false;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTabUtils::OnComboxItemClick(const long lparam)
{
switch(m_tabs.SelectedTab())
{
//---
case AIDATATASKRUNER_TABUITLS_TAB_GENERAL:
return m_sec_general.OnComboxItemClick(lparam);
//---
case AIDATATASKRUNER_TABUITLS_TAB_CLEAN:
return false;
//---
case AIDATATASKRUNER_TABUITLS_TAB_ENC:
return false;
//---
case AIDATATASKRUNER_TABUITLS_TAB_DEC:
return false;
}
return false;
}
//+------------------------------------------------------------------+
#endif // AIDATATASKRUNER_UI_TABUTIL_MAIN_MQH