#include #include "dirlist.h" #include "console.h" #include "screen.h" #include "wait.h" int chooseFile(char* path, char* initpath) { int j,i,li,s, refresh, shouldwait; int cancelled=0; strcpy(path,initpath); char* p = strrchr(path,'/'); if(p) *(p+1)=0; char** filenames = (char**) malloc(1024); int fileselected=0; while(!fileselected && !cancelled) { int numfiles = dirlist(path, "*.*", filenames); refresh=1; i=0; s=0; li=0; shouldwait=0; while (!isKeyPressed(KEY_NSPIRE_ENTER) && !cancelled) { if( refresh ) { clrscr(); resetConsole(); disp("Files in ",0); displn(path,0); displn("",0); for (j = s; j < numfiles && j-s'); if(s>0) putChar(0,CHAR_HEIGHT,24); if(s+MAX_LGN-3= numfiles) i = 0; } if (i!=li) { if(i=MAX_LGN-3) { s+=MAX_LGN-3; refresh=1; if(s>numfiles-MAX_LGN+3) s=numfiles-MAX_LGN+3; } if(!refresh) { putChar(0, CHAR_HEIGHT*(li-s+2), ' '); putChar(0, CHAR_HEIGHT*(i-s+2), '>'); } li=i; wait(200); } if(isKeyPressed(KEY_NSPIRE_ESC)) cancelled=1; } if(!cancelled) { char* selected = filenames[i]; if(strcmp(selected,".")) { if(!strcmp(selected,"..")) { path[strlen(path)-1]=0; p = strrchr(path,'/'); if(p) *(p+1)=0; shouldwait=1; } else { strcat(path,selected); if(chdir(path)) { fileselected=1; } else { strcat(path,"/"); shouldwait=1; } } if(shouldwait) { wait(200); shouldwait=0; } } } for(i=0;i