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