import dearpygui.dearpygui as dpg

from utils import *
from callbacks import *
from map_edit import mouse_down_callback, mouse_release_callback, mouse_click_callback

def on_ctrl_o(sender, app_data):
    if dpg.is_key_down(dpg.mvKey_Control) and dpg.is_key_down(dpg.mvKey_O):
        dpg.show_item('config_open')

def on_ctrl_f(sender, app_data):
    if dpg.is_key_down(dpg.mvKey_Control) and dpg.is_key_down(dpg.mvKey_F):
        dpg.show_item('search_popup')

def on_ctrl_s(sender, app_data):
    if dpg.is_key_down(dpg.mvKey_Control) and dpg.is_key_down(dpg.mvKey_Shift) and dpg.is_key_down(dpg.mvKey_S):
        dpg.show_item('config_save_as')
    elif dpg.is_key_down(dpg.mvKey_Control) and dpg.is_key_down(dpg.mvKey_S):
        config_save_clb()

def change_height_():
    dpg.set_item_pos('status_text', (dpg.get_item_width('main') - dpg.get_text_size(dpg.get_value('status_text'))[0] - 2 * SPACE, dpg.get_item_pos('status_text')[1]))

    if get_config_file_path():
        change_height(get_config_file_path())

def setup_handlers():
    with dpg.handler_registry():
        dpg.add_key_press_handler(key=dpg.mvKey_O, callback=on_ctrl_o)
        dpg.add_key_press_handler(key=dpg.mvKey_F, callback=on_ctrl_f)
        dpg.add_key_press_handler(key=dpg.mvKey_S, callback=on_ctrl_s)

    with dpg.item_handler_registry(tag='main_handler'):
        dpg.add_item_resize_handler(callback=change_height_)

    dpg.bind_item_handler_registry('main', 'main_handler')
    dpg.set_viewport_resize_callback(change_height_)

    with dpg.handler_registry():
        dpg.add_mouse_down_handler(callback=mouse_down_callback)
        dpg.add_mouse_release_handler(callback=mouse_release_callback)
        dpg.add_mouse_click_handler(button=1, callback=mouse_click_callback)