Using The Resource Database

As mentioned earlier, most widget resources can be specified through the resource database. According to some authors this is the preferred way of resource setting as opposed to hard wiring in the program. During the initialization of the application the resource manager loads the resource database. Most end-users take advantage of that mechanism in customizing their applications without the need to recompile or know anything about programming. There are few places where the resource information may reside but the usual place is the file .Xdefaults in the user's home directory. Also, the application may keep a file of the application defaults settings in the directory: /usr/lib/X11/app-defaults, and the filename must match the application name.

More on the syntax of specifying resource values can be found in any book on the X Toolkit. Following is another reimplementation of the first example with the widget resources and translations set through the resource database.

     button_pressed(_Widget,_Event,[Param]) :-
             write(Param), nl.
     
     create_button :-
             xtAppInitialize(App,'Test',[],Shell),
             xmCreateLabel(Shell,button,[],Button),
             xtManageChild(Button),
             xtAppAddActions(App, [action(foo,button_pressed)]),
             xtRealizeWidget(Shell),
             xtAppMainLoop(App).
     

Entries in the resource file:

     Test.button.translations: #augment <Btn1Down>:foo("Hello Quintus")
     Test.button.labelString:           "Press Here"
     Test.button.height:                100
     Test.button.width:                 100