# -*- coding: utf-8 -*-
import wx

class menu(wx.Menu):
    def __init__(self, window, pattern, mode):
        super(menu, self).__init__()
        self.window = window
        self.pattern = pattern
        self.mode = mode

    def append_options(self, options):
        for i in options:
            item = wx.MenuItem(self, wx.ID_ANY, "%s (@%s)" % (i[1], i[0]))
            self.Append(item)
            self.Bind(wx.EVT_MENU, lambda evt, temp=i[0]: self.select_text(evt, temp), item)

    def select_text(self, ev, text):
        if self.mode == "mastodon":
            self.window.ChangeValue(self.window.GetValue().replace("@"+self.pattern, "@"+text+" "))
        elif self.mode == "free":
            self.window.SetValue(self.window.GetValue().replace(self.pattern, text))
        self.window.SetInsertionPointEnd()

    def destroy(self):
        self.Destroy()
