twblue/src/wxUI/dialogs/mastodon/updateProfile.py

58 lines
1.8 KiB
Python
Raw Normal View History

import wx
class UpdateProfileDialog(wx.Dialog):
"""
A dialog for user to update his / her profile details.
layout is:
```
header
avatar
name
bio
meta data
```
"""
def __init__(self, display_name: str="", note: str=""):
"""Initialize update profile dialog
Parameters:
- display_name: The user's display name to show in the display name field
- note: The users bio to show in the bio field
"""
super().__init__(parent=None)
self.SetTitle(_("Update Profile"))
panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
# create widgets
display_name_label = wx.StaticText(panel, label=_("Display Name"))
self.display_name = wx.TextCtrl(panel, value=display_name, style=
wx.TE_PROCESS_ENTER)
bio_label = wx.StaticText(panel, label=_("Bio"))
self.bio = wx.TextCtrl(panel, value=note, style=wx.TE_PROCESS_ENTER)
ok = wx.Button(panel, wx.ID_OK, _(u"&OK"))
ok.SetDefault()
cancel = wx.Button(panel, wx.ID_CANCEL, _("&Close"))
self.SetEscapeId(cancel.GetId())
# manage sizers
sizer.Add(display_name_label, wx.SizerFlags().Center())
sizer.Add(self.display_name, wx.SizerFlags().Center())
sizer.Add(cancel, wx.SizerFlags().Center())
sizer.Add(ok, wx.SizerFlags().Center())
sizer.Add(self.bio, wx.SizerFlags().Center())
panel.SetSizer(sizer)
panel.Fit()
# manage events
ok.Bind(wx.EVT_BUTTON, self.on_ok)
def on_ok(self, *args):
"""Method called when user clicks ok in dialog"""
self.data = {
'display_name': self.display_name.GetValue(),
'note': self.bio.GetValue()
}
self.EndModal(wx.ID_OK)