[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 19:50 / Filesize : 131 KB / Number-of Response : 419
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【2画面ファイラ】 内骨格 Part1 【Python拡張】



1 名前:ミスター外骨格 [2007/10/24(水) 04:02:04 ID:ENN/kcvg0]
CraftLaunchの作者が今度はファイラー界へ殴り込みだ!
hp.vector.co.jp/authors/VA012411/cfiler/doc/index.html

>内骨格には以下の特徴があります。
>・キーボードで操作
>・マウスではほとんど操作できない
>・あふ(www.h5.dion.ne.jp/~akt/)に強い影響を受けている
>・スクリプト言語Pythonを内蔵しており、Pythonで拡張が可能
>・テキストビューアを内蔵
>・イメージビューアを内蔵
>・ミュージックプレイヤを内蔵

282 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/13(土) 12:45:39 ID:XvzPns/60]
単に外すだけじゃなくてextensionにしてconfig.pyにちょっと追加すれば使えるような状態にしてあればよいのに。

283 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/13(土) 23:39:15 ID:l8peI4HT0]
だいぶ使いやすくなってきたよねー
intypeと内骨格の組み合わせがかなり気に入ってる(intypeにソースツリーがないから)
sconsとgitの操作を内骨格からできるようにちまちま拡張していけば結構シンプルな開発環境になりそうだ

284 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/15(月) 06:21:20 ID:3MYy76ph0]
>>283
あるぞ

285 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/15(月) 10:32:05 ID:C1cIPiRNO]
作者さん
要望を聞いてください

・画像表示はSuise-Pluginを利用してください
・メディアの再生機能は省いてください
・CraftLaunch/EXを一緒に(統合)しないでください
・Jamp/Findなどの機能はCraftLaunch/EXでやっているんで削ってください
・付加的な機能(GmailFS等)はプラグイン形式にしてください
・'あふこまんど'みたいなのを作ってください
・軽くしてください

以上おねがいです
上記の点でなかなかあふから乗り換えられません。

286 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/15(月) 10:40:16 ID:C1cIPiRNO]
と、書いたあとに更新発見!!

1 .57 - 2008/09/15
- Grep / Search 機能を使って列挙した、ディレクトリ名付のファイルリストを使ってコピーや移動を行う際、平たくコピー/移動する機能を追加。コピー直前に確認ダイアログを表示するようにした。

- Grep / Search 結果 から ディレクトリアイテムを移動する際に、移動元のディレクトリの削除に失敗するのを修正。

- 起動直後に開かれるディレクトリの読み込みをサブスレッドで行うように変更し、起動時のウインドウが出るまでの時間をを若干短縮した。

- フォントのリストアップ処理でメモリリークしていたのを修正。

- ファイルのコピー、移動、削除で、処理が終わったアイテムは、選択を解除する。

- バックグラウンドでファイルの削除をしている間に、フィルタを変更すると、削除処理に使われるフィルタも変化してしまっていたのを修正。

- バックグラウンドでディレクトリ比較をしている間に、違うディレクトリに移動すると、エラーになってしまうのを修正。

- バックグラウンドでアーカイブを作成中に、違うディレクトリに移動すると、正しくアーカイブが作成されていなかったのを修正。

- バックグラウンドでアーカイブを展開中に、違うディレクトリに移動すると、正しくアーカイブが展開されていなかったのを修正。

287 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/15(月) 12:19:18 ID:5I+KkzbH0]
ところで、作者ってここを見てるんだろうか。

288 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/15(月) 12:47:35 ID:/H75glu10]
>>285
どうせでかいインタプリタが乗ってるので削っても限界あります。
動作が軽快にして欲しいというのはありますが、機能は削らなくても結構です。

289 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/15(月) 20:01:27 ID:KLALt7Ow0]
柔らかい要望ってことで、透過ウィンドウおよび背景画像の半透明表示が欲しいなー

ところでpopen4経由でscons呼べるようにしてみたんだけど(shellexecuteは子画面開けちゃうから)、
soconsから呼んでるbuilderが吐いたエラーがログペインに乗ってこないなー
内骨格はたぶん悪くないけどなんでだろ
cmd.exe上でscons呼び出すとちゃんとメッセージ出てるんだけどな

290 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/15(月) 21:11:12 ID:7NTJ8pPi0]
>>289

shellExecuteじゃなくて、window.subProcessCall()を使えば、
ログウインドウにリダイレクトできるよ。
config.pyのcommand_Substで使われてるから、
見てみるといいかも。




291 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/15(月) 21:18:47 ID:KLALt7Ow0]
>>290
それは知らなかったありがとう
popen4で標準出力とエラー出力を読んで、一行ずつprintしてログペインに書いてってやってたんだけど、
>>289の問題がなかったとしても、処理が終了してから一度にログペインに反映されるって動きになっちゃう問題があったんだった
window.subProcessCall()ならそのへんうまいこと処理してくれるかな
試してみる

292 名前:「手段を選んでいるいとまはない。」 ◆8RHckg48Fc [2008/09/16(火) 18:43:35 ID:wuaghSqoO]
あふとは違うのだよ、あふとは

293 名前:名無しさん@お腹いっぱい。 [2008/09/17(水) 02:52:48 ID:GyH9dT990]
あふとは違うのだよ、あふとは

294 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/17(水) 08:55:16 ID:xW8aPt6g0]
あふとは違うのだよ、あふとは

295 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/17(水) 10:01:49 ID:GyH9dT990]
>>294
真似はいかんよ

296 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/17(水) 13:35:11 ID:iF+owCl40]
sites.google.com/site/craftware/cfiler
1.58 - 2008/09/16
- ブックマークのリストを出す際に、現在のディレクトリ以下のブックマークのみに絞り込んで表示する機能を追加。
- pysvn をインストールしなくても、Subversionフィルタが使えるように、デフォルト設定ファイルを変更した。
- デフォルト設定ファイルに、イメージビューアのカスタマイズ例を追加。
- 内骨格が、最大化オプションつきで起動されたときに、エラーログが出力されていたのを修正。
- オープンに失敗する壊れた画像をビューアで開こうとしたとき、露骨なエラーが出力されていたのを修正。画像ビューアのステータスバーに、エラーメッセージを表示するようにした。
- ReadOnly属性付のファイルのタイムスタンプを更新するときにエラーになってしまうので、ReadOnly属性をいったん解除するようにした。
- 選択されているファイルアイテムの配列を、簡単に取得する関数を追加。
MainWindow.leftSelectedItems()
MainWindow.rightSelectedItems()
MainWindow.activeSelectedItems()
MainWindow.inactiveSelectedItems()
- カーソル位置のファイルアイテムを、簡単に取得する関数を追加。
MainWindow.leftCursorItem()
MainWindow.rightCursorItem()
MainWindow.activeCursorItem()
MainWindow.inactiveCursorItem()


297 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/20(土) 23:55:08 ID:Mr66UXdP0]
ディレクトリの内容を降順でソートしたいときってどうやるの?

298 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/21(日) 01:27:09 ID:2yccBCk90]
>>287
こんな感じ

class sorter_ByNameRev:
def __call__( self, left, right ):
if left.isdir() and not right.isdir() :
return -1
elif not left.isdir() and right.isdir() :
return 1
return -cmp( left.name.lower(), right.name.lower() )
class sorter_ByExtRev:
def __call__( self, left, right ):
if left.isdir() and not right.isdir() :
return -1
elif not left.isdir() and right.isdir() :
return 1
cmp_result_ext = cmp( os.path.splitext(left.name)[1].lower(), os.path.splitext(right.name)[1].lower() )
if cmp_result_ext : return cmp_result_ext
return -cmp( left.name.lower(), right.name.lower() )


299 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/21(日) 01:28:15 ID:2yccBCk90]
>>298 続き
class sorter_BySizeRev:
def __call__( self, left, right ):
if left.isdir() and not right.isdir() :
return -1
elif not left.isdir() and right.isdir() :
return 1
return -cmp( left.size(), right.size() )
class sorter_ByTimeStampRev:
def __call__( self, left, right ):
if left.isdir() and not right.isdir() :
return -1
elif not left.isdir() and right.isdir() :
return 1
return -cmp( left.time(), right.time() )
window.sorter_list += [
( u"G : ファイル名(逆順)", sorter_ByNameRev() ),
( u"R : 拡張子(逆順)", sorter_ByExtRev() ),
( u"D : サイズ(逆順)", sorter_BySizeRev() ),
( u"Y : タイムスタンプ(逆順)", sorter_ByTimeStampRev() ),
]


300 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/21(日) 01:31:46 ID:2yccBCk90]
インデントは適宜推察して。
というか基本的にcfiler_filelist.pyの1290行目あたりからのsorter_By*をコピーして
クラス名の後ろにRevをつけて、__call__関数の最後のreturnの符号を変えただけ。



301 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/21(日) 20:00:57 ID:RR9EzFfl0]
どうもありがとう
手に馴染み始めてきたなー

302 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/22(月) 14:50:21 ID:+8RYDkGL0]
sites.google.com/site/craftware/cfiler
1.59 - 2008/09/21
- Migemoでのインクリメンタルサーチ時に、ステータスバーには正規表現ではなく、一致したファイル名の一部を表示するようにした。
- Migemoでのインクリメンタルサーチ時に、英単語のカタカナ表記が正しく検索できていなかったのを修正。
( 例 : SaisinSoftware -> 最新ソフトウェア、など )
- ネットワークアップデートのためのバージョン情報の取得時に、プロキシのキャッシュを使って誤判定することがあったのを修正。プロキシのキャッシュを使わないようにした。
- ファイルのコピー、移動、削除で、処理を中断したときに、処理中のアイテムの選択を解除していたのを修正。処理が中断されたアイテムは選択を解除しないようにした。
- [平たくコピーしますか?]のダイアログをキャンセルしたとき、コピー処理自体をキャンセルするべきだったので、そのように修正した。
- ログを大量に出力している間に、ログペインのサイズを変更すると、エラーが発生することがあるのを修正。
- コマンドラインのコマンドとして、メモリの統計情報を出力する "MemoryStat" を追加。(デバッグ目的)
- Subversionフィルタの改良。svnで管理されていないディレクトリは、その親ディレクトリがsvnで管理されているときは非表示にし、そうでない場合は表示する。


303 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/23(火) 06:15:19 ID:YzErY0jk0]
イメージビューアがメインウィンドウの上にかぶるのがうざいので少し調べてみたら
cfiler_imageviewer.ImageViewerの生成オプションで親ウィンドウを0にしてやれば
独立したウィンドウになることがわかった。

あとは表示中の画像サイズにウィンドウをフィットさせる処理を書きたいんだけど、うまくいかない。

生のウィンドウサイズはgetWindowRectで得られるけど、
setPosSizeで指定するサイズは生のサイズじゃない。
getCharSizeで得られる文字サイズが絡んでるのはわかるんだけど、
生サイズ/文字サイズってわけではなくてよくわからん。

304 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/23(火) 07:01:10 ID:YzErY0jk0]
うまくいかないってのはフィットさせるたびにサイズが小さくなっていくことだったんだけど、
よくわからんけどwindow.fit = Falseとしておけば大丈夫だということがわかった。

とりあえずこんな感じのをconfigure_ImageViewerの中で定義してやれば現在表示中の画像サイズにウィンドウサイズを調整出来る。

def command_WindowFit():
x, y, w, h = window.getWindowRect()
iw, ih = window.img.getSize()
cw, ch = window.getCharSize()
iw *= window._zoom
ih *= window._zoom
w = int(round(iw/cw))
h = int(round(ih/ch))+1
window.fit = False
window.setPosSize(x,y,w,h,0)


305 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/23(火) 12:08:41 ID:YzErY0jk0]
cfiler_imageviewer.ImageViewerの生成オプションを弄らなくても
configure_ImageViewerでwindow.main_window = 0ってしてやれば独立ウィンドウになるみたい。
TextViewerのほうも同様。

306 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/23(火) 12:14:58 ID:YzErY0jk0]
↑勘違いだったorz

307 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/23(火) 20:24:09 ID:YzErY0jk0]
MainWindow.image_file_ext_listに".psd"もあるから一応psdに対応したつもりなんだろうけど、
exeの中にはPsdImagePlugin.pyoが入ってないからデコードに失敗する。

PILのPsdImagePlugin.pyをextensionフォルダに入れてやれば再起動後に表示できるようになる。

308 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/24(水) 01:55:05 ID:DnA9AUe+0]
sites.google.com/site/craftware/cfiler
1.60 - 2008/09/24
- Grep / Search / Compare などで作られたファイルリストのディレクトリ名部分には、それぞれ [grep] [search] [compare] というプレフィックスを付けるようにした。
- Subversion フィルタの修正。grep 結果など、アイテムの名前にディレクトリ名が含まれる場合に、Subversionフィルタで除外されてしまっていた。
- アップデート後の再起動で、前回の起動時の状態で起動してしまうのを修正。前回の終了時の状態で起動するようにした。
- ウインドウを最大化した状態で終了させた後、次回起動時のウインドウサイズを通常のサイズになるようにした。
- ウインドウを最小化した状態で終了させたとき、次回起動時にウインドウが見えなくなっていたのを修正。
- ウインドウを最大化したときに、ウインドウの右端と下端の隙間が、左端と上端に比べて太ってしまうのを修正。上下と左右を均等に太らせるようにした。
- APIリファレンスのために、ソースコードにdoxygen用のコメントを埋め込んだ。

309 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/24(水) 20:34:26 ID:DnA9AUe+0]
www-2ch.net:8080/up/download/1222251295712076.Y78r1V

Susie plug-inを使って画像読み込みを行うpythonスクリプトを書いてみた。
これを使ってPILのImagePluginを書いてやれば画像の対応形式が増やせると思う。

310 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/25(木) 12:51:26 ID:cI5T2eAK0]
ctermcore.cppのWindow::_createFont()でクラッシュするんだが……
典型的な1個外れのエラーっぽい

----------------------------------------
- int * char_width_table = (int*)malloc(0xffff*sizeof(int));
+ int * char_width_table = (int*)malloc(0x10000*sizeof(int));
GetCharWidth32( hDC, 0, 0xffff, char_width_table );
  :




311 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/25(木) 13:03:17 ID:cI5T2eAK0]
ああそれと、ctermcore.cppでvfw.hを#includeするまえにwindows.hを
インクルードしてほしい
#include <algorithm>も必要
これらを直さないと、標準環境であるVC++7.1でビルドできない

312 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/26(金) 01:17:11 ID:zHh06K3s0]
1.61 - 2008/09/26
- フォントの初期化処理で、メモリが破壊されて、場合によっては落ちてしまうのを修正。
- API リファレンスのためのコメントを拡充した。

>>310 の修正みたいですね。

313 名前:309 mailto:sage [2008/09/27(土) 23:32:46 ID:bj+5ZIrZ0]
www-2ch.net:8080/up/download/1222525720143596.WPeT6K

Susie Plug-inを使って内骨格の対応画像形式を増やすスクリプトです。
*.pyはextensionフォルダにおいて、
SusieImagePlugin.pyのspi_base_pathをSusie Plug-inの置いてあるフォルダに設定して下さい。
サンプルとしてifjp2.spiとifdds.spiを使って.jp2, .j2k, .ddsを開けるようにしてあります。

314 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/28(日) 18:06:24 ID:Wl8gAL+M0]
SusieプラグインはSPI処理するpyd作って
imageviewerのソース勝手に弄って使ってる。

Pythonから直でDLLやC互換の構造体使えるのは知らなかったんで
>313
のソースは勉強になりました。

315 名前:313 mailto:sage [2008/09/28(日) 19:30:29 ID:2AcXB2o90]
ちなみに、パレットとかの扱いがわからなかったので、
インデックスカラーとかグレースケール画像には対応してません。
16, 24, 32bitカラーのものに対応してます。

>>314
作ってるんだったら公開してくれ。w

316 名前:314 mailto:sage [2008/09/29(月) 06:40:16 ID:ErwyCzJq0]
>315
真似してアップしてみましたよ。
ttp://www-2ch.net:8080/up/download/1222637354290437.wQxs9Z

PythonもDLLも素人なので、多分、凄く行儀悪いことしてる。
どうしても使いたい人向け。
本体バージョンアップでちょくちょく動かなくなるし。
本家で対応してくれるといいんだけどなぁ…。


ついでに個人的に欲しくて作ったカレンダー表示も
ttp://www-2ch.net:8080/up/download/1222637846199678.YyVbkQ

つか、内骨格絡みのこういうものって公開していいのかな?


317 名前:314 mailto:sage [2008/09/29(月) 06:53:43 ID:ErwyCzJq0]
カレンダー、見直してみたらバグあったんで更新しました
ttp://www-2ch.net:8080/up/download/1222638766450346.6geaAo


318 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/09/29(月) 22:21:00 ID:vSB10hZT0]
sites.google.com/site/craftware/cfiler
1.62 - 2008/09/29
- ファイルのコピー処理の後、GREPやSearchのときに、プログレスバーが出なくなってしまうことがあるのを修正。
- ファイルパスのディレクトリ区切り文字に / を設定している場合でも、 \ が使われてしまう箇所があったのを、いくつか修正。

319 名前:315 mailto:sage [2008/09/30(火) 02:08:06 ID:86k80yJd0]
www-2ch.net:8080/up/download/1222708020679847.ML3AnN

Susie.pyを8bitインデックスカラーに対応させました。

320 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/03(金) 22:51:32 ID:/YtHbvJ10]
内骨格で開いてるフォルダの中身をエクスプローラで弄っても更新されないし、
両方に同じフォルダ開いて新規フォルダを作っても逆側には作ったフォルダが表示されない。
内骨格って定期的に読み込み直すとかしないの?



321 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/04(土) 18:23:54 ID:7PYB1yIE0]
DirectShow版のミュージックプレイヤー書いてみた
codepad.org/texvdWLA
DirectShowなんで、DirectShow用のコーデック入れれば
何でも再生できると思う

config.pyのconfigure()の中で
window.musicplayer = MyMusicPlayer(window)
とかやるとこっちが使われる
再生したい拡張子は、同じくconfigure()の中で
MainWindow.music_file_ext_list = (
'.wav', '.mid', '.mp3', '.ogg', '.m4a')
とか(お好みで)設定するとよさげ

超怪しいんで、使う場合は自己責任でおながい

322 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/04(土) 22:23:47 ID:mMfr20YF0]
WMPでは再生できるのにDirectShowでは再生できないmp3ファイルがあるなぁ。
GraphEditで開いてみたら適切なフィルタが見つからないって事みたいだけど、なんでだろう?
mp3ファイルが全部駄目ってんならわからないでもないけど、再生できる物もあるんだよね。

323 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/04(土) 22:53:36 ID:7PYB1yIE0]
>>322
それはちょっとわからんね
俺の環境でDirectShow Filter Toolで見てみると
MPEG-1 Audio Decoderではffdshow Audio Decoderが一番優先度高くなってるけど

324 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/04(土) 23:15:55 ID:mMfr20YF0]
デコーダは同じくffdshowのが優先度が高くなってる。
問題はスプリッタの方みたい。といってもMPEG-1 Splitterには標準のMPEG-I Stream Splitterしかないわけだが。

GraphEditで再生できるmp3とできないのを両方ともFile Source(Async)でフィルタ追加して、
MPEG-I Stream Splitterと接続してみると、再生できる奴はきちんと繋がるんだけど、
駄目な方はこの時点で繋がらない。

mp3ファイルの構造に何か特徴があるのかもしれんけど、良く解らん。

まぁ、外部プレイヤーで再生すれば良いだけだから特に困るわけではないけど。

325 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/05(日) 05:07:24 ID:Q0OflG6W0]
どうもID3タグが原因っぽい。
ID3 v2.4形式だとほぼ全滅。v2.2はOKっぽいけど駄目な物もある。

本来スプリッターが解釈できない形式だけど、
うまい具合にスルーされるようなデータの並びだった場合は再生されるってことなのかも。

326 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/05(日) 10:05:21 ID:GSTzhBdS0]
ttp://homepage3.nifty.com/k-takata/diary/2006-03.html
にちょうどそれっぽいことが書いてあるね


327 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/05(日) 10:45:45 ID:Q0OflG6W0]
DirectShow ID3v2でぐぐると>>326 の他にも色々出てきますね。
適当なスプリッタを入れてDirectShow Filter Toolで優先度を弄ればよいって事なんでしょうけど、
外部プレイヤーで再生するほうが面倒が無くて良いですね。

328 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/06(月) 16:33:11 ID:qfvTS808O]
軽 く し て く れ

329 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/06(月) 17:29:01 ID:5hyJ9n8f0]
どの辺が重いと感じてる?

330 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/09(木) 12:33:50 ID:LiwvLTFBO]
メモリ消費量の話だよ
ノートに2GBしか積んでないから約20MBも消費してもらったら困るのだよ(・ω・`)o
エクスプローラが30MB消費してて嫌っているのに内骨格まで,,,



331 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/09(木) 12:57:44 ID:IhayzhVc0]
>>330
2GB積んでて20MB程度の消費を気にするって、どんな使い方してんの?

ウチは2.5GB積んでるけど、Web、FTP、SMTP、RDBMS2種、各種チャット鯖等動かしていて、
さらにチャットツール10プロセスくらい、セキュリティ系数種、ランチャー等ユーティリティをいくつか常駐してても
メモリ消費が1GB超える事は滅多に無いんだが。

フォトショップとかメモリ喰いまくるツールを常用してるって事か?


332 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/10(金) 16:59:50 ID:colJBaxJ0]
cfiler_main.pyを弄らないとどうにもならないような変更をしたい場合は
ソースを弄ってpy2exeでビルドしないといけないけどビルド環境を整えるのが面倒。

py2exeはメインスクリプトだけをexeに入れてあとはzipファイルに入れることができて、
cfiler.exeはzipファイルとしても読み込めるようなので、
extension/cfiler_main.py(のmain関数)を呼び出すような構成のexeファイルを作ってみた。

www-2ch.net:8080/up/download/1223624618976031.QBXxNZ

cfilerx.exeとextensionフォルダを内骨格のフォルダにコピーしてcfiler.exeの代わりに
cfilerx.exeを実行すればOK。
cfiler.exe内蔵のモジュールよりもextensionフォルダのが優先してインポートされるので
cfiler_*.pyの改造には便利だと思います。

333 名前:330 mailto:sage [2008/10/12(日) 02:59:29 ID:jgl5K68fO]
>331
Adobe CreativeSuite CS3, Visual Stadio 2005 Professional,同2008 Professional,
Office2003 Professional,同2007 Professional
だいたい重そうなのはこれら
入れすぎたせいかOS起動時間が17秒→35秒と倍以上になった
メモリ使用率は起動直後使用0.64GB 空き1.22GBとなってるけど
上記5つ起動すると使用1.79GB空き0.09GBとなる
90MBしかないメモリーで20MB使われたらたまらん

334 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/12(日) 04:00:51 ID:T1PyJGmZ0]
ヤツあたりだなそりゃ
全然内骨格のせいじゃないじゃん
だいたい90MBも70MBも大して変んねえだろ
PCの使い方が間違ってる

335 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/12(日) 08:40:08 ID:vZGKmrF00]
90MBでAdobe CreativeSuiteとかVisualStudioとかアホかw

336 名前:335 mailto:sage [2008/10/12(日) 08:45:11 ID:vZGKmrF00]
よく読んでなかったすまん

337 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/12(日) 09:39:53 ID:AfXBasM10]
>>333
他のファイラに比べて、あからさまにメモリ喰うとかだったらまだしも、
この場合、どう考えても、金出して買った商品のほうに依頼だすべきだろ。

しかも、挙げたツールを全部一度に起動して常用するなんて事がありえない。
作者さんも、こんなレス見たら不愉快になるわ。

338 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/12(日) 10:44:32 ID:ooNpteYb0]
>>333
ニーズにあってないなら、他のファイラー使いなよ。
もっと使用量少ないファイラーなんていくらでもあるんだからさ。

339 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/12(日) 11:18:16 ID:qm9ryLJ40]
>>333
それらを「同時に」使わなければならない理由が俺には全く分からないのだが
何でバージョン違いのVSやOfficeを同時に起動しておく必要があるんだよ

VS入れてるってことは開発すんのか?
開発者とは思えないほどアホだな

340 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/12(日) 13:18:40 ID:arT3h50T0]
まあまあ皆さん落ち着いて
内骨格がいろんな考え方の人に使われるようになって来ているということですよ
ユーザーが増えることが最も重要



341 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/12(日) 16:10:45 ID:kxl9R+uq0]
sites.google.com/site/craftware/cfiler
1.64 - 2008/10/12
- 履歴ジャンプウインドウ、ブックマーク選択ウインドウ、音楽プレイリストウインドウで、インクリメンタルサーチを使えるようにした。
- ソート方法を選択するとき、Shiftを押しながら決定すると、降順になるようにした。
- UNC形式パスの共有名部分 ( \\servername\share\dirname の share の部分 ) を補完する処理を追加。
- リストウインドウをカスタマイズ出来るようにするため、config.py の configure_ListWindow() を呼び出すようにした。
- MainWindow.editor に 呼び出し可能オブジェクトを設定しているとき、設定メニューから [ config.py を編集 ] がエラーになっていたのを修正。
- cfiler.exe に バージョン情報を埋め込むようにした。
- 画像ビューアで .psd と .tga がデコードできていなかったのを修正。
- cfiler.ini ファイルの読み書きが、プロセス間で同時に起こってしまう可能性があったのを修正。
- 各種リストウインドウの最大サイズが、メインウインドウより少し小さくなるように調整。
- インクリメンタルサーチの背景のグラデーション模様の上端が目立つように少し調整

342 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/12(日) 17:18:30 ID:WZpBsai60]
>>337
のIDがあふ

343 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/12(日) 17:38:26 ID:AfXBasM10]
勝った!(何が?
あふスレに自慢しにいこー

344 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/13(月) 12:06:15 ID:PV3dD2kL0]
1 .66 - 2008/10/13
- 1.65でiniファイルをutf8にした影響で、フォントがカスタマイズされなくなってしまっていたのを修正。
- 拡張子に非ASCII文字が含まれているときは、分離表示しない。

1 .65 - 2008/10/13
- 音楽再生中、ステータスバーの右端に、再生位置を表示するようにした。
- Musicプレイヤウインドウの Ctrl + ←/→ で、再生位置をシークするようにした。
- 音楽プレイヤの最後の状態(プレイリストと再生位置)を記憶し、再起動後に復活させるようにした。
- 比較選択ツールに、もう片方のペインで選択されているアイテムを選択する機能を追加
- テキスト差分ウインドウに、ステータスバーを追加
- テキスト差分ウインドウをカスタマイズ出来るようにするため、config.py の configure_DiffViewer() を呼び出すようにした。
- 指定したパスにジャンプする関数を追加。
MainWindow.leftJump()
MainWindow.rightJump()
MainWindow.activeJump()
MainWindow.inactiveJump()
- いくつかの処理の間のプログレスバーを、2段表示にした。
- 1.64 の変更で、初めての起動で ini ファイルが存在しないときに、起動できなくなっていた問題を修正。
- ini ファイルの文字エンコーディングを S-JIS から utf8 に変更。UNICODEでしか表現できない文字を含むパスが、履歴やブックマークに残らない問題あったのを修正。

345 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/13(月) 17:10:07 ID:N3vcwcWF0]

俺しか使ってねーと思うけどDirectShowメディアプレイヤーを1.65仕様に追従した
codepad.org/7R9idMQS

使う場合はconfigure()ん中で
cfiler_musicplayer.MusicPlayer = DSMusicPlayer
とかやって、クラス自体を置き換えるしかなさげ

346 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/14(火) 08:35:41 ID:6TPlJGxm0]
1.67 - 2008/10/14
- UNC形式のパスで、必要に応じてネットワーク接続のユーザー名とパスワードの入力ダイアログを表示するようにした。
- 比較選択ツールのウインドウは、先頭文字の入力で即時決定するようにした。
- ディレクトリ比較ツールのウインドウは、先頭文字の入力で即時決定するようにした。
- ディレクトリ比較で、アクセスできないファイルなどがあったときに、露骨なエラーが表示されてしまうのを修正。

347 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/14(火) 19:15:44 ID:6TPlJGxm0]
>>345
クラスの置き換えだったらSongMCIをSongDirectShowで置き換えても良いんじゃない?

348 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/14(火) 19:30:17 ID:D2nUNt7X0]
>>347
ああ、確かにそうだなあ
そっちのが手っ取りはやいね

349 名前: ◆Nana...Z5Q mailto:sage [2008/10/14(火) 22:10:26 ID:ktagsRpR0]
>>1からこのスレ見てきたら成長具合がすさまじくて正直惚れた・・・///
ちょっとあふから浮気しちゃいそうな・・・・あぁっ!!ダメっ!!わたしったら・・・

350 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/15(水) 08:21:15 ID:613Z9rbF0]
あふに比べると画面のチラツキが少ないところがいいね



351 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/15(水) 12:22:08 ID:Hp9xrBxM0]
ジャンプリストで頭文字がUのフォルダを登録すると呼び出した時にリストが空白になってしまう。
例)
D:\User
E:\U
E:\hogehoge\U

これってどうすれば登録出来るかなぁ?

352 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/15(水) 14:34:12 ID:W3pIaVcF0]
\を、\\か/にしないといけない

353 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/15(水) 15:11:06 ID:AL+84oe40]
もしくはrを頭に付ける。
r"D:\User"
全角文字がある場合はur。
ur"E:\ドキュメント"

354 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/15(水) 16:05:40 ID:7ayP46Wr0]
sites.google.com/site/craftware/cfiler
1.68 - 2008/10/15
- デフォルト設定ファイルのコマンドラインの設定に "SelectEmpty" コマンドを追加。このコマンドを実行すると、アクティブなペインのディレクトリのうち、空のものを選択する。
- UNC形式のパスをつかったコピーや移動処理のあとの再読み込みで、操作不能になっていたのを修正
- ディレクトリ区切り文字をスラッシュに設定していると、UNC形式のファイルに対して Ctrl-Enter を使うことが出来なかったのを修正。

355 名前:351 mailto:sage [2008/10/15(水) 16:48:31 ID:Hp9xrBxM0]
>>352
うまくいった!ありがとう。

>>353
うまくいかなかった!でもありがとう。

356 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/29(水) 16:43:40 ID:CXNA6QvP0]
なんか過疎ってる?
とりあえずイメージビューワでデフォルトのfitモードでも
画面サイズより小さい画像は拡大しないようにするコード
(config.pyに記述)

def configure_ImageViewer(window):

original_reset = window.reset
def reset():
if window.zoom_policy == "fit":
img_size = window.img.getSize()
client_rect = window.getClientRect()
offset_x, offset_y = window.charToClient(0, 0)
char_w, char_h = window.getCharSize()

area_size = (client_rect[2] - client_rect[0],
(window.height()-1)*char_h + offset_y)
if img_size[0] < area_size[0] \
and img_size[1] < area_size[1]:
window._zoom = 1.0
window.fit = False
window.pos = [0,0]
else:
original_reset()
window.reset = reset

zoom_policy=originalでもちょっと使ってみたが、
スクロールがかなりガタガタ言って、ぶっちゃけ遅くて使い物にならんな
スクロールするだけでpane一から作り直し&全再描画は、さすがに重いんだと思う

357 名前:356 mailto:sage [2008/10/29(水) 16:46:37 ID:CXNA6QvP0]
ごめん
インデント多分ガタガタになってるよな
おまけにちょっとミス

    original_reset = window.reset
    def reset():
        if window.zoom_policy == "fit":
            img_size = window.img.getSize()
            client_rect = window.getClientRect()
            offset_x, offset_y = window.charToClient(0, 0)
            char_w, char_h = window.getCharSize()

            area_size = (client_rect[2] - client_rect[0],
                    (window.height()-1)*char_h + offset_y)
            if img_size[0] < area_size[0] \
                    and img_size[1] < area_size[1]:
                window._zoom = 1.0
                window.fit = False
                window.pos = [0,0]
                return
        original_reset()
    window.reset = reset


358 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/01(土) 15:57:53 ID:QFBYvYmL0]
ためしに画像ビューワ作ってみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7908.zip

通常は画像サイズにウィンドウをあわせて等倍表示
フルスクリーン表示、スライドショウあり
内骨格内臓のやつよりはスクロール軽いけどズームとかはない


359 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/02(日) 18:31:04 ID:FXLtnyE/0]
内骨格のリスト上のディレクトリでエディタ(や他のアプリ)をshift-xで実行して内骨格に戻ったとき、
リストを自動でリフレッシュしてくれるって機能は難しいのかな
新しくできたファイルがリストに載らないからいっぺん上のディレクトリに上がって、戻るって手順を踏んでるんだけど、
いまいちだなと思ってる

360 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/02(日) 20:15:43 ID:8K6SiT4d0]
>>359
完全に自動でやりたければディレクトリ監視が必要だが、手動でいいんなら
config.pyの中で
window.keymap[VK_F5] = window.command_Refresh
とかやればいいよ

これだと(explorer風に)F5でリフレッシュするようになるが、
割り当てるキーはお好みで



361 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/02(日) 22:03:12 ID:lbqTvNF20]
どうもありがとう
とりあえず手動でしのごう
内骨格のwindowにフォーカスが戻ったときのイベントでリフレッシュしてくれればいいんだと思うんだけど、config.pyじゃできないよねこれ

そういえばhotokey設定して内骨格呼び出したとき、全画面表示してたのがウィンドウ表示になってしまうってのも困って(ってほどじゃないけど)る
800*600くらいで全画面表示だととすごく使いやすいんだよなー内骨格

362 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/02(日) 22:27:32 ID:8K6SiT4d0]
>>361
多分cfiler_mainwindow.pyのMainWindow._onActivate()を書き換えるしかねえかな

config.pyのconfigure()が呼ばれる時点で
_onActivate()はcterm側にコールバックとして渡されてしまっているので
configure()の中で_onActivate()を再定義しても手遅れなんだよな

まあ配布物の中身を書き換えるってのもなるべくしたくないだろうし、
もっといい手があるかもしれんがな

363 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/02(日) 23:22:12 ID:Hftvj5k70]
config.pyのconfigure()の中にこんな感じのを書いて
一定時間ごとにファイルリスト更新させるというのはどうだろう。

def command_RefreshBoth(self):
   self.refreshFileList( self.activePane(), True, False )
   self.refreshFileList( self.inactivePane(), True, False )
   self.paint(PAINT_ALL)

window.setTimer(command_RefreshBoth, 1000) # 1000ms ごとに第1引数を実行

364 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/03(月) 00:05:53 ID:mVyLBJ2y0]
超絶に怪しいが俺も書いてみた
こっちはディレクトリ監視をマジでやる
codepad.org/83WhqC7o

config.pyのconfigure()の中に書いてみてくれ


365 名前:364 mailto:sage [2008/11/03(月) 00:21:01 ID:mVyLBJ2y0]
書いたけどこれはやっぱりダメだな、使わないでくれ

裏スレッドから無理やりリフレッシュさせてるんで、
場合によってはあっさりクラッシュしたりするようだ
表にメッセージをPOSTして再描画させられればいいんだが、ウィンドウプロシジャを
自由に弄れないから仕方が無いな

366 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/03(月) 00:30:00 ID:Pz1Fd6H80]
>>363
うーんそれはちょっと好みと外れる...
たしかAPIにディレクトリの変更通知があったよな、と思ったら
>>364
すご
と思ったけどこれ内骨格本体モロとも落ちてしまうw
最初一回ちゃんと動いた
おおと思ってもう一回やってみたら内骨格固まった
再起動したら新ファイルできる度に落ちるような

367 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/03(月) 00:31:35 ID:Pz1Fd6H80]
>>365
了解です

368 名前:364 mailto:sage [2008/11/03(月) 12:54:34 ID:mVyLBJ2y0]
昨日のコードだけど、内骨格が落ちてしまう原因は(何となくだが)分かった
MainWindow.subThreadCall()が再入不可で、別スレッドから並列で呼ばれると、
subThreadCall()内部で待ちに使っているメッセージループを終わらせるための
window.quit()で本当に終了してしまうようだ

cfiler_threadutilのJobQueueを使って、もう少し穏当に再描画させるコードを
書いた。これで上の問題は起きなくなるはず

それと、内骨格が実際に終了するときのフックがうまく取れない(window.quit()は
上記のように、subThreadCall()の中でも呼ばれる)ようなので、
1秒タイムアウトで監視して、IsWindow()でウィンドウが有効かチェックするようにした

ttp://codepad.org/t80s7vnv

369 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/03(月) 14:47:34 ID:CBP0T9O30]
>>368
window.command_Refresh()だとカーソルのあるほうしか更新されないから
両方とも同じフォルダを表示しておいて外部プログラムでそのフォルダにファイルを作っても
片側しか更新されない。

370 名前:369 mailto:sage [2008/11/03(月) 15:15:18 ID:CBP0T9O30]
適当に修正してみた。
codepad.org/zYFNP249

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



371 名前:364 mailto:sage [2008/11/03(月) 15:16:44 ID:mVyLBJ2y0]
>>369-370
おお、修正サンクス

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

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

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

codepad.org/t2j940nG

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

373 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/04(火) 19:41:12 ID:zSoA+Q1n0]
import hogeじゃ駄目だろw
import fooだな。

374 名前:364 mailto:sage [2008/11/04(火) 19:44:01 ID:y4scTvX50]
>>373
><

375 名前:364 mailto:sage [2008/11/05(水) 00:00:56 ID:y4scTvX50]
ウザくてすまん
あげなおし
codepad.org/Df2LOmLF

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

376 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/06(木) 13:58:52 ID:52AN3cia0]
keyhac (craftware)
sites.google.com/site/craftware/keyhac

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

>>358のzipの中にあるvensterと、
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 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/10(月) 00:37:07 ID:5kaSuGXo0]
なんかよさそうな拡張だねえ
これipython組み込める?

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

380 名前:377 mailto:sage [2008/11/10(月) 16:12:32 ID:ryZKA2JN0]
ちょっと直した
codepad.org/1FMoSxfh

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

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



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



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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<131KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef