GetFullPath

ぱぇぽぃ2 ? Blog Archive ? Opera WMV

の最後でカレントディレクトリからでは端末で絶対パス名を取れない場合があると書いた。
待てよ? os.path が無い IronPython ではどうやるのだろう?

Path メンバ (System.IO)

System.IO.Path で普通に GetFullPath メソッドがあった。
そういえば IronPython では __file__ は使えるのだろうか?
ということで試してみる。

#-*- coding:utf-8 -*-

import sys
import System

print sys.argv[0]
print __file__
print System.IO.Path.GetFullPath(__file__)

abspath

あぁやはりカレントディレクトリではこうなるのか。
見落とししやすい所なので注意したほうがいいね、cmd.exe から起動しない!と言わない。

それと。

ShowDialog() メソッドで開いた Window で Value を参照しようとすると例外になる。
調べると ShowDialog() の戻り値自体が Boolean になっている、C# と違うじゃん。
何故?よく解らないけどコンパイルしないとこういう結果になるのかな。

それと。

バックアップを試せば解るけど Welcome クラスは Application インスタンスを作成していない。
それなのに Window が普通に動くんだが、メッセージループはどうなっているの?
試しに Show() メソッドで表示してみたら即終了、なるほどそういうことなのか。
Window は ShowDialog() メソッドを使うなら Application インスタンスから動かす必要は無いのね。
何のことか解らない人は Windows アプリは何故動くのかを勉強しておこう、→の本で。

ついでに Welcome のインスタンスを作ったらその中で sys.exit() できなかった。
その前に Close() しなきゃいけないのか、ふむふむ。

それと。

GtkEntry は Nautilus からファイルをドロップするとファイルのフルパスが流し込まれる。
Linux 版と動作を合わせたいので「ようこそ」のフルパス入力部で同じようにしたい。
つか「ファイルの参照ダイアログ」は使いたくないだけだが、多分使う人はいないと思うし。
「minipoli を使え」にしてもイイけどそれはやはりあんまりかと。

[WPF]ドラッグアンドドロップ

検索したら簡単に方法が見つかった、IronPython 言語への書き換えも普通どおり。
あぁ Windows の開発は楽チンだなぁ…日本語でアッサリ見つかるんだもの。
PyGtk になると日本語では実用的コードなんかまったく見つからないからね。

今日は結構勉強になった。
Ubuntu 上の VirtualBox で動かしている Windows 7 RC でやったほうが開発が楽しいなんて…
困ったら即 Ubuntu に戻れるからだろうけどさ、ということで今日のバックアップ。

welcomedlg

seeme_a403.zip

とりあえず「ようこそ」だけ移植完了、先はまだ長い。

SeeMe is to IronPython

C# で SeeMe for Windows を作るのはヤメにしたい。
Python ばかりやっているとやはり巷の噂どおり行末セミコロンを忘れるんだなぁこれが。
既定の型がバカみたく多い .NET Framework で型指定なんてもうやってられない。
何よりコンパイルしなきゃいけない、今では何故コンパイルする必要があるのかも疑問。

それより Visual Studio に嫌気が。
一昨日 Visual Studio の自動アップデートが掛かって一時間以上マシンが使えなかった。
サイズがデカ過ぎるんだよ!だから仮想の OS には入れたくないし又待たされるのはゴメンだ。
結果 Ubuntu と Vista の HDD を入れ替える回数が多くなる、いいかげんにコネクタが不安。
Ubuntu 上の仮想な Windows 7 上で気楽にサクッと小物アプリを作れるのが理想…
そうなるとやはり IronPython が一番の選択肢になる。

ところで IronPython で検索するとコンパイル方法とかよく見つかるんだが…
動的言語を何故コンパイルなんてしたい人がいるのか私にはまったく理解できない…
メリットをわざわざ自分で潰すなんて、コンパイルするなら C# で作ればいいんだし…
それよりなにより Windows 7 では exe にするとインストーラが必要に…
更にオープンソースにするもなにも配布は一つのアーカイブのみでオケになるのに…
Linux の /usr/bin 以下を見てそれでもコンパイルしたいのか?という感じ。

ということで SeeMe はとっとと IronPython で作り替える。

面倒くさいので XAML は C# のをそのまま使…えなかった、ハンドラ指定の部分で。
それと Python らしく Name 属性に大文字を入れたくないし Linux 版との整合性も整えたい。
エディタ部の腐った配置も書き換えたい、使う人には解らないだろうけど我ながらコードが酷い。
System.Windows.Window の継承クラスをトップレベルウインドウにしたいというのもあるけど。
のでやはり書き換えることに。

細かいパーツは XAML を三重クォートでまとめたのをいくつかコピペですませる。
XAML でやったほうが良いものは XAML で、コードのほうが都合がよいものはコードで。
inifile8.py は os モジュールが無いから Linux 版をそのままは使えなかった。
とりあえずツールバーまでは再現した。
とやっていたのでありますが。

seeme_ipy2

何故文字化けするの?
どうでもいいが IronPython は pyc キャッシュを作成しないことに今頃気がついた、遅!

原因が解らないけど、とりあえずココまでのバックアップ。
明日明後日はとある事情で田舎に帰りますのでまた来週。

seeme_a402.zip

SeeMe for Windows beta2

なんか Ubuntu の自動アップデートが失敗しまくる。
こういう時は Vista にチェンジだ、両方を使っているとこんな時に便利だね。

せっかくなので SeeMe for Windows の更新だ。
Linux 版の変更点をそのまま適用、どっちが元のアプリだかもう全然解らないや。
バージョン情報はタブをやめてダイアログにしたが XAML なんざ書きたくないのでコードで。

seeme_about

ぶっちゃけショボイ!

あれ?Snipping Tool が保存できなくなっているんですけど…
おかげでスゲェ久々に Alt+PrtSc と Paint.net を使ったよ。
まあそれはここでは関係無くて。

というかコード化しなきゃ後々で IronPython 化できなくなるんで…
と思ったけど beta1 からもう一ヶ月以上間が開いているのに今頃気がつく。

こんだけ間があったら本気でやれば IronPython 化が終わっていたかも…
とはいえ肝心な IronPython 2.6 もまだベータだったりするし、もうベータばっかや!

ところでインストーラは何か開発方法がおかしかったようで…
beta1 を必ず削除してからインストールをお願いします。
というか zip 版もせっかくなので追加!以上 SeeMe 更新のお知らせでした。

Ubuntu and Vista comparison 2

Ubuntu を復旧させたので Vista からとっとと戻しました、我ながら早!
あぁ快適だ、とにかく快適だ、でも Opera だけはやっぱり Windows 用が快適だ!
この快適さの違いは何だろう?

○ Explorer と Nautilus

ファイルマネージャが実際のファイル管理を行っていることは置いておいて。
Vista 最大の欠点はあの「信じられないほど使いにくい Explorer 」なのは間違いない。
Windows 7 で幾分は改善はされているけど求めている方向はそうじゃないんだよ。
とにかく余計な機能は付けなくていいから XP 以前の単なる階層表示に戻してくれい!

Nautilus は一覧(詳細)表示にしてもしっかりサムネイルで表示される等一貫している。
ツリーのトップもホームとシステムだけで解りやすい、隠しファイル表示切り替えも一発。
ちなみに私はホームのデフォルトで作成されるディレクトリはデスクトップ以外は削除している。
だって Python を始めてから小文字でないと落ち着かなくなったし何も問題無いもの。

dir

端末操作でもホームはプロンプトに何も表示されないので打ち込みしやすい。
最大の長所はスクリプトが使えることだと私は感じるけどそういう人って少ないかも。

○ 開発環境

Vista で Visual Studio を使って遊ぼうと思ったけど起動する気分になれなかった。
Microsoft 自身が排除してしまいたいと思っている Win32 API はもう使う気になれないし。
その代替で登場した .NET Framework 及び WPF は小物アプリを作ることを考えていない…

というより Windows において何か新しくアプリを作りたいと思わなくなってしまった。
既に星の数ほどのアプリが存在する現状なので探したほうが早いことも事実だが。

販売するようなアプリでもないのに大げさな IDE を起動してデバッグというのも何だか。
小さなアプリでもよく解らないファイルが勝手に作成されてしまうのも今は気に入らないし。
小物アプリであればテキストのみでチャチャっと作れるスクリプトのほうが良いのですよ。

シェルスクリプト、Python、PyGtk
この3つがあれば大半のことが可能である Ubuntu てか Linux はやはりありがたいとしか。
ネットをうろつくと変な勘違いで挫折してしまう人が多すぎるなぁ…

とにかくファイル管理とスクリプト関連では Ubuntu の圧勝で異論は無いだろう。

Python gnome Module

Vista に変更中なのに何故か VirtualBox 上の Ubuntu 8.10 を。

gnome

bonobo や gnomevfs は解るんだけど gnome って何?
インタラクティブシェルで

import gnome
dir(gnome)

とやるとズラっと、どうも GNOME に対し何か行うモジュールのようで。
解りやすそうなメソッドを何か使ってみよう。

import gnome
gnome.url_show("http://palepoli.skr.jp/")

とやってみるとやっぱり Firefox が立ち上がって我がサイトを表示。
なんだよ、xdg-open を外部呼び出ししなくてもこれでイケるやん!

こんなことができたのね、もう少し地味に調べると面白そうです。
つーてもこういう Python 限定では Devhelp にあるはずがないしなぁ。
$ pydoc gnome
で見てもちょっと解りにくいのが難点かな。

しかし秀丸では今となってはネタが書きにくい、Gedit に慣れすぎた。