added possibility to choose Voice
This commit is contained in:
parent
2d5efe26f6
commit
c854b97b29
6 changed files with 479 additions and 339 deletions
BIN
.DS_Store
vendored
Normal file
BIN
.DS_Store
vendored
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEWorkspaceUserSettings_HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges</key>
|
||||
<true/>
|
||||
<key>IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
|
@ -11,6 +11,8 @@
|
|||
@interface SpeakerAppDelegate : NSObject <NSApplicationDelegate, NSSpeechSynthesizerDelegate> {
|
||||
NSWindow *window;
|
||||
NSTextView *textView;
|
||||
NSMenu *languageMenu;
|
||||
NSPopUpButton *languageMenuPopupButton;
|
||||
NSSpeechSynthesizer *synth;
|
||||
NSRange oldRange;
|
||||
BOOL isNewLocation;
|
||||
|
@ -18,6 +20,8 @@
|
|||
|
||||
@property (assign) IBOutlet NSWindow *window;
|
||||
@property (retain, nonatomic) IBOutlet NSTextView *textView;
|
||||
@property (assign) IBOutlet NSMenu *languageMenu;
|
||||
@property (assign) IBOutlet NSPopUpButton *languageMenuPopupButton;
|
||||
|
||||
-(IBAction)speakAction:(id)sender;
|
||||
-(IBAction)seekForward:(id)sender;
|
||||
|
@ -26,4 +30,7 @@
|
|||
-(void)stopSpeaking;
|
||||
-(void)startSpeaking;
|
||||
|
||||
- (void)changeLanguage:(id)sender;
|
||||
- (void)changeVoiceGender:(id)sender;
|
||||
|
||||
@end
|
||||
|
|
|
@ -8,7 +8,13 @@
|
|||
|
||||
#import "SpeakerAppDelegate.h"
|
||||
|
||||
@interface SpeakerAppDelegate (private)
|
||||
- (void)initLanugageMenu;
|
||||
@end
|
||||
|
||||
@implementation SpeakerAppDelegate
|
||||
@synthesize languageMenu;
|
||||
@synthesize languageMenuPopupButton;
|
||||
|
||||
@synthesize window, textView;
|
||||
|
||||
|
@ -29,6 +35,49 @@
|
|||
[textView setSelectedRange:aRange];
|
||||
[textView scrollRangeToVisible:aRange];
|
||||
}
|
||||
|
||||
[self initLanugageMenu];
|
||||
}
|
||||
|
||||
- (void)initLanugageMenu
|
||||
{
|
||||
NSInteger start = [[NSUserDefaults standardUserDefaults] integerForKey:@"languageVoiceIndex"];
|
||||
|
||||
NSLocale *currentLocale = [NSLocale currentLocale];
|
||||
NSArray *voices = [NSSpeechSynthesizer availableVoices];
|
||||
|
||||
[self.languageMenu removeAllItems];
|
||||
for (NSInteger i = 0; i < [voices count]; i++)
|
||||
{
|
||||
NSDictionary *dict = [NSSpeechSynthesizer attributesForVoice:[voices objectAtIndex:i]];
|
||||
if (i == 0) {
|
||||
NSLog(@"%@", dict);
|
||||
}
|
||||
|
||||
NSString *country = [currentLocale displayNameForKey:NSLocaleIdentifier value:[dict objectForKey:@"VoiceLocaleIdentifier"]];
|
||||
|
||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@"%@ - %@", country, [dict objectForKey:@"VoiceName"]] action:@selector(changeLanguage:) keyEquivalent:@""];
|
||||
item.tag = i;
|
||||
[self.languageMenu addItem:item];
|
||||
[item release];
|
||||
|
||||
if (![[NSUserDefaults standardUserDefaults] objectForKey:@"languageVoiceIndex"] && [[dict objectForKey:@"VoiceName"] isEqualToString:@"Alex"])
|
||||
{
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
|
||||
[self.languageMenuPopupButton selectItemAtIndex:start];
|
||||
}
|
||||
|
||||
- (void)changeLanguage:(id)sender
|
||||
{
|
||||
NSInteger index = [(NSMenuItem *)sender tag];
|
||||
NSString *voice = [[NSSpeechSynthesizer attributesForVoice:[[NSSpeechSynthesizer availableVoices] objectAtIndex:index]] objectForKey:@"VoiceIdentifier"];
|
||||
[synth setVoice:voice];
|
||||
[[NSUserDefaults standardUserDefaults] setInteger:index forKey:@"languageVoiceIndex"];
|
||||
|
||||
[self.languageMenuPopupButton selectItemAtIndex:index];
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(NSNotification *)aNotification {
|
||||
|
@ -103,6 +152,11 @@
|
|||
[textView display];
|
||||
}
|
||||
|
||||
- (void)changeVoiceGender:(id)sender
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
- (void)speechSynthesizer:(NSSpeechSynthesizer *)sender didFinishSpeaking:(BOOL)success {
|
||||
[textView setEditable:YES];
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue