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.')
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
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
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
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)
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
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)
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)
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)
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