diff --git a/src/controller/mainController.py b/src/controller/mainController.py index 4cc72170..fa689661 100644 --- a/src/controller/mainController.py +++ b/src/controller/mainController.py @@ -185,6 +185,7 @@ class Controller(object): widgetUtils.connect_event(self.view, widgetUtils.MENU, self.report_error, self.view.reportError) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_documentation, self.view.doc) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_changelog, self.view.changelog) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.add_alias, self.view.addAlias) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.add_to_list, self.view.addToList) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.remove_from_list, self.view.removeFromList) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.update_buffer, self.view.update_buffer) @@ -754,6 +755,26 @@ class Controller(object): users = utils.get_all_users(tweet, buff.session) u = userActionsController.userActionsController(buff, users, "report") + def add_alias(self, *args, **kwargs): + buff = self.get_best_buffer() + if not hasattr(buff, "get_right_tweet"): return + tweet = buff.get_right_tweet() + if buff.type == "people": + users = [tweet.screen_name] + elif buff.type == "dm": + users = [buff.session.get_user(tweet.message_create["sender_id"]).screen_name] + else: + users = utils.get_all_users(tweet, buff.session) + dlg = dialogs.utils.addAliasDialog(_("Add an user alias"), users) + if dlg.get_response() == widgetUtils.OK: + user, alias = dlg.get_user() + if user == "" or alias == "": + return + user_id = buff.session.get_user_by_screen_name(user) + buff.session.settings["user-aliases"][str(user_id)] = alias + buff.session.settings.write() + output.speak(_("Alias has been set correctly for {}.").format(user)) + def post_tweet(self, event=None): buffer = self.get_best_buffer() buffer.post_status() diff --git a/src/wxUI/dialogs/utils.py b/src/wxUI/dialogs/utils.py index 8335d61d..6f308685 100644 --- a/src/wxUI/dialogs/utils.py +++ b/src/wxUI/dialogs/utils.py @@ -48,3 +48,36 @@ class selectUserDialog(baseDialog.BaseWXDialog): def get_user(self): return self.cb.GetValue() +class addAliasDialog(baseDialog.BaseWXDialog): + def __init__(self, title, users): + super(addAliasDialog, self).__init__(parent=None, id=wx.ID_ANY, title=title) + panel = wx.Panel(self) + userSizer = wx.BoxSizer() + self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0], size=wx.DefaultSize) + self.cb.SetFocus() + self.autocompletion = wx.Button(panel, -1, _(u"&Autocomplete users")) + userSizer.Add(wx.StaticText(panel, -1, _(u"User")), 0, wx.ALL, 5) + userSizer.Add(self.cb, 0, wx.ALL, 5) + userSizer.Add(self.autocompletion, 0, wx.ALL, 5) + aliasSizer = wx.BoxSizer(wx.HORIZONTAL) + aliasLabel = wx.StaticText(panel, wx.ID_ANY, _("Alias")) + self.alias = wx.TextCtrl(panel, wx.ID_ANY) + aliasSizer.Add(aliasLabel, 0, wx.ALL, 5) + aliasSizer.Add(self.alias, 0, wx.ALL, 5) + sizer = wx.BoxSizer(wx.VERTICAL) + ok = wx.Button(panel, wx.ID_OK, _(u"OK")) + ok.SetDefault() +# ok.Bind(wx.EVT_BUTTON, self.onok) + cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) + btnsizer = wx.BoxSizer() + btnsizer.Add(ok, 0, wx.ALL, 5) + btnsizer.Add(cancel, 0, wx.ALL, 5) + sizer.Add(userSizer, 0, wx.ALL, 5) + sizer.Add(aliasSizer, 0, wx.ALL, 5) + sizer.Add(btnsizer, 0, wx.ALL, 5) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) + + def get_user(self): + return (self.cb.GetValue(), self.alias.GetValue()) +