133c89af1Smrg
233c89af1Smrg/*
333c89af1Smrg *
433c89af1SmrgCopyright 1989, 1998  The Open Group
533c89af1Smrg
633c89af1SmrgPermission to use, copy, modify, distribute, and sell this software and its
733c89af1Smrgdocumentation for any purpose is hereby granted without fee, provided that
833c89af1Smrgthe above copyright notice appear in all copies and that both that
933c89af1Smrgcopyright notice and this permission notice appear in supporting
1033c89af1Smrgdocumentation.
1133c89af1Smrg
1233c89af1SmrgThe above copyright notice and this permission notice shall be included in
1333c89af1Smrgall copies or substantial portions of the Software.
1433c89af1Smrg
1533c89af1SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1633c89af1SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1733c89af1SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
1833c89af1SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
1933c89af1SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
2033c89af1SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2133c89af1Smrg
2233c89af1SmrgExcept as contained in this notice, the name of The Open Group shall not be
2333c89af1Smrgused in advertising or otherwise to promote the sale, use or other dealings
2433c89af1Smrgin this Software without prior written authorization from The Open Group.
2533c89af1Smrg *
2633c89af1Smrg * Author:  Chris D. Peterson, MIT X Consortium
2733c89af1Smrg */
2833c89af1Smrg
2933c89af1Smrg#include <X11/Xmu/EditresP.h>
3033c89af1Smrg#include <X11/Xresource.h>
31ad47b356Smrg#include <X11/Xfuncproto.h>
3233c89af1Smrg
3333c89af1Smrg#define DEBUG
3433c89af1Smrg
3533c89af1Smrg#ifdef DEBUG
3633c89af1Smrg#  define CLIENT_TIME_OUT 60000	/* wait sixty seconds for the client. */
3733c89af1Smrg#else
3833c89af1Smrg#  define CLIENT_TIME_OUT 5000	/* wait five seconds for the client. */
3933c89af1Smrg#endif /* DEBUG */
4033c89af1Smrg
4133c89af1Smrg#define PROTOCOL_VERSION_ONE_POINT_ONE  5 /* version 1.1 */
4233c89af1Smrg#define ONE_POINT_ONE_STRING "1.1"
4333c89af1Smrg#define PROTOCOL_VERSION_ONE_POINT_ZERO 4 /* version 1.0 */
44ad47b356Smrg#define ONE_POINT_ZERO_STRING "1.0" ONE_POINT_ONE_STRING
4533c89af1Smrg
46ad47b356Smrg#define CURRENT_PROTOCOL_VERSION PROTOCOL_VERSION_ONE_POINT_ONE
4733c89af1Smrg#define CURRENT_PROTOCOL_VERSION_STRING ONE_POINT_ONE_STRING
4833c89af1Smrg
4933c89af1Smrg#define FLASH_TIME  1000	/* Default flash time in microseconds */
5033c89af1Smrg#define NUM_FLASHES 3		/* Default number of flashes. */
5133c89af1Smrg
5233c89af1Smrg#define NO_IDENT 0		/* an ident that will match nothing. */
5333c89af1Smrg
5433c89af1Smrg#define NUM_INC 10		/* amount to increment allocators. */
5533c89af1Smrg
5633c89af1Smrg#define ANY_RADIO_DATA ("the any widget")
5733c89af1Smrg#define RESOURCE_BOX ("resourceBox")
5833c89af1Smrg
5933c89af1Smrg
6033c89af1Smrg/*
6133c89af1Smrg * Retrieving ResType and Boolean is the same as retrieving a Card8 except
6233c89af1Smrg * possibly for signedness.
6333c89af1Smrg */
6433c89af1Smrg
6533c89af1Smrg#define _XEditResGetBoolean(_s, _r) _XEditResGet8((_s), (unsigned char *)(_r))
6633c89af1Smrg#define _XEditResGetResType _XEditResGet8
6733c89af1Smrg
6833c89af1Smrg/*
6933c89af1Smrg * Contexts to use with the X Context Manager.
7033c89af1Smrg */
7133c89af1Smrg
7233c89af1Smrg#define NODE_INFO ((XContext) 42)
7333c89af1Smrg
7433c89af1Smrg/*
75ad47b356Smrg * Error codes for X Server errors.
7633c89af1Smrg */
7733c89af1Smrg
7833c89af1Smrg#define NO_ERROR 0
7933c89af1Smrg#define NO_WINDOW 1
8033c89af1Smrg
81ad47b356Smrgtypedef enum {LocalSendWidgetTree, LocalSetValues, LocalFindChild,
8233c89af1Smrg	      LocalFlashWidget, LocalGetGeometry, LocalGetResources,
8333c89af1Smrg              LocalGetValues} ResCommand;
8433c89af1Smrg
8533c89af1Smrgtypedef enum {ClassLabel, NameLabel, IDLabel, WindowLabel,
8633c89af1Smrg	      ToggleLabel} LabelTypes;
87ad47b356Smrgtypedef enum {SelectWidget, SelectAll, SelectNone, SelectInvert, SelectParent,
8833c89af1Smrg	      SelectChildren,  SelectDescendants, SelectAncestors} SelectTypes;
8933c89af1Smrg
9033c89af1Smrgtypedef struct _NameInfo {
9133c89af1Smrg    struct _NameInfo * next;	/* Next element in the linked list. */
9233c89af1Smrg    Widget sep_leader;		/* The separator toggle group leader. */
9333c89af1Smrg    Widget name_leader;		/* The name toggle group leader. */
9433c89af1Smrg} NameInfo;
9533c89af1Smrg
9633c89af1Smrgtypedef struct _ResourceBoxInfo {
9733c89af1Smrg    Widget value_wid;		/* The string containing the value. */
98352bf44eSmrg    Widget res_label;		/* The label containing current resource. */
9933c89af1Smrg    Widget shell;		/* Shell widget containing resource box. */
10033c89af1Smrg    Widget norm_list;		/* The List widget for the normal list. */
101ad47b356Smrg    Widget cons_list;		/* The List widget for the
10233c89af1Smrg				   Constriaint Resources */
10333c89af1Smrg    NameInfo * name_info;	/* The info about the widgets for each
104352bf44eSmrg				   name and class in the instance hierarchy. */
10533c89af1Smrg} ResourceBoxInfo;
106ad47b356Smrg
10733c89af1Smrgtypedef struct _WidgetResourceInfo {
10833c89af1Smrg    char * name, * class, *type; /* Name, Class and Type of each resource. */
10933c89af1Smrg} WidgetResourceInfo;
110ad47b356Smrg
11133c89af1Smrgtypedef struct _WidgetResources {
11233c89af1Smrg    int num_normal, num_constraint;
11333c89af1Smrg    WidgetResourceInfo *normal, *constraint;
11433c89af1Smrg    ResourceBoxInfo * res_box;
11533c89af1Smrg} WidgetResources;
11633c89af1Smrg
11733c89af1Smrgtypedef struct _WNode {
11833c89af1Smrg    char * name;
11933c89af1Smrg    char * class;
12033c89af1Smrg    unsigned long id, window;
12133c89af1Smrg    struct _WNode * parent;
12233c89af1Smrg    struct _WNode ** children;
12333c89af1Smrg    struct _TreeInfo * tree_info;
12433c89af1Smrg    Cardinal num_children, alloc_children;
12533c89af1Smrg    Widget widget;
12633c89af1Smrg    WidgetResources * resources;
12733c89af1Smrg} WNode;
12833c89af1Smrg
12933c89af1Smrg/*
13033c89af1Smrg * Information for the Select any widget, toggle buttons in the resource
13133c89af1Smrg * boxes.
13233c89af1Smrg */
13333c89af1Smrg
13433c89af1Smrgtypedef struct _AnyInfo {
135352bf44eSmrg    WNode * node;		/* A Pointer off to the node corresponding to
13633c89af1Smrg				   this resource box. */
13733c89af1Smrg    Widget left_dot, left_star;	/* The dot and star widgets to our left. */
13833c89af1Smrg    Widget right_dot, right_star; /* The dot and star widgets to our right. */
13933c89af1Smrg    int left_count, *right_count; /* If count > 0 then desensitize the left or
14033c89af1Smrg				    right dot and star widgets. */
14133c89af1Smrg} AnyInfo;
14233c89af1Smrg
14333c89af1Smrg/*
14433c89af1Smrg * Information about the client we are currently working with.
14533c89af1Smrg */
14633c89af1Smrg
14733c89af1Smrgtypedef struct _CurrentClient {
14833c89af1Smrg    ResCommand command;		/* the command sent. */
14933c89af1Smrg    ResIdent ident;
15033c89af1Smrg    ProtocolStream stream;	/* protocol stream for this client. */
15133c89af1Smrg    XtIntervalId timeout;	/* timeout set in case he doesn't answer. */
15233c89af1Smrg    Window window;		/* window to communicate with. */
15333c89af1Smrg    Atom atom;			/* Atom used to communicate with this client.*/
15433c89af1Smrg} CurrentClient;
15533c89af1Smrg
15633c89af1Smrg/*
15733c89af1Smrg * Information about a tree we can display.
15833c89af1Smrg */
15933c89af1Smrg
16033c89af1Smrgtypedef struct _TreeInfo {
16133c89af1Smrg    Widget tree_widget;		/* The Tree widget that contains all nodes */
16233c89af1Smrg    WNode * top_node;		/* The top node in the tree. */
16333c89af1Smrg    WNode ** active_nodes;	/* The currently active nodes. */
16433c89af1Smrg    Cardinal num_nodes, alloc_nodes; /* number of active nodes, and space */
16533c89af1Smrg    Widget * flash_widgets;	/* list of widgets to flash on and off. */
16633c89af1Smrg    Cardinal num_flash_widgets, alloc_flash_widgets; /* number of flash wids.*/
16733c89af1Smrg} TreeInfo;
16833c89af1Smrg
16933c89af1Smrg/*
17033c89af1Smrg * Information specific to a give APPLICATION screen.
17133c89af1Smrg */
17233c89af1Smrg
17333c89af1Smrgtypedef struct _ScreenData {
17433c89af1Smrg    Widget set_values_popup;	/* The SetValues popup. */
17533c89af1Smrg    Widget res_text;		/* SetValues resource text widget. */
17633c89af1Smrg    Widget val_text;		/* SetValues value text widget. */
17733c89af1Smrg    Widget info_label;	        /* The information label. */
17833c89af1Smrg} ScreenData;
17933c89af1Smrg
18033c89af1Smrgtypedef struct _AppResources {
18133c89af1Smrg    Boolean debug;		/* Is debugging on? */
18233c89af1Smrg    int num_flashes, flash_time; /* Number and duration of flashes. */
18333c89af1Smrg    Pixel flash_color;		/* Color of flash window. */
18433c89af1Smrg    char * save_resources_file;	/* File to save the resources into. */
18533c89af1Smrg
18633c89af1Smrg    /* Private state */
18733c89af1Smrg    Boolean allocated_save_resources_file;
18833c89af1Smrg} AppResources;
18933c89af1Smrg
19033c89af1Smrg/*
19133c89af1Smrg * Information needed to apply the resource string to all widgets.
19233c89af1Smrg */
19333c89af1Smrg
19433c89af1Smrgtypedef struct _ApplyResourcesInfo {
195352bf44eSmrg    const char * name, *class;	/* name and class  of this resource. */
19633c89af1Smrg    unsigned short count;
19733c89af1Smrg    ProtocolStream * stream;
19833c89af1Smrg    XrmDatabase database;
19933c89af1Smrg} ApplyResourcesInfo;
200ad47b356Smrg
20133c89af1Smrg/*
20233c89af1Smrg * Information needed to get a resource string from a widget.
20333c89af1Smrg */
20433c89af1Smrg
20533c89af1Smrgtypedef struct _ObtainResourcesInfo {
206352bf44eSmrg    const char * name, *class;	/* name and class  of this resource. */
20733c89af1Smrg    unsigned short count;
20833c89af1Smrg    ProtocolStream * stream;
20933c89af1Smrg    XrmDatabase database;
21033c89af1Smrg} ObtainResourcesInfo;
21133c89af1Smrg
21233c89af1Smrg/************************************************************
21333c89af1Smrg *
21433c89af1Smrg * The Event Structures.
21533c89af1Smrg *
21633c89af1Smrg ************************************************************/
21733c89af1Smrg
21833c89af1Smrgtypedef struct _AnyEvent {
21933c89af1Smrg    EditresCommand type;
22033c89af1Smrg} AnyEvent;
22133c89af1Smrg
22233c89af1Smrgtypedef struct _WidgetTreeInfo {
22333c89af1Smrg    WidgetInfo widgets;
22433c89af1Smrg    char * name;
22533c89af1Smrg    char * class;
22633c89af1Smrg    unsigned long window;
22733c89af1Smrg} WidgetTreeInfo;
22833c89af1Smrg
22933c89af1Smrgtypedef struct _SendWidgetTreeEvent {
23033c89af1Smrg    EditresCommand type;
23133c89af1Smrg    char * toolkit;
23233c89af1Smrg    unsigned short num_entries;
23333c89af1Smrg    WidgetTreeInfo * info;
23433c89af1Smrg} SendWidgetTreeEvent;
23533c89af1Smrg
23633c89af1Smrgtypedef struct _SetValuesInfo {
23733c89af1Smrg    WidgetInfo widgets;
23833c89af1Smrg    char * message;
23933c89af1Smrg} SetValuesInfo;
240ad47b356Smrg
24133c89af1Smrgtypedef struct _SetValuesEvent {
24233c89af1Smrg    EditresCommand type;
24333c89af1Smrg    unsigned short num_entries;
24433c89af1Smrg    SetValuesInfo * info;
24533c89af1Smrg} SetValuesEvent;
24633c89af1Smrg
24733c89af1Smrgtypedef struct _GetValuesInfo {
24833c89af1Smrg    WidgetInfo widgets;
24933c89af1Smrg    char * value;
25033c89af1Smrg} GetValuesInfo;
251ad47b356Smrg
25233c89af1Smrgtypedef struct _GetValuesEvent {
25333c89af1Smrg    EditresCommand type;
25433c89af1Smrg    unsigned short num_entries;
25533c89af1Smrg    GetValuesInfo * info;
25633c89af1Smrg} GetValuesEvent;
25733c89af1Smrg
25833c89af1Smrgtypedef struct _ResourceInfo {
25933c89af1Smrg    ResourceType res_type;
26033c89af1Smrg    char * name, *class, *type;
26133c89af1Smrg} ResourceInfo;
26233c89af1Smrg
26333c89af1Smrgtypedef struct _GetResourcesInfo {
26433c89af1Smrg    WidgetInfo widgets;
26533c89af1Smrg    Boolean error;
26633c89af1Smrg    char * message;
26733c89af1Smrg    unsigned short num_resources;
26833c89af1Smrg    ResourceInfo * res_info;
26933c89af1Smrg} GetResourcesInfo;
27033c89af1Smrg
27133c89af1Smrgtypedef struct _GetResourcesEvent {
27233c89af1Smrg    EditresCommand type;
27333c89af1Smrg    unsigned short num_entries;
27433c89af1Smrg    GetResourcesInfo * info;
27533c89af1Smrg} GetResourcesEvent;
27633c89af1Smrg
27733c89af1Smrgtypedef struct _GetGeomInfo {
27833c89af1Smrg    EditresCommand type;
27933c89af1Smrg    WidgetInfo widgets;
28033c89af1Smrg    Boolean error;
28133c89af1Smrg    char * message;
282352bf44eSmrg    Boolean visible;
28333c89af1Smrg    short x, y;
28433c89af1Smrg    unsigned short width, height, border_width;
28533c89af1Smrg} GetGeomInfo;
28633c89af1Smrg
28733c89af1Smrgtypedef struct _GetGeomEvent {
28833c89af1Smrg    EditresCommand type;
28933c89af1Smrg    unsigned short num_entries;
29033c89af1Smrg    GetGeomInfo * info;
29133c89af1Smrg} GetGeomEvent;
29233c89af1Smrg
29333c89af1Smrgtypedef struct _FindChildEvent {
29433c89af1Smrg    EditresCommand type;
29533c89af1Smrg    WidgetInfo widgets;
29633c89af1Smrg} FindChildEvent;
29733c89af1Smrg
29833c89af1Smrgtypedef union _Event {
29933c89af1Smrg    AnyEvent any_event;
30033c89af1Smrg    SendWidgetTreeEvent send_widget_tree_event;
30133c89af1Smrg    SetValuesEvent set_values_event;
30233c89af1Smrg    GetResourcesEvent get_resources_event;
30333c89af1Smrg    GetGeomEvent get_geom_event;
30433c89af1Smrg    FindChildEvent find_child_event;
30533c89af1Smrg    GetValuesEvent get_values_event;
30633c89af1Smrg} Event;
307ad47b356Smrg
30833c89af1Smrg/*
30933c89af1Smrg * number of application resource labels.
31033c89af1Smrg */
31133c89af1Smrg
31233c89af1Smrg#define NUM_RES_LABELS 37
31333c89af1Smrg
31433c89af1Smrg/*
315ad47b356Smrg * Global variables.
31633c89af1Smrg */
317278eca22Smrgextern int global_effective_protocol_version;
31838d718bdSmrgextern const char *global_effective_toolkit;
319278eca22Smrgextern int global_error_code;
320278eca22Smrgextern unsigned long global_serial_num;
321278eca22Smrgextern int (*global_old_error_handler)(Display *, XErrorEvent *);
322278eca22Smrgextern Boolean global_resource_box_up;
323278eca22Smrg
324278eca22Smrgextern TreeInfo *global_tree_info;
325278eca22Smrgextern CurrentClient global_client;
326278eca22Smrgextern ScreenData global_screen_data;
327278eca22Smrgextern Widget global_tree_parent;
328278eca22Smrgextern Widget global_paned;	/* named after toolkit */
329278eca22Smrgextern Widget global_toplevel;
330278eca22Smrgextern AppResources global_resources;
331278eca22Smrg
332278eca22Smrgextern String res_labels[NUM_RES_LABELS];
333278eca22Smrg
334278eca22Smrgextern Boolean do_get_values;
335278eca22Smrgextern Atom wm_delete_window;
33633c89af1Smrg
337278eca22Smrg/* number of entries in the command menu */
338278eca22Smrg#define NUM_CM_ENTRIES 8
339278eca22Smrgextern Widget CM_entries[NUM_CM_ENTRIES];
340278eca22Smrg
341278eca22Smrg/* number of entries in the tree menu */
342278eca22Smrg#define NUM_TM_ENTRIES 16
343278eca22Smrgextern Widget TM_entries[NUM_TM_ENTRIES];
34433c89af1Smrg
34533c89af1Smrg/*
34633c89af1Smrg * Macros.
34733c89af1Smrg */
34833c89af1Smrg
34933c89af1Smrg#define streq(a, b)        ( strcmp((a), (b)) == 0 )
35033c89af1Smrg
35133c89af1Smrg/* offset into CM entries for setting insensitive */
35233c89af1Smrg#define CM_OFFSET 1
35333c89af1Smrg/* number of CM entries to make insensitive */
35433c89af1Smrg#define CM_NUM 5
35533c89af1Smrg#define TM_OFFSET 0
35633c89af1Smrg#define TM_NUM 16
35733c89af1Smrg
35833c89af1Smrg/*
35933c89af1Smrg * Prototypes
36033c89af1Smrg */
36133c89af1Smrgextern void ActivateResourceWidgets ( Widget w, XtPointer node_ptr, XtPointer junk );
36233c89af1Smrgextern void ActivateWidgetsAndSetResourceString ( Widget w, XtPointer node_ptr, XtPointer call_data );
363352bf44eSmrgextern void AddString ( char ** str, const char *add );
36433c89af1Smrgextern void AddTreeNode ( Widget tree, WNode * top );
36533c89af1Smrgextern void AnyChosen ( Widget w, XtPointer any_info_ptr, XtPointer state_ptr );
36633c89af1Smrgextern void ApplyResource ( Widget w, XtPointer node_ptr, XtPointer junk );
36733c89af1Smrgextern void BuildVisualTree ( Widget tree_parent, Event * event );
36833c89af1Smrgextern void BuildWidgetTree ( Widget parent );
36933c89af1Smrgextern Boolean CheckDatabase ( XrmDatabase db, XrmQuarkList names, XrmQuarkList classes );
37033c89af1Smrgextern void CreateResourceBox ( WNode * node, char ** errors );
37133c89af1Smrgextern void CreateResourceBoxWidgets ( WNode * node, char **names, char **cons_names );
37233c89af1Smrgextern TreeInfo * CreateTree ( Event * event );
37333c89af1Smrgextern void DisplayChild ( Event * event );
37433c89af1Smrgextern void DumpTreeToFile ( Widget w, XtPointer junk, XtPointer garbage );
37533c89af1Smrgextern void ExecuteOverAllNodes ( WNode * top_node, void (*func)(WNode *, XtPointer), XtPointer data );
37633c89af1Smrgextern WNode * FindNode ( WNode *top_node, unsigned long * ids, Cardinal number );
37733c89af1Smrgextern void FindWidget ( Widget w, XtPointer client_data, XtPointer call_data );
37833c89af1Smrgextern WNode * FindWidgetFromWindow ( TreeInfo * tree_info, Window win );
37933c89af1Smrgextern void FlashActiveWidgets ( Widget w, XtPointer junk, XtPointer garbage );
38033c89af1Smrgextern void GetAllStrings ( char *in, char sep, char ***out, int * num );
38133c89af1Smrgextern Window GetClientWindow ( Widget w, int *x, int *y );
38233c89af1Smrgextern char * GetFailureMessage ( ProtocolStream * stream );
38333c89af1Smrgextern void GetNamesAndClasses ( WNode * node, char *** names, char ***classes );
38433c89af1Smrgextern ResIdent GetNewIdent ( void );
38533c89af1Smrgextern void GetResourceList ( Widget w, XtPointer junk, XtPointer garbage );
38633c89af1Smrgextern char * GetResourceValueForSetValues ( WNode * node, unsigned short * size );
38733c89af1Smrgextern char * HandleFlashWidget ( Event * event );
38833c89af1Smrgextern char * HandleGetResources ( Event * event );
38933c89af1Smrgextern int HandleXErrors ( Display * display, XErrorEvent * error );
39033c89af1Smrgextern void InitSetValues ( Widget w, XtPointer client_data, XtPointer call_data );
39133c89af1Smrgextern void InsertWidgetFromNode ( ProtocolStream * stream, WNode * node );
39233c89af1Smrgextern void InternAtoms ( Display * dpy );
39333c89af1Smrgextern void LayoutTree ( Widget tree );
39433c89af1Smrgextern int main ( int argc, char **argv );
39533c89af1Smrgextern void ModifySVEntry ( Widget w, XEvent *event, String * params, Cardinal * num_params );
39633c89af1Smrgextern void PannerCallback ( Widget w, XtPointer closure, XtPointer report_ptr );
397ad47b356Smrgextern void PerformTreeToFileDump ( WNode * node, Cardinal num_tabs, FILE * fp );
39833c89af1Smrgextern void PopdownResBox ( Widget w, XtPointer shell_ptr, XtPointer junk );
39933c89af1Smrgextern void PopupCentered ( XEvent * event, Widget w, XtGrabKind mode );
40033c89af1Smrgextern void PopupSetValues ( Widget parent, XEvent * event );
40133c89af1Smrgextern void PortholeCallback ( Widget w, XtPointer panner_ptr, XtPointer report_ptr );
40233c89af1Smrgextern void PrepareToLayoutTree ( Widget tree );
40333c89af1Smrgextern void PrintNodes ( WNode * top );
40433c89af1Smrgextern char * PrintSetValuesError ( Event * event );
40533c89af1Smrgextern char * ProtocolFailure ( ProtocolStream * stream );
406352bf44eSmrgextern XrmQuarkList Quarkify ( char ** list, const char * ptr );
407ad47b356Smrgextern void Quit ( Widget w, XtPointer client_data, XtPointer call_data ) _X_NORETURN;
40838d718bdSmrgextern void RebuildMenusAndLabel ( const char * toolkit );
40933c89af1Smrgextern void ResourceListCallback ( Widget list, XtPointer node_ptr, XtPointer junk );
41033c89af1Smrgextern void SaveResource ( Widget w, XtPointer res_box_ptr, XtPointer junk );
41133c89af1Smrgextern void SendTree ( Widget w, XtPointer value, XtPointer call_data );
41233c89af1Smrgextern void SetAndCenterTreeNode ( WNode * node );
41333c89af1Smrgextern void SetApplicationActions ( XtAppContext app_con );
414352bf44eSmrgextern void SetCommand ( Widget w, ResCommand command, String msg );
41533c89af1Smrgextern void SetEntriesSensitive ( Widget *entries, int num, Boolean sensitive );
41633c89af1Smrgextern void SetFile ( Widget w, XtPointer junk, XtPointer garbage );
41738d718bdSmrgextern void SetMessage ( Widget w, const char * str );
41833c89af1Smrgextern void SetResourceString ( Widget w, XtPointer node_ptr, XtPointer junk );
41933c89af1Smrgextern void TreeRelabel ( Widget w, XtPointer client_data, XtPointer call_data );
42033c89af1Smrgextern void TreeSelect ( Widget w, XtPointer client_data, XtPointer call_data );
42133c89af1Smrgextern void TreeToggle ( Widget w, XtPointer node_ptr, XtPointer state_ptr );
42233c89af1Smrgextern void _DumpTreeToFile ( Widget w, XtPointer tree_ptr, XtPointer filename );
42333c89af1Smrgextern void _FindWidget ( Widget w );
42433c89af1Smrgextern void _FlashActiveWidgets ( TreeInfo * tree_info );
42533c89af1Smrgextern void _PopdownFileDialog ( Widget w, XtPointer client_data, XtPointer junk );
42638d718bdSmrgextern void _PopupFileDialog ( Widget w, const char *str, const char *default_value, XtCallbackProc func, XtPointer data );
42733c89af1Smrgextern void _TreeActivateNode ( WNode * node, SelectTypes type );
42833c89af1Smrgextern void _TreeRelabel ( TreeInfo * tree_info, LabelTypes type );
42933c89af1Smrgextern void _TreeRelabelNode ( WNode * node, LabelTypes type, Boolean recurse );
43033c89af1Smrgextern void _TreeSelect ( TreeInfo * tree_info, SelectTypes type );
43133c89af1Smrgextern void _TreeSelectNode ( WNode * node, SelectTypes type, Boolean recurse );
43233c89af1Smrg
433