![]() |
Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members
![]() |
#include <FXFileDict.h>
Public Member Functions | |
FXFileDict (FXApp *app) | |
FXFileDict (FXApp *app, FXSettings *db) | |
void | setSettings (FXSettings *s) |
FXSettings * | getSettings () const |
void | setIconDict (FXIconDict *icns) |
FXIconDict * | getIconDict () const |
void | setIconPath (const FXString &path) |
const FXString & | getIconPath () const |
FXFileAssoc * | replace (const FXchar *ext, const FXchar *str) |
FXFileAssoc * | remove (const FXchar *ext) |
FXFileAssoc * | find (const FXchar *ext) |
virtual FXFileAssoc * | findFileBinding (const FXchar *pathname) |
virtual FXFileAssoc * | findDirBinding (const FXchar *pathname) |
virtual FXFileAssoc * | findExecBinding (const FXchar *pathname) |
virtual void | save (FXStream &store) const |
virtual void | load (FXStream &store) |
virtual | ~FXFileDict () |
![]() | |
FXDict () | |
FXDict (const FXDict &orig) | |
FXDict & | operator= (const FXDict &orig) |
void | size (FXint m) |
FXint | size () const |
FXint | no () const |
void * | insert (const FXchar *ky, const void *ptr, bool mrk=false) |
void * | replace (const FXchar *ky, const void *ptr, bool mrk=false) |
void * | remove (const FXchar *ky) |
void * | find (const FXchar *ky) const |
bool | empty (FXint pos) const |
const FXchar * | key (FXuint pos) const |
void * | data (FXuint pos) const |
bool | mark (FXuint pos) const |
FXint | first () const |
FXint | last () const |
FXint | next (FXint pos) const |
FXint | prev (FXint pos) const |
void | clear () |
virtual | ~FXDict () |
![]() | |
virtual long | onDefault (FXObject *, FXSelector, void *) |
const FXchar * | getClassName () const |
bool | isMemberOf (const FXMetaClass *metaclass) const |
virtual long | tryHandle (FXObject *sender, FXSelector sel, void *ptr) |
virtual | ~FXObject () |
Static Public Attributes | |
static const FXchar | defaultExecBinding [] |
static const FXchar | defaultDirBinding [] |
static const FXchar | defaultFileBinding [] |
The File Association dictionary associates a file extension with a File Association record which contains command name, mime type, icons, and other information about the file type.
The icons referenced by the file association are managed by the Icon Dictionary; this guarantees that each icon is loaded only once into memory. The associations are determined by the information by the FOX Registry settings; each entry under the FILETYPES registry section comprises the command line, extension name, large icon, small icon, and mime type:
command ';' extension ';' bigicon [ ':' bigiconopen ] ';' icon [ ':' iconopen ] ';' mime [ ';' flags ]
For example, the binding for "jpg" could be:
xv s &;JPEG Image;bigimage.xpm;miniimage.xpm;image/jpeg;term
The association for a file name is determined by first looking at the entire file name, then at the whole extension, and then at sub-extensions. For example, "name.tar.gz", "tar.gz", and "gz" can each be given a different file association. Directory names may also be given associations; there is no command-line association for a directory, however. The association for a directory is found by first checking the whole pathname, then checking the pathname less the first component, and so on. So, "/usr/local/include", "/local/include", and "/include" can each be given their own file associations. If the above lookup procedure has not found a file association, the system uses a fallback associations: for files, the fallback association is determined by the binding "defaultfilebinding". For directories, the "defaultdirbinding" is used, and for executables the "defaultexecbinding" is used. The flags field is used for a number of bit-flags; two flags are currently defined: 'cd' and 'term'. The first one is intended to cause a launcher to execute the application in the shown directory; the second one is meant to indicate that the application is to be ran inside a new terminal.
FX::FXFileDict::FXFileDict | ( | FXApp * | app | ) |
Construct a dictionary mapping file-extension to file associations, using the application registry settings as a source for the bindings.
The pointer to the application class is passed down to the icon source which is inside the icon dictionary.
FX::FXFileDict::FXFileDict | ( | FXApp * | app, |
FXSettings * | db | ||
) |
Construct a dictionary mapping file-extension to file associations, using the specified settings database as a source for the bindings.
The pointer to the application class is passed down to the icon source which is inside the icon dictionary.
|
virtual |
Destructor.
|
inline |
Change settings database.
|
inline |
Return settings database.
|
inline |
Change icon dictionary.
|
inline |
Return icon dictionary.
void FX::FXFileDict::setIconPath | ( | const FXString & | path | ) |
Set icon search path; the initial search path is determined by the "iconpath" registry setting in the SETTINGS section.
const FXString& FX::FXFileDict::getIconPath | ( | ) | const |
Return current icon search path.
FXFileAssoc* FX::FXFileDict::replace | ( | const FXchar * | ext, |
const FXchar * | str | ||
) |
Replace file association.
The new association is written into the settings database under the FILETYPES section; the format of the association is as follows:
<extension> = "<command> ; <type> ; <bigicon> [ : <bigopenicon> ] ; <smallicon> [ : <smalliconopen> ] ; <mimetype>"
Where <command> is the command used to launch the application (e.g. "xv %s &"), and <type> is the file type string (e.g. "GIF Image"), <bigicon> and <bigiconopen> are the large icons shown in "Icons" mode, <smallicon> and <smalliconopen> are the small icons shown in "Details" mode, and <mimetype> is the RFC2045 mime type of the file.
For example:
[FILETYPES] gif="xv %s &;GIF Image;big.xpm:bigopen.xpm;mini.xpm:miniopen.xpm;image/gif" /home/jeroen=";Home;home.xpm;minihome.xpm;application/x-folder"
FXFileAssoc* FX::FXFileDict::remove | ( | const FXchar * | ext | ) |
Remove file association.
FXFileAssoc* FX::FXFileDict::find | ( | const FXchar * | ext | ) |
Find file association from registry.
|
virtual |
Determine binding for the given file.
The default implementation tries the whole filename first, then tries the extensions. For example, for a file "source.tar.gz":
"source.tar.gz", "tar.gz", "gz"
are tried in succession. If no association is found the key "defaultfilebinding" is tried as a fallback association. A NULL is returned if no association of any kind is found.
|
virtual |
Find directory binding from registry.
The default implementation tries the whole pathname first, then tries successively smaller parts of the path. For example, a pathname "/usr/people/jeroen":
"/usr/people/jeroen" "/people/jeroen" "/jeroen"
are tried in succession. If no bindings are found, the key "defaultdirbinding" is tried as a fallback association. A NULL is returned if no association of any kind is found.
|
virtual |
Determine binding for the given executable.
The default implementation returns the fallback binding associated with the key "defaultexecbinding". A NULL is returned if no association of any kind is found.
|
virtual |
Save to stream.
Reimplemented from FX::FXObject.
|
virtual |
Load from stream.
Reimplemented from FX::FXObject.
|
static |
Registry key used to find fallback executable icons.
|
static |
Registry key used to find fallback directory icons.
|
static |
Registry key used to find fallback document icons.
![]() |