2026-03-27 17:56:22 -05:00 | | | //+------------------------------------------------------------------+
|
2026-03-27 12:33:32 -05:00 | | | //| Main.mqh |
|
| | | //| Copyright 2026, MetaQuotes Ltd. |
|
| | | //| https://www.mql5.com |
|
| | | //+------------------------------------------------------------------+
|
| | | #property copyright "Copyright 2026, MetaQuotes Ltd."
|
| | | #property link "https://www.mql5.com"
|
| | | #property strict
|
| | |
|
2026-03-27 17:56:22 -05:00 | | | #ifndef AIDATATASKRUNER_UI_TABUTIL_MAIN_MQH
|
| | | #define AIDATATASKRUNER_UI_TABUTIL_MAIN_MQH
|
2026-03-27 12:33:32 -05:00 | | |
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-03-27 17:56:22 -05:00 | | | //--- Incluimos el decypther este a su vez ya incluye a los demas
|
| | | #include "Decrypter.mqh"
|
2026-03-27 12:33:32 -05:00 | | |
|
| | | //---
|
2026-03-27 17:56:22 -05:00 | | | #define AIDATATASKRUNER_TABUITLS_TABS_TOTAL (4)
|
2026-03-27 12:33:32 -05:00 | | |
|
| | | //---
|
2026-03-27 17:56:22 -05:00 | | | #define AIDATATASKRUNER_TABUITLS_TAB_GENERAL (0)
|
| | | #define AIDATATASKRUNER_TABUITLS_TAB_CLEAN (1)
|
| | | #define AIDATATASKRUNER_TABUITLS_TAB_ENC (2)
|
| | | #define AIDATATASKRUNER_TABUITLS_TAB_DEC (3)
|
2026-03-27 12:33:32 -05:00 | | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | class CTabUtils : public CGuiBaseComponent<CLoggerBase>
|
| | | {
|
| | | private:
|
2026-03-27 17:56:22 -05:00 | | | CTabs m_tabs;
|
2026-06-03 22:07:50 -05:00 | | | TSN::CJsonParser m_json_parser;
|
2026-03-27 17:56:22 -05:00 | | | CTabUtilsGeneral m_sec_general;
|
| | | CTabUtilsClean m_sec_clean;
|
| | | CTabUtilsEncryther m_sec_enc;
|
| | | CTabUtilsDecrypther m_sec_dec;
|
2026-03-27 12:33:32 -05:00 | | |
|
| | |
|
2026-03-27 17:56:22 -05:00 | | | public:
|
| | | CTabUtils(void) : CGuiBaseComponent<CLoggerBase>("CTabUtils") {}
|
| | | ~CTabUtils(void) {}
|
2026-03-27 12:33:32 -05:00 | | |
|
| | |
|
| | | //---
|
2026-03-27 17:56:22 -05:00 | | | bool Create(CWndCreate* p, CWindow& main_window, int top_gap, int left_gap, int right_gap, int bottom_gap);
|
2026-03-27 12:33:32 -05:00 | | |
|
| | | //---
|
| | | void OnLenguajeChange() override final;
|
| | | bool OnClickButtom(const long lparam);
|
| | | bool OnComboxItemClick(const long lparam);
|
| | | };
|
2026-03-27 17:56:22 -05:00 | | |
|
2026-03-27 12:33:32 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-03-27 17:56:22 -05:00 | | | bool CTabUtils::Create(CWndCreate *p, CWindow &main_window, int top_gap, int left_gap, int right_gap, int bottom_gap)
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | //---
|
| | | 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;
|
2026-03-27 12:33:32 -05:00 | | | }
|
2026-03-27 17:56:22 -05:00 | | | ArrayResize(tab_header, AIDATATASKRUNER_TABUITLS_TABS_TOTAL); // trim
|
2026-03-27 12:33:32 -05:00 | | |
|
2026-03-27 17:56:22 -05:00 | | | // Colores
|
| | | color clrs_tab_label[AIDATATASKRUNER_TABUITLS_TABS_TOTAL] =
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | 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] =
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | AIDATATASKRUNER_COLOR_ACCENT,
|
| | | AIDATATASKRUNER_COLOR_ACCENT,
|
| | | AIDATATASKRUNER_COLOR_ACCENT,
|
| | | AIDATATASKRUNER_COLOR_ACCENT
|
| | | };
|
2026-03-27 12:33:32 -05:00 | | |
|
2026-03-27 17:56:22 -05:00 | | | //---
|
| | | 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;
|
2026-03-27 12:33:32 -05:00 | | | }
|
| | |
|
2026-03-27 17:56:22 -05:00 | | | //---
|
| | | //top_gap += 5;
|
2026-03-27 12:33:32 -05:00 | | |
|
2026-03-27 17:56:22 -05:00 | | | //---
|
| | | 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))
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | AIDATATASKRUNER_ERROR_CREATION(m_sec_general);
|
| | | return false;
|
2026-03-27 12:33:32 -05:00 | | | }
|
2026-03-27 17:56:22 -05:00 | | |
|
| | | //---
|
| | | m_sec_clean.AddLogFlags(LogFlags());
|
2026-06-03 22:07:50 -05:00 | | | m_sec_clean.SetGeneral(&m_sec_general, &m_json_parser);
|
2026-03-27 17:56:22 -05:00 | | | 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))
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | AIDATATASKRUNER_ERROR_CREATION(m_sec_clean);
|
| | | return false;
|
2026-03-27 12:33:32 -05:00 | | | }
|
| | |
|
2026-03-27 17:56:22 -05:00 | | | //---
|
| | | m_sec_enc.AddLogFlags(LogFlags());
|
2026-06-03 22:07:50 -05:00 | | | m_sec_enc.SetGeneral(&m_sec_general, &m_json_parser);
|
2026-03-27 17:56:22 -05:00 | | | 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))
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | AIDATATASKRUNER_ERROR_CREATION(m_sec_enc);
|
| | | return false;
|
2026-03-27 12:33:32 -05:00 | | | }
|
2026-03-27 17:56:22 -05:00 | | |
|
| | | //---
|
| | | m_sec_dec.AddLogFlags(LogFlags());
|
2026-06-03 22:07:50 -05:00 | | | m_sec_dec.SetGeneral(&m_sec_general, &m_json_parser);
|
2026-03-27 17:56:22 -05:00 | | | 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))
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | AIDATATASKRUNER_ERROR_CREATION(m_sec_dec);
|
| | | return false;
|
2026-03-27 12:33:32 -05:00 | | | }
|
| | |
|
| | | //---
|
2026-03-27 17:56:22 -05:00 | | | return true;
|
2026-03-27 12:33:32 -05:00 | | | }
|
2026-03-27 17:56:22 -05:00 | | |
|
2026-03-27 12:33:32 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-03-27 17:56:22 -05:00 | | | void CTabUtils::OnLenguajeChange(void)
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | //--- 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))
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | FastLog(FUNCION_ACTUAL, ERROR_TEXT, "Fallo al hacer str to array str");
|
| | | return;
|
2026-03-27 12:33:32 -05:00 | | | }
|
2026-03-27 17:56:22 -05:00 | | | 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]);
|
2026-03-27 12:33:32 -05:00 | | |
|
2026-03-27 17:56:22 -05:00 | | | m_tabs.Update();
|
2026-03-27 12:33:32 -05:00 | | |
|
| | | //---
|
2026-03-27 17:56:22 -05:00 | | | m_sec_general.OnLenguajeChange();
|
| | | m_sec_clean.OnLenguajeChange();
|
| | | m_sec_enc.OnLenguajeChange();
|
| | | m_sec_dec.OnLenguajeChange();
|
| | | }
|
2026-03-27 12:33:32 -05:00 | | |
|
2026-03-27 17:56:22 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | bool CTabUtils::OnClickButtom(const long lparam)
|
| | | {
|
| | | switch(m_tabs.SelectedTab())
|
2026-03-27 12:33:32 -05:00 | | | {
|
| | | //---
|
2026-03-27 17:56:22 -05:00 | | | case AIDATATASKRUNER_TABUITLS_TAB_GENERAL:
|
| | | return m_sec_general.OnClickButtom(lparam);
|
2026-03-27 12:33:32 -05:00 | | |
|
| | | //---
|
2026-03-27 17:56:22 -05:00 | | | case AIDATATASKRUNER_TABUITLS_TAB_CLEAN:
|
| | | return m_sec_clean.OnClickButtom(lparam);
|
2026-03-27 12:33:32 -05:00 | | |
|
| | | //---
|
2026-03-27 17:56:22 -05:00 | | | case AIDATATASKRUNER_TABUITLS_TAB_ENC:
|
| | | return m_sec_enc.OnClickButtom(lparam);
|
2026-03-27 12:33:32 -05:00 | | |
|
| | | //---
|
2026-03-27 17:56:22 -05:00 | | | case AIDATATASKRUNER_TABUITLS_TAB_DEC:
|
| | | return m_sec_dec.OnClickButtom(lparam);
|
2026-03-27 12:33:32 -05:00 | | | }
|
2026-03-27 17:56:22 -05:00 | | | return false;
|
2026-03-27 12:33:32 -05:00 | | | }
|
2026-03-27 17:56:22 -05:00 | | |
|
2026-03-27 12:33:32 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-03-27 17:56:22 -05:00 | | | bool CTabUtils::OnComboxItemClick(const long lparam)
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | switch(m_tabs.SelectedTab())
|
2026-03-27 12:33:32 -05:00 | | | {
|
2026-03-27 17:56:22 -05:00 | | | //---
|
| | | case AIDATATASKRUNER_TABUITLS_TAB_GENERAL:
|
| | | return m_sec_general.OnComboxItemClick(lparam);
|
2026-03-27 12:33:32 -05:00 | | |
|
2026-03-27 17:56:22 -05:00 | | | //---
|
| | | case AIDATATASKRUNER_TABUITLS_TAB_CLEAN:
|
| | | return false;
|
2026-03-27 12:33:32 -05:00 | | |
|
2026-03-27 17:56:22 -05:00 | | | //---
|
| | | case AIDATATASKRUNER_TABUITLS_TAB_ENC:
|
| | | return false;
|
2026-03-27 12:33:32 -05:00 | | |
|
2026-03-27 17:56:22 -05:00 | | | //---
|
| | | case AIDATATASKRUNER_TABUITLS_TAB_DEC:
|
| | | return false;
|
2026-03-27 12:33:32 -05:00 | | | }
|
2026-03-27 17:56:22 -05:00 | | | return false;
|
2026-03-27 12:33:32 -05:00 | | | }
|
| | |
|
| | | //+------------------------------------------------------------------+
|
2026-03-27 17:56:22 -05:00 | | | #endif // AIDATATASKRUNER_UI_TABUTIL_MAIN_MQH
|