Eolite: Update when you change file attributes

git-svn-id: svn://kolibrios.org@5606 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
pavelyakov 2015-07-23 11:54:26 +00:00
parent 272fd42b90
commit 8f2060bd2b
7 changed files with 90 additions and 60 deletions

View File

@ -122,7 +122,7 @@ byte active_about=0;
word about_window; word about_window;
byte active_settings=0; byte active_settings=0;
word settings_window; word settings_window;
dword _not_draw = false;
byte menu_call_mouse=0; byte menu_call_mouse=0;
llist files; llist files;
@ -208,7 +208,7 @@ void main()
strncpy(#path, "/rd/1/", 6); strncpy(#path, "/rd/1/", 6);
} }
Open_Dir(#path,ONLY_OPEN); Open_Dir(#path,ONLY_OPEN);
SetEventMask(0x27); SetEventMask(1100111b);
loop(){ loop(){
switch(WaitEvent()) switch(WaitEvent())
{ {
@ -558,13 +558,9 @@ void main()
action_buf=0; action_buf=0;
} }
break; break;
/*default: case evIPC:
if(CMD_REFRESH) goto DRAW_WINDOW;
{ break;
CMD_REFRESH = false;
goto DRAW_WINDOW;
}
*/
} }
if(cmd_free) if(cmd_free)
@ -769,7 +765,7 @@ void Line_ReDraw(dword color, filenum){
} }
else else
{ {
if (strcmp("..",file_name_off)==0) ext1=".."; else ext1="<DIR>"; if (!strncmp(file_name_off,"..",3)) 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);
} }
@ -778,8 +774,7 @@ void Line_ReDraw(dword color, filenum){
{ {
itdir = TestBit(attr, 4); itdir = TestBit(attr, 4);
strcpy(#file_name, file_name_off); strcpy(#file_name, file_name_off);
strcpy(#file_path, #path); sprintf(#file_path,"%s%s",#path,file_name_off);
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 (file.selected) text_col=0xFF0000;
@ -820,7 +815,7 @@ void Open_Dir(dword dir_path, redraw){
} }
if (files.count!=-1) if (files.count!=-1)
{ {
KEdit(); if(!_not_draw)KEdit();
HistoryPath(ADD_NEW_PATH); HistoryPath(ADD_NEW_PATH);
files.visible = files.h / files.line_h; files.visible = files.h / files.line_h;
if (files.count < files.visible) files.visible = files.count; if (files.count < files.visible) files.visible = files.count;
@ -829,9 +824,9 @@ void Open_Dir(dword dir_path, redraw){
if (sort_num==3) sorting_arrow_x = strlen(T_SIZE)*3-30+files.x+files.w; if (sort_num==3) sorting_arrow_x = strlen(T_SIZE)*3-30+files.x+files.w;
WriteText(sorting_arrow_x,45,0x80,sc.work_graph,"\x19"); WriteText(sorting_arrow_x,45,0x80,sc.work_graph,"\x19");
if (redraw!=ONLY_SHOW) Sorting(); if (redraw!=ONLY_SHOW) Sorting();
if (redraw!=ONLY_OPEN) List_ReDraw(); if (redraw!=ONLY_OPEN)&&(!_not_draw) List_ReDraw();
} }
if (files.count==-1) && (redraw!=ONLY_OPEN) {files.visible=files.count=0; List_ReDraw();} if (files.count==-1) && (redraw!=ONLY_OPEN) {files.visible=files.count=0; if(!_not_draw)List_ReDraw();}
} }
@ -840,7 +835,7 @@ inline Sorting()
dword k=0, l=1; dword k=0, l=1;
dword file_off; dword file_off;
int i; int i;
if (!strcmp(#path,"/")) //do not sort if (!strncmp(#path,"/",2)) //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;
@ -865,8 +860,8 @@ inline Sorting()
if (sort_num==2) Sort_by_Type(k,files.count-1); if (sort_num==2) Sort_by_Type(k,files.count-1);
if (sort_num==3) Sort_by_Size(k,files.count-1); if (sort_num==3) Sort_by_Size(k,files.count-1);
//make ".." first item in list //make ".." first item in list
if (k>0) && (strcmp(file_mas[0]*304+buf+72,"..")!=0) if (k>0) && (!strncmp(file_mas[0]*304+buf+72,"..",3))
for(k--; k>0; k--;) if (!strcmp(file_mas[k]*304+buf+72,"..")) {file_mas[k]><file_mas[0]; break;} for(k--; k>0; k--;) if (!strncmp(file_mas[k]*304+buf+72,"..",3)) {file_mas[k]><file_mas[0]; break;}
} }
@ -876,7 +871,7 @@ void Del_Form()
int cont = 0; int cont = 0;
byte f_count[128]; byte f_count[128];
int dform_x = files.w - 220 / 2 + files.x; int dform_x = files.w - 220 / 2 + files.x;
if (!strncmp(#file_name,".",1)) || (!strncmp(#file_name,"..",2)) return; if (!strncmp(#file_name,".",2)) || (!strncmp(#file_name,"..",2)) return;
if (del_active==2) if (del_active==2)
{ {
if (itdir) ShowMessage(WAIT_DELETING_FOLDER, 0); if (itdir) ShowMessage(WAIT_DELETING_FOLDER, 0);
@ -929,9 +924,6 @@ int Del_File2(dword way)
{ {
if (CheckEvent()==evReDraw) draw_window(); if (CheckEvent()==evReDraw) draw_window();
filename = i*304+dirbuf+72; filename = i*304+dirbuf+72;
/*strcpy(#del_from, way);
chrcat(#del_from, '/');
strcat(#del_from, filename);*/
sprintf(#del_from,"%s/%s",way,filename); sprintf(#del_from,"%s/%s",way,filename);
if ( TestBit(ESDWORD[filename-40], 4) ) if ( TestBit(ESDWORD[filename-40], 4) )
{ {
@ -965,8 +957,6 @@ void Del_File(byte dodel)
{ {
selected_offset2 = file_mas[i]*304 + buf+32 + 7; selected_offset2 = file_mas[i]*304 + buf+32 + 7;
if (ESBYTE[selected_offset2]) { if (ESBYTE[selected_offset2]) {
/*strcpy(#del_from, #path);
strcat(#del_from, file_mas[i]*304+buf+72);*/
sprintf(#del_from,"%s%s",#path,file_mas[i]*304+buf+72); sprintf(#del_from,"%s%s",#path,file_mas[i]*304+buf+72);
Del_File2(#del_from); Del_File2(#del_from);
} }
@ -1015,7 +1005,7 @@ void Open(byte rez)
selected_count = 0; selected_count = 0;
if (rez) if (rez)
{ {
if (!strncmp(#file_name,"..",2)) return; if (!strncmp(#file_name,"..",3)) return;
strcpy(#temp, #file_path); strcpy(#temp, #file_path);
if (path[strlen(#temp)-1]!='/') chrcat(#temp, '/'); //need "/" in the end if (path[strlen(#temp)-1]!='/') chrcat(#temp, '/'); //need "/" in the end
RunProgram("/sys/File Managers/Eolite", #temp); RunProgram("/sys/File Managers/Eolite", #temp);
@ -1028,7 +1018,7 @@ void Open(byte rez)
} }
else else
{ {
if (!strncmp(#file_name,"..",2)) { Dir_Up(); return; } if (!strncmp(#file_name,"..",3)) { Dir_Up(); return; }
strcpy(#path, #file_path); strcpy(#path, #file_path);
if (path[strlen(#path)-1]!='/') chrcat(#path, '/'); //need "/" in the end if (path[strlen(#path)-1]!='/') chrcat(#path, '/'); //need "/" in the end
files.first=files.current=0; files.first=files.current=0;
@ -1047,9 +1037,6 @@ inline fastcall void GoBack()
void ShowOpenWithDialog() void ShowOpenWithDialog()
{ {
byte param[4097]; byte param[4097];
/*param[0] = '~';
param[1] = '\0';
strcat(#param, #file_path);*/
sprintf(#param,"~%s",#file_path); sprintf(#param,"~%s",#file_path);
RunProgram("/sys/@open", #param); RunProgram("/sys/@open", #param);
} }
@ -1060,8 +1047,6 @@ void NewElement(byte newf)
byte del_rezult, copy_rezult, info_result; byte del_rezult, copy_rezult, info_result;
if (newf) if (newf)
{ {
/*strcpy(#temp, #path);
strcat(#temp, new_file_ed.text);*/
sprintf(#temp,"%s%s",#path,new_file_ed.text); sprintf(#temp,"%s%s",#path,new_file_ed.text);
info_result = GetFileInfo(#temp, #element_info); info_result = GetFileInfo(#temp, #element_info);
switch(new_element_active) switch(new_element_active)

View File

@ -161,8 +161,16 @@ void properties_dialog()
ExitProcess(); ExitProcess();
} }
if (id==20) SetProperties(id); if (id==20) SetProperties(id);
if (id==21) SetProperties(id); if (id==21)
{
SetProperties(id);
_not_draw = true;
Open_Dir(#path,WITH_REDRAW);
_not_draw = false;
EventRedrawWindow(Form.left,Form.top);
}
if (id==22) SetProperties(id); if (id==22) SetProperties(id);
DrawPropertiesCheckBoxes(); DrawPropertiesCheckBoxes();
break; break;
@ -235,7 +243,6 @@ void properties_dialog()
flags_frame.font_backgr_color = sc.work; flags_frame.font_backgr_color = sc.work;
flags_frame.ext_col = sc.work_graph; flags_frame.ext_col = sc.work_graph;
frame_draw stdcall (#flags_frame); frame_draw stdcall (#flags_frame);
DrawPropertiesCheckBoxes(); DrawPropertiesCheckBoxes();
} }
} }

View File

@ -39,23 +39,26 @@ void settings_dialog()
if (active_settings){ if (active_settings){
EXIT_SETTING: EXIT_SETTING:
show_dev_name = save_show_dev_name;
show_dev_name = save_show_dev_name;
real_files_names_case = save_real_files_names_case; real_files_names_case = save_real_files_names_case;
info_after_copy = save_info_after_copy; info_after_copy = save_info_after_copy;
use_big_fonts = save_use_big_fonts; use_big_fonts = save_use_big_fonts;
files.line_h = save_files_h; files.line_h = save_files_h;
MOUSE_TIME = save_DBLTime; MOUSE_TIME = save_DBLTime;
cmd_free = 4; cmd_free = 4;
ExitProcess(); ExitProcess();
} }
active_settings=1; active_settings=1;
save_show_dev_name = show_dev_name; save_show_dev_name = show_dev_name;
save_real_files_names_case = real_files_names_case; save_real_files_names_case = real_files_names_case;
save_info_after_copy = info_after_copy; save_info_after_copy = info_after_copy;
save_use_big_fonts = use_big_fonts; save_use_big_fonts = use_big_fonts;
save_files_h = files.line_h; save_files_h = files.line_h;
save_DBLTime = MOUSE_TIME; save_DBLTime = MOUSE_TIME;
loop(){ loop(){
switch(WaitEvent()) switch(WaitEvent())
@ -64,7 +67,7 @@ void settings_dialog()
id=GetButtonID(); id=GetButtonID();
if (id==10) if (id==10)
{ {
SaveIniSettings(); //SaveIniSettings();
active_settings=0; active_settings=0;
action_buf = 300; action_buf = 300;
cmd_free = 4; cmd_free = 4;
@ -88,9 +91,7 @@ void settings_dialog()
else if (id==26) && (files.line_h>14) files.line_h--; else if (id==26) && (files.line_h>14) files.line_h--;
else if (id==27) MOUSE_TIME++; else if (id==27) MOUSE_TIME++;
else if (id==28) && (MOUSE_TIME>29) MOUSE_TIME--; else if (id==28) && (MOUSE_TIME>29) MOUSE_TIME--;
//CMD_REFRESH = true; EventRedrawWindow(Form.left,Form.top);
MoveSize(-1,-1,-1,settings_form.height+1);
MoveSize(-1,-1,-1,settings_form.height);
DrawSettingsCheckBoxes(); DrawSettingsCheckBoxes();
break; break;

View File

@ -3,9 +3,9 @@
void Sort_by_Size(int a, b) // äë˙ ďĺđâîăî âűçîâŕ: a = 0, b = <ýëĺěĺíňîâ â ěŕńńčâĺ> - 1 void Sort_by_Size(int a, b) // äë˙ ďĺđâîăî âűçîâŕ: a = 0, b = <ýëĺěĺíňîâ â ěŕńńčâĺ> - 1
{ {
int iss = a; int iss = a;
IF (a >= b) return; if (a >= b) return;
FOR (j = a; j <= b; j++) for (j = a; j <= b; j++)
IF (ESDWORD[file_mas[j]*304 + buf+64] <= ESDWORD[file_mas[b]*304 + buf+64]) { file_mas[iss] >< file_mas[j]; iss++;} if (ESDWORD[file_mas[j]*304 + buf+64] <= ESDWORD[file_mas[b]*304 + buf+64]) { file_mas[iss] >< file_mas[j]; iss++;}
Sort_by_Size (a, iss-2); Sort_by_Size (a, iss-2);
Sort_by_Size (iss, b); Sort_by_Size (iss, b);
} }
@ -14,9 +14,9 @@ void Sort_by_Size(int a, b) //
void Sort_by_Name(int a, b) // äë˙ ďĺđâîăî âűçîâŕ: a = 0, b = <ýëĺěĺíňîâ â ěŕńńčâĺ> - 1 void Sort_by_Name(int a, b) // äë˙ ďĺđâîăî âűçîâŕ: a = 0, b = <ýëĺěĺíňîâ â ěŕńńčâĺ> - 1
{ {
int isn = a; int isn = a;
IF (a >= b) return; if (a >= b) return;
FOR (j = a; j <= b; j++) for (j = a; j <= b; j++)
IF (strcmp(file_mas[j]*304 + buf+72, file_mas[b]*304 + buf+72)<=0) { file_mas[isn] >< file_mas[j]; isn++;} if (strcmp(file_mas[j]*304 + buf+72, file_mas[b]*304 + buf+72)<=0) { file_mas[isn] >< file_mas[j]; isn++;}
Sort_by_Name(a, isn-2); Sort_by_Name(a, isn-2);
Sort_by_Name(isn, b); Sort_by_Name(isn, b);
} }
@ -26,7 +26,7 @@ void Sort_by_Type(int a, b) //
{ {
dword filename1, filename2, ext1, ext2; dword filename1, filename2, ext1, ext2;
int n, isn = a; int n, isn = a;
IF (a >= b) return; if (a >= b) return;
for (j = a; j <= b; j++) for (j = a; j <= b; j++)
{ {
filename1 = file_mas[j]*304 + buf+72; filename1 = file_mas[j]*304 + buf+72;
@ -34,14 +34,14 @@ void Sort_by_Type(int a, b) //
n=strlen(filename1)-1; n=strlen(filename1)-1;
WHILE (n>0) && (ESBYTE[filename1+n]<>'.') n--; WHILE (n>0) && (ESBYTE[filename1+n]<>'.') n--;
IF (n) ext1 = filename1+n+1; else ext1=0; if (n) ext1 = filename1+n+1; else ext1=0;
n=strlen(filename2)-1; n=strlen(filename2)-1;
WHILE (n>0) && (ESBYTE[filename2+n]<>'.') n--; WHILE (n>0) && (ESBYTE[filename2+n]<>'.') n--;
IF (n) ext2 = filename2+n+1; else ext2=0; if (n) ext2 = filename2+n+1; else ext2=0;
n=strcmp(ext1, ext2); n=strcmp(ext1, ext2);
IF (n<0) { file_mas[isn] >< file_mas[j]; isn++;} if (n<0) { file_mas[isn] >< file_mas[j]; isn++;}
IF (n==0) && (strcmp(filename1, filename2)<=0) { file_mas[isn] >< file_mas[j]; isn++;} if (n==0) && (strcmp(filename1, filename2)<=0) { file_mas[isn] >< file_mas[j]; isn++;}
} }
Sort_by_Type(a, isn-2); Sort_by_Type(a, isn-2);
Sort_by_Type(isn, b); Sort_by_Type(isn, b);

View File

@ -251,6 +251,8 @@ char program_path[4096];
vert = EBX; vert = EBX;
} }
:void mouse::slider() :void mouse::slider()
{ {
signed _x,_y; signed _x,_y;
@ -824,6 +826,27 @@ inline fastcall dword GetStartTime()
$int 0x40 $int 0x40
} }
:dword X_EventRedrawWindow,Y_EventRedrawWindow;
:void _EventRedrawWindow()
{
loop()switch(WaitEvent())
{
case evReDraw:
DefineAndDrawWindow(X_EventRedrawWindow,Y_EventRedrawWindow,100,1,1,0x34,0xFFFFFF,"");
pause(10);
ExitProcess();
break;
}
}
:void EventRedrawWindow(dword x,y)
{
dword mem = malloc(4096);
X_EventRedrawWindow = x;
Y_EventRedrawWindow = y;
CreateThread(#_EventRedrawWindow,mem+4092);
}
:dword ALERT_TEXT; :dword ALERT_TEXT;
:void dialog_alert() :void dialog_alert()
{ {
@ -841,7 +864,6 @@ inline fastcall dword GetStartTime()
break; break;
} }
} }
:dword alert(dword text) :dword alert(dword text)
{ {
dword mem = malloc(4096); dword mem = malloc(4096);

View File

@ -1,6 +1,10 @@
#ifndef INCLUDE_MEM_H #ifndef INCLUDE_MEM_H
#define INCLUDE_MEM_H #define INCLUDE_MEM_H
#ifndef INCLUDE_KOLIBRI_H
#include "../lib/kolibri.h"
#endif
dword mem_init() dword mem_init()
{ {
$push ebx $push ebx

View File

@ -116,7 +116,18 @@ L1:
} }
} }
/*
inline signed int strncmp(dword text1,text2,len)
{
loop()
{
if(DSBYTE[text1]!=DSBYTE[text2])return text1-text2;
$dec len
if(!len)return 0;
}
}
*/
inline fastcall unsigned int strlen( EDI) inline fastcall unsigned int strlen( EDI)
{ {
$xor eax, eax $xor eax, eax