コード例 #1
0
    def __init__(self, parent, name, msg_bold = '', msg = ''):
        wx.Dialog.__init__(self, parent = parent, size = (475, 210), name = name)

        self.checkbox = wx.CheckBox(self, label = 'Don\'t show this dialog again')
        self.checkbox.SetValue(False)        
        messageText1 = wx.StaticText(self, label = msg_bold)
        _set_font(messageText1, fontweight = wx.FONTWEIGHT_BOLD)
        messageText2 = wx.StaticText(self, label = msg)
        messageSizer = wx.BoxSizer(wx.VERTICAL)
        messageSizer.Add(messageText1, 1, wx.EXPAND)
        messageSizer.Add(messageText2, 1, wx.EXPAND)
        messageSizer.Add(self.checkbox, 0, wx.EXPAND | wx.TOP, 15)
        bodySizer = wx.BoxSizer(wx.HORIZONTAL)
        bodySizer.Add(wx.StaticBitmap(self, -1, wx.ArtProvider.GetBitmap(wx.ART_QUESTION, wx.ART_CMN_DIALOG)), 0, wx.ALIGN_TOP | wx.RIGHT, 15)
        bodySizer.Add(messageSizer, 1, wx.EXPAND)
        buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
        confirmButton = wx.Button(self, label = 'Confirm')
        confirmButton.Bind(wx.EVT_BUTTON, self.OnConfirm)
        cancelButton = wx.Button(self, label = 'Cancel')
        cancelButton.Bind(wx.EVT_BUTTON, self.OnCancel)
        buttonSizer.AddStretchSpacer()
        buttonSizer.Add(confirmButton)
        buttonSizer.Add(cancelButton, 0, wx.LEFT, 5)
        mainSizer = wx.BoxSizer(wx.VERTICAL)
        mainSizer.Add(bodySizer, 1, wx.EXPAND | wx.ALL, 15)
        mainSizer.Add(buttonSizer, 0, wx.EXPAND | wx.ALL, 15)
        self.SetSizer(mainSizer)

        self.Bind(wx.EVT_CLOSE, self.OnCancel)
コード例 #2
0
    def AddFileList(self, tdef, selectedFiles, vSizer, index):
        self.listCtrl = CheckSelectableListCtrl(self)
        self.listCtrl.InsertColumn(0, 'Name')
        self.listCtrl.InsertColumn(1, 'Size', wx.LIST_FORMAT_RIGHT)

        # Add files
        def sort_by_size(a, b):
            return cmp(a[1], b[1])

        files = tdef.get_files_as_unicode_with_length()
        files.sort(sort_by_size, reverse=True)

        for filename, size in files:
            try:
                pos = self.listCtrl.InsertStringItem(sys.maxsize, filename)
            except:
                try:
                    pos = self.listCtrl.InsertStringItem(
                        sys.maxsize, filename.decode('utf-8', 'ignore'))
                except:
                    self._logger.error("Could not format filename %s",
                                       self.torrent.name)
            self.listCtrl.SetItemData(pos, pos)
            self.listCtrl.SetStringItem(pos, 1, size_format(size))

            if selectedFiles:
                self.listCtrl.CheckItem(pos, filename in selectedFiles)

        if selectedFiles is None:
            self.listCtrl.doSelectAll()

        self.listCtrl.setResizeColumn(0)
        self.listCtrl.SetColumnWidth(
            1, wx.LIST_AUTOSIZE)  # autosize only works after adding rows
        vSizer.Insert(index, self.listCtrl, 1, wx.EXPAND | wx.BOTTOM, 3)

        self.listCtrl.SetFocus()

        def OnChar(event):
            if event.GetKeyCode() == wx.WXK_RETURN:
                self.OnOk()
            else:
                event.Skip()

        self.listCtrl.Bind(wx.EVT_CHAR, OnChar)

        vSizer.Insert(
            index,
            wx.StaticText(
                self, -1,
                'Use the checkboxes to choose which files to download.\nUse ctrl+a to select all/deselect all.'
            ), 0, wx.BOTTOM, 3)

        firstLine = wx.StaticText(self, -1, "Content:")
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Insert(index, firstLine, 0, wx.BOTTOM, 3)

        vSizer.Insert(index, wx.StaticLine(self, -1), 0, wx.EXPAND | wx.BOTTOM,
                      10)
コード例 #3
0
ファイル: RemoveTorrent.py プロジェクト: Azzhag/tribler
    def __init__(self, parent, torrents):
        canEdit = False
        single = len(torrents) == 1
        if single and torrents[0].hasChannel():
            state = torrents[0].channel.getState()
            canEdit = state >= ChannelCommunity.CHANNEL_OPEN

        wx.Dialog.__init__(self, parent, -1, 'Are you sure you want to remove the selected torrent%s?' %
                           ('' if single else 's'), size=(600, -1), name="RemoveTorrent")
        bitmap = wx.ArtProvider.GetBitmap(wx.ART_QUESTION, wx.ART_MESSAGE_BOX)
        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticBitmap(self, -1, bitmap), 0, wx.RIGHT, 10)

        vSizer = wx.BoxSizer(wx.VERTICAL)
        firstLine = StaticText(self, -1, '')
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        if single:
            firstLineMsg = "Delete '%s' from disk, or just remove it from your downloads?" % torrents[0].name
        else:
            firstLineMsg = "Delete %s torrents from disk, or just remove them from your downloads?" % len(torrents)
        cdc = wx.ClientDC(firstLine)
        cdc.SetFont(firstLine.GetFont())
        firstLineMsg = wordwrap(firstLineMsg, self.GetSize()[
                                0] - bitmap.GetSize()[0] - 30, cdc, breakLongWords=True, margin=0)
        firstLine.SetLabel(firstLineMsg)
        firstLine.SetMinSize((1, -1))
        vSizer.Add(firstLine, 0, wx.EXPAND | wx.BOTTOM, 3)
        vSizer.Add(StaticText(self, -1, "Removing from disk will move the selected item%s to your trash." %
                   ('' if single else 's')), 0, wx.EXPAND)

        vSizer.AddStretchSpacer()

        self.newName = None
        if single and canEdit:
            vSizer.Add(
                StaticText(self, -1, "While we're at it, can you improve the name of this torrent?"), 0, wx.EXPAND | wx.BOTTOM, 3)
            self.newName = EditText(self, torrents[0].name)
            vSizer.Add(self.newName, 0, wx.EXPAND)
            vSizer.AddStretchSpacer()

        bSizer = wx.BoxSizer(wx.HORIZONTAL)
        bSizer.AddStretchSpacer()

        bSizer.Add(wx.Button(self, wx.ID_CANCEL), 0, wx.RIGHT, 3)
        bSizer.Add(wx.Button(self, wx.ID_DEFAULT, 'Only delete from downloads'), 0, wx.RIGHT, 3)
        bSizer.Add(wx.Button(self, wx.ID_DELETE, 'Also delete from disk'))

        vSizer.Add(bSizer, 0, wx.ALIGN_RIGHT | wx.TOP, 7)
        hSizer.Add(vSizer, 1, wx.EXPAND)

        border = wx.BoxSizer()
        border.Add(hSizer, 1, wx.ALL | wx.EXPAND, 10)

        self.Bind(wx.EVT_BUTTON, lambda event: self.EndModal(event.GetId()))
        self.SetSizer(border)
        self.SetSize((-1, self.GetBestSize()[1]))
        self.Layout()
        self.CenterOnParent()
コード例 #4
0
ファイル: DispersyDebugFrame.py プロジェクト: Azzhag/tribler
    def __init__(self, parent, id):
        super(CommunityDetailPanel, self).__init__(parent, id, style=wx.RAISED_BORDER)
        self.SetBackgroundColour(LIST_GREY)

        self.__FIELDS = ("Identifier", "Member", "Classification", "Global time",
                         "Median global time", "Acceptable range", "Walk success", "Sync bloom created",
                         "Sync bloom reused", "Sync bloom skipped",
                         "Packets Created", "Packets Sent", "Packets Received", "Packets Success", "Packets Dropped",
                         "Packets Delayed Sent", "Packets Delayed Received",
                         "Packets Delayed Success", "Packets Delayed Timeout",
                         "Candidates", "Database")

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        info_panel = wx.Panel(self, -1, style=wx.BORDER_SUNKEN)
        info_panel.SetBackgroundColour(wx.WHITE)
        info_panel.SetMinSize((500, 300))
        self.__info_panel = info_panel

        self.__text = {}
        gridsizer = wx.FlexGridSizer(0, 2, 3, 3)
        for title in self.__FIELDS:
            key_text = wx.StaticText(info_panel, -1, title)
            _set_font(key_text, fontweight=wx.FONTWEIGHT_BOLD)

            value_text = wx.StaticText(info_panel, -1)
            gridsizer.AddMany([
                (key_text, 0, wx.EXPAND),
                (value_text, 0, wx.EXPAND)])

            self.__text[title] = (key_text, value_text)
        info_panel.SetSizer(gridsizer)

        self.__detail_notebook = SimpleNotebook(self, show_single_tab=True, style=wx.NB_NOPAGETHEME)

        self.__candidate_list = AutoWidthListCtrl(self.__detail_notebook, -1,
                                                  style=wx.LC_REPORT | wx.LC_ALIGN_LEFT | wx.BORDER_SUNKEN)
        self.__candidate_list.InsertColumn(0, "Global time", width=100)
        self.__candidate_list.InsertColumn(1, "LAN", width=170)
        self.__candidate_list.InsertColumn(2, "WAN", width=170)
        self.__candidate_list.InsertColumn(3, "MID")

        self.__rawinfo_panel = RawInfoPanel(self.__detail_notebook, -1)

        self.__database_list = AutoWidthListCtrl(self.__detail_notebook, -1,
                                                 style=wx.LC_REPORT | wx.LC_ALIGN_LEFT | wx.BORDER_SUNKEN)
        self.__database_list.InsertColumn(0, "Count")
        self.__database_list.InsertColumn(1, "Info")

        self.__detail_notebook.AddPage(self.__candidate_list, "Candidates")
        self.__detail_notebook.AddPage(self.__rawinfo_panel, "RawInfo")
        self.__detail_notebook.AddPage(self.__database_list, "Database")

        hsizer.Add(self.__info_panel, 0, wx.EXPAND | wx.RIGHT, 2)
        hsizer.Add(self.__detail_notebook, 1, wx.EXPAND)
        self.SetSizer(hsizer)
コード例 #5
0
ファイル: home.py プロジェクト: duy/tribler
 def addColumn(strkey, strtooltip):
     # strkey = key.replace("_", " ").capitalize()
     header = StaticText(self.panel, -1, strkey)
     _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
     self.gridSizer.Add(header)
     self.textdict[strkey] = StaticText(self.panel, -1, '')
     self.textdict[strkey].SetMinSize((200,-1))
     self.gridSizer.Add(self.textdict[strkey])
     
     if strtooltip:
         header.SetToolTipString(strtooltip)
         self.textdict[strkey].SetToolTipString(strtooltip)
コード例 #6
0
        def addColumn(strkey, strtooltip):
            # strkey = key.replace("_", " ").capitalize()
            header = StaticText(self.panel, -1, strkey)
            _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
            self.gridSizer.Add(header)
            self.textdict[strkey] = StaticText(self.panel, -1, '')
            self.textdict[strkey].SetMinSize((200, -1))
            self.gridSizer.Add(self.textdict[strkey])

            if strtooltip:
                header.SetToolTipString(strtooltip)
                self.textdict[strkey].SetToolTipString(strtooltip)
コード例 #7
0
ファイル: NewVersionDialog.py プロジェクト: brussee/tribler
    def __init__(self,
                 version,
                 parent,
                 name,
                 msg_bold='',
                 msg='',
                 title='',
                 center_on_frame=True):
        wx.Dialog.__init__(self, parent=parent, size=(475, 210), name=name)

        self.version = version
        self.SetTitle(title)
        messageSizer = wx.BoxSizer(wx.VERTICAL)

        if msg_bold:
            messageText1 = wx.StaticText(self, label=msg_bold)
            _set_font(messageText1, fontweight=wx.FONTWEIGHT_BOLD)
            messageSizer.Add(messageText1, 1, wx.EXPAND)
        if msg:
            messageText2 = wx.StaticText(self, label=msg)
            messageSizer.Add(messageText2, 1, wx.EXPAND | wx.TOP,
                             10 if msg_bold else 0)

        bodySizer = wx.BoxSizer(wx.HORIZONTAL)
        bodySizer.Add(
            wx.StaticBitmap(
                self, -1,
                wx.ArtProvider.GetBitmap(wx.ART_INFORMATION,
                                         wx.ART_CMN_DIALOG)), 0,
            wx.ALIGN_TOP | wx.RIGHT, 25)
        bodySizer.Add(messageSizer, 1, wx.EXPAND)

        buttonSizer = wx.StdDialogButtonSizer()
        okButton = wx.Button(self, wx.ID_OK, label='Ok')
        okButton.Bind(wx.EVT_BUTTON, self.OnOk)
        laterButton = wx.Button(self, id=wx.ID_CANCEL, label='Later')
        laterButton.Bind(wx.EVT_BUTTON, self.OnLater)
        ignoreButton = wx.Button(self, id=wx.ID_IGNORE, label='Ignore')
        ignoreButton.Bind(wx.EVT_BUTTON, self.OnIgnore)
        buttonSizer.Add(ignoreButton)
        buttonSizer.Add(laterButton)
        buttonSizer.Add(okButton)
        buttonSizer.Realize()

        mainSizer = wx.BoxSizer(wx.VERTICAL)
        mainSizer.Add(bodySizer, 1, wx.EXPAND | wx.ALL, 10)
        mainSizer.Add(buttonSizer, 0, wx.ALIGN_RIGHT | wx.ALL, 10)
        self.SetSizerAndFit(mainSizer)
        if center_on_frame:
            x, y, w, h = GUIUtility.getInstance().frame.GetScreenRect()
            self.SetPosition((x + ((w - self.GetSize().x) / 2),
                              y + ((h - self.GetSize().y) / 2)))
コード例 #8
0
ファイル: settingsDialog.py プロジェクト: xantares/tribler
def create_section(parent, hsizer, label):
    panel = wx.Panel(parent)

    vsizer = wx.BoxSizer(wx.VERTICAL)

    title = wx.StaticText(panel, label=label)
    _set_font(title, 1, wx.FONTWEIGHT_BOLD)
    vsizer.AddSpacer((1, 7))
    vsizer.Add(title, 0, wx.EXPAND | wx.BOTTOM, -7)

    hsizer.Add(panel, 1, wx.EXPAND)
    panel.SetSizer(vsizer)
    return panel, vsizer
コード例 #9
0
ファイル: settingsDialog.py プロジェクト: Antiade/tribler
def create_section(parent, hsizer, label):
    panel = wx.Panel(parent)

    vsizer = wx.BoxSizer(wx.VERTICAL)

    title = wx.StaticText(panel, label=label)
    _set_font(title, 1, wx.FONTWEIGHT_BOLD)
    vsizer.AddSpacer((1, 7))
    vsizer.Add(title, 0, wx.EXPAND | wx.BOTTOM, -7)

    hsizer.Add(panel, 1, wx.EXPAND)
    panel.SetSizer(vsizer)
    return panel, vsizer
コード例 #10
0
ファイル: ConfirmationDialog.py プロジェクト: brussee/tribler
    def __init__(self,
                 parent,
                 name,
                 msg_bold='',
                 msg='',
                 title='',
                 center_on_frame=True):
        wx.Dialog.__init__(self, parent=parent, size=(475, 210), name=name)

        self.SetTitle(title)
        self.checkbox = wx.CheckBox(self,
                                    label='Don\'t show this dialog again')
        self.checkbox.SetValue(False)
        messageSizer = wx.BoxSizer(wx.VERTICAL)

        if msg_bold:
            messageText1 = wx.StaticText(self, label=msg_bold)
            _set_font(messageText1, fontweight=wx.FONTWEIGHT_BOLD)
            messageSizer.Add(messageText1, 1, wx.EXPAND)
        if msg:
            messageText2 = wx.StaticText(self, label=msg)
            messageSizer.Add(messageText2, 1, wx.EXPAND | wx.TOP,
                             10 if msg_bold else 0)

        messageSizer.Add(self.checkbox, 0, wx.EXPAND | wx.TOP, 15)
        bodySizer = wx.BoxSizer(wx.HORIZONTAL)
        bodySizer.Add(
            wx.StaticBitmap(
                self, -1,
                wx.ArtProvider.GetBitmap(wx.ART_QUESTION, wx.ART_CMN_DIALOG)),
            0, wx.ALIGN_TOP | wx.RIGHT, 15)
        bodySizer.Add(messageSizer, 1, wx.EXPAND)

        buttonSizer = wx.StdDialogButtonSizer()
        confirmButton = wx.Button(self, wx.ID_OK, label='Confirm')
        confirmButton.Bind(wx.EVT_BUTTON, self.OnConfirm)
        cancelButton = wx.Button(self, id=wx.ID_CANCEL)
        cancelButton.Bind(wx.EVT_BUTTON, self.OnCancel)
        buttonSizer.Add(confirmButton)
        buttonSizer.Add(cancelButton)
        buttonSizer.Realize()

        mainSizer = wx.BoxSizer(wx.VERTICAL)
        mainSizer.Add(bodySizer, 1, wx.EXPAND | wx.ALL, 10)
        mainSizer.Add(buttonSizer, 0, wx.ALIGN_RIGHT | wx.ALL, 10)
        self.SetSizerAndFit(mainSizer)
        if center_on_frame:
            x, y, w, h = GUIUtility.getInstance().frame.GetScreenRect()
            self.SetPosition((x + ((w - self.GetSize().x) / 2),
                              y + ((h - self.GetSize().y) / 2)))
コード例 #11
0
ファイル: RemoveTorrent.py プロジェクト: Devristo/tribler
 def __init__(self, parent, torrent):
     canEdit = canComment = False
     if torrent.hasChannel():
         state, iamModerator = torrent.channel.getState()
         canEdit = state >= ChannelCommunity.CHANNEL_OPEN
     
     height = 125
     if canEdit:
         height = 200
     
     wx.Dialog.__init__(self, parent, -1, 'Are you sure you want to remove this torrent?', size=(600, height))
     bitmap = wx.ArtProvider.GetBitmap(wx.ART_QUESTION, wx.ART_MESSAGE_BOX)
     hSizer = wx.BoxSizer(wx.HORIZONTAL)
     hSizer.Add(wx.StaticBitmap(self, -1, bitmap), 0, wx.RIGHT, 10)
     
     vSizer = wx.BoxSizer(wx.VERTICAL)
     firstLine = StaticText(self, -1, "Delete '%s' from disk, or just remove them from your downloads?"%torrent.name)
     _set_font(firstLine, fontweight = wx.FONTWEIGHT_BOLD)
     firstLine.Wrap(self.GetSize()[0]-bitmap.GetSize()[0]-10)
     firstLine.SetMinSize((1, -1))
     
     vSizer.Add(firstLine, 0, wx.EXPAND|wx.BOTTOM, 3)
     vSizer.Add(StaticText(self, -1, "Removing from disk will move the selected item to your trash."), 0, wx.EXPAND)
     
     vSizer.AddStretchSpacer()
     
     self.newName = None
     if canEdit:
         vSizer.Add(StaticText(self, -1, "While we're at it, can you improve the name of this torrent?"), 0, wx.EXPAND|wx.BOTTOM, 3)
         self.newName = EditText(self, torrent.name)
         vSizer.Add(self.newName, 0, wx.EXPAND)
         vSizer.AddStretchSpacer()
     
     bSizer = wx.BoxSizer(wx.HORIZONTAL)
     bSizer.AddStretchSpacer()
     
     bSizer.Add(wx.Button(self, wx.ID_CANCEL), 0, wx.RIGHT, 3)
     bSizer.Add(wx.Button(self, wx.ID_DEFAULT, 'Only delete from downloads'), 0, wx.RIGHT, 3)
     bSizer.Add(wx.Button(self, wx.ID_DELETE, 'Also delete from disk'))
     
     vSizer.Add(bSizer, 0, wx.ALIGN_RIGHT|wx.TOP, 7)
     hSizer.Add(vSizer, 1, wx.EXPAND)
     
     border = wx.BoxSizer()
     border.Add(hSizer, 1, wx.ALL|wx.EXPAND, 10)
     
     self.Bind(wx.EVT_BUTTON, lambda event: self.EndModal(event.GetId()))
     self.SetSizer(border)
     self.Layout()
     self.CenterOnParent()
コード例 #12
0
ファイル: list_item.py プロジェクト: NielsZeilemaker/tribler
 def AddComponents(self, leftSpacer, rightSpacer):
     titleRow = wx.BoxSizer(wx.HORIZONTAL)
     if leftSpacer > 0:
         titleRow.AddSpacer((leftSpacer, -1))
     
     if self.avantar:
         titleRow.Add(wx.StaticBitmap(self, bitmap = self.avantar), 0, wx.RIGHT, 7)
     
     vSizer = wx.BoxSizer(wx.VERTICAL)
     
     header = wx.StaticText(self, -1, self.header)
     _set_font(header, -1, wx.FONTWEIGHT_BOLD)
     header.SetMinSize((1, -1))
     
     vSizer.Add(header, 0, wx.EXPAND)
     vSizer.Add(wx.StaticLine(self, -1, style = wx.LI_HORIZONTAL), 0, wx.EXPAND|wx.RIGHT, 5)
     
     self.moreButton = None
     if len(self.additionalButtons) > 0:
         self.moreButton = wx.Button(self, style = wx.BU_EXACTFIT)
         
     hSizer = wx.BoxSizer(wx.HORIZONTAL)
     if len(self.additionalButtons) > 0:
         hSizer.Add(self.moreButton, 0, wx.RESERVE_SPACE_EVEN_IF_HIDDEN|wx.ALIGN_BOTTOM)
     
         for button in self.additionalButtons:
             hSizer.Add(button, 0, wx.RESERVE_SPACE_EVEN_IF_HIDDEN|wx.ALIGN_BOTTOM)
             button.Show(False)
             
         self.moreButton.Show(False)
             
     if isinstance(self.body, basestring):
         self.desc = MaxBetterText(self, self.body, maxLines = self.maxlines, button = self.moreButton)
         self.desc.SetMinSize((1, -1))
         vSizer.Add(self.desc, 0, wx.EXPAND)
         vSizer.Add(hSizer, 0, wx.ALIGN_RIGHT)            
     else:
         self.desc = None
         for index, bmp in enumerate(self.body):
             sbmp = wx.StaticBitmap(self, -1, bmp)
             hSizer.Insert(index, sbmp, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 6)
         hSizer.InsertStretchSpacer(len(self.body))
         vSizer.Add(hSizer, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 5)
     
     titleRow.Add(vSizer, 1)
     
     if rightSpacer > 0:
         titleRow.AddSpacer((rightSpacer, -1))
     self.vSizer.Add(titleRow, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 3)
     self.AddEvents(self)
コード例 #13
0
ファイル: SaveAs.py プロジェクト: Azzhag/tribler
    def AddFileList(self, tdef, selectedFiles, vSizer, index):
        self.listCtrl = CheckSelectableListCtrl(self)
        self.listCtrl.InsertColumn(0, 'Name')
        self.listCtrl.InsertColumn(1, 'Size', wx.LIST_FORMAT_RIGHT)

        # Add files
        def sort_by_size(a, b):
            return cmp(a[1], b[1])

        files = tdef.get_files_as_unicode_with_length()
        files.sort(sort_by_size, reverse=True)

        for filename, size in files:
            try:
                pos = self.listCtrl.InsertStringItem(sys.maxsize, filename)
            except:
                try:
                    pos = self.listCtrl.InsertStringItem(sys.maxsize, filename.decode('utf-8', 'ignore'))
                except:
                    self._logger.error("Could not format filename %s", self.torrent.name)
            self.listCtrl.SetItemData(pos, pos)
            self.listCtrl.SetStringItem(pos, 1, size_format(size))

            if selectedFiles:
                self.listCtrl.CheckItem(pos, filename in selectedFiles)

        if selectedFiles is None:
            self.listCtrl.doSelectAll()

        self.listCtrl.setResizeColumn(0)
        self.listCtrl.SetColumnWidth(1, wx.LIST_AUTOSIZE)  # autosize only works after adding rows
        vSizer.Insert(index, self.listCtrl, 1, wx.EXPAND | wx.BOTTOM, 3)

        self.listCtrl.SetFocus()

        def OnChar(event):
            if event.GetKeyCode() == wx.WXK_RETURN:
                self.OnOk()
            else:
                event.Skip()
        self.listCtrl.Bind(wx.EVT_CHAR, OnChar)

        vSizer.Insert(index, wx.StaticText(
            self, -1, 'Use the checkboxes to choose which files to download.\nUse ctrl+a to select all/deselect all.'), 0, wx.BOTTOM, 3)

        firstLine = wx.StaticText(self, -1, "Content:")
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Insert(index, firstLine, 0, wx.BOTTOM, 3)

        vSizer.Insert(index, wx.StaticLine(self, -1), 0, wx.EXPAND | wx.BOTTOM, 10)
コード例 #14
0
ファイル: settingsDialog.py プロジェクト: xantares/tribler
def create_subsection(parent, parent_sizer, label, num_cols=1, vgap=0, hgap=0):
    line = wx.StaticLine(parent, size=(-1, 1), style=wx.LI_HORIZONTAL)
    parent_sizer.Add(line, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 7)

    title = wx.StaticText(parent, label=label)
    _set_font(title, 0, wx.FONTWEIGHT_BOLD)
    parent_sizer.Add(title, 0, wx.EXPAND | wx.BOTTOM, 5)

    if num_cols == 1:
        sizer = wx.BoxSizer(wx.VERTICAL)
    else:
        sizer = wx.FlexGridSizer(cols=num_cols, vgap=vgap, hgap=hgap)
        sizer.AddGrowableCol(1)

    parent_sizer.Add(sizer, 0, wx.EXPAND)
    return sizer
コード例 #15
0
ファイル: settingsDialog.py プロジェクト: Antiade/tribler
def create_subsection(parent, parent_sizer, label, num_cols=1, vgap=0, hgap=0):
    line = wx.StaticLine(parent, size=(-1, 1), style=wx.LI_HORIZONTAL)
    parent_sizer.Add(line, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 7)

    title = wx.StaticText(parent, label=label)
    _set_font(title, 0, wx.FONTWEIGHT_BOLD)
    parent_sizer.Add(title, 0, wx.EXPAND | wx.BOTTOM, 5)

    if num_cols == 1:
        sizer = wx.BoxSizer(wx.VERTICAL)
    else:
        sizer = wx.FlexGridSizer(cols=num_cols, vgap=vgap, hgap=hgap)
        sizer.AddGrowableCol(1)

    parent_sizer.Add(sizer, 0, wx.EXPAND)
    return sizer
コード例 #16
0
ファイル: list_header.py プロジェクト: Antiade/tribler
    def AddComponents(self, columns, spacers):
        vSizer = wx.BoxSizer(wx.VERTICAL)

        vSizer.AddSpacer((-1, 3))

        self.title = StaticText(self)
        _set_font(self.title, self.font_increment, self.fontweight)

        titlePanel = self.GetTitlePanel(self)
        subtitlePanel = self.GetSubTitlePanel(self)
        righttitlePanel = self.GetRightTitlePanel(self)
        belowPanel = self.GetBelowPanel(self)

        if titlePanel:
            subSizer = wx.BoxSizer(wx.HORIZONTAL)
            subSizer.Add(self.title)
            subSizer.Add(titlePanel, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 3)
            titlePanel = subSizer
        else:
            titlePanel = self.title

        if subtitlePanel:
            subSizer = wx.BoxSizer(wx.VERTICAL)
            subSizer.Add(titlePanel, 0, wx.BOTTOM, 3)
            subSizer.Add(subtitlePanel)
            subtitlePanel = subSizer
        else:
            subtitlePanel = titlePanel

        subSizer = wx.BoxSizer(wx.HORIZONTAL)
        subSizer.Add(subtitlePanel)
        if righttitlePanel:
            subSizer.Add(righttitlePanel, 1, wx.LEFT, 3)
        righttitlePanel = subSizer

        vSizer.Add(righttitlePanel, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, self.radius + spacers[0])
        if belowPanel:
            vSizer.Add(belowPanel, 1, wx.EXPAND | wx.TOP, 3)

        vSizer.AddSpacer((-1, 3))

        if len(columns) > 0:
            hSizer = wx.BoxSizer(wx.HORIZONTAL)
            self.AddColumns(hSizer, self, columns)
            vSizer.Add(hSizer, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, self.radius + spacers[0])
        self.SetSizer(vSizer)
コード例 #17
0
ファイル: list_header.py プロジェクト: Antiade/tribler
    def __init__(self, parent, title=""):
        wx.Panel.__init__(self, parent)
        self.SetBackgroundColour(SEPARATOR_GREY)

        vSizer = wx.BoxSizer(wx.VERTICAL)

        panel = wx.Panel(self)
        panel.SetMinSize((-1, 25))
        panel.SetBackgroundColour(FILTER_GREY)
        if hasattr(parent, 'OnLeaveWindow'):
            panel.Bind(wx.EVT_ENTER_WINDOW, lambda event: parent.OnLeaveWindow())
        self.title = wx.StaticText(panel, label=title)
        _set_font(self.title, fontweight=wx.FONTWEIGHT_BOLD, fontcolour=wx.BLACK)
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(self.title, 0, wx.CENTER | wx.LEFT, 7)
        panel.SetSizer(sizer)

        vSizer.Add(panel, 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 1)
        self.SetSizer(vSizer)
コード例 #18
0
ファイル: ConfirmationDialog.py プロジェクト: Azzhag/tribler
    def __init__(self, parent, name, msg_bold='', msg='', title='', center_on_frame=True):
        wx.Dialog.__init__(self, parent=parent, size=(475, 210), name=name)

        self.SetTitle(title)
        self.checkbox = wx.CheckBox(self, label='Don\'t show this dialog again')
        self.checkbox.SetValue(False)
        messageSizer = wx.BoxSizer(wx.VERTICAL)

        if msg_bold:
            messageText1 = wx.StaticText(self, label=msg_bold)
            _set_font(messageText1, fontweight=wx.FONTWEIGHT_BOLD)
            messageSizer.Add(messageText1, 1, wx.EXPAND)
        if msg:
            messageText2 = wx.StaticText(self, label=msg)
            messageSizer.Add(messageText2, 1, wx.EXPAND | wx.TOP, 10 if msg_bold else 0)

        messageSizer.Add(self.checkbox, 0, wx.EXPAND | wx.TOP, 15)
        bodySizer = wx.BoxSizer(wx.HORIZONTAL)
        bodySizer.Add(wx.StaticBitmap(self, -1, wx.ArtProvider.GetBitmap(
            wx.ART_QUESTION, wx.ART_CMN_DIALOG)), 0, wx.ALIGN_TOP | wx.RIGHT, 15)
        bodySizer.Add(messageSizer, 1, wx.EXPAND)

        buttonSizer = wx.StdDialogButtonSizer()
        confirmButton = wx.Button(self, wx.ID_OK, label='Confirm')
        confirmButton.Bind(wx.EVT_BUTTON, self.OnConfirm)
        cancelButton = wx.Button(self, id=wx.ID_CANCEL)
        cancelButton.Bind(wx.EVT_BUTTON, self.OnCancel)
        buttonSizer.Add(confirmButton)
        buttonSizer.Add(cancelButton)
        buttonSizer.Realize()

        mainSizer = wx.BoxSizer(wx.VERTICAL)
        mainSizer.Add(bodySizer, 1, wx.EXPAND | wx.ALL, 10)
        mainSizer.Add(buttonSizer, 0, wx.ALIGN_RIGHT | wx.ALL, 10)
        self.SetSizerAndFit(mainSizer)
        if center_on_frame:
            x, y, w, h = GUIUtility.getInstance().frame.GetScreenRect()
            self.SetPosition((x + ((w - self.GetSize().x) / 2), y + ((h - self.GetSize().y) / 2)))
コード例 #19
0
ファイル: home.py プロジェクト: duy/tribler
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.SetBackgroundColour(wx.WHITE)
        self.SetForegroundColour(parent.GetForegroundColour())
                
        #Niels 04-06-2012: termextraction needs a session variable, create instance from mainthread
        TermExtraction.getInstance()

        self.nbdb       = None
        self.xxx_filter = Category.getInstance().xxx_filter
        self.guiutility = GUIUtility.getInstance()
        self.utility    = self.guiutility.utility

        vSizer = wx.BoxSizer(wx.VERTICAL)
        vSizer.Add(DetailHeader(self, "Click below to explore what's hot"), 0, wx.EXPAND)
        vSizer.AddSpacer((-1,10))

        self.panel = wx.Panel(self)
        self.panel.SetBackgroundColour(DEFAULT_BACKGROUND)
        self.vSizer = wx.BoxSizer(wx.VERTICAL)
        self.panel.SetSizer(self.vSizer)
        vSizer.Add(self.panel, 1, wx.EXPAND|wx.BOTTOM, 5)

        self.footer = wx.StaticText(self)
        vSizer.Add(self.footer, 0, wx.ALIGN_RIGHT|wx.RIGHT|wx.BOTTOM, 1)

        self.tags = []
        self.buzz_cache = [[],[],[]]
        self.last_shown_buzz = None

        row1_font = self.GetFont()
        row1_font.SetPointSize(row1_font.GetPointSize() + 10)
        row1_font.SetWeight(wx.FONTWEIGHT_BOLD)

        row2_font = self.GetFont()
        row2_font.SetPointSize(row2_font.GetPointSize() + 4)
        row2_font.SetWeight(wx.FONTWEIGHT_BOLD)

        row3_font = self.GetFont()
        row3_font.SetWeight(wx.FONTWEIGHT_BOLD)
        self.TERM_FONTS = [row1_font, row2_font, row3_font]

        self.panel.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow)
        self.panel.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow)

        text = wx.StaticText(self.panel, -1, '...collecting buzz information...')
        _set_font(text, fontcolour = BuzzPanel.INACTIVE_COLOR)
        self.vSizer.AddStretchSpacer()
        self.vSizer.Add(text, 0, wx.ALIGN_CENTER)
        self.vSizer.AddStretchSpacer()

        self.refresh = 5
        self.GetBuzzFromDB(doRefresh=True,samplesize=10)
        self.guiutility.addList(self)

        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.OnRefreshTimer, self.timer)
        self.timer.Start(1000, False)

        self.SetSizer(vSizer)
        self.Layout()
コード例 #20
0
ファイル: AddTorrent.py プロジェクト: duy/tribler
 def __init__(self, parent, frame, libraryTorrents = None):
     wx.Dialog.__init__(self, parent, -1, 'Add an external .torrent', size=(500,200))
     
     self.frame = frame
     self.guiutility = GUIUtility.getInstance()
     self.toChannel = libraryTorrents != None
     self.defaultDLConfig = DefaultDownloadStartupConfig.getInstance()
     
     vSizer = wx.BoxSizer(wx.VERTICAL)
     
     firstLine = wx.StaticText(self, -1, 'Please use one of the provided methods to import an external .torrent')
     vSizer.Add(firstLine, 0, wx.EXPAND|wx.BOTTOM, 3)
     vSizer.AddSpacer((-1, 25))
     
     header = wx.StaticText(self, -1, 'Browse for local .torrent file or files')
     _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
     vSizer.Add(header, 0, wx.EXPAND|wx.BOTTOM, 3)
     vSizer.Add(wx.StaticText(self, -1, 'Use this option if you have downloaded a .torrent manually'), 0, wx.BOTTOM, 3)
     
     browseButton = wx.Button(self, -1, 'Browse')
     browseButton.Bind(wx.EVT_BUTTON, self.OnBrowse)
     
     browseDirectory = wx.Button(self, -1, 'Browse for Directory')
     browseDirectory.Bind(wx.EVT_BUTTON, self.OnBrowseDir)
     
     hSizer = wx.BoxSizer(wx.HORIZONTAL)
     hSizer.Add(browseButton, 0, wx.RIGHT, 3)
     hSizer.Add(browseDirectory)
     vSizer.Add(hSizer, 0, wx.ALIGN_RIGHT|wx.BOTTOM, 3)
     vSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.BOTTOM, 10)
     
     header = wx.StaticText(self, -1, 'Url')
     _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
     vSizer.Add(header, 0, wx.EXPAND|wx.BOTTOM|wx.TOP, 3)
     vSizer.Add(wx.StaticText(self, -1, 'This could either be a direct http-link (starting with http://), or a magnet link'), 0, wx.BOTTOM, 3)
     
     hSizer = wx.BoxSizer(wx.HORIZONTAL)
     self.magnet = wx.TextCtrl(self, -1)
     hSizer.Add(self.magnet, 1, wx.ALIGN_CENTER_VERTICAL)
     linkButton = wx.Button(self, -1, "Add")
     linkButton.Bind(wx.EVT_BUTTON, self.OnAdd)
     hSizer.Add(linkButton, 0, wx.LEFT, 3)
     vSizer.Add(hSizer, 0 , wx.EXPAND|wx.BOTTOM, 3)
     
     vSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.BOTTOM, 10)
     if libraryTorrents != None:
         if len(libraryTorrents) > 0:
             header = wx.StaticText(self, -1, 'Choose one from you library')
             _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
             vSizer.Add(header, 0, wx.EXPAND|wx.BOTTOM|wx.TOP, 3)
             
             torrentNames = [torrent.name for torrent in libraryTorrents]
             
             hSizer = wx.BoxSizer(wx.HORIZONTAL)
             self.libraryChoice = wx.Choice(self, -1, choices=torrentNames)
             self.libraryChoice.torrents = libraryTorrents
             hSizer.Add(self.libraryChoice, 1, wx.ALIGN_CENTER_VERTICAL)
             
             linkButton = wx.Button(self, -1, "Add")
             linkButton.Bind(wx.EVT_BUTTON, self.OnLibrary)
             
             hSizer.Add(linkButton, 0, wx.LEFT, 3)
             vSizer.Add(hSizer, 0 , wx.EXPAND|wx.BOTTOM, 3)
         
         vSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.BOTTOM, 10)
         header = wx.StaticText(self, -1, 'Create your own .torrents')
         _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
         vSizer.Add(header, 0, wx.EXPAND|wx.BOTTOM|wx.TOP, 3)
         vSizer.Add(wx.StaticText(self, -1, 'Using your own local files'), 0, wx.BOTTOM, 3)
         
         create = wx.Button(self, -1, 'Create')
         create.Bind(wx.EVT_BUTTON, self.OnCreate)
         vSizer.Add(create, 0, wx.ALIGN_RIGHT|wx.BOTTOM, 3)
         
         self.choose = None
         
     else:
         self.choose = wx.CheckBox(self, -1, "Let me choose a downloadlocation for these torrents")
         self.choose.SetValue(self.defaultDLConfig.get_show_saveas())
         vSizer.Add(self.choose, 0, wx.EXPAND|wx.TOP|wx.BOTTOM, 3)
     
     sizer = wx.BoxSizer()
     sizer.Add(vSizer, 1, wx.EXPAND|wx.ALL, 10)
     self.SetSizerAndFit(sizer)
コード例 #21
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.SetBackgroundColour(wx.WHITE)
        self.SetForegroundColour(parent.GetForegroundColour())

        #Niels 04-06-2012: termextraction needs a session variable, create instance from mainthread
        TermExtraction.getInstance()

        self.nbdb = None
        self.xxx_filter = Category.getInstance().xxx_filter
        self.guiutility = GUIUtility.getInstance()
        self.utility = self.guiutility.utility

        vSizer = wx.BoxSizer(wx.VERTICAL)
        vSizer.Add(DetailHeader(self, "Click below to explore what's hot"), 0,
                   wx.EXPAND)
        vSizer.AddSpacer((-1, 10))

        self.panel = wx.Panel(self)
        self.panel.SetBackgroundColour(DEFAULT_BACKGROUND)
        self.vSizer = wx.BoxSizer(wx.VERTICAL)
        self.panel.SetSizer(self.vSizer)
        vSizer.Add(self.panel, 1, wx.EXPAND | wx.BOTTOM, 5)

        self.footer = wx.StaticText(self)
        vSizer.Add(self.footer, 0, wx.ALIGN_RIGHT | wx.RIGHT | wx.BOTTOM, 1)

        self.tags = []
        self.buzz_cache = [[], [], []]
        self.last_shown_buzz = None

        row1_font = self.GetFont()
        row1_font.SetPointSize(row1_font.GetPointSize() + 10)
        row1_font.SetWeight(wx.FONTWEIGHT_BOLD)

        row2_font = self.GetFont()
        row2_font.SetPointSize(row2_font.GetPointSize() + 4)
        row2_font.SetWeight(wx.FONTWEIGHT_BOLD)

        row3_font = self.GetFont()
        row3_font.SetWeight(wx.FONTWEIGHT_BOLD)
        self.TERM_FONTS = [row1_font, row2_font, row3_font]

        self.panel.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow)
        self.panel.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow)

        text = wx.StaticText(self.panel, -1,
                             '...collecting buzz information...')
        _set_font(text, fontcolour=BuzzPanel.INACTIVE_COLOR)
        self.vSizer.AddStretchSpacer()
        self.vSizer.Add(text, 0, wx.ALIGN_CENTER)
        self.vSizer.AddStretchSpacer()

        self.refresh = 5
        self.GetBuzzFromDB(doRefresh=True, samplesize=10)
        self.guiutility.addList(self)

        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.OnRefreshTimer, self.timer)
        self.timer.Start(1000, False)

        self.SetSizer(vSizer)
        self.Layout()
コード例 #22
0
    def __init__(self, parent, id):
        super(DispersySummaryPanel, self).__init__(parent, id)
        self.__utility = GUIUtility.getInstance().utility

        self.SetBackgroundColour(wx.WHITE)

        gridsizer = wx.FlexGridSizer(0, 2, 3, 10)
        gridsizer.AddGrowableCol(1)

        spacer = wx.BoxSizer()
        spacer.Add(gridsizer, 1, wx.EXPAND | wx.ALL, 3)

        self.SetSizer(spacer)
        self.__info_list = None
        self.__text_dict = {}

        # key, value, tip (optional)
        self.__info_list = [
            ["WAN Address", DATA_NONE, None],
            ["LAN Address", DATA_NONE, None],
            ["Connection", DATA_NONE, None],
            ["Runtime", DATA_NONE, None],
            ["Download", DATA_NONE, None],
            ["Upload", DATA_NONE, None],
            ["Packets Sent", DATA_NONE, "Packets sent vs Packets handled"],
            [
                "Packets Received", DATA_NONE,
                "Packets received vs Packets handled"
            ],
            [
                "Packets Success", DATA_NONE,
                "Messages successfully handled vs Packets received"
            ],
            [
                "Packets Dropped", DATA_NONE,
                "Packets dropped vs Packets received"
            ],
            [
                "Packets Delayed", DATA_NONE,
                "Packets being delayed vs Packets received"
            ],
            [
                "Packets Delayed send", DATA_NONE,
                "Total number of delaymessages or delaypacket messages being sent"
            ],
            [
                "Packets Delayed success", DATA_NONE,
                "Total number of packets which were delayed, and did not timeout"
            ],
            [
                "Packets Delayed timeout", DATA_NONE,
                "Total number of packets which were delayed, but got a timeout"
            ],
            ["Walker Success", DATA_NONE, None],
            [
                "Sync-Messages Created", DATA_NONE,
                "Total number of messages created by us in this session which should be synced"
            ],
            [
                "Bloom New", DATA_NONE,
                "Total number of bloomfilters created vs IntroductionRequest sent in this session"
            ],
            [
                "Bloom Reused", DATA_NONE,
                "Total number of bloomfilters reused vs IntroductionRequest sent in this session"
            ],
            [
                "Bloom Skipped", DATA_NONE,
                "Total number of bloomfilters skipped vs IntroductionRequest sent in this session"
            ],
            ["Debug Mode", DATA_NONE, None],
        ]

        for key, value, tooltip in self.__info_list:
            header = wx.StaticText(self, -1, key)
            _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
            gridsizer.Add(header)
            self.__text_dict[key] = wx.StaticText(self, -1, value)
            gridsizer.Add(self.__text_dict[key])

            if tooltip:
                header.SetToolTipString(tooltip)
                self.__text_dict[key].SetToolTipString(tooltip)

        self.SetupScrolling()
コード例 #23
0
    def __init__(self, parent, id):
        super(CommunityDetailPanel, self).__init__(parent,
                                                   id,
                                                   style=wx.RAISED_BORDER)
        self.SetBackgroundColour(LIST_GREY)

        self.__FIELDS = ("Identifier", "Member", "Classification",
                         "Global time", "Median global time",
                         "Acceptable range", "Walk success",
                         "Sync bloom created", "Sync bloom reused",
                         "Sync bloom skipped", "Packets Created",
                         "Packets Sent", "Packets Received", "Packets Success",
                         "Packets Dropped", "Packets Delayed Sent",
                         "Packets Delayed Received", "Packets Delayed Success",
                         "Packets Delayed Timeout", "Candidates", "Database")

        hsizer = wx.BoxSizer(wx.HORIZONTAL)

        info_panel = wx.Panel(self, -1, style=wx.BORDER_SUNKEN)
        info_panel.SetBackgroundColour(wx.WHITE)
        info_panel.SetMinSize((500, 300))
        self.__info_panel = info_panel

        self.__text = {}
        gridsizer = wx.FlexGridSizer(0, 2, 3, 3)
        for title in self.__FIELDS:
            key_text = wx.StaticText(info_panel, -1, title)
            _set_font(key_text, fontweight=wx.FONTWEIGHT_BOLD)

            value_text = wx.StaticText(info_panel, -1)
            gridsizer.AddMany([(key_text, 0, wx.EXPAND),
                               (value_text, 0, wx.EXPAND)])

            self.__text[title] = (key_text, value_text)
        info_panel.SetSizer(gridsizer)

        self.__detail_notebook = SimpleNotebook(self,
                                                show_single_tab=True,
                                                style=wx.NB_NOPAGETHEME)

        self.__candidate_list = AutoWidthListCtrl(
            self.__detail_notebook,
            -1,
            style=wx.LC_REPORT | wx.LC_ALIGN_LEFT | wx.BORDER_SUNKEN)
        self.__candidate_list.InsertColumn(0, "Global time", width=100)
        self.__candidate_list.InsertColumn(1, "LAN", width=170)
        self.__candidate_list.InsertColumn(2, "WAN", width=170)
        self.__candidate_list.InsertColumn(3, "MID")

        self.__rawinfo_panel = RawInfoPanel(self.__detail_notebook, -1)

        self.__database_list = AutoWidthListCtrl(
            self.__detail_notebook,
            -1,
            style=wx.LC_REPORT | wx.LC_ALIGN_LEFT | wx.BORDER_SUNKEN)
        self.__database_list.InsertColumn(0, "Count")
        self.__database_list.InsertColumn(1, "Info")

        self.__detail_notebook.AddPage(self.__candidate_list, "Candidates")
        self.__detail_notebook.AddPage(self.__rawinfo_panel, "RawInfo")
        self.__detail_notebook.AddPage(self.__database_list, "Database")

        hsizer.Add(self.__info_panel, 0, wx.EXPAND | wx.RIGHT, 2)
        hsizer.Add(self.__detail_notebook, 1, wx.EXPAND)
        self.SetSizer(hsizer)
コード例 #24
0
ファイル: CreateTorrentDialog.py プロジェクト: Azzhag/tribler
    def __init__(self, parent, recent_creation_config_file, recent_trackers_config_file,
                 suggested_trackers, to_channel=False):
        wx.Dialog.__init__(self, parent, -1, 'Create a .torrent', size=(600, 200), name="CreateTorrentDialog")

        self.to_channel = to_channel

        # setup layout
        vSizer = wx.BoxSizer(wx.VERTICAL)

        header = wx.StaticText(self, -1, 'Browse for a file or files')
        _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.locationText = StaticText(self, -1, '')
        vSizer.Add(self.locationText, 0, wx.EXPAND | wx.BOTTOM, 3)

        browseButton = wx.Button(self, -1, 'Browse')
        browseButton.Bind(wx.EVT_BUTTON, self.OnBrowse)

        browseDirButton = wx.Button(self, -1, 'Browse for a Directory')
        browseDirButton.Bind(wx.EVT_BUTTON, self.OnBrowseDir)

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(browseButton)
        hSizer.Add(browseDirButton)
        vSizer.Add(hSizer, 0, wx.ALIGN_RIGHT | wx.BOTTOM, 3)

        vSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, 10)

        header = wx.StaticText(self, -1, '.Torrent details')
        _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.foundFilesText = StaticText(self, -1, 'Please select a file or files first')
        vSizer.Add(self.foundFilesText, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.combineRadio = wx.RadioButton(self, -1, 'Combine files into a single .torrent', style=wx.RB_GROUP)
        self.combineRadio.Bind(wx.EVT_RADIOBUTTON, self.OnCombine)
        self.combineRadio.Enable(False)

        self.sepRadio = wx.RadioButton(self, -1, 'Create separate .torrent for every file')
        self.sepRadio.Bind(wx.EVT_RADIOBUTTON, self.OnCombine)
        self.sepRadio.Enable(False)

        vSizer.Add(self.combineRadio, 0, wx.EXPAND | wx.BOTTOM, 3)
        vSizer.Add(self.sepRadio, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.specifiedName = wx.TextCtrl(self, -1, '')
        self.specifiedName.Enable(False)
        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticText(self, -1, 'Specify a name'), 0, wx.ALIGN_CENTER_VERTICAL)
        hSizer.Add(self.specifiedName, 1, wx.EXPAND)
        vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        vSizer.Add(StaticText(self, -1, 'Trackers'))
        self.trackerList = wx.TextCtrl(self, -1, '', style=wx.TE_MULTILINE)
        self.trackerList.SetMinSize((500, -1))

        self.trackerHistory = wx.FileHistory(10)
        self.config = wx.FileConfig(appName="Tribler", localFilename=recent_creation_config_file)
        self.trackerHistory.Load(self.config)

        if self.trackerHistory.GetCount() > 0:
            trackers = [self.trackerHistory.GetHistoryFile(i) for i in range(self.trackerHistory.GetCount())]
            if len(trackers) < len(suggested_trackers):
                trackers.extend(suggested_trackers[:len(suggested_trackers) - len(trackers)])
        else:
            trackers = suggested_trackers

        for tracker in trackers:
            self.trackerList.AppendText(tracker + os.linesep)

        vSizer.Add(self.trackerList, 0, wx.EXPAND | wx.BOTTOM, 3)

        vSizer.Add(StaticText(self, -1, 'Comment'))
        self.commentList = wx.TextCtrl(self, -1, '', style=wx.TE_MULTILINE)
        vSizer.Add(self.commentList, 0, wx.EXPAND, 3)

        vSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP, 10)

        header = wx.StaticText(self, -1, 'Advanced options')
        _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM | wx.TOP, 3)

        abbrev_mb = " MB"
        abbrev_kb = " KB"
        piece_choices = ['Automatic',
                         '4' + abbrev_mb,
                         '2' + abbrev_mb,
                         '1' + abbrev_mb,
                         '512' + abbrev_kb,
                         '256' + abbrev_kb,
                         '128' + abbrev_kb,
                         '64' + abbrev_kb,
                         '32' + abbrev_kb]
        self.pieceChoice = wx.Choice(self, -1, choices=piece_choices)
        self.pieceChoice.SetSelection(0)
        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(StaticText(self, -1, 'Piecesize'), 1)
        hSizer.Add(self.pieceChoice)
        vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        vSizer.Add(StaticText(self, -1, 'Webseed'))
        self.webSeed = wx.TextCtrl(self, -1, 'Please select a file or files first')
        self.webSeed.Enable(False)
        vSizer.Add(self.webSeed, 0, wx.EXPAND | wx.BOTTOM, 3)

        cancel = wx.Button(self, wx.ID_CANCEL)
        cancel.Bind(wx.EVT_BUTTON, self.OnCancel)

        create = wx.Button(self, wx.ID_OK, 'Create .torrent(s)')
        create.Bind(wx.EVT_BUTTON, self.OnOk)

        bSizer = wx.StdDialogButtonSizer()
        bSizer.AddButton(cancel)
        bSizer.AddButton(create)
        bSizer.Realize()
        vSizer.Add(bSizer, 0, wx.EXPAND)

        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND | wx.ALL, 10)
        self.SetSizerAndFit(sizer)

        self.selectedPaths = []
        self.createdTorrents = []
        self.cancelEvent = Event()

        self.filehistory = wx.FileHistory(1)
        self.fileconfig = wx.FileConfig(appName="Tribler", localFilename=recent_trackers_config_file)
        self.filehistory.Load(self.fileconfig)

        if self.filehistory.GetCount() > 0:
            self.latestFile = self.filehistory.GetHistoryFile(0)
        else:
            self.latestFile = ''
        self.paths = None
コード例 #25
0
ファイル: CreditMiningPanel.py プロジェクト: brussee/tribler
    def create_header_info(self, parent):
        """
        function to create wx header/info panel above the credit mining list
        """
        if self.guiutility.frame.top_bg:
            header = FancyPanel(parent, border=wx.BOTTOM, name="cm_header")
            text = wx.StaticText(header, -1, 'Investment overview')

            def on_add_source(_):
                """
                callback when a user wants to add new source
                """
                dlg = AddBoostingSource(None)
                if dlg.ShowModal() == wx.ID_OK:
                    source, archive = dlg.get_value()
                    if source:
                        self.boosting_manager.add_source(source)
                        self.boosting_manager.set_archive(source, archive)

                        self.sourcelist.create_source_item(
                            self.boosting_manager.boosting_sources[source])

                dlg.Destroy()

            def on_remove_source(_):
                """
                callback when a user wants to remove source
                """
                dlg = RemoveBoostingSource(None)
                if dlg.ShowModal() == wx.ID_OK and dlg.get_value():
                    self.boosting_manager.remove_source(dlg.get_value())
                    self.sourcelist.refresh_sourcelist_data()
                dlg.Destroy()

            addsource = LinkStaticText(header, 'Add', icon=None)
            addsource.Bind(wx.EVT_LEFT_UP, on_add_source)
            removesource = LinkStaticText(header, 'Remove', icon=None)
            removesource.Bind(wx.EVT_LEFT_UP, on_remove_source)

            self.b_up = wx.StaticText(header,
                                      -1,
                                      'Total bytes up: -',
                                      name="b_up")
            self.b_down = wx.StaticText(header,
                                        -1,
                                        'Total bytes down: -',
                                        name="b_down")
            self.s_up = wx.StaticText(header,
                                      -1,
                                      'Total speed up: -',
                                      name="s_up")
            self.s_down = wx.StaticText(header,
                                        -1,
                                        'Total speed down: -',
                                        name="s_down")
            self.iv_sum = wx.StaticText(header,
                                        -1,
                                        'Investment summary: -',
                                        name="iv_sum")
            _set_font(text, size_increment=2, fontweight=wx.FONTWEIGHT_BOLD)
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.AddStretchSpacer()
            titlesizer = wx.BoxSizer(wx.HORIZONTAL)
            titlesizer.Add(text, 0, wx.ALIGN_BOTTOM | wx.RIGHT, 5)
            titlesizer.Add(wx.StaticText(header, -1, '('), 0, wx.ALIGN_BOTTOM)
            titlesizer.Add(addsource, 0, wx.ALIGN_BOTTOM)
            titlesizer.Add(wx.StaticText(header, -1, '/'), 0, wx.ALIGN_BOTTOM)
            titlesizer.Add(removesource, 0, wx.ALIGN_BOTTOM)
            titlesizer.Add(wx.StaticText(header, -1, ' boosting source)'), 0,
                           wx.ALIGN_BOTTOM)
            sizer.Add(titlesizer, 0, wx.LEFT | wx.BOTTOM, 5)
            sizer.Add(self.b_up, 0, wx.LEFT, 5)
            sizer.Add(self.b_down, 0, wx.LEFT, 5)
            sizer.Add(self.s_up, 0, wx.LEFT, 5)
            sizer.Add(self.s_down, 0, wx.LEFT, 5)
            sizer.Add(self.iv_sum, 0, wx.LEFT, 5)
            sizer.AddStretchSpacer()
            header.SetSizer(sizer)
            header.SetMinSize((-1, 100))
        else:
            raise NotYetImplementedException('')

        return header
コード例 #26
0
ファイル: DispersyDebugFrame.py プロジェクト: Azzhag/tribler
    def __init__(self, parent, id):
        super(DispersySummaryPanel, self).__init__(parent, id)
        self.__utility = GUIUtility.getInstance().utility

        self.SetBackgroundColour(wx.WHITE)

        gridsizer = wx.FlexGridSizer(0, 2, 3, 10)
        gridsizer.AddGrowableCol(1)

        spacer = wx.BoxSizer()
        spacer.Add(gridsizer, 1, wx.EXPAND | wx.ALL, 3)

        self.SetSizer(spacer)
        self.__info_list = None
        self.__text_dict = {}

        # key, value, tip (optional)
        self.__info_list = [
            ["WAN Address", DATA_NONE, None],
            ["LAN Address", DATA_NONE, None],
            ["Connection", DATA_NONE, None],
            ["Runtime", DATA_NONE, None],
            ["Download", DATA_NONE, None],
            ["Upload", DATA_NONE, None],
            ["Packets Sent", DATA_NONE,
                "Packets sent vs Packets handled"],
            ["Packets Received", DATA_NONE,
                "Packets received vs Packets handled"],
            ["Packets Success", DATA_NONE,
                "Messages successfully handled vs Packets received"],
            ["Packets Dropped", DATA_NONE,
                "Packets dropped vs Packets received"],
            ["Packets Delayed", DATA_NONE,
                "Packets being delayed vs Packets received"],
            ["Packets Delayed send", DATA_NONE,
                "Total number of delaymessages or delaypacket messages being sent"],
            ["Packets Delayed success", DATA_NONE,
                "Total number of packets which were delayed, and did not timeout"],
            ["Packets Delayed timeout", DATA_NONE,
                "Total number of packets which were delayed, but got a timeout"],
            ["Walker Success", DATA_NONE, None],
            ["Sync-Messages Created", DATA_NONE,
                "Total number of messages created by us in this session which should be synced"],
            ["Bloom New", DATA_NONE,
                "Total number of bloomfilters created vs IntroductionRequest sent in this session"],
            ["Bloom Reused", DATA_NONE,
                "Total number of bloomfilters reused vs IntroductionRequest sent in this session"],
            ["Bloom Skipped", DATA_NONE,
                "Total number of bloomfilters skipped vs IntroductionRequest sent in this session"],
            ["Debug Mode", DATA_NONE, None],
        ]

        for key, value, tooltip in self.__info_list:
            header = wx.StaticText(self, -1, key)
            _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
            gridsizer.Add(header)
            self.__text_dict[key] = wx.StaticText(self, -1, value)
            gridsizer.Add(self.__text_dict[key])

            if tooltip:
                header.SetToolTipString(tooltip)
                self.__text_dict[key].SetToolTipString(tooltip)

        self.SetupScrolling()
コード例 #27
0
    def __init__(self,
                 parent,
                 recent_creation_config_file,
                 recent_trackers_config_file,
                 suggested_trackers,
                 to_channel=False):
        wx.Dialog.__init__(self,
                           parent,
                           -1,
                           'Create a .torrent',
                           size=(600, 200),
                           name="CreateTorrentDialog")

        self.to_channel = to_channel

        # setup layout
        vSizer = wx.BoxSizer(wx.VERTICAL)

        header = wx.StaticText(self, -1, 'Browse for a file or files')
        _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.locationText = StaticText(self, -1, '')
        vSizer.Add(self.locationText, 0, wx.EXPAND | wx.BOTTOM, 3)

        browseButton = wx.Button(self, -1, 'Browse')
        browseButton.Bind(wx.EVT_BUTTON, self.OnBrowse)

        browseDirButton = wx.Button(self, -1, 'Browse for a Directory')
        browseDirButton.Bind(wx.EVT_BUTTON, self.OnBrowseDir)

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(browseButton)
        hSizer.Add(browseDirButton)
        vSizer.Add(hSizer, 0, wx.ALIGN_RIGHT | wx.BOTTOM, 3)

        vSizer.Add(wx.StaticLine(self, -1), 0,
                   wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, 10)

        header = wx.StaticText(self, -1, '.Torrent details')
        _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.foundFilesText = StaticText(
            self, -1, 'Please select a file or files first')
        vSizer.Add(self.foundFilesText, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.combineRadio = wx.RadioButton(
            self,
            -1,
            'Combine files into a single .torrent',
            style=wx.RB_GROUP)
        self.combineRadio.Bind(wx.EVT_RADIOBUTTON, self.OnCombine)
        self.combineRadio.Enable(False)

        self.sepRadio = wx.RadioButton(
            self, -1, 'Create separate .torrent for every file')
        self.sepRadio.Bind(wx.EVT_RADIOBUTTON, self.OnCombine)
        self.sepRadio.Enable(False)

        vSizer.Add(self.combineRadio, 0, wx.EXPAND | wx.BOTTOM, 3)
        vSizer.Add(self.sepRadio, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.specifiedName = wx.TextCtrl(self, -1, '')
        self.specifiedName.Enable(False)
        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticText(self, -1, 'Specify a name'), 0,
                   wx.ALIGN_CENTER_VERTICAL)
        hSizer.Add(self.specifiedName, 1, wx.EXPAND)
        vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        vSizer.Add(StaticText(self, -1, 'Trackers'))
        self.trackerList = wx.TextCtrl(self, -1, '', style=wx.TE_MULTILINE)
        self.trackerList.SetMinSize((500, -1))

        self.trackerHistory = wx.FileHistory(10)
        self.config = wx.FileConfig(appName="Tribler",
                                    localFilename=recent_creation_config_file)
        self.trackerHistory.Load(self.config)

        if self.trackerHistory.GetCount() > 0:
            trackers = [
                self.trackerHistory.GetHistoryFile(i)
                for i in range(self.trackerHistory.GetCount())
            ]
            if len(trackers) < len(suggested_trackers):
                trackers.extend(suggested_trackers[:len(suggested_trackers) -
                                                   len(trackers)])
        else:
            trackers = suggested_trackers

        for tracker in trackers:
            self.trackerList.AppendText(tracker + os.linesep)

        vSizer.Add(self.trackerList, 0, wx.EXPAND | wx.BOTTOM, 3)

        vSizer.Add(StaticText(self, -1, 'Comment'))
        self.commentList = wx.TextCtrl(self, -1, '', style=wx.TE_MULTILINE)
        vSizer.Add(self.commentList, 0, wx.EXPAND, 3)

        vSizer.Add(wx.StaticLine(self, -1), 0,
                   wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP, 10)

        header = wx.StaticText(self, -1, 'Advanced options')
        _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM | wx.TOP, 3)

        abbrev_mb = " MB"
        abbrev_kb = " KB"
        piece_choices = [
            'Automatic', '4' + abbrev_mb, '2' + abbrev_mb, '1' + abbrev_mb,
            '512' + abbrev_kb, '256' + abbrev_kb, '128' + abbrev_kb,
            '64' + abbrev_kb, '32' + abbrev_kb
        ]
        self.pieceChoice = wx.Choice(self, -1, choices=piece_choices)
        self.pieceChoice.SetSelection(0)
        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(StaticText(self, -1, 'Piecesize'), 1)
        hSizer.Add(self.pieceChoice)
        vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        vSizer.Add(StaticText(self, -1, 'Webseed'))
        self.webSeed = wx.TextCtrl(self, -1,
                                   'Please select a file or files first')
        self.webSeed.Enable(False)
        vSizer.Add(self.webSeed, 0, wx.EXPAND | wx.BOTTOM, 3)

        cancel = wx.Button(self, wx.ID_CANCEL)
        cancel.Bind(wx.EVT_BUTTON, self.OnCancel)

        create = wx.Button(self, wx.ID_OK, 'Create .torrent(s)')
        create.Bind(wx.EVT_BUTTON, self.OnOk)

        bSizer = wx.StdDialogButtonSizer()
        bSizer.AddButton(cancel)
        bSizer.AddButton(create)
        bSizer.Realize()
        vSizer.Add(bSizer, 0, wx.EXPAND)

        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND | wx.ALL, 10)
        self.SetSizerAndFit(sizer)

        self.selectedPaths = []
        self.createdTorrents = []
        self.cancelEvent = Event()

        self.filehistory = wx.FileHistory(1)
        self.fileconfig = wx.FileConfig(
            appName="Tribler", localFilename=recent_trackers_config_file)
        self.filehistory.Load(self.fileconfig)

        if self.filehistory.GetCount() > 0:
            self.latestFile = self.filehistory.GetHistoryFile(0)
        else:
            self.latestFile = ''
        self.paths = None
コード例 #28
0
ファイル: SaveAs.py プロジェクト: NielsZeilemaker/tribler
    def __init__(self, parent, tdef, defaultdir, defaultname, configfile, selectedFiles = None):
        wx.Dialog.__init__(self, parent, -1, 'Please specify a target directory', size=(600,450))

        self.filehistory = wx.FileHistory(25)
        self.config = wx.FileConfig(appName = "Tribler", localFilename = configfile)
        self.filehistory.Load(self.config)
        self.defaultdir = defaultdir
        self.guiutility = GUIUtility.getInstance()
        self.listCtrl = None

        if self.filehistory.GetCount() > 0:
            lastUsed = self.filehistory.GetHistoryFile(0)
        else:
            lastUsed = defaultdir

        vSizer = wx.BoxSizer(wx.VERTICAL)

        if tdef:
            line = 'Please select a directory where to save:'
        else:
            line = 'Please select a directory where to save this torrent'

        firstLine = wx.StaticText(self, -1, line)
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(firstLine, 0, wx.EXPAND|wx.BOTTOM, 3)

        if tdef:
            torrentName = wx.StaticText(self, -1, tdef.get_name_as_unicode())
            torrentName.SetMinSize((1, -1))
            vSizer.Add(torrentName, 0, wx.EXPAND|wx.BOTTOM|wx.RIGHT, 3)

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticText(self, -1, 'Save as:'), 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.BOTTOM, 3)

        choices = [self.filehistory.GetHistoryFile(i) for i in range(self.filehistory.GetCount())]
        if defaultdir not in choices:
            choices.append(defaultdir)

        if defaultname:
            choices.insert(0, os.path.join(lastUsed, defaultname))
            self.dirTextCtrl = wx.ComboBox(self, -1, os.path.join(lastUsed, defaultname), choices = choices, style = wx.CB_DROPDOWN)
        else:
            self.dirTextCtrl = wx.ComboBox(self, -1, lastUsed, choices = choices, style = wx.CB_DROPDOWN)
        self.dirTextCtrl.Select(0)

        hSizer.Add(self.dirTextCtrl, 1, wx.EXPAND|wx.RIGHT|wx.BOTTOM, 3)

        browseButton = wx.Button(self, -1, 'Browse')
        browseButton.Bind(wx.EVT_BUTTON, self.OnBrowseDir)
        hSizer.Add(browseButton)

        vSizer.Add(hSizer, 0, wx.EXPAND|wx.BOTTOM, 3)

        if tdef and tdef.get_files():
            vSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.BOTTOM, 10)

            firstLine = wx.StaticText(self, -1, "Content:")
            _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
            vSizer.Add(firstLine, 0, wx.BOTTOM, 3)

            vSizer.Add(wx.StaticText(self, -1, 'Use the checkboxes to choose which files to download.\nUse ctrl+a to select all/deselect all.'), 0, wx.BOTTOM, 3)

            self.listCtrl = CheckSelectableListCtrl(self)
            self.listCtrl.InsertColumn(0, 'Name')
            self.listCtrl.InsertColumn(1, 'Size', wx.LIST_FORMAT_RIGHT)

            #Add files
            def sort_by_size(a, b):
                return cmp(a[1],b[1])

            files = tdef.get_files_as_unicode_with_length()
            files.sort(sort_by_size, reverse = True)

            for filename, size in files:
                try:
                    pos = self.listCtrl.InsertStringItem(sys.maxint, filename)
                except:
                    try:
                        pos = self.listCtrl.InsertStringItem(sys.maxint, filename.decode('utf-8','ignore'))
                    except:
                        print >> sys.stderr, "Could not format filename", self.torrent.name
                self.listCtrl.SetItemData(pos, pos)
                self.listCtrl.SetStringItem(pos, 1, self.guiutility.utility.size_format(size))

                if selectedFiles:
                    self.listCtrl.CheckItem(pos, filename in selectedFiles)

            if selectedFiles == None:
                self.listCtrl.doSelectAll()

            self.listCtrl.setResizeColumn(0)
            self.listCtrl.SetColumnWidth(1, wx.LIST_AUTOSIZE) #autosize only works after adding rows
            vSizer.Add(self.listCtrl, 1, wx.EXPAND|wx.BOTTOM, 3)

            self.listCtrl.SetFocus()
            def OnKeyUp(event):
                if event.GetKeyCode() == wx.WXK_RETURN:
                    self.OnOk()
                else:
                    event.Skip()
            self.listCtrl.Bind(wx.EVT_KEY_UP, OnKeyUp)
        else:
            self.SetSize((600,150))

        cancel = wx.Button(self, wx.ID_CANCEL)
        cancel.Bind(wx.EVT_BUTTON, self.OnCancel)

        ok = wx.Button(self, wx.ID_OK)
        ok.Bind(wx.EVT_BUTTON, self.OnOk)

        bSizer = wx.StdDialogButtonSizer()
        bSizer.AddButton(cancel)
        bSizer.AddButton(ok)
        bSizer.Realize()
        vSizer.Add(bSizer, 0, wx.EXPAND|wx.BOTTOM, 3)

        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND|wx.ALL, 10)
        self.SetSizer(sizer)
コード例 #29
0
    def __init__(self, parent, torrent):
        canEdit = canComment = False
        if torrent.hasChannel():
            state, iamModerator = torrent.channel.getState()
            canEdit = state >= ChannelCommunity.CHANNEL_OPEN

        height = 125
        if canEdit:
            height = 200

        wx.Dialog.__init__(self,
                           parent,
                           -1,
                           'Are you sure you want to remove this torrent?',
                           size=(600, height))
        bitmap = wx.ArtProvider.GetBitmap(wx.ART_QUESTION, wx.ART_MESSAGE_BOX)
        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticBitmap(self, -1, bitmap), 0, wx.RIGHT, 10)

        vSizer = wx.BoxSizer(wx.VERTICAL)
        firstLine = StaticText(
            self, -1,
            "Delete '%s' from disk, or just remove them from your downloads?" %
            torrent.name)
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        firstLine.Wrap(self.GetSize()[0] - bitmap.GetSize()[0] - 10)
        firstLine.SetMinSize((1, -1))

        vSizer.Add(firstLine, 0, wx.EXPAND | wx.BOTTOM, 3)
        vSizer.Add(
            StaticText(
                self, -1,
                "Removing from disk will move the selected item to your trash."
            ), 0, wx.EXPAND)

        vSizer.AddStretchSpacer()

        self.newName = None
        if canEdit:
            vSizer.Add(
                StaticText(
                    self, -1,
                    "While we're at it, can you improve the name of this torrent?"
                ), 0, wx.EXPAND | wx.BOTTOM, 3)
            self.newName = EditText(self, torrent.name)
            vSizer.Add(self.newName, 0, wx.EXPAND)
            vSizer.AddStretchSpacer()

        bSizer = wx.BoxSizer(wx.HORIZONTAL)
        bSizer.AddStretchSpacer()

        bSizer.Add(wx.Button(self, wx.ID_CANCEL), 0, wx.RIGHT, 3)
        bSizer.Add(
            wx.Button(self, wx.ID_DEFAULT, 'Only delete from downloads'), 0,
            wx.RIGHT, 3)
        bSizer.Add(wx.Button(self, wx.ID_DELETE, 'Also delete from disk'))

        vSizer.Add(bSizer, 0, wx.ALIGN_RIGHT | wx.TOP, 7)
        hSizer.Add(vSizer, 1, wx.EXPAND)

        border = wx.BoxSizer()
        border.Add(hSizer, 1, wx.ALL | wx.EXPAND, 10)

        self.Bind(wx.EVT_BUTTON, lambda event: self.EndModal(event.GetId()))
        self.SetSizer(border)
        self.Layout()
        self.CenterOnParent()
コード例 #30
0
ファイル: MoveTorrents.py プロジェクト: duy/tribler
    def __init__(self, parent, labels, download_states):
        wx.Dialog.__init__(self, parent, -1, 'Please select the torrents you want to move', size=(750,450))
        
        self.download_states = download_states
        vSizer = wx.BoxSizer(wx.VERTICAL)
        message = 'Please select all torrents which should be moved'
        message += "\nUse ctrl+a to select all/deselect all."
        
        firstLine = wx.StaticText(self, -1, message)
        _set_font(firstLine, fontweight = wx.FONTWEIGHT_BOLD)
        vSizer.Add(firstLine, 0, wx.EXPAND|wx.BOTTOM, 3)
              
        self.listCtrl = CheckSelectableListCtrl(self)
        self.listCtrl.InsertColumn(0, 'Torrent')
        self.listCtrl.InsertColumn(1, 'Current Location')
        
        self.listCtrl.setResizeColumn(0)
        
        for i, label in enumerate(labels):
            row = self.listCtrl.InsertStringItem(sys.maxint, label)
            
            download = download_states[i].get_download()
            self.listCtrl.SetStringItem(row, 1, download.get_dest_dir())

        self.listCtrl.SetColumnWidth(1, wx.LIST_AUTOSIZE)
        vSizer.Add(self.listCtrl, 1, wx.EXPAND|wx.BOTTOM|wx.TOP, 3)

        self.destTextCtrl = wx.TextCtrl(self)
        self.browseButton = wx.Button(self, -1, 'Browse')
        self.browseButton.Bind(wx.EVT_BUTTON, self.OnBrowse)
        
        moveTo = wx.StaticText(self, -1, 'Move to:')
        _set_font(moveTo, fontweight = wx.FONTWEIGHT_BOLD)
        vSizer.Add(moveTo)
        vSizer.Add(wx.StaticText(self, -1, 'Please note that all multi-file torrents create a directory themselves.\nYour new destination should specify the base dir for all torrents.'))
        
        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(self.destTextCtrl, 1, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 3)
        hSizer.Add(self.browseButton, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 3)
        vSizer.Add(hSizer, 0, wx.EXPAND|wx.BOTTOM, 3)
        
        self.moveFiles = wx.CheckBox(self, -1, 'Move files from current destination to new destination')
        self.ignoreFiles = wx.CheckBox(self, -1, 'Do not overwrite files already existing at new destination')
        
        vSizer.Add(self.moveFiles)
        vSizer.Add(self.ignoreFiles)
        
        cancel = wx.Button(self, wx.ID_CANCEL)
        cancel.Bind(wx.EVT_BUTTON, self.OnCancel)
        
        ok = wx.Button(self, wx.ID_OK)
        ok.Bind(wx.EVT_BUTTON, self.OnOk)
        
        bSizer = wx.StdDialogButtonSizer()
        bSizer.AddButton(cancel)
        bSizer.AddButton(ok)
        bSizer.Realize()
        vSizer.Add(bSizer, 0, wx.EXPAND|wx.BOTTOM, 3)
        
        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND|wx.ALL, 10)
        self.SetSizer(sizer)
コード例 #31
0
    def __init__(self, parent, torrents):
        canEdit = False
        single = len(torrents) == 1
        if single and torrents[0].hasChannel():
            state = torrents[0].channel.getState()
            canEdit = state >= ChannelCommunity.CHANNEL_OPEN

        wx.Dialog.__init__(
            self,
            parent,
            -1,
            'Are you sure you want to remove the selected torrent%s?' %
            ('' if single else 's'),
            size=(600, -1),
            name="RemoveTorrent")
        bitmap = wx.ArtProvider.GetBitmap(wx.ART_QUESTION, wx.ART_MESSAGE_BOX)
        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticBitmap(self, -1, bitmap), 0, wx.RIGHT, 10)

        vSizer = wx.BoxSizer(wx.VERTICAL)
        firstLine = StaticText(self, -1, '')
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        if single:
            firstLineMsg = "Delete '%s' from disk, or just remove it from your downloads?" % torrents[
                0].name
        else:
            firstLineMsg = "Delete %s torrents from disk, or just remove them from your downloads?" % len(
                torrents)
        cdc = wx.ClientDC(firstLine)
        cdc.SetFont(firstLine.GetFont())
        firstLineMsg = wordwrap(firstLineMsg,
                                self.GetSize()[0] - bitmap.GetSize()[0] - 30,
                                cdc,
                                breakLongWords=True,
                                margin=0)
        firstLine.SetLabel(firstLineMsg)
        firstLine.SetMinSize((1, -1))
        vSizer.Add(firstLine, 0, wx.EXPAND | wx.BOTTOM, 3)
        vSizer.Add(
            StaticText(
                self, -1,
                "Removing from disk will move the selected item%s to your trash."
                % ('' if single else 's')), 0, wx.EXPAND)

        vSizer.AddStretchSpacer()

        self.newName = None
        if single and canEdit:
            vSizer.Add(
                StaticText(
                    self, -1,
                    "While we're at it, can you improve the name of this torrent?"
                ), 0, wx.EXPAND | wx.BOTTOM, 3)
            self.newName = EditText(self, torrents[0].name)
            vSizer.Add(self.newName, 0, wx.EXPAND)
            vSizer.AddStretchSpacer()

        bSizer = wx.BoxSizer(wx.HORIZONTAL)
        bSizer.AddStretchSpacer()

        bSizer.Add(wx.Button(self, wx.ID_CANCEL), 0, wx.RIGHT, 3)
        bSizer.Add(
            wx.Button(self, wx.ID_DEFAULT, 'Only delete from downloads'), 0,
            wx.RIGHT, 3)
        bSizer.Add(wx.Button(self, wx.ID_DELETE, 'Also delete from disk'))

        vSizer.Add(bSizer, 0, wx.ALIGN_RIGHT | wx.TOP, 7)
        hSizer.Add(vSizer, 1, wx.EXPAND)

        border = wx.BoxSizer()
        border.Add(hSizer, 1, wx.ALL | wx.EXPAND, 10)

        self.Bind(wx.EVT_BUTTON, lambda event: self.EndModal(event.GetId()))
        self.SetSizer(border)
        self.SetSize((-1, self.GetBestSize()[1]))
        self.Layout()
        self.CenterOnParent()
コード例 #32
0
    def __init__(self, parent, labels, download_states):
        wx.Dialog.__init__(self, parent, -1, 'Please select the torrents you want to move', size=(750,450))

        self.download_states = download_states
        vSizer = wx.BoxSizer(wx.VERTICAL)
        message = 'Please select all torrents which should be moved'
        message += "\nUse ctrl+a to select all/deselect all."

        firstLine = wx.StaticText(self, -1, message)
        _set_font(firstLine, fontweight = wx.FONTWEIGHT_BOLD)
        vSizer.Add(firstLine, 0, wx.EXPAND|wx.BOTTOM, 3)

        self.listCtrl = CheckSelectableListCtrl(self)
        self.listCtrl.InsertColumn(0, 'Torrent')
        self.listCtrl.InsertColumn(1, 'Current Location')

        self.listCtrl.setResizeColumn(0)

        for i, label in enumerate(labels):
            row = self.listCtrl.InsertStringItem(sys.maxint, label)

            download = download_states[i].get_download()
            self.listCtrl.SetStringItem(row, 1, download.get_dest_dir())

        self.listCtrl.SetColumnWidth(1, wx.LIST_AUTOSIZE)
        vSizer.Add(self.listCtrl, 1, wx.EXPAND|wx.BOTTOM|wx.TOP, 3)

        self.destTextCtrl = wx.TextCtrl(self)
        self.browseButton = wx.Button(self, -1, 'Browse')
        self.browseButton.Bind(wx.EVT_BUTTON, self.OnBrowse)

        moveTo = wx.StaticText(self, -1, 'Move to:')
        _set_font(moveTo, fontweight = wx.FONTWEIGHT_BOLD)
        vSizer.Add(moveTo)
        vSizer.Add(wx.StaticText(self, -1, 'Please note that all multi-file torrents create a directory themselves.\nYour new destination should specify the base dir for all torrents.'))

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(self.destTextCtrl, 1, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 3)
        hSizer.Add(self.browseButton, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 3)
        vSizer.Add(hSizer, 0, wx.EXPAND|wx.BOTTOM, 3)

        self.moveFiles = wx.CheckBox(self, -1, 'Move files from current destination to new destination')
        self.ignoreFiles = wx.CheckBox(self, -1, 'Do not overwrite files already existing at new destination')

        vSizer.Add(self.moveFiles)
        vSizer.Add(self.ignoreFiles)

        cancel = wx.Button(self, wx.ID_CANCEL)
        cancel.Bind(wx.EVT_BUTTON, self.OnCancel)

        ok = wx.Button(self, wx.ID_OK)
        ok.Bind(wx.EVT_BUTTON, self.OnOk)

        bSizer = wx.StdDialogButtonSizer()
        bSizer.AddButton(cancel)
        bSizer.AddButton(ok)
        bSizer.Realize()
        vSizer.Add(bSizer, 0, wx.EXPAND|wx.BOTTOM, 3)

        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND|wx.ALL, 10)
        self.SetSizer(sizer)
コード例 #33
0
ファイル: SaveAs.py プロジェクト: Azzhag/tribler
    def __init__(self, parent, tdef, defaultdir, defaultname, selectedFiles=None):
        self._logger = logging.getLogger(self.__class__.__name__)
        wx.Dialog.__init__(self, parent, -1, 'Please specify a target directory', name="SaveAsDialog")

        self.guiutility = GUIUtility.getInstance()
        self.utility = self.guiutility.utility
        self.SetSize((600, 550))

        self.filehistory = []
        try:
            self.filehistory = json.loads(self.utility.read_config("recent_download_history", literal_eval=False))
        except:
            pass

        self.defaultdir = defaultdir
        self.listCtrl = None
        self.collected = tdef

        lastUsed = self.filehistory[0] if self.filehistory else defaultdir

        vSizer = wx.BoxSizer(wx.VERTICAL)

        if tdef:
            line = 'Please select a directory where to save:'
        else:
            line = 'Please select a directory where to save this torrent'

        firstLine = wx.StaticText(self, -1, line)
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(firstLine, 0, wx.EXPAND | wx.BOTTOM, 3)

        if tdef:
            torrentName = wx.StaticText(self, -1, tdef.get_name_as_unicode())
            torrentName.SetMinSize((1, -1))
            vSizer.Add(torrentName, 0, wx.EXPAND | wx.BOTTOM | wx.RIGHT, 3)

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticText(self, -1, 'Save as:'), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.BOTTOM, 3)

        choices = copy.copy(self.filehistory)
        if defaultdir not in choices:
            choices.append(defaultdir)

        if defaultname:
            default_path = os.path.join(lastUsed, defaultname)
            choices.insert(0, default_path)
        else:
            default_path = lastUsed

        self.dirTextCtrl = wx.ComboBox(self, -1, default_path, choices=choices, style=wx.CB_DROPDOWN)
        self.dirTextCtrl.Select(0)

        hSizer.Add(self.dirTextCtrl, 1, wx.EXPAND | wx.RIGHT | wx.BOTTOM, 3)

        browseButton = wx.Button(self, -1, 'Browse')
        browseButton.Bind(wx.EVT_BUTTON, self.OnBrowseDir)
        hSizer.Add(browseButton)

        vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.cancel = wx.Button(self, wx.ID_CANCEL)
        self.cancel.Bind(wx.EVT_BUTTON, self.OnCancel)

        self.ok = wx.Button(self, wx.ID_OK)
        self.ok.Bind(wx.EVT_BUTTON, self.OnOk)

        self.anonymity_dialog = None
        self.anonymity_dialog = AnonymityDialog(self)
        vSizer.Add(self.anonymity_dialog, 0, wx.EXPAND, 3)

        self.Bind(EVT_COLLECTED, self.OnCollected)

        # Add file list
        if tdef and tdef.get_files():
            self.AddFileList(tdef, selectedFiles, vSizer, len(vSizer.GetChildren()))

        elif isinstance(tdef, TorrentDefNoMetainfo):
            text = wx.StaticText(self, -1, "Attempting to retrieve .torrent...")
            _set_font(text, size_increment=1)
            ag = wx.animate.GIFAnimationCtrl(self, -1, os.path.join(
                self.guiutility.utility.getPath(), LIBRARYNAME, 'Main', 'vwxGUI', 'images', 'search_new.gif'))
            ag.Play()
            sizer = wx.BoxSizer(wx.HORIZONTAL)
            sizer.AddStretchSpacer()
            sizer.Add(text, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 10)
            sizer.Add(ag, 0, wx.ALIGN_CENTER_VERTICAL)
            sizer.AddStretchSpacer()
            vSizer.Add(sizer, 1, wx.EXPAND | wx.BOTTOM, 3)
            self.SetSize((600, 285))

            # convert tdef into guidbtuple, and collect it using torrentsearch_manager.downloadTorrentfileFromPeers
            torrent = Torrent.fromTorrentDef(tdef)
            torrentsearch_manager = self.guiutility.torrentsearch_manager

            def callback(saveas_id, infohash):
                saveas = wx.FindWindowById(saveas_id)
                if saveas:
                    tdef = TorrentDef.load_from_memory(self.utility.session.lm.torrent_store.get(infohash))
                    event = CollectedEvent(tdef=tdef)
                    wx.PostEvent(saveas, event)

            cb = lambda torrent_filename, saveas_id = self.Id: callback(saveas_id, torrent_filename)
            torrentsearch_manager.downloadTorrentfileFromPeers(torrent, cb)

        bSizer = wx.StdDialogButtonSizer()
        bSizer.AddButton(self.cancel)
        bSizer.AddButton(self.ok)
        bSizer.Realize()
        vSizer.Add(bSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND | wx.ALL, 10)
        self.SetSizer(sizer)
コード例 #34
0
ファイル: AddTorrent.py プロジェクト: brussee/tribler
    def __init__(self, parent, frame, libraryTorrents=None):
        wx.Dialog.__init__(self,
                           parent,
                           -1,
                           'Add an external .torrent',
                           size=(500, 200),
                           name="AddTorrentDialog")

        self.frame = frame
        self.guiutility = GUIUtility.getInstance()
        self.toChannel = libraryTorrents is not None
        self.defaultDLConfig = DefaultDownloadStartupConfig.getInstance()

        vSizer = wx.BoxSizer(wx.VERTICAL)

        firstLine = wx.StaticText(
            self, -1,
            'Please use one of the provided methods to import an external .torrent'
        )
        vSizer.Add(firstLine, 0, wx.EXPAND | wx.BOTTOM, 3)
        vSizer.AddSpacer((-1, 25))

        header = wx.StaticText(self, -1,
                               'Browse for local .torrent file or files')
        _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM, 3)
        vSizer.Add(
            wx.StaticText(
                self, -1,
                'Use this option if you have downloaded a .torrent manually'),
            0, wx.BOTTOM, 3)

        browseButton = wx.Button(self, -1, 'Browse')
        browseButton.Bind(wx.EVT_BUTTON, self.OnBrowse)

        browseDirectory = wx.Button(self, -1, 'Browse for Directory')
        browseDirectory.Bind(wx.EVT_BUTTON, self.OnBrowseDir)

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(browseButton, 0, wx.RIGHT, 3)
        hSizer.Add(browseDirectory)
        vSizer.Add(hSizer, 0, wx.ALIGN_RIGHT | wx.BOTTOM, 3)
        vSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.BOTTOM, 10)

        header = wx.StaticText(self, -1, 'Url')
        _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM | wx.TOP, 3)
        vSizer.Add(
            wx.StaticText(
                self, -1,
                'This could either be a http, magnet, emc, or file link'), 0,
            wx.BOTTOM, 3)

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        self.magnet = wx.TextCtrl(self, -1)
        hSizer.Add(self.magnet, 1, wx.ALIGN_CENTER_VERTICAL)
        linkButton = wx.Button(self, -1, "Add")
        linkButton.Bind(wx.EVT_BUTTON, self.OnAdd)
        hSizer.Add(linkButton, 0, wx.LEFT, 3)
        vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        vSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.BOTTOM, 10)
        if libraryTorrents is not None:
            if len(libraryTorrents) > 0:
                header = wx.StaticText(self, -1,
                                       'Choose one from your library')
                _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
                vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM | wx.TOP, 3)

                torrentNames = [torrent.name for torrent in libraryTorrents]

                hSizer = wx.BoxSizer(wx.HORIZONTAL)
                self.libraryChoice = wx.Choice(self, -1, choices=torrentNames)
                self.libraryChoice.torrents = libraryTorrents
                hSizer.Add(self.libraryChoice, 1, wx.ALIGN_CENTER_VERTICAL)

                linkButton = wx.Button(self, -1, "Add")
                linkButton.Bind(wx.EVT_BUTTON, self.OnLibrary)

                hSizer.Add(linkButton, 0, wx.LEFT, 3)
                vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

            vSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.BOTTOM, 10)
            header = wx.StaticText(self, -1, 'Create your own .torrents')
            _set_font(header, fontweight=wx.FONTWEIGHT_BOLD)
            vSizer.Add(header, 0, wx.EXPAND | wx.BOTTOM | wx.TOP, 3)
            vSizer.Add(wx.StaticText(self, -1, 'Using your own local files'),
                       0, wx.BOTTOM, 3)

            create = wx.Button(self, -1, 'Create')
            create.Bind(wx.EVT_BUTTON, self.OnCreate)
            vSizer.Add(create, 0, wx.ALIGN_RIGHT | wx.BOTTOM, 3)

        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND | wx.ALL, 10)
        self.SetSizerAndFit(sizer)
コード例 #35
0
    def __init__(self, parent, tdef, defaultdir, defaultname, configfile, selectedFiles = None):
        wx.Dialog.__init__(self, parent, -1, 'Please specify a target directory', size=(600,450))

        self.filehistory = wx.FileHistory(25)
        self.config = wx.FileConfig(appName = "Tribler", localFilename = configfile)
        self.filehistory.Load(self.config)
        self.defaultdir = defaultdir
        self.guiutility = GUIUtility.getInstance()
        self.listCtrl = None
        self.collected = None

        if self.filehistory.GetCount() > 0:
            lastUsed = self.filehistory.GetHistoryFile(0)
        else:
            lastUsed = defaultdir

        vSizer = wx.BoxSizer(wx.VERTICAL)

        if tdef:
            line = 'Please select a directory where to save:'
        else:
            line = 'Please select a directory where to save this torrent'

        firstLine = wx.StaticText(self, -1, line)
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(firstLine, 0, wx.EXPAND|wx.BOTTOM, 3)

        if tdef:
            torrentName = wx.StaticText(self, -1, tdef.get_name_as_unicode())
            torrentName.SetMinSize((1, -1))
            vSizer.Add(torrentName, 0, wx.EXPAND|wx.BOTTOM|wx.RIGHT, 3)

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticText(self, -1, 'Save as:'), 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT|wx.BOTTOM, 3)

        choices = [self.filehistory.GetHistoryFile(i) for i in range(self.filehistory.GetCount())]
        if defaultdir not in choices:
            choices.append(defaultdir)

        if defaultname:
            choices.insert(0, os.path.join(lastUsed, defaultname))
            self.dirTextCtrl = wx.ComboBox(self, -1, os.path.join(lastUsed, defaultname), choices = choices, style = wx.CB_DROPDOWN)
        else:
            self.dirTextCtrl = wx.ComboBox(self, -1, lastUsed, choices = choices, style = wx.CB_DROPDOWN)
        self.dirTextCtrl.Select(0)

        hSizer.Add(self.dirTextCtrl, 1, wx.EXPAND|wx.RIGHT|wx.BOTTOM, 3)

        browseButton = wx.Button(self, -1, 'Browse')
        browseButton.Bind(wx.EVT_BUTTON, self.OnBrowseDir)
        hSizer.Add(browseButton)

        vSizer.Add(hSizer, 0, wx.EXPAND|wx.BOTTOM, 3)

        if tdef and tdef.get_files():
            self.AddFileList(tdef, selectedFiles, vSizer, len(vSizer.GetChildren()))
        elif isinstance(tdef, TorrentDefNoMetainfo):
            text = wx.StaticText(self, -1, "Attempting to retrieve .torrent...")
            _set_font(text, size_increment = 1)
            ag = wx.animate.GIFAnimationCtrl(self, -1, os.path.join(self.guiutility.utility.getPath(), LIBRARYNAME, 'Main', 'vwxGUI', 'images', 'search_new.gif'))
            ag.Play()
            sizer = wx.BoxSizer(wx.HORIZONTAL)
            sizer.AddStretchSpacer()
            sizer.Add(text, 0, wx.ALIGN_CENTER_VERTICAL|wx.RIGHT, 10)
            sizer.Add(ag, 0, wx.ALIGN_CENTER_VERTICAL)
            sizer.AddStretchSpacer()
            vSizer.Add(sizer, 1, wx.EXPAND|wx.BOTTOM, 3)
            self.SetSize((600,150))

            url = tdef.get_url()
            if url and url.startswith("magnet:"):
                retrieve_from_magnet = lambda: TorrentDef.retrieve_from_magnet(url, lambda tdef: wx.CallAfter(self.SetCollected, tdef))
                startWorker(None, retrieve_from_magnet, retryOnBusy = True, priority = GUI_PRI_DISPERSY)
            else:
                torrentsearch_manager = self.guiutility.torrentsearch_manager
                def do_collect(delayedResult):
                    torrent = delayedResult.get()
                    if torrent:
                        def callback():
                            torrent_filename = torrentsearch_manager.getCollectedFilename(torrent)
                            tdef = TorrentDef.load(torrent_filename)
                            wx.CallAfter(self.SetCollected, tdef)
                        torrentsearch_manager.getTorrent(torrent, callback)
                def do_db():
                    return torrentsearch_manager.getTorrentByInfohash(tdef.get_infohash())
                startWorker(do_collect, do_db, retryOnBusy = True, priority = GUI_PRI_DISPERSY)

        cancel = wx.Button(self, wx.ID_CANCEL)
        cancel.Bind(wx.EVT_BUTTON, self.OnCancel)

        ok = wx.Button(self, wx.ID_OK)
        ok.Bind(wx.EVT_BUTTON, self.OnOk)

        bSizer = wx.StdDialogButtonSizer()
        bSizer.AddButton(cancel)
        bSizer.AddButton(ok)
        bSizer.Realize()
        vSizer.Add(bSizer, 0, wx.EXPAND|wx.BOTTOM, 3)

        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND|wx.ALL, 10)
        self.SetSizer(sizer)
コード例 #36
0
    def __init__(self,
                 parent,
                 tdef,
                 defaultdir,
                 defaultname,
                 selectedFiles=None):
        self._logger = logging.getLogger(self.__class__.__name__)
        wx.Dialog.__init__(self,
                           parent,
                           -1,
                           'Please specify a target directory',
                           name="SaveAsDialog")

        self.guiutility = GUIUtility.getInstance()
        self.utility = self.guiutility.utility
        self.SetSize((600, 550))

        self.filehistory = []
        try:
            self.filehistory = json.loads(
                self.utility.read_config("recent_download_history",
                                         literal_eval=False))
        except:
            pass

        self.defaultdir = defaultdir
        self.listCtrl = None
        self.collected = tdef

        lastUsed = self.filehistory[0] if self.filehistory else defaultdir

        vSizer = wx.BoxSizer(wx.VERTICAL)

        if tdef:
            line = 'Please select a directory where to save:'
        else:
            line = 'Please select a directory where to save this torrent'

        firstLine = wx.StaticText(self, -1, line)
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(firstLine, 0, wx.EXPAND | wx.BOTTOM, 3)

        if tdef:
            torrentName = wx.StaticText(self, -1, tdef.get_name_as_unicode())
            torrentName.SetMinSize((1, -1))
            vSizer.Add(torrentName, 0, wx.EXPAND | wx.BOTTOM | wx.RIGHT, 3)

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticText(self, -1, 'Save as:'), 0,
                   wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.BOTTOM, 3)

        choices = copy.copy(self.filehistory)
        if defaultdir not in choices:
            choices.append(defaultdir)

        if defaultname:
            default_path = os.path.join(lastUsed, defaultname)
            choices.insert(0, default_path)
        else:
            default_path = lastUsed

        self.dirTextCtrl = wx.ComboBox(self,
                                       -1,
                                       default_path,
                                       choices=choices,
                                       style=wx.CB_DROPDOWN)
        self.dirTextCtrl.Select(0)

        hSizer.Add(self.dirTextCtrl, 1, wx.EXPAND | wx.RIGHT | wx.BOTTOM, 3)

        browseButton = wx.Button(self, -1, 'Browse')
        browseButton.Bind(wx.EVT_BUTTON, self.OnBrowseDir)
        hSizer.Add(browseButton)

        vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        self.cancel = wx.Button(self, wx.ID_CANCEL)
        self.cancel.Bind(wx.EVT_BUTTON, self.OnCancel)

        self.ok = wx.Button(self, wx.ID_OK)
        self.ok.Bind(wx.EVT_BUTTON, self.OnOk)

        self.anonymity_dialog = None
        self.anonymity_dialog = AnonymityDialog(self)
        vSizer.Add(self.anonymity_dialog, 0, wx.EXPAND, 3)

        self.Bind(EVT_COLLECTED, self.OnCollected)

        # Add file list
        if tdef and tdef.get_files():
            self.AddFileList(tdef, selectedFiles, vSizer,
                             len(vSizer.GetChildren()))

        elif isinstance(tdef, TorrentDefNoMetainfo):
            text = wx.StaticText(self, -1,
                                 "Attempting to retrieve .torrent...")
            _set_font(text, size_increment=1)
            ag = wx.animate.GIFAnimationCtrl(
                self, -1,
                os.path.join(self.guiutility.utility.getPath(), LIBRARYNAME,
                             'Main', 'vwxGUI', 'images', 'search_new.gif'))
            ag.Play()
            sizer = wx.BoxSizer(wx.HORIZONTAL)
            sizer.AddStretchSpacer()
            sizer.Add(text, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 10)
            sizer.Add(ag, 0, wx.ALIGN_CENTER_VERTICAL)
            sizer.AddStretchSpacer()
            vSizer.Add(sizer, 1, wx.EXPAND | wx.BOTTOM, 3)
            self.SetSize((600, 285))

            # convert tdef into guidbtuple, and collect it using torrentsearch_manager.downloadTorrentfileFromPeers
            torrent = Torrent.fromTorrentDef(tdef)
            torrentsearch_manager = self.guiutility.torrentsearch_manager

            def callback(saveas_id, infohash):
                saveas = wx.FindWindowById(saveas_id)
                if saveas:
                    tdef = TorrentDef.load_from_memory(
                        self.utility.session.lm.torrent_store.get(infohash))
                    event = CollectedEvent(tdef=tdef)
                    wx.PostEvent(saveas, event)

            cb = lambda torrent_filename, saveas_id=self.Id: callback(
                saveas_id, torrent_filename)
            torrentsearch_manager.downloadTorrentfileFromPeers(torrent, cb)

        bSizer = wx.StdDialogButtonSizer()
        bSizer.AddButton(self.cancel)
        bSizer.AddButton(self.ok)
        bSizer.Realize()
        vSizer.Add(bSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND | wx.ALL, 10)
        self.SetSizer(sizer)
コード例 #37
0
ファイル: SaveAs.py プロジェクト: Anbcorp/tribler
    def __init__(self, parent, tdef, defaultdir, defaultname, configfile, selectedFiles=None):
        wx.Dialog.__init__(self, parent, -1, 'Please specify a target directory', size=(600, 450), name="SaveAsDialog")

        self.filehistory = wx.FileHistory(25)
        self.config = wx.FileConfig(appName="Tribler", localFilename=configfile)
        self.filehistory.Load(self.config)
        self.defaultdir = defaultdir
        self.guiutility = GUIUtility.getInstance()
        self.listCtrl = None
        self.collected = None

        if self.filehistory.GetCount() > 0:
            lastUsed = self.filehistory.GetHistoryFile(0)
        else:
            lastUsed = defaultdir

        vSizer = wx.BoxSizer(wx.VERTICAL)

        if tdef:
            line = 'Please select a directory where to save:'
        else:
            line = 'Please select a directory where to save this torrent'

        firstLine = wx.StaticText(self, -1, line)
        _set_font(firstLine, fontweight=wx.FONTWEIGHT_BOLD)
        vSizer.Add(firstLine, 0, wx.EXPAND | wx.BOTTOM, 3)

        if tdef:
            torrentName = wx.StaticText(self, -1, tdef.get_name_as_unicode())
            torrentName.SetMinSize((1, -1))
            vSizer.Add(torrentName, 0, wx.EXPAND | wx.BOTTOM | wx.RIGHT, 3)

        hSizer = wx.BoxSizer(wx.HORIZONTAL)
        hSizer.Add(wx.StaticText(self, -1, 'Save as:'), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.BOTTOM, 3)

        choices = [self.filehistory.GetHistoryFile(i) for i in range(self.filehistory.GetCount())]
        if defaultdir not in choices:
            choices.append(defaultdir)

        if defaultname:
            choices.insert(0, os.path.join(lastUsed, defaultname))
            self.dirTextCtrl = wx.ComboBox(self, -1, os.path.join(lastUsed, defaultname), choices=choices, style=wx.CB_DROPDOWN)
        else:
            self.dirTextCtrl = wx.ComboBox(self, -1, lastUsed, choices=choices, style=wx.CB_DROPDOWN)
        self.dirTextCtrl.Select(0)

        hSizer.Add(self.dirTextCtrl, 1, wx.EXPAND | wx.RIGHT | wx.BOTTOM, 3)

        browseButton = wx.Button(self, -1, 'Browse')
        browseButton.Bind(wx.EVT_BUTTON, self.OnBrowseDir)
        hSizer.Add(browseButton)

        vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        if tdef and tdef.get_files():
            self.AddFileList(tdef, selectedFiles, vSizer, len(vSizer.GetChildren()))
        elif isinstance(tdef, TorrentDefNoMetainfo):
            text = wx.StaticText(self, -1, "Attempting to retrieve .torrent...")
            _set_font(text, size_increment=1)
            ag = wx.animate.GIFAnimationCtrl(self, -1, os.path.join(self.guiutility.utility.getPath(), LIBRARYNAME, 'Main', 'vwxGUI', 'images', 'search_new.gif'))
            ag.Play()
            sizer = wx.BoxSizer(wx.HORIZONTAL)
            sizer.AddStretchSpacer()
            sizer.Add(text, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 10)
            sizer.Add(ag, 0, wx.ALIGN_CENTER_VERTICAL)
            sizer.AddStretchSpacer()
            vSizer.Add(sizer, 1, wx.EXPAND | wx.BOTTOM, 3)
            self.SetSize((600, 150))

            url = tdef.get_url()
            if url and url.startswith("magnet:"):
                retrieve_from_magnet = lambda: TorrentDef.retrieve_from_magnet(url, lambda tdef: wx.CallAfter(self.SetCollected, tdef), timeout=300)
                startWorker(None, retrieve_from_magnet, retryOnBusy=True, workerType="guiTaskQueue")
            else:
                torrentsearch_manager = self.guiutility.torrentsearch_manager

                def do_collect(delayedResult):
                    torrent = delayedResult.get()
                    if torrent:
                        def callback():
                            torrent_filename = torrentsearch_manager.getCollectedFilename(torrent)
                            tdef = TorrentDef.load(torrent_filename)
                            wx.CallAfter(self.SetCollected, tdef)
                        torrentsearch_manager.getTorrent(torrent, callback)

                def do_db():
                    return torrentsearch_manager.getTorrentByInfohash(tdef.get_infohash())
                startWorker(do_collect, do_db, retryOnBusy=True, priority=GUI_PRI_DISPERSY)

        cancel = wx.Button(self, wx.ID_CANCEL)
        cancel.Bind(wx.EVT_BUTTON, self.OnCancel)

        ok = wx.Button(self, wx.ID_OK)
        ok.Bind(wx.EVT_BUTTON, self.OnOk)

        bSizer = wx.StdDialogButtonSizer()
        bSizer.AddButton(cancel)
        bSizer.AddButton(ok)
        bSizer.Realize()
        vSizer.Add(bSizer, 0, wx.EXPAND | wx.BOTTOM, 3)

        sizer = wx.BoxSizer()
        sizer.Add(vSizer, 1, wx.EXPAND | wx.ALL, 10)
        self.SetSizer(sizer)