[M1 Mac, Big Sur 11.6.7, clang 13.0.0, no Xcode]
TextFieldにペーストしたファイルパスの接尾語として.xlsxが含まれていなければアラート表示するようにしました。いわゆるモーダルダイアログです。
これまで扱ってきたプログラミング言語ではhasSuffixのような便利なメソッドはなかったので少し感動しました。もちろんhasPrefixで接頭語も検索できます。
先日、筋悪なコード絡みでボツにしたNSWindowの座標取得が早くも日の目を見ました。アラートの絶対座標設定に使っています。
<case1のみ>
// NSWindowを取得
NSArray *windowsArray = [NSApp orderedWindows];
NSLog(@"windowsArray %@", windowsArray);
NSWindow *currentWindow = [windowsArray objectAtIndex:0];
// NSWindowの絶対座標を取得し、アラートの原点となる左下座標のNSPointを作成
NSRect contentRect = [currentWindow frame];
float x = NSMinX(contentRect);
float y = NSMinY(contentRect);
NSPoint xy = NSMakePoint(x+50, y-150);
switch (rbtn_num){
case 1:{
path = [_delegateW getTextBox1];
BOOL judge = [path hasSuffix:@".xlsx"];
if (!judge){
NSAlert *alert = [[NSAlert alloc] init];
[alert.window setFrameOrigin:xy];
[alert.window makeKeyAndOrderFront:nil];
[alert addButtonWithTitle:@"OK"];
[alert addButtonWithTitle:@"キャンセル"];
alert.showsSuppressionButton = false;
alert.messageText = @"This input is invalid!";
// alert.informativeText = @"詳細情報";
alert.alertStyle = NSAlertStyleWarning;
[alert runModal];
// 今回はOK, キャンセルで閉じるだけ
// 処理を変える場合は下記参照
// NSModalResponse ret = [alert runModal];
// switch (ret) {
// case NSAlertFirstButtonReturn:
// NSLog(@"OK");
// NSLog(@"suppressionButton:%ld", alert.suppressionButton.state);
// break;
// case NSAlertSecondButtonReturn:
// NSLog(@"キャンセル");
// break;
// default:
// break;
// }
break;
}
convert = [[Convert alloc] init];
result = [convert ConvertFunc:path number:rbtn_num];
[textview setString:result];
break;
}