def saveAsFile(parent=None, ids =None, tablenames = None, metadata = None, Session = None, session = None, globalApplicationDict = None, ): # mode homogeneous tablename = tablenames[0] session = Session() OEclass = metadata.dictMappedClasses[tablename] from ..io.io import all_format list_formats = [ ] formats ={ } for name, d in all_format: wo = [ o.__name__.lower() for o in d['class'].writeable_objects ] if tablename in wo: class F: pass f = F() f.name = name f.params = d['class'].write_params[ OEclass ] list_formats.append( f ) formats[name] = d['class'] dia = QDialog() dia.setWindowFlags(Qt.Dialog) v = QVBoxLayout() dia.setLayout(v) mwp = WidgetMultiMethodsParam( parent = parent , list_method = list_formats, method_name = 'Export selected '+tablename, globalApplicationDict = globalApplicationDict, ) v.addWidget( mwp ) params = [ [ 'dir' , { 'value' : '' , 'widgettype' : ChooseDirWidget , 'label' : 'Select path to write files' }], ] place = ParamWidget( params, applicationdict = globalApplicationDict, title = None, ) v.addWidget( place ) buttonBox = QDialogButtonBox(QDialogButtonBox.Ok) v.addWidget(buttonBox) dia.connect(buttonBox, SIGNAL('accepted()'), dia, SLOT('accept()')); if dia.exec_(): name = mwp.get_name() options = mwp.get_dict() dir = place['dir'] for id in ids: OEinstance = session.query(OEclass).filter_by(id=id).one() IOinstance = formats[name](filename = os.path.join( dir, OEinstance.name+'.'+formats[name].extensions[0] ) ) if OEclass ==Segment: IOinstance.write_segment( OEinstance, **options) elif OEclass ==Block: IOinstance.write_block( OEinstance, **options)