AiDataTaskRuner/FilesInstaler/Main.mqh
Nique_372 c898cc6fc9
2026-04-09 21:47:51 -05:00

258 lines
10 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>
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//--- Idiomas
#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
//--- Features editor
#resource "res\\feditor\\base_template.fgblc" as const string g_panel_feditor_basetemplate
#resource "res\\feditor\\complex_features.fgblc" as const string g_panel_feditor_complexfeatures
#resource "res\\feditor\\ict_features.fgblc" as const string g_panel_feditor_ictfeatures
//--- Temaplates
#resource "res\\templates\\move_files_template.json" as const string g_panel_template_movefiles
#resource "res\\templates\\config_py.json" as const string g_panel_template_config_py
#resource "res\\templates\\files_inclu_exclu_cle.json" as const string g_panel_template_incexcl_cle
#resource "res\\templates\\files_inclu_exclu_enc.json" as const string g_panel_template_incexcl_enc
#resource "res\\templates\\basic_data_generation.yaml" as const string g_panel_template_bdata_gen
//---
struct AiDataTaskRunnerConfigFile
{
string base_folder;
bool comon_flag;
AiDataTaskRunnerConfigFile()
: comon_flag(true), base_folder("AiDataTaskRunner\\")
{}
} g_aidatatask_runner_config_g;
//+------------------------------------------------------------------+
//| Archivos |
//+------------------------------------------------------------------+
//--- Common flag en FSD y normal
#define AIDATATASKRUNER_BASE_FOLDER (g_aidatatask_runner_config_g.base_folder)
#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 AIDATATASK_RUNNER_COMON_FLAG_VAL (g_aidatatask_runner_config_g.comon_flag)
//--- Config
// En el path config se ubican lo de los ini para el panel
#define AIDATATASKRUNER_PATH_CONFIG (AIDATATASKRUNER_BASE_FOLDER + "Config\\")
//--- Task
// Task aqui se ubican csv de tareas que gurado del usuario o la configuracion del tab task
#define AIDATATASKRUNER_PATH_TASK (AIDATATASKRUNER_BASE_FOLDER + "Task\\")
//--- Feature editor
// En feature editor se ubican todos los archivo FGBLC que guardo\uso el user
#define AIDATATASKRUNER_PATH_FEATURES_EDITOR (AIDATATASKRUNER_BASE_FOLDER + "FeatureEditor\\")
#define AIDATATASKRUNER_PATH_FEATURES_EDITOR_MY (AIDATATASKRUNER_PATH_FEATURES_EDITOR + "My\\")
//--- Ai agent
// Aqui s eubican los chats de ia etc (TabAi)
#define TABLLMAGENT_FOLDER_AI "AiAgent\\"
//--- Temaplates
// Aqui se ubican los templates como archivos json listos para usar del condig de py etc
#define AIDATATASKRUNER_PATH_TEMPLATES (AIDATATASKRUNER_BASE_FOLDER + "Templates\\")
#define AIDATATASKRUNER_FILENAME_TEMPLATES_MOVEFILESS ("move_files_template.json")
#define AIDATATASKRUNER_FILENAME_TEMPLATES_PYCONFIG ("config_py.json")
#define AIDATATASKRUNER_FILENAME_TEMPLATES_FILEINCLUEXCLU_ENC ("files_inclu_exclu_enc.json")
#define AIDATATASKRUNER_FILENAME_TEMPLATES_FILEINCLUEXCLU_CLE ("files_inclu_exclu_cle.json")
//--- Workflows
#define AIDATATASKRUNER_PATH_WORKFLOWS (AIDATATASKRUNER_BASE_FOLDER + "Workflows\\")
#define AIDATATASKRUNER_FILE_NAME_WORKFLOWS_BASICGENERATION ("basic_data_generation.yaml")
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//--- Lenguaje
#define AIDATATASKRUNNER_TOTAL_LANGUAGUE (3)
#define TASKRUNERAI_DEFUALT_LAN (AIDATATASKRUNNER_LAN_ES)
string g_aidatatask_runner_langague_str[AIDATATASKRUNNER_TOTAL_LANGUAGUE]
{
"Español",
"English",
"Italiano"
};
// Base
LanguageBaseConfig g_aidatatask_runner_langague[AIDATATASKRUNNER_TOTAL_LANGUAGUE];
// Enum
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);
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)
{
//---
::GetLastError();
const int fh = FileOpen(path, FILE_TXT | FILE_WRITE | AIDATATASK_RUNNER_COMON_FLAG, 0);
if(fh == INVALID_HANDLE)
{
FastLog(FUNCION_ACTUAL, ERROR_TEXT, StringFormat("Fallo al abrir el archivo = %s, ultimo error = %d", path, ::GetLastError()));
return false;
}
//---
FileWrite(fh, rescr);
//---
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;
}
//--- Folders
// Task
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;
// Folder ai
if(!CreateFolder(g_aidatatask_runner_config_g.base_folder + TABLLMAGENT_FOLDER_AI, g_aidatatask_runner_config_g.comon_flag))
return false;
// Feature editor = My (Donde el user pone sus archivos)
if(!CreateFolder(AIDATATASKRUNER_PATH_FEATURES_EDITOR_MY, g_aidatatask_runner_config_g.comon_flag)) // Folder de utilidad por si el usuario crea tareas o guarda
return false;
//--- Archivos relacioneanos a las features
// Features editor
if(!WriteInFile(AIDATATASKRUNER_PATH_FEATURES_EDITOR + "base_template.fgblc", g_panel_feditor_basetemplate))
return false;
if(!WriteInFile(AIDATATASKRUNER_PATH_FEATURES_EDITOR + "complex_features.fgblc", g_panel_feditor_complexfeatures))
return false;
if(!WriteInFile(AIDATATASKRUNER_PATH_FEATURES_EDITOR + "ict_features.fgblc", g_panel_feditor_ictfeatures))
return false;
//--- Templates
if(!WriteInFile(AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILENAME_TEMPLATES_MOVEFILESS, g_panel_template_movefiles))
return false;
if(!WriteInFile(AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILENAME_TEMPLATES_PYCONFIG, g_panel_template_config_py))
return false;
if(!WriteInFile(AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILENAME_TEMPLATES_FILEINCLUEXCLU_CLE, g_panel_template_incexcl_cle))
return false;
if(!WriteInFile(AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILENAME_TEMPLATES_FILEINCLUEXCLU_ENC, g_panel_template_incexcl_enc))
return false;
if(!WriteInFile(AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILE_NAME_WORKFLOWS_BASICGENERATION, g_panel_template_bdata_gen))
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