nkeynes@964: /** nkeynes@964: * $Id$ nkeynes@964: * nkeynes@964: * Management of the GDRom menu under cocoa nkeynes@964: * nkeynes@964: * Copyright (c) 2005 Nathan Keynes. nkeynes@964: * nkeynes@964: * This program is free software; you can redistribute it and/or modify nkeynes@964: * it under the terms of the GNU General Public License as published by nkeynes@964: * the Free Software Foundation; either version 2 of the License, or nkeynes@964: * (at your option) any later version. nkeynes@964: * nkeynes@964: * This program is distributed in the hope that it will be useful, nkeynes@964: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@964: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@964: * GNU General Public License for more details. nkeynes@964: */ nkeynes@964: nkeynes@964: nkeynes@964: #include nkeynes@964: #include nkeynes@964: #include nkeynes@964: #include nkeynes@964: #include nkeynes@964: #include "lxdream.h" nkeynes@964: #include "dreamcast.h" nkeynes@964: #include "dream.h" nkeynes@964: #include "gdlist.h" nkeynes@964: #include "cocoaui/cocoaui.h" nkeynes@964: nkeynes@964: void cocoa_gdrom_menu_build( NSMenu *menu ) nkeynes@964: { nkeynes@964: int i,len = gdrom_list_size(); nkeynes@964: for( i=0; i 0 ) { nkeynes@964: [ menu removeItemAtIndex: 0 ]; nkeynes@964: } nkeynes@964: nkeynes@964: cocoa_gdrom_menu_build( menu ); nkeynes@964: } nkeynes@964: nkeynes@964: gboolean cocoa_gdrom_menu_update( gboolean list_changed, int selection, void *user_data ) nkeynes@964: { nkeynes@964: // Create an auto-release pool - we may be called outside of the GUI main loop nkeynes@964: NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; nkeynes@964: NSMenu *menu = (NSMenu *)user_data; nkeynes@964: int i; nkeynes@964: nkeynes@964: if( list_changed ) { nkeynes@964: cocoa_gdrom_menu_rebuild(menu); nkeynes@964: } nkeynes@964: nkeynes@964: for( i=0; i< [menu numberOfItems]; i++ ) { nkeynes@964: if( i == selection ) { nkeynes@964: [[menu itemAtIndex: i] setState: NSOnState]; nkeynes@964: } else { nkeynes@964: [[menu itemAtIndex: i] setState: NSOffState]; nkeynes@964: } nkeynes@964: } nkeynes@964: [pool release]; nkeynes@964: return TRUE; nkeynes@964: } nkeynes@964: nkeynes@964: NSMenu *cocoa_gdrom_menu_new() nkeynes@964: { nkeynes@964: NSMenu *menu = [[NSMenu alloc] initWithTitle: @"GD-Rom Settings"]; nkeynes@964: cocoa_gdrom_menu_build(menu); nkeynes@964: nkeynes@964: register_gdrom_list_change_hook(cocoa_gdrom_menu_update, menu); nkeynes@964: cocoa_gdrom_menu_update( FALSE, gdrom_list_get_selection(), menu ); nkeynes@964: return menu; nkeynes@964: }