private void copyDescription(PFile source) {
      if(Data.settings.copyName) {
        String name = source.getComponent(Elem.NAME);
        String format = Data.settings.numFormat.replace("(", "\\(")
                .replace(")", "\\)").replace("[", "\\[").replace("]", "\\]")
                .replace("%NAME%", "(.*?)").replace("%N%", "([0-9]*)");
        
        Pattern pattern = Pattern.compile("^" + format + "$");
        Matcher match = pattern.matcher(name);

        String zeros = "";
        for(int i=0; i<Data.settings.numDigits; ++i) zeros += "0";
        DecimalFormat df = new DecimalFormat(zeros);

        if(match.find()) {
            tName.setText(retNumber(match, df));
        //nope
        } else {
            String name2 = Data.settings.numFormat.replace("%NAME%", name).replace("%N%", df.format(2));
            match = pattern.matcher(name2);
            if(match.find()) tName.setText(retNumber(match, df));
            else tName.setText(name2);
        }
      }

      if(Data.settings.copyDescription) setDescription(source.getComponent(Elem.DESC));
      if(Data.settings.copyCategories) setCategories(source.getComponent(Elem.CATS));
    }