示例#1
0
void MenuTalker::createActionBuffer() {
	createActionButtons(-1);

	int button_height = 0;
	if (!actions.empty()) {
		button_height = static_cast<int>(actions.size()) * actions[0].btn->pos.h;
	}

	for (size_t i = 0; i < actions.size(); ++i) {
		actions[i].btn->pos.x = text_offset.x;
		actions[i].btn->pos.y = (static_cast<int>(i) * actions[i].btn->pos.h);
		actions[i].btn->refresh();
	}

	label_name->setText(npc->name);
	label_name->setFont(font_who);
	textbox->resize(textbox->pos.w, button_height);

	align();

	closeButton->enabled = true;
	advanceButton->enabled = false;

	setupTabList();
}
示例#2
0
//create an XmRowColumns containing
//a scrolled list for the parts in questions
//and a couple of buttons to take some actions
//with the parts whenn pressed
void InvPartEditor::createGuiRowCol(Widget parent)
{
    Arg args[5];
    XtSetArg(args[0], XmNorientation, XmVERTICAL);
    Widget guiRowCol = XtCreateManagedWidget("guiRowCol", xmRowColumnWidgetClass, parent, args, 1);

    XtSetArg(args[0], XmNscrollingPolicy, XmAUTOMATIC);
    XtSetArg(args[1], XmNvisualPolicy, XmCONSTANT);
    XtSetArg(args[2], XmNheight, 300);
    XtSetArg(args[3], XmNwidth, 300);
    Widget scrolled = XmCreateScrolledWindow(guiRowCol, (char *)"Beispiel", args, 4);
    XtManageChild(scrolled);
    createPartsButtons(scrolled);
    createActionButtons(guiRowCol);
}
示例#3
0
DbTreeViewPanel::DbTreeViewPanel(QWidget *parent) :
    QWidget(parent), selectLinkedObjectsDialog(0)
{
    QVBoxLayout *mainLayout = new QVBoxLayout();

    dbTree=new DbTreeView();
    mainLayout->addWidget(dbTree);

    createActionButtons(mainLayout);

    mainLayout->setContentsMargins(0,0,0,0);
    setLayout(mainLayout);

    connect(dbTree, SIGNAL(treeViewReady()), this, SLOT(treeReady()));
}
示例#4
0
文件: mask.c 项目: epicsdeb/alh
/******************************************************
  maskCreateDialog
******************************************************/
static void maskCreateDialog(ALINK *area)
{
	struct maskWindow *maskWindow;

	Widget maskDialogShell, maskDialog;
	Widget form;
	Widget nameLabelW, nameTextW;
	Widget labelW, pushButtonW, prev;
	int    i,j;
	static ActionAreaItem buttonItems[] = {
		         { "Dismiss", maskDismissCallback, NULL    },
		         { "Help",    maskHelpCallback,    NULL    },
		     	};
	static maskItem maskItem[] = {
		         { "Add/Cancel Alarms",         {{"Add",    0},{"Cancel",  1},{"Reset", 2}}},
		         { "Enable/Disable Alarms",     {{"Enable",10},{"Disable",11},{"Reset",12}}},
		         { "Ack/NoAck Alarms",          {{"Ack",   20},{"NoAck",  21},{"Reset",22}}},
		         { "Ack/NoAck Transient Alarms",{{"AckT",  30},{"NoAckT", 31},{"Reset",32}}},
		         { "Log/NoLog Alarms",          {{"Log",   40},{"NoLog",  41},{"Reset",42}}},
		     	};
	int num_buttons = 3;
	int num_rows = 5;

	if (!area) return;

	maskWindow = (struct maskWindow *)area->maskWindow;

	if (maskWindow && maskWindow->maskDialog){
		if (XtIsManaged(maskWindow->maskDialog)) return;
		else XtManageChild(maskWindow->maskDialog);
	}

	maskWindow = (struct maskWindow *)calloc(1,sizeof(struct maskWindow));
	area->maskWindow = (void *)maskWindow;
	maskWindow->area = (void *)area;

	maskDialogShell = XtVaCreatePopupShell("Modify Mask Settings",
	    transientShellWidgetClass, area->toplevel, 
	    XmNallowShellResize, TRUE,
	    NULL);

	/* Modify the window manager menu "close" callback */
	{
		Atom         WM_DELETE_WINDOW;
		XtVaSetValues(maskDialogShell,
		    XmNdeleteResponse, XmDO_NOTHING, NULL);
		WM_DELETE_WINDOW = XmInternAtom(XtDisplay(maskDialogShell),
		    "WM_DELETE_WINDOW", False);
		XmAddWMProtocolCallback(maskDialogShell,WM_DELETE_WINDOW,
		    (XtCallbackProc)maskDismissCallback, (XtPointer)maskWindow);
	}

	maskDialog = XtVaCreateWidget("maskDialog",
	    xmPanedWindowWidgetClass, maskDialogShell,
	    XmNallowResize,      TRUE,
	    XmNsashWidth,        1,
	    XmNsashHeight,       1,
	    XmNuserData,         area,
	    NULL);

	form = XtVaCreateWidget("control_area",
	    xmFormWidgetClass, maskDialog,
	    XmNfractionBase,    TIGHTNESS*(num_buttons+3) - 1,
	    XmNallowResize,     TRUE,
	    NULL);

	/* ---------------------------------
	     Group/Channel Name 
	     --------------------------------- */
	nameLabelW = XtVaCreateManagedWidget("nameLabelW",
	    xmLabelGadgetClass, form,
	    XmNalignment,       XmALIGNMENT_END,
	    XmNtopAttachment,   XmATTACH_FORM,
	    XmNrightAttachment, XmATTACH_POSITION,
	    XmNrightPosition,   (TIGHTNESS*(num_buttons+3) - 1)/2,
	    XmNrecomputeSize,   True,
	    (XtPointer)NULL);

	nameTextW = XtVaCreateManagedWidget("nameTextW",
	    xmLabelGadgetClass, form,
	    XmNalignment,       XmALIGNMENT_BEGINNING,
	    XmNleftAttachment,  XmATTACH_WIDGET,
	    XmNleftWidget,      nameLabelW,
	    XmNrightAttachment, XmATTACH_NONE,
	    XmNrecomputeSize,   True,
	    NULL);


	prev = nameLabelW;
	for (i = 0; i < num_rows; i++){
		labelW = XtVaCreateManagedWidget(maskItem[i].label,
		    xmLabelGadgetClass,  form,
		    XmNleftAttachment,   XmATTACH_FORM,
		    XmNtopAttachment,    XmATTACH_WIDGET,
		    XmNtopWidget,        prev,
		    XmNtopOffset,        10,
		    NULL);
		for (j = 0; j < num_buttons; j++){
			long index=maskItem[i].choice[j].index;
			pushButtonW = XtVaCreateManagedWidget(
			    maskItem[i].choice[j].label,
			    xmPushButtonWidgetClass, form,
			    XmNuserData,             (XtPointer)area,
			    XmNleftAttachment,       XmATTACH_POSITION,
			    XmNleftPosition,         TIGHTNESS*(j+3),
			    XmNtopAttachment,        XmATTACH_WIDGET,
			    XmNtopWidget,            prev,
			    XmNtopOffset,       5,
			    XmNrightAttachment,
			    j != num_buttons-1? XmATTACH_POSITION : XmATTACH_FORM,
			    XmNrightPosition,        TIGHTNESS*(j+3) + (TIGHTNESS-1),
			    NULL);
			XtAddCallback(pushButtonW, XmNactivateCallback,
			    (XtCallbackProc)maskActivateCallback,
			    (XtPointer)index);
			if (_passive_flag && i == ALARMACKT ) { /* ACKT */
				XtVaSetValues(pushButtonW, XmNsensitive, FALSE, NULL);
			}
		}
		prev=labelW;
	}

	XtManageChild(form);

	/* Set the client data "Dismiss" and "Help" button's callbacks. */
	buttonItems[0].data = (XtPointer)maskWindow;
	buttonItems[1].data = (XtPointer)maskWindow;

	(void)createActionButtons(maskDialog, buttonItems, XtNumber(buttonItems));

	XtManageChild(maskDialog);

	maskWindow->maskDialog = maskDialog;
	maskWindow->nameLabelW = nameLabelW;
	maskWindow->nameTextW = nameTextW;

	XtRealizeWidget(maskDialogShell);
}
示例#5
0
/******************************************************
  audioSetupCreateDialog
******************************************************/
static void audioSetupCreateDialog(Widget menuButton)
{
    Widget audioSetupDialogShell;
    Widget form,form1;
    Widget filename;
    Widget scale;
    Widget button;
    Widget toggleButton;
    Widget frame, rowcol;
    Widget label;
    Pixel textBackground;
    XmString string;
    static ActionAreaItem audioSetup_items[] = {
         { "Dismiss", audioSetupDismissCallback, NULL} };
    ALINK      *area;

    if (!audioSetup.paudioInfo) initAudioSetup();

    textBackground = bg_pixel[3];

    XtVaGetValues(menuButton, XmNuserData, &area, NULL);

    if (audioSetup.audioSetupDialog){
        if (XtIsManaged(audioSetup.audioSetupDialog)) return;
        else XtManageChild(audioSetup.audioSetupDialog);
    }

    audioSetupDialogShell = XtVaCreatePopupShell("ALH Audio Setup",
        transientShellWidgetClass, area->toplevel, NULL, 0);

    /* Modify the window manager menu "close" callback */
    {
        Atom         WM_DELETE_WINDOW;
        XtVaSetValues(audioSetupDialogShell,
            XmNdeleteResponse, XmDO_NOTHING, NULL);
        WM_DELETE_WINDOW = XmInternAtom(XtDisplay(audioSetupDialogShell),
            "WM_DELETE_WINDOW", False);
        XmAddWMProtocolCallback(audioSetupDialogShell,WM_DELETE_WINDOW,
            (XtCallbackProc)audioSetupDismissCallback, (XtPointer)menuButton);
    }

    form = XtVaCreateWidget("audioSetupDialog",
        xmFormWidgetClass, audioSetupDialogShell,
        NULL);
    audioSetup.audioSetupDialog = form;

    string = XmStringCreateSimple("Audio Beep Output Port");
    label = XtVaCreateManagedWidget("audioOutputLabel",
        xmLabelGadgetClass,        form,
        XmNlabelString,            string,
        XmNtopAttachment,          XmATTACH_FORM,
        XmNtopWidget,              form,
        NULL);
    XmStringFree(string);

    frame = XtVaCreateWidget("frame",
        xmFrameWidgetClass, form,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              label,
        XmNleftAttachment,         XmATTACH_FORM,
        XmNrightAttachment,        XmATTACH_FORM,
        NULL);

    rowcol = XtVaCreateWidget("rowcol",
        xmRowColumnWidgetClass, frame,
        XmNspacing,         0,
        XmNmarginWidth,     10,
        XmNmarginHeight,    10,
        XmNradioBehavior,    TRUE,
        XmNbackground,      textBackground,
        NULL);

    toggleButton = XtVaCreateManagedWidget("None (Use keyboard speaker)",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        NULL);
    XmToggleButtonSetState(toggleButton,
        ((audioSetup.port==AUDIO_NONE)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupOutputChangeCallback, (XtPointer)AUDIO_NONE);

    toggleButton = XtVaCreateManagedWidget("Internal speaker",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        NULL);
    XmToggleButtonSetState(toggleButton,
        ((audioSetup.port==AUDIO_SPEAKER)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupOutputChangeCallback, (XtPointer)AUDIO_SPEAKER);

    toggleButton = XtVaCreateManagedWidget("Headphone",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        NULL);
    XmToggleButtonSetState(toggleButton,
        ((audioSetup.port==AUDIO_HEADPHONE)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupOutputChangeCallback, (XtPointer)AUDIO_HEADPHONE);

    toggleButton = XtVaCreateManagedWidget("Line out",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        NULL);
    XmToggleButtonSetState(toggleButton,
        ((audioSetup.port==AUDIO_LINE_OUT)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupOutputChangeCallback, (XtPointer)AUDIO_LINE_OUT);

    XtManageChild(rowcol);
    XtManageChild(frame);

    string = XmStringCreateSimple("Audio Source");
    label = XtVaCreateManagedWidget("audioAudioSourceLabel",
        xmLabelGadgetClass,        form,
        XmNlabelString,            string,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              frame,
        NULL);
    XmStringFree(string);

    frame = XtVaCreateWidget("frame",
        xmFrameWidgetClass, form,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              label,
        XmNleftAttachment,         XmATTACH_FORM,
        XmNrightAttachment,        XmATTACH_FORM,
        NULL);

    audioSetup.audioSourceFrameWidget = frame;
    if (audioSetup.port==AUDIO_NONE) XtSetSensitive(frame, FALSE);
    else XtSetSensitive(frame, TRUE);

    rowcol = XtVaCreateWidget("rowcol",
        xmRowColumnWidgetClass, frame,
        XmNspacing,          0,
        XmNmarginWidth,      10,
        XmNmarginHeight,     10,
        XmNradioBehavior,    TRUE,
        XmNbackground,     textBackground,
        NULL);

    toggleButton = XtVaCreateManagedWidget("alh internal Hi pitch beep",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        /*1XmNalignment,XmALIGNMENT_CENTER*/
        NULL);
    XmToggleButtonSetState(toggleButton,
        ((audioSetup.audioSource==AUDIO_SOURCE_HI)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupAudioSourceChangeCallback, (XtPointer)AUDIO_SOURCE_HI);

    toggleButton = XtVaCreateManagedWidget("alh internal Lo pitch beep",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        NULL);
    XmToggleButtonSetState(toggleButton,
        ((audioSetup.audioSource==AUDIO_SOURCE_LO)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupAudioSourceChangeCallback, (XtPointer)AUDIO_SOURCE_LO);

    toggleButton = XtVaCreateManagedWidget("Au/u-law (.au) file",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        NULL);
    XmToggleButtonSetState(toggleButton,
        ((audioSetup.audioSource==AUDIO_SOURCE_FILE)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupAudioSourceChangeCallback, (XtPointer)AUDIO_SOURCE_FILE);

    XtManageChild(rowcol);
    XtManageChild(frame);

    string = XmStringCreateSimple("Au/u-law (.au) filename");
    label = XtVaCreateManagedWidget("audioFilenamelabel",
        xmLabelGadgetClass,        form,
        XmNlabelString,            string,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              frame,
        NULL);
    XmStringFree(string);

    button = XtVaCreateManagedWidget("Browse",
        xmPushButtonWidgetClass, form,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              frame,
        XmNleftAttachment,         XmATTACH_WIDGET,
        XmNleftWidget,             label,
        XmNrightAttachment,        XmATTACH_FORM,
        XmNshadowThickness,        1,
        NULL);

    filename = XtVaCreateManagedWidget("filename",
        xmTextFieldWidgetClass, form,
        XmNbackground,      textBackground,
        XmNtopAttachment,   XmATTACH_WIDGET,
        XmNtopWidget,       button,
        XmNleftAttachment,  XmATTACH_FORM,
        XmNrightAttachment, XmATTACH_FORM,
        NULL);

    XtAddCallback(button, XmNactivateCallback,
        audioSetupFilenameBrowseCallback, filename);

    XmTextFieldSetString(filename,audioSetup.paudioInfo->filename);

    XtAddCallback(filename, XmNactivateCallback,
        audioSetupFilenameChangeCallback, NULL);

    string = XmStringCreateSimple("Audio Beep Volume");
    label = XtVaCreateManagedWidget("audioVolumelabel",
        xmLabelGadgetClass,        form,
        XmNlabelString,            string,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              filename,
        NULL);
    XmStringFree(string);

    frame = XtVaCreateWidget("frame",
        xmFrameWidgetClass, form,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              label,
        XmNleftAttachment,         XmATTACH_FORM,
        XmNrightAttachment,        XmATTACH_FORM,
        NULL);

    scale = XtVaCreateManagedWidget("VolumeScale",
        xmScaleWidgetClass, frame,
        XmNmaximum,          AUDIO_MAX_GAIN,
        XmNminimum,          AUDIO_MIN_GAIN,
        XmNvalue,            audioSetup.volume,
        XmNshowValue,        True,
        XmNorientation,      XmHORIZONTAL,
        XmNbackground,      textBackground,
        NULL);
    XtAddCallback(scale, XmNvalueChangedCallback,
        audioSetupVolumeChangeCallback, NULL);

    XtManageChild(frame);

    string = XmStringCreateSimple("Test Beep");
    label = XtVaCreateManagedWidget("audioTestlabel",
        xmLabelGadgetClass,        form,
        XmNlabelString,            string,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              frame,
        XmNleftAttachment,         XmATTACH_FORM,
        NULL);
    XmStringFree(string);

    button = XtVaCreateManagedWidget("Beep",
        xmPushButtonWidgetClass, form,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              label,
        XmNleftAttachment,         XmATTACH_FORM,
        XmNrightAttachment,        XmATTACH_FORM,
        XmNshadowThickness,        2,
        NULL);
    XtAddCallback(button, XmNactivateCallback,
        audioSetupTestBeepCallback, NULL);

    /* Set the client data "Dismiss" button's callbacks. */
    audioSetup_items[0].data = (XtPointer)menuButton;

    form1 = createActionButtons(form, audioSetup_items,
        XtNumber(audioSetup_items));
    if (form1) XtVaSetValues(form1,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              button,
        XmNleftAttachment,         XmATTACH_FORM,
        XmNrightAttachment,        XmATTACH_FORM,
        NULL);

    XtManageChild(form);
    XtRealizeWidget(audioSetupDialogShell);
}
示例#6
0
void MenuTalker::createBuffer() {
	clearActionButtons();

	if (static_cast<unsigned>(dialog_node) >= npc->dialog.size() || event_cursor >= npc->dialog[dialog_node].size())
		return;

	createActionButtons(dialog_node);

	int button_height = 0;
	if (!actions.empty()) {
		button_height = static_cast<int>(actions.size()) * actions[0].btn->pos.h;
	}

	std::string line;

	// speaker name
	int etype = npc->dialog[dialog_node][event_cursor].type;
	std::string who;

	if (etype == EventComponent::NPC_DIALOG_THEM) {
		who = npc->name;
	}
	else if (etype == EventComponent::NPC_DIALOG_YOU) {
		who = hero_name;
	}

	label_name->setText(who);
	label_name->setFont(font_who);


	line = Utils::substituteVarsInString(npc->dialog[dialog_node][event_cursor].s, pc);

	// render dialog text to the scrollbox buffer
	Point line_size = font->calc_size(line,textbox->pos.w-(text_offset.x*2));
	textbox->resize(textbox->pos.w, line_size.y + button_height);
	font->setFont(font_dialog);
	font->render(
		line,
		text_offset.x,
		0,
		FontEngine::JUSTIFY_LEFT,
		textbox->contents->getGraphics(),
		text_pos.w - text_offset.x*2,
		font->getColor(FontEngine::COLOR_MENU_NORMAL)
	);

	for (size_t i = 0; i < actions.size(); ++i) {
		actions[i].btn->pos.x = text_offset.x;
		actions[i].btn->pos.y = line_size.y + (static_cast<int>(i) * actions[i].btn->pos.h);
		actions[i].btn->refresh();
	}

	align();

	if (!actions.empty()) {
		advanceButton->enabled = false;
		closeButton->enabled = false;
	}
	else if (!npc->dialog[dialog_node].empty() && event_cursor < npc->dialog[dialog_node].size()-1 && npc->dialog[dialog_node][event_cursor+1].type != EventComponent::NONE) {
		advanceButton->enabled = true;
		closeButton->enabled = false;
	}
	else {
		advanceButton->enabled = false;
		closeButton->enabled = true;
	}

	setupTabList();
}
示例#7
0
/******************************************************
  audioSetupCreateDialog
******************************************************/
static void audioSetupCreateDialog(Widget menuButton)
{
    Widget audioSetupDialogShell;
    Widget form,form1;
    Widget filename;
    Widget button;
    Widget toggleButton;
    Widget frame, rowcol;
    Widget label;
    Pixel textBackground;
    XmString string;
    static ActionAreaItem audioSetup_items[] = {
         { "Dismiss", audioSetupDismissCallback, NULL} };
    ALINK      *area;

    textBackground = bg_pixel[3];

    XtVaGetValues(menuButton, XmNuserData, &area, NULL);

    if (audioSetup.audioSetupDialog){
        if (XtIsManaged(audioSetup.audioSetupDialog)) return;
        else XtManageChild(audioSetup.audioSetupDialog);
    }

    audioSetupDialogShell = XtVaCreatePopupShell("ALH Audio Setup",
        transientShellWidgetClass, area->toplevel, NULL, 0);

    /* Modify the window manager menu "close" callback */
    {
        Atom         WM_DELETE_WINDOW;
        XtVaSetValues(audioSetupDialogShell,
            XmNdeleteResponse, XmDO_NOTHING, NULL);
        WM_DELETE_WINDOW = XmInternAtom(XtDisplay(audioSetupDialogShell),
            "WM_DELETE_WINDOW", False);
        XmAddWMProtocolCallback(audioSetupDialogShell,WM_DELETE_WINDOW,
            (XtCallbackProc)audioSetupDismissCallback, (XtPointer)menuButton);
    }

    form = XtVaCreateWidget("audioSetupDialog",
        xmFormWidgetClass, audioSetupDialogShell,
        NULL);
    audioSetup.audioSetupDialog = form;

    string = XmStringCreateSimple("Audio Beep Output");
    label = XtVaCreateManagedWidget("audioOutputLabel",
        xmLabelGadgetClass,        form,
        XmNlabelString,            string,
        XmNtopAttachment,          XmATTACH_FORM,
        XmNtopWidget,              form,
        NULL);
    XmStringFree(string);

    frame = XtVaCreateWidget("frame",
        xmFrameWidgetClass, form,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              label,
        XmNleftAttachment,         XmATTACH_FORM,
        XmNrightAttachment,        XmATTACH_FORM,
        NULL);

    rowcol = XtVaCreateWidget("rowcol",
        xmRowColumnWidgetClass, frame,
        XmNspacing,         0,
        XmNmarginWidth,     10,
        XmNmarginHeight,    10,
        XmNradioBehavior,    TRUE,
        XmNbackground,      textBackground,
        NULL);

    toggleButton = XtVaCreateManagedWidget("Internal speaker",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        NULL);
    XmToggleButtonSetState(toggleButton,
        (Boolean)((audioSetup.port==AUDIO_INTERNAL_SPEAKER)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupOutputChangeCallback, (XtPointer)AUDIO_INTERNAL_SPEAKER);

    toggleButton = XtVaCreateManagedWidget("Default digital audio output",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        NULL);
    XmToggleButtonSetState(toggleButton,
        (Boolean)((audioSetup.port==AUDIO_DEFAULT_OUTPUT)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupOutputChangeCallback, (XtPointer)AUDIO_DEFAULT_OUTPUT);

    XtManageChild(rowcol);
    XtManageChild(frame);

    string = XmStringCreateSimple("Audio Beep Source");
    label = XtVaCreateManagedWidget("audioBeepSourceLabel",
        xmLabelGadgetClass,        form,
        XmNlabelString,            string,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              frame,
        NULL);
    XmStringFree(string);

    frame = XtVaCreateWidget("frame",
        xmFrameWidgetClass, form,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              label,
        XmNleftAttachment,         XmATTACH_FORM,
        XmNrightAttachment,        XmATTACH_FORM,
        NULL);

    audioSetup.beepSourceFrameWidget = frame;
    if (audioSetup.port==AUDIO_INTERNAL_SPEAKER) XtSetSensitive(frame, FALSE);
    else XtSetSensitive(frame, TRUE);

    rowcol = XtVaCreateWidget("rowcol",
        xmRowColumnWidgetClass, frame,
        XmNspacing,          0,
        XmNmarginWidth,      10,
        XmNmarginHeight,     10,
        XmNradioBehavior,    TRUE,
        XmNbackground,     textBackground,
        NULL);

    toggleButton = XtVaCreateManagedWidget("alh internal beep",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        /*1XmNalignment,XmALIGNMENT_CENTER*/
        NULL);
    XmToggleButtonSetState(toggleButton,
        (Boolean)((audioSetup.beepSource==BEEP_AUDIO_SOURCE_INTERNAL)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupBeepSourceChangeCallback,
        (XtPointer)BEEP_AUDIO_SOURCE_INTERNAL);

    if ( audioSetup.beep==0 ) {
        audioSetup.beep = beep;
        audioSetup.beepLength = beepLength;
    }

    toggleButton = XtVaCreateManagedWidget("WAV (.wav) file",
        xmToggleButtonGadgetClass, rowcol,
        XmNmarginHeight,     0,
        XmNbackground,      textBackground,
        NULL);
    XmToggleButtonSetState(toggleButton,
        (Boolean)((audioSetup.beepSource==BEEP_AUDIO_SOURCE_FILE)?TRUE:FALSE),FALSE);
    XtAddCallback(toggleButton, XmNvalueChangedCallback,
        audioSetupBeepSourceChangeCallback, (XtPointer)BEEP_AUDIO_SOURCE_FILE);

    XtManageChild(rowcol);
    XtManageChild(frame);

    string = XmStringCreateSimple("WAVE (.wav) filename");
    label = XtVaCreateManagedWidget("audioFilenamelabel",
        xmLabelGadgetClass,        form,
        XmNlabelString,            string,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              frame,
        NULL);
    XmStringFree(string);

    button = XtVaCreateManagedWidget("Browse",
        xmPushButtonWidgetClass, form,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              frame,
        XmNleftAttachment,         XmATTACH_WIDGET,
        XmNleftWidget,             label,
        XmNrightAttachment,        XmATTACH_FORM,
        XmNshadowThickness,        1,
        NULL);

    filename = XtVaCreateManagedWidget("filename",
        xmTextFieldWidgetClass, form,
        XmNbackground,      textBackground,
        XmNtopAttachment,   XmATTACH_WIDGET,
        XmNtopWidget,       button,
        XmNleftAttachment,  XmATTACH_FORM,
        XmNrightAttachment, XmATTACH_FORM,
        NULL);

    XtAddCallback(button, XmNactivateCallback,
        audioSetupFilenameBrowseCallback, filename);

    XmTextFieldSetString(filename,audioSetup.beepFileName);

    XtAddCallback(filename, XmNactivateCallback,
        audioSetupFilenameChangeCallback, NULL);

    string = XmStringCreateSimple("Test Beep");
    label = XtVaCreateManagedWidget("audioTestlabel",
        xmLabelGadgetClass,        form,
        XmNlabelString,            string,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              filename,
        XmNleftAttachment,         XmATTACH_FORM,
        NULL);
    XmStringFree(string);

    button = XtVaCreateManagedWidget("Beep",
        xmPushButtonWidgetClass, form,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              label,
        XmNleftAttachment,         XmATTACH_FORM,
        XmNrightAttachment,        XmATTACH_FORM,
        XmNshadowThickness,        2,
        NULL);
    XtAddCallback(button, XmNactivateCallback,
        audioSetupTestBeepCallback, NULL);

    /* Set the client data "Dismiss" button's callbacks. */
    audioSetup_items[0].data = (XtPointer)menuButton;

    form1 = createActionButtons(form, audioSetup_items,
        XtNumber(audioSetup_items));
    if (form1) XtVaSetValues(form1,
        XmNtopAttachment,          XmATTACH_WIDGET,
        XmNtopWidget,              button,
        XmNleftAttachment,         XmATTACH_FORM,
        XmNrightAttachment,        XmATTACH_FORM,
        NULL);

    XtManageChild(form);
    XtRealizeWidget(audioSetupDialogShell);
}