印刷ダイアログの作成

2007/08/22

久しぶりの連休を使って「主筆」の開発作業を進めている。この数日は、今まで作ってきた印刷機能の実装を継続して行っている。

テキストをPostScriptに変換するところはすでにできているから、後は印刷ダイアログを作って、「主筆」の本体からPostScriptを出力できるようにしてやるだけだ。だが、この印刷ダイアログという奴がなかなかの難物であることが判った。

テキストをPostScriptに変換するには、数多くの引数を渡してやらなければならない。紙の大きさや方向・ヘッダやフッタ・余白などいろいろなパラメタがある。そいつらを全部入力できるようなダイアログを作ってやらなければならない。

Windows上でVBやVCで作るのであれば、それ程大したことでもないのだが、Motifで実現するとなると、意想外に苦労させられる。どうにもウィジットが思うような位置に行ってくれなかったり、リストやコンボボックスの使い勝手がよく分からなかったり、良い感じに入力制限をかけることができなかったりする。まぁ、これは前から判っていた事でもあるのだが。

それと、思っていた以上に開発工数が嵩んだのが、デフォルト値の指定と、一度入力された値の保存に関する機能だ。さっきも書いたが、入力項目の数が多い。その為、印刷する都度全ての項目を入力し直さなければならないというのでは余りにも使い勝手が悪い。だから、一度入力された値は、再度入力し直さなくても良いような仕掛けが必要となる。

方法としてはごく単純で、全ての入力項目を、ホームディレクトリ内にINIファイルの形式で出力してあげて、次に印刷する際にはそのINIファイルの中身を読み込み、デフォルト値として表示してあげるようにするだけだ。しかし、何分項目数が多いから、面倒なことこの上ない。

お陰で、印刷ダイアログの作り込みだけで夏休みが全部消えてなくなりそうな勢いだ。全く酷い話だ。だが、まぁいい。

それと全然関係ないのだが、印刷機能を作る傍ら、時々気分転換にホームページのデザインの変更をやってみたりもしている。とりあえず今日は、トップページにあるネェちゃんの絵を替えてみた。

暑い上にエアコンも壊れているから、水着にしてしまった。



ビキニではなくワンピースなのは、純粋に俺の趣味の問題だ。

まぁ、気が変わったらまた元に戻すことになるだろう。

非X下でのxdesigner

2007/08/18

主筆」はSun Studio 11に含まれているX-Designerを用いて開発されている。そのため、コンパイル時にもxdesignerというコマンドを用いて、設計されたUIを表示するCのコードを生成するようになっている。

当然だが、コンパイラやその他諸々のツール類は、コンパイル時に何らかのウインドウを表示したりするようなことはない。むろん、xdesignerもそうだ。

だが、このxdesignerというやつは、Xが利用できない環境下では動作しないことがわかった。

このソフトは、ウインドウを表示して、対話的にUIのデザインを行うソフトである。だから、基本的にはXが必須なソフトではある。これはわかる。だが、コンパイル時には対話的な動作はなく、単に入力ファイルを読み込み、Cのコードを出すだけだから、Xがなくても動くだろうと思っていたのだが、そうではなかったようだ。

コンパイル時のOSのバージョンに関する問題から、俺はリモートのマシンで自動的にコンパイルしてくれる環境を作り込んでいたのだが、上記のようなしょっぱい理由で頓挫した。どうやら、「主筆」をリモートマシンでコンパイルするには、その都度相手のホストにXで繋いで、その上でコンパイルしなければならないようだ。

面倒なことこの上ない。

だがまぁ、いいだろう。これは、それほど頻繁にある作業ではないはずだ。ないはずだが、こういった細かい事象が、モチベーションを少しずつ削っていく。それも事実だ。

どこかで、気が向いたら是正するようにしよう。

リモートマシンでの自動コンパイル1

2007/08/14

「主筆」では、一応ソースコードも配布している。しかし、ソースコード配布用の圧縮ファイルは、今まで全て手作業で作っていた。しかしそれだと、どうにも面倒くさい上に間違えやすいため、自動化することにした。要は、ファイルを集めて圧縮するコマンドを羅列したシェルスクリプトを作成するだけなのだが。

今まで、俺が使用しているFire v250にはSolaris 8を入れてあったのだが、何となく気に入らなくなってきたからSolaris 10に変えることにした。しかし、そうなると問題が一つ発生する。今までSolaris 8を使ってきた理由でもあるのだが、Solarisでは下位のバージョンのOSでコンパイルした実行バイナリを上位のバージョンのOSで動作させることはできるのだが、その逆はできないということになっている。だから、「主筆」は意図的に古いOSの上で作るようにしてきた。

だが、それを無視して開発用のマシンにSolaris 10を入れるのであれば、それ相応の対処が必要になる。だから俺は、ある特定の目的以外には余り使用していないBlade 100(Solaris8が入っている)でコンパイルしてテストすることにした。だからその為に、簡単なコマンドだけでリモートのマシン(つまりBlade 100のホスト)でコンパイルできるような環境を整える必要があった。そういった意味でも、ソースコード配布用の圧縮ファイルの自動生成が必要になってきたのだ。

本来なら、余り本質的な事ではないし、もとより少ない時間を割いて作っているのだから、こういった作業には時間をかけたくないのだが、やらねばならないものは致し方がない。

とりあえず、昨日の夜の作業だけで圧縮ファイルを生成するところまではできた。後は、リモートのマシンにファイルを送って、コンパイルして、できたファイルを落としてくる処理を自動化するだけだ。だが、これは何か面倒な予感がする。

熱帯夜

2007/08/05

土曜日の夜は暑かった。あまりに暑くて、とうとう扇風機を買ってきてしまった。

エアコンはついてないことはないのだが、去年の夏から故障していて、完全に冷却する機能がいかれている。風は出るのだが、俺が普段寝ているところまでは届かない。それになによりも騒音が激しい。

最近では扇風機にもいろいろな形があるようで、どれにするべきか迷ったのだが、とりあえず最も普通の形のものの中で、一番安い奴にしておいた。

「タワー型」とかいう奴は、何か目新しくて興味を引いたのだが、あの形状であることに意味が見いだせなかったからやめておいた。また、最近出てきたサーキュレーターとかいう奴も、もとより故障したエアコンの代用品として買うのであるから、利点が見いだせなかった。だが、中には縦に三つ連なった奴があり大変興味がそそられたのだが、それも結局、金額的理由からあきらめた。

設置する部屋の都合や使用方法などを考えて、クリップで留めて使用するタイプの物も考えたのだが、どうにもこのタイプだと、タイマー機能が付いている物が見あたらなかったからあきらめた。また、卓上型の物も一時は考えたのだが、布団の付近に設置するちょうどよい台などが無いことから、これもあきらめた。

結局、逡巡したあげくに買ったのが、ごく一般的な扇風機だ。見ていて面白くも何ともないのだが、しかしいかんせん、安眠を確保するという至上命題があり、そのために購入する実用品以上の何者でもないのだから、仕方がない。

興味本位で変な物を買って失敗するわけにはいかなかったのだ。

このあたりは、Sunのマシンを2台も買ったことによる反省が生かされている様だ。