This is petui.c in view mode; [Download] [Up]
/* * petui.c - Implementation of the PET-specific part of the UI. * * Written by * Ettore Perazzoli (ettore@comm2000.it) * André Fachat (a.fachat@physik.tu-chemnitz.de) * * This file is part of VICE, the Versatile Commodore Emulator. * See README for copyright notice. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA. * */ #include "vice.h" #include <stdio.h> #include "joystick.h" #include "pets.h" #include "petui.h" #include "resources.h" #include "uicommands.h" #include "uimenu.h" #include "uisettings.h" #include "vsync.h" #ifdef XPM #include <X11/xpm.h> #include "peticon.xpm" #endif /* ------------------------------------------------------------------------- */ UI_MENU_DEFINE_STRING_RADIO(PaletteFile) static ui_menu_entry_t palette_submenu[] = { { "*Default (Green)", (ui_callback_t) radio_PaletteFile, (ui_callback_data_t) "default", NULL }, { "*Amber", (ui_callback_t) radio_PaletteFile, (ui_callback_data_t) "amber", NULL }, { "*White", (ui_callback_t) radio_PaletteFile, (ui_callback_data_t) "white", NULL }, { NULL } }; UI_MENU_DEFINE_TOGGLE(DiagPin) UI_MENU_DEFINE_TOGGLE(Crtc) UI_MENU_DEFINE_TOGGLE(Ram9) UI_MENU_DEFINE_TOGGLE(RamA) UI_MENU_DEFINE_RADIO(VideoSize) UI_MENU_DEFINE_RADIO(RamSize) UI_MENU_DEFINE_RADIO(IOSize) static UI_CALLBACK(petui_set_model) { pet_set_model(client_data, NULL); ui_update_menus(); } /* this is partially modeled after the radio_* callbacks */ static UI_CALLBACK(set_KeyboardType) { int current_value, new_value = 2 * (int) client_data; extern char *keymap_file_resource_names[]; resources_get_value("KeymapIndex", (resource_value_t) ¤t_value); if(!call_data) { if((current_value & ~1) != new_value) { resources_set_value("KeymapIndex", (resource_value_t) (current_value & 1) + new_value); ui_update_menus(); } } else { ui_menu_set_tick(w, current_value == new_value); } } /* ------------------------------------------------------------------------- */ static UI_CALLBACK(set_joystick_device_1) { int tmp; suspend_speed_eval(); if (!call_data) { resources_set_value("JoyDevice1", (resource_value_t) client_data); ui_update_menus(); } else { resources_get_value("JoyDevice1", (resource_value_t *) &tmp); ui_menu_set_tick(w, tmp == (int) client_data); } } static UI_CALLBACK(set_joystick_device_2) { int tmp; suspend_speed_eval(); if (!call_data) { resources_set_value("JoyDevice2", (resource_value_t) client_data); ui_update_menus(); } else { resources_get_value("JoyDevice2", (resource_value_t *) &tmp); ui_menu_set_tick(w, tmp == (int) client_data); } } static UI_CALLBACK(swap_joystick_ports) { int tmp1, tmp2; if (w != NULL) suspend_speed_eval(); resources_get_value("JoyDevice1", (resource_value_t *) &tmp1); resources_get_value("JoyDevice2", (resource_value_t *) &tmp2); resources_set_value("JoyDevice1", (resource_value_t) tmp2); resources_set_value("JoyDevice2", (resource_value_t) tmp1); ui_update_menus(); } static ui_menu_entry_t set_joystick_device_1_submenu[] = { { "*None", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_NONE, NULL }, { "*Numpad", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_NUMPAD, NULL }, { "*Custom Keys", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_CUSTOM_KEYS, NULL }, #ifdef HAS_JOYSTICK { "*Analog Joystick 0", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_ANALOG_0, NULL }, { "*Analog Joystick 1", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_ANALOG_1, NULL }, #ifdef HAS_DIGITAL_JOYSTICK { "*Digital Joystick 0", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_DIGITAL_0, NULL }, { "*Digital Joystick 1", (ui_callback_t) set_joystick_device_1, (ui_callback_data_t) JOYDEV_DIGITAL_1, NULL }, #endif #endif { NULL } }; static ui_menu_entry_t set_joystick_device_2_submenu[] = { { "*None", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_NONE, NULL }, { "*Numpad", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_NUMPAD, NULL }, { "*Custom Keys", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_CUSTOM_KEYS, NULL }, #ifdef HAS_JOYSTICK { "*Analog Joystick 0", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_ANALOG_0, NULL }, { "*Analog Joystick 1", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_ANALOG_1, NULL }, #ifdef HAS_DIGITAL_JOYSTICK { "*Digital Joystick 0", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_DIGITAL_0, NULL }, { "*Digital Joystick 1", (ui_callback_t) set_joystick_device_2, (ui_callback_data_t) JOYDEV_DIGITAL_1, NULL }, #endif #endif /* HAS_JOYSTICK */ { NULL } }; static ui_menu_entry_t joystick_settings_submenu[] = { { "Joystick device in port 1", NULL, NULL, set_joystick_device_1_submenu }, { "Joystick device in port 2", NULL, NULL, set_joystick_device_2_submenu }, { "--" }, { "Swap joystick ports", (ui_callback_t) swap_joystick_ports, NULL, NULL }, { NULL } }; static ui_menu_entry_t joystick_settings_menu[] = { { "Joystick settings", NULL, NULL, joystick_settings_submenu }, { NULL } }; static ui_menu_entry_t pet_memsize_submenu[] = { { "*4 kByte", (ui_callback_t) radio_RamSize, (ui_callback_data_t) 4, NULL }, { "*8 kByte", (ui_callback_t) radio_RamSize, (ui_callback_data_t) 8, NULL }, { "*16 kByte", (ui_callback_t) radio_RamSize, (ui_callback_data_t) 16, NULL }, { "*32 kByte", (ui_callback_t) radio_RamSize, (ui_callback_data_t) 32, NULL }, { "*96 kByte", (ui_callback_t) radio_RamSize, (ui_callback_data_t) 96, NULL }, { "*128 kByte", (ui_callback_t) radio_RamSize, (ui_callback_data_t) 128, NULL }, { NULL } }; static ui_menu_entry_t pet_iosize_submenu[] = { { "*2 kByte", (ui_callback_t) radio_IOSize, (ui_callback_data_t) 0x800, NULL }, { "*256 Byte", (ui_callback_t) radio_IOSize, (ui_callback_data_t) 0x100, NULL }, { NULL } }; static ui_menu_entry_t pet_keybd_submenu[] = { { "*Graphics", (ui_callback_t) set_KeyboardType, (ui_callback_data_t) 1, NULL }, { "*Business (UK)", (ui_callback_t) set_KeyboardType, (ui_callback_data_t) 0, NULL }, { NULL } }; static ui_menu_entry_t pet_video_submenu[] = { { "*Auto (from ROM)", (ui_callback_t) radio_VideoSize, (ui_callback_data_t) 0, NULL }, { "*40 Columns", (ui_callback_t) radio_VideoSize, (ui_callback_data_t) 40, NULL }, { "*80 Columns", (ui_callback_t) radio_VideoSize, (ui_callback_data_t) 80, NULL }, { NULL } }; static ui_menu_entry_t model_defaults_submenu[] = { { "PET 2001-8N", (ui_callback_t) petui_set_model, (ui_callback_data_t)"2001", NULL }, { "PET 3008", (ui_callback_t) petui_set_model, (ui_callback_data_t)"3008", NULL }, { "PET 3016", (ui_callback_t) petui_set_model, (ui_callback_data_t)"3016", NULL }, { "PET 3032", (ui_callback_t) petui_set_model, (ui_callback_data_t)"3032", NULL }, { "PET 3032B", (ui_callback_t) petui_set_model, (ui_callback_data_t)"3032B", NULL }, { "PET 4016", (ui_callback_t) petui_set_model, (ui_callback_data_t)"4016", NULL }, { "PET 4032", (ui_callback_t) petui_set_model, (ui_callback_data_t)"4032", NULL }, { "PET 4032B", (ui_callback_t) petui_set_model, (ui_callback_data_t)"4032B", NULL }, { "PET 8032", (ui_callback_t) petui_set_model, (ui_callback_data_t)"8032", NULL }, { "PET 8096", (ui_callback_t) petui_set_model, (ui_callback_data_t)"8096", NULL }, { "PET 8296", (ui_callback_t) petui_set_model, (ui_callback_data_t)"8296", NULL }, { NULL } }; UI_MENU_DEFINE_TOGGLE(EmuID) static ui_menu_entry_t model_settings_submenu[] = { { "Model defaults", NULL, NULL, model_defaults_submenu }, { "--" }, { "Video size", NULL, NULL, pet_video_submenu }, { "Memory size", NULL, NULL, pet_memsize_submenu }, { "I/O size", NULL, NULL, pet_iosize_submenu }, { "*CRTC chip enable", (ui_callback_t) toggle_Crtc, NULL, NULL }, { "--" }, { "*$9*** as RAM (8296 only)", (ui_callback_t) toggle_Ram9, NULL, NULL }, { "*$A*** as RAM (8296 only)", (ui_callback_t) toggle_RamA, NULL, NULL }, { "--" }, { "Keyboard type", NULL, NULL, pet_keybd_submenu }, { "--" }, { "*Emulator identification", (ui_callback_t) toggle_EmuID, NULL, NULL }, { NULL } }; static ui_menu_entry_t pet_menu[] = { { "PET model settings", NULL, NULL, model_settings_submenu }, { "*PET userport diagnostic pin", (ui_callback_t) toggle_DiagPin, NULL, NULL }, { "--" }, { "Screen color", NULL, NULL, palette_submenu }, { NULL } }; /* ------------------------------------------------------------------------- */ int pet_ui_init(void) { #ifdef XPM { Pixmap icon_pixmap; /* Create the icon pixmap. */ XpmCreatePixmapFromData(display, DefaultRootWindow(display), icon_data, &icon_pixmap, NULL, NULL); ui_set_application_icon(icon_pixmap); } #endif ui_set_left_menu(ui_menu_create("LeftMenu", ui_disk_commands_menu, ui_menu_separator, ui_tape_commands_menu, ui_menu_separator, ui_smart_attach_commands_menu, ui_menu_separator, ui_directory_commands_menu, ui_menu_separator, ui_tool_commands_menu, ui_menu_separator, ui_help_commands_menu, ui_menu_separator, ui_run_commands_menu, ui_menu_separator, ui_exit_commands_menu, NULL)); ui_set_right_menu(ui_menu_create("RightMenu", ui_performance_settings_menu, ui_menu_separator, ui_video_settings_menu, ui_keyboard_settings_menu, ui_sound_settings_menu, ui_peripheral_settings_menu, joystick_settings_menu, ui_menu_separator, pet_menu, ui_menu_separator, ui_settings_settings_menu, NULL)); ui_update_menus(); ui_toggle_drive_status(0); return 0; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.