SolarisのCDE環境に付属する謎(?)のツール、アプリケーションビルダ

遅ればせながら岩手県立大学 Advent Calendar 2020 第9日目の記事です。
今日はデスクトップ環境CDEに含まれている謎(?)のツール、「アプリケーションビルダ」の話をしようと思います。
(例によって我々の世界とは時間軸が完全に一致していない可能性があります...)

f:id:furandon_pig:20201216072956p:plain

GUIアプリケーションビルダ?

ソフトウェア演習で利用しているSolarisには、「アプリケーションビルダ」という謎のツールが付属しています。謎、というのは、このツールの使い方がイマイチ良く分からないのに加え、マニュアルを見てもどうGUIを構築するのかがやはり見えてこない点にあります。

man dtbuilder によると、どうやらCDE向けのGUI管理機能を備えたアプリケーション構築ツールのようです。

$ man dtbuilder
User Commands                                        dtbuilder(1)

Name
     dtbuilder - the CDE Application Builder

SYNOPSIS
     dtbuilder [projectfile]

DESCRIPTION
     The dtbuilder utility is an interactive application develop-
     ment tool and user interface management system for CDE.
     Known more fully as the CDE Application Builder, dtbuilder
     is designed to make it easier for developers to construct
     applications that integrate well into the CDE.  It provides
     two basic services - aid in assembling Motif objects into
     the desired application user interface and generation of
     appropriate calls to the routines that support CDE desktop
     services (e.g. ToolTalk, sessioning, Help).

debuilder コマンドでアプリケーションビルダを起動できます。

$ which dtbuilder
/usr/dt/bin/dtbuilder
$ dtbuilder &

なにやらそっけない感じのウインドウが表示されます。

f:id:furandon_pig:20201216072952p:plain

アプリケーションビルダでGUIを構築してみる

試しに簡単なGUIを作ってみます。左側の「ウインドウ」のアイコンをドラッグすると、「モジュール名」というダイアログが表示されます。どうやらこのようにしてアプリケーションウインドウを作ってゆくようです。

さらに「コントロール」ペインからボタンやラベルといったよく見かけるGUI部品をウインドウに配置してみます。

f:id:furandon_pig:20201216073031p:plainf:id:furandon_pig:20201216073027p:plain

とりあえずビルドしてみる

ビルドはどうすれば良いのだろうと思っていたのですが、どうやらアプリケーションビルダのメニューから「ファイル(F)」-「コードジェネレータ(G)...」で表示されるダイアログでコードの生成とmakeの実行まで行えることが分かりました。

f:id:furandon_pig:20201216073020p:plainf:id:furandon_pig:20201216073016p:plain

が、何やら make の実行でビルドエラーが出ます...。

f:id:furandon_pig:20201216073013p:plain

落ち着いてエラーメッセージを読むと、 DTHELP_WARNING_DISABLED マクロを定義してビルドすると良いよ!的なことが書いてあります。 #define で指定する方法とCFLAGSに -DDTHELP_WARNING_DISABLED を追加するいずれかの方法で対応できそうだったので、今回はCFLAGSでマクロを定義する方法にしました。

$ diff -u Makefile.ORIG Makefile
--- Makefile.ORIG       Mon Dec 14 07:41:50 2020
+++ Makefile    Mon Dec 14 07:42:30 2020
@@ -30,7 +30,7 @@
         ALLX_LDFLAGS = -L$(ALLX_LIBPATH) -R$(ALLX_LIBPATH)
         LOCAL_LIBRARIES = -lDtWidget -lDtHelp -lDtSvc -lXm -lXt -lXext -lX11

-        CFLAGS = $(CDEBUGFLAGS) $(INCLUDES) $(STD_DEFINES) $(ANSI_DEFINES)
+        CFLAGS = $(CDEBUGFLAGS) $(INCLUDES) $(STD_DEFINES) $(ANSI_DEFINES) -DDTHELP_WARNING_DISABLED
         CCFLAGS = $(CFLAGS)
         LDLIBS = $(SYS_LIBRARIES)
         LDOPTIONS = $(CDE_LDFLAGS) $(ALLX_LDFLAGS)

無事にビルドが通りました!

f:id:furandon_pig:20201216073011p:plain

文字化けとの闘い

ビルドが通ったのは良いのですが、アプリケーションを実行してみるとボタンやラベルが文字化けしています...。

f:id:furandon_pig:20201216073008p:plain

おそらくどこかに多言語向けのコード生成を行わせるようにする設定があるのでしょう。アプリケーションビルダのメニューを見ると、「エディタ(d)」-「アプリケーション・フレームワーク(A)」というメニューがあります。

f:id:furandon_pig:20201216073005p:plain

そこには「国際化」という項目があり、デフォルト設定では「使用する:」のチェックが外れていました。このチェックを入れて再ビルドしてみます。

f:id:furandon_pig:20201216073002p:plain

今度は無事に文字化けせずに表示できました!

f:id:furandon_pig:20201216072959p:plain

まとめ

デスクトップ環境CDEに含まれているツール、アプリケーションビルダを簡単に触ってみました。実はこのツールはMotif)というGUIライブラリを利用してアプリケーションを構築するためのもので、どうやら9日目の記事で紹介したJava Swingよりもちょっと古いお作法でのGUIアプリケーション開発になるようなイメージです。

機会があれば、このアプリケーションビルダを利用してちょっとしたサンプルを作ってみたいと思います。