import os
import sys
import tkinter as tk


from tklib.tkutils import print_data, pint, pfloat, index2val, pconv_by_type
from tklib.tkparams import tkParams
from tklib.tkgui.tksimple_gui import get_window_from_plt, CustomDialog_with_config

import tft


# 指定したlabelのメニュー項目のindexを取得
def find_menu_item_by_label(menu, label):
        count = menu.index("end") + 1
        for index in range(count):
            if menu.entrycget(index, "label") == label:
                return index
        return None

def toggle_menu_item(menu, label1, label2):
        index = find_menu_item_by_label(menu, label1)
        if index is not None:
            menu.entryconfig(index, label = label2)
            return label1
        else:
            index = find_menu_item_by_label(menu, label2)
            if index is not None:
                menu.entryconfig(index, label = label1)
            return label2

def menu_start_annotate(menu, label1, label2, plot_event):
        prev_label = toggle_menu_item(menu, label1, label2)
        if prev_label == label1:
            plot_event.annotation.activate(True)
        else:
            plot_event.annotation.activate(False)

def menu_start_follow_mouse(menu, label1, label2, plot_event):
        prev_label = toggle_menu_item(menu, label1, label2)
        if prev_label == label1:
            plot_event.follow_mouse.activate(True)
        else:
            plot_event.follow_mouse.activate(False)

def menu_start_move_text(menu, label1, label2, plot_event):
        prev_label = toggle_menu_item(menu, label1, label2)
        if prev_label == label1:
            plot_event.move_text.activate(True)
        else:
            plot_event.move_text.activate(False)

def select_mode(mode, vars):
        vars.selector0.set_mode(mode)
        vars.selector1.set_mode(mode)
        if mode == '':
            print(f"選択モードを off に設定しました")
        else:
            print(f"選択モードを {mode} に設定しました")


def add_popup_menu(popup_menu, app = None, vars = None, parent = None, **kwargs):
    popup_menu.add_command(label="Start annotate",  
                command = lambda: menu_start_annotate(vars.plot_event.popup_menu.menu, "Start annotate", "Stop annotate", vars.plot_event))
    popup_menu.add_command(label="Start move text",
                command = lambda: menu_start_move_text(vars.plot_event.popup_menu.menu, "Start move text", "Stop move text", vars.plot_event))
    popup_menu.add_command(label="Start follow mouse",
                command = lambda: menu_start_follow_mouse(vars.plot_event.popup_menu.menu, "Start follow mouse", "Stop follow mouse", vars.plot_event))

    submenu = tk.Menu(popup_menu, tearoff = 0)
    submenu.add_command(label = "x",    command = lambda: select_mode('x', vars))
    submenu.add_command(label = "y",    command = lambda: select_mode('y', vars))
    submenu.add_command(label = "xy",   command = lambda: select_mode('xy', vars))
    submenu.add_command(label = "stop", command = lambda: select_mode('', vars))
    popup_menu.add_cascade(label = "range select mode", menu = submenu)
