PGCC_PRC8/_module/nss/fcb_inc_cvdisp.nss
Jaysyn904 e51634d39b Initial upload
Initial upload.
2024-10-09 14:17:22 -04:00

730 lines
23 KiB
Plaintext

#include "fcb_inc_prot"
//==========================================/
//general
//==========================================/
//==========================================/
string c_hdr1(string s)
//==========================================/
{
return set_string_color(s, 0, 260, 260);
}
//==========================================/
string c_hdr2(string s)
//==========================================/
{
return set_string_color(s, 260, 0, 80);
}
//==========================================/
string c_hlt1(string s)
//==========================================/
{
return set_string_color(s, 160, 160, 160);
}
//==========================================/
string c_hlt2(string s)
//==========================================/
{
return set_string_color(s, 30, 230, 30);
}
//==========================================/
string c_hid(string s)
//==========================================/
{
return set_string_color(s, 60, 60, 60);
}
//==========================================/
string c_sel(string s)
//==========================================/
{
return set_string_color(s, 260, 260, 260);
}
//==========================================/
string c_fld(string s)
//==========================================/
{
return set_string_color(s, 200, 200, 260);
}
//==========================================/
string c_crs(string s)
//==========================================/
{
return set_string_color(s, 200, 40, 40);
}
//==========================================/
string get_color_string_val(int cval)
//==========================================/
{
string color_header_val = GetLocalString(FCB_HOST, COLOR_STRING_CACHE_ + IntToHexString(cval));
if(color_header_val == "")
{
color_header_val = GetSubString(GetLocalString(FCB_HOST, COLOR_STRING), cval, 1);
}
return color_header_val;
}
//==========================================/
string set_string_color(string s, int rval, int gval, int bval)
//==========================================/
{
rval = rval*(COLOR_STRING_LEN - 1)/COLOR_VAL_MAX;
gval = gval*(COLOR_STRING_LEN - 1)/COLOR_VAL_MAX;
bval = bval*(COLOR_STRING_LEN - 1)/COLOR_VAL_MAX;
string result = "<c";
string color_string = GetLocalString(FCB_HOST, COLOR_STRING);
//----------------------------------------//
string color_header_rval = GetLocalString(FCB_HOST, COLOR_STRING_CACHE_ + IntToHexString(rval));
if(color_header_rval == "")
{
color_header_rval = GetSubString(color_string, rval, 1);
SetLocalString(FCB_HOST, COLOR_STRING_CACHE_ + IntToHexString(rval), color_header_rval);
}
result += color_header_rval;
//----------------------------------------//
string color_header_gval = "";
if(gval == rval)
{
result += color_header_rval;
}
else
{
color_header_gval = GetLocalString(FCB_HOST, COLOR_STRING_CACHE_ + IntToHexString(gval));
if(color_header_gval == "")
{
color_header_gval = GetSubString(color_string, gval, 1);
SetLocalString(FCB_HOST, COLOR_STRING_CACHE_ + IntToHexString(gval), color_header_gval);
}
result += color_header_gval;
}
//----------------------------------------//
if(bval == rval)
{
result += color_header_rval;
}
else if(bval == gval)
{
result += color_header_gval;
}
else
{
string color_header_bval = GetLocalString(FCB_HOST, COLOR_STRING_CACHE_ + IntToHexString(bval));
if(color_header_bval == "")
{
color_header_bval = GetSubString(color_string, bval, 1);
SetLocalString(FCB_HOST, COLOR_STRING_CACHE_ + IntToHexString(bval), color_header_bval);
}
result += color_header_bval;
}
return (result + ">" + s + COLOR_TAG_END);
}
//==========================================/
string set_gradation(string name, int r1, int g1, int b1, int r2, int g2, int b2)
//==========================================/
{
string result = "";
int name_len = GetStringLength(name);
int dr = (r2 - r1)/name_len;
int dg = (g2 - g1)/name_len;
int db = (b2 - b1)/name_len;
int m = 0;
while(m < name_len)
{
result += set_string_color(GetSubString(name, m, 1), r1, g1, b1);
r1 += dr;
g1 += dg;
b1 += db;
m++;
}
return result;
}
//==========================================/
string ui_refresh_scroll_up(int condition)
//==========================================/
{
string disp = UI_TXT_UP;
if(!condition)
{
disp = c_hid(disp);
}
return disp;
}
//==========================================/
string ui_refresh_scroll_down(int condition)
//==========================================/
{
string disp = UI_TXT_DOWN;
if(!condition)
{
disp = c_hid(disp);
}
return disp + UI_TXT_INDENT2;
}
//==========================================/
//main related
//==========================================/
//==========================================/
void ui_main_initialize(int folder_index)
//==========================================/
{
//--------------------------------------/
ui_disp_initialize();
//--------------------------------------/
//set initial stack name
SetLocalString(FCB_HOST, STACK_NAME_ + IntToHexString(UI_STACK_DEFAULT_OFFSET), UI_TXT_STACK_ROOT);
//[offset: 10][index: 10][select: 10]
//set stack state to 1, 1, 1
SetLocalInt(FCB_HOST, STACK_STATE, (UI_STACK_DEFAULT_OFFSET << BITLEN_FILE_2) | INCR_F10 | UI_STACK_DEFAULT_SEL);
//ui_stack_refresh(UI_STACK_DEFAULT_OFFSET, 1, UI_STACK_DEFAULT_SEL);
//--------------------------------------/
//main refresh at folder index, 1, 0
ui_main_refresh(folder_index | UI_MAIN_DEFAULT_OFFSET, folder_index | UI_MAIN_DEFAULT_SEL);
//[...][offset: 10][folder_index: 10][selected: 10]
//store it to stack
int stack_param = (UI_MAIN_DEFAULT_OFFSET << BITLEN_FILE_2) | folder_index | UI_MAIN_DEFAULT_SEL;
SetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(UI_STACK_DEFAULT_OFFSET), stack_param);
}
//==========================================/
void ui_main_refresh_index(int file_dir, int file_dir_sel, int token_index)
//==========================================/
{
string file_name = GetLocalString(FCB_HOST, MAIN_FILE_NAME_ + IntToHexString(file_dir));
int file_type = GetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir));
int color_sel = GetLocalInt(FCB_HOST, MAIN_FILE_NAME_COLOR_ + IntToHexString(file_dir));
//hidden
if(INCR_HIDDEN & file_type)
{
if(INCR_LINK & file_type)
{
file_name = c_hid(UI_TXT_LINK_PREFIX + file_name);
}
else
{
file_name = c_hid(file_name);
}
}
//selected
else if(file_dir == file_dir_sel)
{
if(INCR_LINK & file_type)
{
file_name = c_sel(UI_TXT_LINK_PREFIX + file_name);
}
else
{
file_name = c_sel(file_name);
}
}
else if(INCR_D1000 & color_sel)
{
int rval = FILTER_D1 & (color_sel >>> BITLEN_COLOR_2);
int gval = FILTER_D1 & (color_sel >>> BITLEN_COLOR_1);
int bval = FILTER_D1 & color_sel;
file_name = set_string_color(file_name, rval, gval, bval);
if(INCR_LINK & file_type)
{
file_name = UI_TXT_LINK_PREFIX + file_name;
}
}
//link
else if(INCR_LINK & file_type)
{
file_name = UI_TXT_LINK_PREFIX + c_fld(file_name);
}
SetCustomToken(UI_TOKEN_MAIN + token_index, file_name);
}
//==========================================/
void ui_main_refresh(int file_dir_offset, int file_dir_sel)
//==========================================/
{
//file_dir: [...][folder_index: 10][file_index: 10]
//--------------------------------------/
int n = 0;
//folder index is 0
if((FILTER_F10 & file_dir_offset) > 0)
{
//file_index: [...][folder_index: 10][file_index: 10]
int file_index = GetLocalInt(FCB_HOST, MAIN_FILE_INDEX_ + IntToHexString(FILTER_F10 & file_dir_offset));
while((file_dir_offset + n) <= file_index && n <= UI_MAIN_LIST_SIZE)
{
ui_main_refresh_index(file_dir_offset + n, file_dir_sel, n);
n++;
}
//--------------------------------------/
SetCustomToken(UI_TOKEN_MAIN + UI_MAIN_LIST_SIZE, ui_refresh_scroll_down((file_dir_offset + UI_MAIN_LIST_SIZE) <= file_index));
//--------------------------------------/
SetCustomToken(UI_TOKEN_MAIN + UI_MAIN_LIST_SIZE + 1, ui_refresh_scroll_up((FILTER_F1 & file_dir_offset) > UI_MAIN_DEFAULT_OFFSET));
}
SetLocalInt(FCB_HOST, UI_MAIN_LIST_LEN, n);
}
//==========================================/
void ui_main_select(int n)
//==========================================/
{
//current stack index
//[offset: 10][index: 10][select: 10]
int stack_state = GetLocalInt(FCB_HOST, STACK_STATE);
int stack_index_offset = stack_state >>> BITLEN_FILE_2;
int stack_index_sel = FILTER_F1 & stack_state;
//[...][offset: 10][folder_index: 10][selected: 10]
int stack_param = GetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(stack_index_sel));
//[folder_index: 10][offset: 10]
int file_dir_offset = (FILTER_F10 & stack_param) | (stack_param >>> BITLEN_FILE_2);
int file_type = GetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir_offset + n));
//if not in hidden mode
//--------------------------------------/
if(INCR_HIDDEN & (~file_type))
{
//[folder_index: 10][selected: 10]
int file_dir_sel = FILTER_F11 & stack_param;
//selected different file...
if((file_dir_offset + n) != file_dir_sel)
{
//update selection selection
//[offset: 10][folder_index: 10][offset+n: 10]
SetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(stack_index_sel), (FILTER_F100 & stack_param) | (file_dir_offset + n));
}
//--------------------------------------/
SetLocalInt(FCB_HOST, SCRIPT_PARAM, (FILTER_F100 & file_type) | stack_index_sel);
//if link type
//--------------------------------------/
if(INCR_LINK & file_type)
{
int folder_index = FILTER_F10 & file_type;
ui_main_refresh(folder_index | UI_MAIN_DEFAULT_OFFSET, folder_index | UI_MAIN_DEFAULT_SEL);
int stack_index_sel_new = stack_index_sel+1;
//stack: [...][offset: 10][folder_index: 10][selected: 10]
SetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(stack_index_sel_new), (UI_MAIN_DEFAULT_OFFSET << BITLEN_FILE_2) | folder_index | UI_MAIN_DEFAULT_SEL);
string file_name = GetLocalString(FCB_HOST, MAIN_FILE_NAME_+ IntToHexString(file_dir_offset + n));
SetLocalString(FCB_HOST, STACK_NAME_ + IntToHexString(stack_index_sel_new), file_name);
//[offset: 10][index: 10][select: 10]
SetLocalInt(FCB_HOST, STACK_STATE, (FILTER_F100 & stack_state) | (stack_index_sel_new << BITLEN_FILE_1) | stack_index_sel_new);
//ui_stack_refresh(stack_state >>> BITLEN_FILE_2, stack_index_sel_new, stack_index_sel_new);
//misc
//--------------------------------------/
//ui_disp_clear_local();
}
else
{
//selected different file...
if((file_dir_offset + n) != file_dir_sel)
{
//redraw file_dir_offset + n
ui_main_refresh_index(file_dir_offset + n, file_dir_offset + n, n);
//old selection in visual range
if(file_dir_sel >= file_dir_offset && file_dir_sel < (file_dir_offset + UI_MAIN_LIST_SIZE))
{
//redraw file_dir_sel
ui_main_refresh_index(file_dir_sel, file_dir_offset + n, file_dir_sel - file_dir_offset);
}
}
}
ExecuteScript(FCB_SCRIPT_PREFIX + SCRIPT_MAIN_OPTION_HANDLER, FCB_HOST);
ui_disp_refresh_txt();
}
}
//==========================================/
void ui_main_scroll_down()
//==========================================/
{
//current stack index
//[offset: 10][index: 10][select: 10]
int stack_index_sel = FILTER_F1 & GetLocalInt(FCB_HOST, STACK_STATE);
//[...][offset: 10][folder_index: 10][selected: 10]
int stack_param = GetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(stack_index_sel));
int stack_index_offset = stack_param >>> BITLEN_FILE_2;
int file_index = GetLocalInt(FCB_HOST, MAIN_FILE_INDEX_ + IntToHexString(FILTER_F10 & stack_param));
//if offset < file_index
if((FILTER_F1 & file_index) >= (stack_index_offset + UI_MAIN_LIST_SIZE))
{
//stack: [...][offset: 10][folder_index: 10][selected: 10]
SetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(stack_index_sel), stack_param + (UI_MAIN_SCROLL_INCR << BITLEN_FILE_2));
ui_main_refresh((FILTER_F10 & stack_param) | (stack_index_offset + UI_MAIN_SCROLL_INCR), FILTER_F11 & stack_param);
}
}
//==========================================/
void ui_main_scroll_up()
//==========================================/
{
//current stack index
//[offset: 10][index: 10][select: 10]
int stack_index_sel = FILTER_F1 & GetLocalInt(FCB_HOST, STACK_STATE);
//[...][offset: 10][folder_index: 10][selected: 10]
int stack_param = GetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(stack_index_sel));
int stack_index_offset = stack_param >>> BITLEN_FILE_2;
if(stack_index_offset > UI_MAIN_DEFAULT_OFFSET)
{
//stack: [...][offset: 10][folder_index: 10][selected: 10]
SetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(stack_index_sel), stack_param - (UI_MAIN_SCROLL_INCR << BITLEN_FILE_2));
ui_main_refresh((FILTER_F10 & stack_param) | (stack_index_offset - UI_MAIN_SCROLL_INCR), FILTER_F11 & stack_param);
}
}
//==========================================/
void ui_main_set_hidden(int file_dir, int hidden)
//==========================================/
{
if(hidden)
{
int file_type = GetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir));
SetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir), INCR_HIDDEN | file_type);
}
else
{
int file_type = GetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir));
SetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir), (~INCR_HIDDEN) & file_type);
}
}
//==========================================/
void ui_main_set_hidden_refresh(int file_dir, int hidden)
//==========================================/
{
int stack_state = GetLocalInt(FCB_HOST, STACK_STATE);
//[...][offset: 10][folder_index: 10][selected: 10]
int stack_param = GetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(FILTER_F1 & stack_state));
if(hidden)
{
int file_type = GetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir));
SetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir), INCR_HIDDEN | file_type);
if((FILTER_F10 & file_dir) == (FILTER_F10 & stack_param))
{
int file_dir_offset = (FILTER_F10 & stack_param) | (stack_param >>> BITLEN_FILE_2);
if(file_dir >= file_dir_offset && file_dir <= (file_dir_offset + UI_MAIN_LIST_SIZE))
{
int file_dir_sel = FILTER_F11 & stack_param;
if(file_dir == file_dir_sel)
{
SetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(FILTER_F1 & stack_state), FILTER_F110 & stack_param);
ui_main_refresh_index(file_dir, 0, file_dir_sel - file_dir_offset);
}
else
{
ui_main_refresh_index(file_dir, file_dir_sel, file_dir - file_dir_offset);
}
}
}
}
else
{
int file_type = GetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir));
SetLocalInt(FCB_HOST, MAIN_FILE_TYPE_ + IntToHexString(file_dir), (~INCR_HIDDEN) & file_type);
if((FILTER_F10 & file_dir) == (FILTER_F10 & stack_param))
{
int file_dir_offset = (FILTER_F10 & stack_param) | (stack_param >>> BITLEN_FILE_2);
if(file_dir >= file_dir_offset && file_dir <= (file_dir_offset + UI_MAIN_LIST_SIZE))
{
int file_dir_sel = FILTER_F11 & stack_param;
ui_main_refresh_index(file_dir, file_dir_sel, file_dir - file_dir_offset);
}
}
}
}
//==========================================/
void remove_main_file_dir(int file_dir, int token_index)
//==========================================/
{
ui_main_set_hidden(file_dir, 1);
ui_main_refresh_index(file_dir, 0, token_index);
}
//==========================================/
void clear_main_folder(int file_dir)
//==========================================/
{
SetLocalInt(FCB_HOST, MAIN_FILE_INDEX_ + IntToHexString(FILTER_F10 & file_dir), file_dir);
}
//==========================================/
void set_main_file_name_color(int file_dir, int rval, int gval, int bval)
//==========================================/
{
if(rval > COLOR_VAL_MAX)
{
rval = COLOR_VAL_MAX;
}
if(gval > COLOR_VAL_MAX)
{
gval = COLOR_VAL_MAX;
}
if(bval > COLOR_VAL_MAX)
{
bval = COLOR_VAL_MAX;
}
SetLocalInt(FCB_HOST, MAIN_FILE_NAME_COLOR_ + IntToHexString(file_dir), INCR_D1000 | (rval << BITLEN_COLOR_2) | (gval << BITLEN_COLOR_1) | bval);
}
//==========================================/
void clear_main_file_name_color(int file_dir)
//==========================================/
{
DeleteLocalInt(FCB_HOST, MAIN_FILE_NAME_COLOR_ + IntToHexString(file_dir));
}
//==========================================/
//stack related
//==========================================/
//==========================================/
void ui_stack_back()
//==========================================/
{
//[offset: 10][index: 10][select: 10]
int stack_state = GetLocalInt(FCB_HOST, STACK_STATE);
int stack_index_sel = FILTER_F1 & stack_state;
//int stack_index_offset = stack_state >>> BITLEN_FILE_2;
//selected different file...
SetLocalInt(FCB_HOST, STACK_STATE, (FILTER_F110 & stack_state) | (stack_index_sel - 1));
//stack: [...][offset: 10][folder_index: 10][selected: 10]
int stack_param = GetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(stack_index_sel - 1));
ui_main_refresh((FILTER_F10 & stack_param) | (stack_param >>> BITLEN_FILE_2), FILTER_F11 & stack_param);
//misc
//--------------------------------------/
ui_disp_clear_local();
ui_disp_refresh_txt();
}
//==========================================/
void ui_stack_index(int index)
//==========================================/
{
//[offset: 10][index: 10][select: 10]
int stack_state = GetLocalInt(FCB_HOST, STACK_STATE);
//int stack_index_sel = FILTER_F1 & stack_state;
//int stack_index_offset = stack_state >>> BITLEN_FILE_2;
//selected different file...
SetLocalInt(FCB_HOST, STACK_STATE, (FILTER_F110 & stack_state) | UI_STACK_DEFAULT_OFFSET + index);
//stack: [...][offset: 10][folder_index: 10][selected: 10]
int stack_param = GetLocalInt(FCB_HOST, STACK_PARAM_ + IntToHexString(UI_STACK_DEFAULT_OFFSET + index));
ui_main_refresh((FILTER_F10 & stack_param) | (stack_param >>> BITLEN_FILE_2), FILTER_F11 & stack_param);
//misc
//--------------------------------------/
ui_disp_clear_local();
ui_disp_refresh_txt();
}
//==========================================/
//resp
//==========================================/
//==========================================/
void ui_disp_initialize()
//==========================================/
{
int n = 0;
while(n <= DISP_INDEX_POS)
{
ui_disp_state_new(n, 0);
ui_disp_set_txt(n, "", "");
n++;
}
}
//==========================================/
void ui_disp_refresh_txt()
//==========================================/
{
int disp_state = GetLocalInt(FCB_HOST, DISP_STATE);
int n = 0;
int token_index = 0;
int index_pos = 1;
while(n <= DISP_INDEX_POS)
{
if(disp_state & index_pos)
{
string disp = GetLocalString(FCB_HOST, UI_DISP_TXT_ + IntToHexString(n));
disp_state &= ~index_pos;
if(disp != "")
{
if(disp_state > index_pos)
{
disp += UI_TXT_INDENT;
}
SetCustomToken(UI_TOKEN_DISP + token_index, disp);
token_index++;
}
}
index_pos <<= 1;
n++;
}
while(token_index < DISP_LIST_SIZE)
{
SetCustomToken(UI_TOKEN_DISP + token_index, "");
token_index++;
}
}
//==========================================/
void ui_disp_state_new(int n, int disp)
//==========================================/
{
if(disp)
{
SetLocalInt(FCB_HOST, DISP_STATE, GetLocalInt(FCB_HOST, DISP_STATE) | (1 << n));
}
else
{
SetLocalInt(FCB_HOST, DISP_STATE, GetLocalInt(FCB_HOST, DISP_STATE) & ~(1 << n));
}
}
//==========================================/
void ui_disp_set_txt(int n, string hdr, string txt = "")
//==========================================/
{
string disp = "";
if(hdr != "")
{
disp += c_hdr1(hdr);
if(txt != "")
{
disp += UI_TXT_INDENT + txt;
}
}
else if(txt != "")
{
disp += txt;
}
SetLocalString(FCB_HOST, UI_DISP_TXT_ + IntToHexString(n), disp);
}
//==========================================/
void ui_disp_clear_local()
//==========================================/
{
ui_disp_state_new(DISP_INDEX_LOCAL1, 0);
}
//==========================================/
void ui_set_active_disp_index(int disp_index1 = -1, int disp_index2 = -1)
//==========================================/
{
if(disp_index1 > -1)
{
ui_disp_state_new(disp_index1, 1);
}
else
{
ui_disp_state_new(disp_index1, 0);
}
if(disp_index2 > -1)
{
ui_disp_state_new(disp_index2, 1);
}
else
{
ui_disp_state_new(disp_index2, 0);
}
int n = 0;
while(n <= DISP_INDEX_POS)
{
if(n != disp_index1)
{
if(n != disp_index2)
{
ui_disp_state_new(n, 0);
}
}
n++;
}
}