diff --git a/src/controller/messages.py b/src/controller/messages.py index a562a707..39925be5 100644 --- a/src/controller/messages.py +++ b/src/controller/messages.py @@ -141,6 +141,11 @@ class reply(tweet): class dm(basicTweet): def __init__(self, session, title, caption, text): super(dm, self).__init__(session, title, caption, text, messageType="dm") + widgetUtils.connect_event(self.message.autocompletionButton, widgetUtils.BUTTON_PRESSED, self.autocomplete_users) + + def autocomplete_users(self, *args, **kwargs): + c = autocompletionUsers.completion.autocompletionUsers(self.message, self.session.session_id) + c.show_menu("dm") class viewTweet(basicTweet): def __init__(self, tweet, is_tweet=True): diff --git a/src/extra/autocompletionUsers/completion.py b/src/extra/autocompletionUsers/completion.py index 13a4326d..f9c9a516 100644 --- a/src/extra/autocompletionUsers/completion.py +++ b/src/extra/autocompletionUsers/completion.py @@ -9,23 +9,39 @@ class autocompletionUsers(object): self.window = window self.db = storage.storage(session_id) - def show_menu(self): + def show_menu(self, mode="tweet"): position = self.window.get_position() - text = self.window.get_text() - text = text[:position] - try: - pattern = text.split()[-1] - except IndexError: - output.speak(_(u"You have to start writing")) - return - if pattern.startswith("@") == True: - menu = wx_menu.menu(self.window.text, pattern[1:]) - users = self.db.get_users(pattern[1:]) + if mode == "tweet": + text = self.window.get_text() + text = text[:position] + try: + pattern = text.split()[-1] + except IndexError: + output.speak(_(u"You have to start writing")) + return + if pattern.startswith("@") == True: + menu = wx_menu.menu(self.window.text, pattern[1:], mode=mode) + users = self.db.get_users(pattern[1:]) + if len(users) > 0: + menu.append_options(users) + self.window.popup_menu(menu) + menu.destroy() + else: + output.speak(_(u"There are no results in your users database")) + else: + output.speak(_(u"Autocompletion only works for users.")) + elif mode == "dm": + text = self.window.get_user() + try: + pattern = text.split()[-1] + except IndexError: + output.speak(_(u"You have to start writing")) + return + menu = wx_menu.menu(self.window.cb, pattern, mode=mode) + users = self.db.get_users(pattern) if len(users) > 0: menu.append_options(users) self.window.popup_menu(menu) menu.destroy() else: - output.speak(_(u"There are no results in your users database")) - else: - output.speak(_(u"Autocompletion only works for users.")) \ No newline at end of file + output.speak(_(u"There are no results in your users database")) \ No newline at end of file diff --git a/src/extra/autocompletionUsers/wx_menu.py b/src/extra/autocompletionUsers/wx_menu.py index 627a76eb..4861bd5b 100644 --- a/src/extra/autocompletionUsers/wx_menu.py +++ b/src/extra/autocompletionUsers/wx_menu.py @@ -2,10 +2,11 @@ import wx class menu(wx.Menu): - def __init__(self, window, pattern): + 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: @@ -14,7 +15,10 @@ class menu(wx.Menu): self.Bind(wx.EVT_MENU, lambda evt, temp=i[0]: self.select_text(evt, temp), item) def select_text(self, ev, text): - self.window.ChangeValue(self.window.GetValue().replace("@"+self.pattern, "@"+text+" ")) + if self.mode == "tweet": + self.window.ChangeValue(self.window.GetValue().replace("@"+self.pattern, "@"+text+" ")) + elif self.mode == "dm": + self.window.SetValue(self.window.GetValue().replace(self.pattern, text)) self.window.SetInsertionPointEnd() def destroy(self): diff --git a/src/wxUI/dialogs/message.py b/src/wxUI/dialogs/message.py index 735428c1..2e9fe900 100644 --- a/src/wxUI/dialogs/message.py +++ b/src/wxUI/dialogs/message.py @@ -114,8 +114,14 @@ class dm(textLimited): self.mainBox = wx.BoxSizer(wx.VERTICAL) label = wx.StaticText(self.panel, -1, _(u"Recipient")) self.cb = wx.ComboBox(self.panel, -1, choices=users, value=users[0], size=wx.DefaultSize) + self.autocompletionButton = wx.Button(self.panel, -1, _(u"&Autocomplete users")) self.createTextArea(message, text="") - self.mainBox.Add(self.cb, 0, wx.ALL, 5) + userBox = wx.BoxSizer(wx.HORIZONTAL) + userBox.Add(label, 0, wx.ALL, 5) + userBox.Add(self.cb, 0, wx.ALL, 5) + userBox.Add(self.autocompletionButton, 0, wx.ALL, 5) + self.mainBox.Add(userBox, 0, wx.ALL, 5) +# self.mainBox.Add(self.cb, 0, wx.ALL, 5) self.mainBox.Add(self.textBox, 0, wx.ALL, 5) self.spellcheck = wx.Button(self.panel, -1, _("Spelling correction"), size=wx.DefaultSize) self.attach = wx.Button(self.panel, -1, _(u"Attach audio"), size=wx.DefaultSize) @@ -150,7 +156,10 @@ class dm(textLimited): def get_user(self): return self.cb.GetValue() - + + def set_user(self, user): + return self.cb.SetValue(user) + class reply(tweet): def __init__(self, title, message, text): super(reply, self).__init__(message, title, text)