/******************************************************************************* * Copyright (c) 2007, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ #ifndef ECLIPSE_MOTIF_H #define ECLIPSE_MOTIF_H #include #include #include #include #include #include #ifndef NO_XINERAMA_EXTENSIONS #include #endif struct MOTIF_PTRS { #ifndef NO_XINERAMA_EXTENSIONS Bool (*XineramaIsActive) (Display*); XineramaScreenInfo* (*XineramaQueryScreens) (Display*, int*); #endif Widget (*XmCreateDrawingArea) (Widget, String, ArgList, Cardinal); Widget (*XmCreateLabelGadget) (Widget, char *, Arg *, Cardinal); Widget (*XmCreateMainWindow) (Widget, char *, ArgList, Cardinal); Widget (*XmCreateMessageDialog)(Widget, String, ArgList, Cardinal); Widget (*XmMessageBoxGetChild) (Widget, unsigned char); void (*XmStringFree) (XmString); XmString (*XmStringGenerate) (XtPointer, XmStringTag, XmTextType, XmStringTag); void (*XtAddCallback) (Widget, String, XtCallbackProc, XtPointer); Widget (*XtAppCreateShell) (String, String, WidgetClass, Display*, ArgList, Cardinal); void (*XtAppNextEvent) (XtAppContext, XEvent*); XtInputMask (*XtAppPending) (XtAppContext); void (*XtAppProcessEvent) (XtAppContext, XtInputMask); void (*XtDestroyWidget) (Widget); Boolean (*XtDispatchEvent) (XEvent*); void (*XtGetValues) (Widget, ArgList, Cardinal); Widget (*XtInitialize) (String, String, XrmOptionDescRec*, Cardinal, int*, char**); #ifdef AIX Widget (*eclipseXtInitialize) (String, String, XrmOptionDescRec*, Cardinal, int*, char**); #endif Boolean (*XtIsManaged) (Widget); void (*XtManageChild) (Widget); int (*XtMapWidget) (Widget); void (*XtPopup) (Widget, XtGrabKind); void (*XtRealizeWidget) (Widget); Widget (*XtSetLanguageProc) (XtAppContext, XtLanguageProc, XtPointer); void (*XtSetMappedWhenManaged)(Widget, Boolean); void (*XtSetValues) (Widget, ArgList, Cardinal); void (*XtUnmanageChild) (Widget); XtAppContext (*XtWidgetToApplicationContext) (Widget); Window (*XtWindowOfObject) (Widget); Screen * (*XDefaultScreenOfDisplay)(Display*); int (*XFree) (void*); int (*XFlush) (Display*); Status (*XGetGeometry) (Display*, Drawable, Window*, int*, int*, unsigned int*, unsigned int*, unsigned int*, unsigned int*); int (*XMapWindow) (Display*, Window); char * _XmStrings; char * XtShellStrings; char * XtStrings; WidgetClass *applicationShellWidgetClass; }; extern struct MOTIF_PTRS motif; #define motif_XtDisplay XtDisplay #define motif_XtSetArg XtSetArg #define motif_XtWindow XtWindow #define motif_XtIsTopLevelShell XtIsTopLevelShell #define motif_XtIsRealized(object) (motif.XtWindowOfObject(object) != None) #define motif_XtMapWidget(widget) motif.XMapWindow(XtDisplay(widget), XtWindow(widget)) #define _XmStrings motif._XmStrings #define XtShellStrings motif.XtShellStrings #define XtStrings motif.XtStrings /* macro resolves to { (void**)&motif.foo, "foo" }, use it to initialize FN_TABLEs */ #define FN_TABLE_ENTRY(fn) { (void**)&motif.fn, #fn } typedef struct { void ** fnPtr; char * fnName; } FN_TABLE; extern int loadMotif(); #endif