def Construct(self): parent = self self.line1 = wx.StaticText( parent, label="We hope you've enjoyed using Digsby.", style=wx.TE_CENTER) self.line2 = wx.StaticText( parent, label="Please show your support and invite your friends.", style=wx.TE_CENTER) self.separator = wx.StaticLine(parent) self.name_label = wx.StaticText(parent, label='Full Name: ') self.name_text = wx.TextCtrl(parent) self.acct_list = AnyList(parent, ObservableList(self.data), row_control=StaticEmailRow, multiselect=False, edit_buttons=None, draggable_items=False, style=0, velocity=None) self.acct_list.SetMinSize(wx.Size(-1, (16 + 10) * 4)) self.acct_panel = PrefPanel(parent, self.acct_list, 'Account') self.acct_panel._bg_brush = lambda: wx.Brush( wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE)) self.acct_panel._fg_pen = lambda: wx.Pen( wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DSHADOW)) self.send_button = wx.Button(parent, wx.ID_OK, label='Send Invite!') self.send_button.MoveAfterInTabOrder(self.name_text)
def __init__(self, parent, widgets, edit_buttons = None): AnyList.__init__(self, parent, widgets, row_control = WidgetRow, edit_buttons = edit_buttons, draggable_items = False) Bind = self.Bind Bind(wx.EVT_LISTBOX_DCLICK, self.on_doubleclick) Bind(wx.EVT_LIST_ITEM_FOCUSED,self.OnHoveredChanged)
def __init__(self, parent, status_messages, edit_buttons = None): AnyList.__init__(self, parent, status_messages, row_control = StatusRow, edit_buttons = edit_buttons) self.show_selected = False Bind = self.Bind Bind(wx.EVT_LISTBOX_DCLICK, self.on_doubleclick) Bind(wx.EVT_LIST_ITEM_FOCUSED,self.OnHoveredChanged)
def __init__(self, parent, data): self.UpdateSkin(first = True) self.filetype_icons = {} AnyList.__init__(self, parent, data, row_control = FileTransferRow, draggable_items = False) self.Bind(wx.EVT_PAINT, self.on_paint) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
def __init__(self, parent, widgets, edit_buttons=None): AnyList.__init__(self, parent, widgets, row_control=WidgetRow, edit_buttons=edit_buttons, draggable_items=False) Bind = self.Bind Bind(wx.EVT_LISTBOX_DCLICK, self.on_doubleclick) Bind(wx.EVT_LIST_ITEM_FOCUSED, self.OnHoveredChanged)
def __init__(self, parent, data): self.UpdateSkin(first=True) self.filetype_icons = {} AnyList.__init__(self, parent, data, row_control=FileTransferRow, draggable_items=False) self.Bind(wx.EVT_PAINT, self.on_paint) self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
def __init__(self, parent, statussource, exceptions, edit_buttons = None): self.statussource = statussource self.accounts = get_account_list() self.exceptions = exceptions AnyList.__init__(self, parent, data = self.accounts, row_control = StatusExceptionRow, edit_buttons = edit_buttons, draggable_items = False) self.show_selected = False Bind = self.Bind Bind(wx.EVT_LISTBOX_DCLICK, self.on_doubleclick) Bind(wx.EVT_LIST_ITEM_FOCUSED, self.on_hover_changed) Bind(wx.EVT_CHECKBOX, self.on_check) self.SetMinSize(self.size)
def __init__(self, *a, **k): wx.Frame.__init__(self, *a, **k) self._panel = p = wx.Panel(self, -1) self._text = _AutoCombo(p, -1, style=wx.TE_PROCESS_ENTER) listvals = self.get_values() self.list = AnyList(p, data = listvals, row_control = PrivacyListRow, style = 8, draggable_items = False) self.list.BackgroundColour = wx.WHITE self.populate_combo() self.add_btn = wx.Button(p, -1, _('Add'), style = wx.BU_EXACTFIT) self.add_btn.MinSize = wx.Size(-1, 0) if platformName != 'mac': self.add_btn.Font = CopyFont(self.add_btn.Font, weight = wx.BOLD) else: self.add_btn.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) tb_sz = HSizer() tb_sz.Add(self._text, 1, ALIGN_CENTER_VERTICAL) tb_sz.Add(self.add_btn, 0, EXPAND | ALL | ALIGN_CENTER_VERTICAL) p.Sizer = sz = VSizer() sz.Add(tb_sz, 0, EXPAND | ALL, border=3) sz.Add(self.list, 1, EXPAND | ALL, border=3) self.add_btn.Bind(wx.EVT_BUTTON, self._add_clicked) self._text.Bind(wx.EVT_TEXT, self.set_btn_enable) self._text.Bind(wx.EVT_TEXT_ENTER, self._add_clicked) self.set_btn_enable() self.Layout()
def __init__(self, *a, **k): wx.Frame.__init__(self, *a, **k) self._panel = p = wx.Panel(self, -1) self._text = _AutoCombo(p, -1, style=wx.TE_PROCESS_ENTER) listvals = self.get_values() self.list = AnyList(p, data=listvals, row_control=PrivacyListRow, style=8, draggable_items=False) self.list.BackgroundColour = wx.WHITE self.populate_combo() self.add_btn = wx.Button(p, -1, _('Add'), style=wx.BU_EXACTFIT) self.add_btn.MinSize = wx.Size(-1, 0) if platformName != 'mac': self.add_btn.Font = CopyFont(self.add_btn.Font, weight=wx.BOLD) else: self.add_btn.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) tb_sz = HSizer() tb_sz.Add(self._text, 1, ALIGN_CENTER_VERTICAL) tb_sz.Add(self.add_btn, 0, EXPAND | ALL | ALIGN_CENTER_VERTICAL) p.Sizer = sz = VSizer() sz.Add(tb_sz, 0, EXPAND | ALL, border=3) sz.Add(self.list, 1, EXPAND | ALL, border=3) self.add_btn.Bind(wx.EVT_BUTTON, self._add_clicked) self._text.Bind(wx.EVT_TEXT, self.set_btn_enable) self._text.Bind(wx.EVT_TEXT_ENTER, self._add_clicked) self.set_btn_enable() self.Layout()
class AutoCompleteListEditor(wx.Frame): def __init__(self, *a, **k): wx.Frame.__init__(self, *a, **k) self._panel = p = wx.Panel(self, -1) self._text = _AutoCombo(p, -1, style=wx.TE_PROCESS_ENTER) listvals = self.get_values() self.list = AnyList(p, data=listvals, row_control=PrivacyListRow, style=8, draggable_items=False) self.list.BackgroundColour = wx.WHITE self.populate_combo() self.add_btn = wx.Button(p, -1, _('Add'), style=wx.BU_EXACTFIT) self.add_btn.MinSize = wx.Size(-1, 0) if platformName != 'mac': self.add_btn.Font = CopyFont(self.add_btn.Font, weight=wx.BOLD) else: self.add_btn.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) tb_sz = HSizer() tb_sz.Add(self._text, 1, ALIGN_CENTER_VERTICAL) tb_sz.Add(self.add_btn, 0, EXPAND | ALL | ALIGN_CENTER_VERTICAL) p.Sizer = sz = VSizer() sz.Add(tb_sz, 0, EXPAND | ALL, border=3) sz.Add(self.list, 1, EXPAND | ALL, border=3) self.add_btn.Bind(wx.EVT_BUTTON, self._add_clicked) self._text.Bind(wx.EVT_TEXT, self.set_btn_enable) self._text.Bind(wx.EVT_TEXT_ENTER, self._add_clicked) self.set_btn_enable() self.Layout() text = wx_prop('_text') def set_btn_enable(self, e=None): self.add_btn.Enable(self.validate(self.text)) def populate_combo(self): self._text.Clear() self._text.AppendItems(self.get_autovalues()) def _add_clicked(self, e): if not self.validate(self.text): log.error('%s does not validate. Not adding item.', self.text) return if self.text: self.add_item(self.text) self.text = '' def _rem_clicked(self, e): sel = self.list.Selection if sel == wx.NOT_FOUND: return obj = self.list.data[sel] #_str = self.list.GetString(sel) self.remove_item(obj) first = clamp(sel, 0, len(self.list.data) - 1) print first, len(self.list.data) - 1 if first >= 0: self.list.Selections = [first] def _get_list(self): return self.list.data def _set_list(self, val): self.list.data[:] = val self.list.on_data_changed() mylist = property(_get_list, _set_list) def get_values(self): raise NotImplementedError def add_item(self, _str): self.list.data.append(_str) self.populate_combo() self.set_btn_enable() self.list.on_data_changed() def remove_item(self, obj): assert obj in self.list.data self.list.RemoveItem(obj) self.populate_combo() def get_matches(self, _str): raise NotImplementedError def get_autovalues(self): raise NotImplementedError def __contains__(self, x): return x in self.list def on_close(self): self._text.on_close() self.list.on_close()
class InvitePanel(wx.Panel): def __init__(self, *a, **k): if k.get('name') is not None: k['name'] = 'Invite Panel' wx.Panel.__init__(self, *a, **k) accounts = [ e for e in p.emailaccounts[:] if e.protocol in ('gmail', 'ymail', 'aolmail', 'hotmail') ] data = [] for acct in accounts: if acct.icon is not None: ico = acct.icon.Resized(16) else: ico = None data.append((ico, acct.display_name, acct.protocol, acct.name, acct._decryptedpw())) self.data = data self.Construct() self.Fonts() self.Layout() def Construct(self): parent = self self.line1 = wx.StaticText( parent, label="We hope you've enjoyed using Digsby.", style=wx.TE_CENTER) self.line2 = wx.StaticText( parent, label="Please show your support and invite your friends.", style=wx.TE_CENTER) self.separator = wx.StaticLine(parent) self.name_label = wx.StaticText(parent, label='Full Name: ') self.name_text = wx.TextCtrl(parent) self.acct_list = AnyList(parent, ObservableList(self.data), row_control=StaticEmailRow, multiselect=False, edit_buttons=None, draggable_items=False, style=0, velocity=None) self.acct_list.SetMinSize(wx.Size(-1, (16 + 10) * 4)) self.acct_panel = PrefPanel(parent, self.acct_list, 'Account') self.acct_panel._bg_brush = lambda: wx.Brush( wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE)) self.acct_panel._fg_pen = lambda: wx.Pen( wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DSHADOW)) self.send_button = wx.Button(parent, wx.ID_OK, label='Send Invite!') self.send_button.MoveAfterInTabOrder(self.name_text) def info(self): # iter(AnyList) is bad news acct_list = self.acct_list acct_list = [acct_list[i] for i in xrange(len(acct_list))] return self.name_text.Value, [ acct.data[2:] for acct in acct_list if acct.checkbox.Get3StateValue() == wx.CHK_CHECKED ] def Fonts(self): #=============================================================================================================== # top 2 lines #=============================================================================================================== fnt1 = self.line1.Font fnt1.SetPointSize(fnt1.GetPointSize() + 4) fnt1.SetWeight(wx.FONTWEIGHT_BOLD) self.line1.Font = fnt1 self.line2.Font = fnt1 #=============================================================================================================== #=============================================================================================================== fnt2 = self.name_label.Font fnt2.SetPointSize(fnt2.GetPointSize() + 2) self.name_label.Font = fnt2 def Layout(self): self.Sizer = s1 = prefcontrols.VSizer() #=============================================================================================================== # top 2 lines #=============================================================================================================== s1.Add(self.line1, 0, wx.EXPAND | wx.ALL, 5) s1.Add(self.line2, 0, wx.EXPAND | wx.ALL & ~wx.TOP, 5) s1.Add(self.separator, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 6) #=============================================================================================================== # Full Name: --------------- #=============================================================================================================== s2 = prefcontrols.HSizer() s2.AddSpacer(6) s2.Add(self.name_label, 0, wx.EXPAND) s2.Add(self.name_text, 3, wx.EXPAND) s2.AddSpacer(6) s1.Add(s2, 0, wx.EXPAND | wx.ALL, 9) #=============================================================================================================== # panel full of checkboxes #=============================================================================================================== s1.Add(self.acct_panel, 1, wx.EXPAND | wx.ALL & ~wx.TOP, 15) #=============================================================================================================== # Send Invites! (click) #=============================================================================================================== s3 = prefcontrols.HSizer() s3.AddStretchSpacer(20) s3.Add(self.send_button, 60, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL & ~wx.TOP, 3) s3.AddStretchSpacer(20) s1.Add(s3, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND | wx.BOTTOM, 6)
class AutoCompleteListEditor(wx.Frame): def __init__(self, *a, **k): wx.Frame.__init__(self, *a, **k) self._panel = p = wx.Panel(self, -1) self._text = _AutoCombo(p, -1, style=wx.TE_PROCESS_ENTER) listvals = self.get_values() self.list = AnyList(p, data = listvals, row_control = PrivacyListRow, style = 8, draggable_items = False) self.list.BackgroundColour = wx.WHITE self.populate_combo() self.add_btn = wx.Button(p, -1, _('Add'), style = wx.BU_EXACTFIT) self.add_btn.MinSize = wx.Size(-1, 0) if platformName != 'mac': self.add_btn.Font = CopyFont(self.add_btn.Font, weight = wx.BOLD) else: self.add_btn.SetWindowVariant(wx.WINDOW_VARIANT_SMALL) tb_sz = HSizer() tb_sz.Add(self._text, 1, ALIGN_CENTER_VERTICAL) tb_sz.Add(self.add_btn, 0, EXPAND | ALL | ALIGN_CENTER_VERTICAL) p.Sizer = sz = VSizer() sz.Add(tb_sz, 0, EXPAND | ALL, border=3) sz.Add(self.list, 1, EXPAND | ALL, border=3) self.add_btn.Bind(wx.EVT_BUTTON, self._add_clicked) self._text.Bind(wx.EVT_TEXT, self.set_btn_enable) self._text.Bind(wx.EVT_TEXT_ENTER, self._add_clicked) self.set_btn_enable() self.Layout() text = wx_prop('_text') def set_btn_enable(self, e=None): self.add_btn.Enable(self.validate(self.text)) def populate_combo(self): self._text.Clear() self._text.AppendItems(self.get_autovalues()) def _add_clicked(self, e): if not self.validate(self.text): log.error('%s does not validate. Not adding item.', self.text) return if self.text: self.add_item(self.text) self.text = '' def _rem_clicked(self, e): sel = self.list.Selection if sel == wx.NOT_FOUND: return obj = self.list.data[sel] #_str = self.list.GetString(sel) self.remove_item(obj) first = clamp(sel, 0, len(self.list.data)-1) print first, len(self.list.data)-1 if first >= 0: self.list.Selections = [first] def _get_list(self): return self.list.data def _set_list(self, val): self.list.data[:] = val self.list.on_data_changed() mylist = property(_get_list, _set_list) def get_values(self): raise NotImplementedError def add_item(self, _str): self.list.data.append(_str) self.populate_combo() self.set_btn_enable() self.list.on_data_changed() def remove_item(self, obj): assert obj in self.list.data self.list.RemoveItem(obj) self.populate_combo() def get_matches(self, _str): raise NotImplementedError def get_autovalues(self): raise NotImplementedError def __contains__(self, x): return x in self.list def on_close(self): self._text.on_close() self.list.on_close()