def OnDrop(self, files): """Opens dropped files @param files: list of file paths @postcondition: all files that could be properly opend are added to the notebook """ # Check file properties and make a "clean" list of file(s) to open valid_files = list() for fname in files: self.LOG("[ed_pages][evt] File(s) Dropped: %s" % fname) if not os.path.exists(fname): self.frame.PushStatusText(_("Invalid file: %s") % fname, \ ed_glob.SB_INFO) elif os.path.isdir(fname): dcnt = glob.glob(os.path.join(fname, '*')) dcnt = util.FilterFiles(dcnt) dlg = None if not len(dcnt): dlg = wx.MessageDialog(self, _("There are no files that Editra" " can open in %s") % fname, _("No Valid Files to Open"), style=wx.OK | wx.CENTER | \ wx.ICON_INFORMATION) elif len(dcnt) > 5: # Warn when the folder contains many files dlg = wx.MessageDialog(self, _("Do you wish to open all %d files" " in this directory?\n\nWarning" " opening many files at once may" " cause the editor to temporarly " " freeze.") % len(dcnt), _("Open Directory?"), style=wx.YES | wx.NO | \ wx.ICON_INFORMATION) if dlg is not None: result = dlg.ShowModal() dlg.Destroy() else: result = wx.ID_YES if result == wx.ID_YES: valid_files.extend(dcnt) else: pass else: valid_files.append(fname) for fname in valid_files: pathname = util.GetPathName(fname) the_file = util.GetFileName(fname) self.OpenPage(pathname, the_file) self.frame.PushStatusText(_("Opened file: %s") % fname, \ ed_glob.SB_INFO) return
def testFilterFiles(self): """Test the file filter function""" rlist = util.FilterFiles([self.fpath, self.bpath]) self.assertEquals(len(rlist), 1)