mieki256's diary



2009/05/23() [n年前の日記]

#3 [prog] ついでにWin32::GUI::Loftもインストールしてみたり。

上記のソレは Perl/Tk 用のツールだけど、どうも世の中には Win32::GUI とか Win32::GUI::Loft とかのWindowsに特化したGUI関連のソレがあるらしいと知りソレもインストールしてみたり。

ActivePerlなので、まずはppmで Win32::GUI (Win32-GUI) をインストール。

_The GUI Loft -- a Win32::GUI designer/builder for Windows User Interface creation in Perl から、Loft_binary.zip をDLして解凍。

.\TheGUILoft\PPM\AdHoc\ に入って、ppm install Win32-GUI-AdHoc.ppd をしたらエラーが出た。検索したところ、どうも Win32::GUIが先に入ってるとその手のエラーが出るらしく。エラーメッセージ中に「--force でやっちゃうかい?」てなことが書いてあったので、ppm install --force Win32-GUI-AdHoc.ppd みたいな。

.\TheGUILoft\PPM\Loft\ にも入って、pm install Win32-GUI-Loft.ppd をしたら、またエラーが出た。これも、ppm install --force Win32-GUI-Loft.ppd みたいな。

ちなみに、.\TheGUILoft\PPM\AdHoc\ にも、.\TheGUILoft\PPM\Loft\ にも、それぞれ install.bat が入っていて、その中で ppm を呼びだしているようなので、ソレを実行してインストールしてもいいのかもしれない。が、自分の場合ソレもエラーが出たので、前述のように --force つきで手打ちで指定。

解凍したフォルダを、そのままどこかしらに移動。TheGUILoft\tgl.exe を実行すると、それらしいツールが起動してくれた。

こちらのツールは、逐一座標値で張り付けていくタイプらしい。少し試してみたところ、一見するとこの方法のほうがとっつきやすいように思えたり。が、複数の Widget の位置合わせをしっかり厳密にやろうとするとかえって面倒な状態になることにも気付いた。一応、Ctrlキーを押しながら選択していけば複数選択できて、その状態でプロパティを編集すれば選択Widget全部に値が反映されるので、横の表示開始位置を揃えたり、各Widgetの横幅や縦幅を揃えたり等はさっくりできるのだけど。それぞれをきっちりと等間隔のスペースを設けて配置したい、といった要求には打つ手がない予感。「なんとなくそれっぽく配置してあればそれで構わないよ」なら全然オッケーだけど、「どうせなら綺麗に整然と並べたいな」と思い始めると途端にハマりそう。…なるほど、だから他ツールは、テーブルレイアウト的なソレでレイアウトする思想になっているのだなと今頃気づいたわけで。

さておき、保存をすると、拡張子が .gld のファイルが作成される。この .gld を読み込んでレイアウトするようなPerlスクリプトになるらしいのだが…。詳細な解説をしてくれていたらしい「いやな日記」さんのページが削除されてしまったようで、ココで行き詰ってしまった。どのblog記事を眺めても「いやな日記さんのページで詳しく解説してるから」とだけ書かれていて中身が不明なこの状況。インターネット上に存在する情報の脆さ・脆弱さ・不安定さまたしても痛感させられたりもして。やっぱり「消えると怖いのでコピペ」が、モラルどうこうでは否定されるかもしれないが実用性の面では姿勢として正しい気がする。世の中全ての人が自サイトを放置してくれるならコピペしなくても済むけれど、比較的技術者寄りの方ですらサクッと削除してしまうこの現状ではコピペによるバックアップも致し方がないのではないか。みたいな。

や。元々のサイトの英文ドキュメントを読めという話ですよね。ということで、 _Reference -- how to incorporate The GUI Loft windows into your Perl programs を読んで、
use strict;
use warnings;

use Win32::GUI;
use Win32 ();
use Win32::GUI::Loft::Design;

my $fileWindow = "launcher.gld";
my $objDesign = Win32::GUI::Loft::Design->newLoad($fileWindow) or die("Could not open window file ($fileWindow)");

my $win = $objDesign->buildWindow() or die("Could not build window ($fileWindow)");

$win->Show();

Win32::GUI::Dialog();
と書いてみたのだけど。下のような感じのメッセージが大量に表示された。
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:\home\prg\perl\test_win32_gui\test.pl line 8
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:/usr/local/Perl/site/lib/Win32/GUI/Loft/Design.pm line 31
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:/usr/local/Perl/site/lib/Win32/GUI/ToolbarWindow.pm line 23
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:/usr/local/Perl/site/lib/Win32/GUI/BorderlessWindow.pm line 24
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:/usr/local/Perl/site/lib/Win32/GUI/Loft/Cluster.pm line 21
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:/usr/local/Perl/site/lib/Win32/GUI/AdHoc.pm line 31
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:/usr/local/Perl/site/lib/Win32/GUI/Loft/Control/ListView.pm line 22
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:/usr/local/Perl/site/lib/Win32/GUI/Loft/Control/TabStrip.pm line 23
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:/usr/local/Perl/site/lib/Win32/GUI/TabStripGroup.pm line 25
'use Win32::GUI;' is currently exporting constants into the callers scope. This functionality is deprecated. Use 'use Win32::GUI();' or list your required exports explicitly instead. at C:/usr/local/Perl/site/lib/Win32/GUI/HyperLink.pm line 6
Use of uninitialized value in subroutine entry at C:/usr/local/Perl/site/lib/Win32/GUI/Loft/Control/ListView.pm line 294.
英語赤点の自分なので何を言われてるのかさっぱりだけど。たぶん、「use Win32::GUI; はよろしくねえな。use Win32::GUI(); を使いやがれ」と言われてる気がする。自信ないけど。 問題は、自分で書いたところだけではなく、Win32::GUI::Loft のモジュール?についてすら文句を言われていること。 これは根拠のない勝手な想像だけど、おそらく現状の Win32::GUI バージョン 1.06は、以前のバージョンとそのあたりの宣言(?)の仕方が違っていて、Win32::GUI::Loft 内の記述のアレコレはもう現状に合っていなくてこういうメッセージが出てくるのかなと。

検索したら、 _Re: [perl-win32-gui-users] Deprecated Constants でそこらへんの話が。やっぱり英文なのでさっぱりわからないけど、「見せかけでアレコレしても真の問題解決にならない」「モジュール作者がこのバグを直すべき」と書かれてる、のかな? わからんけど。 しかしこのメールが書かれてるのが2007年。 つまり Win32::GUI::Loft は、もう数年ほど誰もメンテナンスしてないし、今後バグが修正される見込みもないし、どう考えても今現在コレを使うのは時代遅れで問題ありまくり。という状態なのかもしれない。てな気分になってきたり。

_theguiloft : Message: Re: [The GUI Loft] slow loading in win32-gui v.1.05 でも「10秒ぐらい反応返ってこねえよコレ。Pen4 2GHzなのに」「その問題は俺も見たことあるわ。それが嫌でLoftは捨てた。TGLはイイ奴だったのにな…」みたいなことが書いてあるように見える。たぶん。英語赤点だから自信ないけど。

要するに、もうダメダメなんだな、このモジュール。ということで自分もアンインストール。

以上です。

過去ログ表示

Prev - 2009/05 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project