#ifndef FSB_H
#define FSB_H
#include <X11/Intrinsic.h>
#include <Xm/PrimitiveP.h>
#ifdef __cplusplus
extern "C" {
#endif
extern WidgetClass xnFsbWidgetClass;
#define FILEDIALOG_OPEN 1
#define FILEDIALOG_SAVE 2
#define FILEDIALOG_OK 1
#define FILEDIALOG_CANCEL 2
#define XnNwidgetSpacing "fsbWidgetSpacing"
#define XnNwindowSpacing "fsbWindowSpacing"
#define XnNfsbType "fsbType"
#define XnCfsbType "fsbType"
#define XnNshowHidden "showHidden"
#define XnCshowHidden "showHidden"
#define XnNshowHiddenButton "showHiddenButton"
#define XnCshowHiddenButton "showHiddenButton"
#define XnNshowViewMenu "showViewMenu"
#define XnCshowViewMenu "showViewMenu"
#define XnNselectedView "fsbSelectedView"
#define XnCselectedView "fsbSelectedView"
#define XnNdirectory "directory"
#define XnCdirectory "directory"
#define XnNselectedPath "selectedPath"
#define XnCselectedPath "selectedPath"
#define XnNhomePath "homePath"
#define XnChomePath "homePath"
#define XnNfilter "filter"
#define XnCfilter "filter"
#define XnNfilterFunc "filterFunc"
#define XnCfilterFunc "filterFunc"
#define XnNlabelListView "labelListView"
#define XnClabelListView "labelListView"
#define XnNlabelDetailView "labelDetailView"
#define XnClabelDetailView "labelDetailView"
#define XnNlabelOpenFileTitle "labelOpenFileTitle"
#define XnClabelOpenFileTitle "labelOpenFileTitle"
#define XnNlabelSaveFileTitle "labelSaveFileTitle"
#define XnClabelSaveFileTitle "labelSaveFileTitel"
#define XnNlabelDirUp "labelDirUp"
#define XnClabelDirUp "labelDirUp"
#define XnNlabelHome "labelHome"
#define XnClabelHome "labelHome"
#define XnNlabelNewFolder "labelNewFolder"
#define XnClabelNewFolder "labelNewFolder"
#define XnNlabelFilter "labelFilter"
#define XnClabelFilter "labelFilter"
#define XnNlabelFilterButton "labelFilterButton"
#define XnClabelFilterButton "labelFilterButton"
#define XnNlabelShowHiddenFiles "labelShowHiddenFiles"
#define XnClabelShowHiddenFiles "labelShowHiddenFiles"
#define XnNlabelDirectories "labelDirectories"
#define XnClabelDirectories "labelDirectories"
#define XnNlabelFiles "labelFiles"
#define XnClabelFiles "labelFiles"
#define XnNlabelRename "labelRename"
#define XnClabelRename "labelRename"
#define XnNlabelDelete "labelDelete"
#define XnClabelDelete "labelDelete"
#define XnNlabelOpen "labelOpen"
#define XnClabelOpen "labelOpen"
#define XnNlabelSave "labelSave"
#define XnClabelSave "labelSave"
#define XnNlabelOk "labelOk"
#define XnClabelOk "labelOk"
#define XnNlabelCancel "labelCancel"
#define XnClabelCancel "labelCancel"
#define XnNlabelHelp "labelHelp"
#define XnClabelHelp "labelHelp"
#define XnNlabelFileName "labelFileName"
#define XnClabelFileName "labelFileName"
#define XnNlabelDirectoryName "labelDirectoryName"
#define XnClabelDirectoryName "labelDirectoryName"
#define XnNlabelNewFileName "labelNewFileName"
#define XnClabelNewFileName "labelNewFileName"
#define XnNlabelDeleteFile "labelDeleteFile"
#define XnClabelDeleteFile "labelDeleteFile"
#define XnNdetailHeadings "detailHeadings"
#define XnCdetailHeadings "detailHeadings"
#define XnNdateFormatSameYear "dateFormatSameYear"
#define XnCdateFormatSameYear "dateFormatSameYear"
#define XnNdateFormatOtherYear "dateFormatOtherYear"
#define XnCdateFormatOtherYear "dateFormatOtherYear"
#define XnNsuffixBytes "suffixBytes"
#define XnCsuffixBytes "suffixBytes"
#define XnNsuffixKB "suffixKB"
#define XnCsuffixKB "suffixKB"
#define XnNsuffixMB "suffixMB"
#define XnCsuffixMB "suffixMB"
#define XnNsuffixGB "suffixGB"
#define XnCsuffixGB "suffixGB"
#define XnNsuffixTB "suffixTB"
#define XnCsuffixTB "suffixTB"
#define XnNerrorTitle "errorTitle"
#define XnCerrorTitle "errorTitle"
#define XnNerrorIllegalChar "errorIllegalChar"
#define XnCerrorIllegalChar "errorIllegalChar"
#define XnNerrorRename "errorRename"
#define XnCerrorRename "errorRename"
#define XnNerrorCreateFolder "errorCreateFolder"
#define XnCerrorCreateFolder "errorCreateFolder"
#define XnNerrorDelete "errorDelete"
#define XnCerrorDelete "errorDelete"
#define XnNerrorOpenDir "errorOpenDir"
#define XnCerrorOpenDir "errorOpenDir"
typedef int(*FSBFilterFunc)(const char*, const char*);
typedef struct FileElm FileElm;
struct FileElm {
char *path;
int isDirectory;
unsigned long long size;
time_t lastModified;
};
typedef struct {
Widget view;
Widget focus;
} FSBViewWidgets;
enum XnFSBChild {
XnFSB_DIR_UP_BUTTON = 0,
XnFSB_HOME_BUTTON,
XnFSB_NEW_FOLDER_BUTTON,
XnFSB_DETAIL_TOGGLE_BUTTON,
XnFSB_VIEW_OPTION_BUTTON,
XnFSB_FILTER_DROPDOWN,
XnFSB_FILTER_BUTTON,
XnFSB_SHOW_HIDDEN_TOGGLE_BUTTON,
XnFSB_DIRECTORIES_LABEL,
XnFSB_FILES_LABEL,
XnFSB_DIRLIST,
XnFSB_FILELIST,
XnFSB_GRID,
XnFSB_OK_BUTTON,
XnFSB_CANCEL_BUTTON,
XnFSB_HELP_BUTTON
};
typedef FSBViewWidgets(*FSBViewCreateProc)(Widget parent, ArgList args, int n, void *userData);
typedef void(*FSBViewUpdateProc)(Widget fsb, Widget view, FileElm *dirs, int dircount, FileElm *files, int filecount, const char *filter, int maxnamelen, void *userData);
typedef void(*FSBViewSelectProc)(Widget fsb, Widget view, const char *item);
typedef void(*FSBViewCleanupProc)(Widget fsb, Widget view, void *userData);
typedef void(*FSBViewDestroyProc)(Widget fsb, Widget view, void *userData);
Widget XnCreateFileSelectionDialog(
Widget parent,
String name,
ArgList arglist,
Cardinal argcount);
Widget XnCreateFileSelectionBox(
Widget parent,
String name,
ArgList arglist,
Cardinal argcount);
void XnFileSelectionBoxAddView(
Widget fsb,
const char *name,
FSBViewCreateProc create,
FSBViewUpdateProc update,
FSBViewSelectProc select,
FSBViewCleanupProc cleanup,
FSBViewDestroyProc destroy,
Boolean useDirList,
void *userData);
Widget XnFileSelectionBoxWorkArea(Widget fsb);
Widget XnFileSelectionBoxGetChild(Widget fsb, enum XnFSBChild child);
void XnFileSelectionBoxDeleteFilters(Widget fsb);
void XnFileSelectionBoxAddFilter(Widget fsb, const char *filter);
#ifdef __cplusplus
}
#endif
#endif