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(10) 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: 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) 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, labels, downloads): wx.Dialog.__init__(self, parent, -1, 'Please select the torrents you want to move', size=(750, 450)) self.downloads = downloads 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 = downloads[i] 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)