def save(filters='<STR_LIT>', text='<STR_LIT>', default_directory='<STR_LIT>', force_extension=None):
<EOL>if not '<STR_LIT:*>' in filters.split('<STR_LIT:;>'): filters = filters + "<STR_LIT>"<EOL>if default_directory in _settings.keys(): default = _settings[default_directory]<EOL>else:                                     default = "<STR_LIT>"<EOL>result = _qtw.QFileDialog.getSaveFileName(None,text,default,filters)<EOL>if _s._qt.VERSION_INFO[<NUM_LIT:0>:<NUM_LIT:5>] == "<STR_LIT>": result = result[<NUM_LIT:0>]    <EOL>result = str(result)<EOL>if  not force_extension == None:<EOL><INDENT>force_extension = force_extension.replace('<STR_LIT:*>','<STR_LIT>').replace('<STR_LIT:.>','<STR_LIT>')<EOL>if not _os.path.splitext(result)[-<NUM_LIT:1>][<NUM_LIT:1>:] == force_extension:<EOL><INDENT>result = result + '<STR_LIT:.>' + force_extension<EOL><DEDENT><DEDENT>if result == '<STR_LIT>': return None<EOL>else:<EOL><INDENT>_settings[default_directory] = _os.path.split(result)[<NUM_LIT:0>]<EOL>return result<EOL><DEDENT>
Pops up a save dialog and returns the string path of the selected file.

Parameters
----------
filters='*.*'
    Which file types should appear in the dialog.
text='Save THIS, facehead!'
    Title text for the dialog.
default_directory='default_directory'
    Key for the spinmob.settings default directory. If you use a name, e.g.
    'my_defaultypoo', for one call of this function, the next time you use
    the same name, it will start in the last dialog's directory by default.
force_extension=None
    Setting this to a string, e.g. 'txt', will enforce that the filename 
    will have this extension.