【2画面ファイラ】 内骨格 Part1 【Python拡張】at SOFTWARE
【2画面ファイラ】 内骨格 Part1 【Python拡張】 - 暇つぶし2ch369:名無しさん@お腹いっぱい。
08/11/03 14:47:34 CBP0T9O30
>>368
window.command_Refresh()だとカーソルのあるほうしか更新されないから
両方とも同じフォルダを表示しておいて外部プログラムでそのフォルダにファイルを作っても
片側しか更新されない。

370:369
08/11/03 15:15:18 CBP0T9O30
適当に修正してみた。
URLリンク(codepad.org)

rebind_setListerにはpaneを渡すようにして、DirectoryWatchThreadの初期化ではpaneとlisterを渡すようにした。

371:364
08/11/03 15:16:44 mVyLBJ2y0
>>369-370
おお、修正サンクス

372:364
08/11/04 19:39:16 y4scTvX50
使ってみていたが、ファイルリネーム後にキーを受け付けなくなったりするな。
やはりsubThreadCall()がネックのようだ。

キーイベントはsubThreadCall()内でハンドラを摩り替えているが、
タイマは動いたままなので、UIスレッドからでもタイマ経由で
subThreadCall()実行中にsubThreadCall()に再入する可能性があり、
その場合は余裕で問題が発生する。

とりあえずsubThreadCall()前後でonTimerJob()とonTimerSyncCall()が走らないように
摩り替えるようにしてみた。

URLリンク(codepad.org)

今回のはextensionに入れることを念頭に書いた。
foo.pyとかいう名前で保存してextensionに入れた場合は、
configure()の中で、
import hoge
foo.start_directory_watch(window)
とかやればおk。

373:名無しさん@お腹いっぱい。
08/11/04 19:41:12 zSoA+Q1n0
import hogeじゃ駄目だろw
import fooだな。

374:364
08/11/04 19:44:01 y4scTvX50
>>373
><

375:364
08/11/05 00:00:56 y4scTvX50
ウザくてすまん
あげなおし
URLリンク(codepad.org)

WaitForMultipleObjectsの最後の引数を1から500に変えた
1ミリ秒タイムアウトは無いわ……デフォの分解能だと10ミリは寝るだろうから
CPU負荷全然かかってなくて気づかんかった

376:名無しさん@お腹いっぱい。
08/11/06 13:58:52 52AN3cia0
keyhac (craftware)
URLリンク(sites.google.com)

377:名無しさん@お腹いっぱい。
08/11/09 23:21:26 /V4H/JXd0
手抜きPythonコンソール作ってみた
URLリンク(codepad.org)
補完とか自動インデントとかカッコイイ機能はない
新たにPythonインタプリタを立ち上げるわけではないので
起動だけは爆速、ただし簡単に内骨格を道連れにできるので危険

>>358のzipの中にあるvensterと、
URLリンク(www.scintilla.org)
で配布してるScintilla(のSciLexer.dll)に依存してるんで
まとめてextensionの中に放り込んでもらえればおk

console.pyとかいう名前で保存したら
config.pyに↓のような感じで

def command_Console():
import console
con = console.ConsoleWindow()
con.start_interp({'window': window, 'console': con})
window.keymap[VK_F3] = command_Console

start_interp()の引数は無くてもいいけど、
こんな感じでwindowインスタンスを与えてやると
コンソールから内骨格のwindowインスタンスが可視になる

378:名無しさん@お腹いっぱい。
08/11/10 00:37:07 5kaSuGXo0
なんかよさそうな拡張だねえ
これipython組み込める?

379:名無しさん@お腹いっぱい。
08/11/10 01:45:23 ryZKA2JN0
>>378
すまんが、かなり弄らんと無理だと思う
ipythonは端末とコネクトされている&readline前提のはずだし

380:377
08/11/10 16:12:32 ryZKA2JN0
ちょっと直した
URLリンク(codepad.org)

・コピペで複数行一度に入力した場合にまともに動いてなかったんで直した
・↑↓でヒストリを行き来できるようにした

なんつうかEmacs風キーバインドに慣れてる人はごめんなさいなんだが
ScintillaのキーバインドはデフォでWin風なので
カーソルキー、Home、Endなどを使うかコードを書き換えてください

381:364
08/11/11 20:40:38 Mg6hT/QX0
ディレクトリ監視用のソースをちょっと直した
監視スレッドがちゃんと解放されないという凶悪なバグだった
途中の版でエンバグしてたらしい
それと、キューを左右のペイン両方に持つようにした
URLリンク(codepad.org)



382:名無しさん@お腹いっぱい。
08/11/13 20:28:18 AaHgjMpF0
作者さん別のもの作りだしちゃった?
倉EXと同様に内骨格も放置されちゃうのかな?

383:名無しさん@お腹いっぱい。
08/11/13 21:27:44 qnH+rrmF0
>>382
どうだろな

誰も使ってないだろうけど
>>358の画像ビューワをGIFアニメ対応にした
URLリンク(kansai2channeler.hp.infoseek.co.jp)

384:383
08/11/13 22:45:47 qnH+rrmF0
すまん、あげなおし
URLリンク(kansai2channeler.hp.infoseek.co.jp)

385:名無しさん@お腹いっぱい。
08/11/16 01:03:44 2HVCJRp60
URLリンク(sites.google.com)
1.72 - 2008/11/15
- ファイルリストを自動的にリロードする処理を追加
- デフォルト設定ファイルに、左右のペインから重複ファイルを探すコマンド CheckDuplicate を追加。
- デフォルト設定ファイルに含まれている SelectEmpty コマンドを CheckEmpty コマンドに変更。
(バックグラウンドで処理している関係で、アイテムを選択することができない場合があるので、ログに出力するだけにした。)
- 左右のペインに含まれる全てのアイテムを返す関数を追加。
MainWindow.leftItems()
MainWindow.rightItems()
MainWindow.activeItems()
MainWindow.inactiveItems()
- 一括変名機能で正規表現のパターンの記述が間違っていたときに、エラーが発生して操作不能になってしまうのを修正。
- ウインドウのクラス名を、CtermWindowClass から CfilerWindowClassに変更。
- iniファイル中のバージョン番号が更新されていなかったのを修正。
- ディレクトリの変更のためにサブスレッド中でアイテムリストを作成している間に、ほかのスレッドがアイテムリストにアクセスしてエラーになる場合が稀にあったのを修正。

386:名無しさん@お腹いっぱい。
08/11/16 01:49:28 /4TVgKTE0
おお、作者さんがディレクトリ監視機能作ってくれたのか
これで俺の怪しいコードは安心して削除できるな

387:名無しさん@お腹いっぱい。
08/11/16 01:52:01 2HVCJRp60
cfiler_nativeに監視用の機能が追加されてるみたいです。

388:名無しさん@お腹いっぱい。
08/11/16 02:16:28 MqCfj//Y0
>>386
短い間だったけどつかってたよー
サンキュー
作者さんもサンキュー

389:名無しさん@お腹いっぱい。
08/11/16 12:18:01 /4TVgKTE0
新バージョン1.72での現象(>>364の拡張は外してある)

内骨格で表示してるディレクトリを他のプログラムからまるっと削除したら
[Error 32] プロセスはファイルにアクセスできません。別のプロセスが使用中です。
[Error 5] アクセスが拒否されました。
とコンソールペインに表示されて、その後キー、マウス入力を受け付けなくなった。
完全にフリーズしているわけではなくて、最小化はできるし再描画もされる。

どーも>>372と同じ現象っぽい。

390:名無しさん@お腹いっぱい。
08/11/16 17:41:16 2HVCJRp60
1.73 - 2008/11/16
- ログペインのテキストを、マウスで選択してクリップボードにコピーできるようにした。
(選択するだけで、自動的にクリップボードにコピーされます。)
- ログペインをマウスのホイールでスクロールできるようにした。
- Ctrl + Alt + ↑↓←→ で、すばやくセパレータを移動するようにした。
- 1.72で入れた自動リロードが原因で、操作不能になってしまうことがあったのを修正。
- 大きなサイズのバイナリファイル比較のときに、メモリ不足で失敗しないようにした。
- tgzファイルを作成するとき、日本語文字が含まれているパスに作成できなかったのを修正。

391:名無しさん@お腹いっぱい。
08/11/16 20:16:49 /4TVgKTE0
相変わらず作者さん対応速いなあ

392:名無しさん@お腹いっぱい。
08/11/17 01:20:17 KGEhMk9D0
まだ怪しい感じだな。
最小化して放置してたら、いつの間にか固まって復帰しなくなってた。
以下は作者さん宛だが。

やはりsubThreadCall()の問題だと思いますよ。
1. 現在のマウス、キーフックをセーブし、書き換える(ESCしか効かなくなる)
2. ワーカースレッドを起動し、メッセージループを回す
3. ワーカースレッドが終了すると、window.quit()を呼び、メッセージループを止める
4. 1.でバックアップを取ったマウス、キーフックに戻す

といった流れですが、タイマーを止めていないので、2.のメッセージループを
回して待っている間にファイル変更が発生すると、2.の間にsubThreadCall()が
再び呼ばれてしまう。

この二番目のsubThreadCall()の流れでは、
Step1.で、無効になっているキーフックやマウスフラグを「保存」してしまう。
一番目のsubThreadCall()の後に二番目のが終了すると、4.では、
無効になっているものに「戻す」ことになってしまうわけだ。

393:名無しさん@お腹いっぱい。
08/11/18 00:07:39 bSvAqLtE0
修正来た。

1 .74 - 2008/11/18
- MainWindow.subThreadCall() のサブスレッドの中で、MainWindow.quit() を使っていたのを修正。
subThreadCall() をネストして呼び出すケースで、外側のループを抜けるつもりの quit() が、内側のループを抜けるつもりの quit() よりも先に呼ばれてしまって、(さらにSyncCallなどの合わせ技により)、メインスレッドがデッドロックしてしまう危険があった。


394:名無しさん@お腹いっぱい。
08/11/23 15:51:55 tlLQO17i0
Scintillaを使ってシンタクスハイライトつきの手抜きテキストビューワ作ってみた
>>383の画像ビューワにもちょっと手を入れたので、同梱してある
URLリンク(iroiro.zapto.org)


395:名無しさん@お腹いっぱい。
08/11/24 00:43:08 4c47A63Z0
URLリンク(sites.google.com)
1.75 - 2008/11/23
- ドライブ選択で存在しないディレクトリに移動しようとしたときに、ディレクトリ監視スレッドを作れずに、エラーになってしまうのを修正。
- ローカルなブックマークリストで、ブックマークの削除が出来なかったのを修正。
- ブックマークリストからのブックマーク削除で、即座にファイルリストの表示に反映するようにした。

396:名無しさん@お腹いっぱい。
08/11/24 13:27:13 vAoOotoJ0
394のテキストビューアとか
本家に取り込んでもらうには
どうしたらいいんだろう?



397:名無しさん@お腹いっぱい。
08/11/24 15:36:12 ttm4loU80
>>396
いや取り込んで貰っても全然構わないというか、有難い話なんだが

・2004年以降止まったプロジェクトであるvensterに対する俺俺パッチに依存
・Scintillaに対する俺俺パッチに依存
・extensionであることをいいことに、カスタマイズ機能なし(スクリプトの中
 直接弄ってねの世界)

という怪しい代物なので、どうなのか
正式配布物に含めるんなら、色々作者さん手直しいると思うわ

398:名無しさん@お腹いっぱい。
08/11/25 22:05:31 GjwnUsph0
ムービープレイヤーを作ってみた
それと、数が増えてきたんで物置きページを作って
今まで作った拡張をまとめて上げといた
URLリンク(www9.atpages.jp)

399:名無しさん@お腹いっぱい。
08/11/30 12:48:18 xYhBVKRV0
連携用の拡張を作ってみた
URLリンク(www9.atpages.jp)
他のプログラムから内骨格を操作できます

400:名無しさん@お腹いっぱい。
08/12/15 18:41:31 1tOm7dI/0
作者さんには是非取り込んで貰いたいなー
拡張が細かく大量に増えてしまったり現時点で派生版が出来てしまったりするとちょっとね・・・

401:名無しさん@お腹いっぱい。
08/12/15 19:21:43 KqxG3NOk0
>>399
これ使うとあふみたく倉から使えるようになるの?

402:名無しさん@お腹いっぱい。
08/12/15 22:41:04 XU2/Yk5l0
>>401
うん。

もう見てないと思うけど、>>322あたりで問題になっていた
DirectShowでのID3v2タグつきMP3への対応をしてみた。
標準でデフォで使われるFile Source + MPEG-I Stream Splitterの
かわりに、WM ASF Readerを使うと、どうやらID3タグへの対応がマシに
なるようなので。
URLリンク(www9.atpages.jp)

403:名無しさん@お腹いっぱい。
08/12/17 08:47:06 WFUUFPrj0
拡張ってアップデート毎にconfig.pyを修正していくのでしょうか?
簡単なものでいいからconfig.py configure末尾辺りに
ユーザ設定呼び出しのSTUBが欲しいです。

try:
import user_config
except ImportError:
pass
else:
user_config.congigure(window)



404:名無しさん@お腹いっぱい。
08/12/17 12:53:25 W0R4wBlJ0
>>403
ちょっち意味わからん。
俺は内骨格がバージョンアップしても、
config.pyをいちいち入れ替えずに同じものを使い続けてるよ。

405:名無しさん@お腹いっぱい。
08/12/17 17:49:53 WFUUFPrj0
>>404
readme.txtに記述見つけました。
バージョンアップでconfig.pyが更新(上書き)される事があるのだったら、
ユーザ設定とわけた方がいいのではないかなと思ったのだけど、
初回起動時にのみconfig.pyが作られるようなので、杞憂だったみたいです。

よく見ると組み込みの設定はEXE内で、
config.py自体がユーザ設定ファイルだったんですね。


406:名無しさん@お腹いっぱい。
08/12/17 18:19:15 WFUUFPrj0
あれ、でも _config.py が更新されているような気がする。
diff 取ってみると config.py に変更した覚えのないコードが _config.py にありました。



407:名無しさん@お腹いっぱい。
08/12/17 19:43:42 mToSUAzl0
そりゃ_config.pyは何回か更新されてるし。

408:名無しさん@お腹いっぱい。
08/12/17 21:56:47 WFUUFPrj0
>>407
ということは、_config.py の更新をconfig.pyへ反映するのはユーザの手作業?





409:名無しさん@お腹いっぱい。
08/12/17 22:21:14 W0R4wBlJ0
>>408
差分を反映する必要は全く無いよ
config.pyはあくまでユーザのカスタマイズ用のスクリプトで、
_config.pyはただのサンプルでしかないんだから

410:名無しさん@お腹いっぱい。
08/12/18 07:22:11 TnabzMpo0
>_config.pyはただのサンプル
config.py/_config.pyのファイルの運用のされ方について
もし、config.pyが標準で何もしないのならそれでもいいのだけど、
_config.py に機能追加の更新があり、尚且つそれが初回起動時のconfig.pyになるようなので

自動更新と、後のバージョンからインストールした場合で
デフォルトのconfig.pyの状態が変わってしまわないか、という懸念があります。


自動更新した人は、_config.pyの追加設定を手作業でconfig.pyに反映しないといけないのに対して、
後のバージョンからインストールした人は、標準で機能追加後の状態から開始することになります。

config.pyはユーザ・カスタマイズ設定なので、環境によって違うのは勿論当然ですが、
それでもデフォルトの、ユーザが設定を弄っていない状態での差異が出るのは、
同じバージョンなのに、標準で あれが出来た・出来ないという状態が出来るので、
ソフトを保守していく上では好ましくないんじゃないかなと思います。

インストール時のバージョン/現在のバージョンで機能/動作が異なる可能性が出てくるため
バグ報告等にはインストール時のバージョンと現在のバージョンが必要になる。-> メンテナンス・コスト増に繋がります。
↑はワースト・ケースのシナリオなので、実際には…少なくとも現時点では、それ程影響はありませんが、
運用で簡単にカバーできる事なので、検討をお願いしたいです。


具体的な対策としては、ユーザ設定とアプリの更新範囲の完全な切り分けで、二つ程方法を挙げると。
a. デフォルトのconfig.pyは、何もしない。ただ呼び出されるだけに留める。
b. config.py から別のユーザ設定を呼び出す。


ユーザとして利用してる分には、
- config.pyは更新時に上書きされないので、ユーザ側で編集しても問題ない
- _config.py更新時の差分は、必要ならconfig.pyに持ってくきて編集
で、とりあえずは問題ないようなので。返答を下さった方、ありがとうございました。

411:名無しさん@お腹いっぱい。
08/12/18 17:27:50 ttqEKvgp0

あふとは違うのだよ、あふとは


412:名無しさん@お腹いっぱい。
08/12/18 20:00:17 w6AJdTOm0
>>410
それはその通りだと思う
内骨格のコンセプトがあんな感じである以上作者さんも煮詰め切れてない部分があるんだろうね

413:名無しさん@お腹いっぱい。
08/12/18 21:09:29 Kl/A5AWx0
作者視点で言うと、

・いままで使ってるユーザーを、設定をいきなり変えることでびっくりさせたくない(←あたりまえ)
・でも新規ユーザーには推奨の設定で使ってほしい(←そういうときもあるよね)

ってのは、アプリケーション作ってるとよく出会う場面だよ。
自分も経験あるけど、どんな新機能がつくかなんて作者でも予測できないもんだよ

414:名無しさん@お腹いっぱい。
08/12/18 21:13:35 tpt2nZZ30
半月ぐらいレスついてなかったのに急にレスが増えたな
何かあったんかw

415:名無しさん@お腹いっぱい。
08/12/21 09:34:20 0ZGbTRvo0
今北産業

あふとの違いなんだ?
あふから乗り換える意義はあるのか?

416:名無しさん@お腹いっぱい。
08/12/21 11:44:02 q0gDujwF0
>>415
そんなことを聞く奴には向いてない。
おまえはあふを使い続けた方が良い。

417:名無しさん@お腹いっぱい。
08/12/21 12:48:24 1SC+aVB20
>>415
違いは色々あるが、Pythonというインタプリタ言語で拡張可能なのが最大の違い
というか、内骨格自身がPythonインタプリタ上で走っている

418:名無しさん@お腹いっぱい。
08/12/31 18:35:23 YS0yHJn90
シャレで内骨格をPython2.6で動かしてみた。
pydとか全部自分でビルドしないとダメなのであまりお勧めは出来ない。

気づいた点。

1) md5モジュールの代わりにhashlib使えと文句を言われる。
2) 俺の環境だけかもしらんが、tar.gzの閲覧に失敗する。

cfiler_filelist.pyの
lister_Tar.__call__()の中で、

if names[-1]:
    # print "name[%d]=%s" % (-1,names[-1])
    child = ArchiveNode( ( names[-1], info.size, time.localtime(info.mtime)[:6], info.isdir() and cfiler_misc.FILE_ATTRIBUTE_DIRECTORY or 0) )
    current_node.children[ names[-1] ] = child

こんな感じに変えてやると上手くいった。要は、パス名の最後の部分の
ノードを作るときに、0決め打ちだったのを、ディレクトリかどうか見るようにした。
正直なんでこれが2.5/2.6で関係あるのか分からんが、こうしないと2.6では
動かなかった。

3) これは2.6関係ないけど、cfiler_mainwindowの
leftJump()の中でself._jump()に渡してる引数足りてないですね。



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch