Eolite 2.35: Insert selection

git-svn-id: svn://kolibrios.org@4897 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2014-04-26 09:49:20 +00:00
parent 2f985ba4ca
commit 5d5e189737

View File

@ -82,8 +82,8 @@
enum {ONLY_SHOW, WITH_REDRAW, ONLY_OPEN}; //OpenDir enum {ONLY_SHOW, WITH_REDRAW, ONLY_OPEN}; //OpenDir
#define TITLE "Eolite File Manager v2.31" #define TITLE "Eolite File Manager v2.35"
#define ABOUT_TITLE "Eolite v2.31" #define ABOUT_TITLE "Eolite v2.35"
dword col_padding, col_selec, col_lpanel; dword col_padding, col_selec, col_lpanel;
int toolbar_buttons_x[7]={9,46,85,134,167,203}; int toolbar_buttons_x[7]={9,46,85,134,167,203};
@ -115,7 +115,7 @@ proc_info Form;
system_colors sc; system_colors sc;
mouse m; mouse m;
int mouse_dd, scroll_used, scroll_size, sorting_arrow_x, kolibrios_drive; int mouse_dd, scroll_used, scroll_size, sorting_arrow_x, kolibrios_drive;
dword buf, off; dword buf;
dword file_mas[6898]; dword file_mas[6898];
int j, i; int j, i;
int action_buf; int action_buf;
@ -158,6 +158,7 @@ void SetAppColors()
void main() void main()
{ {
word key, id, can_show, can_select, m_selected; word key, id, can_show, can_select, m_selected;
dword selected_offset;
randomize(); randomize();
rand_n = random(40); rand_n = random(40);
@ -430,8 +431,10 @@ void main()
Del_Form(); Del_Form();
break; break;
case 185: //ins case 185: //ins
add_to_mark(#file_path); //add_to_mark(#file_path);
//notify("'Eolite\nFile was added to copy queue' -tI"); selected_offset = file_mas[files.current+files.first]*304 + buf+32 + 7;
if (ESBYTE[selected_offset]) ESBYTE[selected_offset]=0; else ESBYTE[selected_offset] = 1;
List_Current(1);
break; break;
case 050...059: //F1-F10 case 050...059: //F1-F10
FnProcess(key-49); FnProcess(key-49);
@ -595,10 +598,11 @@ void List_ReDraw()
void Line_ReDraw(dword color, filenum){ void Line_ReDraw(dword color, filenum){
dword text_col=0, dword text_col=0,
name_len=0,
attr,
ext1, ext1,
file_offet,
file_name_off,
y=filenum*files.line_h+files.y; y=filenum*files.line_h+files.y;
BDVK file;
if (filenum==-1) return; if (filenum==-1) return;
DrawBar(files.x,y,3,files.line_h,color); DrawBar(files.x,y,3,files.line_h,color);
DrawBar(files.x+19,y,files.w-19,files.line_h,color); DrawBar(files.x+19,y,files.w-19,files.line_h,color);
@ -606,36 +610,40 @@ void Line_ReDraw(dword color, filenum){
if (files.line_h>18) DrawBar(files.x+3,y+18,16,files.line_h-18,color); if (files.line_h>18) DrawBar(files.x+3,y+18,16,files.line_h-18,color);
if (files.line_h>15) DrawBar(files.x+3,y,16,files.line_h-15,color); if (files.line_h>15) DrawBar(files.x+3,y,16,files.line_h-15,color);
off=file_mas[filenum+files.first]*304 + buf+72; file_offet = file_mas[filenum+files.first]*304 + buf+32;
attr = ESDWORD[off - 40]; file.attr = ESDWORD[file_offet];
file.selected = ESBYTE[file_offet+7];
file.sizelo = ESDWORD[file_offet+32];
file_name_off = file_offet+40;
if (! TestBit(attr, 4) ) //file or folder? if (! TestBit(file.attr, 4) ) //file or folder?
{ {
Put_icon(off+_strrchr(off,'.'), files.x+3, files.line_h/2-7+y, color, 0); Put_icon(file_name_off+_strrchr(file_name_off,'.'), files.x+3, files.line_h/2-7+y, color, 0);
WriteText(7-strlen(ConvertSize(ESDWORD[off-8]))*6+onLeft(75,0),files.line_h-6/2+y,0x80,0,ConvertSize(ESDWORD[off-8])); //size WriteText(7-strlen(ConvertSize(file.sizelo))*6+onLeft(75,0),files.line_h-6/2+y,0x80,0,ConvertSize(file.sizelo));
} }
else else
{ {
if (strcmp("..",off)==0) ext1=".."; else ext1="<DIR>"; if (strcmp("..",file_name_off)==0) ext1=".."; else ext1="<DIR>";
Put_icon(ext1, files.x+3, files.line_h/2-7+y, color, 0); Put_icon(ext1, files.x+3, files.line_h/2-7+y, color, 0);
} }
if ( TestBit(attr, 1) ) || ( TestBit(attr, 2) ) text_col=0xA6A6B7; //system or hiden? if (TestBit(file.attr, 1)) || (TestBit(file.attr, 2)) text_col=0xA6A6B7; //system or hiden?
if (color!=0xFFFfff) if (color!=0xFFFfff)
{ {
itdir = TestBit(attr, 4); itdir = TestBit(file.attr, 4);
strcpy(#file_name, off); strcpy(#file_name, file_name_off);
strcpy(#file_path, #path); strcpy(#file_path, #path);
strcat(#file_path, #file_name); strcat(#file_path, #file_name);
if (text_col==0xA6A6B7) text_col=0xFFFFFF; if (text_col==0xA6A6B7) text_col=0xFFFFFF;
} }
if (file.selected) text_col=0xFF0000;
if (Form.width>=480) if (Form.width>=480)
{ {
FileShow.start_x = files.x + 23; FileShow.start_x = files.x + 23;
FileShow.font_color = text_col; FileShow.font_color = text_col;
FileShow.area_size_x = Form.width - 380; FileShow.area_size_x = Form.width - 380;
FileShow.text_pointer = off; FileShow.text_pointer = file_name_off;
FileShow.start_y = files.line_h/2-3+y; FileShow.start_y = files.text_y+y;
PathShow_prepare stdcall(#FileShow); PathShow_prepare stdcall(#FileShow);
PathShow_draw stdcall(#FileShow); PathShow_draw stdcall(#FileShow);
} }
@ -685,16 +693,17 @@ void Open_Dir(dword dir_path, redraw){
inline Sorting() inline Sorting()
{ {
dword k=0, l=1; dword k=0, l=1;
dword file_off;
int i; int i;
if (!strcmp(#path,"/")) //do not sort if (!strcmp(#path,"/")) //do not sort
{ {
FOR(k=1;k<files.count;k++;) file_mas[k]=k; FOR(k=1;k<files.count;k++;) file_mas[k]=k;
return; return;
} }
FOR (j=files.count-1, off=files.count-1*304+buf+32; j>=0; j--, off-=304;) //files | folders FOR (j=files.count-1, file_off=files.count-1*304+buf+32; j>=0; j--, file_off-=304;) //files | folders
{ {
if (!real_files_names_case) strttl(off+40); if (!real_files_names_case) strttl(file_off+40);
if (TestBit(ESDWORD[off],4)) //directory? if (TestBit(ESDWORD[file_off],4)) //directory?
{ {
file_mas[k]=j; file_mas[k]=j;
k++; k++;