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