static void QuitConfirm(void *unused1, void *unused2) { txt_window_t *window; txt_label_t *label; txt_button_t *yes_button; txt_button_t *no_button; window = TXT_NewWindow(NULL); TXT_AddWidgets(window, label = TXT_NewLabel("Exiting setup.\nSave settings?"), TXT_NewStrut(24, 0), yes_button = TXT_NewButton2(" Yes ", DoQuit, DoQuit), no_button = TXT_NewButton2(" No ", DoQuit, NULL), NULL); TXT_SetWidgetAlign(label, TXT_HORIZ_CENTER); TXT_SetWidgetAlign(yes_button, TXT_HORIZ_CENTER); TXT_SetWidgetAlign(no_button, TXT_HORIZ_CENTER); // Only an "abort" button in the middle. TXT_SetWindowAction(window, TXT_HORIZ_LEFT, NULL); TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TXT_NewWindowAbortAction(window)); TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, NULL); }
static void OpenPromptWindow(txt_key_input_t *key_input) { txt_window_t *window; txt_label_t *label; // Silently update when the shift button is held down. key_input->check_conflicts = !TXT_GetModifierState(TXT_MOD_SHIFT); window = TXT_NewWindow(NULL); TXT_SetWindowAction(window, TXT_HORIZ_LEFT, NULL); TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TXT_NewWindowAbortAction(window)); TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, NULL); label = TXT_NewLabel("Press the new key..."); TXT_AddWidget(window, label); TXT_SetWidgetAlign(label, TXT_HORIZ_CENTER); TXT_SetKeyListener(window, KeyPressCallback, key_input); // Disable key mappings while we prompt for the key press TXT_EnableKeyMapping(0); // Grab input while reading the key. On Windows Mobile // handheld devices, the hardware keypresses are only // detected when input is grabbed. SDL_WM_GrabInput(SDL_GRAB_ON); TXT_SignalConnect(window, "closed", ReleaseGrab, NULL); }
void TXT_ConfigureJoystickAxis(txt_joystick_axis_t *joystick_axis, int using_button, txt_joystick_axis_callback_t callback) { // Open the joystick first. if (SDL_Init(SDL_INIT_JOYSTICK) < 0) { return; } joystick_axis->joystick = SDL_JoystickOpen(joystick_index); if (joystick_axis->joystick == NULL) { TXT_MessageBox(NULL, "Please configure a controller first!"); return; } SDL_JoystickEventState(SDL_ENABLE); // Build the prompt window. joystick_axis->config_window = TXT_NewWindow("Gamepad/Joystick calibration"); TXT_AddWidgets(joystick_axis->config_window, TXT_NewStrut(0, 1), joystick_axis->config_label = TXT_NewLabel(""), TXT_NewStrut(0, 1), NULL); TXT_SetWindowAction(joystick_axis->config_window, TXT_HORIZ_LEFT, NULL); TXT_SetWindowAction(joystick_axis->config_window, TXT_HORIZ_CENTER, TXT_NewWindowAbortAction(joystick_axis->config_window)); TXT_SetWindowAction(joystick_axis->config_window, TXT_HORIZ_RIGHT, NULL); TXT_SetWidgetAlign(joystick_axis->config_window, TXT_HORIZ_CENTER); if (using_button >= 0) { joystick_axis->config_stage = CONFIG_STAGE1; joystick_axis->config_button = using_button; IdentifyBadAxes(joystick_axis); } else { joystick_axis->config_stage = CONFIG_CENTER; } SetCalibrationLabel(joystick_axis); // Close the joystick and shut down joystick subsystem when the window // is closed. TXT_SignalConnect(joystick_axis->config_window, "closed", CalibrateWindowClosed, joystick_axis); TXT_SDL_SetEventCallback(EventCallback, joystick_axis); // When successfully calibrated, invoke this callback: joystick_axis->callback = callback; }
static void VKBCreateWindow(txt_inputbox_t *inputbox, int charset_index) { int i; txt_table_t *keyboard; txt_table_t *softact; txt_table_t *softact_okcancel; txt_table_t *organizer; txt_window_action_t *cancel, *caps; //Create Widgets vkb_window = TXT_NewWindow(NULL); vkb_inputbox = inputbox; vkb_charset_index = charset_index; vkb_label = TXT_NewLabel(""); keyboard = TXT_NewTable(19); organizer = TXT_NewTable(3); softact = TXT_NewTable(1); //Populate Window TXT_AddWidget(vkb_window, vkb_label); TXT_AddWidget(vkb_window, TXT_NewSeparator(NULL)); TXT_AddWidget(vkb_window, organizer); TXT_AddWidget(organizer, keyboard); TXT_AddWidget(organizer, TXT_NewStrut(1, 0)); TXT_AddWidget(organizer, softact); //Create Actions cancel = TXT_NewWindowAction(KEY_BBUTTON, "Revert"); caps = TXT_NewWindowAction(KEY_YBUTTON, "Caps"); TXT_SignalConnect(cancel, "pressed", VKBCloseWindow, 0); TXT_SignalConnect(caps, "pressed", VKBCycleCharsets, 0); TXT_AddWidget(softact, TXT_NewButton2("Backspace", VKBBackspace, NULL)); TXT_AddWidget(softact, TXT_NewButton2("Caps-Lock", VKBCycleCharsets, NULL)); TXT_AddWidget(softact, TXT_NewButton2("Revert", VKBCloseWindow, 0)); TXT_AddWidget(softact, TXT_NewButton2("Accept", VKBCloseWindow, 1)); //Create buttons and populate keyboard table for (i=0; vkb_charset[vkb_charset_index][i] != '\0'; i++) { char button[] = {vkb_charset[vkb_charset_index][i], '\0'}; TXT_AddWidget(keyboard, TXT_NewButton2(button, VKBAddCharacter, button[0])); //, VKBAddCharacter)); //Don't add padding on the last of row if ((i+1) % 10) { TXT_AddWidget(keyboard, TXT_NewStrut(1, 0)); } } //Format & Update things TXT_SetWindowAction(vkb_window, TXT_HORIZ_LEFT, cancel); TXT_SetWindowAction(vkb_window, TXT_HORIZ_RIGHT, caps); TXT_SetWidgetAlign(keyboard, TXT_HORIZ_CENTER); TXT_SetBGColor(vkb_label, TXT_COLOR_BLACK); TXT_LayoutWindow(vkb_window); VKBUpdateLabel(); inputbox->editing = 1; }
static void TestCallback(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(data)) { execute_context_t *exec; char *main_cfg; char *extra_cfg; txt_window_t *testwindow; txt_label_t *label; testwindow = TXT_NewWindow("Starting Doom"); label = TXT_NewLabel("Starting Doom to test the\n" "settings. Please wait."); TXT_SetWidgetAlign(label, TXT_HORIZ_CENTER); TXT_AddWidget(testwindow, label); TXT_DrawDesktop(); // Save temporary configuration files with the current configuration main_cfg = TempFile("tmp.cfg"); extra_cfg = TempFile("extratmp.cfg"); M_SaveMainDefaults(main_cfg); M_SaveExtraDefaults(extra_cfg); // Run with the -testcontrols parameter exec = NewExecuteContext(); AddCmdLineParameter(exec, "-testcontrols"); AddCmdLineParameter(exec, "-config \"%s\"", main_cfg); AddCmdLineParameter(exec, "-extraconfig \"%s\"", extra_cfg); ExecuteDoom(exec); TXT_CloseWindow(testwindow); // Delete the temporary config files remove(main_cfg); remove(extra_cfg); free(main_cfg); free(extra_cfg); }
static void CalibrateJoystick(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(unused)) { calibrate_stage = CALIBRATE_CENTER; // Try to open all available joysticks. If none are opened successfully, // bomb out with an error. if (!OpenAllJoysticks()) { NoJoystick(); return; } calibration_window = TXT_NewWindow("Gamepad/Joystick calibration"); TXT_AddWidgets(calibration_window, TXT_NewLabel("Please follow the following instructions\n" "in order to calibrate your controller."), TXT_NewStrut(0, 1), calibration_label = TXT_NewLabel("zzz"), TXT_NewStrut(0, 1), NULL); TXT_SetWindowAction(calibration_window, TXT_HORIZ_LEFT, NULL); TXT_SetWindowAction(calibration_window, TXT_HORIZ_CENTER, TXT_NewWindowAbortAction(calibration_window)); TXT_SetWindowAction(calibration_window, TXT_HORIZ_RIGHT, NULL); TXT_SetWidgetAlign(calibration_label, TXT_HORIZ_CENTER); TXT_SDL_SetEventCallback(CalibrationEventCallback, NULL); TXT_SignalConnect(calibration_window, "closed", CalibrateWindowClosed, NULL); // Start calibration joystick_index = -1; calibrate_stage = CALIBRATE_CENTER; SetCalibrationLabel(); }
static void OpenPromptWindow(txt_joystick_input_t *joystick_input) { txt_window_t *window; txt_label_t *label; SDL_Joystick *joystick; if (SDL_Init(SDL_INIT_JOYSTICK) < 0) { return; } // Check the current joystick is valid joystick = SDL_JoystickOpen(joystick_index); if (joystick == NULL) { OpenErrorWindow(); return; } // Open the prompt window window = TXT_NewWindow(NULL); TXT_SetWindowAction(window, TXT_HORIZ_LEFT, NULL); TXT_SetWindowAction(window, TXT_HORIZ_CENTER, TXT_NewWindowAbortAction(window)); TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, NULL); label = TXT_NewLabel("Press the new joystick button..."); TXT_AddWidget(window, label); TXT_SetWidgetAlign(label, TXT_HORIZ_CENTER); TXT_SDL_SetEventCallback(EventCallback, joystick_input); TXT_SignalConnect(window, "closed", PromptWindowClosed, joystick); joystick_input->prompt_window = window; SDL_JoystickEventState(SDL_ENABLE); }
void BuildGUI() { txt_window_t *window; txt_table_t *table; window = TXT_NewWindow("Calculator"); input_box = TXT_NewLabel("asdf"); TXT_SetBGColor(input_box, TXT_COLOR_BLACK); TXT_AddWidget(window, input_box); TXT_AddWidget(window, TXT_NewSeparator(NULL)); TXT_AddWidget(window, TXT_NewStrut(0, 1)); table = TXT_NewTable(4); TXT_AddWidget(window, table); TXT_SetWidgetAlign(table, TXT_HORIZ_CENTER); AddNumberButton(table, 7); AddNumberButton(table, 8); AddNumberButton(table, 9); AddOperatorButton(table, "*", OP_MULT); AddNumberButton(table, 4); AddNumberButton(table, 5); AddNumberButton(table, 6); AddOperatorButton(table, "-", OP_MINUS); AddNumberButton(table, 1); AddNumberButton(table, 2); AddNumberButton(table, 3); AddOperatorButton(table, "+", OP_PLUS); AddNumberButton(table, 0); TXT_AddWidget(table, NULL); TXT_AddWidget(table, TXT_NewButton2(" = ", Calculate, NULL)); AddOperatorButton(table, "/", OP_DIV); TXT_AddWidget(window, TXT_NewStrut(0, 1)); UpdateInputBox(); }
void SetupWindow(void) { txt_window_t *window; txt_table_t *table; txt_table_t *rightpane; txt_checkbox_t *cheesy_checkbox; txt_window_action_t *pwn; txt_label_t *toplabel; char buf[100]; int i; window = TXT_NewWindow("Window test"); TXT_AddWidget(window, TXT_NewSeparator("Main section")); table = TXT_NewTable(3); toplabel = TXT_NewLabel("This is a multiline label.\n" "A single label object contains \n" "all three of these lines.\n"); TXT_AddWidget(window, toplabel); TXT_SetWidgetAlign(toplabel, TXT_HORIZ_CENTER); //TXT_AddWidget(window, TXT_NewScrollPane(15, 4, table)); TXT_AddWidget(window, table); for (i=0; i<5; ++i) { sprintf(buf, "Option %i in a table:", i + 1); TXT_AddWidget(table, TXT_NewLabel(buf)); sprintf(buf, " Button %i-1 ", i + 1); TXT_AddWidget(table, TXT_NewButton(buf)); sprintf(buf, " Button %i-2 ", i + 1); TXT_AddWidget(table, TXT_NewButton(buf)); } TXT_AddWidget(window, TXT_NewStrut(0, 1)); value_label = TXT_NewLabel(""); TXT_AddWidget(window, value_label); table = TXT_NewTable(2); TXT_AddWidget(window, table); TXT_SetWidgetAlign(table, TXT_HORIZ_CENTER); cheesy_checkbox = TXT_NewCheckBox("Cheesy", &cheesy); TXT_AddWidget(table, cheesy_checkbox); TXT_SignalConnect(cheesy_checkbox, "changed", UpdateLabel, NULL); rightpane = TXT_NewTable(1); TXT_AddWidget(table, rightpane); for (i=0; i<3; ++i) { txt_radiobutton_t *rbut; rbut = TXT_NewRadioButton(radio_values[i], &radiobutton_value, i); TXT_AddWidget(rightpane, rbut); TXT_SignalConnect(rbut, "selected", UpdateLabel, NULL); } UpdateLabel(NULL, NULL); TXT_AddWidget(window, TXT_NewButton2("Close Window", CloseWindow, NULL)); pwn = TXT_NewWindowAction(KEY_F1, "PWN!"); TXT_SetWindowAction(window, TXT_HORIZ_CENTER, pwn); TXT_SignalConnect(pwn, "pressed", PwnBox, NULL); firstwin = window; }