[C++] 112 FLTK : 条件付きコンパイル #ifdef

[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]

通常モードと開発モードによってGUIの内容を変えるため条件付きコンパイルを設定しました。

#ifdefは様々な公開ソースコードで目にする機会が多く、前から使ってみたいと思っていました。共同開発ではメンテナンス性に影響するとのことであまり好まれない現場もあるようです。

これまでFl_Inputなどに隠しコマンドを設定してウィンドウを出現させたりしていましたが、コードの可読性が損なわれるので控えるようにします。

#ifdef DEV
    static Fl_Menu_Item	items[] = {
    { "設定", 0, 0, 0, FL_SUBMENU },
    { "履歴消去", 0, deleteHistory, 0, 0 },
    { "開発モード", 0, showSubWindow, 0, 0 },
    { 0 },
    { 0 }
    };
#else
    static Fl_Menu_Item	items[] = {
    { "設定", 0, 0, 0, FL_SUBMENU },
    { "履歴消去", 0, deleteHistory, 0, 0 },
    { 0 },
    { 0 }
    };
#endif
--------------------------------------------------
#ifdef DEV
    window2 = new Fl_Window(750,50,360,480,"出力用");
    window2->color(fl_rgb_color(238,238,238));

    // output
    output_line2 = new Fl_Multiline_Output(0,0,360,480,"");
    output_line2->textsize(12);
    
    window2->end();
#else
#endif
# オプション設定 -D+マクロ名
CPPFLAGS = -std=c++17 -DDEV

[C++] 111 FLTK:子ウィジェットの座標 その2 モーダルダイアログ

[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]

“[C++] 31 FLTK:子ウィジェットの座標”の続編です。

親ウィンドウを動かした後に生成したモーダルダイアログが親ウィンドウの相対位置になっていない問題を解決することができました。

親ウィンドウのx_root, y_rootを取得すれば済む話でした。これはすぐに解らないといけない、と反省です。

Fl_Window *window;
modalDialog *dlg;

const char* msg = "該当する色はありません";
dlg = new modalDialog(400, 200, "Attention", msg);
dlg->hotspot(window);

int x_win = window->x_root();
int y_win = window->y_root();
cout<<"x_win "<< x_win <<" y_win "<< y_win <<endl;

dlg->resize(x_win+205, y_win+165,250,150);
dlg->set_modal();
dlg->show();

[C++] 110 FLTKアプリのApple公証 その2

[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]

“[C++] 08 FLTKアプリのApple公証”の続編です。前編を書いたのは今年3月ですから4ヶ月でC++関連記事を100書いたことになります。短編ばかりとは言え、書きも書いたりといったところです。

製作したアプリを配布するにはApple公証を取得する必要があります。新しいアプリの手続きをするのは昨年12月以来で大分忘れていました。再度この記事にまとめておきます。

Apple公証手続き方法

1.アプリ用パスワードを取得する。公式サイトの”How to generate an app-specific password”に従って作成する。
取得時のサイトの案内がとても分かりにくくてとまどいます。登録したいパスワードの入力を促している様にしか見えないので要注意です。
最初に入力するのは任意の名称です。パスワード自体はAppleが発行します。UIにはこだわるのにローカライズはいい加減なところが散見されます。

公式サイト

2.以下コマンドでパスワードを登録しておくと今後直に入力しなくて済みます。AC_PASSWORDは任意の登録パスワード名です。

xcrun altool --store-password-in-keychain-item "AC_PASSWORD" -u "開発者メールアドレス" -p アプリ用パスワード

3.アプリに署名し、アプリ用パスワードを使ってzipファイルを提出する。
下図の様なエラーになった場合は以下サイトにアクセスして内容に同意する。
https://appstoreconnect.apple.com/

4.”Your Mac software was successfully notarized.”というタイトルのメールが届いたら公証手続きは完了。アプリへの紐付けを行う。ステープラーで留めるとも言います。