AiDataTaskRuner/FilesInstaler/Main.mqh
Nique_372 31fa574b02
2026-03-16 21:51:29 -05:00

202 lines
6.6 KiB
MQL5

//+------------------------------------------------------------------+
//| 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
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include <TSN\\MQLArticles\\Utils\\Basic.mqh>
#include <TSN\\EAFMod\\Language.mqh>
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#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
struct AiDataTaskRunnerConfigFile
{
string base_folder;
bool comon_flag;
AiDataTaskRunnerConfigFile()
: comon_flag(true), base_folder("AiDataTaskRunner\\")
{}
} g_aidatatask_runner_config_g;
//---
#define AIDATATASKRUNER_BASE_FOLDER (g_aidatatask_runner_config_g.base_folder)
#define AIDATATASKRUNER_PATH_CONFIG (AIDATATASKRUNER_BASE_FOLDER + "Config\\")
#define AIDATATASKRUNER_PATH_TASK (AIDATATASKRUNER_BASE_FOLDER + "Task\\")
//---
#define AIDATATASKRUNNER_TOTAL_LANGUAGUE (3)
//---
#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)
//---
#define TASKRUNERAI_DEFUALT_LAN (AIDATATASKRUNNER_LAN_ES)
//---
string g_aidatatask_runner_langague_str[AIDATATASKRUNNER_TOTAL_LANGUAGUE]
{
"Español",
"English",
"Italiano"
};
//---
LanguageBaseConfig g_aidatatask_runner_langague[AIDATATASKRUNNER_TOTAL_LANGUAGUE];
//---
enum ENUM_AIDATATASKRUNER_LANGUAGE
{
AIDATATASKRUNNER_LAN_ES = 0,
AIDATATASKRUNNER_LAN_EN = 1,
AIDATATASKRUNNER_LAN_IT = 2
};
//---
#define TABLLMAGENT_FOLDER_AI "AiAgent\\"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CPanelAiDataTaskRunnerIns
{
private:
static bool WriteInFile(const string path, const string& rescr);
static void InitArrays();
public:
CPanelAiDataTaskRunnerIns(void) {}
~CPanelAiDataTaskRunnerIns(void) {}
//---
static bool Downlad();
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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();
const int fh = FileOpen(path, FILE_TXT | FILE_WRITE | AIDATATASK_RUNNER_COMON_FLAG);
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)
{
//---
InitArrays();
//---
const string file = AIDATATASKRUNER_PATH_CONFIG + "last_date.bin";
if(FileIsExist(file, AIDATATASK_RUNNER_COMON_FLAG))
{
// 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");
}
//--- Instalacion de archivos
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;
}
//---
if(!CreateFolder(AIDATATASKRUNER_PATH_TASK, g_aidatatask_runner_config_g.comon_flag)) // Folder de utilidad por si el usuario crea tareas o guarda
return false;
//---
if(!CreateFolder(g_aidatatask_runner_config_g.base_folder + TABLLMAGENT_FOLDER_AI,
g_aidatatask_runner_config_g.comon_flag))
return false;
//--- Finalizamos creando
const int fh = FileOpen(file, FILE_BIN | FILE_WRITE | AIDATATASK_RUNNER_COMON_FLAG);
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