Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix Edit Trigger sheet no working correctly in many localized versions (
  • Loading branch information
dmoagx committed Oct 15, 2015
1 parent 2aca7fa commit ce97183
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 22 deletions.
3 changes: 3 additions & 0 deletions Interfaces/English.lproj/DBView.xib
Expand Up @@ -9118,6 +9118,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<reference key="NSOnImage" ref="803427867"/>
<reference key="NSMixedImage" ref="245717585"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">1</int>
<reference key="NSTarget" ref="556116646"/>
</object>
</array>
Expand Down Expand Up @@ -9174,6 +9175,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<reference key="NSOnImage" ref="803427867"/>
<reference key="NSMixedImage" ref="245717585"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">1</int>
<reference key="NSTarget" ref="468443756"/>
</object>
<object class="NSMenuItem" id="766167700">
Expand All @@ -9185,6 +9187,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<reference key="NSOnImage" ref="803427867"/>
<reference key="NSMixedImage" ref="245717585"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">2</int>
<reference key="NSTarget" ref="468443756"/>
</object>
</array>
Expand Down
76 changes: 54 additions & 22 deletions Source/SPTableTriggers.m
Expand Up @@ -47,6 +47,20 @@
static const NSString *SPTriggerCreated = @"TriggerCreated";
static const NSString *SPTriggerSQLMode = @"TriggerSQLMode";

typedef NS_ENUM(NSInteger, SPTriggerActionTimeTag) {
SPTriggerActionTimeBeforeTag = 0,
SPTriggerActionTimeAfterTag = 1
};

typedef NS_ENUM(NSInteger, SPTriggerEventTag) {
SPTriggerEventInsertTag = 0,
SPTriggerEventUpdateTag = 1,
SPTriggerEventDeleteTag = 2
};

static SPTriggerActionTimeTag TagForActionTime(NSString *mysql);
static SPTriggerEventTag TagForEvent(NSString *mysql);

@interface SPTableTriggers ()

- (void)_editTriggerAtIndex:(NSInteger)index;
Expand Down Expand Up @@ -208,18 +222,29 @@ - (IBAction)confirmAddTrigger:(id)sender
}

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

switch ([triggerEventPopUpButton indexOfSelectedItem])
NSString *triggerActionTime = @"";
switch ([triggerActionTimePopUpButton selectedTag])
{
case SPTriggerActionTimeBeforeTag:
triggerActionTime = @"BEFORE";
break;

case SPTriggerActionTimeAfterTag:
triggerActionTime = @"AFTER";
break;
}

NSString *triggerEvent = @"";
switch ([triggerEventPopUpButton selectedTag])
{
case 0:
case SPTriggerEventInsertTag:
triggerEvent = @"INSERT";
break;
case 1:
case SPTriggerEventUpdateTag:
triggerEvent = @"UPDATE";
break;
case 2:
case SPTriggerEventDeleteTag:
triggerEvent = @"DELETE";
break;
}
Expand Down Expand Up @@ -531,23 +556,9 @@ - (void)_editTriggerAtIndex:(NSInteger)index
[triggerNameTextField setStringValue:[trigger objectForKey:SPTriggerName]];
[triggerStatementTextView setString:[trigger objectForKey:SPTriggerStatement]];

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

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

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

@end

#pragma mark -

SPTriggerActionTimeTag TagForActionTime(NSString *mysql)
{
NSString *uc = [mysql uppercaseString];
if([uc isEqualToString:@"BEFORE"]) return SPTriggerActionTimeBeforeTag;
if([uc isEqualToString:@"AFTER"]) return SPTriggerActionTimeAfterTag;
SPLog(@"Unknown trigger action time: %@",uc);
return -1;
}

SPTriggerEventTag TagForEvent(NSString *mysql)
{
NSString *uc = [mysql uppercaseString];
if([uc isEqualToString:@"INSERT"]) return SPTriggerEventInsertTag;
if([uc isEqualToString:@"UPDATE"]) return SPTriggerEventUpdateTag;
if([uc isEqualToString:@"DELETE"]) return SPTriggerEventDeleteTag;
SPLog(@"Unknown trigger event: %@",uc);
return -1;
}

0 comments on commit ce97183

Please sign in to comment.