The Display Path

The access to files is greatly simplified by the display path mechanism. If the path name provided in a call to the functions that open and read files is relative, the function searches for the file name in the directories specified in the display path.

The member functions of IlvDisplay can be used to check and manipulate the display path, as well as to check whether a file name exists in any of the directories specified in the display path.

For details on the display path mechanism, see:

Setting the Display Path

The display path is a string that contains multiple directory path names, separated by the regular system path separator (‘:’ under UNIX, and ‘;’ for DOS).

Initially (when the IlvDisplay instance is created), the display path is set to the concatenation of three distinct elements as follows (using UNIX notation for path):
<.:user path:system path:>

  • The first section contains only the current directory (noted ‘.’).

  • The second section, user path, is composed of the contents of the display resource path followed by the contents of the environment variable ILVPATH.

  • The third section, system path, contains subdirectories of IlvHome.

In short, the IlvPath initial value is (assuming ILVHOME is defined):

.:<path resource>:$ILVPATH:$ILVHOME/data:$ILVHOME/data/icon:$ILVHOME

data/images

The Path Resource

  • On X Window, the path resource will be, for example:

AppName*path: /usr/local/views/ilv

  • On Microsoft Windows, the path resource can be in the VIEWS.INI or application-dependent file .INI:

[AppName]
path=C:\USER\DATA\ILV

The ILVPATH Environment Variable

The ILVPATH environment variable can be set by the user before the application is launched.

  • With UNIX, this setting can be defined by the lines:

$ ILVPATH=/usr/home/user/ilvimages:/usr/home/user/ilvpanels
$ export ILVPATH

  • In a Microsoft Windows command prompt window, this setting could be:

C:\> SET ILVPATH=C:\USER\DATA\ILV;C:\USER\DATA\IMAGES

Querying or Modifying the Display Path

The class IlvDisplay provides member functions to manipulate the display path. These are getPath, setPath, appendToPath, and prependToPath.

These methods allow the user to get, set, and modify the user path (that is, the second section of the display path). The structure of the display path remains the same, that is:
<.:user path:system path.>

The method findInPath is used to:

  • Check whether a file is in the display path.

  • Get its absolute path name.

Example: Add a Directory to the Display Path

The following example shows how to add a directory to the display path and check whether a file is in the display path.

IlvDisplay* display = new IlvDisplay("AppName",

"DisplayName",

argc,

argv);

if (display->isBad()) {

delete display;

IlvFatalError("Could not create display");

IlvExit(-1);

}

 

const char* dirName = "./localDirectory/subDirectory";

const char* fileName = "foo.txt";

display->prependToPath(dirName);

// Now, if a file such as

// "./localDirectory/subDirectory/foo.txt"

// or

// ".\localDirectory\subDirectory\foo.txt"

// exists, we should be able to find it.

const char* filePath = display->findInPath(fileName);

if (filePath)

IlvPrint("File %s found at %s", fileName, filePath);

else

IlvWarning("File %s not found", fileName);