Example #1
0
 def import_footprints(self):
   dialog = ImportFootprintsDialog(self)
   if dialog.exec_() != QtGui.QDialog.Accepted: return
   (footprint_names, importer, selected_library) = dialog.get_data()
   lib_dir = QtCore.QDir(self.explorer.coffee_lib[selected_library].directory)
   l = []
   for footprint_name in footprint_names:
     interim = inter.import_footprint(importer, footprint_name) 
     l.append((footprint_name, interim))
   cl = []
   for (footprint_name, interim) in l:
     try:
      coffee = generatesimple.generate_coffee(interim)
      cl.append((footprint_name, coffee))
     except Exception as ex:
       tb = traceback.format_exc()
       s = "warning: skipping footprint %s\nerror: %s" % (footprint_name, str(ex) + '\n' + tb)
       QtGui.QMessageBox.warning(self, "warning", s)
   for (footprint_name, coffee) in cl:
     meta = pycoffee.eval_coffee_meta(coffee)
     new_file_name = lib_dir.filePath("%s.coffee" % (meta['id']))
     with open(new_file_name, 'w+') as f:
       f.write(coffee)
   self.explorer.rescan_library(selected_library)
   self.status('Importing done.')
Example #2
0
def import_footprint(remaining):
  parser = argparse.ArgumentParser(prog=sys.argv[0] + ' import')
  parser.add_argument('library', help='library file')
  parser.add_argument('footprint', help='footprint name')
  args = parser.parse_args(remaining)
  try:
    importer = detect.make_importer(args.library)
  except Exception as ex:
    print >> sys.stderr, str(ex)
    return 1
  names = map(lambda (a,_): a, importer.list_names())
  if not args.footprint in names:
    print >> sys.stderr, "Footprint %s not found in %s." % (args.footprint, args.library)
    return 1
  interim = inter.import_footprint(importer, args.footprint) 
  try:
    coffee = generatesimple.generate_coffee(interim)
  except Exception as ex:
    tb = traceback.format_exc()
    print >> sys.stderr, "Footprint %s\nerror: %s" % (args.footprint, str(ex) + '\n' + tb)
    return 1
  meta = pycoffee.eval_coffee_meta(coffee)
  new_file_name = "%s.coffee" % (meta['id'])
  with open(new_file_name, 'w+') as f:
    f.write(coffee)
  print "%s/%s written to %s." % (args.library, args.footprint, new_file_name)
  return 0
Example #3
0
def import_footprint(remaining):
    parser = argparse.ArgumentParser(prog=sys.argv[0] + ' import')
    parser.add_argument('library', help='library file')
    parser.add_argument('footprint', help='footprint name')
    args = parser.parse_args(remaining)
    try:
        version = export.eagle.check_xml_file(args.library)
    except Exception as ex:
        print >> sys.stderr, str(ex)
        return 1
    importer = export.eagle.Import(args.library)
    names = map(lambda (a, _): a, importer.list_names())
    if not args.footprint in names:
        print >> sys.stderr, "Footprint %s not found in %s." % (args.footprint,
                                                                args.library)
        return 1
    interim = inter.import_footprint(importer, args.footprint)
    try:
        coffee = generatesimple.generate_coffee(interim)
    except Exception as ex:
        tb = traceback.format_exc()
        print >> sys.stderr, "Footprint %s\nerror: %s" % (args.footprint,
                                                          str(ex) + '\n' + tb)
        return 1
    meta = pycoffee.eval_coffee_meta(coffee)
    new_file_name = "%s.coffee" % (meta['id'])
    with open(new_file_name, 'w+') as f:
        f.write(coffee)
    print "%s/%s written to %s." % (args.library, args.footprint,
                                    new_file_name)
    return 0
Example #4
0
 def import_footprint(self, initial=False):
     dialog = gui.dialogs.ImportFootprintsDialog(self)
     if dialog.exec_() != QtGui.QDialog.Accepted:
         return None
     (footprint_names, importer, lib_filename) = dialog.get_data()
     (lib_name, _ext) = os.path.splitext(os.path.basename(lib_filename))
     lib_dir = QtCore.QDir(".")
     footprint_name = footprint_names[0]
     print "doing footprint:", footprint_name
     interim = inter.import_footprint(importer, footprint_name)
     try:
         coffee = generatesimple.generate_coffee(interim)
     except Exception as ex:
         tb = traceback.format_exc()
         s = "warning: skipping footprint %s\nerror: %s" % (
             footprint_name, str(ex) + '\n' + tb)
         QtGui.QMessageBox.warning(self, "warning", s)
         return None
     meta = pycoffee.eval_coffee_meta(coffee)
     new_file_name = lib_dir.filePath("%s_%s.coffee" %
                                      (lib_name, meta['name']))
     with open(new_file_name, 'w+') as f:
         f.write(coffee)
     self.status('Importing done.')
     if not initial:
         self.file_name = new_file_name
         self.readonly = not os.access(self.file_name, os.W_OK)
         with open(self.file_name) as f:
             self.update_text(f.read())
             self.set_code_textedit_readonly(self.readonly)
         self.update_title()
     else:
         return new_file_name
Example #5
0
def test_kicad_import_empty():
  expected_coffee = empty_coffee
  importer = export.kicad.Import("test/kicad_empty.kicad_mod")
  interim = inter.import_footprint(importer, 'TEST_EMPTY') 
  assert interim != None
  coffee = generatesimple.generate_coffee(interim)
  _assert_equal_no_meta(expected_coffee, coffee)
Example #6
0
 def import_footprint(self, initial=False):
   dialog = gui.dialogs.ImportFootprintsDialog(self)
   if dialog.exec_() != QtGui.QDialog.Accepted:
     return None
   (footprint_names, importer, lib_filename) = dialog.get_data()
   (lib_name, _ext) = os.path.splitext(os.path.basename(lib_filename))
   lib_dir = QtCore.QDir(".")
   footprint_name = footprint_names[0]
   print "doing footprint:", footprint_name
   interim = inter.import_footprint(importer, footprint_name) 
   try:
     coffee = generatesimple.generate_coffee(interim)
   except Exception as ex:
     tb = traceback.format_exc()
     s = "warning: skipping footprint %s\nerror: %s" % (footprint_name, str(ex) + '\n' + tb)
     QtGui.QMessageBox.warning(self, "warning", s)
     return None
   meta = pycoffee.eval_coffee_meta(coffee)
   new_file_name = lib_dir.filePath("%s_%s.coffee" % (lib_name, meta['name']))
   with open(new_file_name, 'w+') as f:
     f.write(coffee)
   self.status('Importing done.')
   if not initial:
     self.file_name = new_file_name
     self.readonly = not os.access(self.file_name, os.W_OK)
     with open(self.file_name) as f:
       self.update_text(f.read())
       self.set_code_textedit_readonly(self.readonly)
     self.update_title()
   else:
     return new_file_name
Example #7
0
def _import_kicad_package(kicad_s, import_name, expected_coffee):
  try:
    kicad_lib = 'test/foo.kicad_mod'
    with open(kicad_lib, "w+") as f:
      f.write(kicad_s)
    importer = export.kicad.Import(kicad_lib)
    interim = inter.import_footprint(importer, import_name) 
    coffee = generatesimple.generate_coffee(interim)
    _assert_equal_no_meta(expected_coffee, coffee)
  finally:
    os.unlink(kicad_lib)
Example #8
0
def _import_kicad_package(kicad_s, import_name, expected_coffee):
    try:
        kicad_lib = "test/foo.kicad_mod"
        with open(kicad_lib, "w+") as f:
            f.write(kicad_s)
        importer = export.kicad.Import(kicad_lib)
        interim = inter.import_footprint(importer, import_name)
        coffee = generatesimple.generate_coffee(interim)
        _assert_equal_no_meta(expected_coffee, coffee)
    finally:
        os.unlink(kicad_lib)
Example #9
0
def _import_eagle_package(eagle_package_xml, import_name, expected):
    eagle_lib = 'test/foo.lbr'
    shutil.copyfile('test/eagle_empty.lbr', eagle_lib)
    try:
        importer = export.eagle.Import(eagle_lib)
        # trick to get our package xml into the empty eagle library
        package_soup = BeautifulSoup(eagle_package_xml, 'xml')
        package_soup.is_xml = False
        importer.soup.drawing.packages.append(package_soup)
        with open(eagle_lib, 'w+') as f:
            f.write(str(importer.soup))
        importer = export.eagle.Import(eagle_lib)
        interim = inter.import_footprint(importer, import_name)
        coffee = generatesimple.generate_coffee(interim)
        _assert_equal_no_meta(expected, coffee)
    finally:
        os.unlink(eagle_lib)
Example #10
0
def _import_eagle_package(eagle_package_xml, import_name, expected):
  eagle_lib = 'test/foo.lbr'
  shutil.copyfile('test/eagle_empty.lbr', eagle_lib)
  try:
    importer = export.eagle.Import(eagle_lib)
    # trick to get our package xml into the empty eagle library
    package_soup = BeautifulSoup(eagle_package_xml, 'xml')
    package_soup.is_xml = False
    importer.soup.drawing.packages.append(package_soup)
    with open(eagle_lib, 'w+') as f:
      f.write(str(importer.soup))
    importer = export.eagle.Import(eagle_lib)
    interim = inter.import_footprint(importer, import_name) 
    coffee = generatesimple.generate_coffee(interim)
    _assert_equal_no_meta(expected, coffee)
  finally:
    os.unlink(eagle_lib)
Example #11
0
def import_footprint(remaining):
    parser = argparse.ArgumentParser(prog=sys.argv[0] + ' import')
    parser.add_argument('library', help='library file')
    parser.add_argument('footprint', help='footprint name', nargs='?')
    args = parser.parse_args(remaining)
    try:
        importer = detect.make_importer(args.library)
    except Exception as ex:
        print >> sys.stderr, str(ex)
        return 1
    names = map(lambda (a, _): a, importer.list_names())
    if args.footprint is None:
        if len(names) == 1:
            args.footprint = names[0]
        else:
            print >> sys.stderr, "Please specify the footprint name as more then one were found in %s." % (
                args.library)
            return 1
    elif not args.footprint in names:
        print >> sys.stderr, "Footprint %s not found in %s." % (args.footprint,
                                                                args.library)
        return 1
    interim = inter.import_footprint(importer, args.footprint)
    try:
        coffee = generatesimple.generate_coffee(interim)
    except Exception as ex:
        tb = traceback.format_exc()
        print >> sys.stderr, "Footprint %s\nerror: %s" % (args.footprint,
                                                          str(ex) + '\n' + tb)
        return 1
    meta = pycoffee.eval_coffee_meta(coffee)
    new_file_name = "%s.coffee" % (meta['id'])
    with open(new_file_name, 'w+') as f:
        f.write(coffee)
    print "%s/%s written to %s." % (args.library, args.footprint,
                                    new_file_name)
    return 0