Skip to content

Commit ce97183

Browse files
committed
Fix Edit Trigger sheet no working correctly in many localized versions (#2289)
1 parent 2aca7fa commit ce97183

File tree

2 files changed

+57
-22
lines changed

2 files changed

+57
-22
lines changed

Interfaces/English.lproj/DBView.xib

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9118,6 +9118,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
91189118
<reference key="NSOnImage" ref="803427867"/>
91199119
<reference key="NSMixedImage" ref="245717585"/>
91209120
<string key="NSAction">_popUpItemAction:</string>
9121+
<int key="NSTag">1</int>
91219122
<reference key="NSTarget" ref="556116646"/>
91229123
</object>
91239124
</array>
@@ -9174,6 +9175,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
91749175
<reference key="NSOnImage" ref="803427867"/>
91759176
<reference key="NSMixedImage" ref="245717585"/>
91769177
<string key="NSAction">_popUpItemAction:</string>
9178+
<int key="NSTag">1</int>
91779179
<reference key="NSTarget" ref="468443756"/>
91789180
</object>
91799181
<object class="NSMenuItem" id="766167700">
@@ -9185,6 +9187,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
91859187
<reference key="NSOnImage" ref="803427867"/>
91869188
<reference key="NSMixedImage" ref="245717585"/>
91879189
<string key="NSAction">_popUpItemAction:</string>
9190+
<int key="NSTag">2</int>
91889191
<reference key="NSTarget" ref="468443756"/>
91899192
</object>
91909193
</array>

Source/SPTableTriggers.m

Lines changed: 54 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,20 @@
4747
static const NSString *SPTriggerCreated = @"TriggerCreated";
4848
static const NSString *SPTriggerSQLMode = @"TriggerSQLMode";
4949

50+
typedef NS_ENUM(NSInteger, SPTriggerActionTimeTag) {
51+
SPTriggerActionTimeBeforeTag = 0,
52+
SPTriggerActionTimeAfterTag = 1
53+
};
54+
55+
typedef NS_ENUM(NSInteger, SPTriggerEventTag) {
56+
SPTriggerEventInsertTag = 0,
57+
SPTriggerEventUpdateTag = 1,
58+
SPTriggerEventDeleteTag = 2
59+
};
60+
61+
static SPTriggerActionTimeTag TagForActionTime(NSString *mysql);
62+
static SPTriggerEventTag TagForEvent(NSString *mysql);
63+
5064
@interface SPTableTriggers ()
5165

5266
- (void)_editTriggerAtIndex:(NSInteger)index;
@@ -208,18 +222,29 @@ - (IBAction)confirmAddTrigger:(id)sender
208222
}
209223

210224
NSString *triggerName = [triggerNameTextField stringValue];
211-
NSString *triggerActionTime = ([triggerActionTimePopUpButton indexOfSelectedItem]) ? @"AFTER" : @"BEFORE";
212-
NSString *triggerEvent = @"";
213225

214-
switch ([triggerEventPopUpButton indexOfSelectedItem])
226+
NSString *triggerActionTime = @"";
227+
switch ([triggerActionTimePopUpButton selectedTag])
228+
{
229+
case SPTriggerActionTimeBeforeTag:
230+
triggerActionTime = @"BEFORE";
231+
break;
232+
233+
case SPTriggerActionTimeAfterTag:
234+
triggerActionTime = @"AFTER";
235+
break;
236+
}
237+
238+
NSString *triggerEvent = @"";
239+
switch ([triggerEventPopUpButton selectedTag])
215240
{
216-
case 0:
241+
case SPTriggerEventInsertTag:
217242
triggerEvent = @"INSERT";
218243
break;
219-
case 1:
244+
case SPTriggerEventUpdateTag:
220245
triggerEvent = @"UPDATE";
221246
break;
222-
case 2:
247+
case SPTriggerEventDeleteTag:
223248
triggerEvent = @"DELETE";
224249
break;
225250
}
@@ -531,23 +556,9 @@ - (void)_editTriggerAtIndex:(NSInteger)index
531556
[triggerNameTextField setStringValue:[trigger objectForKey:SPTriggerName]];
532557
[triggerStatementTextView setString:[trigger objectForKey:SPTriggerStatement]];
533558

534-
// Timin title is different then what we have saved in the database (case difference)
535-
for (NSUInteger i = 0; i < [[triggerActionTimePopUpButton itemArray] count]; i++)
536-
{
537-
if ([[[triggerActionTimePopUpButton itemTitleAtIndex:i] uppercaseString] isEqualToString:[[trigger objectForKey:SPTriggerActionTime] uppercaseString]]) {
538-
[triggerActionTimePopUpButton selectItemAtIndex:i];
539-
break;
540-
}
541-
}
559+
[triggerActionTimePopUpButton selectItemWithTag:TagForActionTime([trigger objectForKey:SPTriggerActionTime])];
542560

543-
// Event title is different then what we have saved in the database (case difference)
544-
for (NSUInteger i = 0; i < [[triggerEventPopUpButton itemArray] count]; i++)
545-
{
546-
if ([[[triggerEventPopUpButton itemTitleAtIndex:i] uppercaseString] isEqualToString:[[trigger objectForKey:SPTriggerEvent] uppercaseString]]) {
547-
[triggerEventPopUpButton selectItemAtIndex:i];
548-
break;
549-
}
550-
}
561+
[triggerEventPopUpButton selectItemWithTag:TagForEvent([trigger objectForKey:SPTriggerEvent])];
551562

552563
// Change button label from Add to Edit
553564
[confirmAddTriggerButton setTitle:NSLocalizedString(@"Save", @"Save trigger button label")];
@@ -642,3 +653,24 @@ - (void)dealloc
642653
}
643654

644655
@end
656+
657+
#pragma mark -
658+
659+
SPTriggerActionTimeTag TagForActionTime(NSString *mysql)
660+
{
661+
NSString *uc = [mysql uppercaseString];
662+
if([uc isEqualToString:@"BEFORE"]) return SPTriggerActionTimeBeforeTag;
663+
if([uc isEqualToString:@"AFTER"]) return SPTriggerActionTimeAfterTag;
664+
SPLog(@"Unknown trigger action time: %@",uc);
665+
return -1;
666+
}
667+
668+
SPTriggerEventTag TagForEvent(NSString *mysql)
669+
{
670+
NSString *uc = [mysql uppercaseString];
671+
if([uc isEqualToString:@"INSERT"]) return SPTriggerEventInsertTag;
672+
if([uc isEqualToString:@"UPDATE"]) return SPTriggerEventUpdateTag;
673+
if([uc isEqualToString:@"DELETE"]) return SPTriggerEventDeleteTag;
674+
SPLog(@"Unknown trigger event: %@",uc);
675+
return -1;
676+
}

0 commit comments

Comments
 (0)