JURIA @Wiki
WikiTitleViewer2.ahk
最終更新:
juria
-
view
WikiTitleViewer2.ahk
- ひとりWiki で作成した EUC-JP なページファイル名を Shift_JIS に変換して一覧表示。
- ページ(ファイル)名ダブルクリックでメニュー表示
- サーチウインドウでページ名をインクリメンタルサーチ、ページ(ファイル)名ダブルクリックまたは [ENTER] キーでメニュー表示
関連記事:@あれこれ-2009年2月
2009-02-14
- サーチウインドウでは [ENTER] キーでもメニュー表示できるようにした
2009-02-13
- サーチウインドウ表示時はメインウインドウを非表示で最小化するようにした
2009-02-12
- 第3版
; migemo.ahk の組み込み
#Include %A_ScriptDir%\migemo.ahk
; ひとりwiki のデータフォルダ
datadir = E:\HTML\PukiWiki
; ひとりWiki のパス
htwiki = path\to\htwiki.exe
; Wiki to HTML のパスとコマンドラインオプション
wiki2html = path\to\wiki2html.exe /n livedoorWiki
; Yet Another あふこまんどのパス
yaafxcmd = path\to\yaafxcmd.exe
; メインリストウインドウ
Gui, 1:Destroy
Gui, 1:Font, , Comic Sans MS
Gui, 1:Font, , M+2VM+IPAG circle ;Comic Sans MS
Gui, 1:Add, ListView, x1 y1 w360 h201 -Multi AltSubmit
vTitle gTitle, name|Creat Date|file
Gosub list
Gui, 1:Font, S8, Comic Sans MS
Gui, 1:Add, Button, w60 h24 x118 y+1 Default gSearch, &Search
Gui, 1:Add, Button, w60 h24 x+4 gClose, &Exit App
Gui, 1:Add, StatusBar, gStatusBar
SB_SetParts(40) ; ステータスバーの分割幅指定
num() ; ステータスバーにファイル総数を表示
Gui, 1:Show, x232 y205 w362 h252 Center, Wiki Title Viewer
Return
; ひとりWiki のページ(ファイル)名を Shift_JIS で一覧表示
list:
Loop, %datadir%\*.txt
{
name = %A_LoopFileFullPath%
SplitPath, name , , , , str
; ファイル名を2文字ごとに分割、頭に % を付加
sj := RegExReplace(str, ".{2}", "%$0")
; nkf32.dll をロード
hModule := DllCall("LoadLibrary", Str, "path\to\nkf32.dll")
; % に続く 16 進数を文字(shift_jis)に変換
DllCall("nkf32.dll\SetNkfOption", "Str", "-s --url-input")
DllCall("nkf32.dll\NkfConvert", "Str", sj, "Str", sj)
; 開放
DllCall("FreeLibrary", UInt, hModule)
;作成日
filetime = %A_LoopFileTimeCreated%
; FormatTime, filetime, %filetime%, ShortDat
LV_Add("" , sj, filetime, A_LoopFileName)
LV_ModifyCol(1,"Sort Auto")
LV_Modify(1,"Select Focus")
}
Return
; migemo サーチ結果表示ウインドウ
Search:
Gui, 1:Minimize
GUI, 1:Hide
Gui, 2:Destroy
Gui, 2:+ToolWindow
Gui, 2:Font, , Comic Sans MS
Gui, 2:Add, Edit, x1 y1 vEdit gMatch w297
Gui, 2:Font, , M+2VM+IPAG circle ;Comic Sans MS
Gui, 2:Add, ListView, x1 y27 w360 h201 -Multi AltSubmit
vResult gResult, name|file
Gui, 2:Font, , Comic Sans MS
Gui, 2:Add, Button, w60 h23 x+2 y2 gSearchCancel, &Cancel
; デフォルトボタン非表示で Enter に動作割り当て
Gui, 2:Add, Button, Hidden Default gButtonMenu, menu
Gui, 2:Add, StatusBar, gStatusBar2
Gui,2:Default
SB_SetParts(40) ; ステータスバーの分割幅指定
MigemoOpen(A_ScriptDir "\dict\migemo-dict")
Gui, 2:Show, x232 y205 w362 h252 Center, Wiki Title Search
Return
; migemo インクリメンタルサーチ
Match:
GuiControlGet, Ed,, Edit
len := StrLen(Ed)
MigemoSet(Ed)
Gui,1:Default
count := LV_GetCount()
Gui,2:Default
LV_Delete()
GUIControl, -Redraw, Result
Loop, %count%
{
Gui,1:Default
LV_GetText(str, A_Index, 1)
LV_GetText(p, A_Index, 3)
name =%str%
Loop, Parse , str, `n`r
{
if(len > 0)
{
ifInString, A_LoopField, %Ed%
{
Gui,2:Default
LV_Add("" , str, p)
num()
}
else if(MigemoMatch(A_LoopField) && len > 1)
{
Gui,2:Default
LV_Add("" , str, p)
num()
}
}
if(len = 0)
GUIControl, +Redraw, Result
}
}
Gui,2:Default
LV_ModifyCol(1,"Sort AutoHdr")
LV_Modify(1,"Select Focus")
GUIControl, +Redraw, Result
Return
; 項目ダブルクリック
Title:
i := 1
Gosub, event
Return
Result:
i := 2
Gosub, event
Return
event:
if A_GuiEvent = DoubleClick
{
Gui,%i%:Default
LV_GetText(line, A_EventInfo, 1)
if (i = 1){
LV_GetText(filepath, A_EventInfo, 3)
}
else{
LV_GetText(filepath, A_EventInfo, 2)
}
SB_SetText(filepath, 2)
menu()
}
; ファイル操作メニュー
menu()
{
global
Menu, context, Add, エディタで開く(&E), editor
Menu, context, Add, ひとりWikiで開く(&W), htwiki
Menu, context, Add, あふで開く, afx(&A)
Menu, context, Add, HTML を出力(&H), wiki2html
Menu, context, Show
Menu, context, DeleteAll
Return
editor:
Run, %datadir%\%filepath%
ExitApp
htwiki:
Run, %htwiki% %datadir%\%filepath%
ExitApp
afx:
Run, %yaafxcmd% -p %datadir%\%filepath%
ExitApp
wiki2html:
StringSplit, filename, filepath, .
Run, %comspec% /c %wiki2html% %datadir%\%filepath%
> "%datadir%\%line%.html",,HIDE
ExitApp
}
Return
; サーチウインドウの[ENTER]に割り当て
ButtonMenu:
Selected := LV_GetNext(0, "F")
LV_GetText(line, Selected, 1)
LV_GetText(filepath, Selected, 2)
SB_SetText(filepath, 2)
menu()
Return
; ステータスバーにファイル総数を表示
num()
{
global
num := LV_GetCount()
SB_SetText(A_Space num, 1)
}
StatusBar:
StatusBar2:
Return
SearchCancel:
2GuiEscape:
2GuiClose:
Gui, 2:Destroy
Gui, 1:Restore
Return
Close:
GuiEscape:
GuiClose:
MigemoClose()
ExitApp
-
添付ファイル
