//+------------------------------------------------------------------+ //| 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 { private: CTabs m_tabs; CTabUtilsGeneral m_sec_general; CTabUtilsClean m_sec_clean; CTabUtilsEncryther m_sec_enc; CTabUtilsDecrypther m_sec_dec; public: CTabUtils(void) : CGuiBaseComponent("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