//+------------------------------------------------------------------+ //| 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