2010年10月6日水曜日

CraftLaunchでディレクトリを入力したらファイラで開く方法

CraftLaunchには、コマンドの補完処理や解釈や実行処理をカスタマイズする機能がついている。


それが window.commandline_list だ。

下のように、ある決まった名前のメソッドを持つオブジェクトを、commandline_list の先頭に追加してみよう。
入力したコマンドは、commandline_list に登録されている順番に評価され、最初に成功した時点で
評価は終了する。

下の例では、以下のような処理を行っている。

  - 入力された文字列を、区切り文字 ; で分解して、最初の引数が
    ディレクトリ名かどうかチェック。
    ディレクトリではなかったら、Falseを返す。(次の評価へ)

  - ディレクトリ名なら、ファイラで開く。

  - コマンド履歴に追加




    class commandline_OpenByFiler:

        def __init__(self):
            pass

        def onCandidate( self, update_info ):
            return []
   
        def onEnter( self, commandline, text, mod ):
   
            args = text.split(';')
            dirname = args[0].replace('/','\\').rstrip('\\')

            if not os.path.exists(dirname) or not os.path.isdir(dirname):
                return False
       
            def jobOpenByFiler( job_item ):
                filer = r"c:\ols\cfiler\cfiler.exe"
                arg = '-L"%s" -R"%s"' % (dirname, dirname)
                directory = "c:\ols\cfiler"
                #print [ filer, arg, directory ]
                clnch_misc.shellExecute( None, None, filer, arg, directory )

            def jobOpenByFilerFinished( job_item ):
                pass

            job_item = clnch_threadutil.JobItem( jobOpenByFiler, jobOpenByFilerFinished )
            clnch_threadutil.JobQueue.defaultQueue().enqueue(job_item)

            commandline.appendHistory( text )
       
            commandline.quit()

            return True

        def onStatusString( self, text ):
            return None

    window.commandline_list.insert( 0, commandline_OpenByFiler() );

0 件のコメント:

コメントを投稿