【2画面ファイラ】 内骨格 Part1 【Python拡張】at SOFTWARE
【2画面ファイラ】 内骨格 Part1 【Python拡張】 - 暇つぶし2ch331:名無しさん@お腹いっぱい。
08/10/09 12:57:44 IhayzhVc0
>>330
2GB積んでて20MB程度の消費を気にするって、どんな使い方してんの?

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

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


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

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

URLリンク(www-2ch.net:8080)

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

333:330
08/10/12 02:59:29 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:名無しさん@お腹いっぱい。
08/10/12 04:00:51 T1PyJGmZ0
ヤツあたりだなそりゃ
全然内骨格のせいじゃないじゃん
だいたい90MBも70MBも大して変んねえだろ
PCの使い方が間違ってる

335:名無しさん@お腹いっぱい。
08/10/12 08:40:08 vZGKmrF00
90MBでAdobe CreativeSuiteとかVisualStudioとかアホかw

336:335
08/10/12 08:45:11 vZGKmrF00
よく読んでなかったすまん

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

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

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

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

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

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

341:名無しさん@お腹いっぱい。
08/10/12 16:10:45 kxl9R+uq0
URLリンク(sites.google.com)
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:名無しさん@お腹いっぱい。
08/10/12 17:18:30 WZpBsai60
>>337
のIDがあふ

343:名無しさん@お腹いっぱい。
08/10/12 17:38:26 AfXBasM10
勝った!(何が?
あふスレに自慢しにいこー

344:名無しさん@お腹いっぱい。
08/10/13 12:06:15 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:名無しさん@お腹いっぱい。
08/10/13 17:10:07 N3vcwcWF0

俺しか使ってねーと思うけどDirectShowメディアプレイヤーを1.65仕様に追従した
URLリンク(codepad.org)

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

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

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

348:名無しさん@お腹いっぱい。
08/10/14 19:30:17 D2nUNt7X0
>>347
ああ、確かにそうだなあ
そっちのが手っ取りはやいね

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

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

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

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

352:名無しさん@お腹いっぱい。
08/10/15 14:34:12 W3pIaVcF0
\を、\\か/にしないといけない

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

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

355:351
08/10/15 16:48:31 Hp9xrBxM0
>>352
うまくいった!ありがとう。

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

356:名無しさん@お腹いっぱい。
08/10/29 16:43:40 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
08/10/29 16:46:37 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:名無しさん@お腹いっぱい。
08/11/01 15:57:53 QFBYvYmL0
ためしに画像ビューワ作ってみた
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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


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

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

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

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

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

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

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

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

363:名無しさん@お腹いっぱい。
08/11/02 23:22:12 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:名無しさん@お腹いっぱい。
08/11/03 00:05:53 mVyLBJ2y0
超絶に怪しいが俺も書いてみた
こっちはディレクトリ監視をマジでやる
URLリンク(codepad.org)

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


365:364
08/11/03 00:21:01 mVyLBJ2y0
書いたけどこれはやっぱりダメだな、使わないでくれ

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

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

367:名無しさん@お腹いっぱい。
08/11/03 00:31:35 Pz1Fd6H80
>>365
了解です

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

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

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

URLリンク(codepad.org)

369:名無しさん@お腹いっぱい。
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