static void init_printer_dialog(unsigned int num, HWND hwnd) { HWND printer_hwnd; int i, res_value, res_value_loop; char printer_name[30]; const char *res_string; int current = 0; int xmax; int xpos; int size; const int *ui_printer = #ifdef HAVE_OPENCBM (opencbmlib_is_available()) ? ui_printer_opencbm : #endif ui_printer_normal; /* translate all dialog items */ uilib_localize_dialog(hwnd, printer_dialog_trans); if (num != 0) { /* translate the iec dialog item(s) */ uilib_localize_dialog(hwnd, printer_iec_dialog_trans); } /* adjust the size of the elements in the left group */ uilib_adjust_group_width(hwnd, printer_left_group); /* get the max x of the bottom right group */ uilib_get_group_max_x(hwnd, printer_bottom_right_group, &xmax); /* get the size of one of the elements of the bottom right group */ uilib_get_element_size(hwnd, IDC_PRINTER_OUTPUT_FILE3_NAME, &size); /* get the max x of the left group */ uilib_get_group_max_x(hwnd, printer_left_group, &xpos); /* move the top right group to the correct position */ uilib_move_group(hwnd, printer_top_right_group, xpos + 10); /* move the bottom right group to the correct position */ uilib_move_group(hwnd, printer_bottom_right_group, xpos + 10); /* get the max x of the bottom right group */ uilib_get_group_max_x(hwnd, printer_bottom_right_group, &xpos); /* set the size of the bottom right group */ uilib_set_group_width(hwnd, printer_bottom_right_group, size + xpos - xmax); /* get the max x of the printer emulation drop down element */ uilib_get_element_max_x(hwnd, IDC_PRINTER_TYPE, &xpos); /* adjust the size of the elements in formfeed group */ uilib_adjust_group_width(hwnd, formfeed_group); /* move the send formfeed button */ uilib_move_element(hwnd, IDC_PRINTER_FORMFEED, xpos + 10); if (num == 0) { sprintf(printer_name, "PrinterUserport"); } else { sprintf(printer_name, "Printer%d", num); } resources_get_int(printer_name, &res_value); printer_hwnd = GetDlgItem(hwnd, IDC_PRINTER_TYPE); for (res_value_loop = 0; ui_printer[res_value_loop]; res_value_loop++) { SendMessage(printer_hwnd, CB_ADDSTRING, 0, (LPARAM)translate_text(ui_printer[res_value_loop])); } SendMessage(printer_hwnd, CB_SETCURSEL, (WPARAM)res_value, 0); resources_get_string_sprintf("%sDriver", &res_string, printer_name); printer_hwnd = GetDlgItem(hwnd, IDC_PRINTER_DRIVER); if (num == 6) { for (res_value_loop = 0; ui_plotter_driver[res_value_loop]; res_value_loop++) { SendMessage(printer_hwnd, CB_ADDSTRING, 0, (LPARAM)ui_plotter_driver[res_value_loop]); if (!strcmp(ui_plotter_driver_1520[res_value_loop], res_string)) { current = res_value_loop; } } } else { if (num == 0) { for (res_value_loop = 0; ui_userprinter_driver[res_value_loop]; res_value_loop++) { SendMessage(printer_hwnd, CB_ADDSTRING, 0, (LPARAM)ui_userprinter_driver[res_value_loop]); if (!strcmp(ui_userprinter_driver_ascii[res_value_loop], res_string)) { current = res_value_loop; } } } else { for (res_value_loop = 0; ui_printer_driver[res_value_loop]; res_value_loop++) { SendMessage(printer_hwnd, CB_ADDSTRING, 0, (LPARAM)ui_printer_driver[res_value_loop]); if (!strcmp(ui_printer_driver_ascii[res_value_loop], res_string)) { current = res_value_loop; } } } } SendMessage(printer_hwnd, CB_SETCURSEL, (WPARAM)current, 0); resources_get_string_sprintf("%sOutput", &res_string, printer_name); printer_hwnd = GetDlgItem(hwnd, IDC_PRINTER_OUTPUT); for (res_value_loop = 0; ui_printer_output[res_value_loop]; res_value_loop++) { SendMessage(printer_hwnd, CB_ADDSTRING, 0, (LPARAM)ui_printer_output[res_value_loop]); if (!strcmp(ui_printer_output_ascii[res_value_loop], res_string)) { current = res_value_loop; } } SendMessage(printer_hwnd, CB_SETCURSEL, (WPARAM)current, 0); resources_get_int_sprintf("%sTextDevice", &res_value, printer_name); printer_hwnd = GetDlgItem(hwnd, IDC_PRINTER_TEXTOUT); for (res_value_loop = 0; ui_printer_text_device[res_value_loop]; res_value_loop++) { SendMessage(printer_hwnd, CB_ADDSTRING, 0, (LPARAM)ui_printer_text_device[res_value_loop]); } SendMessage(printer_hwnd, CB_SETCURSEL, (WPARAM)res_value, 0); if (num > 0 && (iec_available_busses() & IEC_BUS_IEC)) { resources_get_int_sprintf("IECDevice%d", &res_value, num); CheckDlgButton(hwnd, IDC_PRINTER_USEIECDEVICE, res_value ? BST_CHECKED : BST_UNCHECKED); } else { ShowWindow(GetDlgItem(hwnd, IDC_PRINTER_USEIECDEVICE), FALSE); CheckDlgButton(hwnd, IDC_PRINTER_USEIECDEVICE, BST_UNCHECKED); } for (i = 0; i < 3; i++) { resources_get_string_sprintf("PrinterTextDevice%d", &res_string, i + 1); if (res_string) { strncpy(printertextdevice[i], res_string, MAX_PATH); } } enable_printer_controls(num, hwnd); }
static void init_resources_dialog(HWND hwnd, unsigned int type) { unsigned int n = 0; int xpos1, xpos2; int size; RECT rect; int idc; int i; HWND element; if (type == UIROM_TYPE_MAIN) { /* translate all dialog items */ uilib_localize_dialog(hwnd, main_res_trans); idc = IDC_COMPUTER_RESOURCES; } else if (type == UIROM_TYPE_DRIVE) { /* translate all dialog items */ uilib_localize_dialog(hwnd, drive_res_trans); /* translate generic items */ for (i = 0; generic_res_trans[i].text != NULL; i++) { element = GetDlgItem(hwnd, generic_res_trans[i].idm); SetWindowText(element, generic_res_trans[i].text); } idc = IDC_DRIVE_RESOURCES; } /* get the max x of the group element */ uilib_get_element_max_x(hwnd, idc, &xpos1); /* get the size of the group element */ uilib_get_element_size(hwnd, idc, &size); /* adjust the size of the group element */ uilib_adjust_element_width(hwnd, idc); /* get the max x of the group element */ uilib_get_element_max_x(hwnd, idc, &xpos2); if (xpos2 < xpos1) { /* restore the size of the group element */ uilib_set_element_width(hwnd, idc, size); } else { /* resize the dialog window */ GetWindowRect(hwnd, &rect); MoveWindow(hwnd, rect.left, rect.top, xpos2 + 10, rect.bottom - rect.top, TRUE); /* recenter the buttons in the newly resized dialog window */ uilib_center_buttons(hwnd, move_buttons_group, 0); } while (settings[n].realname != NULL) { if (settings[n].type == type) { int enable; resources_get_int_sprintf("Romset%s", &enable, settings[n].resname); CheckDlgButton(hwnd, settings[n].idc_resource, enable ? BST_CHECKED : BST_UNCHECKED); } n++; } }
static void init_fullscreen_dialog(HWND hwnd) { HWND setting_hwnd; DirectDrawDeviceList *dev; ValueList *value; int xpos; int xstart; int xend; int distance; int size; double fval; TCHAR newval[64]; video_canvas_t *canvas; uilib_localize_dialog_param *fullscreen_dialog_trans = (video_dx9_enabled()) ? fullscreen_dialog_dx9_trans : fullscreen_dialog_ddraw_trans; uilib_dialog_group *fullscreen_left_group = (video_dx9_enabled()) ? fullscreen_left_dx9_group : fullscreen_left_ddraw_group; uilib_dialog_group *fullscreen_right_group = (video_dx9_enabled()) ? fullscreen_right_dx9_group : fullscreen_right_ddraw_group; canvas = video_canvas_for_hwnd(GetParent(GetParent(hwnd))); fullscreen_getmodes(); /* translate all dialog items */ uilib_localize_dialog(hwnd, fullscreen_dialog_trans); /* adjust the size of the elements in the left group */ uilib_adjust_group_width(hwnd, fullscreen_left_group); /* adjust the size of the elements in the rest group */ uilib_adjust_group_width(hwnd, fullscreen_rest_group); /* get the max x of the right group */ uilib_get_group_max_x(hwnd, fullscreen_right_group, &xend); /* get the min x of the right group */ uilib_get_group_min_x(hwnd, fullscreen_right_group, &xstart); /* get the max x of the left group */ uilib_get_group_max_x(hwnd, fullscreen_left_group, &xpos); if (xpos + 10 > xstart) { /* set the position of the right group */ uilib_move_group(hwnd, fullscreen_right_group, xpos + 10); /* get the max x of the right group */ uilib_get_group_max_x(hwnd, fullscreen_right_group, &xpos); /* calculate the distance between the old and new max x of the right group */ distance = xpos - xend; /* get the size of the driver element */ uilib_get_element_size(hwnd, IDC_FULLSCREEN_DEVICE, &size); /* set the size of the driver element */ uilib_set_element_width(hwnd, IDC_FULLSCREEN_DEVICE, size + distance); } validate_mode(&fullscreen_device, &fullscreen_width, &fullscreen_height, &fullscreen_bitdepth, &fullscreen_refreshrate); setting_hwnd = GetDlgItem(hwnd, IDC_FULLSCREEN_DEVICE); SendMessage(setting_hwnd, CB_RESETCONTENT, 0, 0); dev = devices; while (dev != NULL) { SendMessage(setting_hwnd, CB_ADDSTRING, 0, (LPARAM)dev->desc); dev = dev->next; } SendMessage(setting_hwnd, CB_SETCURSEL, (WPARAM)fullscreen_device, 0); get_bitdepthlist(fullscreen_device); setting_hwnd = GetDlgItem(hwnd, IDC_FULLSCREEN_BITDEPTH); SendMessage(setting_hwnd, CB_RESETCONTENT, 0, 0); value = bitdepthlist; while (value != NULL) { SendMessage(setting_hwnd, CB_ADDSTRING, 0, (LPARAM)value->text); value = value->next; } SendMessage(setting_hwnd, CB_SETCURSEL, (WPARAM)GetIndexFromList(bitdepthlist, fullscreen_bitdepth), 0); get_resolutionlist(fullscreen_device, fullscreen_bitdepth); setting_hwnd = GetDlgItem(hwnd, IDC_FULLSCREEN_RESOLUTION); SendMessage(setting_hwnd, CB_RESETCONTENT, 0, 0); value = resolutionlist; while (value != NULL) { SendMessage(setting_hwnd, CB_ADDSTRING, 0, (LPARAM)value->text); value = value->next; } SendMessage(setting_hwnd, CB_SETCURSEL, (WPARAM)GetIndexFromList(resolutionlist, (fullscreen_width << 16) + fullscreen_height), 0); get_refreshratelist(fullscreen_device, fullscreen_bitdepth, fullscreen_width, fullscreen_height); setting_hwnd = GetDlgItem(hwnd, IDC_FULLSCREEN_REFRESHRATE); SendMessage(setting_hwnd, CB_RESETCONTENT, 0, 0); value = refresh_rates; while (value != NULL) { SendMessage(setting_hwnd, CB_ADDSTRING, 0, (LPARAM)value->text); value = value->next; } SendMessage(setting_hwnd, CB_SETCURSEL, (WPARAM)GetIndexFromList(refresh_rates, fullscreen_refreshrate), 0); EnableWindow(GetDlgItem(hwnd, IDC_TOGGLE_VIDEO_VBLANK_SYNC), !video_dx9_enabled()); CheckDlgButton(hwnd, IDC_TOGGLE_VIDEO_VBLANK_SYNC, vblank_sync ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd, IDC_TOGGLE_VIDEO_DX_PRIMARY, dx_primary ? BST_CHECKED : BST_UNCHECKED); EnableWindow(GetDlgItem(hwnd, IDC_TOGGLE_KEEP_ASPECT_RATIO), video_dx9_enabled()); if (video_dx9_enabled()) { CheckDlgButton(hwnd, IDC_TOGGLE_KEEP_ASPECT_RATIO, keep_aspect_ratio ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwnd, IDC_TOGGLE_TRUE_ASPECT_RATIO, true_aspect_ratio ? BST_CHECKED : BST_UNCHECKED); enable_aspect_ratio(hwnd); fval = ((double)aspect_ratio) / 1000.0; _stprintf(newval, TEXT("%.3f"), (float)fval); SetDlgItemText(hwnd, IDC_ASPECT_RATIO, newval); fval = canvas->geometry->pixel_aspect_ratio; _stprintf(newval, TEXT("%.3f"), (float)fval); SetDlgItemText(hwnd, IDC_GEOMETRY_ASPECT_RATIO, newval); } }