2 #include <WINGs/WINGs.h>
3 #include <WINGs/WINGsP.h>
8 /* #include "FSFileButton.h" */
9 #include "FSPathView.h"
10 #include "filebrowser.h"
12 #include "FSBrowser.h"
17 #define LIST_WIDTH 170
18 #define COLUMN_SPACING 4
19 #define TITLE_SPACING 2
21 #define DEFAULT_WIDTH 510
22 #define DEFAULT_HEIGHT 390
25 #define PVICON_WIDTH 169
28 #define DEFAULT_SEPARATOR "/"
34 typedef struct W_FileBrowser
{
40 WMFrame
*displayFrame
;
45 int maxVisibleColumns
;
46 int firstVisibleColumn
;
55 void *doubleClientData
;
56 WMAction
*doubleAction
;
72 unsigned int isTitled
:1;
73 unsigned int allowMultipleSelection
:1;
75 unsigned int loaded
:1;
76 unsigned int loadingColumn
:1;
80 static void handleEvents(XEvent
*event
, void *data
);
81 static void destroyFileBrowser(FileBrowser
*bPtr
);
82 static void setupPathView(FileBrowser
*bPtr
, int x
, int y
,
83 int width
, int height
);
84 static void setupBrowserMode(FileBrowser
*bPtr
, int x
, int y
,
85 int width
, int height
);
86 static void setupListMode(FileBrowser
*bPtr
, int x
, int y
,
87 int width
, int height
);
88 static void setupIconMode(FileBrowser
*bPtr
);
89 /* static void resizeFileBrowser(WMWidget*, unsigned int, unsigned int); */
90 static void resizePathView(FileBrowser
*bPtr
, unsigned int, unsigned int);
91 static void scrollPathView(FileBrowser
*bPtr
, int col
);
92 static void scrolledBrowser(void *observerData
, WMNotification
*notification
);
93 static void scrolledPathView(void *observerData
, WMNotification
*notification
);
94 static void scrollCallback(WMWidget
*self
, void *clientData
);
95 /* static void fillPathView(FileBrowser *bPtr, int column); */
96 static void handleDoubleActions(WMWidget
*self
, void *data
);
97 static void handleItemSelection(WMWidget
*self
, void *clientData
);
98 static int FSGetFileBrowserFirstVisibleColumn(FileBrowser
*bPtr
);
99 static int FSGetFileBrowserColumnCount(FileBrowser
*bPtr
);
100 static FileInfo
*FSGetFileBrowserFileInfoAt(FileBrowser
*bPtr
, int col
);
101 static void insertIntoColumn(FileBrowser
*bPtr
, char *pathname
);
102 static void removeFromColumn(FileBrowser
*bPtr
, char *path
, char *name
);
103 static int findColumnFromPath(char *path
);
104 static void notificationObserver(void *self
, WMNotification
*notif
);
105 static void removeFromView(FileBrowser
*bPtr
, char *path
, char *name
);
106 static void insertIntoView(FileBrowser
*bPtr
, char *pathname
);
108 static void willResizeFileBrowser(W_ViewDelegate
*, WMView
*,
109 unsigned int*, unsigned int*);
111 /* W_ViewProcedureTable _FileBrowserViewProcedures = { */
113 /* resizeFileBrowser, */
117 W_ViewDelegate _FileBrowserViewDelegate
= {
122 willResizeFileBrowser
126 static W_Class fileBrowserWidgetClass
= 0;
128 W_Class
InitFileBrowser(WMScreen
*scr
)
130 // Register the widget with WINGs and get the widget class ID.
131 if (!(fileBrowserWidgetClass
))
133 fileBrowserWidgetClass
=
134 /* W_RegisterUserWidget(&_FileBrowserViewProcedures); */
135 W_RegisterUserWidget();
138 return fileBrowserWidgetClass
;
143 FSCreateFileBrowser(WMWidget
*parent
)
148 bPtr
= wmalloc(sizeof(FileBrowser
));
149 memset(bPtr
, 0, sizeof(FileBrowser
));
151 bPtr
->widgetClass
= fileBrowserWidgetClass
;
153 bPtr
->view
= W_CreateView(W_VIEW(parent
));
158 bPtr
->view
->self
= bPtr
;
159 bPtr
->view
->delegate
= &_FileBrowserViewDelegate
;
161 WMCreateEventHandler(bPtr
->view
, ExposureMask
|StructureNotifyMask
162 |ClientMessageMask
, handleEvents
, bPtr
);
164 /* default configuration */
165 bPtr
->lineScroll
= bPtr
->columnWidth
;
166 bPtr
->pageScroll
= 0;
168 bPtr
->firstVisibleColumn
= 0;
169 bPtr
->maxVisibleColumns
= 3;
170 bPtr
->selectedCol
= -1;
171 bPtr
->columnCount
= 0;
172 bPtr
->columnWidth
= PVICON_WIDTH
;
174 bPtr
->displayFrame
= WMCreateFrame(bPtr
);
175 WMSetFrameRelief(bPtr
->displayFrame
, WRFlat
);
176 WMMoveWidget(bPtr
->displayFrame
, 0, 119);
177 WMResizeWidget(bPtr
->displayFrame
, 510, 275);
178 setupBrowserMode(bPtr
, 0, 0, 510, 275);
179 setupListMode(bPtr
, 0, 0, 510, 275);
181 setupPathView(bPtr
, 0, 0, DEFAULT_WIDTH
, PV_HEIGHT
);
183 /* resizeFileBrowser(bPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); */
184 WMResizeWidget(bPtr
, DEFAULT_WIDTH
, DEFAULT_HEIGHT
);
185 WMMapWidget(bPtr
->pathView
);
186 WMMapWidget(bPtr
->browser
);
187 /* WMMapWidget(bPtr->listF); */
188 WMMapWidget(bPtr
->displayFrame
);
190 /* bPtr->currentMode = LIST; */
191 bPtr
->currentMode
= BROWSE
;
193 bPtr
->doubleAction
= NULL
;
194 bPtr
->doubleClientData
= NULL
;
200 willResizeFileBrowser(W_ViewDelegate
*self
, WMView
*view
,
201 unsigned int *width
, unsigned int *height
)
203 FileBrowser
*bPtr
= (FileBrowser
*) view
->self
;
205 bPtr
->maxVisibleColumns
= *width
/bPtr
->columnWidth
;
207 WMResizeWidget(bPtr
->displayFrame
,
208 *width
, *height
-PV_HEIGHT
-PADY
);
210 /* W_ResizeView(bPtr->view, *width, *height); */
214 FSSetBrowserMaxVisibleColumns(bPtr
->browser
, bPtr
->maxVisibleColumns
);
215 WMResizeWidget(bPtr
->browser
,
216 *width
, *height
-PV_HEIGHT
-PADY
);
220 WMResizeWidget(bPtr
->listF
, *width
, *height
-PV_HEIGHT
-PADY
);
221 FSResizeMCList(bPtr
->list
, *width
, *height
-PV_HEIGHT
-PADY
);
223 FSSetPathViewMaxVisibleColumns(bPtr
->pathView
,
224 bPtr
->maxVisibleColumns
);
225 WMResizeWidget(bPtr
->pathViewF
, *width
, PV_HEIGHT
);
226 WMResizeWidget(bPtr
->pathView
, *width
-3, PV_HEIGHT
-3);
230 /* resizeFileBrowser(WMWidget *w, unsigned int width, unsigned int height) */
232 /* FileBrowser *bPtr = (FileBrowser*)w; */
234 /* bPtr->maxVisibleColumns = width/bPtr->columnWidth; */
236 /* WMResizeWidget(bPtr->displayFrame, */
237 /* width, height-PV_HEIGHT-PADY); */
239 /* W_ResizeView(bPtr->view, width, height); */
241 /* if(bPtr->browser) */
243 /* FSSetBrowserMaxVisibleColumns(bPtr->browser, bPtr->maxVisibleColumns); */
244 /* WMResizeWidget(bPtr->browser, width, height-PV_HEIGHT-PADY); */
248 /* WMResizeWidget(bPtr->listF, width, height-PV_HEIGHT-PADY); */
249 /* FSResizeMCList(bPtr->list, width, height-PV_HEIGHT-PADY); */
252 /* FSSetPathViewMaxVisibleColumns(bPtr->pathView, */
253 /* bPtr->maxVisibleColumns); */
254 /* WMResizeWidget(bPtr->pathViewF, width, PV_HEIGHT); */
255 /* WMResizeWidget(bPtr->pathView, width-3, PV_HEIGHT-3); */
259 fillBrowserColumn(FSBrowser
*bPtr
, int column
)
264 WMListItem
*listItem
;
265 FileBrowser
*fB
= (FileBrowser
*)(WMGetHangedData(bPtr
));
267 FSSetBusyCursor(bPtr
, True
);
269 path
= FSGetBrowserPathToColumn(bPtr
, column
);
272 start
= GetDirList(path
);
275 while(fileList
!= NULL
)
277 if( DisplayFile(fileList
->name
, fB
->filter
, fileList
->fileType
) )
279 listItem
= FSInsertBrowserItem(bPtr
, column
, -1,
281 isDirectory(fileList
->fileType
));
282 /* listItem->clientData = fileList; */
285 fileList
= fileList
->next
;
295 FSFreeFileInfo(start
);
297 FSSetBusyCursor(bPtr
, False
);
301 handleItemSelection(WMWidget
*self
, void *clientData
)
305 FileBrowser
*bPtr
= (FileBrowser
*) clientData
;
306 static int lastCol
= 0;
307 WMListItem
*item
= NULL
;
308 FileInfo
*fileInfo
= NULL
;
310 col
= FSGetFileBrowserColumnCount(bPtr
);
311 fileInfo
= FSGetFileBrowserSelectedFileInfo(bPtr
);
312 switch(bPtr
->currentMode
)
315 FSSetPathViewToColumn(bPtr
->pathView
, col
-1);
316 /* Update Inspector if open */
317 FSUpdateInspectorWindow(fileInfo
);
322 if(lastCol
>= col
&& !isDirectory(fileInfo
->fileType
))
323 FSSetPathViewToColumn(bPtr
->pathView
, col
);
325 FSSetPathViewToColumn(bPtr
->pathView
, col
-1);
327 /* Update Inspector if open */
328 FSUpdateInspectorWindow(fileInfo
);
336 wwarning("%s %d: %s", __FILE__
, __LINE__
, bPtr
->text
);
343 handlePathViewAction(WMWidget
*self
, void *clientData
)
346 FileBrowser
*bPtr
= (FileBrowser
*) clientData
;
348 Will be used to help in the scolling when
349 the icon and list views have been implemented
351 col
= FSGetPathViewLastClicked(self
);
352 i
= FSGetPathViewNumberOfColumns(self
) - 1;
354 /* if(bPtr->currentMode == BROWSE) */
355 /* FSScrollBrowserToColumn(bPtr->browser, col-1, False); */
357 if(bPtr
->currentMode
== LIST
&& col
< i
)
358 FSScrollMCListToColumn(bPtr
->list
, col
, False
);
362 handleDoubleAction(WMWidget
*self
, void *clientData
)
364 FileBrowser
*bPtr
= (FileBrowser
*) clientData
;
366 if (bPtr
->doubleAction
)
367 (*bPtr
->doubleAction
)(bPtr
, bPtr
->doubleClientData
);
371 fillPV(FSPathView
*pvPtr
, int column
)
374 FileBrowser
*bPtr
= (FileBrowser
*)(WMGetHangedData(pvPtr
));
376 path
= FSGetFileBrowserPathToColumn(bPtr
, column
-1);
379 int backlight
= FSGetIntegerForName("DisplaySVBG");
381 FSSetPathViewColumnContents(pvPtr
, column
, path
, 1, backlight
);
384 FSUpdateCurrentFileViewTitles();
388 setupPathView(FileBrowser
*bPtr
, int x
, int y
, int width
, int height
)
390 InitFSPathView(WMWidgetScreen(bPtr
));
392 bPtr
->pathViewF
= WMCreateFrame(bPtr
);
393 WMResizeWidget(bPtr
->pathViewF
, width
, height
);
394 WMMoveWidget(bPtr
->pathViewF
, x
, y
);
395 WMSetFrameRelief(bPtr
->pathViewF
, WRSunken
);
396 WMMapWidget(bPtr
->pathViewF
);
398 bPtr
->pathView
= FSCreatePathView(bPtr
->pathViewF
);
399 WMMoveWidget(bPtr
->pathView
, x
+2, y
+2);
400 WMResizeWidget(bPtr
->pathView
, width
-3, height
-3);
401 FSSetPathViewFillColumnProc(bPtr
->pathView
, fillPV
);
402 FSSetPathViewAction(bPtr
->pathView
, handlePathViewAction
, bPtr
);
403 FSSetPathViewDoubleAction(bPtr
->pathView
, handleDoubleAction
, bPtr
);
404 WMAddNotificationObserver(scrolledPathView
, bPtr
,
405 FSPathViewDidScrollNotification
,
407 WMHangData(bPtr
->pathView
, bPtr
);
411 setupBrowserMode(FileBrowser
*bPtr
, int x
, int y
, int width
, int height
)
413 InitFSBrowser(WMWidgetScreen(bPtr
->displayFrame
));
414 bPtr
->browser
= FSCreateBrowser(bPtr
->displayFrame
);
416 FSSetBrowserHasScroller(bPtr
->browser
, False
);
417 FSSetBrowserTitled(bPtr
->browser
, False
);
418 WMMoveWidget(bPtr
->browser
, x
, y
);
419 WMResizeWidget(bPtr
->browser
, width
, height
);
420 FSSetBrowserFillColumnProc(bPtr
->browser
, fillBrowserColumn
);
421 FSSetBrowserPathSeparator(bPtr
->browser
, DEFAULT_SEPARATOR
);
422 FSSetBrowserAction(bPtr
->browser
, handleItemSelection
, bPtr
);
423 FSSetBrowserDoubleAction(bPtr
->browser
, handleDoubleAction
, bPtr
);
425 WMHangData(bPtr
->browser
, bPtr
);
430 scrolledPathView(void *observerData
, WMNotification
*notification
)
433 FileBrowser
*bPtr
= (FileBrowser
*)observerData
;
435 /* Get the col number we're at */
436 col
= *(int *)(WMGetNotificationClientData(notification
));
437 /* Scroll to this col */
438 if(bPtr
->currentMode
== BROWSE
)
439 FSScrollBrowserToColumn(bPtr
->browser
, col
, False
);
440 /* else if(bPtr->currentMode == LIST) */
441 /* FSScrollMCListToColumn(bPtr->list, col+2, False); */
446 setupIconMode(FileBrowser
*bPtr
)
451 setupListMode(FileBrowser
*bPtr
, int x
, int y
, int width
, int height
)
453 bPtr
->listF
= WMCreateFrame(bPtr
->displayFrame
);
454 WMSetFrameRelief(bPtr
->listF
, WRFlat
);
455 WMResizeWidget(bPtr
->listF
, width
, height
);
456 WMMoveWidget(bPtr
->listF
, 0, 0);
458 bPtr
->list
= FSCreateMCList(bPtr
->listF
);
459 FSSetMCListAction(bPtr
->list
, handleItemSelection
, bPtr
);
460 FSSetMCListDoubleAction(bPtr
->list
, handleDoubleAction
, bPtr
);
464 FSSetFileBrowserPath(FileBrowser
*bPtr
, char *path
)
469 switch(bPtr
->currentMode
)
471 case BROWSE
: WMUnmapWidget(bPtr
);
472 FSLoadBrowserColumnZero(bPtr
->browser
);
473 FSLoadPathViewColumnZero(bPtr
->pathView
);
474 FSSetBrowserPath(bPtr
->browser
, path
);
475 col
= FSGetFileBrowserColumnCount(bPtr
);
476 FSSetPathViewToColumn(bPtr
->pathView
, col
);
479 case ICON
: ok
= False
;
481 case LIST
: WMUnmapWidget(bPtr
);
482 FSLoadMCListColumnZero(bPtr
->list
);
483 FSLoadPathViewColumnZero(bPtr
->pathView
);
484 FSSetMCListPath(bPtr
->list
, path
);
485 col
= FSGetFileBrowserColumnCount(bPtr
);
486 FSSetPathViewToColumn(bPtr
->pathView
, col
);
489 default : ok
= False
;
498 FSGetFileBrowserPath(FileBrowser
*bPtr
)
504 switch(bPtr
->currentMode
)
506 case BROWSE
: path
= FSGetBrowserPath(bPtr
->browser
);
508 npath
= (char *)wmalloc(len
);
511 strncpy(npath
, path
, len
-1);
519 case ICON
: npath
= NULL
;
521 case LIST
: npath
= FSGetMCListPath(bPtr
->list
);
523 default : npath
= NULL
;
533 handleEvents(XEvent
*event
, void *data
)
535 FileBrowser
*bPtr
= (FileBrowser
*)data
;
537 /* CHECK_CLASS(data, W_FileBrowser); */
539 switch (event
->type
) {
541 /* paintFileBrowser(bPtr); */
545 destroyFileBrowser(bPtr
);
553 destroyFileBrowser(FileBrowser
*bPtr
)
562 FSGetFileBrowserPathToColumn(FileBrowser
*bPtr
, int column
)
567 switch(bPtr
->currentMode
)
569 case BROWSE
: path
= FSGetBrowserPathToColumn(bPtr
->browser
, column
);
571 case ICON
: path
= NULL
;
573 case LIST
: path
= FSGetMCListPathToColumn(bPtr
->list
, column
);
575 default : path
= NULL
;
583 FSGetFileBrowserColumnCount(FileBrowser
*bPtr
)
587 switch(bPtr
->currentMode
)
589 case BROWSE
: num
= FSGetBrowserNumberOfColumns(bPtr
->browser
);
591 case ICON
: num
= -1;
593 case LIST
: num
= FSGetMCListNumberOfColumns(bPtr
->list
);
603 FSGetFileBrowserFirstVisibleColumn(FileBrowser
*bPtr
)
607 switch(bPtr
->currentMode
)
609 case BROWSE
: first
= FSGetBrowserFirstVisibleColumn(bPtr
->browser
);
611 case ICON
: first
= -1;
613 case LIST
: first
= -1;
615 default : first
= -1;
623 FSGetFileBrowserFileInfoAt(FileBrowser
*bPtr
, int col
)
626 FileInfo
*fileInfo
= NULL
;
628 switch(bPtr
->currentMode
)
630 case BROWSE
: pathname
= FSGetFileBrowserPathToColumn(bPtr
, col
);
631 fileInfo
= FSGetFileInfo(pathname
);
633 case ICON
: fileInfo
= NULL
;
635 case LIST
: pathname
= FSGetFileBrowserPathToColumn(bPtr
, col
+1);
636 fileInfo
= FSGetFileInfo(pathname
);
638 default : fileInfo
= NULL
;
646 FSGetFileBrowserSelectedFileInfo(FileBrowser
*bPtr
)
650 col
= FSGetFileBrowserColumnCount(bPtr
);
653 return FSGetFileBrowserFileInfoAt(bPtr
, col
-2);
659 FSSetFileBrowserFilter(FileBrowser
*bPtr
, char *filter
)
665 bPtr
->filter
= wstrdup(filter
);
670 FSSetMCListFilter(bPtr
->list
, bPtr
->filter
);
674 FSGetFileBrowserFilter(FileBrowser
*bPtr
)
680 FSSetFileBrowserDoubleAction(FileBrowser
*bPtr
,
681 WMAction
*doubleAction
,
682 void *doubleClientData
)
684 bPtr
->doubleAction
= doubleAction
;
685 bPtr
->doubleClientData
= doubleClientData
;
689 insertIntoColumn(FileBrowser
*bPtr
, char *pathname
)
695 col
= findColumnFromPath(GetPathFromPathname(pathname
));
696 new = FSGetFileInfo(pathname
);
698 list
= FSGetBrowserListInColumn(bPtr
->browser
, col
);
700 if( DisplayFile(new->name
, bPtr
->filter
, new->fileType
) && list
)
703 item
= WMInsertListItem(list
, -1, new->name
);
704 item
->isBranch
= isDirectory(new->fileType
);
706 /* listItem = FSInsertBrowserItem(bPtr->browser, col, -1, new->name, */
707 /* isDirectory(new->fileType)); */
708 /* listItem->clientData = new; */
715 removeFromColumn(FileBrowser
*bPtr
, char *path
, char *name
)
720 col
= findColumnFromPath(path
);
721 list
= FSGetBrowserListInColumn(bPtr
->browser
, col
);
722 row
= WMFindRowOfListItemWithTitle(list
, name
);
723 WMRemoveListItem(list
, row
);
727 findColumnFromPath(char *path
)
730 char *str
= wstrdup(path
);
733 tmp
= strtok(str
, "/");
736 tmp
= strtok(NULL
, "/");
745 FSSetFileBrowserColumnWidth(FileBrowser
*bPtr
, int width
)
749 assert(width
>= PVICON_WIDTH
);
751 size
= WMGetViewSize(bPtr
->view
);
752 bPtr
->columnWidth
= width
;
753 WMResizeWidget(bPtr
, size
.width
, size
.height
);
754 /* resizeFileBrowser(bPtr, size.width, size.height); */
758 FSFileBrowserKeyPress(FileBrowser
*bPtr
, XEvent
*event
)
764 count
= XLookupString(&event
->xkey
, buffer
, 63, &ksym
, NULL
);
765 buffer
[count
] = '\0';
767 /* navigateViews(bPtr, buffer); */
774 FSUpdateFileBrowser(FileBrowser
*bPtr
, FileAction action
,
775 FileInfo
*src
, FileInfo
*dest
)
784 if(isDirectory(dest
->fileType
))
786 tmp
= GetPathnameFromPathName(dest
->path
, dest
->name
);
787 tmp2
= GetPathnameFromPathName(tmp
, src
->name
);
790 tmp2
= GetPathnameFromPathName(dest
->path
, dest
->name
);
791 insertIntoView(bPtr
, tmp2
);
795 tmp
= GetPathnameFromPathName(dest
->path
, dest
->name
);
796 tmp2
= GetPathnameFromPathName(tmp
, src
->name
);
797 insertIntoView(bPtr
, tmp2
);
799 tmp
= GetPathnameFromPathName(src
->path
, src
->name
);
800 col
= findColumnFromPath(tmp
);
801 removeFromView(bPtr
, src
->path
, src
->name
);
802 /* Update the display */
803 col
= findColumnFromPath(FSGetFileBrowserPath(bPtr
));
804 FSSetPathViewToColumn(bPtr
->pathView
, col
);
807 tmp2
= GetPathnameFromPathName(dest
->path
, dest
->name
);
808 insertIntoView(bPtr
, tmp2
);
809 tmp
= GetPathnameFromPathName(src
->path
, src
->name
);
810 col
= findColumnFromPath(tmp
);
811 removeFromView(bPtr
, src
->path
, src
->name
);
814 tmp2
= GetPathnameFromPathName(dest
->path
, dest
->name
);
815 insertIntoView(bPtr
, tmp2
);
819 tmp
= GetPathnameFromPathName(src
->path
, src
->name
);
820 removeFromView(bPtr
, src
->path
, src
->name
);
821 /* Update the PathView */
822 col
= findColumnFromPath(FSGetFileBrowserPath(bPtr
));
823 FSSetPathViewToColumn(bPtr
->pathView
, col
);
826 /* redisplay current Path and update shelf */
837 * Need to pass fileinfo instead of pathname to
838 * facilitate multiple file insertions
841 insertIntoView(FileBrowser
*bPtr
, char *pathname
)
847 col
= findColumnFromPath(GetPathFromPathname(pathname
));
848 new = FSGetFileInfo(pathname
);
850 list
= FSGetBrowserListInColumn(bPtr
->browser
, col
);
851 switch(bPtr
->currentMode
)
853 case BROWSE
: list
= FSGetBrowserListInColumn(bPtr
->browser
, col
);
855 case ICON
: list
= NULL
;
857 case LIST
: list
= FSGetMCListListInColumn(bPtr
->list
, col
);
864 if( DisplayFile(new->name
, bPtr
->filter
, new->fileType
) && list
)
867 item
= WMInsertListItem(list
, -1, new->name
);
868 if(bPtr
->currentMode
== LIST
)
869 item
->clientData
= FSMCListFormatFileInfo(bPtr
->list
, new);
870 item
->isBranch
= isDirectory(new->fileType
);
878 removeFromView(FileBrowser
*bPtr
, char *path
, char *name
)
883 col
= findColumnFromPath(path
);
884 switch(bPtr
->currentMode
)
886 case BROWSE
: list
= FSGetBrowserListInColumn(bPtr
->browser
, col
);
888 case ICON
: list
= NULL
;
890 case LIST
: list
= FSGetMCListListInColumn(bPtr
->list
, col
);
892 default : list
= NULL
;
898 row
= WMFindRowOfListItemWithTitle(list
, name
);
899 WMRemoveListItem(list
, row
);
904 FSSetFileBrowserMode(FileBrowser
*bPtr
, int mode
)
908 /* ICON ain't implemented yet */
909 if(bPtr
->currentMode
== mode
|| mode
== ICON
)
912 path
= FSGetFileBrowserPath(bPtr
);
914 switch(bPtr
->currentMode
)
917 WMUnmapWidget(bPtr
->browser
);
920 /* WMUnmapWidget(bPtr->icon); */
923 WMUnmapWidget(bPtr
->listF
);
927 bPtr
->currentMode
= mode
;
929 switch(bPtr
->currentMode
)
931 case BROWSE
: WMMapWidget(bPtr
->browser
);
934 case LIST
: WMMapWidget(bPtr
->listF
);
938 FSSetFileBrowserPath(bPtr
, path
);