| 77 |
"F2", (char *)NULL |
"F2", (char *)NULL |
| 78 |
}; |
}; |
| 79 |
|
|
| 80 |
/* SCREEN *ofm_term; */ |
//SCREEN *ofm_term; |
| 81 |
|
|
| 82 |
/* console size */ |
/* console size */ |
| 83 |
|
|
| 102 |
char cmd_buffer[PATH_MAX+1]; |
char cmd_buffer[PATH_MAX+1]; |
| 103 |
int cmd_size=0; |
int cmd_size=0; |
| 104 |
|
|
| 105 |
|
/*bookmarks stuff*/ |
| 106 |
|
int bookmark_is_active=0; |
| 107 |
|
/*pointers replaced by bookmarks*/ |
| 108 |
|
DirStruct *bb_dir, *bb_sel_ds, *bb_first ; |
| 109 |
|
char *bb_sel_name; |
| 110 |
|
/*bookmarks pointers*/ |
| 111 |
|
DirStruct *b_sel_ds=NULL, *b_first=NULL ; |
| 112 |
|
char *b_sel_name=NULL; |
| 113 |
|
DirStruct *Bookmarks=NULL; |
| 114 |
|
|
| 115 |
|
|
| 116 |
/* ***** ***** ***** */ |
/* ***** ***** ***** */ |
| 117 |
|
|
| 118 |
|
DirStruct *bookmarkInsert(DirStruct *bm){ |
| 119 |
|
DirStruct *tmp; |
| 120 |
|
int ti; |
| 121 |
|
|
| 122 |
|
tmp=NULL; |
| 123 |
|
if (bm!=NULL) { |
| 124 |
|
tmp=dirDuplicate(bm); |
| 125 |
|
if (tmp!=NULL) { |
| 126 |
|
tmp->path=NULL; |
| 127 |
|
ti=strlen(workdir[opanelActive]); |
| 128 |
|
tmp->path=(char *)xmalloc(ti+1); |
| 129 |
|
if (tmp->path!=NULL) strcpy(tmp->path,workdir[opanelActive]); |
| 130 |
|
if (Bookmarks==NULL) { |
| 131 |
|
tmp->last=tmp; |
| 132 |
|
tmp->first=tmp; |
| 133 |
|
tmp->index=1; |
| 134 |
|
Bookmarks=tmp; |
| 135 |
|
} else { |
| 136 |
|
tmp->prev=Bookmarks->last; |
| 137 |
|
tmp->index=Bookmarks->last->index+1; |
| 138 |
|
tmp->last=tmp; |
| 139 |
|
tmp->first=Bookmarks->first; |
| 140 |
|
Bookmarks->last->next=tmp; |
| 141 |
|
Bookmarks->last=tmp; |
| 142 |
|
} |
| 143 |
|
if (tmp->dir) Bookmarks->dir_count++; |
| 144 |
|
else Bookmarks->files_count++; |
| 145 |
|
tmp=Bookmarks; |
| 146 |
|
while (tmp->next!=NULL) { |
| 147 |
|
tmp->next->dir_count=tmp->dir_count; |
| 148 |
|
tmp->next->files_count=tmp->files_count; |
| 149 |
|
tmp=tmp->next; |
| 150 |
|
} |
| 151 |
|
tmp=Bookmarks->last; |
| 152 |
|
} |
| 153 |
|
|
| 154 |
|
} |
| 155 |
|
return tmp; |
| 156 |
|
} |
| 157 |
|
|
| 158 |
|
int bookmarkSaveState(OPANEL *op) |
| 159 |
|
{ |
| 160 |
|
bb_dir=op->dir; |
| 161 |
|
bb_sel_ds=op->sel_ds; |
| 162 |
|
bb_sel_name=op->sel_name; |
| 163 |
|
bb_first=op->first; |
| 164 |
|
op->dir=Bookmarks; |
| 165 |
|
op->sel_ds=b_sel_ds; |
| 166 |
|
op->sel_name=b_sel_name; |
| 167 |
|
op->first=b_first; |
| 168 |
|
op->virtual_dir=1; |
| 169 |
|
return 0; |
| 170 |
|
} |
| 171 |
|
|
| 172 |
|
int bookmarkRestoreState(OPANEL *op) |
| 173 |
|
{ |
| 174 |
|
bookmark_is_active=0; |
| 175 |
|
b_sel_ds=op->sel_ds; |
| 176 |
|
b_sel_name=op->sel_name; |
| 177 |
|
b_first=op->first; |
| 178 |
|
op->dir=bb_dir; |
| 179 |
|
op->sel_ds=bb_sel_ds; |
| 180 |
|
op->sel_name=bb_sel_name; |
| 181 |
|
op->first=bb_first; |
| 182 |
|
op->virtual_dir=0; |
| 183 |
|
return 0; |
| 184 |
|
} |
| 185 |
|
|
| 186 |
|
|
| 187 |
/* creates two panels, windows with information, gets the path of the inactive |
/* creates two panels, windows with information, gets the path of the inactive |
| 188 |
panel (the path of the active panel is read from opanelRefresh */ |
panel (the path of the active panel is read from opanelRefresh */ |
| 189 |
|
|
| 232 |
{ |
{ |
| 233 |
opanelDelete(opanels[0]); |
opanelDelete(opanels[0]); |
| 234 |
opanelDelete(opanels[1]); |
opanelDelete(opanels[1]); |
| 235 |
|
if (bookmark_is_active) Bookmarks=bb_dir; //opanelDelete cleared bookmarks' dir so we clear real dir |
| 236 |
delwin(up_info); |
delwin(up_info); |
| 237 |
delwin(down_info); |
delwin(down_info); |
| 238 |
menuDelete(ofm_menu[0]); |
menuDelete(ofm_menu[0]); |
| 240 |
menuBarDelete(); |
menuBarDelete(); |
| 241 |
stackFree(stack[0]); |
stackFree(stack[0]); |
| 242 |
stackFree(stack[1]); |
stackFree(stack[1]); |
| 243 |
|
if (Bookmarks!=NULL) dirFree(Bookmarks); |
| 244 |
clear(); |
clear(); |
| 245 |
} |
} |
| 246 |
|
|
| 252 |
|
|
| 253 |
tmp=(OPANEL*)xmalloc(sizeof(OPANEL)); |
tmp=(OPANEL*)xmalloc(sizeof(OPANEL)); |
| 254 |
if (tmp!=NULL) { |
if (tmp!=NULL) { |
| 255 |
/* tmp->path="./"; */ |
//tmp->path="./"; |
| 256 |
tmp->dir=(DirStruct*)NULL; |
tmp->dir=(DirStruct*)NULL; |
| 257 |
|
tmp->virtual_dir=0; |
| 258 |
tmp->columns=2; |
tmp->columns=2; |
| 259 |
tmp->width=width; |
tmp->width=width; |
| 260 |
tmp->height=height; |
tmp->height=height; |
| 289 |
{ |
{ |
| 290 |
|
|
| 291 |
/* artificial variable */ |
/* artificial variable */ |
|
|
|
| 292 |
int tmp; |
int tmp; |
| 293 |
|
|
| 294 |
/* char before the name */ |
/* char before the name */ |
|
|
|
| 295 |
char prefix; |
char prefix; |
| 296 |
|
|
| 297 |
/* string dependent on the column length */ |
/* string dependent on the column length */ |
|
|
|
| 298 |
char *tstr; |
char *tstr; |
| 299 |
|
|
| 300 |
/* artificial string */ |
/* artificial string */ |
|
|
|
| 301 |
char tname[FILENAME_MAX]; |
char tname[FILENAME_MAX]; |
| 302 |
|
|
| 303 |
/* current cursor position */ |
/* current cursor position */ |
|
|
|
| 304 |
int x=1,y=1; |
int x=1,y=1; |
| 305 |
|
|
| 306 |
/* current structure */ |
/* current structure */ |
|
|
|
| 307 |
DirStruct *ds, *dstmp; |
DirStruct *ds, *dstmp; |
| 308 |
|
|
| 309 |
/* column width */ |
/* column width */ |
|
|
|
| 310 |
int colw; |
int colw; |
| 311 |
|
|
| 312 |
/* color */ |
/* color */ |
|
|
|
| 313 |
int col; |
int col; |
| 314 |
|
|
| 315 |
/* number of current panel */ |
/* number of current panel */ |
|
|
|
| 316 |
int opanel_nr; |
int opanel_nr; |
| 317 |
|
|
| 318 |
/* artificial variable */ |
/* artificial variable */ |
|
|
|
| 319 |
unsigned long tsize; |
unsigned long tsize; |
| 320 |
|
|
| 321 |
/* artificial variable */ |
/* artificial variable */ |
|
|
|
| 322 |
int t; |
int t; |
| 323 |
|
|
|
|
|
| 324 |
if (p==NULL) return 0; |
if (p==NULL) return 0; |
| 325 |
|
|
| 326 |
/* draws windows and seperators */ |
/* draws windows and seperators */ |
| 327 |
|
|
| 328 |
/* color */ |
/* color */ |
|
|
|
| 329 |
col=5; |
col=5; |
| 330 |
|
|
| 331 |
/* if the panel is active... */ |
/* if the panel is active... */ |
|
|
|
| 332 |
if (p->active) col=1; |
if (p->active) col=1; |
| 333 |
wbkgd(p->win,COLOR_PAIR(col)); |
wbkgd(p->win,COLOR_PAIR(col)); |
| 334 |
wattrset(p->win,COLOR_PAIR(col)); |
wattrset(p->win,COLOR_PAIR(col)); |
| 348 |
else opanel_nr=! opanelActive; |
else opanel_nr=! opanelActive; |
| 349 |
tmp=chdir(workdir[opanel_nr]); |
tmp=chdir(workdir[opanel_nr]); |
| 350 |
if (tmp) { |
if (tmp) { |
| 351 |
/* fprintf(stderr,"Error changing to workdir[%d]: %s\n",opanel_nr,workdir[opanel_nr]); */ |
// fprintf(stderr,"Error changing to workdir[%d]: %s\n",opanel_nr,workdir[opanel_nr]); |
| 352 |
tmp=chdir("/"); |
tmp=chdir("/"); |
| 353 |
p->reread=1; |
p->reread=1; |
| 354 |
} |
} |
| 361 |
/* if the directory isn't read yet, then we should do it */ |
/* if the directory isn't read yet, then we should do it */ |
| 362 |
|
|
| 363 |
if (p->dir==NULL) { |
if (p->dir==NULL) { |
| 364 |
/* while ( ((p->dir=dirSuck("./"))==NULL) && (! chdir("..")) ); */ |
//while ( ((p->dir=dirSuck("./"))==NULL) && (! chdir("..")) ); |
| 365 |
p->dir=dirSuck("./"); |
p->dir=dirSuck("./"); |
| 366 |
if (p->dir==NULL) return 1; |
if (p->dir==NULL) return 1; |
| 367 |
dirSort(p->dir,p->sort_mode); |
p->dir->next=dirSort(p->dir->next,p->sort_mode,1); |
| 368 |
p->first=p->dir->first; |
p->first=p->dir->first; |
| 369 |
if (p->sel_name!=NULL) p->reread=1; |
if (p->sel_name!=NULL) p->reread=1; |
| 370 |
getcwd(workdir[opanel_nr],PATH_MAX); |
getcwd(workdir[opanel_nr],PATH_MAX); |
| 374 |
|
|
| 375 |
if (p->reread) { |
if (p->reread) { |
| 376 |
p->reread=0; |
p->reread=0; |
| 377 |
|
ds=NULL; |
| 378 |
/* lazy check */ |
if (p->virtual_dir) ds=p->dir; |
| 379 |
|
else ds=dirSuck("./"); |
|
/* while ( ((ds=dirSuck("./"))==NULL) && (! chdir("..")) ); */ |
|
|
ds=dirSuck("./"); |
|
| 380 |
if (ds!=NULL){ |
if (ds!=NULL){ |
| 381 |
dirSort(ds,p->sort_mode); |
if (p->virtual_dir) { |
| 382 |
|
ds=dirSort(ds,p->sort_mode,0); |
| 383 |
|
p->first=ds; |
| 384 |
|
p->dir=ds; |
| 385 |
|
Bookmarks=ds; |
| 386 |
|
} |
| 387 |
|
else ds->next=dirSort(ds->next,p->sort_mode,1); |
| 388 |
if (p->sel_ds!=NULL) strcpy(tname,p->sel_ds->name); |
if (p->sel_ds!=NULL) strcpy(tname,p->sel_ds->name); |
| 389 |
else if (p->sel_name!=NULL) strcpy(tname,p->sel_name); |
else if (p->sel_name!=NULL) strcpy(tname,p->sel_name); |
| 390 |
|
|
| 395 |
p->first=ds->first; |
p->first=ds->first; |
| 396 |
p->sel_ds=ds->first; |
p->sel_ds=ds->first; |
| 397 |
} |
} |
| 398 |
else { |
else { //we found selected node |
| 399 |
p->sel_ds=dstmp; |
p->sel_ds=dstmp; |
| 400 |
if ((dstmp=dirFind(ds,p->first->name))==NULL) p->first=p->sel_ds; |
if ((dstmp=dirFind(ds,p->first->name))==NULL) //if our previous first node disappear |
| 401 |
|
p->first=p->sel_ds; |
| 402 |
else |
else |
| 403 |
if (dstmp->index>p->sel_ds->index) p->first=p->sel_ds; |
if (dstmp->index>p->sel_ds->index) //if previous node is after selected node |
| 404 |
|
p->first=p->sel_ds; |
| 405 |
else { |
else { |
| 406 |
tmp=p->sel_ds->index - dstmp->index - p->columns*(p->height - 2) + 1; |
tmp=p->sel_ds->index - dstmp->index - p->columns*(p->height - 2) + 1; |
| 407 |
if (tmp>0) while ((dstmp->next!=NULL) && tmp--) dstmp=dstmp->next; |
if (tmp>0) while ((dstmp->next!=NULL) && tmp--) dstmp=dstmp->next; |
| 408 |
p->first=dstmp; |
p->first=dstmp; |
| 409 |
} |
} |
| 410 |
} |
} |
| 411 |
dirFree(p->dir); |
|
| 412 |
p->dir=ds; |
p->sel_size=0; |
| 413 |
getcwd(workdir[opanel_nr],PATH_MAX); |
p->sel_count=0; |
| 414 |
/* fprintf(stderr,"REREAD: %s refreshed\n",workdir[opanel_nr]); */ |
if (! p->virtual_dir) { |
| 415 |
|
dirFree(p->dir); |
| 416 |
|
p->dir=ds; |
| 417 |
|
getcwd(workdir[opanel_nr],PATH_MAX); |
| 418 |
|
} else { |
| 419 |
|
ds=p->dir; |
| 420 |
|
while (ds!=NULL) { |
| 421 |
|
if (ds->selected) { |
| 422 |
|
p->sel_size+=ds->size; |
| 423 |
|
p->sel_count++; |
| 424 |
|
} |
| 425 |
|
ds=ds->next; |
| 426 |
|
} |
| 427 |
|
} |
| 428 |
} else return 1; |
} else return 1; |
| 429 |
} |
} |
| 430 |
|
|
| 443 |
if (tstr==NULL) return 2; |
if (tstr==NULL) return 2; |
| 444 |
wmove(p->win,y,x); |
wmove(p->win,y,x); |
| 445 |
ds=p->first; |
ds=p->first; |
| 446 |
/* selcount=selsize=0; */ |
//selcount=selsize=0; |
| 447 |
|
|
| 448 |
tmp=0; |
tmp=0; |
| 449 |
|
|
| 496 |
|
|
| 497 |
/* write out the prefix and the filename */ |
/* write out the prefix and the filename */ |
| 498 |
|
|
| 499 |
t=colw-2; /* maximum name length */ |
t=colw-2; //maximum name length |
| 500 |
if ((tsize=strlen(ds->name))<=t) sprintf(tstr,"%-*.*s",t,t,ds->name); |
if ((tsize=strlen(ds->name))<=t) sprintf(tstr,"%-*.*s",t,t,ds->name); |
| 501 |
else { |
else { |
| 502 |
t/=2; |
t/=2; |
| 504 |
} |
} |
| 505 |
mvwprintw(p->win,y,x,"%c%.*s",prefix,colw-2,tstr); |
mvwprintw(p->win,y,x,"%c%.*s",prefix,colw-2,tstr); |
| 506 |
|
|
| 507 |
y++; /* next row */ |
y++; //next row |
| 508 |
if (y>p->height-2) { /* if need to jump to next column */ |
if (y>p->height-2) { //if need to jump to next column |
| 509 |
y=1; |
y=1; |
| 510 |
x+=colw; |
x+=colw; |
| 511 |
wmove(p->win,y,x); |
wmove(p->win,y,x); |
| 512 |
} |
} |
| 513 |
ds=ds->next; /* next node */ |
ds=ds->next; //next node |
| 514 |
} |
} |
| 515 |
ds=p->first->first; /* get first node */ |
ds=p->first->first; //get first node |
| 516 |
xfree(tstr); |
xfree(tstr); |
| 517 |
|
|
| 518 |
/* arrow */ |
/* arrow */ |
| 519 |
|
|
| 520 |
wattrset(p->win,COLOR_PAIR(col)); |
wattrset(p->win,COLOR_PAIR(col)); |
| 521 |
t=ds->dir_count+ds->files_count; |
t=ds->dir_count+ds->files_count; |
| 522 |
if ((p->first->index+p->columns*(p->height-2))<t) |
if ((p->first->index-1+p->columns*(p->height-2))<t) |
| 523 |
mvwprintw(p->win,p->height-1,p->width-2,"=>"); |
mvwprintw(p->win,p->height-1,p->width-2,"=>"); |
| 524 |
|
|
| 525 |
wrefresh(p->win); |
wrefresh(p->win); |
| 533 |
|
|
| 534 |
int cursesInit() |
int cursesInit() |
| 535 |
{ |
{ |
| 536 |
/* ofm_term=newterm(NULL,stdout,stdin); |
// ofm_term=newterm(NULL,stdout,stdin); |
| 537 |
* if (ofm_term==NULL) printf("Couldn't initialize!"); |
// if (ofm_term==NULL) printf("Couldn't initialize!"); |
| 538 |
* set_term(ofm_term); |
// set_term(ofm_term); |
| 539 |
*/ |
|
| 540 |
initscr(); |
initscr(); |
| 541 |
start_color(); |
start_color(); |
| 542 |
|
|
| 599 |
/* char/block file (non-active) */ |
/* char/block file (non-active) */ |
| 600 |
|
|
| 601 |
init_pair(14,COLOR_MAGENTA,COLOR_BLACK); |
init_pair(14,COLOR_MAGENTA,COLOR_BLACK); |
| 602 |
/* init_pair(15,COLOR_BLACK,COLOR_BLUE); */ |
// init_pair(15,COLOR_BLACK,COLOR_BLUE); |
| 603 |
init_pair(15,COLOR_YELLOW,COLOR_WHITE); |
init_pair(15,COLOR_YELLOW,COLOR_WHITE); |
| 604 |
|
|
| 605 |
|
|
| 615 |
clear(); |
clear(); |
| 616 |
refresh(); |
refresh(); |
| 617 |
endwin(); |
endwin(); |
| 618 |
/* delscreen(ofm_term); */ |
// delscreen(ofm_term); |
| 619 |
} |
} |
| 620 |
|
|
| 621 |
/* ***** ***** ***** */ |
/* ***** ***** ***** */ |
| 644 |
/* write out the current path */ |
/* write out the current path */ |
| 645 |
wattrset(down_info,COLOR_PAIR(0)|A_BOLD); |
wattrset(down_info,COLOR_PAIR(0)|A_BOLD); |
| 646 |
wmove(down_info,1,1);wclrtoeol(down_info); |
wmove(down_info,1,1);wclrtoeol(down_info); |
| 647 |
wprintw(down_info,"%s",workdir[opanelActive]); |
if (opanelActive==bookmark_is_active-1) |
| 648 |
t=strlen(workdir[opanelActive]); |
wprintw(down_info,"Bookmarks' directory (%s)",tmp->sel_ds->path); |
| 649 |
if (t!=1) { |
else { |
| 650 |
wprintw(down_info,"/"); |
wprintw(down_info,"%s",workdir[opanelActive]); |
| 651 |
t++; |
t=strlen(workdir[opanelActive]); |
| 652 |
} |
if (t!=1) { |
| 653 |
wattron(down_info,A_REVERSE); |
wprintw(down_info,"/"); |
| 654 |
if (cmd_size>0) { |
t++; |
| 655 |
t+=cmd_size+2; |
} |
| 656 |
if (t<COLS) |
wattron(down_info,A_REVERSE); |
| 657 |
wprintw(down_info,"%s",cmd_buffer); |
if (cmd_size>0) { |
| 658 |
else |
t+=cmd_size+2; |
| 659 |
wprintw(down_info,"%s",cmd_buffer+(t-COLS)); |
if (t<COLS) |
| 660 |
|
wprintw(down_info,"%s",cmd_buffer); |
| 661 |
|
else |
| 662 |
|
wprintw(down_info,"%s",cmd_buffer+(t-COLS)); |
| 663 |
|
} |
| 664 |
|
wattroff(down_info,A_REVERSE); |
| 665 |
} |
} |
|
wattroff(down_info,A_REVERSE); |
|
| 666 |
|
|
| 667 |
wattrset(down_info,COLOR_PAIR(0)); |
wattrset(down_info,COLOR_PAIR(0)); |
| 668 |
wmove(down_info,0,1);wclrtoeol(down_info); |
wmove(down_info,0,1);wclrtoeol(down_info); |
| 674 |
if (tmp->sel_count>0) wprintw(down_info,"%d%s in %d directory node%c",tsize,xb[t],tmp->sel_count,(tmp->sel_count>1) ? 's':' '); |
if (tmp->sel_count>0) wprintw(down_info,"%d%s in %d directory node%c",tsize,xb[t],tmp->sel_count,(tmp->sel_count>1) ? 's':' '); |
| 675 |
else if ((! tmp->sel_ds->corrupt)&&(! tmp->sel_ds->link)){ |
else if ((! tmp->sel_ds->corrupt)&&(! tmp->sel_ds->link)){ |
| 676 |
t=tmp->sel_ds->mode; |
t=tmp->sel_ds->mode; |
| 677 |
wprintw(down_info,"%c%c%c%c%c%c%c%c%c%c (%o)",\ |
wprintw(down_info,"%c%c%c%c%c%c%c%c%c%c (%.6o)\t%s",\ |
| 678 |
((t&S_IFBLK)==S_IFBLK) ? 'b': (((t&S_IFCHR)==S_IFCHR) ? 'c': (((t&S_IFDIR)==S_IFDIR) ? 'd': (((t&S_IFIFO)==S_IFIFO) ? 'p':'-'))),\ |
((t&S_IFBLK)==S_IFBLK) ? 'b': (((t&S_IFCHR)==S_IFCHR) ? 'c': (((t&S_IFDIR)==S_IFDIR) ? 'd': (((t&S_IFIFO)==S_IFIFO) ? 'p':'-'))),\ |
| 679 |
((t&S_IRUSR)==S_IRUSR) ? 'r':'-',\ |
((t&S_IRUSR)==S_IRUSR) ? 'r':'-',\ |
| 680 |
((t&S_IWUSR)==S_IWUSR) ? 'w':'-',\ |
((t&S_IWUSR)==S_IWUSR) ? 'w':'-',\ |
| 685 |
((t&S_IROTH)==S_IROTH) ? 'r':'-',\ |
((t&S_IROTH)==S_IROTH) ? 'r':'-',\ |
| 686 |
((t&S_IWOTH)==S_IWOTH) ? 'w':'-',\ |
((t&S_IWOTH)==S_IWOTH) ? 'w':'-',\ |
| 687 |
((t&S_IXOTH)==S_IXOTH) ? 'x':'-',\ |
((t&S_IXOTH)==S_IXOTH) ? 'x':'-',\ |
| 688 |
tmp->sel_ds->mode&0xffff); |
tmp->sel_ds->mode&0xffff,ctime(&(tmp->sel_ds->mtime))); |
| 689 |
} |
} |
| 690 |
|
|
| 691 |
/* write out the filename and the filesize */ |
/* write out the filename and the filesize */ |
| 734 |
{ |
{ |
| 735 |
OPANEL *tmp=opanels[opanelActive]; |
OPANEL *tmp=opanels[opanelActive]; |
| 736 |
int result=0; |
int result=0; |
| 737 |
|
char *wd; |
| 738 |
|
|
| 739 |
if (tmp->sel_ds->index>1 || tmp->sel_count>0) { |
if (strcmp(tmp->sel_ds->name,"..") || tmp->sel_count>0) { |
| 740 |
if (dlgMessageBox(B_YES|B_NO,NULL,"Delete","Are You Sure?")==B_YES) { |
if (dlgMessageBox(B_YES|B_NO,NULL,"Delete","Are You Sure?")==B_YES) { |
| 741 |
|
if (tmp->sel_ds->path!=NULL) wd=tmp->sel_ds->path; |
| 742 |
|
else wd=workdir[opanelActive]; |
| 743 |
dlgDelete(tmp); |
dlgDelete(tmp); |
| 744 |
tmp->reread=1; |
tmp->reread=1; |
| 745 |
if (strcmp(workdir[0],workdir[1])==0) { |
if (strcmp(wd,workdir[! opanelActive])==0) { |
| 746 |
opanels[! opanelActive]->reread=1; |
opanels[! opanelActive]->reread=1; |
| 747 |
} |
} |
| 748 |
} |
} |
| 758 |
int result=0; |
int result=0; |
| 759 |
char buff[PATH_MAX+1]; |
char buff[PATH_MAX+1]; |
| 760 |
|
|
| 761 |
if (tmp->sel_ds->index>1 || tmp->sel_count) { |
if (strcmp(tmp->sel_ds->name,"..") || tmp->sel_count) { |
| 762 |
sprintf(buff,"%s/",workdir[! opanelActive]); |
sprintf(buff,"%s/",workdir[! opanelActive]); |
| 763 |
if (dlgMessageBox(B_OK|B_CANCEL,buff,"CopyTo","Destination:")==B_OK){ |
if (dlgMessageBox(B_OK|B_CANCEL,buff,"CopyTo","Destination:")==B_OK){ |
| 764 |
dlgCopy(tmp,buff); |
dlgCopy(tmp,buff); |
| 765 |
tmp->reread=1; /* have to check it */ |
tmp->reread=1; //have to check it |
| 766 |
opanels[! opanelActive]->reread=1; |
opanels[! opanelActive]->reread=1; |
| 767 |
} |
} |
| 768 |
result=1;; |
result=1;; |
| 777 |
int result=0; |
int result=0; |
| 778 |
char buff[PATH_MAX+1]; |
char buff[PATH_MAX+1]; |
| 779 |
int itmp; |
int itmp; |
| 780 |
|
char *wd; |
| 781 |
|
|
| 782 |
if (tmp->sel_ds->index>1) { |
if (strcmp(tmp->sel_ds->name,"..")) { |
| 783 |
result=1; |
result=1; |
| 784 |
if (strlen(workdir[opanelActive])==1) /* if root dir */ |
if (tmp->sel_ds->path!=NULL) wd=tmp->sel_ds->path; |
| 785 |
|
else wd=workdir[opanelActive]; |
| 786 |
|
if (strlen(wd)==1) //if root dir |
| 787 |
sprintf(buff,"/%s",tmp->sel_ds->name); |
sprintf(buff,"/%s",tmp->sel_ds->name); |
| 788 |
else |
else |
| 789 |
sprintf(buff,"%s/%s",workdir[opanelActive],tmp->sel_ds->name); |
sprintf(buff,"%s/%s",wd,tmp->sel_ds->name); |
| 790 |
if (dlgMessageBox(B_OK|B_CANCEL,buff,"Rename","New Name:")==B_OK){ |
if (dlgMessageBox(B_OK|B_CANCEL,buff,"Rename","New Name:")==B_OK){ |
| 791 |
itmp=rename(tmp->sel_ds->name,buff); |
itmp=rename(tmp->sel_ds->name,buff); |
| 792 |
if (itmp) dlgMessageBox(B_OK,NULL,"Error",strerror(errno)); |
if (itmp) dlgMessageBox(B_OK,NULL,"Error",strerror(errno)); |
| 793 |
/* we should really check this! rename could be into another directory - |
/* we should really check this! rename could be into another directory - |
| 794 |
FIXME */ |
FIXME */ |
| 795 |
tmp->reread=1; |
tmp->reread=1; |
| 796 |
if (strcmp(workdir[0],workdir[1])==0) opanels[! opanelActive]->reread=1; |
if (strcmp(wd,workdir[! opanelActive])==0) opanels[! opanelActive]->reread=1; |
| 797 |
} |
} |
| 798 |
} |
} |
| 799 |
return result; |
return result; |
| 836 |
|
|
| 837 |
tmp=opanels[opanelActive]; |
tmp=opanels[opanelActive]; |
| 838 |
|
|
| 839 |
if (i==KEY_F(9)) { /* MENU PULL DOWN */ |
if (i==KEY_F(9)) { //MENU PULL DOWN |
| 840 |
menuPost(ofm_menu[activem]); |
menuPost(ofm_menu[activem]); |
| 841 |
box(ofm_menu[activem]->win,0,0); |
box(ofm_menu[activem]->win,0,0); |
| 842 |
menuBarRefresh(activem); |
menuBarRefresh(activem); |
| 846 |
if (i==KEY_RIGHT) { |
if (i==KEY_RIGHT) { |
| 847 |
menuUnpost(ofm_menu[activem]); |
menuUnpost(ofm_menu[activem]); |
| 848 |
viewportRefresh(); |
viewportRefresh(); |
| 849 |
activem=(activem+1)%2; /* choose next menu */ |
activem=(activem+1)%2; //choose next menu |
| 850 |
menuPost(ofm_menu[activem]); |
menuPost(ofm_menu[activem]); |
| 851 |
box(ofm_menu[activem]->win,0,0); |
box(ofm_menu[activem]->win,0,0); |
| 852 |
menuBarRefresh(activem); |
menuBarRefresh(activem); |
| 854 |
} else if (i==KEY_LEFT) { |
} else if (i==KEY_LEFT) { |
| 855 |
menuUnpost(ofm_menu[activem]); |
menuUnpost(ofm_menu[activem]); |
| 856 |
viewportRefresh(); |
viewportRefresh(); |
| 857 |
activem=(activem+2+1)%2; /* choose previous menu */ |
activem=(activem+2+1)%2; //choose previous menu |
| 858 |
menuPost(ofm_menu[activem]); |
menuPost(ofm_menu[activem]); |
| 859 |
box(ofm_menu[activem]->win,0,0); |
box(ofm_menu[activem]->win,0,0); |
| 860 |
menuBarRefresh(activem); |
menuBarRefresh(activem); |
| 904 |
} |
} |
| 905 |
|
|
| 906 |
else if (i=='\n') { |
else if (i=='\n') { |
| 907 |
if (cmd_size>0) { /* if there is some command to execute */ |
if (cmd_size>0) { //if there is some command to execute |
| 908 |
erase(); |
erase(); |
| 909 |
refresh(); |
refresh(); |
| 910 |
def_prog_mode(); |
def_prog_mode(); |
| 918 |
viewportRefresh(); |
viewportRefresh(); |
| 919 |
curs_set(0); |
curs_set(0); |
| 920 |
} else |
} else |
| 921 |
if (tmp->sel_ds->dir){ /* if we want to change dir */ |
if (tmp->sel_ds->dir){ //if we want to change dir |
| 922 |
if ( strcmp(workdir[opanelActive],"/") || strcmp(tmp->sel_ds->name,"..") ){ |
if ( strcmp(workdir[opanelActive],"/") || strcmp(tmp->sel_ds->name,"..") ){ |
| 923 |
itmp=chdir(tmp->sel_ds->name); |
itmp=0; |
| 924 |
|
if (tmp->virtual_dir && tmp->sel_ds->path!=NULL) { |
| 925 |
|
itmp=chdir(tmp->sel_ds->path); |
| 926 |
|
} |
| 927 |
|
itmp+=chdir(tmp->sel_ds->name); |
| 928 |
if (itmp) { |
if (itmp) { |
| 929 |
dlgMessageBox(B_OK,NULL,"Error",strerror(errno)); |
dlgMessageBox(B_OK,NULL,"Error",strerror(errno)); |
| 930 |
opanelRefresh(opanels[! opanelActive]); |
opanelRefresh(opanels[! opanelActive]); |
| 931 |
} |
} |
| 932 |
else { /* if we changed dir */ |
else { //if we changed dir |
| 933 |
if (tmp->sel_name!=NULL) xfree(tmp->sel_name); |
if (tmp->sel_name!=NULL) xfree(tmp->sel_name); |
| 934 |
tmp->sel_name=NULL; |
tmp->sel_name=NULL; |
| 935 |
if (strcmp(tmp->sel_ds->name,"..")) /* if we're going down in dir tree */ |
if (strcmp(tmp->sel_ds->name,"..")) //if we're going down in dir tree |
| 936 |
stackPush(stack[opanelActive],tmp->sel_ds->name); |
stackPush(stack[opanelActive],tmp->sel_ds->name); |
| 937 |
else tmp->sel_name=stackPop(stack[opanelActive]); |
else tmp->sel_name=stackPop(stack[opanelActive]); |
| 938 |
|
|
| 939 |
/* resets the stack, if link */ |
/* resets the stack, if link */ |
| 940 |
|
|
| 941 |
if (tmp->sel_ds->link) { |
if (tmp->sel_ds->link || tmp->virtual_dir) { |
| 942 |
tmpch=NULL; |
tmpch=NULL; |
| 943 |
while ((tmpch=stackPop(stack[opanelActive]))!=NULL) xfree(tmpch); |
while ((tmpch=stackPop(stack[opanelActive]))!=NULL) xfree(tmpch); |
| 944 |
} |
} |
| 945 |
|
if (tmp->virtual_dir) bookmarkRestoreState(tmp); |
| 946 |
getcwd(workdir[opanelActive],PATH_MAX); |
getcwd(workdir[opanelActive],PATH_MAX); |
| 947 |
tmp->sel_ds=NULL; |
tmp->sel_ds=NULL; |
| 948 |
tmp->first=NULL; |
tmp->first=NULL; |
| 1114 |
viewportRefresh(); |
viewportRefresh(); |
| 1115 |
curs_set(0); |
curs_set(0); |
| 1116 |
} |
} |
| 1117 |
|
else if (i==CTRL('b') && Bookmarks!=NULL) { |
| 1118 |
|
if (bookmark_is_active) { |
| 1119 |
|
if (bookmark_is_active-1==opanelActive) { |
| 1120 |
|
bookmarkRestoreState(tmp); |
| 1121 |
|
tmp->reread=1; |
| 1122 |
|
} |
| 1123 |
|
} else { |
| 1124 |
|
bookmark_is_active=opanelActive+1; |
| 1125 |
|
bookmarkSaveState(tmp); |
| 1126 |
|
tmp->reread=1; |
| 1127 |
|
} |
| 1128 |
|
opanelRefresh(tmp); |
| 1129 |
|
} |
| 1130 |
|
else if (i==CTRL('a')) { |
| 1131 |
|
if (opanelActive+1!=bookmark_is_active) { |
| 1132 |
|
bookmarkInsert(tmp->sel_ds); |
| 1133 |
|
if (bookmark_is_active) { |
| 1134 |
|
opanels[bookmark_is_active-1]->reread=1; |
| 1135 |
|
opanelRefresh(opanels[bookmark_is_active-1]); |
| 1136 |
|
} |
| 1137 |
|
} |
| 1138 |
|
} |
| 1139 |
else if (isascii(i)) { |
else if (isascii(i)) { |
| 1140 |
if (cmd_size<sizeof(cmd_buffer)) { |
if (cmd_size<sizeof(cmd_buffer)) { |
| 1141 |
cmd_buffer[cmd_size++]=(char)i; |
cmd_buffer[cmd_size++]=(char)i; |
| 1142 |
writeinfo(2); /* refresh bottom info */ |
writeinfo(2); //refresh bottom info |
| 1143 |
} |
} |
| 1144 |
} |
} |
| 1145 |
else if (i==KEY_BACKSPACE && cmd_size>0) { |
else if (i==KEY_BACKSPACE && cmd_size>0) { |