import tkinter as tk
import tkinter.filedialog as tkfd
import os
from tkinter.scrolledtext import ScrolledText
from tf_idf import tf_idf

table = tf_idf()

main_window = tk.Tk()
main_window.title("TD-IDF")
main_window.geometry("1250x620")


def open_filedialog():
    global folder
    folder = tkfd.askdirectory(initialdir=os.path.dirname(__file__) + '/..', )
    entry_dir_name.delete(0, tk.END)
    entry_dir_name.insert(0, folder)
    print(folder)
    return 0


def execute():
    table = tf_idf()
    text_output.delete('1.0', tk.END)
    folder_name = folder
    num_of_files = len([name for name in os.listdir(folder) if os.path.isfile(os.path.join(folder, name))]) + 1
    for x in range(1, num_of_files):
        file_name = folder_name + '/' + str(x).zfill(2) + '.txt'
        table.add_file(file_name)
    top_k = entry_top_k.get()
    top_k = int(top_k)
    for x in range(1, num_of_files):
        target_file = folder_name + '/' + str(x).zfill(2) + '.txt'
        var = 'Top ' + str(top_k) + ' of tf-idf in ' + os.path.basename(target_file) + ' : \n'
        text_output.insert('end', var)
        var = table.get_tf_idf(target_file, top_k)
        text_output.insert('end', var)
        var = '\n\n'
        text_output.insert('end', var)
    keyword = entry_keyword.get()
    var = 'tf-idf of key word "' + keyword + ' : \n'
    text_output.insert('end', var)
    var = table.similarities([keyword])
    for x in var:
        x[0] = os.path.basename(x[0])
    text_output.insert('end', var)
    return 0


if __name__ == "__main__":
    label_dir_name = tk.Label(main_window,
                              text='TXT Folder name:',
                              font=('Microsoft YaHei', 12),
                              width=15,
                              height=1,
                              ).grid(row=0, column=0)
    entry_dir_name = tk.Entry(main_window, width=100)
    entry_dir_name.grid(row=0, column=1)

    label_keyword = tk.Label(main_window,
                             text='Searching Keyword:',
                             font=('Microsoft YaHei', 12),
                             width=15,
                             height=1,
                             ).grid(row=2, column=0)
    entry_keyword = tk.Entry(main_window, width=100)
    entry_keyword.insert(0, '任我行')
    entry_keyword.grid(row=2, column=1)

    label_top_k = tk.Label(main_window,
                           text='Top K:',
                           font=('Microsoft YaHei', 12),
                           width=15,
                           height=1,
                           ).grid(row=3, column=0)
    entry_top_k = tk.Entry(main_window, width=100)
    entry_top_k.insert(0, '20')
    entry_top_k.grid(row=3, column=1)

    button_execute = tk.Button(main_window, text="Execute", width=15, height=1, command=execute).grid(row=3, column=2)
    button_file = tk.Button(main_window, text="Browse", width=15, height=1, command=open_filedialog).grid(row=0,
                                                                                                          column=2)

    text_output = ScrolledText(main_window, width=135, height=25, undo=True, font=('Microsoft YaHei', 12))
    text_output.grid(row=4, column=0, columnspan=4)
    text_output.tag_add("start", "1.8", "1.13")
    text_output.tag_config("start", background="black", foreground="white")

    main_window.mainloop()