Пример #1
0
/*
    amount is 2 or more
*/
static void io_source_msg_detach_all(WORD addr, int amount, io_source_list_t *start)
{
    io_source_detach_t *detach_list = lib_malloc(sizeof(io_source_detach_t) * amount);
    io_source_list_t *current = start;
    char *old_msg = NULL;
    char *new_msg = NULL;
    int found = 0;
    int i = 0;

    current = current->next;

    DBG(("IO: check %d sources for addr %04x\n", amount, addr));
    while (current) {
        /* DBG(("IO: check '%s'\n", current->device->name)); */
        if (current->device->io_source_valid && addr >= current->device->start_address && addr <= current->device->end_address && current->device->io_source_prio == 0) {
            /* found a conflict */
            detach_list[found].det_id = current->device->detach_id;
            detach_list[found].det_name = current->device->resource_name;
            detach_list[found].det_devname = current->device->name;
            detach_list[found].det_cartid = current->device->cart_id;
            DBG(("IO: found #%d: '%s'\n", found, current->device->name));

            /* first part of the message "read collision at x from" */
            if (found == 0) {
                old_msg = lib_stralloc(translate_text(IDGS_IO_READ_COLL_AT_X_FROM));
                new_msg = util_concat(old_msg, current->device->name, NULL);
                lib_free(old_msg);
            }
            if ((found != amount - 1) && (found != 0)) {
                old_msg = new_msg;
                new_msg = util_concat(old_msg, ", ", current->device->name, NULL);
                lib_free(old_msg);
            }
            if (found == amount - 1) {
                old_msg = new_msg;
                new_msg = util_concat(old_msg, translate_text(IDGS_AND), current->device->name, translate_text(IDGS_ALL_DEVICES_DETACHED), NULL);
                lib_free(old_msg);
            }
            found++;
            if (found == amount) {
                break;
            }
        }
        current = current->next;
    }

    if (found) {
        log_message(LOG_DEFAULT, new_msg, addr);
        ui_error(new_msg, addr);
        lib_free(new_msg);

        DBG(("IO: found %d items to detach\n", found));
        for (i = 0; i < found; i++) {
            DBG(("IO: detach #%d id:%d name: %s\n",i , detach_list[i].det_cartid, detach_list[i].det_devname));
            io_source_detach(&detach_list[i]);
        }
    }
    lib_free(detach_list);
}
Пример #2
0
static void event_playback_attach_image(void *data, unsigned int size)
{
    unsigned int unit, read_only;
    char *orig_filename, *filename = NULL;
    size_t file_len;

    unit = (unsigned int)((char*)data)[0];
    read_only = (unsigned int)((char*)data)[1];
    orig_filename = &((char*)data)[2];
    file_len  = size - strlen(orig_filename) - 3;

    if (file_len > 0) {
        FILE *fd;

        fd = archdep_mkstemp_fd(&filename, MODE_WRITE);

        if (fd == NULL) {
#ifdef HAS_TRANSLATION
            ui_error(translate_text(IDGS_CANNOT_CREATE_IMAGE), filename);
#else
            ui_error(_("Cannot create image file!"));
#endif
            goto error;
        }

        if (fwrite((char*)data + strlen(orig_filename) + 3, file_len, 1, fd) != 1) {
#ifdef HAS_TRANSLATION
            ui_error(translate_text(IDGS_CANNOT_WRITE_IMAGE_FILE_S), filename);
#else
            ui_error(_("Cannot write image file %s"), filename);
#endif
            goto error;
        }

        fclose(fd);
        event_image_append(orig_filename, &filename, 1);
    } else {
        if (event_image_append(orig_filename, &filename, 0) != 0) {
#ifdef HAS_TRANSLATION
            ui_error(translate_text(IDGS_CANNOT_FIND_MAPPED_NAME_S), orig_filename);
#else
            ui_error(_("Cannot find mapped name for %s"), orig_filename);
#endif
            return;
        }
    }

    /* now filename holds the name to attach    */
    /* FIXME: read_only isn't handled for tape  */
    if (unit == 1) {
        tape_image_event_playback(unit, filename);
    } else {
        resources_set_int_sprintf("AttachDevice%dReadonly", read_only, unit);
        file_system_event_playback(unit, filename);
    }
    
error:
    lib_free(filename);
}
Пример #3
0
static APTR build_gui(void)
{
    return GroupObject,
             CYCLE(ui_to_from[0].object, translate_text(IDS_VALUE_FIRST_BYTE), ui_ram_1st_byte)
             CYCLE(ui_to_from[1].object, translate_text(IDS_LENGTH_CONSTANT_VALUES), ui_ram_constant_val)
             CYCLE(ui_to_from[2].object, translate_text(IDS_LENGTH_CONSTANT_PATTERN), ui_ram_constant_pat)
           End;
}
Пример #4
0
static APTR build_gui_fire_plus4(void)
{
    return GroupObject,
             CYCLE(ui_to_from_fire[0].object, translate_text(IDS_JOY_1_FIRE), ui_joystick_fire)
             CYCLE(ui_to_from_fire[1].object, translate_text(IDS_JOY_2_FIRE), ui_joystick_fire)
             CYCLE(ui_to_from_fire[2].object, translate_text(IDS_SIDCART_JOY_FIRE), ui_joystick_fire)
           End;
}
Пример #5
0
static APTR build_gui_fire_vic20(void)
{
    return GroupObject,
             CYCLE(ui_to_from_fire[0].object, translate_text(IDS_JOY_1_FIRE), ui_joystick_fire)
             CYCLE(ui_to_from_fire[2].object, translate_text(IDS_USERPORT_JOY_1_FIRE), ui_joystick_fire)
             CYCLE(ui_to_from_fire[3].object, translate_text(IDS_USERPORT_JOY_2_FIRE), ui_joystick_fire)
           End;
}
Пример #6
0
static void init_autostart_dialog(HWND hwnd)
{
    HWND temp_hwnd;
    int res_value;
    const char *autostartfile;
    TCHAR *st_autostartfile;
    int xsize, ysize;
    int xsize2;
    RECT rect;

    uilib_localize_dialog(hwnd, autostart_dialog);
    uilib_get_group_extent(hwnd, autostart_leftgroup1, &xsize, &ysize);
    uilib_adjust_group_width(hwnd, autostart_leftgroup1);
    uilib_move_and_adjust_group_width(hwnd, autostart_rightgroup1, xsize + 30);
    uilib_get_group_extent(hwnd, autostart_leftgroup2, &xsize2, &ysize);
    uilib_adjust_group_width(hwnd, autostart_leftgroup2);
    uilib_move_group(hwnd, autostart_rightgroup2, xsize2 + 30);

    /* get the max x of the rightgroup3 elements */
    uilib_get_group_max_x(hwnd, autostart_rightgroup3, &xsize);

    /* resize the text fill-in box */
    uilib_move_and_set_element_width(hwnd, IDC_AUTOSTART_DISK_IMAGE_FILE, 9, xsize - 9);

    /* set the width of the dialog to 'surround' all the elements */
    GetWindowRect(hwnd, &rect);
    MoveWindow(hwnd, rect.left, rect.top, xsize + 20, rect.bottom - rect.top, TRUE);

    /* recenter the buttons in the newly resized dialog window */
    uilib_center_buttons(hwnd, move_buttons_group, 0);

    resources_get_int("AutostartWarp", &res_value);
    CheckDlgButton(hwnd, IDC_AUTOSTART_WARP, res_value ? BST_CHECKED : BST_UNCHECKED);

    resources_get_int("AutostartRunWithColon", &res_value);
    CheckDlgButton(hwnd, IDC_AUTOSTART_USE_COLON_WITH_RUN, res_value ? BST_CHECKED : BST_UNCHECKED);
    
    resources_get_int("AutostartBasicLoad", &res_value);
    CheckDlgButton(hwnd, IDC_AUTOSTART_LOAD_TO_BASIC, res_value ? BST_CHECKED : BST_UNCHECKED);

    resources_get_int("AutostartDelayRandom", &res_value);
    CheckDlgButton(hwnd, IDC_AUTOSTART_RANDOM_DELAY, res_value ? BST_CHECKED : BST_UNCHECKED);

    resources_get_int("AutostartHandleTrueDriveEmulation", &res_value);
    CheckDlgButton(hwnd, IDC_AUTOSTART_HANDLE_TRUE_DRIVE_EMULATION, res_value ? BST_CHECKED : BST_UNCHECKED);

    temp_hwnd = GetDlgItem(hwnd, IDC_AUTOSTART_PRG_MODE);
    SendMessage(temp_hwnd, CB_ADDSTRING, 0, (LPARAM)translate_text(IDS_AUTOSTART_VIRTUAL_FS));
    SendMessage(temp_hwnd, CB_ADDSTRING, 0, (LPARAM)translate_text(IDS_AUTOSTART_INJECT));
    SendMessage(temp_hwnd, CB_ADDSTRING, 0, (LPARAM)translate_text(IDS_AUTOSTART_DISK));
    resources_get_int("AutostartPrgMode", &res_value);
    SendMessage(temp_hwnd, CB_SETCURSEL, (WPARAM)res_value, 0);

    resources_get_string("AutostartPrgDiskImage", &autostartfile);
    st_autostartfile = system_mbstowcs_alloc(autostartfile);
    SetDlgItemText(hwnd, IDC_AUTOSTART_DISK_IMAGE_FILE, autostartfile != NULL ? st_autostartfile : TEXT(""));
    system_mbstowcs_free(st_autostartfile);
}
Пример #7
0
static APTR build_gui(void)
{
    return GroupObject,
             CYCLE(ui_to_from[0].object, translate_text(IDS_BORDER_MODE), ui_vicii_borders)
             CYCLE(ui_to_from[1].object, translate_text(IDS_SPRITE_SPRITE_COL), ui_vicii_enable)
             CYCLE(ui_to_from[2].object, translate_text(IDS_SPRITE_BACKGROUND_COL), ui_vicii_enable)
             CYCLE(ui_to_from[3].object, translate_text(IDS_NEW_LUMINANCES), ui_vicii_enable)
           End;
}
Пример #8
0
static APTR build_gui_device_plus4(void)
{
    return GroupObject,
             CYCLE(ui_to_from_device_plus4[0].object, translate_text(IDS_JOY_1_DEVICE), ui_joystick_device)
             CYCLE(ui_to_from_device_plus4[1].object, translate_text(IDS_JOY_2_DEVICE), ui_joystick_device)
             CYCLE(ui_to_from_device_plus4[3].object, translate_text(IDS_SIDCART_JOY), ui_joystick_enable)
             CYCLE(ui_to_from_device_plus4[2].object, translate_text(IDS_SIDCART_JOY_DEVICE), ui_joystick_device)
           End;
}
Пример #9
0
static APTR build_gui_device_pet(void)
{
    return GroupObject,
             CYCLE(ui_to_from_device[4].object, translate_text(IDS_USERPORT_ADAPTER), ui_joystick_enable)
             CYCLE(ui_to_from_device[3].object, translate_text(IDS_USERPORT_ADAPTER_TYPE), ui_userport_joystick)
             CYCLE(ui_to_from_device[2].object, translate_text(IDS_USERPORT_JOY_1_DEVICE), ui_joystick_device)
             CYCLE(ui_to_from_device[3].object, translate_text(IDS_USERPORT_JOY_2_DEVICE), ui_joystick_device)
           End;
}
Пример #10
0
void ui_c128_dialog(HWND hwnd)
{
    PROPSHEETPAGE psp[2];
    PROPSHEETHEADER psh;

    psp[0].dwSize = sizeof(PROPSHEETPAGE);
    psp[0].dwFlags = PSP_USETITLE /*| PSP_HASHELP*/ ;
    psp[0].hInstance = winmain_instance;
#ifdef _ANONYMOUS_UNION
    psp[0].pszTemplate = MAKEINTRESOURCE(translate_res(IDD_C128_MACHINE_SETTINGS_DIALOG));
    psp[0].pszIcon = NULL;
#else
    psp[0].DUMMYUNIONNAME.pszTemplate
        = MAKEINTRESOURCE(translate_res(IDD_C128_MACHINE_SETTINGS_DIALOG));
    psp[0].u2.pszIcon = NULL;
#endif
    psp[0].lParam = 0;
    psp[0].pfnCallback = NULL;

    psp[1].dwSize = sizeof(PROPSHEETPAGE);
    psp[1].dwFlags = PSP_USETITLE /*| PSP_HASHELP*/ ;
    psp[1].hInstance = winmain_instance;
#ifdef _ANONYMOUS_UNION
    psp[1].pszTemplate = MAKEINTRESOURCE(translate_res(IDD_C128_FUNCTIONROM_SETTINGS_DIALOG));
    psp[1].pszIcon = NULL;
#else
    psp[1].DUMMYUNIONNAME.pszTemplate
        = MAKEINTRESOURCE(translate_res(IDD_C128_FUNCTIONROM_SETTINGS_DIALOG));
    psp[1].u2.pszIcon = NULL;
#endif
    psp[1].lParam = 0;
    psp[1].pfnCallback = NULL;

    psp[0].pfnDlgProc = machine_dialog_proc;
    psp[0].pszTitle = translate_text(IDS_MACHINE_TYPE);
    psp[1].pfnDlgProc = functionrom_dialog_proc;
    psp[1].pszTitle = translate_text(IDS_FUNCTION_ROM);

    psh.dwSize = sizeof(PROPSHEETHEADER);
    psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW;
    psh.hwndParent = hwnd;
    psh.hInstance = winmain_instance;
    psh.pszCaption = translate_text(IDS_C128_SETTINGS);
    psh.nPages = 2;
#ifdef _ANONYMOUS_UNION
    psh.pszIcon = NULL;
    psh.nStartPage = 0;
    psh.ppsp = psp;
#else
    psh.DUMMYUNIONNAME.pszIcon = NULL;
    psh.u2.nStartPage = 0;
    psh.u3.ppsp = psp;
#endif
    psh.pfnCallback = NULL;

    PropertySheet(&psh);
}
Пример #11
0
static APTR build_gui(void)
{
    return GroupObject,
             CYCLE(ui_to_from[0].object, translate_text(IDS_SID_CART), ui_sidcart_enable)
             CYCLE(ui_to_from[1].object, translate_text(IDS_SID_ENGINE_MODEL), ui_sidcart_engine_model)
             CYCLE(ui_to_from[2].object, translate_text(IDS_SID_FILTERS), ui_sidcart_enable)
             CYCLE(ui_to_from[3].object, translate_text(IDS_SID_ADDRESS), ui_sidcart_address)
             CYCLE(ui_to_from[4].object, translate_text(IDS_SID_CLOCK), ui_sidcart_clock)
           End;
}
Пример #12
0
static APTR build_gui20(void)
{
    return GroupObject,
             CYCLE(ui_to_from20[0].object, "ACIA", ui_acia_enable)
             CYCLE(ui_to_from20[1].object, translate_text(IDS_ACIA_DEVICE), ui_acia_device)
             CYCLE(ui_to_from20[2].object, translate_text(IDS_ACIA_BASE), ui_acia_vic20_base)
             CYCLE(ui_to_from20[3].object, translate_text(IDS_ACIA_INTERRUPT), ui_acia_interrupt)
             CYCLE(ui_to_from20[4].object, translate_text(IDS_ACIA_MODE), ui_acia_mode)
           End;
}
Пример #13
0
static APTR build_gui(void)
{
  return GroupObject,
    CYCLE(ui_to_from[0].object, translate_text(IDS_SAMPLE_RATE), ui_sound_freq)
    CYCLE(ui_to_from[1].object, translate_text(IDS_BUFFER_SIZE), ui_sound_buffer)
    CYCLE(ui_to_from[2].object, translate_text(IDS_OVERSAMPLE), ui_sound_oversample)
    CYCLE(ui_to_from[3].object, translate_text(IDS_SPEED_ADJUSTMENT), ui_sound_adjusting)
    STRING(ui_to_from[4].object, translate_text(IDS_VOLUME), "0123456789", 5+1)
  End;
}
Пример #14
0
static APTR build_gui(void)
{
    return GroupObject,
             CYCLE(ui_to_from[0].object, translate_text(IDS_RAM_BLOCK_0400_0FFF), ui_vic20mem_enable)
             CYCLE(ui_to_from[1].object, translate_text(IDS_RAM_BLOCK_2000_3FFF), ui_vic20mem_enable)
             CYCLE(ui_to_from[2].object, translate_text(IDS_RAM_BLOCK_4000_5FFF), ui_vic20mem_enable)
             CYCLE(ui_to_from[3].object, translate_text(IDS_RAM_BLOCK_6000_7FFF), ui_vic20mem_enable)
             CYCLE(ui_to_from[4].object, translate_text(IDS_RAM_BLOCK_A000_BFFF), ui_vic20mem_enable)
           End;
}
Пример #15
0
static APTR build_gui(void)
{
    static char **drive_type_strings[4] = {
        drive_type_strings_8, drive_type_strings_9, drive_type_strings_10, drive_type_strings_11
    };

    APTR window, page;
    ui_to_from_t *data;
    int num;

    window = RegisterObject,
               MUIA_Register_Titles, drive_number_strings,
             End;

    for (num = 0; num < 4; num++) {
        data = &ui_to_from[DECL_NUM * num];
        page = GroupObject,
                 MUIA_Group_Horiz, TRUE,
                 Child, data[0].object = RadioObject,
                   MUIA_Frame, MUIV_Frame_Group,
                   MUIA_FrameTitle, translate_text(IDS_DRIVE_TYPE),
                   MUIA_Radio_Entries, drive_type_strings[num],
                 End,
                 Child, GroupObject,
                   Child, data[1].object = RadioObject,
                     MUIA_Frame, MUIV_Frame_Group,
                     MUIA_FrameTitle, translate_text(IDS_40_TRACK_HANDLING),
                     MUIA_Radio_Entries, drive_extend_strings,
                   End,
                   Child, GroupObject,
                     MUIA_Frame, MUIV_Frame_Group,
                     MUIA_FrameTitle, translate_text(IDS_DRIVE_EXPANSION),
                     CHECK(data[3].object, "$2000-$3FFF RAM")
                     CHECK(data[4].object, "$4000-$5FFF RAM")
                     CHECK(data[5].object, "$6000-$7FFF RAM")
                     CHECK(data[6].object, "$8000-$9FFF RAM")
                     CHECK(data[7].object, "$A000-$BFFF RAM")
                   End,
                 End,
                 Child, GroupObject,
                   Child, data[2].object = RadioObject,
                     MUIA_Frame, MUIV_Frame_Group,
                     MUIA_FrameTitle, translate_text(IDS_IDLE_METHOD),
                     MUIA_Radio_Entries, drive_idle_strings,
                   End,
                   CHECK(data[8].object, translate_text(IDS_PARALLEL_CABLE))
                 End,
               End;

        DoMethod(window, OM_ADDMEMBER, page);
    }

    return window;
}
Пример #16
0
static void cbm2_cart_attach(video_canvas_t *canvas, int cart_type)
{
    char *fname;

    fname = BrowseFile(translate_text(IDS_ATTACH_CART), "#?", canvas);

    if (fname != NULL) {
        if (cartridge_attach_image(cart_type, fname) < 0) {
            ui_error(translate_text(IDMES_INVALID_CART_IMAGE));
        }
    }
}
Пример #17
0
static APTR build_gui_plus4(void)
{
    static const struct Hook BT0Hook = { { NULL, NULL }, (VOID *)BT0Click, NULL, NULL };
    static const struct Hook BT1Hook = { { NULL, NULL }, (VOID *)BT1Click, NULL, NULL };
    APTR BT0, BT1;

    APTR gui = GroupObject,
                 Child, GroupObject,
                   MUIA_Group_Horiz, TRUE,
                   Child, GroupObject,
                     MUIA_Frame, MUIV_Frame_Group,
                     MUIA_FrameTitle, translate_text(IDS_JOYSTICK_1),
                     CYCLE(ui_to_from_plus4[0].object, "", ui_joystick)
                   End,
                   Child, GroupObject,
                     MUIA_Frame, MUIV_Frame_Group,
                     MUIA_FrameTitle, translate_text(IDS_JOYSTICK_2),
                     CYCLE(ui_to_from_plus4[1].object, "", ui_joystick)
                   End,
                 End,
                 Child, GroupObject,
                   MUIA_Group_Horiz, TRUE,
                   Child, GroupObject,
                     MUIA_Frame, MUIV_Frame_Group,
                     MUIA_FrameTitle, translate_text(IDS_SIDCART_JOY),
                     CYCLE(ui_to_from_plus4[3].object, "", ui_joystick_enable)
                   End,
                 End,
                 Child, GroupObject,
                   MUIA_Group_Horiz, TRUE,
                   Child, GroupObject,
                     MUIA_Frame, MUIV_Frame_Group,
                     MUIA_FrameTitle, translate_text(IDS_JOYSTICK_IN_SIDCART_PORT),
                     CYCLE(ui_to_from_plus4[2].object, "", ui_joystick)
                   End,
                 End,
                 Child, GroupObject,
                   MUIA_Group_Horiz, TRUE,
                   Child, BT0 = SimpleButton("Config AI/Keyset A"),
                   Child, BT1 = SimpleButton("Config AI/Keyset B"),
                 End,
               End;

    if (gui != NULL) {
        DoMethod(BT0, MUIM_Notify, MUIA_Pressed, FALSE,
                 BT0, 2, MUIM_CallHook, &BT0Hook);

        DoMethod(BT1, MUIM_Notify, MUIA_Pressed, FALSE,
                 BT1, 2, MUIM_CallHook, &BT1Hook);
    }

    return gui;
}
Пример #18
0
void uidrivec64_settings_dialog(HWND hwnd)
{
    PROPSHEETPAGE psp[4];
    PROPSHEETHEADER psh;
    int i;

    for (i = 0; i < 4; i++) {
        psp[i].dwSize = sizeof(PROPSHEETPAGE);
        psp[i].dwFlags = PSP_USETITLE /*| PSP_HASHELP*/ ;
        psp[i].hInstance = winmain_instance;
#ifdef _ANONYMOUS_UNION
        psp[i].pszTemplate
            = MAKEINTRESOURCE(translate_res(IDD_DRIVE_SETTINGS_DIALOG_C64));
        psp[i].pszIcon = NULL;
#else
        psp[i].DUMMYUNIONNAME.pszTemplate
            = MAKEINTRESOURCE(translate_res(IDD_DRIVE_SETTINGS_DIALOG_C64));
        psp[i].u2.pszIcon = NULL;
#endif
        psp[i].lParam = 0;
        psp[i].pfnCallback = NULL;
    }

    psp[0].pfnDlgProc = callback_8;
    psp[0].pszTitle = translate_text(IDS_DRIVE_8);
    psp[1].pfnDlgProc = callback_9;
    psp[1].pszTitle = translate_text(IDS_DRIVE_9);
    psp[2].pfnDlgProc = callback_10;
    psp[2].pszTitle = translate_text(IDS_DRIVE_10);
    psp[3].pfnDlgProc = callback_11;
    psp[3].pszTitle = translate_text(IDS_DRIVE_11);

    psh.dwSize = sizeof(PROPSHEETHEADER);
    psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW;
    psh.hwndParent = hwnd;
    psh.hInstance = winmain_instance;
    psh.pszCaption = translate_text(IDS_DRIVE_SETTINGS);
    psh.nPages = 4;
#ifdef _ANONYMOUS_UNION
    psh.pszIcon = NULL;
    psh.nStartPage = 0;
    psh.ppsp = psp;
#else
    psh.DUMMYUNIONNAME.pszIcon = NULL;
    psh.u2.nStartPage = 0;
    psh.u3.ppsp = psp;
#endif
    psh.pfnCallback = NULL;

    system_psh_settings(&psh);
    PropertySheet(&psh);
}
Пример #19
0
void ui_cbm2_settings_dialog(HWND hwnd)
{
    PROPSHEETPAGE psp[4];
    PROPSHEETHEADER psh;
    int i;

    for (i = 0; i < 2; i++) {
        psp[i].dwSize = sizeof(PROPSHEETPAGE);
        psp[i].dwFlags = PSP_USETITLE /*| PSP_HASHELP*/ ;
        psp[i].hInstance = winmain_instance;
#ifdef _ANONYMOUS_UNION
        psp[i].pszIcon = NULL;
#else
        psp[i].u2.pszIcon = NULL;
#endif
        psp[i].lParam = 0;
        psp[i].pfnCallback = NULL;
    }

    psp[0].pfnDlgProc = dialog_proc;
    psp[0].pszTitle = translate_text(IDS_MODEL);
    psp[1].pfnDlgProc = memory_dialog_proc;
    psp[1].pszTitle = translate_text(IDS_MEMORY);

#ifdef _ANONYMOUS_UNION
    psp[0].pszTemplate = MAKEINTRESOURCE(IDD_CBMII_SETTINGS_MODEL_DIALOG);
    psp[1].pszTemplate = MAKEINTRESOURCE(IDD_CBMII_SETTINGS_IO_DIALOG);
#else
    psp[0].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_CBMII_SETTINGS_MODEL_DIALOG);
    psp[1].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_CBMII_SETTINGS_IO_DIALOG);
#endif

    psh.dwSize = sizeof(PROPSHEETHEADER);
    psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW;
    psh.hwndParent = hwnd;
    psh.hInstance = winmain_instance;
    psh.pszCaption = translate_text(IDS_CBM2_SETTINGS);
    psh.nPages = 2;
#ifdef _ANONYMOUS_UNION
    psh.pszIcon = NULL;
    psh.nStartPage = 0;
    psh.ppsp = psp;
#else
    psh.DUMMYUNIONNAME.pszIcon = NULL;
    psh.u2.nStartPage = 0;
    psh.u3.ppsp = psp;
#endif
    psh.pfnCallback = NULL;

    system_psh_settings(&psh);
    PropertySheet(&psh);
}
Пример #20
0
/* Print an error message.  */
void ui_error(const char *format,...)
{
    va_list ap;
    char *tmp;

    va_start(ap, format);
    tmp = lib_mvsprintf(format,ap);
    va_end(ap);

    ui_requester(translate_text(IDMES_VICE_ERROR), tmp, translate_text(IDMES_OK), 0);

    lib_free(tmp);
}
Пример #21
0
INT_PTR CALLBACK dialog_fullscreen_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    int notifycode;
    int item;
    int index;
    int value;
    int command;
    TCHAR s[100];
    float tf;

    switch (msg) {
        case WM_NOTIFY:
            if (((NMHDR FAR *)lparam)->code == (UINT)PSN_APPLY) {
                if (video_dx9_enabled()) {
                    GetDlgItemText(hwnd, IDC_ASPECT_RATIO, s, 100);
                    _stscanf(s, TEXT("%f"), &tf);
                    aspect_ratio = (int)(tf * 1000.0 + 0.5);
                    if (aspect_ratio < 500) {
                        ui_error(translate_text(IDS_VAL_F_FOR_S_OUT_RANGE_USE_F), tf, translate_text(IDS_TOGGLE_KEEP_ASPECT_RATIO), 0.5f);
                        aspect_ratio = 500;
                    }
                    if (aspect_ratio > 2000) {
                        ui_error(translate_text(IDS_VAL_F_FOR_S_OUT_RANGE_USE_F), tf, translate_text(IDS_TOGGLE_KEEP_ASPECT_RATIO), 2.0f);
                        aspect_ratio = 2000;
                    }
                }
                fullscreen_dialog_end();
                SetWindowLongPtr(hwnd, DWLP_MSGRESULT, FALSE);
                return TRUE;
            }
            return FALSE;
        case WM_COMMAND:
            notifycode = HIWORD(wparam);
            item = LOWORD(wparam);
            if (notifycode == CBN_SELENDOK) {
                if (item == IDC_FULLSCREEN_DEVICE) { 
                    fullscreen_device = (int)SendMessage(GetDlgItem(hwnd, IDC_FULLSCREEN_DEVICE), CB_GETCURSEL, 0, 0);
                } else if (item == IDC_FULLSCREEN_BITDEPTH) {
                    index = (int)SendMessage(GetDlgItem(hwnd, IDC_FULLSCREEN_BITDEPTH), CB_GETCURSEL, 0, 0);
                    fullscreen_bitdepth = GetValueFromList(bitdepthlist, index);
                } else if (item == IDC_FULLSCREEN_RESOLUTION) {
                    index = (int)SendMessage(GetDlgItem(hwnd, IDC_FULLSCREEN_RESOLUTION), CB_GETCURSEL, 0, 0);
                    value = GetValueFromList(resolutionlist, index);
                    fullscreen_width = value >> 16;
                    fullscreen_height = value & 0xffff;
                } else if (item == IDC_FULLSCREEN_REFRESHRATE) {
                    index = (int)SendMessage(GetDlgItem(hwnd, IDC_FULLSCREEN_REFRESHRATE), CB_GETCURSEL, 0, 0);
                    fullscreen_refreshrate = GetValueFromList(refresh_rates, index);
                }
                init_fullscreen_dialog(hwnd);
            } else {
Пример #22
0
static void uiattach_disk_dialog(HWND hwnd, WPARAM wparam)
{
    TCHAR *st_name;
    char *resource;
    int unit = 8;
    int autostart_index = -1;

    SuspendFullscreenModeKeep(hwnd);
    switch (wparam & 0xffff) {
    case IDM_ATTACH_8:
        unit = 8;
        break;
    case IDM_ATTACH_9:
        unit = 9;
        break;
    case IDM_ATTACH_10:
        unit = 10;
        break;
    case IDM_ATTACH_11:
        unit = 11;
        break;
    }
    resource = lib_msprintf("AttachDevice%dReadonly", unit);
    if ((st_name = uilib_select_file_autostart(hwnd,
                   translate_text(IDS_ATTACH_DISK_IMAGE),
                   UILIB_FILTER_DISK |
#ifdef HAVE_ZLIB
                   UILIB_FILTER_ZIP |
#endif
                   UILIB_FILTER_ALL,
                   UILIB_SELECTOR_TYPE_FILE_LOAD,
                   UILIB_SELECTOR_STYLE_DISK,
                   &autostart_index, resource)) != NULL) {
        char *name;

        name = system_wcstombs_alloc(st_name);
        if (autostart_index >= 0) {
            if (autostart_autodetect(name, NULL, autostart_index, AUTOSTART_MODE_RUN) < 0) {
                ui_error(translate_text(IDS_CANNOT_AUTOSTART_FILE));
            }
        } else {
            if (file_system_attach_disk(unit, name) < 0) {
                ui_error(translate_text(IDS_CANNOT_ATTACH_FILE));
            }
        }
        system_wcstombs_free(name);
        lib_free(st_name);
    }
    ResumeFullscreenModeKeep(hwnd);
    lib_free(resource);
}
Пример #23
0
void ui_cmdline_show_help(unsigned int num_options,
                          cmdline_option_ram_t *options, void *userparam)
{
    unsigned int i;

    printf(translate_text(IDS_AVAILABLE_CMDLINE_OPTIONS));
    for (i = 0; i < num_options; i++) {
        fputs(options[i].name, stdout);
        if (options[i].need_arg && options[i].param_name != 0)
            printf(" %s", translate_text(options[i].param_name));
        printf("\n\t%s\n", translate_text(options[i].description));
    }
    putchar('\n');
}
Пример #24
0
char *cmdline_options_get_description(int counter)
{
    if (options[counter].use_description_id == USE_DESCRIPTION_ID) {
        return translate_text(options[counter].description_trans);
    } else if (options[counter].use_description_id == USE_DESCRIPTION_COMBO) {
        if (options[counter].combined_string) {
            lib_free(options[counter].combined_string);
        }
        options[counter].combined_string = util_concat(translate_text(options[counter].description_trans), options[counter].description, NULL);
        return options[counter].combined_string;
    } else {
        return (char *)_(options[counter].description);
    }
}
Пример #25
0
void uisnapshot_load_dialog(video_canvas_t *canvas)
{
    char *fname;

    snapshot_canvas=canvas;

    fname=BrowseFile(translate_text(IDS_LOAD_SNAPSHOT_IMAGE), "#?.vsf", snapshot_canvas);

    if (fname!=NULL && *fname!='\0')
    {
        if (machine_read_snapshot(fname, 0) < 0)
            ui_error(translate_text(IDS_CANNOT_READ_SNAPSHOT_IMG));
    }
}
Пример #26
0
static APTR build_gui(void)
{
    APTR app, ui, ok, browse_button, cancel;

#ifdef AMIGA_MORPHOS
    static const struct Hook BrowseFileHook = { { NULL,NULL },(VOID *)HookEntry,(VOID *)Browse, NULL};
#else
    static const struct Hook BrowseFileHook = { { NULL,NULL },(VOID *)Browse,NULL,NULL };
#endif

    app = mui_get_app();

    ui = GroupObject,
    CHECK(save_disks_check, translate_text(IDS_SAVE_CURRENTLY_ATTACHED_DISKS))
    CHECK(save_roms_check, translate_text(IDS_SAVE_CURRENTLY_ATTACHED_ROMS))
    FILENAME(filename_check, translate_text(IDS_SNAPSHOT_FILE), browse_button)

    Child, HGroup,
    Child, ok = TextObject,
           ButtonFrame,
           MUIA_Background, MUII_ButtonBack,
           MUIA_Text_Contents, translate_text(IDS_SAVE),
           MUIA_Text_PreParse, "\033c",
           MUIA_InputMode, MUIV_InputMode_RelVerify,
           End,
           Child, cancel = TextObject,
                  ButtonFrame,
                  MUIA_Background, MUII_ButtonBack,
                  MUIA_Text_Contents, translate_text(IDS_CANCEL),
                  MUIA_Text_PreParse, "\033c",
                  MUIA_InputMode, MUIV_InputMode_RelVerify,
                  End,
                  End,
                  End;

    if (ui != NULL) {
        DoMethod(cancel,
                 MUIM_Notify, MUIA_Pressed, FALSE,
                 app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);

        DoMethod(ok, MUIM_Notify, MUIA_Pressed, FALSE,
                 app, 2, MUIM_Application_ReturnID, BTN_OK);

        DoMethod(browse_button, MUIM_Notify, MUIA_Pressed, FALSE,
                 app, 2, MUIM_CallHook, &BrowseFileHook);
    }

    return ui;
}
Пример #27
0
/*
    amount is 2 or more
*/
static void io_source_log_collisions(WORD addr, int amount, io_source_list_t *start)
{
    io_source_list_t *current = start;
    char *old_msg = NULL;
    char *new_msg = NULL;
    int found = 0;

    current = current->next;

    DBG(("IO: check %d sources for addr %04x\n", amount, addr));
    while (current) {
        /* DBG(("IO: check '%s'\n", current->device->name)); */
        if (current->device->io_source_valid && 
            addr >= current->device->start_address && 
            addr <= current->device->end_address && 
            current->device->io_source_prio == IO_PRIO_NORMAL) {
            /* found a conflict */
            DBG(("IO: found #%d: '%s'\n", found, current->device->name));

            /* first part of the message "read collision at x from" */
            if (found == 0) {
                old_msg = lib_stralloc(translate_text(IDGS_IO_READ_COLL_AT_X_FROM));
                new_msg = util_concat(old_msg, current->device->name, NULL);
                lib_free(old_msg);
            }
            if ((found != amount - 1) && (found != 0)) {
                old_msg = new_msg;
                new_msg = util_concat(old_msg, ", ", current->device->name, NULL);
                lib_free(old_msg);
            }
            if (found == amount - 1) {
                old_msg = new_msg;
                new_msg = util_concat(old_msg, translate_text(IDGS_AND), current->device->name, NULL);
                lib_free(old_msg);
            }
            found++;
            if (found == amount) {
                break;
            }
        }
        current = current->next;
    }

    if (found) {
        log_message(LOG_DEFAULT, new_msg, addr);
        lib_free(new_msg);

    }
}
Пример #28
0
void ui_cmdline_show_help(unsigned int num_options,
                          cmdline_option_ram_t *options,
                          void *userparam)
{
    unsigned int i;

    printf("\nAvailable command-line options:\n\n");
    for (i = 0; i < num_options; i++) {
        fputs(options[i].name, stdout);
        if (options[i].need_arg && options[i].param_name != 0)
            printf(" %s", translate_text(options[i].param_name));
        printf("\n\t%s\n", translate_text(options[i].description));
    }
    putchar('\n');
}
Пример #29
0
static void uiattach_autostart_dialog(video_canvas_t *canvas)
{
    char *name;
    int autostart_index = 0;

    if ((name = uilib_select_file_autostart(translate_text(IDS_AUTOSTART_IMAGE),
                                            UILIB_FILTER_DISK | UILIB_FILTER_TAPE | UILIB_FILTER_ZIP | UILIB_FILTER_ALL,
                                            UILIB_SELECTOR_TYPE_FILE_LOAD, UILIB_SELECTOR_STYLE_DISK_AND_TAPE,
                                            &autostart_index, NULL)) != NULL) {
        if (autostart_autodetect(name, NULL, autostart_index, AUTOSTART_MODE_RUN) < 0) {
            ui_error(translate_text(IDMES_CANNOT_AUTOSTART_FILE));
        }
        lib_free(name);
    }
}
Пример #30
0
APTR mui_make_ok_cancel_window(APTR gui, char *title)
{
    APTR window, ok, cancel;

    if (app == NULL) {
        return NULL;
    }

    window = WindowObject,
               MUIA_Window_Title, title,
               MUIA_Window_ID, MAKE_ID(title[0], title[1], title[2], title[3]),
               MUIA_Window_Screen, canvaslist->os->screen,
               WindowContents, VGroup,
               Child, VGroup,
                 Child, gui,
                 End,
                 Child, HGroup,
                   Child, ok = TextObject,
                     ButtonFrame,
                     MUIA_Background, MUII_ButtonBack,
                     MUIA_Text_Contents, translate_text(IDMES_OK),
                     MUIA_Text_PreParse, "\033c",
                     MUIA_InputMode, MUIV_InputMode_RelVerify,
                   End,
                   Child, cancel = TextObject,
                     ButtonFrame,
                     MUIA_Background, MUII_ButtonBack,
                     MUIA_Text_Contents, translate_text(IDS_CANCEL),
                     MUIA_Text_PreParse, "\033c",
                     MUIA_InputMode, MUIV_InputMode_RelVerify,
                   End,
                 End,
               End,
             End;

    if (window != NULL) {
        DoMethod(window, MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
                 app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);

        DoMethod(cancel, MUIM_Notify, MUIA_Pressed, FALSE,
                 app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);

        DoMethod(ok, MUIM_Notify, MUIA_Pressed, FALSE,
                 app, 2, MUIM_Application_ReturnID, BTN_OK);
    }

    return window;
}