2026-03-13 15:20:27 -05:00
//+------------------------------------------------------------------+
2026-03-13 11:50:43 -05:00
//| Main.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 AIDATATASKRUNNER_FILEINSTALER_MAIN_MQH
# define AIDATATASKRUNNER_FILEINSTALER_MAIN_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-03-16 21:51:29 -05:00
# include <TSN\\MQLArticles\\Utils\\Basic.mqh>
2026-03-16 17:06:27 -05:00
# include <TSN\\EAFMod\\Language.mqh>
2026-03-13 11:50:43 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
# resource "res\\language_en.txt" as const string g_panelict_dep_language_en
# resource "res\\language_es.txt" as const string g_panelict_dep_language_es
# resource "res\\language_it.txt" as const string g_panelict_dep_language_it
//---
// Este archivo se encarga de dwscragar los .ini en Conifg
2026-03-13 19:46:30 -05:00
struct AiDataTaskRunnerConfigFile
{
string base_folder ;
bool comon_flag ;
2026-03-14 07:39:48 -05:00
AiDataTaskRunnerConfigFile ( )
: comon_flag ( true ) , base_folder ( " AiDataTaskRunner \\ " )
{ }
2026-03-13 19:46:30 -05:00
} g_aidatatask_runner_config_g ;
2026-03-13 11:50:43 -05:00
//---
2026-03-13 19:46:30 -05:00
# define AIDATATASKRUNER_BASE_FOLDER ( g_aidatatask_runner_config_g . base_folder )
2026-03-13 11:50:43 -05:00
# define AIDATATASKRUNER_PATH_CONFIG ( AIDATATASKRUNER_BASE_FOLDER + " Config \\ " )
2026-03-14 07:39:48 -05:00
# define AIDATATASKRUNER_PATH_TASK ( AIDATATASKRUNER_BASE_FOLDER + " Task \\ " )
2026-03-13 19:46:30 -05:00
2026-03-13 11:50:43 -05:00
//---
# define AIDATATASKRUNNER_TOTAL_LANGUAGUE ( 3 )
2026-03-13 11:58:57 -05:00
//---
2026-03-13 19:46:30 -05:00
# define AIDATATASK_RUNNER_COMON_FLAG ( g_aidatatask_runner_config_g . comon_flag ? FILE_COMMON : 0 )
# define AIDATATASK_RUNNER_FSD_COMON_FLAG ( g_aidatatask_runner_config_g . comon_flag ? FSD_COMMON_FOLDER : 0 )
2026-03-13 11:50:43 -05:00
//---
2026-03-16 17:06:27 -05:00
# define TASKRUNERAI_DEFUALT_LAN ( AIDATATASKRUNNER_LAN_ES )
2026-03-13 19:46:30 -05:00
2026-03-13 15:20:27 -05:00
//---
string g_aidatatask_runner_langague_str [ AIDATATASKRUNNER_TOTAL_LANGUAGUE ]
{
" Español " ,
" English " ,
" Italiano "
} ;
2026-03-13 11:50:43 -05:00
//---
2026-03-16 17:06:27 -05:00
LanguageBaseConfig g_aidatatask_runner_langague [ AIDATATASKRUNNER_TOTAL_LANGUAGUE ] ;
2026-03-13 11:50:43 -05:00
//---
enum ENUM_AIDATATASKRUNER_LANGUAGE
{
AIDATATASKRUNNER_LAN_ES = 0 ,
AIDATATASKRUNNER_LAN_EN = 1 ,
AIDATATASKRUNNER_LAN_IT = 2
} ;
2026-03-16 21:51:29 -05:00
//---
# define TABLLMAGENT_FOLDER_AI " AiAgent \\ "
2026-03-13 11:50:43 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CPanelAiDataTaskRunnerIns
{
private :
static bool WriteInFile ( const string path , const string & rescr ) ;
2026-03-14 07:39:48 -05:00
static void InitArrays ( ) ;
2026-03-13 11:50:43 -05:00
public :
CPanelAiDataTaskRunnerIns ( void ) { }
~ CPanelAiDataTaskRunnerIns ( void ) { }
//---
static bool Downlad ( ) ;
} ;
2026-03-14 07:39:48 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
static void CPanelAiDataTaskRunnerIns : : InitArrays ( void )
{
//---
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_ES ] . base_file = AIDATATASKRUNER_PATH_CONFIG + " language_es.ini " ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_ES ] . content = g_panelict_dep_language_es ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_EN ] . base_file = AIDATATASKRUNER_PATH_CONFIG + " language_en.ini " ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_EN ] . content = g_panelict_dep_language_en ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_IT ] . base_file = AIDATATASKRUNER_PATH_CONFIG + " language_it.ini " ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_IT ] . content = g_panelict_dep_language_it ;
}
2026-03-13 11:50:43 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
static bool CPanelAiDataTaskRunnerIns : : WriteInFile ( const string path , const string & rescr )
{
//---
string arr [ ] ;
const int t = StringSplit ( rescr , ' \n ' , arr ) ;
if ( t = = -1 )
{
FastLog ( FUNCION_ACTUAL , ERROR_TEXT , " Falo al hacer split al resrc " ) ;
return false ;
}
//ArrayPrint(arr);
//---
: : GetLastError ( ) ;
2026-03-13 11:58:57 -05:00
const int fh = FileOpen ( path , FILE_TXT | FILE_WRITE | AIDATATASK_RUNNER_COMON_FLAG ) ;
2026-03-13 11:50:43 -05:00
if ( fh = = INVALID_HANDLE )
{
FastLog ( FUNCION_ACTUAL , ERROR_TEXT , StringFormat ( " Fallo al abrir el archivo = %s, ultimo error = %d " , path , : : GetLastError ( ) ) ) ;
return false ;
}
//---
for ( int i = 0 ; i < t ; i + + )
{
StringTrimRight ( arr [ i ] ) ;
FileWrite ( fh , arr [ i ] ) ;
}
//---
FileClose ( fh ) ;
//---
return true ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
static bool CPanelAiDataTaskRunnerIns : : Downlad ( void )
{
2026-03-14 07:39:48 -05:00
//---
InitArrays ( ) ;
2026-03-13 11:50:43 -05:00
//---
const string file = AIDATATASKRUNER_PATH_CONFIG + " last_date.bin " ;
2026-03-13 15:20:27 -05:00
if ( FileIsExist ( file , AIDATATASK_RUNNER_COMON_FLAG ) )
2026-03-13 11:50:43 -05:00
{
// Ya existe
FastLog ( FUNCION_ACTUAL , WARNING_TEXT , " The ini files have already been created " ) ;
return true ;
}
else
{
FastLog ( FUNCION_ACTUAL , WARNING_TEXT , " Creating init files for the panel " ) ;
}
2026-03-13 19:46:30 -05:00
//--- Instalacion de archivos
2026-03-13 11:50:43 -05:00
for ( int i = 0 ; i < AIDATATASKRUNNER_TOTAL_LANGUAGUE ; i + + )
{
if ( ! WriteInFile ( g_aidatatask_runner_langague [ i ] . base_file , g_aidatatask_runner_langague [ i ] . content ) )
return false ;
}
2026-03-13 19:46:30 -05:00
//---
2026-03-13 21:49:37 -05:00
if ( ! CreateFolder ( AIDATATASKRUNER_PATH_TASK , g_aidatatask_runner_config_g . comon_flag ) ) // Folder de utilidad por si el usuario crea tareas o guarda
2026-03-13 19:46:30 -05:00
return false ;
2026-03-16 21:51:29 -05:00
//---
if ( ! CreateFolder ( g_aidatatask_runner_config_g . base_folder + TABLLMAGENT_FOLDER_AI ,
g_aidatatask_runner_config_g . comon_flag ) )
return false ;
2026-03-13 11:50:43 -05:00
//--- Finalizamos creando
2026-03-13 11:58:57 -05:00
const int fh = FileOpen ( file , FILE_BIN | FILE_WRITE | AIDATATASK_RUNNER_COMON_FLAG ) ;
2026-03-13 11:50:43 -05:00
if ( fh = = INVALID_HANDLE )
{
FastLog ( FUNCION_ACTUAL , ERROR_TEXT , StringFormat ( " Fallo al abrir el archivo = %s, ultimo error = %d " , file , : : GetLastError ( ) ) ) ;
return false ;
}
FileWriteLong ( fh , long ( TimeCurrent ( ) ) ) ;
FileClose ( fh ) ;
//---
return true ;
}
//+------------------------------------------------------------------+
# endif // AIDATATASKRUNNER_FILEINSTALER_MAIN_MQH