ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Python3でのSphinxのインストール

2012-04-17 23:11:04 | PG(Markup)

Sphinxを使うことになったので、WindowsにSphinxをインストールする方法をメモ。

インストールやSphinxプロジェクトを作るに当たり、cocoatomoさんから色々教えていただきました。ありがとうございます!

やはり知っている人から聞くとスムーズに出来る。
Sphinxの日本ユーザ会のページにあるWindowsへのインストール手順は、現時点ではPython2.6を使うもので、それと気付かずPython3.2をインストールして、手順に従ってeasy_installをインストールしようとしたらエラーになっちゃって><
Pythonは2と3でけっこう文法が違うらしい(苦笑)
Pythonは名前しか知らないので、自分だけでは対処できなかったなぁ。
(そもそもSphinxがPythonを使ってるって事すら知らなかったし^^;)

Sphinxを使って作られたウェブページの場合、Show Pageでソース(rst)を見られるというのも教えてもらった。どういう表示がどういうソースで出来ているのか分かるのは有り難い。
HTMLだって、最初はそうやって覚えたんだしな~。


FXMLからControllerを生成するツール

2012-04-15 23:59:32 | PG(Java)

JavaFX Scene Builderを使うとJavaFX2のウィンドウレイアウトを表すFXMLファイルを作ることが出来る。
このFXMLとデータ及びイベントを連動させる為にControllerというクラスを作る必要があるが、比較的シンプルな構造なので、FXMLから生成するツールを作ってみた。
(そのうち本家でも同じようなものが提供されて、用無しになる可能性は高いが^^;)

動作環境はScala2.9+JavaFX2.1。
Windowsで実行するためのバッチファイルだけ用意したw
環境に応じて変える必要があるけど、必要なのはクラスパスの指定だけなのでそんなに難しくはないでしょう。
ちなみに生成されるControllerはJavaだけど、EclipseのScalaプロジェクトにjavaファイルを置けば勝手にJavaとしてコンパイルしてくれるので、Scalaでも問題なく使える。
(当ツールがそういう風にして使っているw)

イベント用のメソッドは空メソッドとして用意される。
想定としては、生成されたControllerを継承するクラスを別途作り、メソッドはオーバーライドする。こうすれば、何度生成し直しても、自分が作ったロジックが消えることは無い。
その為、生成するControllerクラス名に(Abstractのような)接頭辞もしくは接尾辞を付けられるようにしてある。
(抽象メソッドとせず空メソッドとした理由は、Scalaでoverrideキーワードを付ける事を強制する為w
Scene Builder側でイベント名を変えた場合、overrideキーワードを付けておけばエラーになってくれるから、分かり易い)

あと、ファイルをドロップすることでFXMLファイルを指定できるようにしたいんだけど、JavaFX2でドロップを処理する方法が分からないので、保留。


 今回、Eclipse上で作ったプロジェクトをGitHubに乗せてみたんだけど、ちょっと変な構成になってしまった(苦笑)

「hishidama/fxml-controller-generator」の直下にsrcとかbinとかのディレクトリーが来るようにしたかったんだけど、「fxmlControllerGen」という、Eclipseのプロジェクト名のディレクトリーがはさまってしまった。
EGitの手順上、これを変更できる箇所が分からないんだよなぁ。


ScalaでXMLファイルを読み込む方法

2012-04-14 13:06:58 | PG(Scala)

ScalaXMLファイルを読み込むにはXMLオブジェクトのloadFileメソッドを使えばいい。のは以前から一応知っていたが、この方法ではルート要素は読めるけど処理命令は読めない。
デバッグモードでステップ実行しつつ見てみたところ、XMLオブジェクトの継承元であるXMLLoaderを直接使えば処理命令も読めることが分かった。
XMLファイル内のコメントを取得するには、さらにハンドラーとかを用意しなければならないようだけど、これも一応出来た。 

ところで、XMLファイルを読み込むには、ConstructingParserを使う方法もある。
こっちだとファイル内に指定されているエンコーディングも取れるし、DTD(DOCTYPE)も取れる。特に何もしなくても処理命令やコメントも取れる。
遥かに簡単じゃん!なんだよちくしょーw


JavaFX2 FileChooser

2012-04-12 23:59:35 | PG(Java)

JavaFX2でファイルを選択する為のダイアログである、FileChooserを試してみた。

拡張子の指定方法とか、SwingJFileChooserよりシンプルに使えて良い感じ(笑)
見た目も、普通にOSのダイアログを開いているようだし。 (Swingは独自のウィンドウだったので、なんか違和感があった)

ディレクトリーを指定する場合はDirectoryChooserを使うが、これはJavaFX2.1以降らしい。JavaSE7u2で一緒にインストールされるJavaFXは2.0なので、残念ながらDirectoryChooserは使えない。

ちなみに、SwingのJFileChooserは普通にmain()で実行するアプリから使えたのだが、JavaFX2のFileChooserやDirectoryChooserは、Applicationクラスを経由して起動しないと使えないっぽい。初期化の方法が違うんかな。