2012年5月5日土曜日

muCommanderをほんの少しだけ覗いてみました。 (Alfredも使い始めました)


ソースを見るにあたり、まずはDLしてこないといかんのです。

・ソースDL
ソースはsvnで引っ張ります。
最初は0.9.0の最新版をDLしていじったんだけど ant app 後のjarでmainがないよ~(?)とかいろいろ言われるんで、調査を断念して(しょぼいですが)0.8.5をDLして対応することにしました。Javaなんてちゃんとやったことないしね。
svn checkout https://svn.mucommander.com/mucommander/tags/release_0_8_5 mucommander

・ビルド環境
antっていうビルドツールとantでのビルド時に必要なライブラリを管理(引っ張ってきたりしてくれる)ivyってやつが必要みたいですね。

・Java..
じつはMacOSXにはすでにインストールされていた。
(右往左往しててなぜかEclipse入れちゃってるし。。。)

・antインストール
こちらからhttp://ant.apache.org/bindownload.cgi
DLします。TOPページのニュースに最新版のリリースニュースからリンクたどれるし
左メニューのDownloadからでもダウンロードサイトに行けます。
DLしたらJavaの環境に展開します。
/Library/Java/antというフォルダになるわけですね。

こちらを参考にさせて頂きました。
http://homepage.mac.com/kurusaki/iblog/C403418858/E529803029/index.html
apache-ant-1.8.3-bin.tar.gz
環境変数はzsh用に設定することになります。
~/.zshrcに
PATH=$HOME/bin:/sbin:/usr/sbin:/usr/local/sbin:/Library/Java/ant/bin:$PATH
こんなかんじでantのパスを通しておく。追記したのは「/Library/Java/ant/bin:」。

・ivyインストール
こちらからhttp://ant.apache.org/ivy/download.cgi
DLします。
展開後の ivy-2.3.0-rc1.jar ファイルを
/Library/Java/ant/lib/に設置します。
/Library/Java/ant/lib/ivy-2.3.0-rc1.jarということになるわけですね。


■ソースをビルドしてみる。
コンソールでmucommanderフォルダに移動してantでOKです。
BuildSuccessの後にmuCommanderが起動します。
さらっと動かしてみます。


■ソースをapp形式にする。
ant コマンドに appというパラメタで実行します。
つまりant appとします。
同一階層のdistにapp形式で出来上がります。
その場で起動してみても動くんですが、Mac初心者の為、
一応、Applicationフォルダに入れて起動するか確認してみました。


これで準備が整ったのでいじります。


■どこを弄ろうか

最初はkey関連でgrepかけてAction系の基底クラス部分で動く際に
フィルタすりゃ対応も楽とかおもったんだけどそれだと違ったので中止。
(キーを設定している部分の制御をちょいといじくりゃいいんだろうと思っていた)
まぁ、結果から言うともっと上っ面な対応で終わりました。

■どこを弄ろうか2
結局
「任意」/mucommander/source/com/mucommander/ui/main/table/FileTable.Java
こちらを変更しました。

で、QuickSearchクラスで実装してるんだけど
そいつはmain配下のFileTableでstart,end制御されてて
        public synchronized void keyPressed(KeyEvent e) {
内でそのあたりの制御は実装されていました。

L.1835 あたりから
                //modify SLASHの時のみ開始
                if(keyChar == KeyEvent.VK_SLASH){
                    // Start the quick search and continue to process the current key event
                    start();
                    return;
                }

よーするにスラッシュじゃないと開始しないようにしたこと。
と、

L.1902 あたりから
            //modify isActive add
            else if(isValidQuickSearchInput(e) && isActive()) {

Active状態じゃないと検索文字列に追加しないようにした。

■Versionを変えておこっと。
混乱しないようにVersionも0.8.5.1ってことにしておいた。
「任意」/mucommander/source/com/mucommander/build/mucommander/structure.xml

L.30あたりを。


ホントはね、GUI上でQuickSerchmodeのON/OFFを切り替えられる設定ができるようにするの
がいいんだろうけど、、ね。


=少し迷ったこと=======
■これは諦めた未解決問題(0.9.0)

antからWarningが出た。
http://d.hatena.ne.jp/eggtoothcroc/20100526/p1
こちらの現象。ひとまず回避。

つぎのが厄介。
どうすりゃいいか右往左往した。
mainがないっていわれるんだけど、Lancharの中にあるし。
build.xmlのなかみてみたけど、あんま関係なさそうだし。
ふつーにコンパイル実行時は起動して動くんだけどなぁ。。

Exception in thread "main" java.lang.NoClassDefFoundError: mucommander
Caused by: java.lang.ClassNotFoundException: mucommander
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

結局いろいろ調べたけど、
もういいや。
諦めました。



=今後の展開(できたらいいなぁと思うこと)====
ActionManagerで管理されたActionをキーから取得してきて
Actionのperformを実行しているのだけど、
つまり、このアクションに選択パスを渡すことさえ出来れば
他のActionと同様に実装して、内部でsvnコマンド叩いて。。
ってやればsvnコマンドを叩けるので今のだいなにより近づくんだけどね。
という話です。
あとはQuickSearchモードでnで後方への検索、Nで前方への検索
をやってみたいなぁ。。と。
多分半年くらいは触らないでしょうけど。



=Alfredについて=
QuickSilver、、Preferenceを開くと落ちるので困ってたら
@asanoさんがAlfred教えてくれました。
すごく困っていたのでかなり良いです!!こういうのいい。


実際使ってる人に聞いて動いてるの見て
ってのがいいですね。
ホント感謝です。
@flame1980さん、@asanoさん
ありがとうございました。
おしまい。

0 件のコメント: