2026-02-24 20:47:56 -05:00
//+------------------------------------------------------------------+
2026-02-24 10:16:05 -05:00
//| Base.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 "
2026-02-24 20:47:56 -05:00
# property strict
2026-02-25 11:10:09 -05:00
# ifndef AIDATATASKRUNER_UI_DATAGENERATIONTAB_BASE_MQH
# define AIDATATASKRUNER_UI_DATAGENERATIONTAB_BASE_MQH
2026-02-24 20:47:56 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
# include "Def.mqh"
2026-03-18 08:46:51 -05:00
//---
# define TASKRUNERAIDGENMAIN_FLAG_CONFIG ( 1 )
# define TASKRUNERAIDGENMAIN_FLAG_TABLE ( 2 )
2026-03-25 06:48:29 -05:00
/*
2026-03-25 09:39:28 -05:00
[ Common ]
error = " AiDataTaskRunnerByLeo Error "
info = " AiDataTaskRunnerByLeo Info "
warning = " AiDataTaskRunnerByLeo Warning "
//---
2026-03-25 06:48:29 -05:00
m_section_bsic_label_files = " Files to move "
m_section_bsic_label_files_val_tooltip = " Selected file, within this json file are located all the files that the bot will move each time it finishes a task. "
m_section_bsic_btn_label_files_browse = " Browse "
m_section_bsic_btn_label_files_browse_tooltip = " Click here to find the JSON file of files to move "
2026-03-25 09:39:28 -05:00
m_section_bsic_btn_label_files_template_tooltip = " View sample templates "
//---
OnClickBottomTabMain_filesel_filesmove = " Load move-files config "
OnClickBottomTabMain_filesel_filesmove_templates = " Choose a config template "
OnClickBottomTabMain_filesel_load_config = " Load configuration file "
OnClickBottomTabMain_filesel_save_config = " Save configuration file "
OnClickBottomTabMain_err_browsefiles_no_sel = " No JSON file selected "
OnClickBottomTabMain_err_browsefiles_files = " Error trying to use file %s, check the terminal logs for the specific error "
OnClickBottomTabMain_err_filesel_no_sel = " No file selected "
OnClickBottomTabMain_msg_add_task_ok = " Task added successfully "
OnClickBottomTabMain_msg_add_task_fail = " Failed to add task \n %s "
OnClickBottomTabMain_msg_load_config_ok = " Configuration loaded successfully "
OnClickBottomTabMain_msg_load_config_fail = " Failed to load configuration \n %s "
OnClickBottomTabMain_msg_save_config_ok = " Configuration saved successfully "
OnClickBottomTabMain_msg_save_config_fail = " Failed to save configuration \n %s "
//---
OnClickBottom_filesel_load_tasks = " Load tasks file "
OnClickBottom_filesel_save_tasks = " Save tasks file "
OnClickBottom_err_filesel_no_sel = " No file selected "
OnClickBottom_msg_load_tasks_fail = " Failed to load tasks \n %s "
OnClickBottom_msg_save_tasks_filter = " Filter completed or finished tasks? "
OnClickBottom_msg_save_tasks_fail = " Failed to save tasks \n %s "
OnClickBottom_msg_clean_tasks_fail = " Failed to clean tasks \n %s "
OnClickBottom_msg_run_tasks_empty = " No tasks to execute \n %s "
2026-03-25 06:48:29 -05:00
* /
2026-03-25 09:39:28 -05:00
2026-02-24 20:47:56 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-03-20 21:57:53 -05:00
class CTaskRunerAiTabDGenMain : public CGuiBaseComponent < CLoggerBase >
2026-02-24 20:47:56 -05:00
{
private :
//---
CTabs m_tabs ;
ITaskRunerAi * m_runer ;
//--- Tab 1 Agregar task
//- COnfigiraiino base
2026-03-14 09:06:05 -05:00
CButton m_section_bsic_buttom_load ;
CButton m_section_bsic_buttom_save ;
2026-02-24 20:47:56 -05:00
CTextLabel m_label_basic_config ;
2026-03-25 06:48:29 -05:00
CTextLabel m_section_bsic_label_files ;
CTextLabel m_section_bsic_label_files_val ;
CButton m_section_bsic_btn_label_files_browse ;
2026-03-25 09:39:28 -05:00
CButton m_section_bsic_btn_label_files_template ;
2026-02-24 20:47:56 -05:00
CTextEdit m_section_bsic_edit_expert_path ;
CTextEdit m_section_bsic_edit_progres_csv_file ;
CTextEdit m_section_bsic_edit_main_folder ;
//- Task
CTextLabel m_label_new_task ;
//
CTextEdit m_section_nt_edit_symbol ;
CTextEdit m_section_nt_edit_symbol_folder ;
CComboBox m_section_nt_combox_timerame ;
CTextEdit m_section_nt_edit_label ;
CTextEdit m_section_nt_edit_label_id ;
CDropCalendar m_section_nt_dc_dt_start ;
CDropCalendar m_section_nt_dc_dt_end ;
CTextEdit m_section_nt_edit_st_file ;
//
CButton m_section_nt_buttom_add_task ;
//--- Tab 2 visualizar
CButton m_section_buttom_pending_load ;
CButton m_section_buttom_pending_save ;
CButton m_section_buttom_clean ;
CButton m_section_buttom_execute_all ;
CTable m_section_pending_table ;
//CWindow liuego dar la posiblidad de modificar
//--- Create metods
bool CreateMainTab ( CWndCreate * p , CWindow & main_window , CTabs & general_tabs , int tab_index , int top_gap , int left_gap , int right_gap , int bottom_gap ) ;
bool CreatePendigTab ( CWndCreate * p , CWindow & main_window , CTabs & general_tabs , int tab_index , int top_gap , int left_gap , int right_gap , int bottom_gap ) ;
2026-03-13 16:00:22 -05:00
//--- Partes de main tab
bool CreateMainTab_BasicConfig ( CWndCreate * p , CWindow & main_window , CTabs & general_tabs , int tab_index , const int initial_x , int & x , int & y ) ;
bool CreateMainTab_NewTask ( CWndCreate * p , CWindow & main_window , CTabs & general_tabs , int tab_index , const int initial_x , int & x , int & y ) ;
2026-02-24 20:47:56 -05:00
//---
// rows = array con las filas a actulizar
// index_s = nuevo estaod
// size = tamaño del array rows
void ActulizeTableAllTask ( const int index_s , int & rows [ ] , int size ) ;
2026-03-13 09:38:25 -05:00
void OnAddTask ( ) ;
2026-03-13 16:00:22 -05:00
void UpdateTextMain ( ) ;
void UpdateTextTask ( ) ;
2026-02-24 20:47:56 -05:00
2026-03-17 07:50:47 -05:00
//---
2026-03-25 06:48:29 -05:00
//---
bool OnClickBottomTabMain ( const long lparam ) ;
2026-02-24 20:47:56 -05:00
public :
2026-03-20 21:57:53 -05:00
CTaskRunerAiTabDGenMain ( void ) : CGuiBaseComponent < CLoggerBase > ( " CTaskRunerAiTabDGenMain " ) { }
2026-02-24 20:47:56 -05:00
~ CTaskRunerAiTabDGenMain ( void ) { }
//---
// topgap es 0 creo
// leftgap debera de considerar el espeacio en V
2026-03-13 15:20:27 -05:00
bool Create ( CWndCreate * p , CWindow & main_window , int top_gap , int left_gap , int right_gap , int bottom_gap ) ;
2026-02-25 11:10:09 -05:00
void SetRunner ( ITaskRunerAi * r ) { m_runer = r ; }
2026-02-24 20:47:56 -05:00
//---
2026-03-13 15:20:27 -05:00
void OnLenguajeChange ( ) override final ;
2026-02-24 20:47:56 -05:00
bool OnClickBottom ( const long lparam ) ;
bool OnChangeDate ( const long lparam , const double dparam ) ; //dparm = date
2026-02-25 11:10:09 -05:00
bool OnTextEdit ( const long lparam ) ;
2026-02-24 20:47:56 -05:00
bool OnChangeComBox ( const long lparam ) ;
2026-03-26 06:46:59 -05:00
bool OnClickDec ( const long lparam ) ;
bool OnClickInc ( const long lparam ) ;
2026-03-13 19:46:30 -05:00
//---
void UpdateStateInTable ( const int index , const int state ) ;
2026-03-18 08:46:51 -05:00
//---
2026-03-18 12:55:47 -05:00
// Extra utilitarios desde afuera (llamdaos extenamtne o por el backend)
2026-03-18 08:46:51 -05:00
void SincronizeFrontendOfBackend ( const uint8_t flags ) ;
2026-03-18 12:55:47 -05:00
void AddTaskToTable ( const TaskTester & task ) ;
2026-03-18 08:46:51 -05:00
bool CleanAllTask ( ) ;
2026-04-10 15:42:04 -05:00
bool RunAllTask ( int & arr [ ] ) ; // retornar los indices de las tareas ejecutadas
2026-02-24 20:47:56 -05:00
} ;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-03-13 15:20:27 -05:00
bool CTaskRunerAiTabDGenMain : : Create ( CWndCreate * p , CWindow & main_window , int top_gap , int left_gap , int right_gap , int bottom_gap )
2026-02-24 20:47:56 -05:00
{
//---
2026-03-13 15:20:27 -05:00
string txt [ TASKRUNERAIDGENMAIN_TAB_TOTAL ] = { m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_tabs ) + " _0 " ] , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_tabs ) + " _1 " ] } ;
int width [ TASKRUNERAIDGENMAIN_TAB_TOTAL ] = { 70 , 80 } ;
color clrs_tab_label [ TASKRUNERAIDGENMAIN_TAB_TOTAL ] = { AIDATATASKRUNER_COLOR_TEXT_SECONDARY , AIDATATASKRUNER_COLOR_TEXT_SECONDARY } ;
color clrs_tab_label_pressed [ TASKRUNERAIDGENMAIN_TAB_TOTAL ] = { AIDATATASKRUNER_COLOR_ACCENT , AIDATATASKRUNER_COLOR_ACCENT } ;
2026-02-25 11:10:09 -05:00
top_gap + = 24 ;
left_gap + = 4 ;
right_gap + = 4 ;
bottom_gap + = 4 ;
2026-03-13 08:17:25 -05:00
//---
m_tabs . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB ) ;
m_tabs . BackColorHover ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_HOVER ) ;
m_tabs . BackColorPressed ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_tabs . BackColorLocked ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_LOCKED ) ;
m_tabs . BorderColor ( AIDATATASKRUNER_COLOR_BORDER ) ;
m_tabs . BorderColorHover ( AIDATATASKRUNER_COLOR_BORDER_HOVER ) ;
m_tabs . BorderColorPressed ( AIDATATASKRUNER_COLOR_BORDER_HOVER ) ;
m_tabs . BorderColorLocked ( AIDATATASKRUNER_COLOR_BORDER ) ;
//m_tabs.LabelColor(AIDATATASKRUNER_COLOR_TEXT_SECONDARY);
//m_tabs.LabelColorLocked(AIDATATASKRUNER_COLOR_TEXT_LOCKED);
//---
2026-03-13 15:20:27 -05:00
if ( ! p . CreateTabs ( m_tabs , main_window , 0 , m_base_tab , m_base_tab_idx , left_gap , top_gap , 0 , 0 , txt , width , clrs_tab_label , clrs_tab_label_pressed ,
2026-03-13 08:17:25 -05:00
TABS_TOP , true , true , right_gap , bottom_gap ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_tabs ) ;
return false ;
}
//---
if ( ! CreateMainTab ( p , main_window , m_tabs , TASKRUNERAIDGENMAIN_TAB_MAIN , top_gap , left_gap , right_gap , bottom_gap ) )
return false ;
//---
if ( ! CreatePendigTab ( p , main_window , m_tabs , TASKRUNERAIDGENMAIN_TAB_TASK , top_gap , left_gap , right_gap , bottom_gap ) )
return false ;
//---
return true ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : CreateMainTab ( CWndCreate * p , CWindow & main_window , CTabs & general_tabs , int tab_index , int top_gap , int left_gap , int right_gap , int bottom_gap )
{
//---
2026-03-13 16:00:22 -05:00
const int initial_x = left_gap + 5 ;
2026-02-24 20:47:56 -05:00
int x = initial_x ;
int y = top_gap + 10 ;
//---
2026-03-13 16:00:22 -05:00
if ( ! CreateMainTab_BasicConfig ( p , main_window , general_tabs , tab_index , initial_x , x , y ) )
return false ;
if ( ! CreateMainTab_NewTask ( p , main_window , general_tabs , tab_index , initial_x , x , y ) )
return false ;
//--- Tarea actual
TaskTester t ;
t . start_date = m_section_nt_dc_dt_start . SelectedDate ( ) ;
t . end_date = m_section_nt_dc_dt_end . SelectedDate ( ) ;
t . timeframe = StrShortTimeframeToEnumNoRef ( m_section_nt_combox_timerame . GetValue ( ) ) ;
t . set_file = m_section_nt_edit_st_file . GetValue ( ) ;
t . symbol = m_section_nt_edit_symbol . GetValue ( ) ;
t . symbol_folder = m_section_nt_edit_symbol_folder . GetValue ( ) ;
t . label = m_section_nt_edit_label . GetValue ( ) ;
t . label_id = int ( m_section_nt_edit_label_id . GetValue ( ) ) ;
m_runer . InitCurrentTask ( t ) ;
//---
return true ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
# define AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ( 5 )
2026-03-13 08:17:25 -05:00
# define AIDATATASKRUNER_MAINTAB_GAP_YSEC ( 15 )
# define AIDATATASKRUNER_MAINTAB_GAP_YPRIM ( 25 )
2026-03-25 07:17:05 -05:00
# define AIDATATASKRUNER_MAINTAB_GAP_YSEC_FIRST ( 14 )
2026-03-13 16:00:22 -05:00
# define AITASKRUNER_MAX_VLAUE_LABEL_ID ( 1000000000000.0 )
2026-03-13 08:17:25 -05:00
2026-03-13 16:00:22 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : CreateMainTab_BasicConfig ( CWndCreate * p , CWindow & main_window , CTabs & general_tabs , int tab_index , const int initial_x , int & x , int & y )
{
2026-03-13 08:17:25 -05:00
//---
m_label_basic_config . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_label_basic_config . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_PRIMARY ) ;
2026-02-24 20:47:56 -05:00
m_label_basic_config . FontSize ( 14 ) ;
m_label_basic_config . Font ( " Arial " ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextLabel ( m_label_basic_config , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_label_basic_config ) ] ,
2026-03-14 11:35:01 -05:00
main_window , 0 , general_tabs , tab_index , x , y , 130 ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_label_basic_config ) ;
return false ;
}
2026-03-13 08:17:25 -05:00
2026-03-14 09:06:05 -05:00
//---
x + = m_label_basic_config . XSize ( ) + 20 ;
//---
2026-03-17 07:50:47 -05:00
//Print(m_section_bsic_buttom_load.XSize());
2026-03-14 09:06:05 -05:00
m_section_bsic_buttom_load . FontSize ( 9 ) ;
m_section_bsic_buttom_load . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_bsic_buttom_load . BackColor ( AIDATATASKRUNER_COLOR_BTN_BACK ) ;
m_section_bsic_buttom_load . BorderColor ( AIDATATASKRUNER_COLOR_BTN_BORDER ) ;
2026-03-17 07:50:47 -05:00
m_section_bsic_buttom_load . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_bsic_buttom_load ) ) ) ;
2026-03-14 09:06:05 -05:00
if ( ! p . CreateButton ( m_section_bsic_buttom_load , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_buttom_load ) ] ,
2026-03-14 11:35:01 -05:00
main_window , 0 , general_tabs , tab_index , x , y + 3 , 125 ) )
2026-03-14 09:06:05 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_bsic_buttom_load ) ;
return false ;
}
x + = m_section_bsic_buttom_load . XSize ( ) + 18 ;
//---
m_section_bsic_buttom_save . FontSize ( 9 ) ;
m_section_bsic_buttom_save . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_bsic_buttom_save . BackColor ( AIDATATASKRUNER_COLOR_BTN_BACK ) ;
m_section_bsic_buttom_save . BorderColor ( AIDATATASKRUNER_COLOR_BTN_BORDER ) ;
2026-03-17 07:50:47 -05:00
m_section_bsic_buttom_save . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_bsic_buttom_save ) ) ) ;
2026-03-14 09:06:05 -05:00
if ( ! p . CreateButton ( m_section_bsic_buttom_save , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_buttom_save ) ] ,
2026-03-14 11:35:01 -05:00
main_window , 0 , general_tabs , tab_index , x , y + 3 , 125 ) )
2026-03-14 09:06:05 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_bsic_buttom_save ) ;
return false ;
}
2026-03-25 09:39:28 -05:00
2026-03-14 11:35:01 -05:00
//--- El y se mueve luego
y + = m_label_basic_config . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC_FIRST ;
2026-03-14 09:06:05 -05:00
//---
x = initial_x ;
2026-03-25 06:48:29 -05:00
2026-03-13 16:00:22 -05:00
//---
2026-03-25 06:48:29 -05:00
m_section_bsic_label_files . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_bsic_label_files . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_bsic_label_files . FontSize ( 10 ) ;
m_section_bsic_label_files . Font ( " Arial " ) ;
2026-03-25 07:17:05 -05:00
if ( ! p . CreateTextLabel ( m_section_bsic_label_files , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_label_files ) ] ,
2026-03-25 06:48:29 -05:00
main_window , 0 , general_tabs , tab_index , x , y , 100 ) )
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_bsic_label_files ) ;
return false ;
}
2026-03-25 07:17:05 -05:00
x + = m_section_bsic_label_files . XSize ( ) + 10 ;
2026-03-25 06:48:29 -05:00
2026-03-25 07:17:05 -05:00
m_section_bsic_label_files_val . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_bsic_label_files_val . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
2026-03-25 06:48:29 -05:00
m_section_bsic_label_files_val . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_bsic_label_files_val . FontSize ( 10 ) ;
m_section_bsic_label_files_val . Font ( " Arial " ) ;
m_section_bsic_label_files_val . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_bsic_label_files_val ) ) ) ;
2026-03-25 07:17:05 -05:00
m_section_bsic_label_files_val . LabelXGap ( 4 ) ;
m_section_bsic_label_files_val . LabelYGap ( 2 ) ;
2026-03-25 06:48:29 -05:00
if ( ! p . CreateTextLabel ( m_section_bsic_label_files_val , " " ,
main_window , 0 , general_tabs , tab_index , x , y , 300 ) )
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_bsic_label_files_val ) ;
return false ;
}
x + = m_section_bsic_label_files_val . XSize ( ) + 10 ;
2026-03-13 08:17:25 -05:00
2026-03-25 06:48:29 -05:00
m_section_bsic_btn_label_files_browse . FontSize ( 9 ) ;
m_section_bsic_btn_label_files_browse . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_bsic_btn_label_files_browse . BackColor ( AIDATATASKRUNER_COLOR_BTN_BACK ) ;
m_section_bsic_btn_label_files_browse . BorderColor ( AIDATATASKRUNER_COLOR_BTN_BORDER ) ;
m_section_bsic_btn_label_files_browse . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_bsic_btn_label_files_browse ) ) ) ;
if ( ! p . CreateButton ( m_section_bsic_btn_label_files_browse , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_btn_label_files_browse ) ] ,
2026-03-25 07:17:05 -05:00
main_window , 0 , general_tabs , tab_index , x , y , 100 ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
AIDATATASKRUNER_ERROR_CREATION ( m_section_bsic_btn_label_files_browse ) ;
2026-02-24 20:47:56 -05:00
return false ;
}
2026-03-25 06:48:29 -05:00
2026-03-25 09:45:53 -05:00
x + = m_section_bsic_btn_label_files_browse . XSize ( ) + 6 ;
2026-03-25 09:39:28 -05:00
m_section_bsic_btn_label_files_template . FontSize ( 9 ) ;
m_section_bsic_btn_label_files_template . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_bsic_btn_label_files_template . BackColor ( AIDATATASKRUNER_COLOR_BTN_BACK ) ;
m_section_bsic_btn_label_files_template . BorderColor ( AIDATATASKRUNER_COLOR_BTN_BORDER ) ;
m_section_bsic_btn_label_files_template . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_bsic_btn_label_files_template ) ) ) ;
if ( ! p . CreateButton ( m_section_bsic_btn_label_files_template , " ? " , main_window , 0 , general_tabs , tab_index , x , y , 50 ) )
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_bsic_btn_label_files_template ) ;
return false ;
}
2026-03-25 07:17:05 -05:00
//---
x = initial_x ;
2026-03-25 06:48:29 -05:00
y + = m_section_bsic_label_files . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC ; // usamos el ysize del label
//---
string texto ;
int width ;
2026-02-24 20:47:56 -05:00
// Expert path
2026-03-13 16:00:22 -05:00
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_edit_expert_path ) ] ;
2026-02-25 11:10:09 -05:00
m_section_bsic_edit_expert_path . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_bsic_edit_expert_path . Font ( " Arial " ) ;
m_section_bsic_edit_expert_path . CanvasFontSet ( ) ;
width = m_section_bsic_edit_expert_path . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_bsic_edit_expert_path . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_bsic_edit_expert_path . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_bsic_edit_expert_path . GetTextBoxPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_bsic_edit_expert_path . GetTextBoxPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
m_section_bsic_edit_expert_path . GetTextBoxPointer ( ) . DefaultTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_bsic_edit_expert_path . GetTextBoxPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_bsic_edit_expert_path . GetTextBoxPointer ( ) . SelectedBackColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_SELECTED ) ;
m_section_bsic_edit_expert_path . GetTextBoxPointer ( ) . SelectedTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_HIGHLIGHT ) ;
2026-03-17 07:50:47 -05:00
m_section_bsic_edit_expert_path . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_bsic_edit_expert_path ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextEdit ( m_section_bsic_edit_expert_path , texto ,
main_window , 0 , general_tabs , tab_index , false , x , y , width + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD + 300 , 300 , " " ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_bsic_edit_expert_path ) ;
return false ;
}
2026-03-13 08:17:25 -05:00
y + = m_section_bsic_edit_expert_path . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC ;
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
// Progress csv
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_edit_progres_csv_file ) ] ;
2026-02-25 11:10:09 -05:00
m_section_bsic_edit_progres_csv_file . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_bsic_edit_progres_csv_file . Font ( " Arial " ) ;
m_section_bsic_edit_progres_csv_file . CanvasFontSet ( ) ;
width = m_section_bsic_edit_progres_csv_file . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_bsic_edit_progres_csv_file . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_bsic_edit_progres_csv_file . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_bsic_edit_progres_csv_file . GetTextBoxPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_bsic_edit_progres_csv_file . GetTextBoxPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
m_section_bsic_edit_progres_csv_file . GetTextBoxPointer ( ) . DefaultTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_bsic_edit_progres_csv_file . GetTextBoxPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_bsic_edit_progres_csv_file . GetTextBoxPointer ( ) . SelectedBackColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_SELECTED ) ;
m_section_bsic_edit_progres_csv_file . GetTextBoxPointer ( ) . SelectedTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_HIGHLIGHT ) ;
2026-03-17 07:50:47 -05:00
m_section_bsic_edit_progres_csv_file . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_bsic_edit_progres_csv_file ) ) ) ;
2026-03-14 16:39:04 -05:00
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextEdit ( m_section_bsic_edit_progres_csv_file , texto ,
2026-03-14 07:39:48 -05:00
main_window , 0 , general_tabs , tab_index , false , x , y , width + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD + 300 , 300 , " " ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_bsic_edit_progres_csv_file ) ;
return false ;
}
2026-03-13 08:17:25 -05:00
y + = m_section_bsic_edit_progres_csv_file . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC ;
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
// Main folder
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_edit_main_folder ) ] ;
2026-02-25 11:10:09 -05:00
m_section_bsic_edit_main_folder . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_bsic_edit_main_folder . Font ( " Arial " ) ;
m_section_bsic_edit_main_folder . CanvasFontSet ( ) ;
width = m_section_bsic_edit_main_folder . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_bsic_edit_main_folder . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_bsic_edit_main_folder . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_bsic_edit_main_folder . GetTextBoxPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_bsic_edit_main_folder . GetTextBoxPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
m_section_bsic_edit_main_folder . GetTextBoxPointer ( ) . DefaultTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_bsic_edit_main_folder . GetTextBoxPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_bsic_edit_main_folder . GetTextBoxPointer ( ) . SelectedBackColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_SELECTED ) ;
m_section_bsic_edit_main_folder . GetTextBoxPointer ( ) . SelectedTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_HIGHLIGHT ) ;
2026-03-17 07:50:47 -05:00
m_section_bsic_edit_main_folder . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_bsic_edit_main_folder ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextEdit ( m_section_bsic_edit_main_folder , texto ,
main_window , 0 , general_tabs , tab_index , false , x , y , width + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD + 250 , 250 , " " ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_bsic_edit_main_folder ) ;
return false ;
}
2026-02-25 11:10:09 -05:00
y + = m_section_bsic_edit_main_folder . YSize ( ) + 30 ;
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
//---
return true ;
}
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : CreateMainTab_NewTask ( CWndCreate * p , CWindow & main_window , CTabs & general_tabs , int tab_index , const int initial_x , int & x , int & y )
{
2026-02-24 20:47:56 -05:00
//---
2026-03-13 08:17:25 -05:00
m_label_new_task . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_label_new_task . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_PRIMARY ) ;
2026-02-24 20:47:56 -05:00
m_label_new_task . FontSize ( 14 ) ;
m_label_new_task . Font ( " Arial " ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextLabel ( m_label_new_task , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_label_new_task ) ] ,
main_window , 0 , general_tabs , tab_index , x , y , 200 ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_label_new_task ) ;
return false ;
}
2026-03-13 08:17:25 -05:00
y + = m_label_new_task . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC_FIRST ;
2026-02-24 20:47:56 -05:00
//---
2026-03-13 16:00:22 -05:00
string texto ;
int width ;
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
// Symbol
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_symbol ) ] ;
2026-02-25 11:10:09 -05:00
m_section_nt_edit_symbol . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_nt_edit_symbol . Font ( " Arial " ) ;
m_section_nt_edit_symbol . CanvasFontSet ( ) ;
width = m_section_nt_edit_symbol . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_nt_edit_symbol . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_edit_symbol . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_nt_edit_symbol . GetTextBoxPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_nt_edit_symbol . GetTextBoxPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
m_section_nt_edit_symbol . GetTextBoxPointer ( ) . DefaultTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_symbol . GetTextBoxPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_symbol . GetTextBoxPointer ( ) . SelectedBackColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_SELECTED ) ;
m_section_nt_edit_symbol . GetTextBoxPointer ( ) . SelectedTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_HIGHLIGHT ) ;
2026-03-17 07:50:47 -05:00
m_section_nt_edit_symbol . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_nt_edit_symbol ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextEdit ( m_section_nt_edit_symbol , texto ,
main_window , 0 , general_tabs , tab_index , false , x , y , width + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD + 150 , 150 , " " ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_nt_edit_symbol ) ;
return false ;
}
2026-03-13 16:00:22 -05:00
x + = m_section_nt_edit_symbol . XSize ( ) + 20 ;
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
// Symbol folder
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_symbol_folder ) ] ;
2026-02-25 11:10:09 -05:00
m_section_nt_edit_symbol_folder . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_nt_edit_symbol_folder . Font ( " Arial " ) ;
m_section_nt_edit_symbol_folder . CanvasFontSet ( ) ;
width = m_section_nt_edit_symbol_folder . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_nt_edit_symbol_folder . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_edit_symbol_folder . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_nt_edit_symbol_folder . GetTextBoxPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_nt_edit_symbol_folder . GetTextBoxPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
m_section_nt_edit_symbol_folder . GetTextBoxPointer ( ) . DefaultTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_symbol_folder . GetTextBoxPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_symbol_folder . GetTextBoxPointer ( ) . SelectedBackColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_SELECTED ) ;
m_section_nt_edit_symbol_folder . GetTextBoxPointer ( ) . SelectedTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_HIGHLIGHT ) ;
2026-03-17 07:50:47 -05:00
m_section_nt_edit_symbol_folder . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_nt_edit_symbol_folder ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextEdit ( m_section_nt_edit_symbol_folder , texto ,
main_window , 0 , general_tabs , tab_index , false , x , y , width + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD + 150 , 150 , " " ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_nt_edit_symbol_folder ) ;
return false ;
}
2026-02-25 11:10:09 -05:00
x = initial_x ;
2026-03-13 16:00:22 -05:00
y + = m_section_nt_edit_symbol_folder . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC ;
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
// Timeframe
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_combox_timerame ) ] ;
2026-02-25 11:10:09 -05:00
m_section_nt_combox_timerame . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_nt_combox_timerame . Font ( " Arial " ) ;
m_section_nt_combox_timerame . CanvasFontSet ( ) ;
width = m_section_nt_combox_timerame . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_nt_combox_timerame . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_combox_timerame . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_nt_combox_timerame . GetListViewPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_nt_combox_timerame . GetListViewPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
m_section_nt_combox_timerame . GetListViewPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_combox_timerame . GetButtonPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_combox_timerame . GetButtonPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_nt_combox_timerame . GetButtonPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
2026-03-17 07:50:47 -05:00
m_section_nt_combox_timerame . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_nt_combox_timerame ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateCombobox ( m_section_nt_combox_timerame , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_combox_timerame ) ] ,
main_window , 0 , general_tabs , tab_index , false , x , y , width + 150 + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD , 150 , g_arr_str_timefrrames_short , 150 ) )
2026-02-24 20:47:56 -05:00
{
2026-03-13 16:00:22 -05:00
AIDATATASKRUNER_ERROR_CREATION ( m_section_nt_combox_timerame ) ;
2026-02-24 20:47:56 -05:00
return false ;
}
2026-03-13 08:17:25 -05:00
m_section_nt_combox_timerame . m_button . IconFile ( RESOURCE_DOWN_THIN_WHITE ) ;
m_section_nt_combox_timerame . m_button . IconFileLocked ( RESOURCE_DOWN_THIN_WHITE ) ;
m_section_nt_combox_timerame . m_button . CElement : : IconFilePressed ( RESOURCE_UP_THIN_WHITE ) ;
m_section_nt_combox_timerame . m_button . CElement : : IconFilePressedLocked ( RESOURCE_UP_THIN_WHITE ) ;
2026-03-13 16:00:22 -05:00
y + = m_section_nt_combox_timerame . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC ;
2026-03-13 08:17:25 -05:00
2026-02-24 20:47:56 -05:00
// Label
2026-03-13 16:00:22 -05:00
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_label ) ] ;
2026-02-25 11:10:09 -05:00
m_section_nt_edit_label . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_nt_edit_label . Font ( " Arial " ) ;
m_section_nt_edit_label . CanvasFontSet ( ) ;
width = m_section_nt_edit_label . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_nt_edit_label . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_edit_label . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_nt_edit_label . GetTextBoxPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_nt_edit_label . GetTextBoxPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
m_section_nt_edit_label . GetTextBoxPointer ( ) . DefaultTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_label . GetTextBoxPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_label . GetTextBoxPointer ( ) . SelectedBackColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_SELECTED ) ;
m_section_nt_edit_label . GetTextBoxPointer ( ) . SelectedTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_HIGHLIGHT ) ;
2026-03-17 07:50:47 -05:00
m_section_nt_edit_label . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_nt_edit_label ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextEdit ( m_section_nt_edit_label , texto ,
main_window , 0 , general_tabs , tab_index , false , x , y , width + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD + 200 , 200 , " " ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_nt_edit_label ) ;
return false ;
}
2026-02-25 11:10:09 -05:00
x + = m_section_nt_edit_label . XSize ( ) + 20 ;
2026-02-24 20:47:56 -05:00
// Label id
2026-03-13 16:00:22 -05:00
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_label_id ) ] ;
2026-02-25 11:10:09 -05:00
m_section_nt_edit_label_id . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_nt_edit_label_id . Font ( " Arial " ) ;
m_section_nt_edit_label_id . CanvasFontSet ( ) ;
width = m_section_nt_edit_label_id . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_nt_edit_label_id . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_edit_label_id . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_nt_edit_label_id . GetTextBoxPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_nt_edit_label_id . GetTextBoxPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
m_section_nt_edit_label_id . GetTextBoxPointer ( ) . DefaultTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_label_id . GetTextBoxPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_label_id . GetTextBoxPointer ( ) . SelectedBackColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_SELECTED ) ;
m_section_nt_edit_label_id . GetTextBoxPointer ( ) . SelectedTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_HIGHLIGHT ) ;
2026-03-17 07:50:47 -05:00
m_section_nt_edit_label_id . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_nt_edit_label_id ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextEdit ( m_section_nt_edit_label_id , texto ,
main_window , 0 , general_tabs , tab_index , false , x , y , width + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD + 175 , 175 , AITASKRUNER_MAX_VLAUE_LABEL_ID , 0 , 1 , 0 , 0 ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_nt_edit_label_id ) ;
return false ;
}
2026-03-13 16:00:22 -05:00
y + = m_section_nt_edit_label_id . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC ;
2026-02-24 20:47:56 -05:00
x = initial_x ;
2026-03-13 16:00:22 -05:00
// Fechas
const datetime end = CTimeUtils : : StartOfYear ( TimeCurrent ( ) ) ;
2026-02-24 20:47:56 -05:00
const datetime start = end - 31536000 ;
2026-03-13 16:00:22 -05:00
//
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_dc_dt_start ) ] ;
m_section_nt_dc_dt_start . FontSize ( 10 ) ;
m_section_nt_dc_dt_start . Font ( " Arial " ) ;
m_section_nt_dc_dt_start . CanvasFontSet ( ) ;
width = m_section_nt_dc_dt_start . m_canvas . TextWidth ( texto ) ;
2026-02-25 11:10:09 -05:00
m_section_nt_dc_dt_start . FontSize ( 10 ) ;
2026-03-13 08:17:25 -05:00
m_section_nt_dc_dt_start . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_dc_dt_start . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
2026-03-17 07:50:47 -05:00
m_section_nt_dc_dt_start . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_nt_dc_dt_start ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateDropCalendar ( m_section_nt_dc_dt_start , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_dc_dt_start ) ] ,
main_window , 0 , general_tabs , tab_index , x , y , width + 100 + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD , start ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_nt_dc_dt_start ) ;
return false ;
}
2026-02-25 11:10:09 -05:00
x + = m_section_nt_dc_dt_start . XSize ( ) + 20 ;
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
//
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_dc_dt_end ) ] ;
2026-02-25 11:10:09 -05:00
m_section_nt_dc_dt_end . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_nt_dc_dt_end . Font ( " Arial " ) ;
m_section_nt_dc_dt_end . CanvasFontSet ( ) ;
width = m_section_nt_dc_dt_end . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_nt_dc_dt_end . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_dc_dt_end . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
2026-03-17 07:50:47 -05:00
m_section_nt_dc_dt_end . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_nt_dc_dt_end ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateDropCalendar ( m_section_nt_dc_dt_end , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_dc_dt_end ) ] ,
main_window , 0 , general_tabs , tab_index , x , y , width + 100 + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD , end ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_nt_dc_dt_end ) ;
return false ;
}
x = initial_x ;
2026-03-13 16:00:22 -05:00
y + = m_section_nt_dc_dt_end . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC ;
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
// Set file
texto = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_st_file ) ] ;
2026-02-25 11:10:09 -05:00
m_section_nt_edit_st_file . FontSize ( 10 ) ;
2026-03-13 16:00:22 -05:00
m_section_nt_edit_st_file . Font ( " Arial " ) ;
m_section_nt_edit_st_file . CanvasFontSet ( ) ;
width = m_section_nt_edit_st_file . m_canvas . TextWidth ( texto ) ;
2026-03-13 08:17:25 -05:00
m_section_nt_edit_st_file . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_edit_st_file . BackColor ( AIDATATASKRUNER_COLOR_FONDO_SUBTAB_PRESSED ) ;
m_section_nt_edit_st_file . GetTextBoxPointer ( ) . BackColor ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ;
m_section_nt_edit_st_file . GetTextBoxPointer ( ) . BorderColor ( AIDATATASKRUNER_COLOR_EDIT_BORDER ) ;
m_section_nt_edit_st_file . GetTextBoxPointer ( ) . DefaultTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_st_file . GetTextBoxPointer ( ) . LabelColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_NORMAL ) ;
m_section_nt_edit_st_file . GetTextBoxPointer ( ) . SelectedBackColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_SELECTED ) ;
m_section_nt_edit_st_file . GetTextBoxPointer ( ) . SelectedTextColor ( AIDATATASKRUNER_COLOR_EDIT_TEXT_HIGHLIGHT ) ;
2026-03-17 07:50:47 -05:00
m_section_nt_edit_st_file . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_nt_edit_st_file ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateTextEdit ( m_section_nt_edit_st_file , texto ,
2026-03-31 13:12:02 -05:00
main_window , 0 , general_tabs , tab_index , false , x , y , width + AIDATATASKRUNER_MAINTAB_LABEL_X_PAD + 350 , 350 , " " ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_nt_edit_st_file ) ;
return false ;
}
2026-03-13 19:46:30 -05:00
y + = m_section_nt_edit_st_file . YSize ( ) + AIDATATASKRUNER_MAINTAB_GAP_YSEC ;
2026-02-24 20:47:56 -05:00
2026-03-13 16:00:22 -05:00
// Add task button
2026-03-13 08:17:25 -05:00
m_section_nt_buttom_add_task . FontSize ( 9 ) ;
m_section_nt_buttom_add_task . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_nt_buttom_add_task . BackColor ( AIDATATASKRUNER_COLOR_BTN_BACK ) ;
m_section_nt_buttom_add_task . BorderColor ( AIDATATASKRUNER_COLOR_BTN_BORDER ) ;
2026-03-17 07:50:47 -05:00
m_section_nt_buttom_add_task . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_nt_buttom_add_task ) ) ) ;
2026-03-13 16:00:22 -05:00
if ( ! p . CreateButton ( m_section_nt_buttom_add_task , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_buttom_add_task ) ] ,
main_window , 0 , general_tabs , tab_index , x , y , 125 ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_nt_buttom_add_task ) ;
return false ;
}
2026-03-13 09:38:25 -05:00
2026-03-13 16:00:22 -05:00
//---
2026-02-24 20:47:56 -05:00
return true ;
}
2026-03-13 16:00:22 -05:00
2026-02-24 20:47:56 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : CreatePendigTab ( CWndCreate * p , CWindow & main_window , CTabs & general_tabs , int tab_index , int top_gap , int left_gap , int right_gap , int bottom_gap )
{
//---
int x = left_gap + 5 ;
int y = top_gap + 10 ;
2026-03-13 16:00:22 -05:00
//---
# define TASKRUNERAIDGENMAIN_PENDINGTAB_BOOTON_XSIZE ( 130 )
# define TASKRUNERAIDGENMAIN_PENDINGTAB_BOOTON_XGAP ( 18 )
2026-02-24 20:47:56 -05:00
//---
2026-03-13 08:17:25 -05:00
m_section_buttom_pending_load . FontSize ( 9 ) ;
m_section_buttom_pending_load . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_buttom_pending_load . BackColor ( AIDATATASKRUNER_COLOR_BTN_BACK ) ;
m_section_buttom_pending_load . BorderColor ( AIDATATASKRUNER_COLOR_BTN_BORDER ) ;
2026-03-30 15:00:40 -05:00
m_section_buttom_pending_load . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_buttom_pending_load ) ) ) ;
2026-03-13 11:50:06 -05:00
if ( ! p . CreateButton ( m_section_buttom_pending_load , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_buttom_pending_load ) ] ,
2026-03-13 16:00:22 -05:00
main_window , 0 , general_tabs , tab_index , x , y , TASKRUNERAIDGENMAIN_PENDINGTAB_BOOTON_XSIZE ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_buttom_pending_load ) ;
return false ;
}
x + = m_section_buttom_pending_load . XSize ( ) + 20 ;
2026-03-13 08:17:25 -05:00
//
m_section_buttom_pending_save . FontSize ( 9 ) ;
m_section_buttom_pending_save . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_buttom_pending_save . BackColor ( AIDATATASKRUNER_COLOR_BTN_BACK ) ;
m_section_buttom_pending_save . BorderColor ( AIDATATASKRUNER_COLOR_BTN_BORDER ) ;
2026-03-30 15:00:40 -05:00
m_section_buttom_pending_save . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_buttom_pending_save ) ) ) ;
2026-03-13 11:50:06 -05:00
if ( ! p . CreateButton ( m_section_buttom_pending_save , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_buttom_pending_save ) ]
2026-03-13 16:00:22 -05:00
, main_window , 0 , general_tabs , tab_index , x , y , TASKRUNERAIDGENMAIN_PENDINGTAB_BOOTON_XSIZE ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_buttom_pending_save ) ;
return false ;
}
x + = m_section_buttom_pending_save . XSize ( ) + 20 ;
2026-03-13 08:17:25 -05:00
//
m_section_buttom_execute_all . FontSize ( 9 ) ;
m_section_buttom_execute_all . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_buttom_execute_all . BackColor ( AIDATATASKRUNER_COLOR_BTN_BACK ) ;
m_section_buttom_execute_all . BorderColor ( AIDATATASKRUNER_COLOR_BTN_BORDER ) ;
2026-03-30 15:00:40 -05:00
m_section_buttom_execute_all . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_buttom_execute_all ) ) ) ;
2026-03-13 11:50:06 -05:00
if ( ! p . CreateButton ( m_section_buttom_execute_all , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_buttom_execute_all ) ]
2026-03-13 16:00:22 -05:00
, main_window , 0 , general_tabs , tab_index , x , y , TASKRUNERAIDGENMAIN_PENDINGTAB_BOOTON_XSIZE ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_buttom_execute_all ) ;
return false ;
}
x + = m_section_buttom_execute_all . XSize ( ) + 20 ;
2026-03-13 08:17:25 -05:00
//
m_section_buttom_clean . FontSize ( 9 ) ;
m_section_buttom_clean . LabelColor ( AIDATATASKRUNER_COLOR_TEXT_SECONDARY ) ;
m_section_buttom_clean . BackColor ( AIDATATASKRUNER_COLOR_BTN_BACK ) ;
m_section_buttom_clean . BorderColor ( AIDATATASKRUNER_COLOR_BTN_BORDER ) ;
2026-03-30 15:00:40 -05:00
m_section_buttom_clean . Tooltip ( m_language . Tooltip ( GUIBASE_COMPONENT_NAME ( m_section_buttom_clean ) ) ) ;
2026-03-13 11:50:06 -05:00
if ( ! p . CreateButton ( m_section_buttom_clean , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_buttom_clean ) ]
2026-03-13 16:00:22 -05:00
, main_window , 0 , general_tabs , tab_index , x , y , TASKRUNERAIDGENMAIN_PENDINGTAB_BOOTON_XSIZE ) )
2026-02-24 20:47:56 -05:00
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_buttom_clean ) ;
return false ;
}
//---
y + = 25 ;
x = left_gap + 5 ;
# define AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL ( 9 )
# define AIDATATASKRUNER_TASK_TABLLE_SIMBOLO ( 0 )
# define AIDATATASKRUNER_TASK_TABLLE_SIMBOLO_FOLDER ( 1 )
# define AIDATATASKRUNER_TASK_TABLLE_TIMEFRAME ( 2 )
# define AIDATATASKRUNER_TASK_TABLLE_LABEL ( 3 )
# define AIDATATASKRUNER_TASK_TABLLE_LABEL_ID ( 4 )
# define AIDATATASKRUNER_TASK_TABLLE_DESDE ( 5 )
# define AIDATATASKRUNER_TASK_TABLLE_HASTA ( 6 )
# define AIDATATASKRUNER_TASK_TABLLE_ESTADO ( 7 )
# define AIDATATASKRUNER_TASK_TABLLE_MODIFICAR ( 8 )
//---
2026-03-13 11:50:06 -05:00
string headers [ ] ;
2026-03-13 15:20:27 -05:00
const string header_str = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_pending_table ) + " _header " ] ;
2026-03-13 11:50:06 -05:00
if ( ! StrTo : : CstArray ( headers , header_str , ' | ' , true ) )
2026-02-24 20:47:56 -05:00
{
2026-03-13 11:50:06 -05:00
LogError ( StringFormat ( " Fallo al hacer str to arrary str, str = %s " , header_str ) , FUNCION_ACTUAL ) ;
return false ;
}
2026-02-24 20:47:56 -05:00
2026-03-13 11:50:06 -05:00
ArrayResize ( headers , AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL ) ; // Trim en caso de exendete
// Aling
2026-02-24 20:47:56 -05:00
ENUM_ALIGN_MODE align [ AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL ] ;
ArrayFill ( align , 0 , AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL , ALIGN_LEFT ) ;
2026-03-13 08:17:25 -05:00
//--- Colores
// Headers
m_section_pending_table . HeadersColor ( C ' 0x2A , 0x4A , 0x6A ' ) ; // azul oscuro
m_section_pending_table . HeadersColorHover ( AIDATATASKRUNER_COLOR_ACCENT ) ; // azul accent hover
m_section_pending_table . HeadersColorPressed ( C ' 0x1E , 0x38 , 0x52 ' ) ; // más oscuro al presionar
m_section_pending_table . HeadersTextColor ( AIDATATASKRUNER_COLOR_TEXT_PRIMARY ) ;
// Celdas
m_section_pending_table . CellColor ( AIDATATASKRUNER_COLOR_FONDO_WIN ) ; // C'37,40,54'
m_section_pending_table . CellColorHover ( AIDATATASKRUNER_COLOR_EDIT_BACK ) ; // C'0x37,0x3D,0x53' hover sutil
m_section_pending_table . CElement : : BackColor ( AIDATATASKRUNER_COLOR_FONDO_WIN ) ;
// Grid
m_section_pending_table . GridColor ( AIDATATASKRUNER_COLOR_BORDER ) ; // C'58,63,82' sutil
// Texto celdas - vía CellInitialize usa m_label_color
// necesitas setearlo antes de crear:
m_section_pending_table . m_label_color = AIDATATASKRUNER_COLOR_TEXT_SECONDARY ;
//---
CScrollH * sh = m_section_pending_table . GetScrollHPointer ( ) ;
// Fondo de la barra (el riel)
sh . BackColor ( AIDATATASKRUNER_COLOR_FONDO_TAB ) ; // C'26,29,39' - oscuro
// Ползunок (thumb) en 3 estados
sh . ThumbColor ( AIDATATASKRUNER_COLOR_BORDER ) ; // C'58,63,82' - reposo sutil
sh . ThumbColorHover ( AIDATATASKRUNER_COLOR_BORDER_HOVER ) ; // C'61,142,240' - hover azul
sh . ThumbColorPressed ( AIDATATASKRUNER_COLOR_ACCENT ) ; // C'0x69,0xA8,0xF3' - presionado
// Forzar iconos blancos
sh . IncFile ( ( string ) RESOURCE_SCROLL_LEFT_WHITE ) ;
sh . IncFileLocked ( ( string ) RESOURCE_SCROLL_LEFT_WHITE ) ;
sh . IncFilePressed ( ( string ) RESOURCE_SCROLL_LEFT_WHITE ) ;
sh . DecFile ( ( string ) RESOURCE_SCROLL_RIGHT_WHITE ) ;
sh . DecFileLocked ( ( string ) RESOURCE_SCROLL_RIGHT_WHITE ) ;
sh . DecFilePressed ( ( string ) RESOURCE_SCROLL_RIGHT_WHITE ) ;
//--- Base
2026-02-24 20:47:56 -05:00
m_section_pending_table . CellYSize ( 30 ) ;
2026-03-13 09:38:25 -05:00
m_section_pending_table . FontSize ( 10 ) ;
2026-02-24 20:47:56 -05:00
m_section_pending_table . HeaderYSize ( 25 ) ;
m_section_pending_table . IsSortMode ( true ) ;
m_section_pending_table . DefaultTextAlign ( ALIGN_LEFT ) ;
//
m_section_pending_table . TableSize ( AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL , 1 ) ;
//
m_section_pending_table . DataType ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO , TYPE_STRING ) ;
2026-03-13 09:38:25 -05:00
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO , 0 , " " ) ;
2026-02-24 20:47:56 -05:00
m_section_pending_table . DataType ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO_FOLDER , TYPE_STRING ) ;
2026-03-13 09:38:25 -05:00
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO_FOLDER , 0 , " " ) ;
2026-02-24 20:47:56 -05:00
m_section_pending_table . DataType ( AIDATATASKRUNER_TASK_TABLLE_TIMEFRAME , TYPE_STRING ) ;
2026-03-13 09:38:25 -05:00
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_TIMEFRAME , 0 , " " ) ;
2026-02-24 20:47:56 -05:00
m_section_pending_table . DataType ( AIDATATASKRUNER_TASK_TABLLE_LABEL , TYPE_STRING ) ;
2026-03-13 09:38:25 -05:00
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL , 0 , " " ) ;
2026-02-24 20:47:56 -05:00
m_section_pending_table . DataType ( AIDATATASKRUNER_TASK_TABLLE_LABEL_ID , TYPE_LONG ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL_ID , 0 , " 0 " ) ;
m_section_pending_table . DataType ( AIDATATASKRUNER_TASK_TABLLE_DESDE , TYPE_DATETIME ) ;
2026-03-13 09:38:25 -05:00
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_DESDE , 0 , TimeToString ( 0 ) ) ;
2026-02-24 20:47:56 -05:00
m_section_pending_table . DataType ( AIDATATASKRUNER_TASK_TABLLE_HASTA , TYPE_DATETIME ) ;
2026-03-13 09:38:25 -05:00
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_HASTA , 0 , TimeToString ( 0 ) ) ;
2026-02-24 20:47:56 -05:00
m_section_pending_table . DataType ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , TYPE_STRING ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , 0 , " " ) ;
2026-03-13 09:38:25 -05:00
// m_section_pending_table.SetImages(AIDATATASKRUNER_TASK_TABLLE_ESTADO, 0, g_taskruner_ai_dgen_main_images);
// m_section_pending_table.ChangeImage(AIDATATASKRUNER_TASK_TABLLE_ESTADO, 0, 2); // gris
2026-02-24 20:47:56 -05:00
// m_section_pending_table.DataType(AIDATATASKRUNER_TASK_TABLLE_MODIFICAR, TYPE_DATETIME);
//
int arr_offset_imgeage_x [ AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL ] ;
int arr_offset_imgeage_y [ AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL ] ;
ArrayFill ( arr_offset_imgeage_x , 0 , AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL , 0 ) ;
ArrayFill ( arr_offset_imgeage_y , 0 , AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL , 0 ) ;
2026-03-11 22:20:22 -05:00
arr_offset_imgeage_y [ AIDATATASKRUNER_TASK_TABLLE_ESTADO ] = 5 ;
arr_offset_imgeage_x [ AIDATATASKRUNER_TASK_TABLLE_ESTADO ] = 5 ;
2026-02-24 20:47:56 -05:00
m_section_pending_table . ImageXOffset ( arr_offset_imgeage_x ) ;
m_section_pending_table . ImageYOffset ( arr_offset_imgeage_y ) ;
2026-03-11 22:20:22 -05:00
//---
int text_x_offset [ AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL ] ;
: : ArrayInitialize ( text_x_offset , 10 ) ;
2026-03-13 09:38:25 -05:00
text_x_offset [ AIDATATASKRUNER_TASK_TABLLE_ESTADO ] + = 15 ;
2026-03-11 22:20:22 -05:00
m_section_pending_table . TextXOffset ( text_x_offset ) ;
2026-02-24 20:47:56 -05:00
// Width
//---
int widths [ AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL ] ;
//--- Hagamos un resize debdio a que los nombres de los params y modelos aveces son GRADENS
widths [ AIDATATASKRUNER_TASK_TABLLE_SIMBOLO ] = 100 ;
widths [ AIDATATASKRUNER_TASK_TABLLE_SIMBOLO_FOLDER ] = 100 ;
widths [ AIDATATASKRUNER_TASK_TABLLE_TIMEFRAME ] = 125 ;
widths [ AIDATATASKRUNER_TASK_TABLLE_LABEL ] = 150 ;
widths [ AIDATATASKRUNER_TASK_TABLLE_LABEL_ID ] = 125 ;
widths [ AIDATATASKRUNER_TASK_TABLLE_DESDE ] = 175 ;
widths [ AIDATATASKRUNER_TASK_TABLLE_HASTA ] = 175 ;
widths [ AIDATATASKRUNER_TASK_TABLLE_ESTADO ] = 175 ;
widths [ AIDATATASKRUNER_TASK_TABLLE_MODIFICAR ] = 150 ;
//---
m_section_pending_table . ColumnsWidth ( widths ) ;
//---
if ( ! p . CreateTable (
m_section_pending_table ,
main_window ,
0 ,
general_tabs ,
tab_index ,
AIDATATASKRUNER_TASK_TABLLE_COL_TOTAL ,
1 ,
headers ,
x ,
y ,
0 ,
0 ,
false ,
false ,
right_gap + 5 ,
2026-03-20 17:16:21 -05:00
bottom_gap + 5
2026-02-24 20:47:56 -05:00
) )
{
AIDATATASKRUNER_ERROR_CREATION ( m_section_pending_table ) ;
return false ;
}
//---
return true ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : OnChangeDate ( const long lparam , const double dparam )
{
//---
if ( m_tabs . SelectedTab ( ) = = TASKRUNERAIDGENMAIN_TAB_MAIN )
{
if ( lparam = = m_section_nt_dc_dt_start . Id ( ) )
{
m_runer . OnCurrentTask_ModifyDateStart ( datetime ( long ( dparam ) ) ) ;
return true ;
}
if ( lparam = = m_section_nt_dc_dt_end . Id ( ) )
{
m_runer . OnCurrentTask_ModifyDateEnd ( datetime ( long ( dparam ) ) ) ;
return true ;
}
}
//---
return false ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : OnChangeComBox ( const long lparam )
{
//---
if ( m_tabs . SelectedTab ( ) = = TASKRUNERAIDGENMAIN_TAB_MAIN )
{
if ( lparam = = m_section_nt_combox_timerame . Id ( ) )
{
2026-02-25 11:10:09 -05:00
m_runer . OnCurrentTask_ModifyTimeframe ( g_arr_strtf_to_timeframes [ m_section_nt_combox_timerame . GetListViewPointer ( ) . SelectedItemIndex ( ) ] ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
}
//---
return false ;
}
2026-03-13 22:14:54 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CTaskRunerAiTabDGenMain : : UpdateStateInTable ( const int index , const int state )
{
2026-03-14 16:39:04 -05:00
m_section_pending_table . ChangeImage ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , index , state ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , index , g_taskruner_ai_dgen_main_images_label [ state ] , 0 ) ;
m_section_pending_table . Update ( true ) ;
2026-03-13 22:14:54 -05:00
}
2026-02-24 20:47:56 -05:00
//+------------------------------------------------------------------+
//| |
2026-02-24 10:16:05 -05:00
//+------------------------------------------------------------------+
2026-03-25 06:48:29 -05:00
bool CTaskRunerAiTabDGenMain : : OnClickBottomTabMain ( const long lparam )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
//---
if ( m_section_bsic_btn_label_files_browse . Id ( ) = = lparam )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
// EL archivo se debera de ubicar en el coomon out de la clase | Ademas de que en el main folder
2026-03-25 09:39:28 -05:00
if ( FileSelectDialog ( GUIBASE_MSG ( " filesel_filesmove " ) , m_runer . MainFolder ( ) , " JSON files (*.json)|*.json " ,
2026-03-25 06:48:29 -05:00
( ( ( m_runer . FileCommonOut ( ) & FILE_COMMON ) ! = 0 ? FSD_COMMON_FOLDER : 0 ) | FSD_FILE_MUST_EXIST ) , g_aitaskruner_arr_dyn , NULL ) ! = 1 )
{
2026-03-25 09:39:28 -05:00
MessageBox ( GUIBASE_MSG ( " err_browsefiles_no_sel " ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
2026-03-25 06:48:29 -05:00
return true ; // Acerto pero fallo
}
2026-03-14 11:35:01 -05:00
//---
2026-03-25 07:17:05 -05:00
m_section_bsic_label_files_val . LabelText ( g_aitaskruner_arr_dyn [ 0 ] ) ;
2026-03-25 06:48:29 -05:00
m_section_bsic_label_files_val . Update ( true ) ;
//---
2026-03-25 07:17:05 -05:00
if ( ! m_runer . OnCurrentTask_ModifyConfigMoveFile ( g_aitaskruner_arr_dyn [ 0 ] ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 09:39:28 -05:00
MessageBox ( StringFormat ( GUIBASE_MSG ( " err_browsefiles_files " ) , g_aitaskruner_arr_dyn [ 0 ] ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
}
return true ;
}
// boton ?
if ( m_section_bsic_btn_label_files_template . Id ( ) = = lparam )
{
2026-03-25 09:45:53 -05:00
// Usaremos el folder de templates a qui deberia de estar el archivo
if ( FileSelectDialog ( GUIBASE_MSG ( " filesel_filesmove_templates " ) , AIDATATASKRUNER_PATH_TEMPLATES , " JSON files (*.json)|*.json " ,
2026-03-27 12:33:09 -05:00
AIDATATASK_RUNNER_FSD_COMON_FLAG | FSD_FILE_MUST_EXIST , g_aitaskruner_arr_dyn , AIDATATASKRUNER_FILENAME_TEMPLATES_MOVEFILESS ) ! = 1 )
2026-03-25 09:39:28 -05:00
{
MessageBox ( GUIBASE_MSG ( " err_browsefiles_no_sel " ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
return true ; // Acerto pero fallo
}
//---
m_section_bsic_label_files_val . LabelText ( g_aitaskruner_arr_dyn [ 0 ] ) ;
m_section_bsic_label_files_val . Update ( true ) ;
//---
if ( ! m_runer . OnCurrentTask_ModifyConfigMoveFile ( g_aitaskruner_arr_dyn [ 0 ] ) )
{
MessageBox ( StringFormat ( GUIBASE_MSG ( " err_browsefiles_files " ) , g_aitaskruner_arr_dyn [ 0 ] ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
2026-03-25 06:48:29 -05:00
}
return true ;
}
2026-03-14 11:35:01 -05:00
2026-03-25 06:48:29 -05:00
//---
if ( m_section_nt_buttom_add_task . Id ( ) = = lparam )
{
if ( m_runer . OnCurrentTask_Add ( ) )
{
OnAddTask ( ) ;
2026-03-25 09:39:28 -05:00
MessageBox ( GUIBASE_MSG ( " msg_add_task_ok " ) , GUIBASE_COMMON ( " info " ) , MB_OK | MB_ICONINFORMATION ) ;
2026-03-25 06:48:29 -05:00
}
else
{
2026-03-25 09:39:28 -05:00
MessageBox ( StringFormat ( GUIBASE_MSG ( " msg_add_task_fail " ) , m_runer . m_last_error_msg ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
2026-03-25 06:48:29 -05:00
}
return true ;
}
2026-03-14 11:35:01 -05:00
2026-03-25 06:48:29 -05:00
//---
if ( m_section_bsic_buttom_load . Id ( ) = = lparam )
{
// Selecionanos
2026-03-25 09:39:28 -05:00
if ( FileSelectDialog ( GUIBASE_MSG ( " filesel_load_config " ) , AIDATATASKRUNER_PATH_TASK , " TXT files (*.txt)|*.txt " ,
2026-03-25 06:48:29 -05:00
AIDATATASK_RUNNER_FSD_COMON_FLAG | FSD_FILE_MUST_EXIST , g_aitaskruner_arr_dyn , NULL ) ! = 1 )
{
2026-03-25 09:39:28 -05:00
MessageBox ( GUIBASE_MSG ( " err_filesel_no_sel " ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
2026-03-25 06:48:29 -05:00
return true ; // Acerto pero fallo
}
2026-03-14 11:35:01 -05:00
2026-03-25 06:48:29 -05:00
// Carga
if ( m_runer . LoadConfig ( g_aitaskruner_arr_dyn [ 0 ] ) )
{
2026-03-25 09:39:28 -05:00
MessageBox ( GUIBASE_MSG ( " msg_load_config_ok " ) , GUIBASE_COMMON ( " info " ) , MB_OK | MB_ICONINFORMATION ) ;
2026-03-14 11:35:01 -05:00
2026-03-25 06:48:29 -05:00
//--- Seteamos en los edtis
m_section_bsic_edit_expert_path . SetValue ( m_runer . ExperthPath ( ) ) ;
m_section_bsic_edit_expert_path . GetTextBoxPointer ( ) . Update ( true ) ;
2026-03-14 11:35:01 -05:00
2026-03-25 06:48:29 -05:00
m_section_bsic_edit_main_folder . SetValue ( m_runer . MainFolder ( ) ) ;
m_section_bsic_edit_main_folder . GetTextBoxPointer ( ) . Update ( true ) ;
2026-03-14 11:35:01 -05:00
2026-03-25 06:48:29 -05:00
m_section_bsic_edit_progres_csv_file . SetValue ( m_runer . ProgreesFile ( ) ) ;
m_section_bsic_edit_progres_csv_file . GetTextBoxPointer ( ) . Update ( true ) ;
2026-03-14 11:35:01 -05:00
2026-03-25 06:48:29 -05:00
m_section_bsic_label_files_val . LabelText ( m_runer . MoveFiles ( ) ) ;
m_section_bsic_label_files_val . Update ( true ) ;
}
else
{
2026-03-25 09:39:28 -05:00
MessageBox ( StringFormat ( GUIBASE_MSG ( " msg_load_config_fail " ) , m_runer . m_last_error_msg ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
2026-03-25 06:48:29 -05:00
}
return true ;
}
2026-03-14 11:35:01 -05:00
2026-03-25 06:48:29 -05:00
//---
if ( m_section_bsic_buttom_save . Id ( ) = = lparam )
{
// Selecionanos
2026-03-25 09:39:28 -05:00
if ( FileSelectDialog ( GUIBASE_MSG ( " filesel_save_config " ) , AIDATATASKRUNER_PATH_TASK , " TXT files (*.txt)|*.txt " ,
2026-03-25 06:48:29 -05:00
AIDATATASK_RUNNER_FSD_COMON_FLAG , g_aitaskruner_arr_dyn , NULL ) ! = 1 )
{
2026-03-25 09:39:28 -05:00
MessageBox ( GUIBASE_MSG ( " err_filesel_no_sel " ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
2026-03-25 06:48:29 -05:00
return true ; // Acerto pero fallo
}
2026-03-14 11:35:01 -05:00
2026-03-25 06:48:29 -05:00
// Carga
if ( m_runer . SaveConfig ( g_aitaskruner_arr_dyn [ 0 ] ) )
{
2026-03-25 09:39:28 -05:00
MessageBox ( GUIBASE_MSG ( " msg_save_config_ok " ) , GUIBASE_COMMON ( " info " ) , MB_OK | MB_ICONINFORMATION ) ;
2026-03-25 06:48:29 -05:00
}
else
{
2026-03-25 09:39:28 -05:00
MessageBox ( StringFormat ( GUIBASE_MSG ( " msg_save_config_fail " ) , m_runer . m_last_error_msg ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
2026-03-25 06:48:29 -05:00
}
return true ;
}
//---
return false ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : OnClickBottom ( const long lparam )
{
switch ( m_tabs . SelectedTab ( ) )
{
//---
case TASKRUNERAIDGENMAIN_TAB_MAIN :
{
return OnClickBottomTabMain ( lparam ) ;
2026-02-24 20:47:56 -05:00
}
2026-03-14 11:35:01 -05:00
//---
2026-02-24 20:47:56 -05:00
case TASKRUNERAIDGENMAIN_TAB_TASK :
{
2026-03-25 09:39:28 -05:00
//--- Click en el botton load task
2026-02-24 20:47:56 -05:00
if ( m_section_buttom_pending_load . Id ( ) = = lparam ) // Catgamos de arhcivo y rellenamos tabla y rpersnentaicon interna
{
// Selecionanos
2026-03-25 09:39:28 -05:00
if ( FileSelectDialog ( GUIBASE_MSG ( " filesel_load_tasks " ) , AIDATATASKRUNER_PATH_TASK , " CSV files (*.csv)|*.csv " ,
2026-03-14 11:35:01 -05:00
AIDATATASK_RUNNER_FSD_COMON_FLAG | FSD_FILE_MUST_EXIST , g_aitaskruner_arr_dyn , NULL ) ! = 1 )
2026-02-24 20:47:56 -05:00
{
2026-03-25 09:39:28 -05:00
MessageBox ( GUIBASE_MSG ( " err_filesel_no_sel " ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
2026-02-24 20:47:56 -05:00
return true ; // Acerto pero fallo
}
// Solo si hay existo al setear
if ( m_runer . SetTastByFile ( g_aitaskruner_arr_dyn [ 0 ] ) )
{
2026-03-31 22:09:17 -05:00
//---
2026-02-24 20:47:56 -05:00
const int t = m_runer . TaskSize ( ) ;
2026-04-01 10:50:01 -05:00
//Print(t);
m_section_pending_table . ResizeRows ( t ) ;
2026-02-24 20:47:56 -05:00
2026-03-31 22:09:17 -05:00
//---
2026-02-24 20:47:56 -05:00
for ( int i = 0 ; i < t ; i + + )
{
const TaskTester task = m_runer . GetTaskByIndex ( i ) ;
//---
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO , i , task . symbol ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO_FOLDER , i , task . symbol_folder ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_TIMEFRAME , i , TimeframeToStrShort ( task . timeframe ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL , i , task . label ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL_ID , i , string ( task . label_id ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_DESDE , i , string ( task . start_date ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_HASTA , i , string ( task . end_date ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , i , g_taskruner_ai_dgen_main_images_label [ TASKRUNERAIDGENMAIN_IMG_LABEL_PENDIENTE ] ) ;
m_section_pending_table . SetImages ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , i , g_taskruner_ai_dgen_main_images ) ;
m_section_pending_table . ChangeImage ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , i , TASKRUNERAIDGENMAIN_IMG_LABEL_PENDIENTE ) ; // gris
}
2026-03-31 13:01:36 -05:00
m_section_pending_table . Update ( true ) ;
2026-02-24 20:47:56 -05:00
}
else
{
2026-03-25 09:39:28 -05:00
MessageBox ( StringFormat ( GUIBASE_MSG ( " msg_load_tasks_fail " ) , m_runer . m_last_error_msg ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
2026-02-24 20:47:56 -05:00
}
return true ;
}
2026-03-25 09:39:28 -05:00
//--- Click en el botton savetask
if ( m_section_buttom_pending_save . Id ( ) = = lparam )
{
if ( FileSelectDialog ( GUIBASE_MSG ( " filesel_save_tasks " ) , AIDATATASKRUNER_PATH_TASK , " CSV files (*.csv)|*.csv " ,
2026-03-30 15:00:40 -05:00
AIDATATASK_RUNNER_FSD_COMON_FLAG , g_aitaskruner_arr_dyn , NULL ) ! = 1 )
2026-02-24 20:47:56 -05:00
{
2026-03-25 09:39:28 -05:00
MessageBox ( GUIBASE_MSG ( " err_filesel_no_sel " ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
return true ; // Acerto pero fallo
}
2026-02-24 20:47:56 -05:00
2026-03-25 09:39:28 -05:00
//---
const int res = MessageBox ( GUIBASE_MSG ( " msg_save_tasks_filter " ) , GUIBASE_COMMON ( " warning " ) , MB_ICONQUESTION | MB_YESNO ) ;
2026-03-18 12:55:47 -05:00
2026-03-25 09:39:28 -05:00
//---
if ( ! m_runer . SaveAllTaskInFile ( g_aitaskruner_arr_dyn [ 0 ] , ( res = = IDYES ) ) )
{
MessageBox ( StringFormat ( GUIBASE_MSG ( " msg_save_tasks_fail " ) , m_runer . m_last_error_msg ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
}
return true ;
}
//--- Click en el botton clean
if ( m_section_buttom_clean . Id ( ) = = lparam )
{
int arr [ ] ;
const int t = m_runer . CleanAllTask ( arr ) ;
if ( t < = 0 ) // Internsmnte solo
{
MessageBox ( StringFormat ( GUIBASE_MSG ( " msg_clean_tasks_fail " ) , m_runer . m_last_error_msg ) , GUIBASE_COMMON ( " error " ) , MB_OK | MB_ICONERROR ) ;
}
else
{
m_section_pending_table . DeleteMultipleRows ( arr ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
2026-03-25 09:39:28 -05:00
}
//--- Click en el boton excute all
if ( m_section_buttom_execute_all . Id ( ) = = lparam )
{
int arr [ ] ;
const int t = m_runer . RunAllTask ( arr ) ;
if ( t < = 0 )
{
MessageBox ( StringFormat ( GUIBASE_MSG ( " msg_run_tasks_empty " ) , m_runer . m_last_error_msg ) , GUIBASE_COMMON ( " warning " ) , MB_OK | MB_ICONWARNING ) ;
}
2026-02-24 20:47:56 -05:00
else
2026-03-25 09:39:28 -05:00
{
// actuliamos el estaod de los elemntos devueltos por out estos ahora estan en cola
ActulizeTableAllTask ( TASKRUNERAIDGENMAIN_IMG_LABEL_ENCOLA , arr , t ) ;
}
return true ;
}
2026-02-24 20:47:56 -05:00
}
}
//---
return false ;
}
2026-02-24 10:16:05 -05:00
//+------------------------------------------------------------------+
2026-02-24 20:47:56 -05:00
//| |
2026-02-24 10:16:05 -05:00
//+------------------------------------------------------------------+
2026-03-13 09:38:25 -05:00
void CTaskRunerAiTabDGenMain : : OnAddTask ( void )
{
//--- Base
const TaskTester t = m_runer . CurrentTask ( ) ; // Ultimo (task current ya se reinicio)
const uint total_rows = m_section_pending_table . RowsTotal ( ) ;
//--- Escojemos el indice
int idx ;
if ( total_rows = = 1 & & m_section_pending_table . GetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO , 0 ) = = " " )
{
idx = 0 ;
}
else
{
// Hay mas de un row
idx = ( int ) total_rows ;
m_section_pending_table . AddRow ( idx ) ;
}
//
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO , idx , t . symbol ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO_FOLDER , idx , t . symbol_folder ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_TIMEFRAME , idx , TimeframeToStrShort ( t . timeframe ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL , idx , t . label ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL_ID , idx , string ( t . label_id ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_DESDE , idx , TimeToString ( t . start_date ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_HASTA , idx , TimeToString ( t . end_date ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , idx , g_taskruner_ai_dgen_main_images_label [ TASKRUNERAIDGENMAIN_IMG_LABEL_PENDIENTE ] ) ;
m_section_pending_table . SetImages ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , idx , g_taskruner_ai_dgen_main_images ) ;
m_section_pending_table . ChangeImage ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , idx , TASKRUNERAIDGENMAIN_IMG_LABEL_PENDIENTE ) ; // gris
m_section_pending_table . Update ( true ) ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-02-24 20:47:56 -05:00
void CTaskRunerAiTabDGenMain : : ActulizeTableAllTask ( const int index_s , int & rows [ ] , int size )
{
for ( int i = 0 ; i < size ; i + + )
{
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , rows [ i ] , g_taskruner_ai_dgen_main_images_label [ index_s ] ) ;
m_section_pending_table . ChangeImage ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , rows [ i ] , index_s ) ; // gris
}
2026-03-14 16:39:04 -05:00
m_section_pending_table . Update ( true ) ;
2026-02-24 20:47:56 -05:00
}
2026-03-26 06:46:59 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : OnClickDec ( const long lparam )
{
if ( m_section_nt_edit_label_id . Id ( ) = = lparam )
{
m_runer . OnCurrentTask_ModifyLabelId ( int ( m_section_nt_edit_label_id . GetValue ( ) ) ) ;
return true ;
}
return false ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : OnClickInc ( const long lparam )
{
if ( m_section_nt_edit_label_id . Id ( ) = = lparam )
{
m_runer . OnCurrentTask_ModifyLabelId ( int ( m_section_nt_edit_label_id . GetValue ( ) ) ) ;
return true ;
}
return false ;
}
2026-02-24 10:16:05 -05:00
//+------------------------------------------------------------------+
2026-02-24 20:47:56 -05:00
//| |
2026-02-24 10:16:05 -05:00
//+------------------------------------------------------------------+
2026-02-25 11:10:09 -05:00
bool CTaskRunerAiTabDGenMain : : OnTextEdit ( const long lparam )
2026-02-24 20:47:56 -05:00
{
//---
if ( m_tabs . SelectedTab ( ) = = TASKRUNERAIDGENMAIN_TAB_MAIN )
{
2026-03-25 06:48:29 -05:00
if ( lparam = = m_section_bsic_edit_main_folder . Id ( ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
m_runer . OnCurrentTask_ModifyConfigMainFolder ( m_section_bsic_edit_main_folder . GetValue ( ) ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
else
2026-03-25 06:48:29 -05:00
if ( lparam = = m_section_bsic_edit_expert_path . Id ( ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
m_runer . OnCurrentTask_ModifyConfigExpertPath ( m_section_bsic_edit_expert_path . GetValue ( ) ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
else
2026-03-25 06:48:29 -05:00
if ( lparam = = m_section_bsic_edit_progres_csv_file . Id ( ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
m_runer . OnCurrentTask_ModifyConfigProgresCsvFile ( m_section_bsic_edit_progres_csv_file . GetValue ( ) ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
2026-03-25 06:48:29 -05:00
//---
2026-02-24 20:47:56 -05:00
else
2026-03-25 06:48:29 -05:00
if ( lparam = = m_section_nt_edit_symbol . Id ( ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
m_runer . OnCurrentTask_ModifySimbolo ( m_section_nt_edit_symbol . GetValue ( ) ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
else
2026-03-25 06:48:29 -05:00
if ( lparam = = m_section_nt_edit_symbol_folder . Id ( ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
m_runer . OnCurrentTask_ModifySimboloFolder ( m_section_nt_edit_symbol_folder . GetValue ( ) ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
else
2026-03-25 06:48:29 -05:00
if ( lparam = = m_section_nt_edit_label . Id ( ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
m_runer . OnCurrentTask_ModifyLabel ( m_section_nt_edit_label . GetValue ( ) ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
else
2026-03-25 06:48:29 -05:00
if ( lparam = = m_section_nt_edit_label_id . Id ( ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
m_runer . OnCurrentTask_ModifyLabelId ( int ( m_section_nt_edit_label_id . GetValue ( ) ) ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
else
2026-03-25 06:48:29 -05:00
if ( lparam = = m_section_nt_edit_st_file . Id ( ) )
2026-02-24 20:47:56 -05:00
{
2026-03-25 06:48:29 -05:00
m_runer . OnCurrentTask_ModifySetFile ( m_section_nt_edit_st_file . GetValue ( ) ) ;
2026-02-24 20:47:56 -05:00
return true ;
}
}
//---
return false ;
}
2026-03-13 15:20:27 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CTaskRunerAiTabDGenMain : : OnLenguajeChange ( void )
{
2026-03-13 16:00:22 -05:00
// const bool true = m_base_tab.SelectedTab() == m_base_tab_idx && m_base_tab.IsVisible();
2026-03-13 15:20:27 -05:00
//--- Update tab text
string txt [ TASKRUNERAIDGENMAIN_TAB_TOTAL ] = { m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_tabs ) + " _0 " ] , m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_tabs ) + " _1 " ] } ;
const int t = m_tabs . TabsTotal ( ) ;
for ( int i = 0 ; i < t ; i + + )
{
m_tabs . Text ( i , txt [ i ] ) ;
}
m_tabs . Update ( ) ;
//---
const int idx = m_tabs . SelectedTab ( ) ;
2026-03-13 16:00:22 -05:00
UpdateTextMain ( ) ;
UpdateTextTask ( ) ;
2026-03-13 15:20:27 -05:00
}
2026-02-24 10:16:05 -05:00
//+------------------------------------------------------------------+
2026-03-13 15:20:27 -05:00
//| |
//+------------------------------------------------------------------+
2026-03-13 16:00:22 -05:00
void CTaskRunerAiTabDGenMain : : UpdateTextTask ( )
2026-03-13 15:20:27 -05:00
{
// Buttons
2026-03-30 15:00:40 -05:00
UpdateTBasic ( m_section_buttom_pending_load , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_buttom_pending_load ) ) ;
UpdateTBasic ( m_section_buttom_pending_save , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_buttom_pending_save ) ) ;
UpdateTBasic ( m_section_buttom_execute_all , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_buttom_execute_all ) ) ;
UpdateTBasic ( m_section_buttom_clean , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_buttom_clean ) ) ;
2026-03-31 13:01:36 -05:00
2026-03-13 15:20:27 -05:00
// Headers de la tabla
const string header_str = m_language [ AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_pending_table ) + " _header " ] ;
string headers [ ] ;
if ( StrTo : : CstArray ( headers , header_str , ' | ' , true ) )
{
const int cols = ( int ) m_section_pending_table . ColumnsTotal ( ) ;
for ( int i = 0 ; i < cols ; i + + )
{
m_section_pending_table . SetHeaderText ( i , headers [ i ] ) ;
}
2026-03-13 16:00:22 -05:00
m_section_pending_table . Update ( true ) ;
2026-03-13 15:20:27 -05:00
}
else
{
LogError ( " Fallo al hacer split str array en table header " , FUNCION_ACTUAL ) ;
}
}
2026-03-17 07:50:47 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CTaskRunerAiTabDGenMain : : UpdateTextMain ( )
{
//--- Basic config label
UpdateTBasic ( m_label_basic_config , AIDATATASKRUNNERL_COMPONENT_NAME ( m_label_basic_config ) , false ) ;
UpdateTBasic ( m_section_bsic_buttom_load , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_buttom_load ) ) ;
UpdateTBasic ( m_section_bsic_buttom_save , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_buttom_save ) ) ;
2026-03-30 15:00:40 -05:00
2026-03-25 06:48:29 -05:00
//--- Buscar
UpdateTBasic ( m_section_bsic_label_files , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_label_files ) , false ) ;
m_section_bsic_label_files_val . Tooltip ( m_language . Tooltip ( AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_label_files_val ) ) ) ;
UpdateTBasic ( m_section_bsic_btn_label_files_browse , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_btn_label_files_browse ) ) ;
2026-03-25 09:39:28 -05:00
m_section_bsic_btn_label_files_template . Tooltip ( m_language . Tooltip ( AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_btn_label_files_template ) ) ) ;
2026-03-25 06:48:29 -05:00
2026-03-17 07:50:47 -05:00
//--- Basic config edits
2026-03-27 17:56:22 -05:00
ResizeTElement ( m_section_bsic_edit_expert_path , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_edit_expert_path ) , 300 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
ResizeTElement ( m_section_bsic_edit_progres_csv_file , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_edit_progres_csv_file ) , 300 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
ResizeTElement ( m_section_bsic_edit_main_folder , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_bsic_edit_main_folder ) , 250 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
2026-03-13 16:00:22 -05:00
//--- New task label
2026-03-17 07:50:47 -05:00
UpdateTBasic ( m_label_new_task , AIDATATASKRUNNERL_COMPONENT_NAME ( m_label_new_task ) , false ) ;
2026-03-13 15:20:27 -05:00
2026-03-13 16:00:22 -05:00
//--- Resize new task edits y combox
2026-03-27 17:56:22 -05:00
ResizeTElement ( m_section_nt_edit_symbol , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_symbol ) , 150 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
ResizeTElement ( m_section_nt_edit_symbol_folder , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_symbol_folder ) , 150 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
ResizeTElement ( m_section_nt_combox_timerame , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_combox_timerame ) , 150 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
ResizeTElement ( m_section_nt_edit_label , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_label ) , 200 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
ResizeTElement ( m_section_nt_edit_label_id , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_label_id ) , 175 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
ResizeTElement ( m_section_nt_dc_dt_start , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_dc_dt_start ) , 100 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
ResizeTElement ( m_section_nt_dc_dt_end , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_dc_dt_end ) , 100 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
2026-03-31 13:12:02 -05:00
ResizeTElement ( m_section_nt_edit_st_file , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_edit_st_file ) , 350 , AIDATATASKRUNER_MAINTAB_LABEL_X_PAD ) ;
2026-03-17 07:50:47 -05:00
//--- Button final
UpdateTBasic ( m_section_nt_buttom_add_task , AIDATATASKRUNNERL_COMPONENT_NAME ( m_section_nt_buttom_add_task ) ) ;
2026-03-13 15:20:27 -05:00
}
2026-03-18 12:55:47 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CTaskRunerAiTabDGenMain : : SincronizeFrontendOfBackend ( const uint8_t flags )
{
//---
if ( ( flags & TASKRUNERAIDGENMAIN_FLAG_TABLE ) ! = 0 )
{
const int t = m_runer . TaskSize ( ) ;
2026-04-01 10:50:01 -05:00
m_section_pending_table . ResizeRows ( t ) ;
2026-03-18 12:55:47 -05:00
for ( int i = 0 ; i < t ; i + + )
{
const TaskTester task = m_runer . GetTaskByIndex ( i ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO , i , task . symbol ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO_FOLDER , i , task . symbol_folder ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_TIMEFRAME , i , TimeframeToStrShort ( task . timeframe ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL , i , task . label ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL_ID , i , string ( task . label_id ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_DESDE , i , TimeToString ( task . start_date ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_HASTA , i , TimeToString ( task . end_date ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , i , g_taskruner_ai_dgen_main_images_label [ task . state ] ) ;
m_section_pending_table . SetImages ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , i , g_taskruner_ai_dgen_main_images ) ;
m_section_pending_table . ChangeImage ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , i , task . state ) ;
}
m_section_pending_table . Update ( true ) ;
}
//---
if ( ( flags & TASKRUNERAIDGENMAIN_FLAG_CONFIG ) ! = 0 )
{
m_section_bsic_edit_expert_path . SetValue ( m_runer . ExperthPath ( ) ) ;
m_section_bsic_edit_expert_path . GetTextBoxPointer ( ) . Update ( true ) ;
m_section_bsic_edit_main_folder . SetValue ( m_runer . MainFolder ( ) ) ;
m_section_bsic_edit_main_folder . GetTextBoxPointer ( ) . Update ( true ) ;
m_section_bsic_edit_progres_csv_file . SetValue ( m_runer . ProgreesFile ( ) ) ;
m_section_bsic_edit_progres_csv_file . GetTextBoxPointer ( ) . Update ( true ) ;
2026-03-25 06:48:29 -05:00
m_section_bsic_label_files_val . LabelText ( m_runer . MoveFiles ( ) ) ;
m_section_bsic_label_files_val . Update ( true ) ;
2026-03-18 12:55:47 -05:00
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CTaskRunerAiTabDGenMain : : CleanAllTask ( )
{
int arr [ ] ;
const int t = m_runer . CleanAllTask ( arr ) ;
if ( t < = 0 )
return false ;
m_section_pending_table . DeleteMultipleRows ( arr ) ;
return true ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-04-10 15:42:04 -05:00
bool CTaskRunerAiTabDGenMain : : RunAllTask ( int & arr [ ] )
2026-03-18 12:55:47 -05:00
{
const int t = m_runer . RunAllTask ( arr ) ;
if ( t < = 0 )
return false ;
ActulizeTableAllTask ( TASKRUNERAIDGENMAIN_IMG_LABEL_ENCOLA , arr , t ) ;
return true ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CTaskRunerAiTabDGenMain : : AddTaskToTable ( const TaskTester & task )
{
//---
const uint total_rows = m_section_pending_table . RowsTotal ( ) ;
int idx ;
if ( total_rows = = 1 & & m_section_pending_table . GetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO , 0 ) = = " " )
idx = 0 ;
else
{
idx = ( int ) total_rows ;
m_section_pending_table . AddRow ( idx ) ;
}
//---
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO , idx , task . symbol ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_SIMBOLO_FOLDER , idx , task . symbol_folder ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_TIMEFRAME , idx , TimeframeToStrShort ( task . timeframe ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL , idx , task . label ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_LABEL_ID , idx , string ( task . label_id ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_DESDE , idx , TimeToString ( task . start_date ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_HASTA , idx , TimeToString ( task . end_date ) ) ;
m_section_pending_table . SetValue ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , idx , g_taskruner_ai_dgen_main_images_label [ TASKRUNERAIDGENMAIN_IMG_LABEL_PENDIENTE ] ) ;
m_section_pending_table . SetImages ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , idx , g_taskruner_ai_dgen_main_images ) ;
m_section_pending_table . ChangeImage ( AIDATATASKRUNER_TASK_TABLLE_ESTADO , idx , TASKRUNERAIDGENMAIN_IMG_LABEL_PENDIENTE ) ;
m_section_pending_table . Update ( true ) ;
}
2026-03-13 15:20:27 -05:00
2026-02-24 10:16:05 -05:00
//+------------------------------------------------------------------+
2026-02-25 11:10:09 -05:00
# endif // AIDATATASKRUNER_UI_DATAGENERATIONTAB_BASE_MQH
2026-03-13 16:00:22 -05:00
//+------------------------------------------------------------------+