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