#ifndef _WDCGUIOBJECTCOMPRISING_H_
#define _WDCGUIOBJECTCOMPRISING_H_

#include "guiutil.h"
#include "struc/wobject.h"

@interface WDCGUIObject: WDCObject
{
  Widget _widget;
  id _childrenList; // WDCLListOfObject
  id _parentObject;
  char * _actionMessage;
  id _actionMessageReceiver;
  id _actionMessageObject1;
  id _actionMessageObject2;

  /* These are for argument passing to X widgets */

  Arg *_arglist;
  int _numargs;
  int _allocedargs;
}

- initWithName:(char*)aName managedBy:anObject;
- free;

- (Widget)getWidget;
- getParentObject;
- getRootParentObject;
- getShellObject;
- getTopShellObject;
- getApplicationObject;
- (XtAppContext)getApplicationContext;
- getChildObject;
- getChildObjectNamed:(char*)aName;
- getArg:(char*)name into:(void*)value;
- (char*)getActionMessage;
- getActionMessageReceiver;
- getActionMessageObject1;
- getActionMessageObject2;
- (Display*)getDisplay;
- (Window)getWindow;
- (WidgetClass)getWidgetClass;
- (char*)getArgValue:(char*)name;
- (Arg*)getArgList;
- (int)getNumArgs;
- getChildren;

- setParentObject:anObject;
- setWidget:(Widget)aWidget;
- setChildObject:anObject;
- setActionMessage:(char*)message,...;
- setActionMessage:(char*)message withReceiver:receiver;
- setActionMessage:(char*)message withReceiver:receiver passObject:object;
- setActionMessage:(char*)message 
 withReceiver:receiver passObject:object1 and:object2;
- setActionMessageReceiver:object;
- setActionMessageObject1:object;
- setActionMessageObject2:object;
- setCallData:(XtPointer)call_data;
- setAction;
- setArg:(char*)name to:(char*)value;
- setSensitive:(BOOL)value;

- addArg:(char*)name with:(char*)value;

- doAction;
- manage;
- unManage;
- toggleManagedState;
- toggleSensitivity;
- popUp;
- popDown;
- (BOOL)isManaged;
- (BOOL)isViewable;

@end

#endif
