OSF/Motif

CDE

Historie


LessTif

OpenMotif

UIL

object
	main_win: XmMainWindow {
		controls {
			XmMenuBar main_menu;
			Xm_Separator1 sep_1;
			XmScrolledText text_win {
				arguments {
					XmNrows = 10;
					XmNwordWrap = true;
				};
			};
			Xm_Separator1 sep_2;
			XmPushButton ok_button {
				callbacks {
					XmNactivateCallback = procedure ok_button_down(ok_button_ident);
				};
			};
		};
	};

Widgety

Hello world

#include <Xm/Xm.h>    /* obsahuje taky X11/Intrinsics.h */
#include <Xm/PushB.h> /* každý widget má vlastní hlavičkový soubor */

void button_pushed(Widget widget, XtPointer data, XmPushButtonCallbackStruct * cbs) {
	/* ... */
}

int main(int argc, char * argv[]) {
	Widget window, button;
	XtAppContext app;

	/* kontext aplikace, název třídy, X11 argumenty (2),
	   argumenty programu (2), implicitní zdroje (seznam
	   ukončený NULL), rozšiřující parametry (seznam ukončený
	   NULL) */	
	window = XtVaAppInitialize(&app, "Application", NULL, 0, &argc, argv, NULL, NULL);
	
	/* rodičovský widget, název,
	   argumenty (ArgList), počet argumentů */
	button = XmCreatePushButton(window, "Button", NULL, 0);
	
	/* předání řízení widgetu rodičovskému widgetu,
	   zobrazení */
	XtManageChild(button);
	
	/* nastavení volání callback funkce button_pushed
	   při události XmNactivate, bez doplňkových uživatelských
	   dat */
	XtAddCallback(button, XmNactivateCallback, (XtCallbackProc) button_pushed, NULL);
	
	/* zobrazení widgetu (zde top-level okna) */
	XtRealizeWinget(window);
	
	/* zavolání hlavní smyčky událostí */
	XtAppMainLoop(app);
}

Programátorský model

Programátorský model (2)

Odkazy