Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members

FX::FXFileDict Class Reference

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. More...

#include <FXFileDict.h>

Inheritance diagram for FX::FXFileDict:
FX::FXDict FX::FXObject

List of all members.

Public Member Functions

 FXFileDict (FXApp *app)
 Construct a dictionary mapping file-extension to file associations, using the application registry settings as a source for the bindings.
 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.
void setSettings (FXSettings *s)
 Change settings database.
FXSettingsgetSettings () const
 Return settings database.
void setIconDict (FXIconDict *icns)
 Change icon dictionary.
FXIconDictgetIconDict () const
 Return icon dictionary.
void setIconPath (const FXString &path)
 Set icon search path; the initial search path is determined by the "iconpath" registry setting in the SETTINGS section.
const FXStringgetIconPath () const
 Return current icon search path.
FXFileAssocreplace (const FXchar *ext, const FXchar *str)
 Replace file association.
FXFileAssocremove (const FXchar *ext)
 Remove file association.
FXFileAssocfind (const FXchar *ext)
 Find file association from registry.
FXFileAssocdata (FXival pos) const
 Return file association at position pos.
virtual FXFileAssocfindFileBinding (const FXchar *pathname)
 Determine binding for the given file.
virtual FXFileAssocfindDirBinding (const FXchar *pathname)
 Find directory binding from registry.
virtual FXFileAssocfindExecBinding (const FXchar *pathname)
 Determine binding for the given executable.
virtual void save (FXStream &store) const
 Save to stream.
virtual void load (FXStream &store)
 Load from stream.
virtual ~FXFileDict ()
 Destructor.
- Public Member Functions inherited from FX::FXDict
 FXDict ()
 Construct an empty dictionary.
FXbool size (FXival m)
 Resize the table to the given size.
FXival size () const
 Return the size of the table, including the empty slots.
FXival no () const
 Return the total number of entries in the table.
void * insert (const FXchar *ky, void *ptr=NULL, FXbool mrk=false)
 Insert a new entry into the table given key and mark.
void * replace (const FXchar *ky, void *ptr=NULL, FXbool mrk=false)
 Replace data at key, if the entry's mark is less than or equal to the given mark.
void * find (const FXchar *ky) const
 Find data pointer given key.
FXbool empty (FXival pos) const
 Return true if slot is empty.
const FXchar * key (FXival pos) const
 Return key at position pos.
FXbool mark (FXival pos) const
 Return mark flag of entry at position pos.
FXival first () const
 Return position of first filled slot, or >= total.
FXival last () const
 Return position of last filled slot or -1.
FXival next (FXival pos) const
 Return position of next filled slot in hash table or a value greater than or equal to total if no filled slot was found.
FXival prev (FXival pos) const
 Return position of previous filled slot in hash table or a -1 if no filled slot was found.
void clear ()
 Clear all entries.
virtual ~FXDict ()
 Destructor.
- Public Member Functions inherited from FX::FXObject
const FXchar * getClassName () const
 Get class name of some object.
FXbool isMemberOf (const FXMetaClass *metaclass) const
 Check if object is member of metaclass.
virtual long tryHandle (FXObject *sender, FXSelector sel, void *ptr)
 Try handle message safely, catching certain exceptions.
virtual long onDefault (FXObject *, FXSelector, void *)
 Called for unhandled messages.
virtual ~FXObject ()
 Virtual destructor.

Static Public Attributes

static const FXchar defaultExecBinding []
 Registry key used to find fallback executable icons.
static const FXchar defaultDirBinding []
 Registry key used to find fallback directory icons.
static const FXchar defaultFileBinding []
 Registry key used to find fallback document icons.

Protected Member Functions

virtual void * createData (void *)
 Overload this function in a derived class to return the data pointer given an input pointer; the default implementation just returns the input pointer.
virtual void deleteData (void *)
 Overload this function in a derived class to delete the pointer previously returned by createData(); the default implementation does nothing.

Additional Inherited Members

- Static Protected Member Functions inherited from FX::FXDict
static FXuint hash (const FXchar *str)
- Protected Attributes inherited from FX::FXDict
FXArray< Entrytable
FXival used
FXival free
- Static Protected Attributes inherited from FX::FXDict
static const Entry init

Detailed Description

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.


Constructor & Destructor Documentation

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.


Member Function Documentation

virtual FXFileAssoc* FX::FXFileDict::findDirBinding ( const FXchar *  pathname)
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 FXFileAssoc* FX::FXFileDict::findExecBinding ( const FXchar *  pathname)
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 FXFileAssoc* FX::FXFileDict::findFileBinding ( const FXchar *  pathname)
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.

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"


The documentation for this class was generated from the following file:

Copyright © 1997-2013 Jeroen van der Zijp