## Files

Files

## Synopsis

    enum                GOFileFormatLevel;
    enum                GOFileProbeLevel;
    enum                GOFileSaveScope;
    GList *             go_get_file_openers                 (void);
    GList *             go_get_file_savers                  (void);

## Object Hierarchy

      GEnum
       +----GOFileFormatLevel

      GEnum
       +----GOFileSaveScope

## Description

## Details

### enum GOFileFormatLevel

    typedef enum {
    	GO_FILE_FL_NONE,            /* No name assigned, won't happen */
    	GO_FILE_FL_WRITE_ONLY,      /* PostScript etc, won't be remembered */
    	GO_FILE_FL_NEW,             /* Wb just created */
    	GO_FILE_FL_MANUAL,          /* Save gets punted to save as */
    	GO_FILE_FL_MANUAL_REMEMBER, /* Ditto, but remember in history */
    	GO_FILE_FL_AUTO,            /* Save will save to this filename */
    	GO_FILE_FL_LAST
    } GOFileFormatLevel;

File format levels. They are ordered. When we save a file, we remember the name, but not if we already have a name at a higher level. When created, workbooks are assigned a name at level GO_FILE_FL_NEW.

`GO_FILE_FL_NONE` | no name assigned, won't happen.
`GO_FILE_FL_WRITE_ONLY` | PostScript etc, won't be remembered.
`GO_FILE_FL_NEW` | Wb just created.
`GO_FILE_FL_MANUAL` | Save gets punted to save as.
`GO_FILE_FL_MANUAL_REMEMBER` | Ditto, but remember in history.
`GO_FILE_FL_AUTO` | Save will save to this filename.
`GO_FILE_FL_LAST` | last value, won't happen.

### enum GOFileProbeLevel

    typedef enum {
    	GO_FILE_PROBE_FILE_NAME,
    	GO_FILE_PROBE_CONTENT,
    	GO_FILE_PROBE_LAST
    } GOFileProbeLevel;

File probe level tells file opener (its probe method to be exact), how hard it should try to recognize the type of the file. File openers may ignore this or support only some probe levels, but if specifies "reccomened" behaviour. Before opening any file we detect its type by calling probe for every registered file opener (in order of priority) and passing GO_FILE_PROBE_FILE_NAME as probe level. If none of them recogizes the file, we increase probe level and try again...

`GO_FILE_PROBE_FILE_NAME` | Test only file name, don't read file contents
`GO_FILE_PROBE_CONTENT` | Read the whole file if it's necessary
`GO_FILE_PROBE_LAST` | Invalid

### enum GOFileSaveScope

    typedef enum {
    	GO_FILE_SAVE_WORKBOOK,
    	GO_FILE_SAVE_SHEET,
    	GO_FILE_SAVE_RANGE,
    	GO_FILE_SAVE_LAST
    } GOFileSaveScope;

GOFileSaveScope specifies what information file saver can save in a file. Many savers can save the whole workbook (with all sheets), but others save only current sheet, usually because of file format limitations.

`GO_FILE_SAVE_WORKBOOK` | save the whole file.
`GO_FILE_SAVE_SHEET` | save only current page.
`GO_FILE_SAVE_RANGE` | save only a selected range.
`GO_FILE_SAVE_LAST` | last value, won't happen.

### go_get_file_openers ()

    GList *             go_get_file_openers                 (void);

Returns : | list of known GOFileOpener types (do not modify list). [element-type GOFileSaver][transfer none]

### go_get_file_savers ()

    GList *             go_get_file_savers                  (void);

Returns : | list of known GOFileSaver types (do not modify list). [element-type GOFileSaver][transfer none]