※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

WikiTitleViewer2.ahk


  • ひとりWiki で作成した EUC-JP なページファイル名を Shift_JIS に変換して一覧表示。
  • ページ(ファイル)名ダブルクリックでメニュー表示
  • サーチウインドウでページ名をインクリメンタルサーチ、ページ(ファイル)名ダブルクリックまたは [ENTER] キーでメニュー表示

文字コードの変換には nkf32.dll を、
インクリメンタルサーチには migemo.ahk を使用。

wikititle3.jpg

関連記事:@あれこれ-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


-
  
添付ファイル