#include <X11/Xmu/EditresP.h>
#include <X11/Xresource.h>
#define DEBUG
#ifdef DEBUG
# define CLIENT_TIME_OUT 60000
#else
# define CLIENT_TIME_OUT 5000
#endif
#define PROTOCOL_VERSION_ONE_POINT_ONE 5
#define ONE_POINT_ONE_STRING "1.1"
#define PROTOCOL_VERSION_ONE_POINT_ZERO 4
#define ONE_POINT_ZERO_STRING "1.0" ONE_POINT_ONE_STRING
#define CURRENT_PROTOCOL_VERSION PROTOCOL_VERSION_ONE_POINT_ONE
#define CURRENT_PROTOCOL_VERSION_STRING ONE_POINT_ONE_STRING
#define FLASH_TIME 1000
#define NUM_FLASHES 3
#define NO_IDENT 0
#define NUM_INC 10
#define ANY_RADIO_DATA ("the any widget")
#define RESOURCE_BOX ("resourceBox")
#define _XEditResGetBoolean(_s, _r) _XEditResGet8((_s), (unsigned char *)(_r))
#define _XEditResGetResType _XEditResGet8
#define NODE_INFO ((XContext) 42)
#define NO_ERROR 0
#define NO_WINDOW 1
typedef enum {LocalSendWidgetTree, LocalSetValues, LocalFindChild,
LocalFlashWidget, LocalGetGeometry, LocalGetResources,
LocalGetValues} ResCommand;
typedef enum {ClassLabel, NameLabel, IDLabel, WindowLabel,
ToggleLabel} LabelTypes;
typedef enum {SelectWidget, SelectAll, SelectNone, SelectInvert, SelectParent,
SelectChildren, SelectDescendants, SelectAncestors} SelectTypes;
typedef struct _NameInfo {
struct _NameInfo * next;
Widget sep_leader;
Widget name_leader;
} NameInfo;
typedef struct _ResourceBoxInfo {
Widget value_wid;
Widget res_label;
Widget shell;
Widget norm_list;
Widget cons_list;
NameInfo * name_info;
} ResourceBoxInfo;
typedef struct _WidgetResourceInfo {
char * name, * class, *type;
} WidgetResourceInfo;
typedef struct _WidgetResources {
int num_normal, num_constraint;
WidgetResourceInfo *normal, *constraint;
ResourceBoxInfo * res_box;
} WidgetResources;
typedef struct _WNode {
char * name;
char * class;
unsigned long id, window;
struct _WNode * parent;
struct _WNode ** children;
struct _TreeInfo * tree_info;
Cardinal num_children, alloc_children;
Widget widget;
WidgetResources * resources;
} WNode;
typedef struct _AnyInfo {
WNode * node;
Widget left_dot, left_star;
Widget right_dot, right_star;
int left_count, *right_count;
} AnyInfo;
typedef struct _CurrentClient {
ResCommand command;
ResIdent ident;
ProtocolStream stream;
XtIntervalId timeout;
Window window;
Atom atom;
} CurrentClient;
typedef struct _TreeInfo {
Widget tree_widget;
WNode * top_node;
WNode ** active_nodes;
Cardinal num_nodes, alloc_nodes;
Widget * flash_widgets;
Cardinal num_flash_widgets, alloc_flash_widgets;
} TreeInfo;
typedef struct _ScreenData {
Widget set_values_popup;
Widget res_text;
Widget val_text;
Widget info_label;
} ScreenData;
typedef struct _AppResources {
Boolean debug;
int num_flashes, flash_time;
Pixel flash_color;
char * save_resources_file;
Boolean allocated_save_resources_file;
} AppResources;
typedef struct _ApplyResourcesInfo {
char * name, *class;
unsigned short count;
ProtocolStream * stream;
XrmDatabase database;
} ApplyResourcesInfo;
typedef struct _ObtainResourcesInfo {
char * name, *class;
unsigned short count;
ProtocolStream * stream;
XrmDatabase database;
} ObtainResourcesInfo;
typedef struct _AnyEvent {
EditresCommand type;
} AnyEvent;
typedef struct _WidgetTreeInfo {
WidgetInfo widgets;
char * name;
char * class;
unsigned long window;
} WidgetTreeInfo;
typedef struct _SendWidgetTreeEvent {
EditresCommand type;
char * toolkit;
unsigned short num_entries;
WidgetTreeInfo * info;
} SendWidgetTreeEvent;
typedef struct _SetValuesInfo {
WidgetInfo widgets;
char * message;
} SetValuesInfo;
typedef struct _SetValuesEvent {
EditresCommand type;
unsigned short num_entries;
SetValuesInfo * info;
} SetValuesEvent;
typedef struct _GetValuesInfo {
WidgetInfo widgets;
char * value;
} GetValuesInfo;
typedef struct _GetValuesEvent {
EditresCommand type;
unsigned short num_entries;
GetValuesInfo * info;
} GetValuesEvent;
typedef struct _ResourceInfo {
ResourceType res_type;
char * name, *class, *type;
} ResourceInfo;
typedef struct _GetResourcesInfo {
WidgetInfo widgets;
Boolean error;
char * message;
unsigned short num_resources;
ResourceInfo * res_info;
} GetResourcesInfo;
typedef struct _GetResourcesEvent {
EditresCommand type;
unsigned short num_entries;
GetResourcesInfo * info;
} GetResourcesEvent;
typedef struct _GetGeomInfo {
EditresCommand type;
WidgetInfo widgets;
Boolean error;
char * message;
Boolean visable;
short x, y;
unsigned short width, height, border_width;
} GetGeomInfo;
typedef struct _GetGeomEvent {
EditresCommand type;
unsigned short num_entries;
GetGeomInfo * info;
} GetGeomEvent;
typedef struct _FindChildEvent {
EditresCommand type;
WidgetInfo widgets;
} FindChildEvent;
typedef union _Event {
AnyEvent any_event;
SendWidgetTreeEvent send_widget_tree_event;
SetValuesEvent set_values_event;
GetResourcesEvent get_resources_event;
GetGeomEvent get_geom_event;
FindChildEvent find_child_event;
GetValuesEvent get_values_event;
} Event;
#define NUM_RES_LABELS 37
#ifndef THIS_IS_MAIN
extern int global_effective_protocol_version;
extern char* global_effective_toolkit;
extern int global_error_code;
extern unsigned long global_serial_num;
extern int (*global_old_error_handler)(Display *, XErrorEvent *);
extern Boolean global_resource_box_up;
extern TreeInfo *global_tree_info;
extern CurrentClient global_client;
extern ScreenData global_screen_data;
extern Widget global_tree_parent;
extern Widget global_paned;
extern Widget global_toplevel;
extern AppResources global_resources;
extern String res_labels[NUM_RES_LABELS];
#endif
#define streq(a, b) ( strcmp((a), (b)) == 0 )
#define NUM_CM_ENTRIES 8
#define CM_OFFSET 1
#define CM_NUM 5
#define NUM_TM_ENTRIES 16
#define TM_OFFSET 0
#define TM_NUM 16
extern void ActivateResourceWidgets ( Widget w, XtPointer node_ptr, XtPointer junk );
extern void ActivateWidgetsAndSetResourceString ( Widget w, XtPointer node_ptr, XtPointer call_data );
extern void AddString ( char ** str, char *add );
extern void AddTreeNode ( Widget tree, WNode * top );
extern void AnyChosen ( Widget w, XtPointer any_info_ptr, XtPointer state_ptr );
extern void ApplyResource ( Widget w, XtPointer node_ptr, XtPointer junk );
extern void BuildVisualTree ( Widget tree_parent, Event * event );
extern void BuildWidgetTree ( Widget parent );
extern Boolean CheckDatabase ( XrmDatabase db, XrmQuarkList names, XrmQuarkList classes );
extern void CreateResourceBox ( WNode * node, char ** errors );
extern void CreateResourceBoxWidgets ( WNode * node, char **names, char **cons_names );
extern TreeInfo * CreateTree ( Event * event );
extern void DisplayChild ( Event * event );
extern void DumpTreeToFile ( Widget w, XtPointer junk, XtPointer garbage );
extern void ExecuteOverAllNodes ( WNode * top_node, void (*func)(WNode *, XtPointer), XtPointer data );
extern WNode * FindNode ( WNode *top_node, unsigned long * ids, Cardinal number );
extern void FindWidget ( Widget w, XtPointer client_data, XtPointer call_data );
extern WNode * FindWidgetFromWindow ( TreeInfo * tree_info, Window win );
extern void FlashActiveWidgets ( Widget w, XtPointer junk, XtPointer garbage );
extern void GetAllStrings ( char *in, char sep, char ***out, int * num );
extern Window GetClientWindow ( Widget w, int *x, int *y );
extern char * GetFailureMessage ( ProtocolStream * stream );
extern void GetNamesAndClasses ( WNode * node, char *** names, char ***classes );
extern ResIdent GetNewIdent ( void );
extern void GetResourceList ( Widget w, XtPointer junk, XtPointer garbage );
extern char * GetResourceValueForSetValues ( WNode * node, unsigned short * size );
extern char * HandleFlashWidget ( Event * event );
extern char * HandleGetResources ( Event * event );
extern int HandleXErrors ( Display * display, XErrorEvent * error );
extern void InitSetValues ( Widget w, XtPointer client_data, XtPointer call_data );
extern void InsertWidgetFromNode ( ProtocolStream * stream, WNode * node );
extern void InternAtoms ( Display * dpy );
extern void LayoutTree ( Widget tree );
extern int main ( int argc, char **argv );
extern void ModifySVEntry ( Widget w, XEvent *event, String * params, Cardinal * num_params );
extern void PannerCallback ( Widget w, XtPointer closure, XtPointer report_ptr );
extern void PerformTreeToFileDump ( WNode * node, int num_tabs, FILE * fp );
extern void PopdownResBox ( Widget w, XtPointer shell_ptr, XtPointer junk );
extern void PopupCentered ( XEvent * event, Widget w, XtGrabKind mode );
extern void PopupSetValues ( Widget parent, XEvent * event );
extern void PortholeCallback ( Widget w, XtPointer panner_ptr, XtPointer report_ptr );
extern void PrepareToLayoutTree ( Widget tree );
extern void PrintNodes ( WNode * top );
extern char * PrintSetValuesError ( Event * event );
extern char * ProtocolFailure ( ProtocolStream * stream );
extern XrmQuarkList Quarkify ( char ** list, char * ptr );
extern void Quit ( Widget w, XtPointer client_data, XtPointer call_data );
extern void RebuildMenusAndLabel ( String toolkit );
extern void ResourceListCallback ( Widget list, XtPointer node_ptr, XtPointer junk );
extern void SaveResource ( Widget w, XtPointer res_box_ptr, XtPointer junk );
extern void SendTree ( Widget w, XtPointer value, XtPointer call_data );
extern void SetAndCenterTreeNode ( WNode * node );
extern void SetApplicationActions ( XtAppContext app_con );
extern void SetCommand ( Widget w, ResCommand command, char * msg );
extern void SetEntriesSensitive ( Widget *entries, int num, Boolean sensitive );
extern void SetFile ( Widget w, XtPointer junk, XtPointer garbage );
extern void SetMessage ( Widget w, char * str );
extern void SetResourceString ( Widget w, XtPointer node_ptr, XtPointer junk );
extern void TreeRelabel ( Widget w, XtPointer client_data, XtPointer call_data );
extern void TreeSelect ( Widget w, XtPointer client_data, XtPointer call_data );
extern void TreeToggle ( Widget w, XtPointer node_ptr, XtPointer state_ptr );
extern void _DumpTreeToFile ( Widget w, XtPointer tree_ptr, XtPointer filename );
extern void _FindWidget ( Widget w );
extern void _FlashActiveWidgets ( TreeInfo * tree_info );
extern void _PopdownFileDialog ( Widget w, XtPointer client_data, XtPointer junk );
extern void _PopupFileDialog ( Widget w, String str, String default_value, XtCallbackProc func, XtPointer data );
extern void _TreeActivateNode ( WNode * node, SelectTypes type );
extern void _TreeRelabel ( TreeInfo * tree_info, LabelTypes type );
extern void _TreeRelabelNode ( WNode * node, LabelTypes type, Boolean recurse );
extern void _TreeSelect ( TreeInfo * tree_info, SelectTypes type );
extern void _TreeSelectNode ( WNode * node, SelectTypes type, Boolean recurse );