forked from nique_372/AiDataTaskRuner
178 lines
5.6 KiB
MQL5
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
|