【2画面ファイラ】 内骨格 Part1 【Python拡張】
1 :
ミスター外骨格 :
2007/10/24(水) 04:02:04 ID:ENN/kcvg0
ビューアやプレイヤの対応形式はどうなってるの?追加可能? とりあえずwmaくらいは標準対応しておいた方が…
今だ!!!2get  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ とりあえず単独ではホットキーでアクティブ化とかできないよね? あるかなーとかソース見たりしてたら ファイラーとしての機能見てみる前に疲れ果てたぜ! ちょっとカーソルの動きが重い気が、俺の糞PCのせい? で、内骨格って凄い名前だなw
標準対応の拡張子はこれか。
text_file_ext_list = ( ".txt", ".py", ".htm", ".html" )
image_file_ext_list = ( ".bmp", ".gif", ".jpg", ".jpeg", ".png", ".psd", ".tga", ".tif", ".tiff" )
music_file_ext_list = ( ".mp3", ".ogg", ".wav" )
>>3 なんかごめんな
pythonか...rubyも搭載してくれないかなぁ
まーたパイソンか・・・
いんでんとかんべんして
書庫内見れないのか。
zipとtgzだけ、、、lzhと7zとrarぐらいはせめて、、、
あ、本当だ。zipも見える。 あれ、rarも見えるぞ? と思ったらあふ触ってた。
エイプリルフールネタかと思わずカレンダーを見た。
さすがな感じのファイラーなんで、今後に期待。
>>10 冗談じゃなくありえるな。
作者が作者だから、いきなりスレ立っちゃうのも 分からなくはないが、やりづらいだろーな。
むしろ作者たんが作者たんだからスレを立てたんじゃないかと思ってみた
作者は2ちゃん見ない派じゃない?
しかし倉の放置っぷりを見たら・・・あんまり期待はできないな
__,,,,_ /´  ̄`ヽ, / 〃 _,ァ---‐一ヘヽ i /´ リ} | 〉. -‐ '''ー {! | | ‐ー くー | ヤヽリ ´゚ ,r "_,,>、 ゚'} ヽ_」 ト‐=‐ァ' ! ゝ i、 ` `二´' 丿 r|、` '' ー--‐f´ _/ | \ /|\_ / ̄/ | /`又´\| |  ̄\ 皇太子様が「これなんてあふ?」と仰せのようです。
倉は弄るとこない気が・・・
1.01キタ━━━━━━(゚∀゚)━━━━━━!!!!
テキストファイルでバイナリビューアが起動するな・・・ わからん、寝よう・・・
英語版Windowsだと文字が化け化け どこかでフォント設定できるの?
バグ報告と要望出しまくって作者たんを鬱にして 2ch嫌いにしてあまのっちみたいにする気だな! あまのっちはツンデレだけどな
乗り換えるのは、あふと同等以上になってからだな。 あふは進化が止まってるから期待したい。
カスタマイズの仕方がわからないぜ! 誰か手本を示して下されば幸いでございます・・・
24 :
16 :2007/10/26(金) 14:52:38 ID:EtNsbPF00
煽るようなこといったけど、実はすごく期待してるんだ… 作者がんばって!
(既に起動中でも)コマンドラインオプションで表示ディレクトリを変更したりできる?
配色がいいなー
確かに見た目は良い
28 :
名無しさん@お腹いっぱい。 :2007/10/27(土) 06:03:16 ID:wlfcdVXh0
内骨格 ver 1.02 [変更点] - テキストビューア / バイナリビューアの起動を高速化するため、chardet の使用をやめて、自前で文字エンコーディングの推測を行う。 - L キー でテキストビューア / バイナリビューアを起動。 - WMA対応 - _config.py に あふ を起動するサンプルを追加
仕事速いな
> あふ を起動するサンプル お父さん助けてー! みたいなの想像して吹いた
作者さん超乙!
うむ、クラスとかとても難しい カーソルを上下でループさせれるようにならないかなとかやってみて 数時間かけて俺が根本的にわかってないことだけわかった 作者さん任せた!
サンプルみたいにconfig.pyに適当に書いてkeymapで割り当てたらできた 無理やり感がするが、動いたからいいや! pythonしっかり勉強しよう・・・
肉骨粉か
いつの間にかカーソルの場所記憶するようになってるね、うれしい 個人的にはイメージビューアで画像見ながらマークができないのが画像整理に痛いです
36 :
名無しさん@お腹いっぱい。 :2007/10/28(日) 16:38:25 ID:LAA/oW+k0
gmail driveに対応してくれたら神。
無理言うなやw 独自実装ならいけそうだな
.lnkはReturnでフォルダ移動にして欲しいっす
パイソンで肉付けってかー なかなか美味いネーミング
41 :
名無しさん@お腹いっぱい。 :2007/10/29(月) 22:58:39 ID:Q5fjNi7p0
どうせなら肉便器にして欲しかったな
最大化すると下がちょっと短くて後ろが見えるのは俺の環境だけかな? あと削除はゴミ箱行きがいいな、履歴は残して欲しいな
# やっつけhjkl操作リマップ # 標準のキーバインドを殺すので適当にその分振ってください window.keymap[ KeyMapCondition( KeyEvent(VK_J, 0) ) ] = window.command_CursorDown window.keymap[ KeyMapCondition( KeyEvent(VK_K, 0) ) ] = window.command_CursorUp window.keymap[ KeyMapCondition( KeyEvent(VK_H, 0) ) ] = window.command_FocusLeftOrGotoParentDir window.keymap[ KeyMapCondition( KeyEvent(VK_L, 0) ) ] = window.command_FocusRightOrGotoParentDir なんか面倒だな
CraftLaunch2.08+あふで十分だからpython勉強してまで離れる気になれないんだよな。 しかしこやつはPPXを超えるカスタマイズ性があるのか?
>>39 command_LaunchAFXとかの並びに
class my_CursorUp:
def __init__(self,window):
self.window = window
def __call__(self):
pane = self.window.activePane()
pane.cursor -= 1
if pane.cursor<0 : pane.cursor= pane.file_list.numItems()-1
pane.scroll_info.makeVisible( pane.cursor, self.window.fileListItemPaneHeight(), 1 )
self.window.paint(PAINT_FOCUSED_ITEMS)
class my_CursorDown:
def __init__(self,window):
self.window = window
def __call__(self):
pane = self.window.activePane()
pane.cursor += 1
if pane.cursor>pane.file_list.numItems()-1 : pane.cursor=0
pane.scroll_info.makeVisible( pane.cursor, self.window.fileListItemPaneHeight(), 1 )
self.window.paint(PAINT_FOCUSED_ITEMS)
configure内に
window.keymap[ KeyMapCondition( KeyEvent( VK_UP , 0 ) ) ] = my_CursorUp(window)
window.keymap[ KeyMapCondition( KeyEvent( VK_DOWN , 0 ) ) ] = my_CursorDown(window)
config.py内に構文エラーがあると固まるの面倒っすね・・・
まあ間違えるのが悪いわけですがw
Python理解できるなら自分でプログラム組んでランチャ作れるんじゃね?
なぜこのスレでランチャの話を・・・
これってLinux上では動かないの? たとえばPython+PyGtkなんかで作ってあれば OSを問わずに動いたりしてよさそうだけど…
コア部分はWin32API + C++です よって無理
週末にくるかなーと思ってたがバージョンうpこなかったなー
って、1.03キテター カーソル移動速くなってる! 作者乙!
52 :
名無しさん@お腹いっぱい。 :2007/11/05(月) 08:16:27 ID:7DGXAgHl0
1 .03 - 2007/11/05 - 画像ビューアのズームモード (フィット/オリジナル) をiniファイルに記憶するようにした - Grep / Search の結果を再読み込みするとき、Escで中断できるようにした - Search / Grep のとき、ステータスバーにその旨表示するようにした - 画面を分割している各種バーが端まで描画されるようにした - Enterキーの処理をカスタマイズするためのフックを追加 - 描画を少し高速化 - 設定ファイルの文法が間違っていたときにアプリケーション全体がハングアップするのを修正
本体で使われてないモジュールはimportできないっぽいね 自力でsys.pathに足せばいいっぽいが
config.pyとかでimport urllib2とやってみてもできないはず・・・ No module named urllib2て言われる urllibは俺は使わんがw
先生!起動のときウインドウサイズを最大化指定すると 終了時にエラーダイアログが出て、cfiler.exe.logに↓のように書き出されました! Traceback (most recent call last): File "cfiler_mainwindow.pyo", line 331, in _onSize AttributeError: 'MainWindow' object has no attribute 'left_window_width'
これフォントの大きさどうやって変えるの?
ディスプレイに顔を近づける/遠ざける
遠ざけると文字が滲みます。 これがアンチエイリアスというものですか?
そうです。 私が変なおじさんです。
1.04キタ━━━━━━(゚∀゚)━━━━━━!!!! が、ファイル壊れてるな
>>57 cfiler.iniのFONTのSize
それ1.04からだがな・・・ shift+zでも変えれるようになったね
連投すまない(´・ω・`)
あふのマーク済みのファイルを「SHIFT+Rで一括リネーム」できる機能が
すこぶる便利だったんだけど、内骨格にも似たような機能って実装されてるのかな?
並のリネームソフトよりも個人的にはすごく使い勝手よかった
>>49 コア部分がDelphiなのとC++なのってなんか差があるのでしょうか
私はプログラムのことよく分からないのですが あふがDelphiでできてるらしいんで、C++と どう違うのかなあと思って質問してみました。 うーん、スレ違いもはなはだしいかもw 自重しまふ
誘導ありがとう!
Delphi製だから、あふはUnicode対応が難しいんだな
70 :
名無しさん@お腹いっぱい。 :2007/11/17(土) 22:04:15 ID:XJBT8aEe0
はげ
71 :
名無しさん@お腹いっぱい。 :2007/11/18(日) 11:02:46 ID:brYruGzW0
ミュージックプレイヤの使い方がわからん どうやったら停止できるんだ?
1.05来てるね ホットキーでアクティブ化できるようにして欲しいなぁ
74 :
名無しさん@お腹いっぱい。 :2007/11/20(火) 11:10:39 ID:WMqR+J9p0
1 .05 - 2007/11/20 - U キーで、アーカイブを展開する機能を追加。 - Shift-U キーで、アーカイブの中をログウインドウに出力する機能を追加。 - ヒストリウインドウで左右のキーを押して、左右のペインのヒストリに切り替えることが出来るようにした。 - Grepダイアログに、正規表現のOn/Offと、大文字小文字無視のOn/Offの、チェックボックスを追加。 - テキストビューアで E キーを押したときに、エディタを起動するようにした。 - ディレクトリの移動をしている間、ステータスバーに状態を表示する。 - Grep / Search が完了したときは、ステータスバーに状態を表示する。 - ドライブ選択で、ディレクトリがないときに、ドライブが切り替わらないのを修正。 - [ - no item - ]を編集しようとしたときに例外が発生するのを修正。 - テキストビューアで、推測した文字エンコーディングで変換できない文字があった場合に、エラーにせずに、無理やり表示するようにした。
どこから落とすんだ? リンク貼られてないじゃん
動画ファイルはEnterキー押下で再生、みたいなのはどう書けば良いの?
Enterキーの処理をカスタマイズするためのフック のところで拡張子で場合分けすればできるんじゃないかなぁ
バージョンうpがないと悲しいです
作者のホームページを見たら、いつのまにやら1.06になっているな。 更新情報 - 2007/12/03 内骨格 ver 1.06公開 変更点はホームページに書いてなかったので分からなかった。
- ホットキー機能を追加 (Shit-Zキーメニューから設定)
84 :
名無しさん@お腹いっぱい。 :2007/12/04(火) 07:48:08 ID:NtK/0HGm0
1 .07 - 2007/12/04 - Grepダイアログに再帰のチェックボックスを追加 - Grepダイアログの状態をiniファイルに保存する - ファイルの移動で、移動先に同じ名前のファイルがあった場合に、上書きを選択してもエラーになってしまうのを修正。 - テキスト編集部品で、Ctrl+BackSpaceを押したときにエラーが発生していたのを修正
おお、ついにアクティブ化のホットキーが! 次はぜひ最小化時のタスクトレイへの格納機能が欲しいです・・・
86 :
sage :2007/12/05(水) 13:09:12 ID:FZn51odF0
window操作関連は、何を参考にしたら良いんですか? とりあえずself.window.quit()で終了できた。
ソースのcfiler_mainwindow.pyあたりを読んでみ
ほ
ログパネルの内容を保存するスクリプトを書いてみた 以下をcfiler\extension\logwrite.pyに保存する import sys, os.path,cfiler_misc logfile = os.path.join(os.path.split(sys.argv[0])[0],u"log") def savelog(window, fn = logfile): try: f = file(fn,"w") l= u"" for i in window.log_pane.log.log: l += i + "\n" f.write(l.encode("utf_8")) finally: f.close() def saveandopenlog(window,fn = logfile): savelog(window,fn) cfiler_misc.shellExecute(None,None,window.editor,fn,os.path.split(fn)[0]) 呼び方 configure関数の適当な場所に import logwrite logwrite.savelog(window) 又は import logwrite logwrite.saveandopenlog(window) 二つ目は保存した後に内骨格で指定されたエディタで開く デフォルトでcfiler\logに保存するので変えたい方は適当に変えてください。
90 :
名無しさん@お腹いっぱい。 :2007/12/12(水) 07:20:50 ID:0hHs2+pm0
1 .08 - 2007/12/12 - Shift-Zの設定メニューに、Escキー動作選択、を追加。Escキーでウインドウを非アクティブ化できるようにした。
変更点] - 時間のかかるファイル操作(ファイルのコピー/移動/削除、アーカイブの作成/展開)を実行中に、ほかの操作を実行できるようにした。
おお、1.09か
1.10も来てるな >1 .10 - 2007/12/24 >- デフォルト設定ファイルの書き方を整理。 > (出来るだけ、クラスではなく、関数を使うように) >- ファイル名パターンによる関連付け実行機能を追加。 > (デフォルト設定ファイルでWindows Media Playerによるビデオファイルの再生を追加) >- アーカイブの中はヒストリ選択ウインドウに表示しないようにした。 >- リストウインドウや、メッセージボックスを表示するとき、一瞬小さく表示されるのを修正。 >- ディレクトリの移動やドライブの切り替えなどで、移動に失敗したときのエラーメッセージをちゃんと出すようにした。 >- テキストビューア/バイナリビューアで、大きなファイルを開こうとしたときに、警告メッセージを表示するようにした。 >- テキストビューア/バイナリビューアで、メモリ不足エラーが発生したときに、操作が出来なくなるのを修正。
起動する度にランダムで、Tipsとかショートカットキーの 割り当てを表示してもらえると、操作を覚え易くて助かるなぁ。
さあ、自分で作って公開する作業に戻るんだ
94
>>95 ググってネットに転がってるコードをつぎはぎして作ってみました。
【1】config.pyの中に以下のように書く。
import tips; tips.view_tips()
【2】extensionフォルダの中にテキストファイルtips.pyを作る。
↓中身はこれ。(全角空白はタブなりスペースなりで置き換える。)
import random
def linecount(fsrc):
count = 0L
for line in fsrc.xreadlines():
count += 1
return count
f = open('extension/tips.txt','r')
l = linecount(f)
f.close()
x = random.randint(0, l-1)
f = open('extension/tips.txt','r')
allLines = f.readlines()
f.close()
todays_tips = unicode(allLines[x], 'utf-8').replace('<br>', '\n')
def view_tips():
print u'☆ 今日のTips ☆'
print todays_tips
97 :
94 :2007/12/25(火) 21:30:38 ID:24DSGUSL0
あ、名前欄に自分の番号を書かなきゃだよね、俺バカス…。 【3】extensionフォルダの中にテキストファイルtips.txtを作る。 一行に一つTipsを書く。改行したい時は<br>と書く。 ↓こんな感じ。 End<br>ファイル選択をすべて解除 Shift + End<br>ファイルリストを更新 Shift + ↑/↓<br>ログペインのスクロール Shift + ←/→<br>ログペインのスクロール(ページ単位) ※ファイルはUTF-8で保存する事。
配列からランダムな要素を取り出すにはrandom.choice()が便利 lines = f.readlines() todays_tips = random.choice(lines)
99 :
94 :2007/12/27(木) 22:03:19 ID:bVoGxMAH0
>>98 ありがとーーー!
こんなに短かく書けるなんて!
でも6行目は詰め込み過ぎなのかな…?
import random
f = open('extension/tips.txt','r')
lines = f.readlines()
f.close()
todays_tips = unicode(random.choice(lines), 'utf-8').replace('<br>', '\n')
def view_tips():
print u'☆ 今日のTips ☆'
print todays_tips
100 :
名無しさん@お腹いっぱい。 :2007/12/30(日) 02:35:11 ID:3L4tYeW10
@@@
101 :
名無しさん@お腹いっぱい。 :2007/12/30(日) 05:06:49 ID:YsQ5Tmz20
ごみ箱使った削除 K 即削除を Shift+K とかにしてほしい。>作者さま
viewerのコマンド・キーの割り当てを変えたいのですが できますか?
104 :
102 :2007/12/30(日) 14:43:46 ID:dhSG1j5C0
>>101 簡単に済むような書き方してしまったけど、ごみ箱に移す方法が
俺も分からんかった。
あまり足しにならん答えで悪いけど、/、d、Enterでごみ箱には行く。
(右クリックメニューをカスタマイズしてたら一発では行かんかも知れんけど。)
101には正直済まんかった(´・ω・`)…。
C:\Recycledとかに移動すればいいんじゃね? できないんだっけ?
107 :
名無しさん@お腹いっぱい。 :2008/01/03(木) 11:21:53 ID:8ieZs6ac0
あふとは違うのだよ、あふとは
そこでKFへのリンクを貼る意味が分からん。宣伝か?
1.20キタ━━━━━━(゚∀゚)━━━━━━!!!!
110 :
名無しさん@お腹いっぱい。 :2008/01/03(木) 19:12:19 ID:tbQ4rsNa0
1 .20 - 2008/01/03 - 一括変名機能を追加 ( ファイルを選択して Shift + R ) - ブックマーク機能追加 - ファイル名の入力部品で、CraftLaunch風のファイル名補完機能を追加 - インクリメンタルサーチに、部分一致モードと、あいまいモードを追加 - ¥ キーでルートディレクトリに移動 - Grepとサーチを、バックグラウンド処理に変更 - 設定メニュー2に、106キーと101キーの選択メニューを追加 (これまでは101キー固定だった) - Musicプレイヤの操作方法を、ピリオドキーを使うように変更 - フォアグラウンド処理を実行中、バックグラウンド処理で子ウインドウを表示するのを遅延させるようにした。(2重に子ウインドウが表示されてフォーカス位置が不正になるのを修正) - バックグラウンド処理をキャンセルすると、その後のバックグラウンド処理が開始されないのを修正 - デザインを少し調整 (テキスト編集部品の色、子ウインドウのタイトルバーの太さ)
>- ¥ キーでルートディレクトリに移動 これはあふで使ってて慣れていた操作だからありがたいです。 - 設定メニュー2に、106キーと101キーの選択メニューを追加 (これまでは101キー固定だった) 自分がUSキーボード使いだから気付かなかった…。 106を選ぶと、コンテキストメニューがあふと同じく、スラッシュではなく バックスラッシュ(右Shiftの隣)で出るようです。 あと、選択項目の色がブルーのグラデーションで綺麗だなぁ。 元旦から乙です!
>>108 インスコして試してみたんだけど、KFでファイルの削除をすると
ゴミ箱に行くみたいですね。
>>106 はそれが言いたかったのでは?
ゴミ箱使うようになんて、あふはできるし、内骨格でもできるんじゃね?
デフォルト設定がそうなってないと嫌って話しかもね。
115 :
名無しさん@お腹いっぱい。 :2008/01/03(木) 22:45:46 ID:8ieZs6ac0
あふとは違うのだよ、あふとは
要するにVZファイラーなのか?
>>115 そのセリフ、テンプレに入れようぜw
気に入ったよw
今更だが単独スレ建てる必要あったのか?倉スレ間借りすればよかったんじゃね?
落ちてないしいいんじゃね? 倉は話題がないから乗っ取る形になっちゃうし・・・
120 :
名無しさん@お腹いっぱい。 :2008/01/05(土) 03:38:32 ID:FWPGDGRg0
宣伝メールキタ━━━━(゚∀゚)━━━━!!
Pythonのメーリングリストか アンケやってるし、開発がひと段落したのかな あ、1.21きてたね
122 :
名無しさん@お腹いっぱい。 :2008/01/05(土) 14:57:33 ID:/KFdD98M0
1 .21 - 2008/01/04 - インクリメンタルサーチ中にスペースキーでファイルを選択。 - Shift + J でパスを入力して移動する際、入力したパスがディレクトリ名ではなかった場合、エラーにするのではなく、1つ上のディレクトリに移動して、ファイル名にカーソルを合わせるようにした。 - 実在しないディレクトリを削除しようとしたときに、エラーが発生していたのを修正。 - アーカイブファイル [ ".tgz", ".gz", ".bz2" ] の中の仮想ディレクトリのなかで、END キーを使って選択解除をしたときに、エラーが発生していたのを修正。 - 各リストウインドウのサイズを調整 - 時間編集ウィジェットの背景全体にちゃんとグラデーションをかける - ホットキー編集ウィジェットのキー入力欄の背景にちゃんとグラデーションをかける
なんであふ使わないの?
作者さん。更新乙です 1 .22 - 2008/01/07 - ファイル名補完の挙動をCraftLaunchの挙動に近づくように調整。 - 補完候補ウインドウを出した瞬間、補完されないのを修正。 - 補完するとき、リストの選択位置がトップにリセットされないように修正。 - BackSpaceなどで補完候補ウインドウを出したときは、なにも選択されていない状態にする。 - [ / , ¥ , ピリオド ]を入力したとき、選択範囲のなかの適当な位置まで確定するようにした。 - 補完候補のディレクトリ名の末尾には、/ を付加するようにした。 - サーチ結果表示ウインドウのタイトル文字列が、[Grep完了]になっていたで、[Search完了]と修正。 - makefileを修正して cfiler_native.pyd と ctermcore.pyd のサイズを小さく。
既に出てるがな というかここに直接貼ったら偏るだろ・・・
もう更新が来てた。最近早いなあ。 1 .23 - 2008/01/08 - ディレクトリの再帰的な比較機能を追加 ( Shift + W ) 左右ペインのディレクトリを深く比較し、条件に該当するファイルやディレクトリをファイルリストに列挙する。
craftlaunchとの統合ってどんな状態のことを言ってるんだろう 合体?
したい
キモチィィィ!!!
作者元気だなぁ 1 .24 - 2008/01/10 - 日時編集ウィジェットで、入力できない問題を修正 - ディレクトリ区切り文字を、/と¥から選択できるようにした。(設定メニュー2) - テキストビューアで Tab がスペース1つ分で表示されていたのを修正。スペース4つ分で表示するようにした。 - ファイル名入力時の単語区切り位置検索の挙動を改善。Ctrl + BackSpace でディレクトリ1つ分、削除するようにした - ファイル名補完をしたときの、アンドゥバッファの内容がおかしくなっていたのを修正
1.25 どこに向かうんだろう・・・ とりあえず拡張しやすくして欲しいなぁ、するネタがおもいつかんがw
1.25はコマンドライン関連の機能追加が多いな。 [変更点] - ネットワークアップデート機能を追加 (設定メニュー2で有効/無効に設定できる) - X キーにコマンドライン機能を追加 (コマンドラインは、ステータスバーの位置に表示される) - コマンドラインランチャ機能を追加 (実験的) - コマンドライン計算機を追加 - コマンドラインの補完入力中、TABキーで、補完候補の共通部分まで確定する。 - Shift + J の入力の際、ファイル名補完の候補に履歴を含めるようにした - テキストビューアのTABの幅が、全角文字の近くで、まだおかしかったのを修正 - その他いろいろ調整
コマンドでaって打ったら、Aboutが補完されて出て来た。 a以外は、まだ何も出ないみたい。 これからどんなコマンドが出て来るのか楽しみ〜 っつーか、もしかしてPython分かる人だったら自分でコマンド 作れたりするの、これ?
importすら面倒で拡張しにくい
1.26 ただし解凍不能
あ、解凍できた age途中だったのかな・・・
138 :
名無しさん@お腹いっぱい。 :2008/01/21(月) 01:49:24 ID:6g1+eEGO0
キタ━━━━━━m9( ゚∀゚)━━━━━━!! [変更点] - Ctrl + スペース で、上方の選択されたアイテムとの間を範囲選択。 - Shift + マイナス で、アクティブなペインを横方向に最大化する。 - O、Shit + O で、片方のペインをもう片方のペインと同じ位置に移動させる際、カーソル位置もコピーするようにした。 - O、Shit + O で、Grep や Search の結果をコピーする際、Grep や Search の結果を そのままコピーするのではなく、カーソル位置のファイルが実在するディレクトリを表示するようにした。 - コマンドラインの履歴を残すようにした。 - Shit + Ctrl + C でフルパスをコピーしたときに、ディレクトリ区切り文字に/を設定しても、一部に¥が使われてしまうのを修正。 - ディレクトリ作成や、新規ファイル編集などでは、ファイル名の自動補完を行わない。 (SPACEキーで手動補完はできる。)
おお!ちゃんと自動であっふでーとしました。 作者様、乙であります!
- 2008/01/26 内骨格 ver 1.28公開 [変更点] - ファイルリストの取得を高速化。 (ファイルの情報の取得をPythonからC++に書き直し) - コマンドラインの自動補完が邪魔な時があるので自動補完をやめる。 - I-Search中、スペースキーでファイルを選択するだけでなく、スペースが入力されるのを修正。 - I-Searchでは、部分一致モードや、あいまいモードであっても、より厳密な条件でヒットするファイルがある場合は、それを優先的に選択する。
過疎でほとんど誰も使わずに、作者もすぐに飽きるかと思ってたけど、 すごいな。めきめき進化していくよ。
なんであふ使わないの?
あふ使いの作者が作ってるから、期待しながら試してる
うん、俺も期待をこめて、あふと内骨格を半々で使ってる。
俺もあふ使いながら内骨格弄ってる
あふ仕様の設定ファイルうpしてー
最新版は1.28だが、こちらも一応載せておく。 マウス使えるようになったんだな。あふより使いやすくなるかもしれない。 1 .27 - 2008/01/25 - マウス操作で、ファイル選択やディレクトリの移動などが、ある程度行えるようにした。 マウス操作は、設定メニュー2で無効にすることが出来る。 - マウスのホイールでファイルリストをスクロールするようにした。 - コマンドラインにおいて、セミコロン区切りで引数を与えられるように。 - Search / Grep をバックグラウンドで処理している間に、ディレクトリを移動したとき、検索結果をファイルリストに反映させたときのパスが、検索位置ではなく、移動後を指してしまっていたのを修正。 - デフォルト設定ファイルに、Googleコマンドと、Eijiroコマンドを追加
148 :
名無しさん@お腹いっぱい。 :2008/01/30(水) 02:45:30 ID:VGGZ/KkL0
1.29うp! どんどん強力になっていくぜ
あふ互換の設定項目って……。 まさか作者はこのスレを見てるのか? 1 .29 - 2008/01/30 - 設定メニュー2のキー割り当てに、あふ互換の設定項目を追加 - DOS窓を出さずに、コマンドラインプログラムを呼び出し、その出力を内骨格のログペインにリダイレクトする機能を追加。( MainWindow.subProcessCall )。 - 任意のパスを、仮想ドライブとして割り当てる "Subst"コマンドを、デフォルト設定ファイルに追加。(subProcessCall() のサンプルとして。)
アンケートに書いてた人いたと思う そして俺の要望は放置さ!
>>149 逆に考えるんだ
えっ、作者このスレ見てないの?的な
某ファイラの作者たんは2ch見てないとか
要望しても採用なんてしないんだから!
といいつつがんがん採用してくれてる
久々に内骨格を使ってみた。 以前と違って、なかなか使いやすくなっていた。 ただ一つ難点を挙げるならば、あふのようにファイルの種類に応じて、 文字の色を変えたいのだが、方法が良く分からない。 Pythonスクリプトで出来そうだが、ドキュメントがほとんどない。 もう少しであふを超えそうなのに惜しい。
バージョンうっぷ! 1 .30 - 2008/02/04 - テキストの差分表示機能を追加 ( ファイルを2つ選択して Shift + W ) - MainWindow.editor に、ファイルパスだけでなく、呼び出し可能オブジェクトを設定できるようにした。 - Shiftを押しながら左クリックで、一括選択するようにした。 - subThreadCall() / subProcessCall() が、返値をちゃんと返すように。 - ファイルのタイムスタンプが 1970年 - 2038年 の範囲外だったときに、いろんな箇所で正しく扱えなかったのを修正。 - 実在していないファイルをテキスト/バイナリビューアで閲覧しようとすると、おかしな挙動になっていたのを修正。
倉はもう更新がない(完成してる)と思ってたので、全然サイトチェックしてなかったら こんなの作ってたのね。 ログ読まずに訊くけど、倉から【表示ディレクトリを内骨格で開く】はできる?
AFXCFGとAFXKYSET相当の設定補助ツールあったら即乗り換えられるのにな。。。
Gmail Drive対応か、このスレでも昔誰かが要望してたね 凄いことなのか? なんか、個人的にはわけわかんねー機能がものすごい勢いでてんこ盛りになってる印象なんだがw
ちょっと凄い気はする Gmailアカウント取り直ししないと駄目だけど
1 .31 - 2008/02/10
- Gmail Drive 対応。Gmail Drive (
http://www.viksoe.dk/code/gmail.htm )
のファイルを一覧し、コピーや削除などが出来ます。使用するには、システムに
Gmail Drive を別途インストールすることが必要。
- テキスト差分表示の色が暗すぎたので、少し明るめに調整。
精力的だなあ。
あふ+だいな+α なんか方向性がこういう感じになってきてるな
もう骨格の枠を超えてるぜ
こういう機能は、自分でつけやがれ!な方向で行くのかと思ってた 拡張しやすくしてくれ!
1 .32 - 2008/02/13 - FTP / WebDAV 機能の実験的な実装を追加。(コマンドラインで "NetworkPlaceTest") - ヒストリの順番が起動のたびに逆順になっていたのを修正 - 仮想ディレクトリやGmailDriveの中を閲覧している間に内骨格を終了したとき、 次回起動時に前回と同じ場所を表示できないので、ヒストリに残っている最後の 場所を表示するようにした。 - Gmail Drive の中から Gmail Drive の中へのファイル移動でエラーが発生して いたのを修正。 - ディレクトリのリネーム時にエラーメッセージが表示されていたのを修正。 - ディレクトリのタイムスタンプを変更できるようにした。 - ブックマーク機能で、ファイル名のアルファベットの大小が違う場合や、 ディレクトリ区切り文字が/と¥で違う場合の挙動が変だったのを修正。 - 複数ファイルのドライブ間の移動で、ディレクトリ削除の後エラーになる場合が あるのを修正。
やべー、こいつはやべーWebDriveが不要になる日が近いのか
あふ使いとしては、ネットワーク対応はグラッとくるものがある。ウムム。
Susieプラグインは使えないのか?
ktkr ver 1.33 [変更点] - [ *.lzh *.rar *.7z ] に対応 別途、対応するコモンアーカイバライブラリをインストールすることが必要。
あふは未だにver0.xなのに こいつはまだ新生児のクセしてver1.xかよw
これ設定わかりづら杉だよ。。。あふぅ〜
172 :
名無しさん@お腹いっぱい。 :2008/02/22(金) 23:12:32 ID:x/wzEmZ00
p押したときなどに、Archive先のパスを入力するところの 補完候補が画面の下に出るのを上側にでるようにしてほしい。 最大化したときに、下にでると補完候補が見えなくなってしまう。 他の補完候補もそうなんだけれど、それが改善されると 補完される候補が見れるようになるので、使いやすくなるんじゃないかなぁ。 可能性を感じてあふから乗り換えたので、頑張ってほしい!
ver 1.34キテルネ
タイムスタンプを保ったままコピーとかできないのか。 ソース見ても中身のコピーだけでタイムスタンプとかは弄ってないみたいだし。 あとrで開くファイル情報の変更ダイアログではファイル属性の変更ってできないのかな?
1 .34 - 2008/02/24 - 設定メニュー2に、アプリケーション名のカスタマイズ項目を追加。"内骨格"と いう名前を、好みの名前に置き換えることが出来る。 - フォントの設定と、アプリケーション名のカスタマイズを、表示関連のサブメ ニューに分離。 - コモンアーカイバライブラリを使った仮想ディレクトリから、ディレクトリの コピーが出来なかったのを修正。 - コモンアーカイバライブラリがインストールされていないときのエラーメッセー ジを分かりやすくした。 - zip / tgz / bz2 の仮想ディレクトリ内の移動を高速化。 - zip / tgz / bz2 の仮想ディレクトリを開いた後、アーカイブファイルがクロ ーズされていなかったのを修正。 - アーカイブファイルの中に日本語のファイル名が含まれていたときに、仮想ディ レクトリが正しく表示されない場合があるのを修正。
これ本格的に良くなってきたね。 なんかいつの間にかrar等対応してるし。 そろそろ真面目にあふから移行を考えようかな。 画像ファイルの縮小があふより綺麗だし。
177 :
名無しさん@お腹いっぱい。 :2008/02/28(木) 18:23:23 ID:wPAsi6ln0
併用するならまだしも、移行するってどんだけ…なんだよw あふ使え、あふを。
またお前かw
うーん、あふから移行を考えると細々したところが問題になってくるね。 例えばウィンドウのサイズを変えた時にいちいち-を押さないと 左右のペインサイズの比率がおかしくなるとか、 画像を見ながらファイルを選択することができないとか、 画像ビューアをフルスクリーンにできないとか。
カーソルループッ!!ってできないよね。でも、期待しながら使い続ける俺は、 エロ動画ダウンローダで、Unicode対応が(ry
つPython
>180 Unicode目的ならPPxでいくね?
1.35
- 2008/03/03 内骨格 ver 1.35公開 [変更点] - ファイルの分割と結合の機能を追加 ( "SplitFile"コマンド / "JoinFile"コマンド ) - ディレクトリの再読み込み(Shift-End)を連打したとき、 'NoneType' object is unsubscriptable というエラーログが出ることがあったのを修正。スレッドセーフでない箇所があった。 - ファイル名が重複してリネームに失敗したときに、露骨なエラーメッセージが表示されるのを修正 - アーカイブの中やGmailDriveなど、Shift-Fで検索できない箇所で、途中まで操作できていたのを修正。Shift-Fが効かないようにした。 - テキストビューア、バイナリビューア、画像ビューアのロード処理を別スレッドに。 - FTP先のテキストファイル、バイナリファイル、画像をビューアで見れるように。 - コマンドラインのランチャの入力が成功したときはコマンドラインを閉じる。 - ファイルのコピーと移動の際、タイムスタンプと属性もコピーするようにした。
1.36きてるぜ
Not Found… まぁいいか、今度見よう。
- 2008/03/10 内骨格 ver 1.36公開 [変更点] - タイムスタンプと、ファイル属性の変更に失敗したとき、露骨なエラーが出ていたのを修正 - 画像のデコードに失敗したときのエラーメッセージを修正
188 :
名無しさん@お腹いっぱい。 :2008/03/13(木) 13:58:44 ID:fgXAt+fO0
このソフトってあふみたいにコマンドラインでフォルダを 渡すオプションってないの? -L"***" -R"***" みたいなやつ
config.pyの「F5 キーであふを起動する」あたり? いや、よく分からんのだけど…。
- 2008/03/19 内骨格 ver 1.37公開 [変更点] - 色のカスタマイズ機能を追加 (設定メニュー2) - アーカイブファイル中の仮想ディレクトリの中から、ファイルをコピーしたときに、 ファイル属性が取得できずにエラーになっていたのを修正。( ver 1.35 で混入した問題 ) - GmailFS や FTP へのコピーのとき、タイムスタンプと属性の変更二失敗して、 エラーになっていたのを修正。( ver 1.35 で混入した問題 )
婆ちゃんが居ない…
>>188 オプションはデバッグ用の-d -pしか用意されてないみたいね。
config.pyを弄ってどうにかしようと思うと、
cfiler -- -L hoge -R fuga
みたいに--をつけて一旦オプションの解析を中止させて
config.pyで--以降の部分のオプション解析処理をしてやればなんとかなるっぽい。
例えばconfigure関数の定義に↓を追加してやれば-L,-Rの引数をログペインに表示できる。
あとは左右のペインにそのフォルダを設定してやれば良いんだけど、やりかたがわからん。
log_write = window.log_pane.log.write
i = 1
for x in sys.argv[1:]:
i += 1
if x=="--":
break
option_list, args = getopt.getopt( sys.argv[i:], "L:R:" )
for option in option_list:
if option[0]=="-L":
log_write(option[1])
elif option[0]=="-R":
log_write(option[1])
>>188 内骨格を使いたくても、結局外部のツールからディレクトリを変更出来る機能が実装されてないので、元のファイラに戻ってしまう。
外部から変更するオプション機能を追加することがそれほど面倒そうにも思えないので、きっとわけがあると勘ぐってみた。
現在もディレクトリ変更用のミニバッファにCraftLaunchぽい補完機能が実装されているので、将来的に「CraftLaunch+あふ」のようなファイラを目指してるのかも?
v 1.38
1 .38 - 2008/03/26 - 1.37で色のカスタマイズ機能を追加した影響で、画面の設定が16bitのときに正しく描画されなくなっていたのを修正。
1.39きてるね 最近ぜんぜん弄ってないんだが、importめんどくさい問題は直った?
こないだ、仮想化したDVDの中のVOBファイルをHDDに転送しようとしたら、 一部しか転送されなかったなぁ。
def opendirargs(window): modified = False for arg in sys.argv: print arg[2:] if arg[:2] == "L=": modified = True deflist = window.left_pane.file_list try: window.left_pane.file_list = cfiler_filelist.FileList( window, cfiler_filelist.lister_Default( window, arg[2:] ) ) except: window.left_pane.file_list = deflist if arg[:2] == "R=": modified = True deflist = window.left_pane.file_list try: window.right_pane.file_list = cfiler_filelist.FileList( window, cfiler_filelist.lister_Default( window, arg[2:] ) ) except: window.right_pane.file_list = deflist if modified: window.paint()
上記の関数をconfig.pyの適当なところに追加し、onfigure関数から opendirargs(window)を呼ぶと引数の処理が可能になる。 例: cfiler.exe L=c: R=d: cfiler.exe L="c:/windows" R="d:" パスには\ではなく/を付ける事 何故ならば cfiler.exe L="c:\" R="d:\"等どしてしまうとpythonの仕様で「\"」が「"」として解釈されてしまうため。 もし\を使いたいのであれば二重におく事。 cfiler.exe L="c:\\" R="d:\\" のようにする。
1 .39 - 2008/03/31 - バイナリビューアで E を押したとき、エラーになっていたのを修正。 - テキストビューアで、ファイルを開きかけている間に E を押したとき、エラーになっていたのを修正。 - アーカイブ中のテキストファイルや画像ファイルを内蔵ビューアで開くと、アーカイブファイルがオープンされっぱなしになって、削除などができなくなるのを修正。 - Grep や Search で、中断したときにも Done というログが出るのを修正。 - ログの適当なところで改行を入れる。
1.40 - ファイルコピーやGrepなどの時間がかかる処理の間、メインウインドウの右下にプログレスバーを表示する。 - すでに動作中のタスクが存在して、後続のタスクをキューイングしたとき、ステータスバーに [タスクを予約しました]というメッセージを表示する。 - FTP / WebDAV 上のパスのクリップボードへのコピーで、パスが間違っていたのを修正。ディレクトリ名が1つ削られていた。 - FTP / WebDAV 上のファイル削除時のログで、パスが間違っていたのを修正。ディレクトリ名が1つ削られていた。 - GmailFS の ファイル1つの削除のとき、ログペインに Done だけしか表示されないのを修正。 - GmailFS の ファイル削除のとき、ファイルパスの前に gmailfs: のプレフィックスを付ける。
1.41
203 :
名無しさん@お腹いっぱい。 :2008/04/09(水) 07:19:19 ID:264nm3CX0
期待age
1 .41 - 2008/04/08 [変更点] - イメージビューア中、Shift + ↑↓←→ でスクロールする。 - イメージビューアのウインドウサイズ変更で、フィットモードの場合に画像サイズを追従させる。 - イメージビューアで画像を切り替えたときに、ファイルリストのカーソル位置を追従させる。 - イメージビューアで SPACE キーを押すことで、ファイルリストのアイテムを選択する。 - 1.40でプログレスバーを導入した影響でアーカイブファイルの作成が失敗するようになっていたのを修正。
ごみ箱ktkr どういう実装なんだろ ver 1.42 [変更点] - ファイルの削除について、デフォルトでごみ箱を使用するかどうかの設定を追加 (設定メニュー2) - タイムスタンプの秒表示をOn/Offするためのスイッチを設定メニュー2に追加 - イメージビューアウインドウの最大化機能を追加 ( Fキー または Alt-Return ) - イメージビューアやテキストビューアのウインドウに、閉じるボタンや最大化ボタンを追加
>>206 >どういう実装なんだろ
ctypes モジュールから、shell32.dll の SHFileOperationW() を呼び出して使用。
SHFileOperation については「SHFileOperation エクスプローラ」辺りでググってちょ。
ありがとう! ソースも見ましたが、自分の知識不足が身にしみました・・・ 精進します・・・
sftp できるようにならないかなぁ…
scp できるようにならないかなぁ・・・
ftps できるようにならないかなぁ・・・
mfiler2と比べてどうなのかな。
フィルタやファイル名検索が正規表現使えるようにならないかなぁ 欲をいえばmigemoがいいなぁ
1.43
- 2008/05/05 内骨格 ver 1.43公開 [変更点] - 選択アイテムの統計情報(サブディレクトリを含むファイル数や合計サイズ)を出力する機能を追加 ( Iキー ) - ファイル比較時に、片方または両方がバイナリファイルだった場合に、バイナリモードで比較する。バイナリモードの比較では、単に2つのファイルが同一であるかどうかをメッセージボックスで表示する。 - タイムスタンプの比較で、1秒の差を無視するオプションを追加 (設定メニュー2) ファイルシステムが FAT の場合、タイムスタンプの粒度が2秒のため。 - 一括変名で正規表現を使用しなかったときに、エラーが表示されて操作不能になるのを修正 - Grepで日本語を検索しようとしたときエラーになるのを修正 - ファイルのコピー先の容量が足りずにエラーが発生したとき、小さいサイズのファイルが残っていたのを修正。 - 複数ファイルのコピー/移動の途中でエラーが発生したときに、処理が中断されず続行していたのを修正。
地味に「使ってますよ」申告。 作者タン、乙でござるよ!
あふの&MENUを簡易に実現する方法があれば教えてくだされ
1 .44 - 2008/05/18 - コピー、移動、アーカイブ展開、終了、の前に確認ダイアログを出すかどうかのオプションを追加 (設定メニュー2) 最近全然試せてないわ
1 .45 - 2008/05/20 - バージョン1.44で、コピー先入力、移動先入力がエラーになってしまうのを修正。コピー先入力、移動先入力のときは、わざわざ確認しないようにした。
だいなファイラーと併用中、なかなか良いね XからのGoogleコマンドでキーワードの入力の仕方が解らん
google;検索ワード
>>222 出来ました、サンクスです
スクリプト言語はRubyやLisp系メインに使ってるけど
Pythonやってみるきっかけになりそうです
Lispってスクリプト言語だったのか・・・
- 2008/05/25 内骨格 ver 1.46公開 [変更点] - 画像ビューアを頻繁に開いたり閉じたりしていると、タイミングによって操作不能に陥ることがあるのを修正。 (ほかにも同じ問題がおきるケースがあったかもしれない。) - zip / tgz / tar / bz2 の中に日本語ファイル名が含まれているときに、Uキーで展開できないのを修正。
フォントのアンチエイリアスは効かせられないの?
あふでxをよく使うんだけど 内骨格のxって「ファイル名を指定して実行」じゃないんだね 内骨格で、「ファイル名を指定して実行」をやる方法ってあるんかな あふみたいにファイル名がデフォで表示されて、かつタブでファイル名補完も 出来ると一番いいのだけれど
/\___/ヽ /'''''' \ i´`Y´`Y`ヽ(⌒) / (●), ''''''\ ヽ_人_.人_ノ `~ヽ ./ ノ(、_, )ヽ (●) .| \___ \ |. / ̄〉 .| \_ 〉 \ /ー-〈 (⌒) ./ . `ニニ´ ノ Y`Y´`Yヽ あふと間違えた (´ ̄ .i__人_人_ノ ` ̄ヽ / ` ̄ ̄
バージョンまだぁー?
これちょっと弄ったけど、カスタマイズしてーんなら、ソース展開して 自分のPythonインタプリタから pythonw -m cfiler_main で実行したほうが便利 でも、config.pyからのカスタマイズには限界あると感じた Emacs風に言うとフックが十分に用意されてないという感じ 特にイベントハンドラまわりはCの実装にコンストラクタで渡したらそれっきりで、 外から/後から弄りようが無いんだよな
フックが足りないっていうのは同感。 例えばテキストビューアをQでも終了するように改造するためには、 command_Viewのコードを持ってきてonKeyDown関数を書き換えた command_View2みたいな関数を定義するか、 ↓みたいなことをやってTextViewerのonKeyDownメソッドを書き換えないといけないし。 from cfiler_textviewer import * tvKeyDown = getattr(TextViewer, 'onKeyDown') def tvKeyDown2(self, vk, mod): if tvKeyDown(self, vk,mod): return if vk==ord('Q') and mod==0: self.destroy() setattr(TextViewer, 'onKeyDown', tvKeyDown2)
235 :
名無しさん@お腹いっぱい。 :2008/07/14(月) 12:39:11 ID:94v6sBk40
またpythonか…
それなりに期待して起動してみたんだが・・・無茶苦茶重いのな。 ソース見たら殆んどPython・・・そりゃ更新も早かろうよ。 上の方でなぜかC++製ってことになってるけど騙されないよう注意な。
【2画面ファイラ】 内骨格 Part1 【Python拡張】
>>237 内骨格より軽くて高機能かつ拡張性が高い2画面ファイラをあげてくれ。
ま、あふで十分だな
軽さで比較すると、ウチではあふも内骨格も変わらんが。 まあ基本あふ使いだけどさ。
1 .47 - 2008/07/22 - Ctrl + ↑↓キーの際、ファイルが選択されていないときは、ブックマークにカーソル移動するようにした。 - テキストビューアのカスタマイズ機能を追加 (実験的) config.py の configure_TextViewer() を呼び出す。 - ホットキー設定ウインドウで、キーコード入力部品にフォーカスを持っていった際に、エラーが発生するのを修正 - Grep機能でアクセス権のエラーが発生したときに、Grepが続行しなくなっていたのを修正。ファイルをスキップして続行するようにした。 - デフォルトの設定ファイルで フィルタクラスに与えるパターン文字列をユニコード形式にした。(ユニコード形式ではないまま日本語を使用したときにエラーが発生するため) - 存在しないパスにジャンプしようとしたときに、適切なエラーメッセージを表示するようにした。 - ジャンプリスト中のファイルパスがUNICODE形式でなかった場合はエラー処理するようにした。
わしょーい
ソースパッケージにはpythonの標準配布物とpy2exe以外は全部含めておいて、 python setup.py py2exeできちんとcfiler.exeが出来る構成にしておいて欲しいなぁ。
1 .48 - 2008/07/22 - config.py のなかに、configure_TextViewer() が定義されていないと、テキストビューアを開いたときに、エラーメッセージが表示されるのを修正。 - Bookmarkの順序が、起動のたびに逆転しているのを修正 - diffviewerでCtrl-Upしたとき、マイナスの行番号として、ファイルの末尾が見えてしまうのを修正
1 .49 - 2008/07/27 - 補完候補ウインドウが、画面の下にはみ出る場合は、画面の上方向に配置するようにした。
削除が出来ない なにこれ
だがそれがいい
1 .50 - 2008/07/29 - Filter、Select、Search、の履歴を残すようにした。 - 露骨なエラーメッセージが出ていた箇所を調整。
1 .51 - 2008/08/05
- 補完候補ウインドウの右と下のフレーム部分が、再描画されずにゴミが残ることがあったのを修正
- 再描画をすこし高速化
- WindowsXPでクラシックテーマを使用したときに、ウインドウの一部が再描画されないまま残ってしまう、WindowsXPの問題 (
http://support.microsoft.com/kb/436093/ja ) を回避するオプションを設定メニュー2に追加
1 .52 - 2008/08/07 - GREPの検索パターンを履歴に残すようにした。 - ファイルのコピー時に、上書き対象のファイルがオープンできなかった場合の動作がおかしかったのを修正。 (上書き対象が削除されようとして、削除も失敗していた。) - 今後の品質向上のため、Pythonのインタプリタが1秒間以上ロックしたままになったことを検出するデバッグ機能を追加。 内骨格が長時間操作を受け付けなくなる現象を排除していくための技術的な情報を収集するため。 ( ini ファイルの [DEBUG] セクションの detect_block を 1 に設定すると有効になる。)
w2k ショートカットで実行時の大きさに最大化を選んで起動して内骨格を終了すると Errors occurred See the logfile 'X:\tools\cfiler\cfiler.exe.log'for details とダイアログがでる。 logファイルは Traceback (most recent call last): File "cfiler_mainwindow.pyo", line 553, in _onSize AttributeError: 'MainWindow' object has no attribute 'left_window_width'
1 .53 - 2008/08/09 - テキストビューアに検索機能を追加。Fキーを使って検索ダイアログを表示し、スペースキーで次の検索を実行する。 - テキストビューアにステータスバーを追加。ステータスバーに、行数、スクロール位置、文字エンコーディングを表示するようにした。 - 画像ビューアにステータスバーを追加。ステータスバーに、画像サイズ、画像フォーマット、画像モードなどを表示するようにした。 - 画像ビューアのカスタマイズ機能を追加 (実験的) config.py の configure_ImageViewer() を呼び出す。
1 .54 - 2008/08/10 - インクリメンタルサーチにMigemoを使用できるようにした。(設定メニュー2) - 画像ビューアのステータスバーにズームポリシーと倍率を表示するようにした。 - 画像ビューアのデコード処理が多数キューイングされたときに、すこし挙動がおかしいのを修正。ひとつずつデコードするようにした。 - 画像ビューアでズームインしたとき、画像がステータスバーの上に重なってしまうのを修正。(1.53で混入した問題) - 画像ビューアのリサイズ時に、ステータスバーの文字が上方に残ってしまうのを修正。(1.53で混入した問題) - 画像ビューアのズームポリシーがオリジナルモードのとき、ウインドウのリサイズ時にステータスバーが追従しないのを修正。(1.53で混入した問題)
キーバインドをあふ互換に出来るようにして欲しいな
早くメジャーなソフトになって欲しい
1 .55 - 2008/08/18 - ファイルリストのタイムスタンプとファイルサイズの表示On/Off機能を追加 (設定メニュー) - ヒストリとブックマークを、DEL キーで削除できるようにした。 - 補完候補ウインドウで DEL キーを押したときに候補を削除するようにした。 - ログペインのサイズ変更時、ログの可視領域の下端を基準にスクロール位置の調整をするようにした。これまでは上端を基準にしていた。 - 垂直セパレータの太さと色を調整。 - クリップボードにコピーしたテキストの改行コードが LF になっていたので、CR+LF になるように修正。 - コマンドラインのファイル名補完の動きがおかしいのを修正 - メディアの入っていないドライブを選択したときのエラーメッセージが変だったのを修正。 - Migemo の辞書ファイルのパスが相対パスだったので、絶対パスに変更。 - 仮想ディレクトリなどに対して、ディレクトリ比較を適用しようとしたときに、露骨なエラーが発生していたのを修正。無理な場合は、その旨を表示するようにした。 - コンテキストメニューを出すときの Python インタプリタのブロックを解消 - テキストビューアと画像ビューアのタイトルバーのアプリケーション名部分が、[ 内骨格 ] のままカスタマイズが効いていなかったのを修正。
毎回ウゼェ
まじレスすんな、ボケ
これから内骨格を使っていこうと思っているのですが、キーコンフィグのやり方がわかりません 複雑なことをするつもりはありませんので、誰か親切な方、config.pyにどう書けばキーの機能を入れ替えられるか教えて頂けませんか?
pythonの基本的な文法は自分で勉強してくれ。
それを前提の上で説明する。
_config.pyの57行目のようにconfigure関数の中で
window.keymap[ KeyEvent(ord('X'), MODKEY_SHIFT) ] = command_ProgramMenu
みたいにすると、シフトキーを押しながらXキーを押した場合にcommand_ProgramMenuという関数を呼ぶ動作が設定される。
標準で用意されている主な関数は
>>232 の1個めのサイトにまとまってる。
それ以外の関数については内骨格のソースを見ないと駄目。
cfiler_main.pyの1360行目あたりから標準のキー割り当てが並んでる。
素早いお返事ありがとうございます 見よう見まねでconfig.pyに書き込んでみたところ関数が見つからないと表示されたので、先ほどの質問をさせて頂きました くだらない質問に答えて頂いてありがとうございます
上記の例ではcommand_ProgramMenuはconfigure関数の中で定義されてるから
= command_ProgramMenuとそのまま代入してるけど、
>>232 に載ってる関数は = window.command_JumpList みたいに window. を付けてやらないと参照できない。
関数が見つからないって理由はこれかもね。
他PCのフォルダを開く方法を教えてください Shift+Jで\\IPアドレスだと無理でした
\\IPアドレス \\pc名 は移動失敗する。 \\IPアドレス\フォルダ名 \\pc名\フォルダ名 みたいにしないと駄目。
おお、出来ました ありがとう でも、この辺りは自動表示してくれるあふの方がいいですね
>>265 返事が遅くなりました
その通りの理由で、無事キー割り当てができるようになりました
ありがとうございます
大したことをするつもりがなくても、このファイラを扱うためには少しpythonを勉強する必要があるみたいですね
少しずつ進化してくのが楽しいね
誰か内骨格の起動パスの変数知りません? あふで言うところの$V"afx"とか%afx%とかなんですが
cfiler.exeのフルパスはsys.argv[0] cfiler.exeのあるフォルダが欲しければos.path.split(sys.argv[0])[0] ↓みたいな関数を用意しておくと便利かも。 cfiler_path("hoge")で (cfiler.exeのあるパス)\hoge が得られる。 def cfiler_path(rpath): os.path.join( os.path.split(sys.argv[0])[0], rpath )
273 :
272 :2008/08/26(火) 11:41:09 ID:8BQO+7//0
returnが抜けてた。 def cfiler_path(rpath): return os.path.join( os.path.split(sys.argv[0])[0], rpath )
まとめwikiってないの?
気に入ったけど,, アーカイブ展開したての初回起動なのにメモリ17MB消費とかww 作者さん、もう少し消費メモリ抑えてください
全体的な動作が速ければ、いくらメモリ食ってもいいわ。と言っても1GBくらいまでなら。
内部でPythonエンジン使ってるからしゃーない
http://sites.google.com/site/craftware/cfiler 1 .56 - 2008/09/12
- 設定メニュー2に、[ config.py をリロード ] を追加。
- 設定メニューのサブメニューを閉じたとき、上位階層のメニューに戻るようにした。
- Grepダイアログと、テキストビューアの検索ダイアログの状態を、ダイアログをキャンセルで閉じたときも保存するようにした。
- ほとんど使われない .ogg ファイルのサポートをやめて、Audiere を使用しないようにした。
- ファイルリストの取得をするNative関数が、PythonインタプリタをのGILを長時間ロックすることがあったのを修正。
- ファイルリストの取得時にメモリリークしていたのを修正。
- Alt+↑↓でログペインのサイズを変えようとして、それ以上大きく/小さく出来なかったときでも、必ずスクロールしてしまうのを修正。(1.55で混入した問題)
ええええーー ogg演奏できるのが便利だなーって思ってたのに
単に外すだけじゃなくてextensionにしてconfig.pyにちょっと追加すれば使えるような状態にしてあればよいのに。
だいぶ使いやすくなってきたよねー intypeと内骨格の組み合わせがかなり気に入ってる(intypeにソースツリーがないから) sconsとgitの操作を内骨格からできるようにちまちま拡張していけば結構シンプルな開発環境になりそうだ
作者さん 要望を聞いてください ・画像表示はSuise-Pluginを利用してください ・メディアの再生機能は省いてください ・CraftLaunch/EXを一緒に(統合)しないでください ・Jamp/Findなどの機能はCraftLaunch/EXでやっているんで削ってください ・付加的な機能(GmailFS等)はプラグイン形式にしてください ・'あふこまんど'みたいなのを作ってください ・軽くしてください 以上おねがいです 上記の点でなかなかあふから乗り換えられません。
と、書いたあとに更新発見!! 1 .57 - 2008/09/15 - Grep / Search 機能を使って列挙した、ディレクトリ名付のファイルリストを使ってコピーや移動を行う際、平たくコピー/移動する機能を追加。コピー直前に確認ダイアログを表示するようにした。 - Grep / Search 結果 から ディレクトリアイテムを移動する際に、移動元のディレクトリの削除に失敗するのを修正。 - 起動直後に開かれるディレクトリの読み込みをサブスレッドで行うように変更し、起動時のウインドウが出るまでの時間をを若干短縮した。 - フォントのリストアップ処理でメモリリークしていたのを修正。 - ファイルのコピー、移動、削除で、処理が終わったアイテムは、選択を解除する。 - バックグラウンドでファイルの削除をしている間に、フィルタを変更すると、削除処理に使われるフィルタも変化してしまっていたのを修正。 - バックグラウンドでディレクトリ比較をしている間に、違うディレクトリに移動すると、エラーになってしまうのを修正。 - バックグラウンドでアーカイブを作成中に、違うディレクトリに移動すると、正しくアーカイブが作成されていなかったのを修正。 - バックグラウンドでアーカイブを展開中に、違うディレクトリに移動すると、正しくアーカイブが展開されていなかったのを修正。
ところで、作者ってここを見てるんだろうか。
>>285 どうせでかいインタプリタが乗ってるので削っても限界あります。
動作が軽快にして欲しいというのはありますが、機能は削らなくても結構です。
柔らかい要望ってことで、透過ウィンドウおよび背景画像の半透明表示が欲しいなー ところでpopen4経由でscons呼べるようにしてみたんだけど(shellexecuteは子画面開けちゃうから)、 soconsから呼んでるbuilderが吐いたエラーがログペインに乗ってこないなー 内骨格はたぶん悪くないけどなんでだろ cmd.exe上でscons呼び出すとちゃんとメッセージ出てるんだけどな
>>289 shellExecuteじゃなくて、window.subProcessCall()を使えば、
ログウインドウにリダイレクトできるよ。
config.pyのcommand_Substで使われてるから、
見てみるといいかも。
>>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
あふとは違うのだよ、あふとは
あふとは違うのだよ、あふとは
http://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()
ディレクトリの内容を降順でソートしたいときってどうやるの?
>>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() )
>>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() ),
]
インデントは適宜推察して。 というか基本的にcfiler_filelist.pyの1290行目あたりからのsorter_By*をコピーして クラス名の後ろにRevをつけて、__call__関数の最後のreturnの符号を変えただけ。
どうもありがとう 手に馴染み始めてきたなー
http://sites.google.com/site/craftware/cfiler 1.59 - 2008/09/21
- Migemoでのインクリメンタルサーチ時に、ステータスバーには正規表現ではなく、一致したファイル名の一部を表示するようにした。
- Migemoでのインクリメンタルサーチ時に、英単語のカタカナ表記が正しく検索できていなかったのを修正。
( 例 : SaisinSoftware -> 最新ソフトウェア、など )
- ネットワークアップデートのためのバージョン情報の取得時に、プロキシのキャッシュを使って誤判定することがあったのを修正。プロキシのキャッシュを使わないようにした。
- ファイルのコピー、移動、削除で、処理を中断したときに、処理中のアイテムの選択を解除していたのを修正。処理が中断されたアイテムは選択を解除しないようにした。
- [平たくコピーしますか?]のダイアログをキャンセルしたとき、コピー処理自体をキャンセルするべきだったので、そのように修正した。
- ログを大量に出力している間に、ログペインのサイズを変更すると、エラーが発生することがあるのを修正。
- コマンドラインのコマンドとして、メモリの統計情報を出力する "MemoryStat" を追加。(デバッグ目的)
- Subversionフィルタの改良。svnで管理されていないディレクトリは、その親ディレクトリがsvnで管理されているときは非表示にし、そうでない場合は表示する。
イメージビューアがメインウィンドウの上にかぶるのがうざいので少し調べてみたら cfiler_imageviewer.ImageViewerの生成オプションで親ウィンドウを0にしてやれば 独立したウィンドウになることがわかった。 あとは表示中の画像サイズにウィンドウをフィットさせる処理を書きたいんだけど、うまくいかない。 生のウィンドウサイズはgetWindowRectで得られるけど、 setPosSizeで指定するサイズは生のサイズじゃない。 getCharSizeで得られる文字サイズが絡んでるのはわかるんだけど、 生サイズ/文字サイズってわけではなくてよくわからん。
うまくいかないってのはフィットさせるたびにサイズが小さくなっていくことだったんだけど、 よくわからんけど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)
cfiler_imageviewer.ImageViewerの生成オプションを弄らなくても configure_ImageViewerでwindow.main_window = 0ってしてやれば独立ウィンドウになるみたい。 TextViewerのほうも同様。
↑勘違いだったorz
MainWindow.image_file_ext_listに".psd"もあるから一応psdに対応したつもりなんだろうけど、 exeの中にはPsdImagePlugin.pyoが入ってないからデコードに失敗する。 PILのPsdImagePlugin.pyをextensionフォルダに入れてやれば再起動後に表示できるようになる。
http://sites.google.com/site/craftware/cfiler 1.60 - 2008/09/24
- Grep / Search / Compare などで作られたファイルリストのディレクトリ名部分には、それぞれ [grep] [search] [compare] というプレフィックスを付けるようにした。
- Subversion フィルタの修正。grep 結果など、アイテムの名前にディレクトリ名が含まれる場合に、Subversionフィルタで除外されてしまっていた。
- アップデート後の再起動で、前回の起動時の状態で起動してしまうのを修正。前回の終了時の状態で起動するようにした。
- ウインドウを最大化した状態で終了させた後、次回起動時のウインドウサイズを通常のサイズになるようにした。
- ウインドウを最小化した状態で終了させたとき、次回起動時にウインドウが見えなくなっていたのを修正。
- ウインドウを最大化したときに、ウインドウの右端と下端の隙間が、左端と上端に比べて太ってしまうのを修正。上下と左右を均等に太らせるようにした。
- APIリファレンスのために、ソースコードにdoxygen用のコメントを埋め込んだ。
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 ); :
ああそれと、ctermcore.cppでvfw.hを#includeするまえにwindows.hを インクルードしてほしい #include <algorithm>も必要 これらを直さないと、標準環境であるVC++7.1でビルドできない
1.61 - 2008/09/26
- フォントの初期化処理で、メモリが破壊されて、場合によっては落ちてしまうのを修正。
- API リファレンスのためのコメントを拡充した。
>>310 の修正みたいですね。
313 :
309 :2008/09/27(土) 23:32:46 ID:bj+5ZIrZ0
SusieプラグインはSPI処理するpyd作って imageviewerのソース勝手に弄って使ってる。 Pythonから直でDLLやC互換の構造体使えるのは知らなかったんで >313 のソースは勉強になりました。
315 :
313 :2008/09/28(日) 19:30:29 ID:2AcXB2o90
ちなみに、パレットとかの扱いがわからなかったので、
インデックスカラーとかグレースケール画像には対応してません。
16, 24, 32bitカラーのものに対応してます。
>>314 作ってるんだったら公開してくれ。w
316 :
314 :2008/09/29(月) 06:40:16 ID:ErwyCzJq0
317 :
314 :2008/09/29(月) 06:53:43 ID:ErwyCzJq0
319 :
315 :2008/09/30(火) 02:08:06 ID:86k80yJd0
内骨格で開いてるフォルダの中身をエクスプローラで弄っても更新されないし、 両方に同じフォルダ開いて新規フォルダを作っても逆側には作ったフォルダが表示されない。 内骨格って定期的に読み込み直すとかしないの?
DirectShow版のミュージックプレイヤー書いてみた
http://codepad.org/texvdWLA DirectShowなんで、DirectShow用のコーデック入れれば
何でも再生できると思う
config.pyのconfigure()の中で
window.musicplayer = MyMusicPlayer(window)
とかやるとこっちが使われる
再生したい拡張子は、同じくconfigure()の中で
MainWindow.music_file_ext_list = (
'.wav', '.mid', '.mp3', '.ogg', '.m4a')
とか(お好みで)設定するとよさげ
超怪しいんで、使う場合は自己責任でおながい
WMPでは再生できるのにDirectShowでは再生できないmp3ファイルがあるなぁ。 GraphEditで開いてみたら適切なフィルタが見つからないって事みたいだけど、なんでだろう? mp3ファイルが全部駄目ってんならわからないでもないけど、再生できる物もあるんだよね。
>>322 それはちょっとわからんね
俺の環境でDirectShow Filter Toolで見てみると
MPEG-1 Audio Decoderではffdshow Audio Decoderが一番優先度高くなってるけど
デコーダは同じくffdshowのが優先度が高くなってる。 問題はスプリッタの方みたい。といってもMPEG-1 Splitterには標準のMPEG-I Stream Splitterしかないわけだが。 GraphEditで再生できるmp3とできないのを両方ともFile Source(Async)でフィルタ追加して、 MPEG-I Stream Splitterと接続してみると、再生できる奴はきちんと繋がるんだけど、 駄目な方はこの時点で繋がらない。 mp3ファイルの構造に何か特徴があるのかもしれんけど、良く解らん。 まぁ、外部プレイヤーで再生すれば良いだけだから特に困るわけではないけど。
どうもID3タグが原因っぽい。 ID3 v2.4形式だとほぼ全滅。v2.2はOKっぽいけど駄目な物もある。 本来スプリッターが解釈できない形式だけど、 うまい具合にスルーされるようなデータの並びだった場合は再生されるってことなのかも。
DirectShow ID3v2でぐぐると
>>326 の他にも色々出てきますね。
適当なスプリッタを入れてDirectShow Filter Toolで優先度を弄ればよいって事なんでしょうけど、
外部プレイヤーで再生するほうが面倒が無くて良いですね。
軽 く し て く れ
どの辺が重いと感じてる?
メモリ消費量の話だよ ノートに2GBしか積んでないから約20MBも消費してもらったら困るのだよ(・ω・`)o エクスプローラが30MB消費してて嫌っているのに内骨格まで,,,
>>330 2GB積んでて20MB程度の消費を気にするって、どんな使い方してんの?
ウチは2.5GB積んでるけど、Web、FTP、SMTP、RDBMS2種、各種チャット鯖等動かしていて、
さらにチャットツール10プロセスくらい、セキュリティ系数種、ランチャー等ユーティリティをいくつか常駐してても
メモリ消費が1GB超える事は滅多に無いんだが。
フォトショップとかメモリ喰いまくるツールを常用してるって事か?
cfiler_main.pyを弄らないとどうにもならないような変更をしたい場合は
ソースを弄ってpy2exeでビルドしないといけないけどビルド環境を整えるのが面倒。
py2exeはメインスクリプトだけをexeに入れてあとはzipファイルに入れることができて、
cfiler.exeはzipファイルとしても読み込めるようなので、
extension/cfiler_main.py(のmain関数)を呼び出すような構成のexeファイルを作ってみた。
http://www-2ch.net:8080/up/download/1223624618976031.QBXxNZ cfilerx.exeとextensionフォルダを内骨格のフォルダにコピーしてcfiler.exeの代わりに
cfilerx.exeを実行すればOK。
cfiler.exe内蔵のモジュールよりもextensionフォルダのが優先してインポートされるので
cfiler_*.pyの改造には便利だと思います。
333 :
330 :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使われたらたまらん
ヤツあたりだなそりゃ 全然内骨格のせいじゃないじゃん だいたい90MBも70MBも大して変んねえだろ PCの使い方が間違ってる
90MBでAdobe CreativeSuiteとかVisualStudioとかアホかw
336 :
335 :2008/10/12(日) 08:45:11 ID:vZGKmrF00
よく読んでなかったすまん
>>333 他のファイラに比べて、あからさまにメモリ喰うとかだったらまだしも、
この場合、どう考えても、金出して買った商品のほうに依頼だすべきだろ。
しかも、挙げたツールを全部一度に起動して常用するなんて事がありえない。
作者さんも、こんなレス見たら不愉快になるわ。
>>333 ニーズにあってないなら、他のファイラー使いなよ。
もっと使用量少ないファイラーなんていくらでもあるんだからさ。
>>333 それらを「同時に」使わなければならない理由が俺には全く分からないのだが
何でバージョン違いのVSやOfficeを同時に起動しておく必要があるんだよ
VS入れてるってことは開発すんのか?
開発者とは思えないほどアホだな
まあまあ皆さん落ち着いて 内骨格がいろんな考え方の人に使われるようになって来ているということですよ ユーザーが増えることが最も重要
http://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 ファイルの読み書きが、プロセス間で同時に起こってしまう可能性があったのを修正。
- 各種リストウインドウの最大サイズが、メインウインドウより少し小さくなるように調整。
- インクリメンタルサーチの背景のグラデーション模様の上端が目立つように少し調整
勝った!(何が? あふスレに自慢しにいこー
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でしか表現できない文字を含むパスが、履歴やブックマークに残らない問題あったのを修正。
乙
俺しか使ってねーと思うけどDirectShowメディアプレイヤーを1.65仕様に追従した
http://codepad.org/7R9idMQS 使う場合はconfigure()ん中で
cfiler_musicplayer.MusicPlayer = DSMusicPlayer
とかやって、クラス自体を置き換えるしかなさげ
1.67 - 2008/10/14 - UNC形式のパスで、必要に応じてネットワーク接続のユーザー名とパスワードの入力ダイアログを表示するようにした。 - 比較選択ツールのウインドウは、先頭文字の入力で即時決定するようにした。 - ディレクトリ比較ツールのウインドウは、先頭文字の入力で即時決定するようにした。 - ディレクトリ比較で、アクセスできないファイルなどがあったときに、露骨なエラーが表示されてしまうのを修正。
>>345 クラスの置き換えだったらSongMCIをSongDirectShowで置き換えても良いんじゃない?
>>347 ああ、確かにそうだなあ
そっちのが手っ取りはやいね
>>1 からこのスレ見てきたら成長具合がすさまじくて正直惚れた・・・///
ちょっとあふから浮気しちゃいそうな・・・・あぁっ!!ダメっ!!わたしったら・・・
あふに比べると画面のチラツキが少ないところがいいね
ジャンプリストで頭文字がUのフォルダを登録すると呼び出した時にリストが空白になってしまう。 例) D:\User E:\U E:\hogehoge\U これってどうすれば登録出来るかなぁ?
\を、\\か/にしないといけない
もしくはrを頭に付ける。 r"D:\User" 全角文字がある場合はur。 ur"E:\ドキュメント"
http://sites.google.com/site/craftware/cfiler 1.68 - 2008/10/15
- デフォルト設定ファイルのコマンドラインの設定に "SelectEmpty" コマンドを追加。このコマンドを実行すると、アクティブなペインのディレクトリのうち、空のものを選択する。
- UNC形式のパスをつかったコピーや移動処理のあとの再読み込みで、操作不能になっていたのを修正
- ディレクトリ区切り文字をスラッシュに設定していると、UNC形式のファイルに対して Ctrl-Enter を使うことが出来なかったのを修正。
355 :
351 :2008/10/15(水) 16:48:31 ID:Hp9xrBxM0
なんか過疎ってる? とりあえずイメージビューワでデフォルトの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 :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
内骨格のリスト上のディレクトリでエディタ(や他のアプリ)をshift-xで実行して内骨格に戻ったとき、 リストを自動でリフレッシュしてくれるって機能は難しいのかな 新しくできたファイルがリストに載らないからいっぺん上のディレクトリに上がって、戻るって手順を踏んでるんだけど、 いまいちだなと思ってる
>>359 完全に自動でやりたければディレクトリ監視が必要だが、手動でいいんなら
config.pyの中で
window.keymap[VK_F5] = window.command_Refresh
とかやればいいよ
これだと(explorer風に)F5でリフレッシュするようになるが、
割り当てるキーはお好みで
どうもありがとう とりあえず手動でしのごう 内骨格のwindowにフォーカスが戻ったときのイベントでリフレッシュしてくれればいいんだと思うんだけど、config.pyじゃできないよねこれ そういえばhotokey設定して内骨格呼び出したとき、全画面表示してたのがウィンドウ表示になってしまうってのも困って(ってほどじゃないけど)る 800*600くらいで全画面表示だととすごく使いやすいんだよなー内骨格
>>361 多分cfiler_mainwindow.pyのMainWindow._onActivate()を書き換えるしかねえかな
config.pyのconfigure()が呼ばれる時点で
_onActivate()はcterm側にコールバックとして渡されてしまっているので
configure()の中で_onActivate()を再定義しても手遅れなんだよな
まあ配布物の中身を書き換えるってのもなるべくしたくないだろうし、
もっといい手があるかもしれんがな
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引数を実行
365 :
364 :2008/11/03(月) 00:21:01 ID:mVyLBJ2y0
書いたけどこれはやっぱりダメだな、使わないでくれ 裏スレッドから無理やりリフレッシュさせてるんで、 場合によってはあっさりクラッシュしたりするようだ 表にメッセージをPOSTして再描画させられればいいんだが、ウィンドウプロシジャを 自由に弄れないから仕方が無いな
>>363 うーんそれはちょっと好みと外れる...
たしかAPIにディレクトリの変更通知があったよな、と思ったら
>>364 すご
と思ったけどこれ内骨格本体モロとも落ちてしまうw
最初一回ちゃんと動いた
おおと思ってもう一回やってみたら内骨格固まった
再起動したら新ファイルできる度に落ちるような
368 :
364 :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
>>368 window.command_Refresh()だとカーソルのあるほうしか更新されないから
両方とも同じフォルダを表示しておいて外部プログラムでそのフォルダにファイルを作っても
片側しか更新されない。
370 :
369 :2008/11/03(月) 15:15:18 ID:CBP0T9O30
371 :
364 :2008/11/03(月) 15:16:44 ID:mVyLBJ2y0
372 :
364 :2008/11/04(火) 19:39:16 ID:y4scTvX50
使ってみていたが、ファイルリネーム後にキーを受け付けなくなったりするな。
やはりsubThreadCall()がネックのようだ。
キーイベントはsubThreadCall()内でハンドラを摩り替えているが、
タイマは動いたままなので、UIスレッドからでもタイマ経由で
subThreadCall()実行中にsubThreadCall()に再入する可能性があり、
その場合は余裕で問題が発生する。
とりあえずsubThreadCall()前後でonTimerJob()とonTimerSyncCall()が走らないように
摩り替えるようにしてみた。
http://codepad.org/t2j940nG 今回のはextensionに入れることを念頭に書いた。
foo.pyとかいう名前で保存してextensionに入れた場合は、
configure()の中で、
import hoge
foo.start_directory_watch(window)
とかやればおk。
import hogeじゃ駄目だろw import fooだな。
374 :
364 :2008/11/04(火) 19:44:01 ID:y4scTvX50
375 :
364 :2008/11/05(水) 00:00:56 ID:y4scTvX50
ウザくてすまん
あげなおし
http://codepad.org/Df2LOmLF WaitForMultipleObjectsの最後の引数を1から500に変えた
1ミリ秒タイムアウトは無いわ……デフォの分解能だと10ミリは寝るだろうから
CPU負荷全然かかってなくて気づかんかった
手抜きPythonコンソール作ってみた
http://codepad.org/rsdkWANY 補完とか自動インデントとかカッコイイ機能はない
新たにPythonインタプリタを立ち上げるわけではないので
起動だけは爆速、ただし簡単に内骨格を道連れにできるので危険
>>358 のzipの中にあるvensterと、
http://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インスタンスが可視になる
なんかよさそうな拡張だねえ これipython組み込める?
>>378 すまんが、かなり弄らんと無理だと思う
ipythonは端末とコネクトされている&readline前提のはずだし
380 :
377 :2008/11/10(月) 16:12:32 ID:ryZKA2JN0
ちょっと直した
http://codepad.org/1FMoSxfh ・コピペで複数行一度に入力した場合にまともに動いてなかったんで直した
・↑↓でヒストリを行き来できるようにした
なんつうかEmacs風キーバインドに慣れてる人はごめんなさいなんだが
ScintillaのキーバインドはデフォでWin風なので
カーソルキー、Home、Endなどを使うかコードを書き換えてください
381 :
364 :2008/11/11(火) 20:40:38 ID:Mg6hT/QX0
作者さん別のもの作りだしちゃった? 倉EXと同様に内骨格も放置されちゃうのかな?
384 :
383 :2008/11/13(木) 22:45:47 ID:qnH+rrmF0
http://sites.google.com/site/craftware/cfiler 1.72 - 2008/11/15
- ファイルリストを自動的にリロードする処理を追加
- デフォルト設定ファイルに、左右のペインから重複ファイルを探すコマンド CheckDuplicate を追加。
- デフォルト設定ファイルに含まれている SelectEmpty コマンドを CheckEmpty コマンドに変更。
(バックグラウンドで処理している関係で、アイテムを選択することができない場合があるので、ログに出力するだけにした。)
- 左右のペインに含まれる全てのアイテムを返す関数を追加。
MainWindow.leftItems()
MainWindow.rightItems()
MainWindow.activeItems()
MainWindow.inactiveItems()
- 一括変名機能で正規表現のパターンの記述が間違っていたときに、エラーが発生して操作不能になってしまうのを修正。
- ウインドウのクラス名を、CtermWindowClass から CfilerWindowClassに変更。
- iniファイル中のバージョン番号が更新されていなかったのを修正。
- ディレクトリの変更のためにサブスレッド中でアイテムリストを作成している間に、ほかのスレッドがアイテムリストにアクセスしてエラーになる場合が稀にあったのを修正。
おお、作者さんがディレクトリ監視機能作ってくれたのか これで俺の怪しいコードは安心して削除できるな
cfiler_nativeに監視用の機能が追加されてるみたいです。
>>386 短い間だったけどつかってたよー
サンキュー
作者さんもサンキュー
新バージョン1.72での現象(
>>364 の拡張は外してある)
内骨格で表示してるディレクトリを他のプログラムからまるっと削除したら
[Error 32] プロセスはファイルにアクセスできません。別のプロセスが使用中です。
[Error 5] アクセスが拒否されました。
とコンソールペインに表示されて、その後キー、マウス入力を受け付けなくなった。
完全にフリーズしているわけではなくて、最小化はできるし再描画もされる。
どーも
>>372 と同じ現象っぽい。
1.73 - 2008/11/16 - ログペインのテキストを、マウスで選択してクリップボードにコピーできるようにした。 (選択するだけで、自動的にクリップボードにコピーされます。) - ログペインをマウスのホイールでスクロールできるようにした。 - Ctrl + Alt + ↑↓←→ で、すばやくセパレータを移動するようにした。 - 1.72で入れた自動リロードが原因で、操作不能になってしまうことがあったのを修正。 - 大きなサイズのバイナリファイル比較のときに、メモリ不足で失敗しないようにした。 - tgzファイルを作成するとき、日本語文字が含まれているパスに作成できなかったのを修正。
相変わらず作者さん対応速いなあ
まだ怪しい感じだな。 最小化して放置してたら、いつの間にか固まって復帰しなくなってた。 以下は作者さん宛だが。 やはりsubThreadCall()の問題だと思いますよ。 1. 現在のマウス、キーフックをセーブし、書き換える(ESCしか効かなくなる) 2. ワーカースレッドを起動し、メッセージループを回す 3. ワーカースレッドが終了すると、window.quit()を呼び、メッセージループを止める 4. 1.でバックアップを取ったマウス、キーフックに戻す といった流れですが、タイマーを止めていないので、2.のメッセージループを 回して待っている間にファイル変更が発生すると、2.の間にsubThreadCall()が 再び呼ばれてしまう。 この二番目のsubThreadCall()の流れでは、 Step1.で、無効になっているキーフックやマウスフラグを「保存」してしまう。 一番目のsubThreadCall()の後に二番目のが終了すると、4.では、 無効になっているものに「戻す」ことになってしまうわけだ。
修正来た。 1 .74 - 2008/11/18 - MainWindow.subThreadCall() のサブスレッドの中で、MainWindow.quit() を使っていたのを修正。 subThreadCall() をネストして呼び出すケースで、外側のループを抜けるつもりの quit() が、内側のループを抜けるつもりの quit() よりも先に呼ばれてしまって、(さらにSyncCallなどの合わせ技により)、メインスレッドがデッドロックしてしまう危険があった。
394のテキストビューアとか 本家に取り込んでもらうには どうしたらいいんだろう?
>>396 いや取り込んで貰っても全然構わないというか、有難い話なんだが
・2004年以降止まったプロジェクトであるvensterに対する俺俺パッチに依存
・Scintillaに対する俺俺パッチに依存
・extensionであることをいいことに、カスタマイズ機能なし(スクリプトの中
直接弄ってねの世界)
という怪しい代物なので、どうなのか
正式配布物に含めるんなら、色々作者さん手直しいると思うわ
作者さんには是非取り込んで貰いたいなー 拡張が細かく大量に増えてしまったり現時点で派生版が出来てしまったりするとちょっとね・・・
>>399 これ使うとあふみたく倉から使えるようになるの?
拡張ってアップデート毎にconfig.pyを修正していくのでしょうか? 簡単なものでいいからconfig.py configure末尾辺りに ユーザ設定呼び出しのSTUBが欲しいです。 try: import user_config except ImportError: pass else: user_config.congigure(window)
>>403 ちょっち意味わからん。
俺は内骨格がバージョンアップしても、
config.pyをいちいち入れ替えずに同じものを使い続けてるよ。
>>404 readme.txtに記述見つけました。
バージョンアップでconfig.pyが更新(上書き)される事があるのだったら、
ユーザ設定とわけた方がいいのではないかなと思ったのだけど、
初回起動時にのみconfig.pyが作られるようなので、杞憂だったみたいです。
よく見ると組み込みの設定はEXE内で、
config.py自体がユーザ設定ファイルだったんですね。
あれ、でも _config.py が更新されているような気がする。 diff 取ってみると config.py に変更した覚えのないコードが _config.py にありました。
そりゃ_config.pyは何回か更新されてるし。
>>407 ということは、_config.py の更新をconfig.pyへ反映するのはユーザの手作業?
>>408 差分を反映する必要は全く無いよ
config.pyはあくまでユーザのカスタマイズ用のスクリプトで、
_config.pyはただのサンプルでしかないんだから
>_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 :
名無しさん@お腹いっぱい。 :2008/12/18(木) 17:27:50 ID:ttqEKvgp0
あふとは違うのだよ、あふとは
>>410 それはその通りだと思う
内骨格のコンセプトがあんな感じである以上作者さんも煮詰め切れてない部分があるんだろうね
作者視点で言うと、 ・いままで使ってるユーザーを、設定をいきなり変えることでびっくりさせたくない(←あたりまえ) ・でも新規ユーザーには推奨の設定で使ってほしい(←そういうときもあるよね) ってのは、アプリケーション作ってるとよく出会う場面だよ。 自分も経験あるけど、どんな新機能がつくかなんて作者でも予測できないもんだよ
半月ぐらいレスついてなかったのに急にレスが増えたな 何かあったんかw
今北産業 あふとの違いなんだ? あふから乗り換える意義はあるのか?
>>415 そんなことを聞く奴には向いてない。
おまえはあふを使い続けた方が良い。
>>415 違いは色々あるが、Pythonというインタプリタ言語で拡張可能なのが最大の違い
というか、内骨格自身がPythonインタプリタ上で走っている
シャレで内骨格を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()に渡してる引数足りてないですね。
あっふでーとこけた
ランタイム入れたら起動しました
作者さんは3.0にはどれくらいに対応する予定なんだろうか。
3.0になったらconfig.py他ユーザが書いたコードも書き直しだから ちょっとな
423 :
名無しさん@お腹いっぱい。 :2009/01/16(金) 13:12:42 ID:9nurCy3E0
いつの間にか Python2.6対応? python26.dll が入ってた。
>>418 追っかけてみた。
原因は、tarfileのバージョン、info.name の文字列の扱いで。
以前は、ディレクトリは foo/ と区切り文字が末尾に付いていたのが、
2.6のtarfileでは付かなくなった為。info.name をsplitした後の値が異なる。
(変数 names が 2.5 で ['foo',''] だったのが 2.6 では ['foo'] となる)
tarfileのバージョン
python2.5 - tarfile 0.8.0
python2.6 - tarfile 0.9.0 (will backport to 2.5) らしいので、将来の 2.5.x でも問題になりそう。
おお、乙 以前は作者さんこのスレ見てたっぽいけど 今は見てねーのかね 過疎ってるからなぁ
>python3.0対応 ユーザ数やコード量が増えるにつれて、移植コストは増大するので、 バージョンアップには積極的になるべきだと思う。 今すぐ対応のは(周辺ライブラリの対応状況があるので)無理だろうけど。 2.6 -> 3.0 への移行は2to3ってツールがあるので、 config.pyの書き直しは*思ったほど*多くはない。(経験上) python使いでないユーザの人達には、混乱を強いる時期が来るかもしれないが、 その辺はサポートでカバーするしかないんじゃない?
>>233 ,
>>362 辺りの興味ありそうな話題を振ってみる。
元コードを変更しないで、config.py内で出来る方法。簡単そうなのを。
_original_on_activate = window._onActivate.im_func
def _on_activate(self, active):
_original_on_activate(self, active)
......
window._onActivate.im_func.__code__ = _on_activate.__code__
C のコンストラクタに渡っているのは、入れ物(instancemethodオブジェクト)なので
その中身(関数オブジェクト内のコード・オブジェクト)だけ入れ替えるアプローチ。
注意点は、_on_activateが呼び出されるときのコンテキストは MainWindow._onActivateが定義されてる場所になるので、
登録する関数のスコープでのグローバル変数やclosure等、外側のスコープのオブジェクトの利用は出来ない。
※ 出来るけど、更に面倒な手続きが必要な上、MainWindowへの副作用が心配。関数内で新たにimportする方が無難。
429 :
428 :2009/01/18(日) 07:24:17 ID:PWZ+MY420
自分で注意書いて忘れてた。 この_original_on_activateの呼び出しは無理なので、 グローバル変数の利用法も兼ねて修正。 from types import FunctionType _onActivate = window._onActivate.im_func _original_on_activate = FunctionType(_onActivate.__code__, _onActivate.__globals__) def _on_activate(self, active): _original_on_activate(self, active) # your code _onActivate.__code__ = _on_activate.__code__ _onActivate.__globals__['_original_on_activate'] = _original_on_activate
430 :
428 :2009/01/18(日) 08:27:38 ID:PWZ+MY420
透過window import ctypes def make_transparent(hwnd, alpha): GWL_EXSTYLE = 0xffffffec WS_EX_LAYERED = 0x00080000 LWA_ALPHA = 2 user32 = ctypes.windll.user32 style = user32.GetWindowLongA(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED user32.SetWindowLongA(hwnd, GWL_EXSTYLE, style) user32.SetLayeredWindowAttributes(hwnd, 0, alpha, LWA_ALPHA) make_transparent(window.getHWND(), 200)
431 :
428 :2009/01/18(日) 21:23:08 ID:3UbrRIpC0
壁紙 ※ リサイズ未対応。planeの開放のタイミング自信なし(コメント行) def set_wallpaper(target, filepath): import Image import cterm image = Image.open(filepath).convert('RGBA') image = cterm.Image.fromString(image.size, image.tostring()) rect = target.getClientRect() plane = cterm.Plane(target, rect[:2], rect[2:], 4) plane.setImage(image) # import atexit;atexit.register(plane.destroy) set_wallpaper(window, r'foo.jpg')
おお透過がきたー 試してみる ところで内骨格ってwineでもすかっと動きそうだよね? 内骨格とxyzzyがlinuxに持ち込めたら俺もう快適過ぎて死ぬかも
>>432 screen,vimやemacs内で普通に2画面ファイラー出来ますよ。
快適にするには自分で設定や環境を育てないといけないけど。
linuxで使える物、検索してみるとmfiler2というファイラーがあった。
こっちは逆にwinで動かす時cygwinが必要みたい。
>>428-429 うほ、これはいいモンキーパッチ
だが、なるべく避けて通りたい黒魔術ですねぇ
>>431 リサイズに対応するには、WM_SIZE系のフックがいるんでしょうな
触媒作ってみました。 import sys from types import FunctionType, ModuleType, CodeType def hide_closure(func): to_s = lambda xs:''.join(map(chr,xs)) code = func.func_code names = () flags = 79 # OPTIMIZED|NEWLOCALS|VARARGS|VARKEYWORDS|NOFREE consts = tuple([func]) varnames = tuple(['argv', 'kwargv']) bytecode = [0x64,0,0, 0x7c,0,0, 0x7c,1,0, 0x8e,0,0, 0x53] funcname = code.co_name filename = code.co_filename return CodeType(0, 2, 1, flags, to_s(bytecode), consts, names, varnames, filename, funcname, 0, '\x00\x01') class FunctionHook(object): def __init__(self, module_name): self.module = sys.modules[module_name] = ModuleType(module_name) def hook(self, srcfunc): def _hook(newfunc): func_name = newfunc.__name__ oldfunc = FunctionType(srcfunc.func_code, srcfunc.func_globals) setattr(self.module, "prev_"+func_name, oldfunc) srcfunc.func_code = hide_closure(newfunc) return newfunc return _hook
使い方。_onSizeをフックする例。 hook = FunctionHook('hook_handler').hook value = 10 @hook(window._onSize.im_func) def window_on_size(self, width, height): # import hook_handler # hook_handler.prev_window_on_size(self, width, height) print value pass コンストラクタでは、前のハンドラを保存する為に 'hook_handler' モジュールを生成します。 "prev_"+関数名で前のハンドラを保存するので、モジュール名と関数名は他と衝突しないように注意。
※ 注意 ※
動的コード生成でスコープの問題を解消。…出来てるはずだけど、
怪しい事してるので、何かあったら真っ先に疑ってください。
# 十分な動作検証をしていないので副作用が心配。
尚、このFunctionHookクラスでは、window._onXXX のフックしか出来ません。
>>434 メッセージのフックで出来るものは、そちらでやる方が良いですね。
デバッグの事とか考えると、自分でも避けたいと思います(苦笑
メッセージ・プロシージャ・フックのサンプル。 # TODO: 例外処理。フックする関数を呼んだ後の戻り値の扱い。 import ctypes from ctypes import windll, c_long, c_int, cast, POINTER, WINFUNCTYPE from ctypes.wintypes import RECT user32 = windll.user32 WNDPROC = WINFUNCTYPE(c_long, c_int, c_int, c_int, c_int) GWL_WNDPROC = -4 CallWindowProc = user32.CallWindowProcA lparam_to_rect = lambda x: cast(x, POINTER(RECT)).contents rect_to_size = lambda x: ((x.right-x.left), (x.bottom-x.top)) lparam_to_size = lambda x: rect_to_size(lparam_to_rect(x)) class MessageHook(dict): def __init__(self, hwnd): self.hwnd = hwnd self.newWndProc = WNDPROC(self._wndproc) self.prevWndProc = user32.SetWindowLongA(self.hwnd, GWL_WNDPROC, self.newWndProc) def __call__(self, msg): return lambda func: (self.__setitem__(msg,func), func)[-1] def _wndproc(self, hwnd, msg, wparam, lparam): if msg in self: self[msg](hwnd, msg, wparam, lparam) return CallWindowProc(self.prevWndProc, hwnd, msg, wparam, lparam)
# 〜続き WM_SIZING = 0x214 msghook = MessageHook(window.getHWND()) @msghook(WM_SIZING) def on_sizing(hwnd, msg, wparam, lparam): size = lparam_to_size(lparam) print "SIZE", size return 0
>>435-439 GJ。
戻り値に関しては、処理済かどうかをフックプロシジャに示してもらう
(ATL/WTL方式)のほうがよさげですね。
それと、ctermはunicode windowなので、W版APIを使うほうがよいのでは
ないでしょうか。
http://pastie.org/369970 ユーザのフックプロシジャは、引数としてhwnd, nmsg, ...のかわりに
Eventクラスのインスタンスを受け取ります。
元のウィンドウプロシジャに回したい場合は、Eventの
handledをFalseに、そうでなければTrueにセットするようにします。
handledがTrueの場合は、ユーザのプロシジャの戻り値をそのままウィンドウ
プロシジャの戻り値として返却します。
>>440 パッと見た感じでは、handledの書き換えが気になるかな。
# ATL/WTL方式の慣習には慣れ親しみが無いからかもしれない。
StopIterationの様な感覚で、こんなのはどうだろう。
例外を使って中断/継続を制御する方法。(アイデアのみの擬似コード。命名も適当なので要リファクタリング)
http://pastie.org/370021 ところで、WTLと言えば、vensterのメンテナンスってどうなるんだろう。
3.0対応を見据えると、これから拡張を作る場合 win32guiベース の方が良かったりするのかな?
>>431 を試してみたら尋常でなく描画が遅くなるのでちょっと調べてみました。
ctermでは、WM_WINDOWPOSCHANGINGを捕まえて、WINDOWPOS構造体の
flagsメンバのSWP_NOSIZEビットなどを見てサイズ変更かどうかを判断し、
サイズ変更の場合は、フル再描画を行っています。
残念ながら、自分の環境(XP SP3)では、ウィンドウの移動(サイズ変更ではない)
において、移動中(マウスドラッグ中)に飛んでくるメッセージでは、
NOZORDER, NOACTIVATE, NOOWNERZORDERのビットが立っていますが、NOSIZEビットは
立っていません。
移動完了時(マウスを放した瞬間)だけ、NOSIZEビットの立ったメッセージが
飛んできます。
結果として、不必要な再描画が大量に発生してしまっているようですね。
>>441 ATLでは、bHandledのような参照渡し引数を用います。
が、Pythonではそのようなものが使えないので……
>>441 コードを見てみましたが、
そういえば2.6になったからnamedtuple使えるんだな、と気づきましたw
vensterの中の人はctypes/comtypesの人なのですが
venster自体はここ4,5年ぐらい絶賛放置中なので……
気が向いたら3.0で動くか試そうと思っていますが、マンドクセという感じですね。
pywin32の方が堅いことは堅いでしょう。
448 :
441 :2009/01/25(日) 23:13:02 ID:1X3A6Eq20
うーん。自分にとってはwin32が黒魔術。詳細とか突っ込んだ所は解らないけど、
うちの環境(Vista 多分無印)ではなんとも無かった様です。対策感謝。
>>442 ,446
>>445 ベンチ取って見ると、インスタンス生成は大体同じくらいで
属性の参照ではクラスの方が2倍程早いみたい。(namedtuple使ったのは手抜)
wndprocは頻繁に呼ばれる事になるので、使うとしたら少しでも早いクラスの方がよさそーですね。
>vensterの中の人
同じ人だったんだ。comtypesは、もう3.0対応してるのになぁ。
最近のコミットを追いかけてみると、面白そうなもの発見…もしかして、コレ
ttp://svn.python.org/view/ctypes/branches/ctypeslib-cpp/ (Branch for ctypes C++ bindings)
で、ATL/WTLが使えるようになったりしないかな。(密かに期待
>>448 えーと、説明不足だったかもしれませんので、念のため。
>>442 の問題は、
>>431 のコードの問題というわけではありません。
背景画像の再描画はそれなりに重いので、不要な再描画が発生することによる負担が
顕在化しやすくなるだけです。
多分XPのGDIまわりのバグか何かでは?と思いますが、
自分も詳しいわけじゃないので、何とも……
vensterは、中の人を考えれば、大本命なんですけどねぇ。
まあ、忙しいんだろうな、とは思います。
>>449 ユーザ拡張側で出来る対策としては、
リサイズ終了時のみを捕まえて、画像を描画するようにした方がいいのだろうけど、
コード量が増えそうなので敬遠して…
壁紙のリサイズ対応(最大化には未対応)
追加する場所は431のset_wrappper関数の末尾。
差分のみなので、
>>431 ,
>>438 ,
>>439 ,
>>440 ,
>>444 ,
>>446 ,
>>447 を追従して
って長いな。最大化対応した頃にでもまとめます。(TODO)
@msg_hook(WM_SIZING)
def on_sizing(hwnd, msg, wparam, lparam):
plane.setSize(target.getClientRect()[2:4])
# 注意点:set_wallpaperを2回以上呼ぶ場合、前のウィンドウに対してのリサイズ対応が無効になる。
>>450 好みの問題ですが、↓のようにすると等倍表示になりますね。
十分大きい壁紙を指定すれば、ウィンドウリサイズへの対応が不要です。
def set_wallpaper(target, filepath):
import Image
import cterm
image = Image.open(filepath).convert('RGBA')
ctimage = cterm.Image.fromString(image.size, image.tostring())
plane = cterm.Plane(target, (0,0), image.size, 4)
plane.setImage(ctimage)
それと、これもXP onlyの話かもしれませんが、
>>446 の対応をしても、
カーソル移動などがかなりモタつきます。
ctermcore.cppのWindow::_drawBitmapLayer()で
SetStretchBltMode( hDC, STRETCH_HALFTONE );
をコメントアウトしてしまえば、描画速度は大幅に改善されます。
言うまでも無くC++のコード変更とctermcore.pydのリビルドを必要としますので
推奨できない方法ですが。
内骨格は、dirty rect管理+クリッピングリージョンを用いて再描画を
最小に抑える作りになっているようです。
が、上記のHALFTONEが指定されいると、クリッピングされていようが
StretchBlt()はまずビットマップ全体の再レンダリング計算を行ってから
ブリットしてるんじゃないのかなあ……というぐらいに負荷のかかりかたが
大きいです。
452 :
450 :2009/01/29(木) 00:45:14 ID:GNR3Z4Dp0
>>451 デバイスの描画速度に依存する問題だとしたら、環境によってはまだ問題が残ってそうですね。
全然試してないので、ソース見ての推測ですが、
Plane::SetImage -> Window::appendDirtyRectと追っていくと、
Window::_onTimerでdirty_rectの描画が発生してるのが原因だと思われます。
cterm_mainwindow.WindowでPlane.setImageを使うこと自体が問題になるみたいです。
別のアプローチでの壁紙を考えよう。
ところで、この問題ってImageViewerの方では起こってないのでしょうか?
>>452 えーと、dirty rectが再描画されることは必要ですから、それ自体が
問題なのではありません。
内骨格が描画領域を必要最低限に限定している(=クリッピングしている)にも
関わらず、私の環境では
背景ビットマップをHALFTONE指定でのStretchBlt()で描画すると、
背景画像なしの場合に比べて、目に見えて描画速度が落ちる、ということです。
カーソルを動かした時に、ファイルのリストのスクロールが発生するのであれば
ペイン全体が再描画されるので仕方が無いのですが、スクロールしない場合
(カーソル位置を示す横線だけが動く場合)も、相当遅くなります。
まあ、HALFTONEはパフォーマンスを犠牲にして拡大縮小を綺麗にするという
オプションですので、ある程度は当たり前の話なんですが。
速度の低下が許容範囲かどうかは、OS/CPU/グラフィックボード等に依存するところが
大でしょうね。
ImageViewerに関しては、 ・デフォでは等倍表示なので拡大縮小は発生しない ・フルスクリーンモードではロード時に画面サイズに合わせた縮小を 必要に応じて行ってしまう ので、リアルタイムでの拡大縮小は行いません。再描画時には 単なるblitが実行されます。 縮小アルゴリズムはBILINEARですが、これが重い人は、スクリプトを書き換えて NEARESTに変更すると、フルスクリーンモードでの大きい画像のロードが軽くなります (そのかわり、画面はやや荒くなります)。 まあ、私の環境はPentium M1.7GHz程度の、最新のデスクトップPCに比べると 随分貧弱なノートPCですが……。
455 :
452 :2009/01/30(金) 04:21:58 ID:0PLOaP9w0
>>453-454 詳細解説 Thanks。突っ込んだ所までは理解していないので、
原因と言っていいかどうかは解りませんが、問題点は把握できました。
Plane.setImageを避けて別の方法で画像を描画すればいいんだろうけど、
描画イベントやバッファの管理を、ユーザ拡張の範囲内で自分で行うのも面倒なので、
壁紙の描画問題の改善については、簡単に出来そうな方法を思いつくまで中断しようと思います。
小ネタで、左右ペインの入替。(Ctrl-X) コメント行は、ペインのサイズも変更する場合。 def command_SwapPane(): win = window win.left_pane, win.right_pane = win.right_pane, win.left_pane #win.left_window_width = win.window_normal_width - win.left_window_width #win.skinUpdate() win.paint() window.keymap[KeyEvent(ord('X'), MODKEY_CTRL)] = command_SwapPane
keymapを設定ファイルで管理
hg clone
http://freehg.org/u/nix/cfiler_user_keymap/ ---- 利用方法 sample
# configure.py
import user_map
register_command = user_map.set_command_decorator(window)
@register_command
def command_ForceQuit():
import sys;sys.exit()
user_map.install(window, u'./extension/user.keymap')
# ./extension/user.keymap
ForceQuit = Ctrl+Alt+Q
458 :
457 :2009/01/31(土) 08:46:31 ID:EtdStOQU0
モジュール名typo: s/user_map/user_keymap/
nice hack. 落とさせて貰いました。
ペインの先頭・最後尾にカーソル移動したいってキー一発でできない?
# ディレクトリを隣のPaneで開く @bind_key('Shift + Return') def command_ReturnOnInactivePane(): import os pane = window.activePane() item = pane.file_list.getItem(pane.cursor) if item.isdir(): window.inactiveJump(os.path.join(item.location, item.name)) # 再起動 @bind_key('Ctrl + Alt + F5') def command_Reboot(): import os import sys import cfiler_misc from cfiler_msgbox import popMessageBox, MSGBOX_TYPE_YESNO, RESULT_YES caption,message = u'確認',u'再起動します' result = popMessageBox(window, MSGBOX_TYPE_YESNO, caption, message) if result == RESULT_YES: cfiler_path = os.path.abspath(sys.argv[0]) window.saveState() cfiler_misc.shellExecute(None,None,cfiler_path,u"",u"") window.quit() sys.exit(0)
↑@bind_keyデコレータはuser_keymap.py利用です。キー割り当ての所は適当に。
日本語が何か変な気がするので訂正。 ↑@bind_keyデコレータは>457のuser_keymap.pyを利用したキー割り当てです。
diff for >464 - pane = window.activePane() - item = pane.file_list.getItem(pane.cursor) + item = window.activeCursorItem()
キーのアサインは「あふ互換モード」以外に自由にカスタマイズできないでしょうか?
469 :
cap005-096.kcn.ne.jp cap005-096.kcn.ne.jp :2009/02/06(金) 23:41:21 ID:+RLDH+dA0
>468 configで出来ますよ。
質問なのですが 多重起動を抑止して, 起動しているcfilerがあったらアクティブにする ようなことはできませんか? あと, コマンドラインでディレクトリを渡してアクティブにするには どうすればいいですか? この二つができたらdynaから乗り換えを考えています.
# ログのクリア def command_ClearLogPane(): window.log_pane.log.log = [u''] window.paint() window.launcher.command_list.append((u'clear', command_ClearLogPane))
474 :
471 :2009/02/08(日) 12:54:39 ID:+xfdrR+Q0
>>472 cfiler_launcher試してみました.
引数がふたつとれて左右同時にディレクトリ変更できるとベスト
なのですが, cppソースもあるので自力でなんとかできそうです.
ありがとうございました.
475 :
471 :2009/02/08(日) 12:58:04 ID:+xfdrR+Q0
extensionディレクトリのモジュールを先に読み込んでくれる cfilerx.exeが以前どこかにあったともうのですが, もうないですかね? CraftLaunchのソースでは多重起動防止ロジックが組み込まれているみたい なので, そちらからの対応も考えてみたいので, cfilerx あると便利かと 考えているのですが...
>>474 えーと、すみません。
今の版ではパイプに書き込む時にlocaleをimbue()し忘れていたので、日本語入りの
ディレクトリを表示させようとするとエラーになると思います。
修正版を上げておきました。
左右のディレクトリを変更したい場合は、window.inactiveJump()のかわりに
window.leftJump()とwindow.rightJump()で良いはずなのですが、
今のバージョンのwindow.leftJump()は
>>418 にあるとおり
ちょっとバグっているので、
直接window._jump()を呼ぶとよいでしょう。cfiler_mainwindow.pyの中を見て
参考にしてください。
477 :
332 :2009/02/08(日) 13:43:34 ID:teU/EffN0
>>475 >>332 のは既に消えてるのか、だとするともう無い。まぁ、あったとしてもPythonのバージョンが違うからだめだと思う。
cfilerx.exeのソースなら↓
boot.py:
http://codepad.org/cc8SYCfK setup.py:
http://codepad.org/9fT9Sd30 python setup.py py2exeでcfilerx.exeが出来る。
こいつはexeと同じ場所にあるcfilerx.zipをライブラリパスに追加してcfilerx.pyを実行する。
cfilerx.pyはcfilerのソースのcfiler.pyをコピーして来ればよい。
cfilerx.zipは元々のcfiler.exeを名前を変えてやるか
cfilerx.pyの中でcfiler.exeをライブラリパスに追加してやればよい。
478 :
471 :2009/02/08(日) 18:29:22 ID:+xfdrR+Q0
>>476 cfiler_launcherの新版いただきました. 試してみます.
>>477 cfilerx.exeのソースいただきました. こちらも試してみます.
5年以上使ってきたdynaのカスタマイズをほぼ内骨格に移行できる
めどが立ちました. みなさんありがとう.
Pythonスクリプトの実行。(要インストールPython)
Pythonのバージョンを選択して実行。でも、引数は取らない。
hg clone -r 0.0.1
http://freehg.org/u/nix/cfiler_runpy/ cfiler_runpy.setup(window) で、windowのクラスに以下のコマンドを追加。
* command_RunPy ... cfiler_misc.shellExecuteで実行。
* command_RunPyWithWindow ... window.subProcessCallで実行。出力/エラーは内骨格のログPaneへ。
キー割当はその後適当に。※注意点※ subProcessCallを使う方では、ServerやGUIアプリの実行は出来ない。
>>476 pipeserverとxconsole使わせてもらってます。
leftJumpは何処からも使われていないようなので、拡張向けのAPIなのかな。
うちでは、とりあえずはこんなので凌いでます。
from cfiler_mainwindow import PAINT_LEFT
def leftJump(self, path):
self._jump(self.left_pane, path)
self.paint(PAINT_LEFT)
window.__class__.leftJump = leftJump
# こんなとこでついでに言うのも恐縮ですが typo報告 tipsのメニューのとこ s/popupMenu/popMenu
>>480 ありゃ。指摘ありがとうございます。
記述を修正しときました。
ちと質問。
>>483 はミス。途中で送信しちまった。
この内骨格で気になってる部分が二つあるんだ。
1.ファイルサイズの単位が勝手に変わるんだけど、それを固定できるのか。
2.起動すると、毎回隠しファイルの表示がOFFになるっぽいけど、ONで固定できるのか。
これって、スクリプトを書き換えれば対応出来たりするんかな。
>>484 1.は常にKB単位とかで表示したいってことかな
cfiler_filelist.pyのitemformat_Name_Ext_Size_YYMMDD_HHMMSS()
のような関数が表示するときのフォーマッティングをやっているので、
それを真似してconfig.pyに適当な関数(myformatterとする)を作って
window.setItemFormat(myformatter)
のようにすれば出来るはず
逆に言うと、自分で関数を書かないとできない
2.は、なんかiniファイルに保存してないっぽいね
config.pyに
window.showHiddenFile(True)
とか書いておけばいいよ
486 :
484 :2009/02/20(金) 00:21:54 ID:PWKoirGd0
487 :
484 :2009/02/20(金) 03:32:46 ID:PWKoirGd0
>>487 >>> import locale
>>> locale.setlocale(locale.LC_ALL, '')
'Japanese_Japan.932'
>>> locale.format_string("%d", 10000, True)
'10,000'
489 :
484 :2009/02/20(金) 16:26:39 ID:PWKoirGd0
>>488 サンクス!
やっつけで作った関数が消せて、スッキリしました。
Python使えば、かなり色々といじれるんですね。
いろいろと勉強になりました。
ALTを使用したショートカットキーを押すとパンって警告音がなるのを 消したいんだけど、やり方がわからない。 pythonでできるのだろうか。
内骨格に限らず無効にしたければ、デバイスマネージャでBeepを無効にするのが簡単みたい。 内骨格内だけで無効にしたいなら、何らかの方法でキー入力をフックする必要があると思う、 python/config.py内で…となると、とりあえず思いついたのは、 すべてのAlt付きショートカットに、何もしない関数を割り当てる方法。 (※ 除く Alt+F, Alt+Space, Alt+Tab 等の標準のショートカット)
492 :
490 :2009/03/01(日) 12:17:07 ID:ABXltIoX0
>>491 レスサンクス。
説明不足でスマン。
ALT+○に関数割り当てて実際に関数が割り当たってて想定どおりの動作を
するんだけど、その動作と一緒に警告音がなるのを消したいってことなんだよね。
cfiler_mainwindowの_OnKeyDownでreturn True必ずするとか
いろいろ試してみたけどわかんない。
493 :
名無しさん@お腹いっぱい。 :2009/04/08(水) 22:28:55 ID:PVrh0dQuO
lzhファイル内の仮想ディレクトリからファイルのコピーを行おうとした場合、 タイムスタンプの比較が正しく機能してない様子です。 # 「新しければ上書き」してくれない zip、tgz形式で確認したところ正しく動作したので、これはアーカイバ側の問題なのでしょうか? ご存知の方おられましたらご教授ください。 内骨格 Ver.1.79 XP Pro. SP3
最近内骨格使い始めて、とりあえず使いやすいようにキーマップをしてみたんだけど、 / や : がマップできない。 VK_A みたいにどこかに書いてありますか?
495 :
494 :2009/04/10(金) 16:02:29 ID:VBdtzHSQ0
すみません。 ググったら、解決しました。
インクリメンタルサーチでは、CTRL-H で前の文字を削除できるけど、リネームやコマンドラインではできません。 これってどこか変更すれば実現可能ですか? 他にも、CTRL-M で決定 (Enter と同じ動作) にしたりしたいんですが、できますか?
Portable Python登場、移動可能な開発スタック 2009/04/06 後藤大地 実験的な位置づけが強いが、Pythonプロジェクトから新しい開発環境スタック Portable Python 1.1が公開された。Portable Pythonはポータブルデバイスで 持ち運びができるようにまとめられたPython開発スタック。 Windows XP、2000、98がサポートされ、Python 2.5.4、Python 2.6.1、Python 3.0.1のバージョンがサポートされている。スタックに含まれている成果物は次のとおり。 * Python 2.5.4版スタック(Django-1.0.2-final、IPython-0.9.1、Matplotlib-0.98.5.2、 Numpy- 1.2.1、PIL-1.1.6、Py2exe-0.6.9、PyGame-1.8.1、PyReadline-1.5、 PyScripter v1.9.9.6、PyWin32-212、Rpyc-2.60、Scipy-0.7.0b1、SPE-0.8.4.c、 VPython-3.2.11、 wxPython-unicode-2.8.9.1) * Python 2.6.1版スタック(Django-1.0.2-final、IPython-0.9.1、PIL-1.1.6、Py2exe-0.6.9、 PyGame-1.8.1、PyReadline-1.5、PyScripter v1.9.9.6、PyWin32-212、Rpyc-2.60、 SPE-0.8.4.c、wxPython-unicode-2.8.9.1) * Python 3.0.1版スタック(PyScripter v1.9.9.6、Rpyc-2.60)
Portable Python登場、移動可能な開発スタック 2009/04/06 後藤大地 実験的な位置づけが強いが、Pythonプロジェクトから新しい開発環境スタック Portable Python 1.1が公開された。Portable Pythonはポータブルデバイスで 持ち運びができるようにまとめられたPython開発スタック。 Windows XP、2000、98がサポートされ、Python 2.5.4、Python 2.6.1、Python 3.0.1のバージョンがサポートされている。スタックに含まれている成果物は次のとおり。 * Python 2.5.4版スタック(Django-1.0.2-final、IPython-0.9.1、Matplotlib-0.98.5.2、Numpy- 1.2.1、PIL-1.1.6、Py2exe-0.6.9、PyGame-1.8.1、PyReadline-1.5、 PyScripter v1.9.9.6、PyWin32-212、Rpyc-2.60、Scipy-0.7.0b1、SPE-0.8.4.c、VPython-3.2.11、 wxPython-unicode-2.8.9.1) * Python 2.6.1版スタック(Django-1.0.2-final、IPython-0.9.1、PIL-1.1.6、Py2exe-0.6.9、 PyGame-1.8.1、PyReadline-1.5、PyScripter v1.9.9.6、PyWin32-212、Rpyc-2.60、SPE-0.8.4.c、wxPython-unicode-2.8.9.1) * Python 3.0.1版スタック(PyScripter v1.9.9.6、Rpyc-2.60)
Portable Python登場、移動可能な開発スタック 2009/04/06 後藤大地 実験的な位置づけが強いが、Pythonプロジェクトから新しい開発環境スタックPortable Python 1.1が公開された。 Portable Pythonはポータブルデバイスで持ち運びができるようにまとめられたPython開発スタック。 Windows XP、2000、98がサポートされ、Python 2.5.4、Python 2.6.1、Python3.0.1のバージョンがサポートされている。 スタックに含まれている成果物は次のとおり。 * Python 2.5.4版スタック(Django-1.0.2-final、IPython-0.9.1、Matplotlib-0.98.5.2、Numpy- 1.2.1、PIL-1.1.6、Py2exe-0.6.9、PyGame-1.8.1、PyReadline-1.5、 PyScripter v1.9.9.6、PyWin32-212、Rpyc-2.60、Scipy-0.7.0b1、SPE-0.8.4.c、VPython-3.2.11、 wxPython-unicode-2.8.9.1) * Python 2.6.1版スタック(Django-1.0.2-final、IPython-0.9.1、PIL-1.1.6、Py2exe-0.6.9、 PyGame-1.8.1、PyReadline-1.5、PyScripter v1.9.9.6、PyWin32-212、Rpyc-2.60、SPE-0.8.4.c、wxPython-unicode-2.8.9.1) * Python 3.0.1版スタック(PyScripter v1.9.9.6、Rpyc-2.60)
内骨格で.lnkのリンク先を開くにはどうしたらいいの?
自力でEnterをhookして、win32使ってやってたが 今見直したらちゃんと動かないやwいつの間に・・・
cfiler_mainwindow.pyに下記がある。 if 0: # TEST if ext in (".lnk",".pif"): linkinfo = cfiler_native.getShellLinkInfo(item.getFullpath()) print linkinfo elif ext in (".url",): urlinfo = cfiler_native.getInternetShortcutInfo(item.getFullpath()) print urlinfo
503 :
500 :2009/04/20(月) 20:39:45 ID:1lQ6YCRy0
>>501 >>502 とりあえずEnterのフックで拡張子を判別してできそうですね。
本体を直接改造できればいいんですが、ビルドがうまくできなかったんですよね・・・
誰かビルドの環境と手順を解説してくれないかなぁ。
ジャンプリストをテンキーに割り当てようと思ったんだが、 これだとどの数字を押しても最後のフォルダに飛んでしまう lambdaの部分が駄目だと思うんだけど、どう書けばいい? window.keymap[ KeyEvent(ord(str(0))+48, 0) ] = lambda: window.activeJump(window.jump_list[3][1]) # OK for index, item in enumerate(window.jump_list): if index < 9: window.keymap[ KeyEvent(ord(str(index+1))+48, 0) ] = lambda: window.activeJump(item[1]) # NG print str(index+1), ord(str(index+1))+48, item[1] # 確認
>>504 繰り返しで廻す変数(index,item)をクロージャ内で使った時の落とし穴。
lambda内の変数itemは遅延評価される為、常に最後の値が入る事になる。
forの外で関数定義する。lambda使うなら下の様なのをforの事前に準備。
jump = lambda x: lambda: window.activeJump(x)
506 :
◆Nana...Z5Q :2009/05/03(日) 22:16:55 ID:BtTfz9LK0 BE:1253988566-2BP(200)
あふみたいな擬似D&Dはないでつか?
507 :
◆Nana...Z5Q :2009/05/07(木) 10:45:35 ID:HaZ7qVp00 BE:835992746-2BP(200)
あふみたいな画像のサムネ表示ってないでつか?
508 :
名無しさん@お腹いっぱい。 :2009/05/09(土) 13:54:46 ID:i+CnQzeS0
version 1.81にしてからGmailDriveにアクセス出来なくなったんだけどさ。 自分のところだけかな・・・。
わりぃsage忘れた。
>>508 GmailDriveエクスプローラではちゃんと見れてる?
みれないのは内骨格だけ?
>>510 GmailDriveエクスプローラからはちゃんと見られますね。
>>510 すみません
>>511 は途中で送ってしまいました。
それで、GmailDriveエクスプローラからはちゃんと見られます。
ファイルを持ってきたりすることも出来ました。
でも、内骨格で閲覧しようとすると、Gmailアクセス中のダイアログが出た後に、
以下のようなエラーが出てアクセスできませんでした。。
移動失敗 : \
list.remove(x): x not in list
>>512 更に調査結果追加。
新しく来た1.82でも同じエラーがでているので、直っておりません。
試しに、1.82を新しくダウンロードしてきて、
デスクトップに展開して起動させても無理でした。
1.80をダウンロードしてきて、同じくデスクトップで展開した場合は問題なく使えました。
よって、自分の環境ではバージョンを1.80まで落とさないと
GmailDrive使えなくなったようです。
>>513 GmailDriveの件ですが、新しく来たバージョン1.83にて対応されたみたいです。
1 .83 - 2009/05/10
- 1.81 から、GmailDrive と FTP が使えなくなっていたのを修正
- CheckSimilar コマンドの結果に、同じファイルが複数リストアップされてしまうのを修正
- ファイルの比較処理をキャンセルできるようにした。
早速チェックしたら、問題なくファイルのやりとりが出来ました。
ここを見ている方達にとってはわかりきっている事かもしれませんが、
質問をした者として、一応報告させていただきます。
また、レスをくれた方もありがとうございました。
Gmail Driveなんだけど、ドライブ内でのフォルダ間移動とか、重複ファイルの確認ダイアログとかがいちいち全部出るおよ(ノД`) 確認ダイアログとか出ないようにはどうやったらできるぽ? スレチでごめんち(;><)
ファイル名のインクリメンタルサーチがファイル名の部分一致もしてくれると使いやすいんだけどなー 下部ペーンで内骨格のpythonのインタプリタが動いたらsugeeeんだけど タブ切り替えとかで
昨日から使い始めた。 けど、なんで内骨格って名前なの?
519 :
名無しさん@お腹いっぱい。 :2009/06/30(火) 00:06:30 ID:dS1HEMXU0
カーソルが差してるファイル・ディレクトリのフルパスをクリップボードに取りたいんだけど、pythonからクリップボードっていじれるのかな・・・ ていうか、誰か、書いてくださいお願いします。
>>519 書いてみた。
# Ctrl+C でフルパスを取得してクリップボードへコピー
def copy_fullpath():
pane = window.activePane()
item = pane.file_list.getItem(pane.cursor)
path = item.getFullpath()
cfiler_misc.setClipboardText(path)
print path + u"をクリップボードにコピーしました"
window.keymap[ KeyEvent(ord('C'),MODKEY_CTRL) ] = copy_fullpath
configure直下に書くとCtrl+Cでフルパスをコピーする。
>>520 バッチリでした!キーアサインとメッセージまで想像してたのと一緒
どうもありがとう
だいなみたいに、 カーソルがある位置のファイル名を自動的にステータスバー or タイトルバーに表示させられないでしょうか? 目的は、ファイル名が...で省略されているときに、 カーソルをあわせるだけで完全なファイル名を知ることです。 returnを押して内容を表示させればファイル名がタイトルバーに出る ので、それをカーソル移動させた時点で見せる方法があれば よいのですが…
>>522 ボクもステータスバーにファイル名表示は欲しいと思うお!!(^ω^)
臨時対策として『Shift + -』押してまつ(ノД`)
プログラミング初心者だけど一応できた。 カーソルキーを押したときにタイトルバーを変更するようにしてあるので 起動した直後は表示されてません コピペするときは全角スペースを半角に直してください。 もっとうまく書ける方がいれば直してください def display_name_on_titlebar(): pane = window.activePane() window.setTitle(pane.file_list.items[pane.cursor].name) def push_downkey(): window.command_CursorDown() display_name_on_titlebar() def push_upkey(): window.command_CursorUp() display_name_on_titlebar() def push_leftkey(): window.command_FocusLeftOrGotoParentDir() display_name_on_titlebar() def push_rightkey(): window.command_FocusRightOrGotoParentDir() display_name_on_titlebar() window.keymap[VK_UP] = push_upkey window.keymap[VK_DOWN] = push_downkey window.keymap[VK_LEFT] = push_leftkey window.keymap[VK_RIGHT] = push_rightkey
>>524 Σ( ゜Д゜) スッ、スゲー!!
できたらアプリケーション名はそのまま左端に残すようにしてほしいお(^ω^)
お願いしますぽ
display_name_on_titlebar関数を書き換える def display_name_on_titlebar(): pane = window.activePane() filename = pane.file_list.items[pane.cursor].name appname = cfiler_resource.cfiler_appname title = " - ".join([filename, appname]) window.setTitle(title) 書式は5行目をいじれば変えられる title = " ".join([appname, filename]) だと アプリケーション名 ファイル名
528 :
◆Nana...Z5Q :2009/08/05(水) 19:38:02 ID:YteaO0Ic0 BE:1950648678-2BP(200)
>>527 すごいですっ!!
ありがとうございまつ(´;ω;`)
無事にappname - filenameと表示できますた(・∀・)
もっと勉強しますお(^ω^)
←↓→↑だけだと、Enterでディレクトリを潜った時とBackspaceで一階層ディレクトリ遡った時にはタイトルバーが変更されないことをハケーン
そんなのソース見れば一目瞭然なんだから 書き加えればいいじゃないか・・・
このファイラ、Pythonで機能を追加すればSVNの操作もできるのか・・・ すげぇな・・・
532 :
◆Nana...Z5Q :2009/08/09(日) 16:28:06 ID:uCiGHELH0 BE:1671984768-2BP(200)
>>530 ごめんなさいお><
自分で書き加えマスタ(・∀・)
ソース見ればわかんだから一々書かなくていいわしねっ!!!1
って言われるかもしれないけどももももしかしたらわからない人もいるかもしれないので書いておくお(^ω^)
>>524 に
def push_enterkey():
window.command_Enter()
display_name_on_titlebar()
def push_backkey():
window.command_GotoParentDir()
display_name_on_titlebar()
window.keymap[VK_RETURN] = push_enterkey
window.keymap[VK_BACK] = push_backkey
を追加お(^ω^)
いっそのこと、以下のようにしちゃった方が楽だよ def foo( func ): 〜事前処理〜 func() 〜事後処理〜 window.keymap[hoge] = foo(window.command_CursorUp)
534 :
◆Nana...Z5Q :2009/08/09(日) 21:32:43 ID:uCiGHELH0 BE:1253988566-2BP(200)
lambda : が抜けてるだけじゃね def display_name_on_titlebar( func=None ): if func: func() pane = window.activePane() filename = pane.file_list.items[pane.cursor].name appname = cfiler_resource.cfiler_appname title = " - ".join([filename, appname]) window.setTitle(title) window.keymap[VK_UP] = lambda : display_name_on_titlebar(window.command_CursorUp) window.keymap[VK_DOWN] = lambda : display_name_on_titlebar(window.command_CursorDown) window.keymap[VK_LEFT] = lambda : display_name_on_titlebar(window.command_FocusLeftOrGotoParentDir) window.keymap[VK_RIGHT] = lambda : display_name_on_titlebar(window.command_FocusRightOrGotoParentDir) window.keymap[ KeyEvent( ord('H'), 0 ) ] = lambda : display_name_on_titlebar(window.command_JumpHistory) window.keymap[ KeyEvent( ord('J'), 0 ) ] = lambda : display_name_on_titlebar(window.command_JumpList) いちいち各キーの定義をし直すのが面倒というなら、 keydown_hook で、自前でコマンド起動した後に、タイトル更新呼ぶようにすればいいと思う。 (cfiler_mainwindow.pyの#787〜#800あたりを複製する)
536 :
◆Nana...Z5Q :2009/08/10(月) 13:08:51 ID:2Pjouz0m0 BE:1253988566-2BP(200)
ラムダ・・・( ゚д゚ ) 式でつかφ(゚Д゚ )フムフム…
537 :
名無しさん@お腹いっぱい。 :2009/09/15(火) 11:55:48 ID:PcDTfY+g0
過疎w
まだまだ発展途上だと思うんだけど、ここ一月半ほどは何も動きがないからね 拡張子色分けなどの機能面も充実して欲しいけど、 中身の方もとりあえず実装優先なのかけっこうベタに書かれてる部分もあるんで、 拡張しやすいようにクラス分けやフックの整理とかして欲しい
アイコン表示機能つかないかな〜
そろそろ更新ないと心配になってくるな・・・
541 :
名無しさん@お腹いっぱい。 :2009/10/27(火) 13:22:36 ID:5/vY5MXZ0
スレが立ってまるっと二年
542 :
sage :2009/11/29(日) 01:13:50 ID:4iM7TOrD0
サイトが404・・・
>>542 ごめん、途中でおくってしまった…orz
普通に開けたので、ちょっとサーバー再起動とかメンテしてただけじゃね?
おしえてください。 仮想フォルダ内のファイルをエディタに渡したいのですが デフォルトでは用意されていない機能ですか?
履歴で上から連続で削除すると "KeyError" になるぞ。
このファイラ、xyzzy 感覚で拡張できておもしろいね。 手段と目的が入れ替わりそうだw ただ、インタラクティブな関数の中に実処理が丸ごと 実装されているものが多いようで拡張しづらい。 python よくわからんけど、関数内でクラスを定義する メリットってあるのかな? あと拡張子と当日タイムスタンプの色づけが実装されれば 最高だな。
>>関数内でクラスを定義する スコープと名前空間が制限される pythonは関数もファーストクラスオブジェクトだし、 クラスがネストされているようなものだと思えば分かりやすいかも 実装がベタだという点は同感 今手を入れても将来整理されて無駄になるのではと思い、その辺が更新されるのを待っているのだけど、 ここしばらく音沙汰が無いのが何とももどかしい
更新したろ?
何が変わったのかがわからない
version 1.86:
http://sites.google.com/site/craftware/ - ディレクトリ区切り文字をスラッシュにしているときに、ファイルのドラッグ&
ドロップや、テキストエディタの起動でもスラッシュ区切りで渡していたのを修正。
- ドライブ名の大文字/小文字をそろえる設定を追加
- ソート方法の選択ウインドウを、Shift-Enterで決定できなかったのを修正。
Shiftを押しながら決定すると、逆順になる。
- 逆順でソートした後、再度ソート方法の選択ウインドウを開いたとき、初期選択
位置がリセットされてしまうのを修正。
WindowsがFUSEを標準でサポートしてればねぇ
>>552 次回のリリースで普通のハードディスクと同じように他のソフトからも
いじれるようにしたいとか書いてるから、更新待ち。
557 :
名無しさん@お腹いっぱい。 :2010/01/05(火) 15:47:19 ID:uG9wSu4C0
履歴検索ができそうでできないなw俺だけ?
履歴窓でfキーで検索できんか?
やっぱ普通に出来るのか 何故かできないんだよね.設定見直してみるわ
拡張子色づけ(できればアイコン)とかの表示関連は、まだまだ 先なのかな〜?
エクスプローラで右ドラッグ&ドロップした時に出るメニューが出せたらいいな ・・・と思ったけどその度にフォーカスがよそに行くのも面倒か
もう8年ぐらい使ってきたあふの代わりにと内骨格を試し始めた。
>>313 と
>>457 を試してみたいんだけど、消えてるみたい。
どなたか持っていませんか?
自分でやれということかもしれないけど、
カスタマイズの情報があんまり無いような。
wikiとかあって、もっと盛り上がってるのかなー、
と思ってたんだけど。
過疎ってるなーメインで使ってる人いるの
>>565 ユーザーが少ない上に、大きな更新も無いから仕方ない
俺はメインで使ってるよ
Pythonである程度好きに弄れるから重宝してる
結局、SkyDriveには対応出来ないっぽいね まぁ、GMailDriveとはまた違った構造みたいだし仕方ないのかな… もうちょっといろいろ出来るようになると使い勝手が格段に上がるんだけどねぇ ・SkyDriveの対応 ・ハードリンク、ジャンクション、シンボリックリンクの作成や削除、そして視覚的な判別(文字色を変えるとか) ・複数ファイルの上書き確認を簡略化 (一つ一つ上書き確認するのも大切だけど、例えば全部同じ処理で上書きを行うみたいなのが欲しい) ここで言ってもあまり意味ないのかな?
拡張子や特定のtagがついたflie名の色分け機能は欲しいな。 あふで使ってるmenuの移植ができれば、内骨格mainで使えると思う。 現在menuを内骨格に移そうと格闘中。listに&CDみたいなcommandとか アプリ直指定で簡単に動いてくれれば嬉しいんだけど。 地道にdefでcommand定義しまくってる。
色分けなんかは、item_CommonPaint.paint()をちょっといじればすぐ出来そうなんだが、 いかにも将来実装されそうな部分に手を入れるのは無駄になりそうであまり気乗りがしないんだよな
>>569 見てみたけど、なんか下層にあってちょっとがっくり。
プログラムあんまり分からんのですが、compile無しでは
機能拡張できないような。
Systemの構成に破綻が出来てしまうからなのかもしれないけど、
そういうのを簡単に拡張部としてadd-onしていければ、
作者も楽だしみんなも嬉しいと思うんだけど。
それともsupportの組み合わせ範囲が逆に増えるかな?
>>570 いやPythonで実装されてる部分はさすがにコンパイルは要らないよ
動的言語のプログラムコードを実行時に置き換えるのを俗にモンキーパッチと言うが、
Pythonでもそういうことができる
この場合、内骨格の実装は一切変更する必要がない
MainWindowクラスのメソッドを単純に置き換えるのは比較的容易
>>569 のケースは比較的面倒だけど、
>>428 の手法を使えば大抵のことができる
# 黒魔術だが……
参考までに
>>569 のケースのやりかたね
http://codepad.org/Y6MDMwXB これをpaint.pyという名前でextensionに保存して、
config.pyのconfigure()の中で
import paint
を実行すると、cfiler_filelist.item_CommonPaint.paint()の実装が
paint.pyのmypaint()によって置き換えられる
後は、paint.pyのgetattr_fg()あたりを弄れば、文字色を好きなように変更できるよ
572 :
571 :2010/03/03(水) 19:32:35 ID:cAuyyw/o0
ごめん paint.pyじゃなくて、painter.pyとしてください その名前をもし変えたい場合は、mypaint()の中のpainterという文字列も 同時に変更する必要があります
>>570 クラスのitem_CommonPaint.paint()メソッドを置き換えればいい
config.py内に以下を記述すると、拡張子txtが赤字で表示される
def my_paint( self, window, x, y, width, cursor, itemformat, userdata ):
# 省略
if self.name[-3:] == u'txt':
attr_fg=(255,0,0)
# 省略
item_CommonPaint.paint = my_paint
※省略した部分は、cfiler_filelist.pyのitem_CommonPaint.paint()メソッドからコピペしてくる
574 :
571 :2010/03/03(水) 19:54:08 ID:cAuyyw/o0
>>573 あら、それだけで良かったか
継承されてるからどうかな、とちょっと気にしてたw
拡張子だけ色つけるのは無理ですか?
ソース見たけど、一行単位で画面に描いてるので拡張子だけというのは無理そうだ
>>571 >>573 どうもです。レスが2つもついて結構びっくり。
時間なくてまだ試してなけど、勉強になります。
拡張子だけ色をつけるのはむりっぽい? って話ですが、
他にもいろいろ応用できそうで、ちょっと楽しみ。
window.putString( x, y, 64, 1, attr, s ) window.putString( 64, y, 4, 1, attr, s ) みたいな感じで分割して二度書きするといけそうな感じかな。。。 attrも拡張子用の奴を作って、separatorの位置からwidthも 計算。でも、window.putStringはoffset指定できなさそう。 やっぱり無理か。 何気にwindow.putStringはyもあるからfocusの扱いを拡張できれば、 file listの上下分割もできそうな。今のところ興味ないんだが。
pythonググりながら拡張子の色変更に挑戦してみたら、
>>578 で結論がでていた
>>573 を参考にmy_paintをつくって
window.putString( x + body_width って感じにx座標を調整しながら、
ファイル名、拡張子、タイムスタンプと別々に描画してみたら一応できた
body_widthはitemformat_Name_Ext_Size_YYMMDD_HHMMSSの中で使われていた変数
それぞれの描画文字列を得るために、s = itemformat(略 のところを消して、
itemformat_Name_Ext_Size_YYMMDD_HHMMSSの中身コピぺした
将来的に不安
580 :
578 :2010/04/04(日) 07:03:30 ID:UdiNrABj0
あれ? 拡張子の色分け、早々に出来ないと思ってあきらめてた。 がんばってみよう。
581 :
578 :2010/04/05(月) 06:33:07 ID:PIU6fO4a0
>>579 の方法を試してみようと思ったけど頭悪くて出来なかった。orz
けど別の方法を思いついた。
attr_ext = cterm.Attribute( fg = attr_fg, bg_gradation = attr_bg_gradation, underline = attr_underline )
if self.name[-4:] == u'.exe':
attr_ext = cterm.Attribute( fg = (255,0,0), bg_gradation = attr_bg_gradation, underline = attr_underline )
window.putString( x, y, width, 1, attr, s )
window.putString( x, y, 106, 1, attr_ext, s )
window.putString( x, y, 101, 1, attr, s )
3回上書きするんだけど、2回目はtimestamp部は上書きしない、
3回目はtimestamp部と拡張子部を上書きしないでfile名のみ描画。
なんでもっと早く思いつかなかったんだろう。orz
誰か外部からパスを変更したり、コマンドを実行するI/Fを実装してください 今のところはキーを送るくらいしか手は無い?
584 :
564 :2010/05/23(日) 08:52:48 ID:u/kTJBGU0
>>583 います。
わざわざどうもありがとうございます。
頭が悪いので一見して、何をやってるのか分かりませんでしたが、
いろいろ弄ってみます。
>>584 機能紹介も兼ねて補足です。2通りの使い方があって。
1)user_key.install(window, path_to_resource_file)
pythonスクリプトで
window.keymap[KeyEvent(ord('Q'), MODKEY_CTRL|MODKEY_ALT)] = command_ForceQuit
と書くところを、設定ファイルで以下のように定義出来ます。
ForceQuit = Ctrl+Alt Q
コマンド名は、window.command_* が捜査対象となるので、
前準備として、windowオブジェクトへ command_ PREFIX付で関数を登録しておきます。
register_command = user_keymap.set_command_decorator(window)
で生成した関数をデコレータとして使うと簡単に記述できます。記述例
>>457 2)bind_key = user_keymap.set_keyevent_decorator(window.keymap)
関数定義時に、keymapへの登録をするデコレータ 使い方の例は
>>464
>>535 解決済っぽいけど、汎用的な方法を紹介。(内骨格での動作確認はしてません。動かない場合、誰かフォローよろしく)
例:
http://pastebin.org/291303 nothing = lambda:None
def command_hook(target, name, pre=nothing, post=nothing):
method = getattr(target, name, None)
if method: setattr(target, name, lambda:(pre(),method(),post()))
for name in ('CursorUp', 'CursorDown', 'FocusLeftOrGotoParentDir', 'FocusRightOrGotoParentDir', 'JumpHistory', 'JumpList'):
command_hook(window, 'command_'+name, post=display_name_on_titlebar)
ずっと放置されているかと思っていたが、こまめに Verup されてるんだな。
よかったよかった。
1 .98 - 2010/07/11
o 起動引数に -L と -R を追加し、開く左右のファイルリストのパスを設定できるようにした。例)
cfiler.exe -L"c:/" -R"d:/dirname"
o Alt-Z で、もうひとつ内骨格を起動できるようにした。
o Ctrl - TAB が効かなくなっていたのを修正。
o configure_ImageViewer で maximize() したときにエラーになっていたのを修正。
o ZipとTar系の仮想ディレクトリからファイルをコピーしている間に、ほかのディレクトリに移動すると、ア
ーカイブファイルがクローズされてしまって、コピーに失敗してしまっていたのを修正。
o ファイルのコピーが稀に失敗してしまうのを修正 (setFileTime中のCreateFileのリトライ処理追加。
http:/ /support.microsoft.com/kb/316609/ja)
1 .97 - 2010/06/17
1 .96 - 2010/04/11
1 .95 - 2010/03/13
1 .94 - 2010/02/27
1 .93 - 2010/02/22
1 .92 - 2010/02/13
1 .91 - 2010/02/12
ちょっと質問なんですが デフォルトの状態で、ヘルプに書いてある Yでルートディレクトリへ移動というのが効かないような self.keymap[ KeyEvent( VK_OEM_5, 0 ) ] = self.command_GotoRootDir ここの事なんでしょうか? ともかくconfig.pyに window.keymap[ 'y' ] = window.command_GotoParentDir と書き加えて問題はないのですが (スクリプトとか全然なのでこんだけの事にも苦労しましたが……) どうにも腑に落ちません
デフォで定義されているのは、Yじゃなくて\(Yen) ヘルプにもそう書かれているはず (VK_OEM_5は\キー表す) 定義はその方法で問題ない RootDirじゃなくParentDirになっているけど…
ぐえあ、返答ありがとうございます Yじゃなくて\でした…… しかも/のほうキーだと思ってたという。右上のほうのこれか…… RootDirよりParentDirのほうが好きなんで、そうしました なんにしろ、python勉強しようかな、と思わせるソフトですね
アップデートしたらスキン上書きされた
メジャーアップデート来たと思ったらスキンだった
アップデートでconfig.py読み込めなくなった
白テーマかっこいいな なんかグレーの枠みたいのが適当に立体でカッコ悪いと思ってたんだけどこれだとデスクトップに常駐しててもいいかもしんない
更新履歴書いてくれよ
596 :
名無しさん@お腹いっぱい。 :2010/11/02(火) 22:25:00 ID:UbNDdsfz0
window.SubProcessCallをキューに突っ込んでバックグランド実行みたいなことってできないのかな SubProcessCallをjobitemにするとプロセスが完了しても制御が帰ってこないようなんだけど
>>597 以前試してできなかった。地道に別の内骨格立ち上げてる。
アクティブペインにあるフォルダへwindow.command_MoveInput()を使ってファイルを移動させると、 そのフォルダを後で簡単に消せなくなる。中身のファイルは消えるけどフォルダは残ってしまう。 一度内骨格を終わらせて、タスクマネジャーに残ってるcfilerも消すとそのフォルダも無くなるけど。 何でだろ。
>2.05 - 2010/12/02 > * CopyInput や MoveInput を実行したときに、入力したディレクトリの監視用スレッドが残り続けてしまっていたのを修正。 > 内骨格のプロセスがいる間、そのディレクトリが削除できなくなってしまっていた。また、その状態では、 > ウインドウを閉じても、内骨格のプロセスが残存してしまっていた。 対応ありがとうございます。
俺も大分前からそういう現象に気づいてたけど、トリガが何かわかってなかったわ
気づいた
>>599 はえらい
>>597 遅レスだけど
subProcessCall()はsubThreadCall()で処理を行うようになっていて
subThreadCall()はちょっと特殊なのでそういう使いかたは無理だな
なので、直接cfiler_subprocess.SubProcessをつかえばいい
def run_subprocess(*args, **kw):
import cfiler_subprocess
import ckit
p = cfiler_subprocess.SubProcess(*args, **kw)
window.taskEnqueue(ckit.JobItem(lambda item: p()))
例えば、上のような関数をconfigure()の中に作っておいて
run_subprocess(['tar', '-xvf', path, '-C', dst])
という具合に呼べばいい
run_subprocessが受け付ける引数は、cfiler_subprocess.SubProcessの
コンストラクタの引数と同じ
603 :
602 :2010/12/08(水) 20:12:01 ID:T1EBzDMf0
ただし、書いといて何だけど、俺としてはお薦めできないんだな cfiler_subprocess.SubProcessの中で使っているのは Python標準のsubprocessモジュールなんだけど これがCreateProcessAを呼んでいるのでUnicode非対応だというのが一つ もう一点は、cfiler_subprocess.SubProcess.__call__()の中で > self.stdout_writer( self.p.stdout.read() ) このようにしてパイプから読みこんでるんだけど、無引数read()なので、 プロセスの全部の出力をこの一文で一気に読み込むことになる つまり、終わるまで出力が一切出ないし、データ流量が多い場合はつまって 酷いことになるかもしれない (ここは作者さんに直して欲しいところ、俺は使ってないけどw) というわけで、どうしても内骨格の下のログペインに出力を出したいのでなければ、 単にckit.shellExecute()を直接呼ぶのが手軽でおすすめ(taskEnqueue()で キューイングする必要も無い) そうでなければ、ctypesで自分でCreateProcessWを叩くか
604 :
名無しさん@お腹いっぱい。 :2010/12/26(日) 21:38:39 ID:Z0w5TCsh0
最近のバージョンになってから、Craftlaunchや内骨格が起動しなくなりました。 注意書きにある、マイクロソフトのランタイムライブラリを入れてもなおりません。 同じ症状の方はいないでしょうか? OSはWin2000SP4です。 cfiler_206 clnch_324ともに起動できませんでした。
何かメッセージとかでないの?
606 :
名無しさん@お腹いっぱい。 :2010/12/27(月) 05:47:11 ID:gK0i2cpf0
See the logfile 'D:\bin\cfiler\cfiler.exe.log' for details とウィンドウが出ます。Craftlaunchも同様です。 cfiler.exe.logの中身は Traceback (most recent call last): File "cfiler_main.py", line 9, in <module> File "cfiler_mainwindow.pyo", line 17, in <module> File "pyauto\__init__.pyo", line 3, in <module> File "pyauto\pyautocore.pyo", line 12, in <module> File "pyauto\pyautocore.pyo", line 10, in __load ImportError: DLL load failed: 指定されたプロシージャが見つかりません。 です。 あと、手持ちの過去のバージョンで試したところ、内骨格はver1.98aまで。Craftlaunchはver3.14までは問題なく起動します。
作者さま テキストビューア、バイナリビューア、テキスト比較で ページ単位のスクロールが、1行多いっす。
起動時に最新バージョンチェックをしにいってるみたいなんだけれど、 これを止めるようには出来ない?
>>610 ソースを見る限りでは
cfiler.iniの
[UPDATE]
check_frequency
の値を0にすれば、チェックしなくなりそう(確認はしてない)
すみません。アンカ間違い 610 → 611
Shift Z の設定メニューからも 無効にできるぞ
616 :
名無しさん@お腹いっぱい。 :2011/03/20(日) 07:57:47.96 ID:D07CNDHm0
内骨格 ver 2.07 公開 内骨格の ver 2.07 を公開した。 2.07 - 2011/03/08 * Python27 を使うようにした。 * migemo のバージョン 1.3c を使うようにした。 * SubProcess クラスを cfiler 名前空間に export した。 * SubProcess クラスを使ったサブプロセスの実行時に、 ログのリダイレクト処理が1行ごとに行われるようにした。 * GmailDrive の対応を廃止 (ほかにDropBoxのような便利なサービスがあるため) * テキストビューア、バイナリビューア、テキスト差分ビューアのページ単位の スクロールが1行多くスクロールしてしまっていたのを修正。
2.08 - 2011/04/24 終了時の設定ファイルの保存が失敗しにくいようにした。 (保存時にタイムアウトしないようにした。テンポラリファイルを使うようにした。) ディレクトリの削除の途中で、別のタスクが割り込むことができるようにした。 デフォルト設定ファイルに定義している NetDrive コマンドで、net use に /yes を渡すようにした。
アイコンはくるのか?
619 :
名無しさん@お腹いっぱい。 :2011/06/01(水) 01:38:07.91 ID:6aVuaKFh0
comtypes使いたいと思ってとりあえずpython2.5の環境でインストールし comtypesってフォルダをコピーしてみたんだけど全然ダメだ。 どうすれば使えるんです?
comtypesは内骨格に標準で入ってるから、他所からインストールする必要はないよ import comtypes をやれば使えるはず
内骨格を使ってたらジャンプができなくなってました エスパーの方いましたら回答お願いします
2.09 - 2011/06/26 テキストビューアで、shift-jis の代わりに、内部的に cp932 を使用するようにして、 Windows用の機種依存文字が表示できるようにした。 テーマの切り替えでエラーが発生するようになってしまっていたのを修正。
2.10 - 2011/08/21 ・Ctrl-J で Search や Grep の検索結果をリストウインドウで表示するようにした。 ・Python の標準ライブラリと comtypes を同梱するようにした。 ・Window.maximize(), Window.minimize(), Window.restore() に、SetWindowPlacement() ではなく、 WM_SYSCOMMAND を使うようにした。 これにより、最大化したまま最小化したウインドウを restore() するときに、 通常サイズに戻ることなく、最大化状態で復帰するようにした。 ・パスワードつきZipファイルを扱ったときのエラー表示を整理。 ・ビルド方法の整理。C++部分は Visual C++ 2008 (Express)を使うようにした。 ・ドキュメント生成に使用している Doxygen のバージョンアップ
書庫の圧縮・展開はDLLに任せちゃえばいいのに、ってのは素人考えですか?
拡張子.jarファイル上でリターンキー押した時にもzipと同じように中に入っていくっていう設定をしたいんですが どうやればいいでしょう
アーカイブの判定はハードコードされてるので、 cfiler_mainwindow.pyのcommand_Enter()を複製してそれを書き換えるか、 hook_Enter()に同じような処理を追記すればいいと思う def hook_Enter(): pane = window.activePane() item = pane.file_list.getItem(pane.cursor) if hasattr(item,"getLink"): link_entity = item.getLink() if link_entity: item = link_entity if not item.isdir() and os.path.splitext(item.name)[1].lower() == ".jar": window.appendHistory(pane) new_lister = cfiler_filelist.lister_Zip( window, item.getFullpath(), "" ) window.jumpLister( pane, new_lister ) return True
いけた!ありがとう!
既出かもしれないけど、圧縮ファイル展開時の属性とタイムスタンプが変? 7z,rar ファイル属性もタイムスタンプも保持 zip,tgz ファイル属性もタイムスタンプも保持されない lzh ファイル属性は保持されず、タイムスタンプは保持される
このソフトすごい良いのに、なんで人気ないんだろ 非同期だしあふwとかより高機能じゃない?
3の方が主流になったらPython覚える
Pythonって全然難しくないのになぁ。 極端な話、関数または条件文の次の行は文字下げ(インデント)するってことさえ知ってれば 何とかなると思う。
インデントは嫌われる理由になっていても難しいと思われる原因にはなってないと思われ。
プログラマー気質の人がそんなにいないということだな ファイラーにあふ以上の機能が必要という一般人は 作業のありかたを見直した方が早い
>>631 細かなところまで内部を好き勝手に書き換えられるのがいいね
みんなが作ったカスタマイズに関するノウハウやスクリプトを共有できたりすると、もうちょっと流行るんじゃないかと思うけど
>>634 vimでオートインデントすんのどうやんの?
:help autoindent てかvimスレかと思ったわ。そっちもお気に入りに入ってるから。
>>631 多分キーボメインだから
普通の人はマウスメインのファイラ使ってると思う
>>631 afxの人が言ってるみたいに年取ると設定ファイルガリガリ書くのがしんどいから
もっと包括的な設定のフロントエンドがあればいいと思う(shift+zである程度は設定できるけど)。
>>636 そういうスクリプトのアーカイブがあればありがたいねぇ。
俺は、なるべくextensionフォルダにスクリプト放り込んで、config.pyでimportするようにしてるんだが、 いかんせん改造のレベルが、「元のソースから関数コピって、必要なとこだけ直す」ってのが多くて、公開するにはちと恥ずかしすぎるw
643 :
名無しさん@お腹いっぱい。 :2011/11/08(火) 14:00:12.31 ID:fRdEdt1L0
設定ファイルとかも展開した本体フォルダに格納するようにしてほしい。 デフォだと現状user/appdateにフォルダ作られるのがなぁ・・・ 設定いじればなんとかなるんかね?
>>643 本体側にあればそっちを読むって仕様じゃなかったっけ?
>>636 pythonで細かく拡張できるのがメリットな反面で、
普及に関してはnon-programmerな人達にとっての敷居になってる部分もあると思います
>カスタマイズに関するノウハウやスクリプトを共有
現状ではコード断片を各自 config.py に貼り付けなので、この点はまだまだ改善の余地あり。
拡張機能を共有する為の枠組みが整備されるといいですね。
指しあたっては、拡張機能の実装とユーザ定義コンフィグ(キー割り当て等)の分離だろうけど・・・
拡張機能の自動読み込み、叩き台だしてみよ。
http://codepad.org/BxlGzCAt ./extension内に配置した *_plugin.* モジュールを読み込んでsetup関数を呼び出します。
setup内でwindow.command_XXX = command_XXX と登録して、config.py 側でキー・アサインといった利用を想定してます。
登録するコマンド名は他と重複してしまわないように注意。
# 自動読み込みを経由しないで使いたい場合は、自分で config.py configure() 内に import して setupを呼び出す処理を書きます。
# import hello_plugin
# hello_plugin.setup(window)
プラグイン管理用のユーザ・インターフェースも欲しいところだけど、
プラグイン保管用のフォルダとextensionフォルダを内骨格の左右で開いて、
有効にするプラグインをextensionへコピーする等。手抜き^h^h^h工夫して運用でカバー。プラグインの反映は内骨格を再起動する事で対応。
(config.pyの再読み込みでは、読み込み済みプラグインの再読み込みや解除はできない。。多分。
自分の利用方法では、
適当なフォルダに pythonスクリプトやよく使うプログラムのショートカット、batファイル等をまとめて置いて、(unixの/usr/local/bin的な場所
アクティブなpaneのパスや選択したファイルのリストを渡して起動って使い方が主です。内骨格本体はあまり拡張してません。
(いろいろとロードして内骨格本体のプロセスが肥大化するのは避けたいのと、内骨格への依存を避ける為。)
内骨格内部でいろいろやるというよりは、外部アプリの起動拠点として使ってます。# ・・・なので、内骨格へフィードバックするようなことがあまりない(^^;
647 :
名無しさん@お腹いっぱい。 :2011/11/08(火) 15:35:48.29 ID:fRdEdt1L0
>>644 あ、ほんとだ。お騒がせした。
以前やったけど何度も何度もappdateにフォルダ作られて諦めてた・・・なんだったんだろう。
>>646 乙です。
自分もnon-programmerな人間なのでafxwのマクロでゴニョゴニョやるのが精一杯です。
basic位判りやすかったらなぁ。インデント見ると怯む。
648 :
646 :2011/11/08(火) 19:48:38.94 ID:/Jzyht/w0
キーボード操作がメインでPythonが拡張言語って時点で
利用者が限定されるんじゃないかなと思ってたんだけど、そうでもないのですね。
>インデント見ると怯む。
タブと混在してエラーになったり、掲示板からコピペする時に障害となったり・・・。確かに、煩わしい部分はありますね。
non-programmerな人向けのpythonスクリプト編集のノウハウなんかもだしてったほうがいいかな。
例えば、メモ帳でのconfig.py編集はあまりお勧めしません。
インデントがtab文字と空白文字が混在してしまうとエラーの原因になったりするので、
TABをスペースに展開してくれて、全角・半角空白・タブの区別が出来るエディタの利用をお勧めします。
pythonでのインデントは、TAB文字は使わず半角のスペースが基本です。
それでもメモ帳で編集する場合のTip、間違えて全角の空白をいれてしまわないように、
Sfhit + Space でスペースを打ち込むと、少しだけ安心です(MS-IME利用の場合)
もうひとつ厄介なインデントの問題ですが、
掲示板に投稿されたコードの半角スペースやタブのインデントは、
ブラウザ経由で見る場合には省略される為、単純にコピペ出来ない事があります。
インデントがタブや全角スペース ... コピペ後に修正が必要
スペースを HTMLのエスケープ文字 に置き換えて投稿。(ブラウザで見たときスペースとして表示される)
... コピペ可。但し、コードを貼り付ける場所によってはインデントの深さを調整する必要がある。
外部サイトへ乗せる。github, pastebin.com, codepad.org 等。
... ファイルとしてダウンロード可能。
スムーズな拡張機能の共有の為には、
コードの断片でなく、ファイル単位で機能を共有する枠組みが必須です。# ってことで、
>>645 を書きました。
649 :
646 :2011/11/08(火) 19:51:28.21 ID:/Jzyht/w0
user_keymap.py の最近の内骨格への対応。 # githubへはそのうち更新させます
- from cterm import cterm_const as key_constants
+ from ckit import ckit_const as key_constants
再起動も動かなくなってたので、
>>645 利用のサンプルも兼ねて書き直し。
# ./extension/reboot_plugin.py
ttp://codepad.org/sH7y093r # config.py configure() 内での設定例
# reboot_pluginを読み込まなかった場合、
# window.command_Rebootの参照でエラーになってしまうので事前にチェック。
# hasattrはpythonの組み込み関数でimport等しなくても使えます。
if hasattr(window, "command_Reboot"):
# x キーで呼び出すコマンドへ登録
window.launcher.command_list.append((u'reboot', window.command_Reboot))
# Ctrl + Alt + F5 へ割り当て
window.keymap[KeyEvent(VK_F5, MODKEY_CTRL|MODKEY_ALT)] = window.command_Reboot
650 :
646 :2011/11/09(水) 16:48:45.58 ID:Mtf4AkJn0
# user_keymap.py 更新。取り急ぎcodepadで
#
# 変更点:
# * 新しいバージョンの内骨格に対応。
# * コメント開始文字の後にスペースがない場合、コメントとして扱われなかったのを修正。
# * 行末コメントの対応。
ttp://codepad.org/mjDokeON # ./extension/dirs_plugin.py
ttp://codepad.org/cVhicbnH popd/pushd 相当の拡張機能です。
内骨格にはジャンプリスト、ヒストリ、ブックマーク等の移動手段がありますが、
わざわざ登録する程でもない一時的な作業場所に、頻繁に行ったりきたりする場合や、
一時的な作業場所が3箇所以上になる時、移動が煩わしい事があります。
この拡張機能では、短期的な作業で複数の離れた場所を頻繁に行き来するといった状況で、
より少ないキー・ストロークでの移動手段を提供します。
使い方:
DirsPush で、現在の場所を登録します。
DirsNext, DirsPrev で登録した場所を行き来できます。タブの切り替え感覚で場所移動。
DirsPop で、現在の場所が登録されている場合、それを解除します。
DirsPrint 登録した場所の一覧表示
DirsClear すべての登録を解除
登録した場所の一覧情報は、保存されません。
ソートに数字順による並び換えを追加する
# ./extension/SortByNumber_plugin.py
ttp://codepad.org/Zr69tIQC こんな感じ
1.jpg
11.jpg
2.jpg
hoge_10.txt
hoge_3.txt
↓
1.jpg
2.jpg
11.jpg
hoge_3.txt
hoge_10.txt
>>651 nice!
ソートの比較関数に関して、
Pythonはリストやタプルのデータでも比較してくれるので、
数値とそれ以外の文字のリストに分解すると、より簡潔になるよ。
ttp://codepad.org/eEXhZoJv 自分の場合は、画像の連番だったら桁数揃えてリネームしてる。
ファイル名にバージョン番号が付いてる場合だったら、
日付順ソートで目的の並びを得られる場合もあります。
## ディレクトリの中身を隣のpaneで覗き見する拡張機能です
# ./extension/peep_plugin.py
ttp://codepad.org/5v6F01eT プラグインの読み込みは
>>645 を参考に
# キーの設定
window.command_PeepDir にキーを割り当ててください
カーソル移動と併用して使えるように、左手で使えるキーへの割り当てをお勧めします。
# 使い方
ディレクトリの上で割り当てたキーを押すと、隣のPaneがその中の場所に移動します。
キーを離すと元の場所に戻ります。
※ 注意点
_onKeyUpをフックしてます。
_onKeyUpの利用が競合する人は何らかの対策が必要になるかもしれません。
>>645 のローダでは、プラグインを読む込む順序を保障できないので、その辺は今後の課題。
ジャンプリストで階層メニューを表示するサンプル
# ./extension/JumpList_plugin.py
ttp://codepad.org/J0Hx4Kxy 使い方などはスクリプト内のコメントを参考にしてください
ワンキー決定にしてるのは私の好みです
標準と同じようにエンターで決定するようにするには、onekey_decide=Trueの所をFalseにしてください
面倒臭いので上の階層には戻れませんw
ESCで閉じて最初から選び直せばいいと思うしw
ええで、ええで!
# ショートカットの作成
ttp://codepad.org/t6IU288b 手元の内骨格(version 2.10) では comtypes.shelllink が含まれていなかったので、
コメント中にあるURLよりファイルを./extension/shelllink.py に保存して下さい。
# Tips
ワン・キーで移動できる場所に、ショートカットを纏めておくと、
ディレクトリを利用して階層メニュー的な運用が出来ます。
>>657 ttp://codepad.org/LROhdKbx いろいろと弄ってみました。
内骨格本体と重複する部分を排除して、フック関数を差分のみに変更。
フックを元の関数の前・後を設定できるように・・どちらでも効果はかわりませんが、サンプルってことで。
# config.pyリロードに対応したプラグインのsetup関数について (プログラム書く人向け)
内骨格がconfig.pyリロード時にリセットしてくれない項目に関して、
例えばフック等の追加には、追加済みかどうかをどこかに覚えておく必要があります。
現状では、プラグイン・モジュールはリロードされずにsetup関数が呼ばれてる状態なので、
モジュールのグローバル変数が使えそうですが、プラグインのリロードをサポートした場合、
そのようなグローバル変数の使い方が出来なくなり、変更を強いられます。
とりあえず自分は、windowオブジェクトの属性に放り込んでいますが、
プラグインが増えてくると、この方法もあまり好ましくないので、
拡張機能の為に何らかの名前空間が欲しいところです。
※
>>653 の onKeyUp のフックは、config.pyのリロードに対応していません。
リロードする度に無駄に多くの onKeyUp 関数を呼び出すようになってしまう。=>内骨格の再起動で解消
※
>>658 は元のメソッドを呼び出さずに上書きしているので、このリロード対応の問題はありません。
>>659 訂正
文章末尾の >658 -> >657 でした
# Reload 対応
#
>>645 ./extension/plugin_manager.py
http://codepad.org/u1KCYTIk 但し、plugin_manger.py 自体はリロードされないので、
ファイルを更新後、内骨格を再起動してください。
(non-programmerな人向け)
Pythonでは通常モジュールをimportする時、
既に読み込み済みであれば、そのキャッシュを使う仕組みになってます。
このローダを使わず、独自にリロードを行いたい場合 組み込みのreload関数 を使えますが、
きちんとリロード処理しようとすると、読み込み済みかどうかの判定も必要になってきます。
ローダを使わない場合の方法では、モジュール自体はロードされずに、
setup(window)のみもう一度呼ばれることになる点を留意しておいて下さい。
----
#
>>653 ./extension/peep_plugin.py
http://codepad.org/Sp53BkXQ setupをconfig.py のリロードに対応
リロードすると、無限ループに陥ってた(汗
>>658 !!!
onenoteの運用に思うところがあって
これをリクエストしに久しぶりにこのスレきたんだよ!
ありがとうあとで試してみる
内骨格なんてあったなあと思って作者のサイトいったらpythonスクリプト対応とかで驚いた 作者の他のソフトみたらみんなPython関係だった これはもうPython勉強するしかないのか
Macで気に入るファイラーが無いからWineで動かして使ってる。 Wine上の内骨格からMacのアプリを呼び出せるしすこぶる快適。
>>664 マジで!?Macで使えんの!?
ワインなに?ワインボトラー?みくいんすとら?それともMacportsやHomebrewのワイン?
>>665 ボトラーでいけた。
msvcr90.dllが無いと起動しないので、vcredist_x86.exeのインストールは必須かも。
内骨格からMacのアプリも起動できるのだけど、WindowsのパスとMacのパスの変換は
してやらないと行けなかったので、アドホックは関数書いて対応。
でも、今日使っていたら日本語入力できないのに気がついた。
色って変えれんの? 拡張子によって色変えたい
2.18を使用してます。 mキーの挙動をカスタマイズしたいけどできない。 myCommandを定義して、 window.keymap[ 'm' ] = myCommand と書いても、mキーを押したらMakeDirが走る。 カスタマイズできてる人がいたら、どうやってるか教えてください。
書いてる場所が悪いんじゃないの configure関数の中に書かないとダメ 下の方はリストウィンドウ用の関数(configure_ListWindow)
>669 configureの中に書いてるんですけどねー。 やりたいことはファイル(やディレクトリ)を未選択の状態で m を押すと カーソルの位置のファイル(やディレクトリ)を逆のペインに移動させたいのです。 def command_Move(): if len(window.activeSelectedItems()) == 0: window.command_Select() window.command_Move() window.keymap[ 'm' ] = command_Move と書いてます。 cキーでのコピーはほぼ同じコードを書いて、未選択の状態で c を押すとちゃんとコピーしてくれる。 また、ファイルを選択した状態だと m を押すとcommand_Moveが走ってファイルの移動ができる。
window.keymap[ ckit.KeyEvent( ord('M'), 0, extra=0 ) ] = command_Move が正しいみたい extra=0が未選択状態、extra=1が選択有状態 設定メニューのキー割り当てが101もしくは106だと、この方法でmキーに二つのコマンドが割り当てられる仕組みの様子 自分は106afxにしてたから分からんかったw
>>670 ごく最近の更新でその辺の仕様が変わって、今はkeymapテーブルのキーとして文字列を
使うことになったみたい(古いやりかたもまだ一応動くけど、VK_HOMEみたいなのを
キーに使うとdeprecatedだと言われる)
cfiler_mainwindow.pyのconfigure()を見てみると雰囲気は分かる、さらに詳しくは
ckit_key.pyで文字列とWindowsの仮想キーコードのマッピングが行われている
その目的なら、キーとして'm'ではなく'M'を使えばいいはず
673 :
670 :2012/04/23(月) 19:17:24.25 ID:+KsecEZk0
>671,672 ありがとうございます。 window.keymap[ ckit.KeyEvent( ord('M'), 0, extra=0 ) ] = command_Move でいけました。 'M' はダメでした。
zipファイル内に「表」を含むファイル名があると、化けますな。 展開・仮想展開・圧縮、すべて化ける。
すでに内骨格が起動している状態で外部ツールから cfiler.exe -L"ディレクトリ" とかされたときに ディレクトリだけ移動してくれるようにはできないのかな。 二重起動させたくないんだけどやりかたありますか?
>>399 の拡張で希望な動作できました。
さきにログ読んでおくべきですね、すいません。
user_keymap.py 更新しました. KeyEvent->新しい仕様の文字を返すよう変更
このモジュールで読み込むキー表記は、新しい仕様の表記(S-X等)には対応してません
ttp://codepad.org/tVxlughC 本体側のkeymapが文字列に対応されたので,同様の機能はもっと簡単に実装できますね
今回は以前の設定を読み込んでエラー/警告が出ないようにするのみに留めておきます
>>675 7zipだと化けないみたいなので、簡単な対応方法
7zipのDLLを入手・配置した上で、.zip ファイルも 7zip を使うように設定。
# config.py configure関数内
import cfiler_filelist
cfiler_filelist.lister_Zip = cfiler_filelist.lister_Archive
681 :
675 :
2012/07/01(日) 00:17:32.60 ID:gs8hd3uN0 >>680 たった2行で修正できるということで、わけもわからずやってみましたら
ファイル名は化けなくなりました。
でもファイルの中身が正しく表示されなかったりなんだか怪しいです。
展開するとやっぱりおかしいので、内蔵のzipを扱う部分はあちこち
修正が必要みたいです。