/* * Name: OgreFindPanelController.m * Project: OgreKit * * Creation Date: Sep 13 2003 * Author: Isao Sonobe <sonoisa (AT) muse (DOT) ocn (DOT) ne (DOT) jp> * Copyright: Copyright (c) 2003 Isao Sonobe, All rights reserved. * License: OgreKit License * * Encoding: UTF8 * Tabsize: 4 */ #import <OgreKit/OgreTextFinder.h> #import <OgreKit/OgreTextFindResult.h> #import <OgreKit/OgreFindPanelController.h> #import <OgreKit/OgreFindPanel.h> #import "GNUstep.h" @implementation OgreFindPanelController // é©åˆ‡ãªæ£è¦è¡¨ç¾ã‹ã©ã†ã‹èª¿ã¹ã‚‹ - (BOOL)alertIfInvalidRegex { NS_DURING [OGRegularExpression regularExpressionWithString: [[findPanel findTextField] stringValue] options: [self options] syntax: [self syntax] escapeCharacter: OgreBackslashCharacter]; NS_HANDLER // ä¾‹å¤–å‡¦ç† if ([[localException name] isEqualToString:OgreException]) { NSBeep(); // ä¸é©åˆ‡ãªæ£è¦è¡¨ç¾ã ã£ãŸå ´åˆ (éžå¸¸ã«æ‰‹æŠœã) } else { [localException raise]; } return NO; NS_ENDHANDLER return YES; } - (void) findNext: (id) sender { if (![self alertIfInvalidRegex]) return; OgreTextFindResult *result = [[self textFinder] find: [[findPanel findTextField] stringValue] options: [self options] fromTop: NO forward: YES wrap: YES]; if (![result isSuccess]) { NSLog(@"find next failed"); } } - (void) findPrevious: (id) sender { if (![self alertIfInvalidRegex]) return; OgreTextFindResult *result = [[self textFinder] find: [[findPanel findTextField] stringValue] options: [self options] fromTop: NO forward: NO wrap: YES]; if (![result isSuccess]) { NSLog(@"find previous failed"); } } - (void) replace: (id) sender { if (![self alertIfInvalidRegex]) return; OgreTextFindResult *result = [[self textFinder] replace: [[findPanel findTextField] stringValue] withString: [[findPanel replaceTextField] stringValue] options: [self options]]; if (![result isSuccess]) { NSLog(@"replace failed"); } } - (OgreTextFinder*)textFinder { return textFinder; } - (void)setTextFinder:(OgreTextFinder*)aTextFinder { textFinder = aTextFinder; } - (IBAction)showFindPanel:(id)sender { [findPanel makeKeyAndOrderFront:self]; // Windowsメニューã«Find Panelã‚’è¿½åŠ [NSApp addWindowsItem:findPanel title:[findPanel title] filename:NO]; } - (void)close { [findPanel orderOut:self]; } - (NSPanel*)findPanel { return findPanel; } - (void)setFindPanel:(NSPanel*)aPanel { ASSIGN(findPanel, aPanel); } - (unsigned int) options { return options; } - (void) setOptions: (unsigned int) o { options = o; } - (OgreSyntax) syntax { return syntax; } - (void) setSyntax: (OgreSyntax) o { [[self textFinder] setSyntax: o]; syntax = o; } // NSCoding protocols - (NSDictionary*)history { /* å±¥æ´ç‰ã‚’ä¿å˜ã—ãŸã„å ´åˆã¯ã€NSDictionaryã§è¿”ã™ã€‚ */ return [NSDictionary dictionary]; } @end