AiDataTaskRuner/FilesInstaler/Main.mqh
Nique_372 8cac49ea8c
2026-03-13 21:49:37 -05:00

178 lines
5.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 "..\\..\\MQLArticles\\Utils\\Basic.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;
} 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)
//---
struct AiDataTaskRunnerLan
{
string base_file;
string content;
};
//---
string g_aidatatask_runner_langague_str[AIDATATASKRUNNER_TOTAL_LANGUAGUE]
{
"Español",
"English",
"Italiano"
};
//---
AiDataTaskRunnerLan g_aidatatask_runner_langague[AIDATATASKRUNNER_TOTAL_LANGUAGUE]
{
{AIDATATASKRUNER_PATH_CONFIG + "language_es.ini", g_panelict_dep_language_es},
{AIDATATASKRUNER_PATH_CONFIG + "language_en.ini", g_panelict_dep_language_en},
{AIDATATASKRUNER_PATH_CONFIG + "language_it.ini", g_panelict_dep_language_it}
};
//---
enum ENUM_AIDATATASKRUNER_LANGUAGE
{
AIDATATASKRUNNER_LAN_ES = 0,
AIDATATASKRUNNER_LAN_EN = 1,
AIDATATASKRUNNER_LAN_IT = 2
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CPanelAiDataTaskRunnerIns
{
private:
static bool WriteInFile(const string path, const string& rescr);
public:
CPanelAiDataTaskRunnerIns(void) {}
~CPanelAiDataTaskRunnerIns(void) {}
//---
static bool Downlad();
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
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)
{
//---
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;
//--- 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