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 GetMidPanel(self, hSizer): self.totals = [] for i in xrange(len(self.columns)): if self.columns[i]['width'] == wx.LIST_AUTOSIZE: option = 1 size = wx.DefaultSize else: option = 0 size = (self.columns[i]['width'], -1) label = StaticText(self, i, '', style=self.columns[i].get('footer_style', 0) | wx.ST_NO_AUTORESIZE, size=size) hSizer.Add(label, option, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.TOP | wx.BOTTOM, 3) if self.columns[i]['width'] == wx.LIST_AUTOSIZE: label.SetMinSize((1, -1)) self.totals.append(label) self.scrollBar = hSizer.AddSpacer((3, 0)) self.scrollBar.sizer = hSizer
def GetMidPanel(self, hSizer): hSizer.AddStretchSpacer() self.title = StaticText(self) hSizer.Add(self.title) self.scrollBar = hSizer.AddSpacer((0, 0)) self.scrollBar.sizer = hSizer
def AddHeader(self): sizer = wx.BoxSizer(wx.HORIZONTAL) self.header = StaticText(self.parent, -1, ' ') self.info_icon = wx.StaticBitmap(self.parent, -1, self.icons['info']) sizer.Add(self.header, 0, wx.RIGHT, 7) sizer.Add(self.info_icon, 0, wx.ALIGN_CENTER_VERTICAL) self.vsizer.Add(sizer, 0, wx.BOTTOM, 3)
def GetMidPanel(self, hSizer): self.message = StaticText(self) font = self.message.GetFont() font.SetPointSize(font.GetPointSize() + 2) font.SetWeight(wx.FONTWEIGHT_BOLD) self.message.SetFont(font) hSizer.Add(self.message, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_BOTTOM, 3) hSizer.AddStretchSpacer() self.channelResults = wx.Button(self, -1, "Channel Results") hSizer.Add(self.channelResults, 0, wx.TOP | wx.BOTTOM, 3)
def _DoInit(self): try: disp = DispersyPanel(self) except: #Dispersy not ready, try again in 5s if self.createTimer is None: self.createTimer = wx.CallLater(5000, self._DoInit) else: self.createTimer.Restart(5000) print_exc() return self.SetBackgroundColour(DEFAULT_BACKGROUND) vSizer = wx.BoxSizer(wx.VERTICAL) self.dowserStatus = StaticText(self, -1, 'Dowser is not running') self.dowserButton = wx.Button(self, -1, 'Start dowser') self.dowserButton.Bind(wx.EVT_BUTTON, self.OnDowser) self.memdumpButton = wx.Button(self, -1, 'Dump memory') self.memdumpButton.Bind(wx.EVT_BUTTON, self.OnMemdump) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.Add(self.dowserStatus, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 3) hSizer.Add(self.dowserButton) hSizer.Add(self.memdumpButton, 0, wx.RIGHT, 3) vSizer.Add(hSizer, 0, wx.ALIGN_RIGHT | wx.TOP | wx.BOTTOM, 3) vSizer.Add(disp, 1, wx.EXPAND | wx.BOTTOM, 3) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.Add(NetworkPanel(self), 1, wx.EXPAND | wx.RIGHT, 7) self.activity = ActivityPanel(self) hSizer.Add(self.activity, 1, wx.EXPAND) vSizer.Add(hSizer, 0, wx.EXPAND) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.Add(NewTorrentPanel(self), 1, wx.EXPAND | wx.RIGHT, 7) hSizer.Add(PopularTorrentPanel(self), 1, wx.EXPAND, 7) vSizer.Add(hSizer, 0, wx.EXPAND) self.SetSizer(vSizer) self.Layout() self.Bind(wx.EVT_KEY_UP, self.onKey) if sys.platform.startswith('win'): # on Windows, the panel doesn't respond to keypresses self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouse) self.isReady = True
def _DoInit(self): self.SetBackgroundColour(DEFAULT_BACKGROUND) vSizer = wx.BoxSizer(wx.VERTICAL) self.dowserStatus = StaticText(self, -1, 'Dowser is not running') self.dowserButton = wx.Button(self, -1, 'Start dowser') self.dowserButton.Bind(wx.EVT_BUTTON, self.OnDowser) self.memdumpButton = wx.Button(self, -1, 'Dump memory') self.memdumpButton.Bind(wx.EVT_BUTTON, self.OnMemdump) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.Add(self.dowserStatus, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 3) hSizer.Add(self.dowserButton) hSizer.Add(self.memdumpButton, 0, wx.RIGHT, 3) vSizer.Add(hSizer, 0, wx.ALIGN_RIGHT | wx.TOP | wx.BOTTOM, 3) hSizer = wx.BoxSizer(wx.HORIZONTAL) self.__dispersy_frame_btn = wx.Button(self, -1, "Open Dispersy Debug Frame") self.__dispersy_frame_btn.Bind(wx.EVT_BUTTON, self.OnOpenDispersyDebugButtonClicked) hSizer.Add(self.__dispersy_frame_btn, 0, wx.EXPAND, 3) vSizer.Add(hSizer, 0, wx.EXPAND | wx.BOTTOM, 3) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.Add(NetworkPanel(self), 1, wx.EXPAND | wx.RIGHT, 7) self.activity = ActivityPanel(self) hSizer.Add(self.activity, 1, wx.EXPAND) vSizer.Add(hSizer, 1, wx.EXPAND) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.Add(NewTorrentPanel(self), 1, wx.EXPAND | wx.RIGHT, 7) hSizer.Add(PopularTorrentPanel(self), 1, wx.EXPAND, 7) vSizer.Add(hSizer, 1, wx.EXPAND) self.SetSizer(vSizer) self.Layout() self.Bind(wx.EVT_KEY_UP, self.onKey) if sys.platform.startswith('win'): # on Windows, the panel doesn't respond to keypresses self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouse) self.isReady = True
def GetMidPanel(self, hSizer): self.hSizer = hSizer self.message = StaticText(self) self.message.SetMinSize((1, -1)) font = self.message.GetFont() font.SetPointSize(font.GetPointSize() + 2) font.SetWeight(wx.FONTWEIGHT_BOLD) self.message.SetFont(font) self.subtitle = wx.StaticText(self) self.subtitle.SetMinSize((1, -1)) self.manage = wx.Button(self, -1, 'Edit this Channel') self.spam = wx.Button(self, -1, 'Mark as Spam') self.favorite = wx.Button(self, -1, 'Mark as Favorite') self.ortext = None self.subtitle.Show(False) self.favorite.Show(False) self.spam.Show(False) self.manage.Show(False)
def __init__(self, parent): wx.Panel.__init__(self, parent) self.guiutility = GUIUtility.getInstance() self.SetBackgroundColour(DEFAULT_BACKGROUND) vSizer = wx.BoxSizer(wx.VERTICAL) vSizer.AddStretchSpacer() text = StaticText(self, -1, "Tribler") font = text.GetFont() font.SetPointSize(font.GetPointSize() * 3) font.SetWeight(wx.FONTWEIGHT_BOLD) text.SetForegroundColour((255, 51, 0)) text.SetFont(font) textSizer = wx.FlexGridSizer(2, 2, 3, 7) if sys.platform == 'darwin': # mac self.searchBox = wx.TextCtrl(self, style=wx.TE_PROCESS_ENTER) else: self.searchBox = TextCtrlAutoComplete( self, entrycallback=parent.top_bg.complete) font = self.searchBox.GetFont() font.SetPointSize(font.GetPointSize() * 2) self.searchBox.SetFont(font) self.searchBox.Bind(wx.EVT_TEXT_ENTER, self.OnSearchKeyDown) if sys.platform == 'darwin': # mac self.searchBox.SetMinSize( (450, self.searchBox.GetTextExtent('T')[1] + 5)) else: self.searchBox.SetMinSize((450, -1)) self.searchBox.SetFocus() textSizer.Add(text, 0, wx.EXPAND | wx.RIGHT, 7) scalingSizer = wx.BoxSizer(wx.HORIZONTAL) scalingSizer.Add(self.searchBox) if sys.platform == 'darwin': # mac searchButton = wx.Button(self, -1, '\n') searchButton.SetLabel('Search') else: searchButton = wx.Button(self, -1, 'Search') searchButton.Bind(wx.EVT_BUTTON, self.OnClick) scalingSizer.Add(searchButton, 0, wx.EXPAND | wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 3) textSizer.Add(scalingSizer, 0, wx.ALIGN_CENTER_VERTICAL) textSizer.AddSpacer((1, 1)) hSizer = wx.BoxSizer(wx.HORIZONTAL) hSizer.Add(StaticText(self, -1, "Take me to ")) channelLink = LinkStaticText(self, "channels", icon=None) channelLink.Bind(wx.EVT_LEFT_UP, self.OnChannels) hSizer.Add(channelLink) hSizer.Add(StaticText(self, -1, " to see what others are sharing")) textSizer.Add(hSizer) vSizer.Add(textSizer, 0, wx.ALIGN_CENTER) vSizer.AddStretchSpacer() self.aw_panel = ArtworkPanel(self) self.aw_panel.SetMinSize((-1, 275)) # TODO(lipu): enable this when metadata PR is merged #self.aw_panel.Show(self.guiutility.ReadGuiSetting('show_artwork', True)) self.aw_panel.Show(False) vSizer.Add(self.aw_panel, 0, wx.EXPAND) self.SetSizer(vSizer) self.Layout() self.Bind(wx.EVT_RIGHT_UP, self.OnRightClick) self.SearchFocus()
def CreatePanel(self): panel = wx.Panel(self) panel.SetBackgroundColour(DEFAULT_BACKGROUND) vSizer = wx.BoxSizer(wx.VERTICAL) self.nrTorrents = StaticText(panel) self.nrFiles = StaticText(panel) self.totalSize = StaticText(panel) self.queueSize = StaticText(panel) self.queueSize.SetToolTipString('Number of torrents queued per prio') self.queueSuccess = StaticText(panel) self.queueBW = StaticText(panel) self.queueBW.SetToolTipString( 'Bandwidth spent on collecting .torrents') self.nrChannels = StaticText(panel) self.freeMem = None try: if wx.GetFreeMemory() != -1: self.freeMem = StaticText(panel) except: pass gridSizer = wx.FlexGridSizer(0, 2, 3, 10) gridSizer.AddGrowableCol(1) gridSizer.Add(StaticText(panel, -1, 'Number files')) gridSizer.Add(self.nrFiles, 0, wx.EXPAND) gridSizer.Add(StaticText(panel, -1, 'Total size')) gridSizer.Add(self.totalSize, 0, wx.EXPAND) gridSizer.Add(StaticText(panel, -1, 'Torrents collected')) gridSizer.Add(self.nrTorrents, 0, wx.EXPAND) gridSizer.Add(StaticText(panel, -1, 'Torrents in queue')) gridSizer.Add(self.queueSize, 0, wx.EXPAND) gridSizer.Add(StaticText(panel, -1, 'Torrent queue success')) gridSizer.Add(self.queueSuccess, 0, wx.EXPAND) gridSizer.Add(StaticText(panel, -1, 'Torrent queue bw')) gridSizer.Add(self.queueBW, 0, wx.EXPAND) gridSizer.Add(StaticText(panel, -1, 'Channels found')) gridSizer.Add(self.nrChannels, 0, wx.EXPAND) if self.freeMem: gridSizer.Add(StaticText(panel, -1, 'WX:Free memory')) gridSizer.Add(self.freeMem, 0, wx.EXPAND) vSizer.Add(gridSizer, 0, wx.EXPAND | wx.LEFT, 7) panel.SetSizer(vSizer) return panel
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): wx.StatusBar.__init__(self, parent, style=wx.ST_SIZEGRIP) # On Linux/OS X the resize handle and icons overlap, therefore we add an extra field. # On Windows this field is automatically set to 1 when the wx.ST_SIZEGRIP is set. self.SetFieldsCount(6) self.SetStatusStyles([wx.SB_FLAT] * 6) self.SetStatusWidths([-1, 250, 19, 19, 19, 19]) self.guiutility = GUIUtility.getInstance() self.utility = self.guiutility.utility self.library_manager = self.guiutility.library_manager self.uelog = UserEventLogDBHandler.getInstance() self.ff_checkbox = wx.CheckBox(self, -1, 'Family filter', style=wx.ALIGN_RIGHT) self.ff_checkbox.Bind(wx.EVT_CHECKBOX, self.OnCheckbox) self.ff_checkbox.SetValue(self.guiutility.getFamilyFilter()) self.speed_down_icon = NativeIcon.getInstance().getBitmap( self, 'arrow', self.GetBackgroundColour(), state=0) self.speed_down_sbmp = wx.StaticBitmap(self, -1, self.speed_down_icon) self.speed_down = StaticText(self, -1, '', style=wx.ST_NO_AUTORESIZE) self.speed_down.Bind(wx.EVT_RIGHT_UP, self.OnDownloadPopup) self.speed_up_icon = self.speed_down_icon.ConvertToImage().Rotate90( ).Rotate90().ConvertToBitmap() self.speed_up_sbmp = wx.StaticBitmap(self, -1, self.speed_up_icon) self.speed_up = StaticText(self, -1, '', style=wx.ST_NO_AUTORESIZE) self.speed_up.Bind(wx.EVT_RIGHT_UP, self.OnUploadPopup) self.searchConnectionImages = [ 'progressbarEmpty.png', 'progressbarFull.png' ] self.searchConnectionImages = [ os.path.join(self.guiutility.vwxGUI_path, 'images', image) for image in self.searchConnectionImages ] self.searchConnectionImages = [ wx.Bitmap(image, wx.BITMAP_TYPE_ANY) for image in self.searchConnectionImages ] self.activityImages = ['activity.png', 'no_activity.png'] self.activityImages = [ os.path.join(self.guiutility.vwxGUI_path, 'images', image) for image in self.activityImages ] self.activityImages = [ wx.Bitmap(image, wx.BITMAP_TYPE_ANY) for image in self.activityImages ] self.connection = HorizontalGauge(self, self.searchConnectionImages[0], self.searchConnectionImages[1]) self.activity = wx.StaticBitmap(self, -1, self.activityImages[1]) self.firewallStatus = settingsButton(self, size=(14, 14), name='firewallStatus14') self.firewallStatus.SetCursor(wx.StockCursor(wx.CURSOR_DEFAULT)) self.firewallStatus.SetToolTipString('Port status unknown') self.SetTransferSpeeds(0, 0) self.Bind(wx.EVT_SIZE, self.OnSize) self.library_manager.add_download_state_callback( self.RefreshTransferSpeed)
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, 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()