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 scan(self, select_id = None): self.meta_list = [] self.fail_list = [] if not self.exists: return for path in glob.glob(self.directory + '/*.coffee'): with open(path) as f: code = f.read() meta = pycoffee.eval_coffee_meta(code) if not 'name' in meta or not 'id' in meta: self.fail_list.append(meta) continue meta['readonly'] = not os.access(path, os.W_OK) meta['filename'] = path self.meta_list.append(meta) self.meta_list = [Meta(meta) for meta in self.meta_list] self.meta_list.sort(key=lambda x: x.name) self.meta_by_id = {} for meta in self.meta_list: self.meta_by_id[meta.id] = meta self.meta_by_name = {} for meta in self.meta_list: self.meta_by_name[meta.name] = meta # scan child relationships found_as_child = [] for meta in self.meta_list: if meta.parent != None and meta.parent in self.meta_by_id: self.meta_by_id[meta.parent].child_ids.append(meta.id) found_as_child.append(meta.id) self.root_meta_list = filter(lambda meta: meta.id not in found_as_child, self.meta_list)
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_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 move_footprint(self): old_code = self.parent.code_textedit.toPlainText() old_meta = pycoffee.eval_coffee_meta(old_code) dialog = MoveFootprintDialog(self, old_meta) if dialog.exec_() != QtGui.QDialog.Accepted: return (new_name, new_lib) = dialog.get_data() old_name = old_meta['name'] my_id = self.active_footprint.id fn = my_id + '.coffee' old_lib = self.active_library new_code = old_code.replace("#name %s" % (old_name), "#name %s" % (new_name)) new_lib_dir = QtCore.QDir(self.coffee_lib[new_lib].directory) new_file_name = new_lib_dir.filePath(fn) with open(new_file_name, 'w+') as f: f.write(new_code) status_str = "moved %s/%s to %s/%s." % (old_lib.name, old_name, new_lib, new_name) self.parent.status(status_str) if old_lib.name == new_lib: self.rescan_library(old_lib.name, my_id) # just to update the nameq else: full_fn = os.path.join(old_lib.directory, fn) os.unlink(full_fn) self.rescan_library(old_lib.name) self.active_library = self.rescan_library(new_lib, my_id)
def move_footprint(self): old_code = self.te1.toPlainText() old_meta = pycoffee.eval_coffee_meta(old_code) dialog = MoveFootprintDialog(self, old_meta) if dialog.exec_() != QtGui.QDialog.Accepted: return (new_name, new_lib) = dialog.get_data() old_name = old_meta['name'] my_id = self.active_footprint_id fn = my_id + '.coffee' old_lib = self.active_library new_code = old_code.replace("#name %s" % (old_name), "#name %s" % (new_name)) new_lib_dir = QtCore.QDir(self.lib_dir[new_lib]) new_file_name = new_lib_dir.filePath(fn) with open(new_file_name, 'w+') as f: f.write(new_code) self.te1.setPlainText(new_code) self.status("moved %s/%s to %s/%s." % (old_lib, old_name, new_lib, new_name)) if old_lib == new_lib: self.rescan_library(old_lib, my_id) # just to update the name else: old_lib_dir = QtCore.QDir(self.lib_dir[old_lib]) old_lib_dir.remove(fn) self.rescan_library(old_lib) self.rescan_library(new_lib, my_id) self.active_library = new_lib
def scan(self, select_id=None): self.meta_list = [] self.fail_list = [] if not self.exists: return for path in glob.glob(self.directory + '/*.coffee'): with open(path) as f: code = f.read() meta = pycoffee.eval_coffee_meta(code) if not 'name' in meta or not 'id' in meta: self.fail_list.append(meta) continue meta['readonly'] = not os.access(path, os.W_OK) meta['filename'] = path self.meta_list.append(meta) self.meta_list = [Meta(meta) for meta in self.meta_list] self.meta_list.sort(key=lambda x: x.name) self.meta_by_id = {} for meta in self.meta_list: self.meta_by_id[meta.id] = meta self.meta_by_name = {} for meta in self.meta_list: self.meta_by_name[meta.name] = meta # scan child relationships found_as_child = [] for meta in self.meta_list: if meta.parent != None and meta.parent in self.meta_by_id: self.meta_by_id[meta.parent].child_ids.append(meta.id) found_as_child.append(meta.id) self.root_meta_list = filter( lambda meta: meta.id not in found_as_child, self.meta_list)
def load(self, path): with open(path) as f: code = f.read() meta = pycoffee.eval_coffee_meta(code) if not 'name' in meta: raise Exception('Error loading footprint from %s' % (path)) self.name = meta['name'] self.id = meta['id'] self.identify = ('footprint', (self.lib_name, self.id)) self.desc = oget(meta, 'desc', '') self.parent = oget(meta, 'parent', None)
def clone_footprint(self): if self.parent.executed_footprint == []: s = "Can't clone if footprint doesn't compile." QtGui.QMessageBox.warning(self, "warning", s) self.parent.status(s) return old_code = self.parent.code_textedit.toPlainText() old_meta = pycoffee.eval_coffee_meta(old_code) dialog = CloneFootprintDialog(self, old_meta, old_code) if dialog.exec_() != QtGui.QDialog.Accepted: return (new_id, new_name, new_lib) = dialog.get_data() new_code = pycoffee.clone_coffee_meta(old_code, old_meta, new_id, new_name) lib_dir = QtCore.QDir(self.coffee_lib[new_lib].directory) new_file_name = lib_dir.filePath("%s.coffee" % (new_id)) with open(new_file_name, 'w+') as f: f.write(new_code) s = "%s/%s cloned to %s/%s." % (self.active_library.name, old_meta['name'], new_lib, new_name) self.active_library = self.rescan_library(new_lib, new_id) self.active_footprint = self.active_library.meta_by_id(new_id) self.parent.update_text(new_code) self.parent.show_footprint_tab() self.parent.status(s)
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
def move_footprint(self): old_code = self.parent.code_textedit.toPlainText() old_meta = pycoffee.eval_coffee_meta(old_code) dialog = MoveFootprintDialog(self, old_meta) if dialog.exec_() != QtGui.QDialog.Accepted: return (new_name, new_lib) = dialog.get_data() old_name = old_meta['name'] my_id = self.active_footprint.id fn = my_id + '.coffee' old_lib = self.active_library new_code = old_code.replace("#name %s" % (old_name), "#name %s" % (new_name)) new_lib_dir = QtCore.QDir(self.coffee_lib[new_lib].directory) new_file_name = new_lib_dir.filePath(fn) with open(new_file_name, 'w+') as f: f.write(new_code) status_str = "moved %s/%s to %s/%s." % (old_lib.name, old_name, new_lib, new_name) self.parent.status(status_str) if old_lib.name == new_lib: self.rescan_library(old_lib.name, my_id) # just to update the nameq else: full_fn = os.path.join(old_lib.directory, fn) os.unlink(full_fn) self.rescan_library(old_lib.name) self.active_library = self.rescan_library(new_lib, my_id)