275 lines
11 KiB
MQL5
275 lines
11 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| Clean.mqh |
|
|
//| Copyright 2026, Niquel Mendoza. |
|
|
//| https://www.mql5.com/es/users/nique_372 |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2026, Niquel Mendoza."
|
|
#property link "https://www.mql5.com/es/users/nique_372"
|
|
#property strict
|
|
|
|
|
|
#ifndef AIDATATASKRUNER_UI_TABUTIL_CLEAN_MQH
|
|
#define AIDATATASKRUNER_UI_TABUTIL_CLEAN_MQH
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Include |
|
|
//+------------------------------------------------------------------+
|
|
#include "General.mqh"
|
|
//--- Trabajo con los folders
|
|
#include "..\\..\\..\\MQLArticles\\Utils\\File\\FolderOps\\All.mqh"
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CTabUtilsClean : public CGuiBaseComponent<CLoggerBase>
|
|
{
|
|
private:
|
|
//---
|
|
CTabUtilsGeneral* m_general;
|
|
|
|
//---
|
|
CFolderOpsClean m_folder_cleaner;
|
|
|
|
//---
|
|
//- Limpieza
|
|
CTextLabel m_label_tit_clean; // Limpieza
|
|
// Arhicvo de configuracion
|
|
// Se ubican el patron de limpieza *, y tambiein extensiones a eliminar
|
|
CTextLabel m_label_file_config_clean;
|
|
CTextLabel m_label_file_config_clean_val;
|
|
CButton m_btn_browse_file_config_clean;
|
|
CButton m_btn_browse_file_config_clean_template; // Boton para selecionar el archivo template
|
|
|
|
// Ejecutar la limpieza
|
|
CButton m_btn_clean_run;
|
|
|
|
//---
|
|
void OnRunClean();
|
|
|
|
public:
|
|
CTabUtilsClean(void) : CGuiBaseComponent<CLoggerBase>("CTabUtilsClean") { m_folder_cleaner.AddLogFlags(LOG_ALL);}
|
|
~CTabUtilsClean(void) {}
|
|
|
|
//---
|
|
void SetGeneral(CTabUtilsGeneral* general) { m_general = general; }
|
|
|
|
//---
|
|
bool Create(CWndCreate* p, CWindow& main_window, int top_gap, int left_gap, int right_gap, int bottom_gap);
|
|
|
|
//---
|
|
bool OnClickButtom(const long lparam);
|
|
void OnLenguajeChange() override final;
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
bool CTabUtilsClean::Create(CWndCreate* p, CWindow& main_window, int top_gap, int left_gap, int right_gap, int bottom_gap)
|
|
{
|
|
//---
|
|
int x = left_gap + 5;
|
|
int y = top_gap + 10;
|
|
const int initial_x = x;
|
|
|
|
//--- Titulo Clean
|
|
m_label_tit_clean.FontSize(14);
|
|
m_label_tit_clean.Font("Arial");
|
|
m_label_tit_clean.LabelColor(AIDATATASKRUNER_COLOR_TEXT_PRIMARY);
|
|
m_label_tit_clean.BackColor(AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED);
|
|
if(!p.CreateTextLabel(m_label_tit_clean, m_language[GUIBASE_COMPONENT_NAME(m_label_tit_clean)],
|
|
main_window, 0, m_base_tab, m_base_tab_idx, x, y, 200))
|
|
{
|
|
GUIBASE_ERROR_CREATION(m_label_tit_clean);
|
|
return false;
|
|
}
|
|
y += m_label_tit_clean.YSize() + 10;
|
|
|
|
//--- Label config clean
|
|
m_label_file_config_clean.FontSize(10);
|
|
m_label_file_config_clean.Font("Arial");
|
|
m_label_file_config_clean.LabelColor(AIDATATASKRUNER_COLOR_TEXT_SECONDARY);
|
|
m_label_file_config_clean.BackColor(AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED);
|
|
if(!p.CreateTextLabel(m_label_file_config_clean, m_language[GUIBASE_COMPONENT_NAME(m_label_file_config_clean)],
|
|
main_window, 0, m_base_tab, m_base_tab_idx, x, y, 125, 25))
|
|
{
|
|
GUIBASE_ERROR_CREATION(m_label_file_config_clean);
|
|
return false;
|
|
}
|
|
x += m_label_file_config_clean.XSize() + 5;
|
|
|
|
//--- Label val
|
|
m_label_file_config_clean_val.FontSize(10);
|
|
m_label_file_config_clean_val.Font("Arial");
|
|
m_label_file_config_clean_val.LabelColor(AIDATATASKRUNER_COLOR_TEXT_PRIMARY);
|
|
m_label_file_config_clean_val.BackColor(AIDATATASKRUNER_COLOR_EDIT_BACK);
|
|
m_label_file_config_clean_val.LabelXGap(5);
|
|
m_label_file_config_clean_val.LabelYGap(3);
|
|
m_label_file_config_clean_val.Tooltip(m_language.Tooltip(GUIBASE_COMPONENT_NAME(m_label_file_config_clean_val)));
|
|
if(!p.CreateTextLabel(m_label_file_config_clean_val, "",
|
|
main_window, 0, m_base_tab, m_base_tab_idx, x, y, 400, 25))
|
|
{
|
|
GUIBASE_ERROR_CREATION(m_label_file_config_clean_val);
|
|
return false;
|
|
}
|
|
x = initial_x;
|
|
y += m_label_file_config_clean_val.YSize() + 8;
|
|
|
|
//--- Browse
|
|
m_btn_browse_file_config_clean.AddImagesGroup(5, 2, g_eafmod_ic_arr_folderw10_image);
|
|
m_btn_browse_file_config_clean.ChangeImage(0, 0);
|
|
m_btn_browse_file_config_clean.LabelXGap(22);
|
|
m_btn_browse_file_config_clean.FontSize(10);
|
|
m_btn_browse_file_config_clean.Font("Arial");
|
|
m_btn_browse_file_config_clean.BackColor(AIDATATASKRUNER_COLOR_BTN_BACK);
|
|
m_btn_browse_file_config_clean.LabelColor(AIDATATASKRUNER_COLOR_TEXT_SECONDARY);
|
|
m_btn_browse_file_config_clean.BorderColor(AIDATATASKRUNER_COLOR_BTN_BORDER);
|
|
m_btn_browse_file_config_clean.Tooltip(m_language.Tooltip(GUIBASE_COMPONENT_NAME(m_btn_browse_file_config_clean)));
|
|
if(!p.CreateButton(m_btn_browse_file_config_clean, m_language[GUIBASE_COMPONENT_NAME(m_btn_browse_file_config_clean)],
|
|
main_window, 0, m_base_tab, m_base_tab_idx, x, y, 100))
|
|
{
|
|
GUIBASE_ERROR_CREATION(m_btn_browse_file_config_clean);
|
|
return false;
|
|
}
|
|
x += m_btn_browse_file_config_clean.XSize() + 5;
|
|
|
|
//--- Template "?"
|
|
m_btn_browse_file_config_clean_template.AddImagesGroup(5, 2, g_eafmod_ic_arr_help_image);
|
|
m_btn_browse_file_config_clean_template.ChangeImage(0, 0);
|
|
// m_btn_browse_file_config_clean_template.LabelXGap(20);
|
|
m_btn_browse_file_config_clean_template.FontSize(10);
|
|
m_btn_browse_file_config_clean_template.Font("Arial");
|
|
m_btn_browse_file_config_clean_template.BackColor(AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED);
|
|
m_btn_browse_file_config_clean_template.LabelColor(AIDATATASKRUNER_COLOR_TEXT_SECONDARY);
|
|
m_btn_browse_file_config_clean_template.BorderColor(AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED);
|
|
m_btn_browse_file_config_clean_template.Tooltip(m_language.Tooltip(GUIBASE_COMPONENT_NAME(m_btn_browse_file_config_clean_template)));
|
|
if(!p.CreateButton(m_btn_browse_file_config_clean_template, "",
|
|
main_window, 0, m_base_tab, m_base_tab_idx, x, y, 30))
|
|
{
|
|
GUIBASE_ERROR_CREATION(m_btn_browse_file_config_clean_template);
|
|
return false;
|
|
}
|
|
x = initial_x;
|
|
y += m_btn_browse_file_config_clean_template.YSize() + 10;
|
|
|
|
//--- Boton Run Clean
|
|
m_btn_clean_run.FontSize(10);
|
|
m_btn_clean_run.Font("Arial");
|
|
m_btn_clean_run.BackColor(AIDATATASKRUNER_COLOR_BTN_BACK);
|
|
m_btn_clean_run.LabelColor(AIDATATASKRUNER_COLOR_TEXT_SECONDARY);
|
|
m_btn_clean_run.BorderColor(AIDATATASKRUNER_COLOR_BTN_BORDER);
|
|
m_btn_clean_run.Tooltip(m_language.Tooltip(GUIBASE_COMPONENT_NAME(m_btn_clean_run)));
|
|
if(!p.CreateButton(m_btn_clean_run, m_language[GUIBASE_COMPONENT_NAME(m_btn_clean_run)],
|
|
main_window, 0, m_base_tab, m_base_tab_idx, x, y, 120))
|
|
{
|
|
GUIBASE_ERROR_CREATION(m_btn_clean_run);
|
|
return false;
|
|
}
|
|
//x = initial_x;
|
|
// y += m_btn_clean_run.YSize() + 20; // gap mayor al final de seccion
|
|
|
|
//---
|
|
return true;
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CTabUtilsClean::OnLenguajeChange(void)
|
|
{
|
|
UpdateTBasic(m_label_tit_clean, GUIBASE_COMPONENT_NAME(m_label_tit_clean), false);
|
|
UpdateTBasic(m_label_file_config_clean, GUIBASE_COMPONENT_NAME(m_label_file_config_clean), false);
|
|
m_label_file_config_clean_val.Tooltip(m_language.Tooltip(GUIBASE_COMPONENT_NAME(m_label_file_config_clean_val)));
|
|
UpdateTBasic(m_btn_browse_file_config_clean, GUIBASE_COMPONENT_NAME(m_btn_browse_file_config_clean), true);
|
|
m_btn_browse_file_config_clean_template.Tooltip(m_language.Tooltip(GUIBASE_COMPONENT_NAME(m_btn_browse_file_config_clean_template)));
|
|
}
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
bool CTabUtilsClean::OnClickButtom(const long lparam)
|
|
{
|
|
//--- Clean files
|
|
// Valor file (browse)
|
|
if(m_btn_browse_file_config_clean.Id() == lparam)
|
|
{
|
|
//---
|
|
string arr[];
|
|
if(FileSelectDialog(GUIBASE_MSG("flselect_config_clean"), NULL, "JSON Files (*.json)|*.json", (m_general.ComonFlagVal() ? FSD_COMMON_FOLDER : 0),
|
|
arr, NULL) != 1)
|
|
{
|
|
MessageBox(GUIBASE_MSG("error_select_file"), GUIBASE_COMMON("error"), MB_ICONERROR | MB_OK);
|
|
return true;
|
|
}
|
|
//---
|
|
m_label_file_config_clean_val.LabelText(arr[0]); // ruta completa aqui
|
|
m_label_file_config_clean_val.Update(true);
|
|
//---
|
|
if(!m_folder_cleaner.Load(arr[0], m_general.ComonFlagVal(), g_json_parser))
|
|
{
|
|
MessageBox(GUIBASE_MSG("error_loadjson_clean"), GUIBASE_COMMON("error"), MB_ICONERROR | MB_OK);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// Template
|
|
if(m_btn_browse_file_config_clean_template.Id() == lparam)
|
|
{
|
|
//---
|
|
string arr[];
|
|
if(FileSelectDialog(GUIBASE_MSG("flselect_config_clean"), AIDATATASKRUNER_PATH_TEMPLATES, "JSON Files (*.json)|*.json", AIDATATASK_RUNNER_FSD_COMON_FLAG,
|
|
arr, AIDATATASKRUNER_FILENAME_TEMPLATES_FILEINCLUEXCLU_CLE) != 1)
|
|
{
|
|
MessageBox(GUIBASE_MSG("error_select_file"), GUIBASE_COMMON("error"), MB_ICONERROR | MB_OK);
|
|
return true;
|
|
}
|
|
//---
|
|
m_label_file_config_clean_val.LabelText(arr[0]); // ruta completa aqui
|
|
m_label_file_config_clean_val.Update(true);
|
|
//---
|
|
if(!m_folder_cleaner.Load(arr[0], AIDATATASK_RUNNER_COMON_FLAG_VAL, g_json_parser))
|
|
{
|
|
MessageBox(GUIBASE_MSG("error_loadjson_clean"), GUIBASE_COMMON("error"), MB_ICONERROR | MB_OK);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
// Run
|
|
if(m_btn_clean_run.Id() == lparam)
|
|
{
|
|
m_btn_clean_run.LabelText(m_language[GUIBASE_COMPONENT_NAME(m_btn_clean_run) + "_onrun"]);
|
|
m_btn_clean_run.Update(true);
|
|
OnRunClean();
|
|
m_btn_clean_run.LabelText(m_language[GUIBASE_COMPONENT_NAME(m_btn_clean_run)]);
|
|
m_btn_clean_run.Update(true);
|
|
return true;
|
|
}
|
|
|
|
//---
|
|
return false;
|
|
}
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CTabUtilsClean::OnRunClean(void)
|
|
{
|
|
//--- Check
|
|
const string main_folder = m_general.MainFolder();
|
|
if(main_folder.Length() < 1)
|
|
{
|
|
MessageBox(GUIBASE_MSG("err_invalid_mfolder"), GUIBASE_COMMON("error"), MB_ICONERROR | MB_OK);
|
|
return;
|
|
}
|
|
|
|
//--- Si falla le decimos mensaje que revise logs
|
|
m_folder_cleaner.SetInitialPass();
|
|
if(!m_folder_cleaner.CleanFolder(main_folder, m_general.ComonFlag()))
|
|
{
|
|
MessageBox(GUIBASE_MSG("err_clean_folder"), GUIBASE_COMMON("error"), MB_ICONQUESTION | MB_YESNO);
|
|
}
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
#endif // AIDATATASKRUNER_UI_TABUTIL_CLEAN_MQH
|