| 111 | | NSMenu* file_menu = [self getRecentFilesMenu]; |
|---|
| 112 | | |
|---|
| 113 | | if ( file_menu ) |
|---|
| 114 | | { |
|---|
| 115 | | const unsigned int count = [mRecentCfgFiles count]; |
|---|
| 116 | | |
|---|
| 117 | | for ( unsigned int i = 0; i < count; ++i ) |
|---|
| 118 | | { |
|---|
| 119 | | [self insertCfgFileItem:[mRecentCfgFiles objectAtIndex:i] |
|---|
| 120 | | accel:[NSString stringWithFormat:@"%d", i] |
|---|
| 121 | | index:i]; |
|---|
| 122 | | } |
|---|
| | 111 | const unsigned int count = [mRecentCfgFiles count]; |
|---|
| | 112 | |
|---|
| | 113 | NSDocumentController* doc_ctrl = |
|---|
| | 114 | [NSDocumentController sharedDocumentController]; |
|---|
| | 115 | |
|---|
| | 116 | for ( unsigned int i = 0; i < count; ++i ) |
|---|
| | 117 | { |
|---|
| | 118 | NSURL* url = |
|---|
| | 119 | [NSURL fileURLWithPath:[mRecentCfgFiles objectAtIndex:i]]; |
|---|
| | 120 | [doc_ctrl noteNewRecentDocumentURL:url]; |
|---|
| 237 | | NSMenu* files_menu = [self getRecentFilesMenu]; |
|---|
| 238 | | |
|---|
| 239 | | // NOTE: The mMaxRecentFiles + 2 accounts for the separator item and the |
|---|
| 240 | | // "Clear Menu" item after the separator. |
|---|
| 241 | | if ( files_menu && [files_menu numberOfItems] > mMaxRecentFiles + 2 ) |
|---|
| 242 | | { |
|---|
| 243 | | [files_menu removeItemAtIndex:0]; |
|---|
| 244 | | |
|---|
| 245 | | for ( int i = 0; i < mMaxRecentFiles; ++i ) |
|---|
| 246 | | { |
|---|
| 247 | | NSMenuItem* item = [files_menu itemAtIndex:i]; |
|---|
| 248 | | [item setKeyEquivalent:[NSString stringWithFormat:@"%d", i]]; |
|---|
| 249 | | } |
|---|
| 250 | | } |
|---|
| 251 | | |
|---|
| 252 | | if ( files_menu ) |
|---|
| 253 | | { |
|---|
| 254 | | const int index = [files_menu indexOfItemWithTitle:fileName]; |
|---|
| 255 | | |
|---|
| 256 | | if ( index == NSNotFound ) |
|---|
| 257 | | { |
|---|
| 258 | | int insert_index(0); |
|---|
| 259 | | const int count = [files_menu numberOfItems]; |
|---|
| 260 | | |
|---|
| 261 | | for ( int i = 0; i < count; ++i ) |
|---|
| 262 | | { |
|---|
| 263 | | NSMenuItem* item = [files_menu itemAtIndex:i]; |
|---|
| 264 | | |
|---|
| 265 | | if ( [item isSeparatorItem] ) |
|---|
| 266 | | { |
|---|
| 267 | | insert_index = i - 1; |
|---|
| 268 | | break; |
|---|
| 269 | | } |
|---|
| 270 | | } |
|---|
| 271 | | |
|---|
| 272 | | [self insertCfgFileItem:fileName |
|---|
| 273 | | accel:[NSString stringWithFormat:@"%d", 0] |
|---|
| 274 | | index:insert_index]; |
|---|
| 275 | | } |
|---|
| 276 | | } |
|---|
| | 230 | NSDocumentController* doc_ctrl = |
|---|
| | 231 | [NSDocumentController sharedDocumentController]; |
|---|
| | 232 | [doc_ctrl noteNewRecentDocumentURL:[NSURL fileURLWithPath:fileName]]; |
|---|
| 331 | | NSMenu* menu = [sender menu]; |
|---|
| 332 | | const int init_size = [menu numberOfItems]; |
|---|
| 333 | | |
|---|
| 334 | | for ( int i = 0; i < init_size; ++i ) |
|---|
| 335 | | { |
|---|
| 336 | | NSMenuItem* item = [menu itemAtIndex:0]; |
|---|
| 337 | | |
|---|
| 338 | | if ( [item isSeparatorItem] || |
|---|
| 339 | | [[item title] isEqualToString:@"Clear Menu"] ) |
|---|
| 340 | | { |
|---|
| 341 | | break; |
|---|
| 342 | | } |
|---|
| 343 | | else |
|---|
| 344 | | { |
|---|
| 345 | | [menu removeItem:item]; |
|---|
| 346 | | } |
|---|
| 347 | | } |
|---|
| 348 | | |
|---|
| | 287 | NSDocumentController* doc_ctrl = |
|---|
| | 288 | [NSDocumentController sharedDocumentController]; |
|---|
| | 289 | [doc_ctrl clearRecentDocuments:sender]; |
|---|
| 351 | | |
|---|
| 352 | | -(NSMenu*) getRecentFilesMenu |
|---|
| 353 | | { |
|---|
| 354 | | NSMenu* files_menu = nil; |
|---|
| 355 | | NSApplication* app = [NSApplication sharedApplication]; |
|---|
| 356 | | NSMenuItem* item = [[app mainMenu] itemWithTitle:@"File"]; |
|---|
| 357 | | |
|---|
| 358 | | if ( item ) |
|---|
| 359 | | { |
|---|
| 360 | | item = [[item submenu] itemWithTitle:@"Open Recent"]; |
|---|
| 361 | | |
|---|
| 362 | | if ( item ) |
|---|
| 363 | | { |
|---|
| 364 | | files_menu = [item submenu]; |
|---|
| 365 | | } |
|---|
| 366 | | } |
|---|
| 367 | | |
|---|
| 368 | | return files_menu; |
|---|
| 369 | | } |
|---|
| 370 | | |
|---|
| 371 | | -(NSMenuItem*) insertCfgFileItem:(NSString*) title |
|---|
| 372 | | accel:(NSString*) accel |
|---|
| 373 | | index:(int) index |
|---|
| 374 | | { |
|---|
| 375 | | NSMenu* menu = [self getRecentFilesMenu]; |
|---|
| 376 | | NSMenuItem* item = [menu insertItemWithTitle:title |
|---|
| 377 | | action:@selector(loadConfigFile:) |
|---|
| 378 | | keyEquivalent:accel |
|---|
| 379 | | atIndex:index]; |
|---|
| 380 | | [item setKeyEquivalentModifierMask:NSCommandKeyMask]; |
|---|
| 381 | | NSLog(@"Inserted item %@ at index %d in menu %@\n", item, index, menu); |
|---|
| 382 | | |
|---|
| 383 | | return item; |
|---|
| 384 | | } |
|---|