autoScriptEditor ScriptEditor_createFromScript_canBeNull (Editor environment, Script script) { try { for (long ieditor = 1; ieditor <= theReferencesToAllOpenScriptEditors.size; ieditor ++) { ScriptEditor editor = theReferencesToAllOpenScriptEditors.at [ieditor]; if (MelderFile_equal (& script -> file, & editor -> file)) { Editor_raise (editor); Melder_appendError (U"The script ", & script -> file, U" is already open and has been moved to the front."); if (editor -> dirty) Melder_appendError (U"Choose \"Reopen from disk\" if you want to revert to the old version."); Melder_flushError (); return autoScriptEditor(); // safe null } } autostring32 text = MelderFile_readText (& script -> file); autoScriptEditor me = ScriptEditor_createFromText (environment, text.peek()); MelderFile_copy (& script -> file, & my file); Thing_setName (me.peek(), Melder_fileToPath (& script -> file)); return me; } catch (MelderError) { Melder_throw (U"Script window not created."); } }
static void FFNet_checkLayerNumber (FFNet me, long layer) { if (layer < 1 || layer > my nLayers) { if (layer == 0) { Melder_throw (U"A Layer number of 0 is not allowed."); } else if (layer < 0) { Melder_throw (U"A negative layer number is not allowed."); } else if (layer > my nLayers) { Melder_throw (U"A layer number of ", layer, U" is too big."); } Melder_appendError (U"This FFNet has ", layer, U" layer", (my nLayers > 1 ? U"s\n" : U"\n")); if (my nLayers == 1) { Melder_throw (U"Layer number must be equal to 1."); } else if (my nLayers == 2) { Melder_throw (U"Layer number must be equal to 1 or 2."); } else if (my nLayers == 3) { Melder_throw (U"Layer number must be equal to 1, 2 or 3."); } else { Melder_throw (U"Layer number must be in the range 1 to ", my nLayers); } } }
static void openDocument (TextEditor me, MelderFile file) { if (theOpenTextEditors) { for (long ieditor = 1; ieditor <= theOpenTextEditors -> size; ieditor ++) { TextEditor editor = (TextEditor) theOpenTextEditors -> item [ieditor]; if (editor != me && MelderFile_equal (file, & editor -> file)) { Editor_raise (editor); Melder_appendError (U"Text file ", file, U" is already open."); forget (me); // don't forget me before Melder_appendError, because "file" is owned by one of my dialogs Melder_flushError (); return; } } } autostring32 text = MelderFile_readText (file); GuiText_setString (my textWidget, text.peek()); /* * GuiText_setString has invoked the changeCallback, * which has set `my dirty` to `true`. Fix this. */ my dirty = false; MelderFile_copy (file, & my file); Thing_setName (me, Melder_fileToPath (file)); }
void Melder_flushError (Melder_19_ARGS) { Melder_appendError (Melder_19_ARGS_CALL); Melder_flushError (); }
void Melder_flushError (Melder_1_ARG) { Melder_appendError (Melder_1_ARG_CALL); Melder_flushError (); }