format file

This commit is contained in:
2025-08-30 20:22:58 +08:00
parent 1d6b3317b9
commit 5697ae8e8c

View File

@@ -19,15 +19,18 @@
#define PAD 8 #define PAD 8
void button_callback(Widget widget, XtPointer client_data, XtPointer call_data) { void button_callback(Widget widget, XtPointer client_data, XtPointer call_data)
{
puts("Button clicked!"); puts("Button clicked!");
} }
void quit_callback(Widget widget, XtPointer client_data, XtPointer call_data) { void quit_callback(Widget widget, XtPointer client_data, XtPointer call_data)
{
exit(0); exit(0);
} }
void dialog_callback(Widget widget, XtPointer client_data, XtPointer call_data) { void dialog_callback(Widget widget, XtPointer client_data, XtPointer call_data)
{
Widget parent = (Widget)client_data; Widget parent = (Widget)client_data;
XmString msg = XmStringCreateLocalized("Hello from a secondary dialog!"); XmString msg = XmStringCreateLocalized("Hello from a secondary dialog!");
Widget dialog = XmCreateMessageDialog(parent, "dialog", NULL, 0); Widget dialog = XmCreateMessageDialog(parent, "dialog", NULL, 0);
@@ -39,7 +42,8 @@ void dialog_callback(Widget widget, XtPointer client_data, XtPointer call_data)
XtManageChild(dialog); XtManageChild(dialog);
} }
int main(int argc, char *argv[]) { int main(int argc, char *argv[])
{
XtAppContext app; XtAppContext app;
Widget toplevel, mainwin, menubar, form; Widget toplevel, mainwin, menubar, form;
@@ -47,9 +51,12 @@ int main(int argc, char *argv[]) {
/* 获取 Display 指针并打印 */ /* 获取 Display 指针并打印 */
Display *dpy = XtDisplay(toplevel); Display *dpy = XtDisplay(toplevel);
if (dpy) { if (dpy)
{
printf("Connected to X server: %s\n", DisplayString(dpy)); printf("Connected to X server: %s\n", DisplayString(dpy));
} else { }
else
{
fprintf(stderr, "Failed to get Display* from toplevel widget.\n"); fprintf(stderr, "Failed to get Display* from toplevel widget.\n");
} }
@@ -77,65 +84,65 @@ int main(int argc, char *argv[]) {
/* 标签 */ /* 标签 */
Widget label = XtVaCreateManagedWidget("This is a label", Widget label = XtVaCreateManagedWidget("This is a label",
xmLabelWidgetClass, form, xmLabelWidgetClass, form,
XmNtopAttachment, XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM,
XmNtopOffset, PAD,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, PAD,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, PAD,
NULL);
/* 按钮 */
Widget button = XtVaCreateManagedWidget("Click Me",
xmPushButtonWidgetClass, form,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, label,
XmNtopOffset, PAD,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, PAD,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, PAD,
NULL);
XtAddCallback(button, XmNactivateCallback, button_callback, NULL);
/* 打开二级对话框的按钮 */
Widget dialogBtn = XtVaCreateManagedWidget("Show Dialog",
xmPushButtonWidgetClass, form,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, button,
XmNtopOffset, PAD,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, PAD,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, PAD,
NULL);
XtAddCallback(dialogBtn, XmNactivateCallback, dialog_callback, form);
/* 文本框 */
Widget text = XtVaCreateManagedWidget("text",
xmTextWidgetClass, form,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, dialogBtn,
XmNtopOffset, PAD, XmNtopOffset, PAD,
XmNleftAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, PAD, XmNleftOffset, PAD,
XmNrightAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, PAD, XmNrightOffset, PAD,
XmNcolumns, 20,
NULL); NULL);
/* 按钮 */
Widget button = XtVaCreateManagedWidget("Click Me",
xmPushButtonWidgetClass, form,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, label,
XmNtopOffset, PAD,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, PAD,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, PAD,
NULL);
XtAddCallback(button, XmNactivateCallback, button_callback, NULL);
/* 打开二级对话框的按钮 */
Widget dialogBtn = XtVaCreateManagedWidget("Show Dialog",
xmPushButtonWidgetClass, form,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, button,
XmNtopOffset, PAD,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, PAD,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, PAD,
NULL);
XtAddCallback(dialogBtn, XmNactivateCallback, dialog_callback, form);
/* 文本框 */
Widget text = XtVaCreateManagedWidget("text",
xmTextWidgetClass, form,
XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, dialogBtn,
XmNtopOffset, PAD,
XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, PAD,
XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, PAD,
XmNcolumns, 20,
NULL);
/* Toggle 按钮(复选框) */ /* Toggle 按钮(复选框) */
Widget toggle = XtVaCreateManagedWidget("Check me", Widget toggle = XtVaCreateManagedWidget("Check me",
xmToggleButtonWidgetClass, form, xmToggleButtonWidgetClass, form,
XmNtopAttachment, XmATTACH_WIDGET, XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, text, XmNtopWidget, text,
XmNtopOffset, PAD, XmNtopOffset, PAD,
XmNleftAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, PAD, XmNleftOffset, PAD,
XmNrightAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, PAD, XmNrightOffset, PAD,
NULL); NULL);
/* RadioBox单选按钮组 */ /* RadioBox单选按钮组 */
Widget radioBox = XmCreateRadioBox(form, "radioBox", NULL, 0); Widget radioBox = XmCreateRadioBox(form, "radioBox", NULL, 0);
@@ -175,25 +182,26 @@ int main(int argc, char *argv[]) {
items[4] = XmStringCreateLocalized("Item E"); items[4] = XmStringCreateLocalized("Item E");
items[5] = XmStringCreateLocalized("Item F"); items[5] = XmStringCreateLocalized("Item F");
XmListAddItems(list, items, 6, 1); XmListAddItems(list, items, 6, 1);
for (int i = 0; i < 6; ++i) XmStringFree(items[i]); for (int i = 0; i < 6; ++i)
XmStringFree(items[i]);
XtManageChild(list); XtManageChild(list);
/* 滑块 (模拟进度条) */ /* 滑块 (模拟进度条) */
Widget scale = XtVaCreateManagedWidget("scale", Widget scale = XtVaCreateManagedWidget("scale",
xmScaleWidgetClass, form, xmScaleWidgetClass, form,
XmNorientation, XmHORIZONTAL, XmNorientation, XmHORIZONTAL,
XmNminimum, 0, XmNminimum, 0,
XmNmaximum, 100, XmNmaximum, 100,
XmNvalue, 30, XmNvalue, 30,
XmNshowValue, True, XmNshowValue, True,
XmNtopAttachment, XmATTACH_WIDGET, XmNtopAttachment, XmATTACH_WIDGET,
XmNtopWidget, swList, XmNtopWidget, swList,
XmNtopOffset, PAD, XmNtopOffset, PAD,
XmNleftAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM,
XmNleftOffset, PAD, XmNleftOffset, PAD,
XmNrightAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM,
XmNrightOffset, PAD, XmNrightOffset, PAD,
NULL); NULL);
XtManageChild(form); XtManageChild(form);
XmMainWindowSetAreas(mainwin, menubar, NULL, NULL, NULL, form); XmMainWindowSetAreas(mainwin, menubar, NULL, NULL, NULL, form);
@@ -202,11 +210,15 @@ int main(int argc, char *argv[]) {
/* 自定义事件循环 */ /* 自定义事件循环 */
XEvent event; XEvent event;
while (1) { while (1)
if (XtAppPending(app)) { {
if (XtAppPending(app))
{
XtAppNextEvent(app, &event); XtAppNextEvent(app, &event);
XtDispatchEvent(&event); XtDispatchEvent(&event);
} else { }
else
{
/* 空闲时可以执行后台逻辑 */ /* 空闲时可以执行后台逻辑 */
printf("Idle...\n"); printf("Idle...\n");
usleep(500000); /* 0.5秒 */ usleep(500000); /* 0.5秒 */