Beispiel #1
0
    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)
Beispiel #2
0
 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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
 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)
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #8
0
    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()
Beispiel #9
0
    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()
Beispiel #10
0
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()
Beispiel #11
0
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)
Beispiel #12
0
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()