import sys
import os
import datetime
import subprocess
import re
import time
import urllib.parse
# import accessibility

import ckit
from ckit.ckit_const import *

from keyhac import *



def configure(keymap):

    # --------------------------------------------------------------------
    # Text editer setting for editting config.py file

    # Setting with program file path (Simple usage)
    if 1:
        #keymap.editor = "TextEdit"
        keymap.editor = "/Applications/Sublime Text.app"

    # Setting with callable object (Advanced usage)
    if 0:
        def editor(path):
            subprocess.call([ "open", "-a", "/Applications/Sublime Text.app", path ])
        keymap.editor = editor

    # --------------------------------------------------------------------
    # Customizing the display

    # Font
    keymap.setFont( "Osaka-Mono", 16 )
    # Theme
    keymap.setTheme("black")
# --------------------------------------------------------------------
    # クリップボード履歴の最大数 (デフォルト:1000)
    keymap.clipboard_history.maxnum = 0
    
    # --------------------------------------------------------------------
    # if 1:
    #     keymap_textedit = keymap.defineWindowKeymap( app_name="com.google.Chrome" )
    #     keymap_textedit[ "LCmd-O" ] = "A"                   # 戻る
    #     keymap_textedit[ "LCmd-A" ] = "B" # 新しいタブを開く

    if 1:
        keymap_textedit = keymap.defineWindowKeymap( app_name="com.apple.TextEdit" )

        keymap_textedit[ "LCmd-O" ] = "A"                   # 置換
        keymap_textedit[ "LCmd-A" ] = "B" # 行選択


    # 常に有効になるキーリマップ
    keymap_global = keymap.defineWindowKeymap()


    keymap.replaceKey("LCtrl", 236)      # LCtrlを 236 とする
    keymap.defineModifier(236, "User1") # 変換を U1 修飾キーとして使う

    keymap_global["F7"] = "LAlt-LCmd-9" #TabToggle1

    keymap_global["LUser1-A"] = "Cmd-N" #FileCreate
    keymap_global["LUser1-B"] = "Cmd-B" #build
    keymap_global["LUser1-G"] = "Cmd-W" #FileClose
    keymap_global["LUser1-H"] = "Ctrl-Shift-W" #TagCreate
    keymap_global["LUser1-I"] = "RCmd-RAlt-I" #focus_neighboring_group    
    keymap_global["LUser1-J"] = "RCmd-Shift-J" #RowLineSelect    
    keymap_global["LUser1-L"] = "LShift-RCtrl-Tab" #TabToggle2
    keymap_global["LUser1-O"] = "RCmd-RAlt-0" #SameWordExpand
    keymap_global["LUser1-t"] = "Cmd-F" #Search
    keymap_global["LUser1-P"] = "RAlt-3" #右画面へ

    keymap_global["LUser1-Semicolon"] = "LCtrl-Tab" #TabToggle1
    keymap_global["LUser1-Period"] = "LCtrl-LCmd-F" #MaxWindow
    keymap_global["LUser1-Slash"] = "LCtrl-Shift-I" #SelectAllSameWord2(vscode)


    keymap_global["LUser1-Z"] = "0" #0
    keymap_global["LUser1-X"] = "1" #1
    keymap_global["LUser1-C"] = "2" #2       
    keymap_global["LUser1-V"] = "3" #3`
    keymap_global["LUser1-S"] = "4" #4
    keymap_global["LUser1-D"] = "5" #5       
    keymap_global["LUser1-F"] = "6" #6
    keymap_global["LUser1-W"] = "7" #7
    keymap_global["LUser1-E"] = "8" #8 
    keymap_global["LUser1-R"] = "9" #9       
 

    keymap_global["LCmd-A"] = "Ctrl-A" #RowHead
    keymap_global["LCmd-B"] = "PageDown" #PageDown    
    keymap_global["LCmd-C"] = "RAlt-Q" #Dedktop exist    
    keymap_global["LCmd-D"] = "Cmd-A" #AllSelect    
    keymap_global["LCmd-E"] = "LShift-LCtrl-right" #ExpandWord    
    keymap_global["LCmd-F"] ="Tab" #Tab
    keymap_global["LCmd-G"] = "Escape" #
    keymap_global["LCmd-H"] = "RCtrl-Shift-H" #1画面へ        
    keymap_global["LCmd-M"] = "Cmd-Down" #End
    keymap_global["LCmd-N"] = "Cmd-Up" #Home
    keymap_global["LCmd-O"] = "RCtrl-Shift-O" #2画面へ    
    keymap_global["LCmd-P"] = "RCtrl-Shift-P" #focus_side_bar    
#    keymap_global["LCmd-R"] = "Cmd-9" #
    keymap_global["LCmd-Q"] = "RAlt-2" #左画面へ    
    keymap_global["LCmd-S"] = "Cmd-X" #切り取り    
    keymap_global["LCmd-T"] = "RCtrl-Shift-T" #toggle_side_bar    
    keymap_global["LCmd-U"] = "Cmd-Z" #Undo        
    keymap_global["LCmd-V"] = "Cmd-Q" #AppClose    
    keymap_global["LCmd-W"] = "LShift-Ctrl-E" #ExpandRowEnd    
    keymap_global["LCmd-Z"] = "RCmd-Enter" #MRowCursolNewline

    keymap_global["LCmd-Comma"] = "Cmd-LShift-Tab" #AppSelect Next
    keymap_global["LCmd-Period"] = "Cmd-Tab" #AppSelect Toggle Latest
    keymap_global["LCmd-Enter"] ="RCtrl-Enter" #コメント
    keymap_global["LCmd-Semicolon"] = "Ctrl-E" #RowEnd
    keymap_global["LCmd-Slash"] = "PageUp" #PageUp
    keymap_global["LCmd-Quote"] = "Cmd-H" #HideFrontmostAppWindow


    #KeyReplace
    keymap_global["LCmd-Space"] = "Back" #Back
    keymap_global["LUser1-Space"] = "Delete" #Delete
    keymap_global["LCmd-D-(236)"] = "LShift-Plus" #Plus

    keymap_global["D-LUser1-LCmd"] = "LShift-8" #asutarisk
 
    keymap_global["LCmd-RAlt"] = "Plus" #equal
    keymap_global["LAlt-D-(236)"] = "Minus" #Minus
    keymap_global["LAlt-RAlt"] = "RShift-5" #parsent
    keymap_global["LUser1-LAlt"] = "BackSlash" #BackSlash

#    keymap_global["RAlt-Space"] = "RShift-4" #Dollar
    keymap_global["LAlt-Space"] = "Return" #Enter/Return


    #IME切り替え
    keymap_global["LCmd"] = "Ctrl-Shift-Semicolon" #直接入力へ
    keymap_global["O-(236)"] ="LCtrl-Shift-J" #ひらがな入力

    keymap_global["O-LAlt"] = "Cmd-C" #コピー
    keymap_global["RAlt"] = "Cmd-V" #貼り付け

    keymap_global["LAlt-O"] = "Cmd-S" #上書き保存

    keymap_global["LAlt-Q"] = "LShift-LAlt-Q" #Set Mark
    keymap_global["LAlt-Z"] = "LShift-LAlt-Z" #Current Row to Set Mark Row Selection

    keymap_global["LAlt-T"] = "LCtrl-LShift-8" #Terminal Focus (vscode)
    keymap_global["LAlt-V"] = "LCtrl-LShift-P" #Terminal Clear (vscode)
    keymap_global["LUser1-Comma"] = "LCtrl-LAlt-O" #Terminal Panel Max Toggle (vscode)

# USER0-Ctrl-↑↓←→ : 画面の端まで移動
    keymap_global["LCmd-1"] = keymap.MoveWindowToMonitorEdgeCommand(0) #左端移動
    keymap_global["LCmd-2"] = keymap.MoveWindowToMonitorEdgeCommand(2) #右端移動
    keymap_global["LCmd-3"] = keymap.MoveWindowToMonitorEdgeCommand(1) #上端移動
    keymap_global["LCmd-4"] = keymap.MoveWindowToMonitorEdgeCommand(3) #下端移動

# 指定ウィンドウをアクティブウィンドウに。
    keymap_global[ "LCmd-X" ] = keymap.ActivateApplicationCommand( "com.apple.Terminal" )
    keymap_global[ "LAlt-J" ] = keymap.ActivateApplicationCommand( "com.google.Chrome" )    
    keymap_global[ "LAlt-K" ] = keymap.ActivateApplicationCommand( "com.sublimetext.3" )
    keymap_global[ "LAlt-Semicolon" ] = keymap.ActivateApplicationCommand( "com.apple.finder" )


    keymap_global["F2"] = keymap.SubProcessCallCommand([ "python", "/Users/user/Dropbox/Python/OpenFileKeyhac_config.py" ]) #keyhac config.pyを開く

    keymap_global["F3"] = keymap.SubProcessCallCommand([ "python", "/Users/user/Dropbox/Python/Script/PythonFileCreate.py" ])


    # Fn-S : サブスレッド処理のテスト
    if 1:
        def command_JobTest():

            # サブスレッドで呼ばれる処理¬
            def jobTest(job_item):
                subprocess.call([ "open", "-a", "mi" ])

            # サブスレッド処理が完了した後にメインスレッドで呼ばれる処理
            def jobTestFinished(job_item):
                print( "完了." )

            job_item = JobItem( jobTest, jobTestFinished )
            JobQueue.defaultQueue().enqueue(job_item)

        keymap_global[ "LCmd-R" ] = command_JobTest   