AiDataTaskRuner/UI/ConfigTab/ConfigTab.mqh
Nique_372 10d4cd6aeb
2026-03-13 16:15:45 -05:00

149 líneas
5,8 KiB
MQL5

//+------------------------------------------------------------------+
//| ConfigTab.mqh |
//| Copyright 2025, Niquel Mendoza. |
//| https://www.mql5.com/es/users/nique_372 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, Niquel Mendoza."
#property link "https://www.mql5.com/es/users/nique_372"
#property strict
#ifndef AIDATATASKRUNER_UI_CONFIG_CONFIGTAB_MQH
#define AIDATATASKRUNER_UI_CONFIG_CONFIGTAB_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include "..\\Defines.mqh"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define TASKRUNERAITABCONFIG_GAP_Y_TITLE_TO_COMBO (12)
//---
class CProgram;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CTaskRunerAiTabConfig : public CTaskRunnerBaseTab
{
private:
CTextLabel m_label_titulo;
CComboBox m_combox_language;
CTaskRunnerBaseTab* m_tabs[];
int m_tabs_total;
CProgram* m_base_program;
public:
CTaskRunerAiTabConfig(void) : CTaskRunnerBaseTab("CTaskRunerAiTabConfig"), m_tabs_total(0) {}
~CTaskRunerAiTabConfig(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 OnChangeComBox(const long lparam);
void SetBaseProgram(CProgram* p) { m_base_program = p; }
//---
void AddTab(CTaskRunnerBaseTab* tab)
{
ArrayResize(m_tabs, m_tabs_total + 1);
m_tabs[m_tabs_total] = tab;
m_tabs_total++;
}
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabConfig::Create(CWndCreate* p, CWindow& main_window, int top_gap, int left_gap, int right_gap, int bottom_gap)
{
//---
int x = left_gap + 5;
int y = top_gap + 5;
//---
m_label_titulo.BackColor(AIDATATASKRUNER_COLOR_FONDO_TAB_PRESSED);
m_label_titulo.LabelColor(AIDATATASKRUNER_COLOR_TEXT_PRIMARY);
m_label_titulo.FontSize(14);
m_label_titulo.Font("Arial");
if(!p.CreateTextLabel(m_label_titulo, m_language[AIDATATASKRUNNERL_COMPONENT_NAME(m_label_titulo)],
main_window, 0, m_base_tab, m_base_tab_idx, x, y, 150))
{
AIDATATASKRUNER_ERROR_CREATION(m_label_titulo);
return false;
}
y += m_label_titulo.YSize() + TASKRUNERAITABCONFIG_GAP_Y_TITLE_TO_COMBO;
//---
m_combox_language.FontSize(10);
m_combox_language.LabelColor(AIDATATASKRUNER_COLOR_TEXT_SECONDARY);
m_combox_language.BackColor(AIDATATASKRUNER_COLOR_FONDO_TAB_PRESSED);
m_combox_language.GetListViewPointer().BackColor(AIDATATASKRUNER_COLOR_EDIT_BACK);
m_combox_language.GetListViewPointer().BorderColor(AIDATATASKRUNER_COLOR_EDIT_BORDER);
m_combox_language.GetListViewPointer().LabelColor(AIDATATASKRUNER_COLOR_TEXT_SECONDARY);
m_combox_language.GetButtonPointer().LabelColor(AIDATATASKRUNER_COLOR_TEXT_SECONDARY);
m_combox_language.GetButtonPointer().BackColor(AIDATATASKRUNER_COLOR_EDIT_BACK);
m_combox_language.GetButtonPointer().BorderColor(AIDATATASKRUNER_COLOR_EDIT_BORDER);
if(!p.CreateCombobox(m_combox_language, m_language[AIDATATASKRUNNERL_COMPONENT_NAME(m_combox_language)],
main_window, 0, m_base_tab, m_base_tab_idx, false, x, y, 175, 100,
g_aidatatask_runner_langague_str, 150))
{
AIDATATASKRUNER_ERROR_CREATION(m_combox_language);
return false;
}
m_combox_language.m_button.IconFile(RESOURCE_DOWN_THIN_WHITE);
m_combox_language.m_button.IconFileLocked(RESOURCE_DOWN_THIN_WHITE);
m_combox_language.m_button.CElement::IconFilePressed(RESOURCE_UP_THIN_WHITE);
m_combox_language.m_button.CElement::IconFilePressedLocked(RESOURCE_UP_THIN_WHITE);
//---
return true;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabConfig::OnChangeComBox(const long lparam)
{
//---
if(lparam == m_combox_language.Id())
{
m_language.SetLanguageByIndex(m_combox_language.GetListViewPointer().SelectedItemIndex());
for(int i = 0; i < m_tabs_total; i++)
m_tabs[i].OnLenguajeChange();
// se llama a si mismo tmb
OnLenguajeChange();
m_base_program.OnLenguajeChange();
return true;
}
//---
return false;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CTaskRunerAiTabConfig::OnLenguajeChange(void)
{
//---
const bool redraw = m_base_tab.SelectedTab() == m_base_tab_idx && m_base_tab.IsVisible();
//---
m_label_titulo.LabelText(m_language[AIDATATASKRUNNERL_COMPONENT_NAME(m_label_titulo)]);
m_label_titulo.Update(redraw);
m_combox_language.LabelText(m_language[AIDATATASKRUNNERL_COMPONENT_NAME(m_combox_language)]);
m_combox_language.Update(redraw);
}
//+------------------------------------------------------------------+
#endif // AIDATATASKRUNER_UI_CONFIG_CONFIGTAB_MQH