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)
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)
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()
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)
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)
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)
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)))
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
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)))
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()
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)
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)
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
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)
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)
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)))
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()
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)
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()
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()
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)
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
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
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()
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
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)
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()
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)
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()
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)
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)
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)
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)
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)