--- BasiliskII/src/Windows/prefs_editor_gtk.cpp 2006/04/30 21:46:31 1.13 +++ BasiliskII/src/Windows/prefs_editor_gtk.cpp 2009/07/23 19:19:13 1.17 @@ -1,7 +1,7 @@ /* * prefs_editor_gtk.cpp - Preferences editor, Unix implementation using GTK+ * - * Basilisk II (C) 1997-2005 Christian Bauer + * Basilisk II (C) 1997-2008 Christian Bauer * * 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 @@ -420,7 +420,7 @@ static void cb_about(...) char str[512]; sprintf(str, PROGRAM_NAME "\nVersion %d.%d\n\n" - "Copyright (C) 1997-2005 Christian Bauer et al.\n" + "Copyright (C) 1997-2008 Christian Bauer et al.\n" "E-mail: cb@cebix.net\n" #ifdef SHEEPSHAVER "http://sheepshaver.cebix.net/\n\n" @@ -1402,6 +1402,13 @@ static void mn_ether_b2ether(GtkWidget * PrefsReplaceString("etherguid", guid); } +// Ethernet option for Basilisk II driver selected +static void mn_ether_tap(GtkWidget *, const char *guid) +{ + PrefsReplaceString("ether", "tap"); + PrefsReplaceString("etherguid", guid); +} + // Create ethernet interfaces menu static int create_ether_menu(GtkWidget *menu) { @@ -1410,21 +1417,25 @@ static int create_ether_menu(GtkWidget * const char *ether = PrefsFindString("ether"); const char *etherguid = PrefsFindString("etherguid"); + // No Ethernet add_menu_item(menu, STR_NONE_LAB, (GtkSignalFunc)mn_ether_none); if (ether == NULL) active = n_items; n_items++; + // Basilisk II Router add_menu_item(menu, "Basilisk II Router", (GtkSignalFunc)mn_ether_router); if (ether && strcmp(ether, "router") == 0) active = n_items; n_items++; - add_menu_item(menu, "Basilisk II Slirp", (GtkSignalFunc)mn_ether_router); + // Basilisk II Slirp + add_menu_item(menu, "Basilisk II Slirp", (GtkSignalFunc)mn_ether_slirp); if (ether && strcmp(ether, "slirp") == 0) active = n_items; n_items++; + // Basilisk II Ethernet Adapter PacketOpenAdapter("", 0); { ULONG sz; @@ -1456,6 +1467,24 @@ static int create_ether_menu(GtkWidget * } PacketCloseAdapter(NULL); + // TAP-Win32 + const char *tap_devices; + if ((tap_devices = ether_tap_devices()) != NULL) { + const char *guid = tap_devices; + while (*guid) { + const char *name = ether_guid_to_name(guid); + if (name && (name = g_locale_to_utf8(name, -1, NULL, NULL, NULL))) { + add_menu_item(menu, name, (GtkSignalFunc)mn_ether_tap, strdup(guid)); + if (etherguid && strcmp(guid, etherguid) == 0 && + ether && strcmp(ether, "tap") == 0) + active = n_items; + n_items++; + } + guid += strlen(guid) + 1; + } + free((char *)tap_devices); + } + return active; } @@ -1581,12 +1610,10 @@ static void create_memory_pane(GtkWidget STR_RAMSIZE_128MB_LAB, STR_RAMSIZE_256MB_LAB, STR_RAMSIZE_512MB_LAB, -#ifndef SHEEPSHAVER STR_RAMSIZE_1024MB_LAB, -#endif 0 }; - char default_ramsize[10]; + char default_ramsize[16]; sprintf(default_ramsize, "%d", PrefsFindInt32("ramsize") >> 20); w_ramsize = table_make_combobox(table, 0, STR_RAMSIZE_CTRL, default_ramsize, options); @@ -1704,7 +1731,7 @@ int main(int argc, char *argv[]) gtk_init(&argc, &argv); // Read preferences - PrefsInit(argc, argv); + PrefsInit(NULL, argc, argv); // Migrate preferences PrefsMigrate();