Пример #1
0
    def __init__(self, parent, instructions, *args, **kwargs):
        tk.Toplevel.__init__(self, parent.root, *args, **kwargs)
        self.geometry(fm.geometry)
        self.parent = parent
        self.current_sel = 0

        text_frame = tk.Frame(self)

        self.listbox = tk.Listbox(text_frame, width=20)
        self.instructions = instructions

        for k in self.instructions.keys():
            self.listbox.insert(tk.END, k)

        self.listbox.pack(side=tk.LEFT, fill=tk.Y)
        self.listbox.bind('<<ListboxSelect>>', self.on_lb_select)
        self.listbox.selection_set(0, 0)

        self.text = FancyText(text_frame, height=150, wrap=tk.WORD, edit=True)
        self.text.bind('<KeyRelease>', self.on_text_modify)

        vsb = tk.Scrollbar(self)
        vsb.pack(side=tk.RIGHT, fill=tk.Y)
        vsb.config(command=self.text.yview)
        self.text.pack(expand=tk.YES,
                       fill=tk.X,
                       side=tk.LEFT,
                       padx=vsb.winfo_width())
        self.text.insert(1.0, self.instructions.get(0))
        self.text.config(yscrollcommand=vsb.set)

        text_frame.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH)
Пример #2
0
    def __init__(self, parent, wrap=tk.WORD, *args, **kwargs):
        tk.Toplevel.__init__(self, parent.root, *args, **kwargs)
        self.parent = parent
        self.title('Manually Enter a Text')

        top_frame = tk.Frame(self)

        self.text = FancyText(top_frame,
                              wrap=wrap,
                              padx=10,
                              pady=5,
                              background=fm.white,
                              font=fm.status_font,
                              edit=True)
        self.text.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH)

        self.vsb = tk.Scrollbar(top_frame)
        self.vsb.pack(side=tk.RIGHT, fill=tk.Y)
        self.vsb.config(command=self.text.yview)
        self.text.config(yscrollcommand=self.vsb.set)

        top_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH)

        save_btn = FancyButton(self, text='Save', command=self.save)
        save_btn.pack(side=tk.RIGHT)
Пример #3
0
    def __init__(self,
                 parent,
                 view=None,
                 font=fm.text_font,
                 title='',
                 wrap=tk.WORD,
                 *args,
                 **kwargs):
        tk.Toplevel.__init__(self, parent.root, *args, **kwargs)
        self.parent = parent
        self.title(title)
        # self.results = None
        self.results = []
        self.complete = True
        self.order = [True, False, True, True, False]
        self.rows_n = 0

        if view is not None:
            inst = self.parent.instructions.get(view)

            instructions_frame = tk.Frame(self)
            self.instructions_lbl = tk.Label(instructions_frame,
                                             text=inst,
                                             justify=tk.LEFT)

            self.instructions_lbl.bind("<Configure>", self.set_label_wrap)
            self.instructions_lbl.pack(side=tk.LEFT, expand=tk.YES, fill=tk.X)
            instructions_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.X)

        top_frame = tk.Frame(self)

        self.text = FancyText(top_frame,
                              gui_obj=self.parent,
                              wrap=wrap,
                              padx=10,
                              pady=5,
                              font=font)
        self.text.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH)

        self.text.tag_config('text_bg', background=fm.text_bg)
        self.text.tag_config('white', background=fm.white)
        self.text.tag_config('heading', font=fm.bold_ms_font)
        # give priority to formatting of selected text over that of tags
        self.text.tag_raise('sel')

        self.text.tag_bind('heading', '<Button-1>', self.heading_click)

        self.vsb = tk.Scrollbar(top_frame)
        self.vsb.pack(side=tk.RIGHT, fill=tk.Y)
        self.vsb.config(command=self.text.yview)
        self.text.config(yscrollcommand=self.vsb.set)

        top_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH)
Пример #4
0
    def __init__(self, parent, query, corpus, id, save, tokens_left, instructions=None, *args, **kwargs):
        tk.Toplevel.__init__(self, parent.root, *args, **kwargs)
        self.query = query
        self.parent = parent
        self.corpus = corpus
        self.id = id
        self.title('Results for ' + query)
        self.tokens_left = tokens_left
        self.geometry('1200x550')
        self.center_inds = []
        self.text_locs = []

        self.bind('<Double-Button-1>', self.db_click)

        inst = self.parent.instructions.get('Concordance Window')

        if inst:

            instructions_frame = tk.Frame(self)
            self.instructions_lbl = tk.Label(instructions_frame,
                                         text=inst,
                                         justify=tk.LEFT)

            self.instructions_lbl.bind("<Configure>", self.set_label_wrap)
            self.instructions_lbl.pack(side=tk.LEFT, expand=tk.YES, fill=tk.X)
            instructions_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.X)


        conc_frame = tk.Frame(self)

        self.text = FancyText(conc_frame, gui_obj=self.parent, wrap='none', font=fm.ms_font)
        self.text.pack(side=tk.LEFT, expand=tk.YES, fill=tk.BOTH)

        vsb = tk.Scrollbar(conc_frame)
        vsb.pack(side=tk.RIGHT, fill=tk.Y)
        vsb.config(command=self.text.yview)
        self.text.config(yscrollcommand=vsb.set)

        conc_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH)

        hsb = tk.Scrollbar(self, orient='horizontal')
        hsb.pack(fill=tk.X, side=tk.BOTTOM)
        hsb.config(command=self.text.xview)
        self.text.config(xscrollcommand=hsb.set)

        menu_bar = tk.Menu(self)
        file_menu = tk.Menu(menu_bar, tearoff=0)
        file_menu.add_command(label="Save", command=lambda: save(self.text.get(1.0, tk.END), self.max_center_len, self.tokens_left))
        menu_bar.add_cascade(label="File", menu=file_menu)
        self.config(menu=menu_bar)
Пример #5
0
    def __init__(self):
        self.queue = Queue()
        self.root = tk.Tk()
        self.corpus = Corpus(self.queue)
        self.instructions = Instructions()

        self.chat_settings = {
            'server':
            'chat.freenode.net',
            'channel':
            '#' + ''.join(
                choice(string.ascii_uppercase + string.ascii_lowercase +
                       string.digits) for _ in range(16)),
            'port':
            6667,
        }
        self.chat_scroll_lock = True
        self.chat = None
        self.chat_log = None

        # Menu bar
        menu_bar = tk.Menu(self.root)

        # File menu on menu bar
        file_menu = tk.Menu(menu_bar, tearoff=0)
        file_menu.add_command(label='Save Package', command=self.save_package)
        file_menu.add_command(label='Load package', command=self.load_package)

        file_menu.add_separator()

        file_menu.add_command(label="Load text file(s)",
                              command=self.load_files)
        file_menu.add_command(label="Manually enter text",
                              command=self.open_manually_enter_window)

        file_menu.add_separator()

        file_menu.add_command(label="Reset", command=self.reset)

        file_menu.add_separator()

        file_menu.add_command(label="Exit", command=self.root.quit)
        menu_bar.add_cascade(label="File", menu=file_menu)

        # Tools menu
        tools_menu = tk.Menu(menu_bar, tearoff=0)
        tools_menu.add_command(label='List', command=self.word_list_options)
        menu_bar.add_cascade(label='Tools', menu=tools_menu)

        options_menu = tk.Menu(menu_bar, tearoff=0)
        options_menu.add_command(label='Add/Edit Instructions',
                                 command=self.open_instructions_window)
        options_menu.add_command(label='Chat Settings',
                                 command=self.open_chat_settings)
        menu_bar.add_cascade(label='Options', menu=options_menu)

        self.root.config(menu=menu_bar)

        top_frame = tk.Frame(self.root)

        # File list

        file_list_frame = tk.Frame(top_frame)
        tk.Label(file_list_frame, text='File Manager').pack(side=tk.TOP,
                                                            pady=4)

        fl_btn_frame = tk.Frame(file_list_frame)
        remove_text_btn = FancyButton(fl_btn_frame,
                                      text='Remove',
                                      command=self.remove)
        remove_text_btn.pack(expand=tk.YES, side=tk.LEFT, fill=tk.X)
        load_text_btn = FancyButton(fl_btn_frame,
                                    text='Load',
                                    command=self.load_files)
        load_text_btn.pack(expand=tk.YES, side=tk.LEFT, fill=tk.X)
        fl_btn_frame.pack(expand=tk.NO, fill=tk.X)

        lb_frame = tk.Frame(file_list_frame)

        self.file_list = FancyListbox(lb_frame,
                                      width=35,
                                      selectmode=tk.EXTENDED,
                                      remove=self.remove,
                                      open_text=self.open_text)
        self.file_list.pack(expand=tk.YES, fill=tk.Y, side=tk.LEFT)

        fl_vsb = tk.Scrollbar(lb_frame, orient=tk.VERTICAL)
        fl_vsb.config(command=self.file_list.yview)
        fl_vsb.pack(side=tk.RIGHT, fill=tk.Y)
        self.file_list.config(yscrollcommand=fl_vsb.set)

        lb_frame.pack(expand=tk.YES, fill=tk.Y)

        fl_hsb = tk.Scrollbar(file_list_frame, orient=tk.HORIZONTAL)
        fl_hsb.config(command=self.file_list.xview)
        fl_hsb.pack(side=tk.TOP, fill=tk.X, expand=tk.NO)
        self.file_list.config(xscrollcommand=fl_hsb.set)

        file_list_frame.pack(side=tk.LEFT, expand=tk.NO, fill=tk.Y)

        middle_frame = tk.Frame(top_frame)

        # search bar
        search_frame = tk.Frame(middle_frame)

        self.conc_left_entry = FancyEntry(search_frame,
                                          width=2,
                                          justify=tk.CENTER)
        self.conc_left_entry.insert(0, self.default_conc_length)
        self.conc_left_entry.pack(side=tk.LEFT)
        self.conc_right_entry = FancyEntry(search_frame,
                                           width=2,
                                           justify=tk.CENTER)
        self.conc_right_entry.insert(0, self.default_conc_length)
        self.conc_right_entry.pack(side=tk.LEFT)

        self.search_var = tk.StringVar()
        self.search_entry = FancyEntry(search_frame,
                                       textvariable=self.search_var)
        self.search_entry.pack(expand=tk.YES, side=tk.LEFT, fill=tk.X)
        self.search_entry.bind('<Return>', self.search_kp)

        search_button = FancyButton(search_frame,
                                    text='Search',
                                    padx=15,
                                    command=self.search)
        search_button.pack(side=tk.RIGHT, fill=tk.Y)
        search_button.pack()

        search_frame.pack(expand=tk.NO, side=tk.TOP, fill=tk.X)

        # Big text box in the middle
        status_frame = tk.Frame(middle_frame)

        self.status_text = FancyText(status_frame,
                                     gui_obj=self,
                                     width=55,
                                     wrap=tk.WORD,
                                     background=fm.white,
                                     font=fm.instructions_font,
                                     state=tk.DISABLED)
        self.status_text.d_insert(1.0, self.instructions.get('Main Window'))
        self.status_text.pack(expand=tk.YES, side=tk.LEFT, fill=tk.Y)
        status_frame.pack(expand=tk.YES, fill=tk.Y)

        # vertical scroll bar
        vsb = tk.Scrollbar(status_frame)
        vsb.pack(side=tk.LEFT, fill=tk.Y)
        vsb.config(command=self.status_text.yview)
        self.status_text.config(yscrollcommand=vsb.set)

        middle_frame.pack(side=tk.LEFT, fill=tk.Y)

        right_frame = tk.Frame(top_frame)

        chat_box_frame = tk.Frame(right_frame)

        self.names_text = FancyText(chat_box_frame,
                                    width=30,
                                    height=3,
                                    wrap=tk.WORD,
                                    background='SystemButtonFace',
                                    font=fm.chat_font,
                                    state=tk.DISABLED)
        self.names_text.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH)
        self.names_text.tag_config('other',
                                   font=fm.chat_user_font,
                                   foreground=fm.chat_other_fg)

        self.chat_text = FancyText(chat_box_frame,
                                   gui_obj=self,
                                   width=30,
                                   wrap=tk.WORD,
                                   background=fm.white,
                                   font=fm.chat_font,
                                   state=tk.DISABLED)
        self.chat_text.pack(expand=tk.YES, side=tk.LEFT, fill=tk.BOTH)

        self.chat_vsb = tk.Scrollbar(chat_box_frame)
        self.chat_vsb.pack(side=tk.RIGHT, fill=tk.Y)
        self.chat_vsb.config(command=self.chat_scroll)
        self.chat_text.config(yscrollcommand=self.chat_vsb.set)

        self.chat_text.tag_config('user',
                                  font=fm.chat_user_font,
                                  foreground=fm.chat_me_fg)
        self.chat_text.tag_config('other',
                                  font=fm.chat_user_font,
                                  foreground=fm.chat_other_fg)

        self.chat_text.d_insert(
            1.0,
            'Enter your name below and press Return to connect to the chat.\n')

        chat_box_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH)

        self.chat_input = FancyText(right_frame,
                                    gui_obj=self,
                                    width=30,
                                    height=3,
                                    wrap=tk.WORD,
                                    background=fm.white,
                                    font=fm.chat_font,
                                    placeholder='Enter Name',
                                    edit=True)
        self.chat_input.pack(expand=tk.YES, fill=tk.BOTH, side=tk.LEFT)
        self.chat_input.bind('<KeyRelease-Return>', self.chat_send_kp)

        right_frame.pack(side=tk.RIGHT, expand=tk.YES, fill=tk.BOTH)

        top_frame.pack(side=tk.TOP, expand=tk.YES, fill=tk.BOTH)

        self.status_entry = FancyEntry(self.root,
                                       background='SystemButtonFace',
                                       font=fm.status_font)
        self.status_entry.pack(side=tk.TOP, expand=tk.NO, fill=tk.X)

        tk.mainloop()