AJ_Status AJ_MarshalContainer(AJ_Message* msg, AJ_Arg* arg, uint8_t typeId) { AJ_Status status; InitArg(arg, typeId, NULL); status = AJ_MarshalArg(msg, arg); if (status == AJ_OK) { arg->container = msg->outer; msg->outer = arg; } return status; }
AJ_Status AJ_MarshalVariant(AJ_Message* msg, const char* sig) { AJ_Arg arg; /* * A variant type must be a single complete type */ if (CompleteTypeSigLen(sig) != strlen(sig)) { return AJ_ERR_UNEXPECTED; } InitArg(&arg, AJ_ARG_VARIANT, sig); return AJ_MarshalArg(msg, &arg); }
AJ_Status AJ_MarshalArgs(AJ_Message* msg, const char* sig, ...) { AJ_Status status = AJ_OK; AJ_Arg arg; va_list argp; va_start(argp, sig); while (*sig) { uint8_t u8; uint16_t u16; uint32_t u32; uint64_t u64; uint8_t typeId = (uint8_t)*sig++; void* val; if (!IsBasicType(typeId)) { status = AJ_ERR_UNEXPECTED; break; } if (IsScalarType(typeId)) { if (SizeOfType(typeId) == 8) { u64 = va_arg(argp, uint64_t); val = &u64; } else if (SizeOfType(typeId) == 4) { u32 = va_arg(argp, uint32_t); val = &u32; } else if (SizeOfType(typeId) == 2) { u16 = (uint16_t)va_arg(argp, uint32_t); val = &u16; } else { u8 = (uint8_t)va_arg(argp, uint32_t); val = &u8; } } else { val = va_arg(argp, char*); } InitArg(&arg, typeId, val); status = AJ_MarshalArg(msg, &arg); if (status != AJ_OK) { break; } } va_end(argp); return status; }
void MakeDialog( DialogType dtype ) { register int i, j; int width; FILE *fp, *fopen(); char buffer[128]; char *str; Widget w, text; Dimension txt_width, txt_height; XmString ok, cancel, nw, sv; Widget tlev; /* * do things common to all dialogs... */ ok = ReadCatalogXms(MC_LABEL_SET, MC_OK_LABEL, MC_DEF_OK_LABEL); cancel = ReadCatalogXms(MC_LABEL_SET, MC_CANCEL_LABEL, MC_DEF_CANCEL_LABEL); i = InitArg(MessageBox); XtSetArg(argt[i], XmNmarginHeight, MBOX_MARGIN_HEIGHT ); i++; XtSetArg(argt[i], XmNmarginWidth, MBOX_MARGIN_WIDTH ); i++; XtSetArg(argt[i], XmNshadowThickness, SHADOW_THICKNESS ); i++; XtSetArg(argt[i], XmNokLabelString, ok ); i++; XtSetArg(argt[i], XmNcancelLabelString, cancel ); i++; XtSetArg(argt[i], XmNnoResize, False ); i++; XtSetArg(argt[i], XmNresizePolicy, XmRESIZE_ANY ); i++; /* * create the various dialogs... */ /* JET - check the matte widget, and if non-null, well use that as * the parent for dialogs. Otherwise use table (the original * toplevel widget for this func). This is useful for Xinerama so * that child dialogs are centered on the matte, and not the whole * SLS screen. */ if (matte != (Widget)NULL) tlev = matte; else tlev = table; switch (dtype) { case error: xmstr = ReadCatalogXms(MC_ERROR_SET, MC_LOGIN, ""); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; w = XmCreateErrorDialog(tlev, "error_message", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); error_message = w; break; case help: xmstr = ReadCatalogXms(MC_HELP_SET, MC_HELP, MC_DEF_HELP); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; w = XmCreateInformationDialog(tlev, "help_message", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); txt_width = DisplayWidth (XtDisplay(w), DefaultScreen(XtDisplay(w))); txt_height = DisplayHeight (XtDisplay(w), DefaultScreen(XtDisplay(w))); txt_width = (txt_width > 850) ? 800 : txt_width - 50; txt_height = (txt_height > 900) ? 750 : txt_height - 150; i = InitArg(Text); XtSetArg(argt[i], XmNheight, txt_height); i++; XtSetArg(argt[i], XmNwidth, txt_width); i++; XtSetArg(argt[i], XmNeditMode, XmMULTI_LINE_EDIT); i++; XtSetArg(argt[i], XmNscrollBarDisplayPolicy, XmAS_NEEDED); i++; XtSetArg(argt[i], XmNscrollingPolicy, XmAUTOMATIC); i++; XtSetArg(argt[i], XmNeditable, False); i++; str = (char*) ReadCatalog(MC_HELP_SET, MC_HELP, MC_DEF_HELP); XtSetArg(argt[i], XmNvalue, strdup(str)); i++; text = XmCreateScrolledText(w, "help_message_text", argt, i); XtManageChild(text); XtManageChild(w); help_message = w; break; case copyright: if ((fp = fopen(COPYRIGHT,"r")) == NULL) #if defined( __hp_osf ) xmstr = XmStringCreate("Cannot open copyright file '/usr/X11/copyright'.", XmFONTLIST_DEFAULT_TAG); #else xmstr = XmStringCreate("Cannot open copyright file '/etc/copyright'.", XmFONTLIST_DEFAULT_TAG); #endif else { xmstr = (XmString) NULL; while (fgets(buffer, 128, fp) != NULL) { j = strlen(buffer); if ( buffer[j-1] == '\n' ) buffer[j-1] = '\0'; if ( xmstr != NULL ) xmstr = XmStringConcat(xmstr, XmStringSeparatorCreate()); xmstr = XmStringConcat(xmstr, XmStringCreate(buffer, XmFONTLIST_DEFAULT_TAG)); } } fclose(fp); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; w = XmCreateInformationDialog(tlev, "copyright_msg", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); XtAddCallback(w, XmNokCallback, CopyrightCB, (XtPointer) 0); copyright_msg = w; break; case hostname: nw = ReadCatalogXms(MC_LABEL_SET, MC_NW_LABEL, MC_DEF_NW_LABEL); sv = ReadCatalogXms(MC_LABEL_SET, MC_START_LABEL, MC_DEF_START_LABEL); xmstr = ReadCatalogXms(MC_HELP_SET, MC_SYSTEM, MC_DEF_SYSTEM); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; XtSetArg(argt[i], XmNokLabelString, nw ); i++; XtSetArg(argt[i], XmNcancelLabelString, sv ); i++; w = XmCreateWarningDialog(tlev, "hostname_msg", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); XmStringFree(nw); XmStringFree(sv); hostname_message = w; break; case expassword: xmstr = ReadCatalogXms(MC_ERROR_SET, MC_PASSWD_EXPIRED, MC_DEF_PASSWD_EXPIRED); XtSetArg(argt[i], XmNmessageString, xmstr ); i++; w = XmCreateQuestionDialog(tlev, "password_msg", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); passwd_message = w; break; case help_chooser: xmstr = ReadCatalogXms(MC_HELP_SET, MC_HELP_CHOOSER, MC_DEF_HELP_CHOOSER); w = XmCreateInformationDialog(tlev, "help_message", argt, i); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_CANCEL_BUTTON)); XtUnmanageChild(XmMessageBoxGetChild(w,XmDIALOG_HELP_BUTTON)); txt_width = DisplayWidth (XtDisplay(w), DefaultScreen(XtDisplay(w))); txt_height = DisplayHeight (XtDisplay(w), DefaultScreen(XtDisplay(w))); txt_width = (txt_width > 850) ? 800 : txt_width - 50; txt_height = (txt_height > 900) ? 750 : txt_height - 150; i = InitArg(Text); XtSetArg(argt[i], XmNheight, txt_height); i++; XtSetArg(argt[i], XmNwidth, txt_width); i++; XtSetArg(argt[i], XmNeditMode, XmMULTI_LINE_EDIT); i++; XtSetArg(argt[i], XmNscrollBarDisplayPolicy, XmAS_NEEDED); i++; XtSetArg(argt[i], XmNscrollingPolicy, XmAUTOMATIC); i++; XtSetArg(argt[i], XmNeditable, False); i++; str = (char*) ReadCatalog(MC_HELP_SET, MC_HELP_CHOOSER, MC_DEF_HELP_CHOOSER); XtSetArg(argt[i], XmNvalue, strdup(str)); i++; text = XmCreateScrolledText(w, "help_message_text", argt, i); XtManageChild(text); XtManageChild(w); help_message = w; break; }
void MakeChooser( void ) { int i; /** greeting **/ XtGetSubresources(table, &greetInfo, "greeting", "Greeting", greetResources, XtNumber(greetResources), NULL, 0); i = InitArg(LabelG); xmstr = ReadCatalogXms(MC_CHOOSER_SET, MC_CHOOSER_TITLE, MC_DEF_CHOOSER_TITLE); XtSetArg(argt[i], XmNtraversalOn, False); i++; XtSetArg(argt[i], XmNlabelString, xmstr); i++; XtSetArg(argt[i], XmNtopAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNtopOffset, 10); i++; XtSetArg(argt[i], XmNleftAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNrightAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNalignment, XmALIGNMENT_CENTER); i++; if ( greetInfo.fontList != NULL ) { XtSetArg(argt[i], XmNfontList, greetInfo.fontList); i++; } greeting = XmCreateLabel(matte1, "greeting", argt, i); XtManageChild(greeting); XmStringFree(xmstr); /** list head **/ i = InitArg(LabelG); xmstr = ReadCatalogXms(MC_CHOOSER_SET, MC_CHOOSER_HEADING, MC_DEF_CHOOSER_HEADING); XtSetArg(argt[i], XmNtraversalOn, False); i++; XtSetArg(argt[i], XmNlabelString, xmstr); i++; XtSetArg(argt[i], XmNtopAttachment, XmATTACH_WIDGET); i++; XtSetArg(argt[i], XmNtopWidget, greeting); i++; XtSetArg(argt[i], XmNtopOffset, 10); i++; XtSetArg(argt[i], XmNleftAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNleftOffset, 13); i++; if (appInfo.chlistFont != NULL) { XtSetArg(argt[i], XmNfontList, appInfo.chlistFont); i++; } list_head = XmCreateLabelGadget(matte1, "list_head", argt, i); XtManageChild(list_head); XmStringFree(xmstr); i = 0; XtSetArg(argt[i], XmNresizable, True); XtSetValues(matte, argt, i); XtSetValues(matte1, argt, i); /** chooser_list **/ i = 0; XtSetArg(argt[i], XmNleftAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNleftOffset, 10); i++; XtSetArg(argt[i], XmNrightAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNrightOffset, 10); i++; XtSetArg(argt[i], XmNtopAttachment, XmATTACH_WIDGET); i++; XtSetArg(argt[i], XmNtopWidget, list_head); i++; XtSetArg(argt[i], XmNtopOffset, 1); i++; XtSetArg(argt[i], XmNbottomAttachment, XmATTACH_WIDGET); i++; XtSetArg(argt[i], XmNbottomWidget, ok_button); i++; XtSetArg(argt[i], XmNbottomOffset, 10); i++; XtSetArg(argt[i], XmNallowShellResize, True); i++; XtSetArg(argt[i], XmNlistSizePolicy, XmCONSTANT); i++; XtSetArg(argt[i], XmNscrollBarDisplayPolicy, XmSTATIC); i++; if (appInfo.chlistFont != NULL) { XtSetArg(argt[i], XmNfontList, appInfo.chlistFont); i++; } chooser_list = XmCreateScrolledList(matte1, "chooser_list", argt, i); XtAddCallback(chooser_list, XmNdefaultActionCallback, DoAccept, NULL); XtManageChild(chooser_list); if (appInfo.workspaceCursor) { MakeRootCursor(); } else { XUndefineCursor(dpyinfo.dpy, dpyinfo.root); } }
void MakeButtons( void ) { register int i; Dimension width; Dimension max_width; /* maximum width of a set of widgets */ Dimension max_height; /* maximum height of a set of widgets */ int origin; /* horizontal origin for button placement */ int spacing; /* spacing between buttons (width/32) */ /* * create the buttons... */ /* ok button */ i = InitArg(PushBG); XtSetArg(argt[i], XmNbottomAttachment, XmATTACH_POSITION); i++; XtSetArg(argt[i], XmNbottomPosition, 95); i++; XtSetArg(argt[i], XmNtraversalOn, True); i++; XtSetArg(argt[i], XmNleftAttachment, XmATTACH_FORM); i++; xmstr = ReadCatalogXms(MC_LABEL_SET, MC_OK_LABEL, MC_DEF_OK_LABEL ); XtSetArg(argt[i], XmNlabelString, xmstr ); i++; ok_button = XmCreatePushButtonGadget(matte1, "ok_button", argt, i); XmStringFree(xmstr); XtManageChild(ok_button); XtAddCallback(ok_button, XmNactivateCallback, DoAccept, NULL); /* clear button */ i -= 2; XtSetArg(argt[i], XmNleftAttachment, XmATTACH_WIDGET); i++; XtSetArg(argt[i], XmNleftWidget, ok_button); i++; xmstr = ReadCatalogXms(MC_CHOOSER_SET, MC_UPDATE_LABEL, MC_DEF_UPDATE_LABEL); XtSetArg(argt[i], XmNlabelString, xmstr); i++; clear_button = XmCreatePushButtonGadget(matte1, "clear_button", argt, i); XmStringFree(xmstr); XtManageChild(clear_button); XtAddCallback(clear_button, XmNactivateCallback, DoPing, (XtPointer) 0); /* help button */ i -= 3; xmstr = ReadCatalogXms(MC_LABEL_SET, MC_HELP_LABEL, MC_DEF_HELP_LABEL); XtSetArg(argt[i], XmNlabelString, xmstr ); i++; help_button = XmCreatePushButtonGadget(matte1, "help_button", argt, i); XtAddCallback(help_button, XmNactivateCallback, ShowDialogCB, (XtPointer) help_chooser); XmStringFree(xmstr); XtManageChild(help_button); i = InitArg(Label); XtSetArg(argt[i], XmNbottomAttachment, XmATTACH_POSITION); i++; XtSetArg(argt[i], XmNbottomPosition, 95); i++; XtSetArg(argt[i], XmNleftAttachment, XmATTACH_WIDGET); i++; XtSetArg(argt[i], XmNleftWidget, clear_button); i++; xmstr = ReadCatalogXms(MC_LABEL_SET, MC_OPTIONS_LABEL, MC_DEF_OPTIONS_LABEL ); XtSetArg(argt[i], XmNlabelString, xmstr ); i++; options_button = DtCreateMenuButton(matte1, "options_button", argt, i); XmStringFree(xmstr); XtManageChild(options_button); /** set attachment for help button **/ i = 0; XtSetArg(argt[i], XmNleftAttachment, XmATTACH_WIDGET); i++; XtSetArg(argt[i], XmNleftWidget, options_button); i++; XtSetArg(argt[i], XmNrightAttachment, XmATTACH_FORM); i++; XtSetValues(help_button, argt, i); /* * tell form that ok_button is the default button... */ i = 0; XtSetArg(argt[i], XmNdefaultButton, ok_button ); i++; XtSetValues(matte1, argt, i); /* * make all buttons the same size... */ max_width = max_height = 0; GetBiggest(ok_button, &max_width, &max_height); GetBiggest(clear_button, &max_width, &max_height); GetBiggest(options_button, &max_width, &max_height); GetBiggest(help_button, &max_width, &max_height); if ( max_width < MIN_BUTTON_SIZE) max_width = MIN_BUTTON_SIZE; i = 0; XtSetArg(argt[i], XmNwidth, max_width ); i++; XtSetArg(argt[i], XmNheight, max_height ); i++; XtSetArg(argt[i], XmNrecomputeSize, False ); i++; XtSetValues(ok_button, argt, i); XtSetValues(clear_button, argt, i); XtSetValues(options_button, argt, i); XtSetValues(help_button, argt, i); }
void MakeBackground( void ) { register int i; /* * Get resources first */ SetResourceDatabase(); XtGetApplicationResources(toplevel, &appInfo, AppResources, XtNumber(AppResources), NULL, 0); /* * create the login shell widget... */ i = 0; /* CORE resource set */ XtSetArg(argt[i], XmNancestorSensitive, True ); i++; XtSetArg(argt[i], XmNbackgroundPixmap, XmUNSPECIFIED_PIXMAP ); i++; XtSetArg(argt[i], XmNborderWidth, 0 ); i++; XtSetArg(argt[i], XmNmappedWhenManaged, False ); i++; XtSetArg(argt[i], XmNsensitive, True ); i++; XtSetArg(argt[i], XmNtranslations, NULL ); i++; /* COMPOSITE resource set */ XtSetArg(argt[i], XmNinsertPosition, NULL ); i++; /* SHELL resource set (set to avoid interference by user) */ XtSetArg(argt[i], XmNallowShellResize, False ); i++; XtSetArg(argt[i], XmNcreatePopupChildProc, NULL ); i++; XtSetArg(argt[i], XmNgeometry, NULL ); i++; XtSetArg(argt[i], XmNpopupCallback, NULL ); i++; XtSetArg(argt[i], XmNpopdownCallback, NULL ); i++; XtSetArg(argt[i], XmNoverrideRedirect, False ); i++; XtSetArg(argt[i], XmNsaveUnder, False ); i++; login_shell = XtCreatePopupShell("login_shell", transientShellWidgetClass, toplevel, argt, i); XtAddCallback(login_shell, XmNpopupCallback, LayoutCB, NULL); /* Fix to display Input Method's status area. */ XtSetArg(argt[0], XmNheight, dpyinfo.height); XtSetValues(login_shell, argt, 1); /* * create the full-screen drawing area... */ i = InitArg(DrawingA); XtSetArg(argt[i], XmNwidth, dpyinfo.width ); i++; XtSetArg(argt[i], XmNheight, dpyinfo.height ); i++; XtSetArg(argt[i], XmNunitType, XmPIXELS ); i++; table = XtCreateManagedWidget("table", xmDrawingAreaWidgetClass, login_shell, argt, i); XtAddEventHandler(table, ButtonPressMask, False, RefreshEH, NULL); /* * create the main matte... */ i = InitArg(Form); /* XmNwidth, (set by user) */ /* XmNheight, (set by user) */ XtSetArg(argt[i], XmNshadowThickness, SHADOW_THICKNESS ); i++; /* XtSetArg(argt[i], XmNshadowType, XmSHADOW_OUT ); i++; XtSetArg(argt[i], XmNshadowThickness, 5 ); i++; */ matte = XmCreateForm(table, "matte", argt, i); XtManageChild(matte); i = 0; XtSetArg(argt[i], XmNshadowType, XmSHADOW_OUT); i++; XtSetArg(argt[i], XmNshadowThickness, 2); i++; XtSetArg(argt[i], XmNtopAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNbottomAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNleftAttachment, XmATTACH_FORM); i++; /* XtSetArg(argt[i], XmNrightAttachment, XmATTACH_FORM); i++; */ XtSetArg(argt[i], XmNtopOffset, 15); i++; XtSetArg(argt[i], XmNbottomOffset, 15); i++; XtSetArg(argt[i], XmNleftOffset, 15); i++; /* XtSetArg(argt[i], XmNrightOffset, 15); i++; */ matteFrame = XmCreateFrame(matte, "matteFrame", argt, i); XtManageChild(matteFrame); i = 0; matte1 = XmCreateForm(matteFrame, "matte1", argt, i); XtManageChild(matte1); }
void MakeLogo( void ) { register int i; char *logoFile; /* name of logo bitmap file */ Pixmap logoPixmap; /* logo pixmap */ char *logoName; /* logo name */ int logoWidth, logoHeight; /* width, height of logo */ Pixel fg, bg; /* foreground, background colors */ Pixmap dsPixmap; /* drop shadow pixmap */ int dsWidth, dsHeight; /* width, height of drop shadow */ Pixmap pixmap; /* scratch pixmap */ GC gc; /* scratch GC */ XGCValues gcval; /* GC values */ unsigned int width, height; /* width, height of bitmap */ int x_hot, y_hot; /* bitmap hot spot (if any)*/ /* * get the user's logo preferences... */ XtGetSubresources(table, &logoInfo, "logo", "Logo", logoResources, XtNumber(logoResources), NULL, 0); /* * create the logo frame... */ i = InitArg(Frame); XtSetArg(argt[i], XmNshadowType, XmSHADOW_OUT); i++; XtSetArg(argt[i], XmNshadowThickness, 2); i++; XtSetArg(argt[i], XmNtopAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNtopOffset, 15); i++; XtSetArg(argt[i], XmNbottomAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNbottomOffset, 15); i++; XtSetArg(argt[i], XmNrightAttachment, XmATTACH_FORM); i++; XtSetArg(argt[i], XmNrightOffset, 15); i++; XtSetArg(argt[i], XmNleftAttachment, XmATTACH_WIDGET); i++; XtSetArg(argt[i], XmNleftWidget, matteFrame); i++; logo1 = XmCreateFrame(matte, "logo", argt, i); XtManageChild(logo1); /* * get the colors of the frame... */ XtSetArg(argt[0], XmNforeground, &fg); XtSetArg(argt[1], XmNbackground, &bg); XtGetValues(logo1, argt, 2); /* * create the logo pixmap... */ logoFile = logoInfo.bitmapFile; #if defined (_AIX) && defined (_POWER) /* * On AIX4 we have a Dtlogo.s.pm */ # define LOGO_TYPE (LOWRES ? DtSMALL : 0) #else # define LOGO_TYPE 0 #endif logoName = _DtGetIconFileName(DefaultScreenOfDisplay(dpyinfo.dpy), logoFile, NULL, NULL, LOGO_TYPE); if (logoName == NULL) { LogError( ReadCatalog(MC_LOG_SET,MC_LOG_NO_LOGOBIT,MC_DEF_LOG_NO_LOGOBIT), logoFile); logoFile = NULL; } /* * create the logo control... */ i = InitArg(LabelG); XtSetArg(argt[i], XmNmarginWidth, 0); i++; XtSetArg(argt[i], XmNmarginHeight, 0); i++; XtSetArg(argt[i], XmNhighlightThickness, 0); i++; XtSetArg(argt[i], XmNbehavior, XmICON_LABEL); i++; XtSetArg(argt[i], XmNfillMode, XmFILL_TRANSPARENT); i++; XtSetArg(argt[i], XmNstring, NULL); i++; if (logoName != NULL) { XtSetArg(argt[i], XmNpixmapForeground, fg); i++; XtSetArg(argt[i], XmNpixmapBackground, bg); i++; XtSetArg(argt[i], XmNimageName, logoName); i++; } else { /* * use built-in logo if no logo was not found */ logoPixmap = XCreatePixmapFromBitmapData( dpyinfo.dpy, /* display */ dpyinfo.root, /* drawable */ (char *)dt_logo_bits, /* data */ dt_logo_width, /* width */ dt_logo_height, /* height */ fg, /* foreground */ bg, /* background */ dpyinfo.depth); /* depth */ logoWidth = dt_logo_width; logoHeight = dt_logo_height; XtSetArg(argt[i], XmNpixmap, logoPixmap); i++; } logo_pixmap = _DtCreateIcon(logo1, "logo_pixmap", argt, i); XtManageChild(logo_pixmap); XtSetArg(argt[0], XmNheight, 245); /* keeps dialog a consistent height and width */ XtSetArg(argt[1], XmNwidth, 245); XtSetValues(logo1, argt, 2); }
static AJ_Status MarshalMsg(AJ_Message* msg, uint8_t msgType, uint32_t msgId, uint8_t flags) { AJ_Status status = AJ_OK; AJ_IOBuffer* ioBuf = &msg->bus->sock.tx; uint8_t fieldId; uint8_t secure = FALSE; /* * Use the msgId to lookup information in the object and interface descriptions to * initialize the message header fields. */ status = AJ_InitMessageFromMsgId(msg, msgId, msgType, &secure); if (status != AJ_OK) { return status; } AJ_IO_BUF_RESET(ioBuf); msg->hdr = (AJ_MsgHeader*)ioBuf->bufStart; memset(msg->hdr, 0, sizeof(AJ_MsgHeader)); ioBuf->writePtr += sizeof(AJ_MsgHeader); msg->hdr->endianess = HOST_ENDIANESS; msg->hdr->msgType = msgType; msg->hdr->flags = flags; if (secure) { msg->hdr->flags |= AJ_FLAG_ENCRYPTED; } /* * The wire-protocol calls this flag NO_AUTO_START we toggle the meaning in the API * so the default flags value can be zero. */ msg->hdr->flags ^= AJ_FLAG_AUTO_START; /* * Serial number cannot be zero (wire-spec wierdness) */ do { msg->hdr->serialNum = msg->bus->serial++; } while (msg->bus->serial == 1); /* * Marshal the header fields */ for (fieldId = AJ_HDR_OBJ_PATH; fieldId <= AJ_HDR_SESSION_ID; ++fieldId) { char typeId = TypeForHdr[fieldId]; char buf[4]; const char* fieldSig = &buf[2]; AJ_Arg hdrVal; /* * Skip field id's that are not currently used. */ if (typeId == AJ_ARG_INVALID) { continue; } InitArg(&hdrVal, typeId, NULL); switch (fieldId) { case AJ_HDR_OBJ_PATH: if ((msgType == AJ_MSG_METHOD_CALL) || (msgType == AJ_MSG_SIGNAL)) { hdrVal.val.v_objPath = msg->objPath; } break; case AJ_HDR_INTERFACE: hdrVal.val.v_string = msg->iface; break; case AJ_HDR_MEMBER: if (msgType != AJ_MSG_ERROR) { int32_t len = AJ_StringFindFirstOf(msg->member, " "); hdrVal.val.v_string = msg->member; hdrVal.len = (len >= 0) ? len : 0; } break; case AJ_HDR_ERROR_NAME: if (msgType == AJ_MSG_ERROR) { hdrVal.val.v_string = msg->error; } break; case AJ_HDR_REPLY_SERIAL: if ((msgType == AJ_MSG_METHOD_RET) || (msgType == AJ_MSG_ERROR)) { hdrVal.val.v_uint32 = &msg->replySerial; } break; case AJ_HDR_DESTINATION: hdrVal.val.v_string = msg->destination; break; case AJ_HDR_SENDER: hdrVal.val.v_string = AJ_GetUniqueName(msg->bus); break; case AJ_HDR_SIGNATURE: hdrVal.val.v_signature = msg->signature; break; case AJ_HDR_TIMESTAMP: if (msg->ttl) { AJ_Time timer; timer.seconds = 0; timer.milliseconds = 0; msg->timestamp = AJ_GetElapsedTime(&timer, FALSE); hdrVal.val.v_uint32 = &msg->timestamp; } break; case AJ_HDR_TIME_TO_LIVE: if (msg->ttl) { hdrVal.val.v_uint32 = &msg->ttl; } break; case AJ_HDR_SESSION_ID: if (msg->sessionId) { hdrVal.val.v_uint32 = &msg->sessionId; } break; case AJ_HDR_HANDLES: case AJ_HDR_COMPRESSION_TOKEN: default: continue; } /* * Ignore empty fields. */ if (!hdrVal.val.v_data) { continue; } /* * Custom marshal the header field - signature is "(yv)" so starts off with STRUCT aligment. */ buf[0] = fieldId; buf[1] = 1; buf[2] = typeId; buf[3] = 0; WriteBytes(msg, buf, 4, PadForType(AJ_ARG_STRUCT, ioBuf)); /* * Now marshal the field value */ Marshal(msg, &fieldSig, &hdrVal); } if (status == AJ_OK) { /* * Write the header length */ msg->hdr->headerLen = (uint32_t)((ioBuf->writePtr - ioBuf->bufStart) - sizeof(AJ_MsgHeader)); /* * Header must be padded to an 8 byte boundary */ status = WritePad(msg, (8 - msg->hdr->headerLen) & 7); } return status; }