static void menu_cb_runSelection (EDITOR_ARGS) { EDITOR_IAM (ScriptEditor); if (my interpreter -> running) Melder_throw (U"The script is already running (paused). Please close or continue the pause or demo window."); autostring32 text = GuiText_getSelection (my textWidget); if (text.peek() == NULL) Melder_throw (U"No text selected."); structMelderFile file = { 0 }; if (my name [0]) { Melder_pathToFile (my name, & file); MelderFile_setDefaultDir (& file); } Melder_includeIncludeFiles (& text); int npar = Interpreter_readParameters (my interpreter, text.peek()); if (npar) { /* * Pop up a dialog box for querying the arguments. */ forget (my argsDialog); my argsDialog = Interpreter_createForm (my interpreter, my d_windowForm, NULL, args_ok_selectionOnly, me, true); UiForm_do (my argsDialog, false); } else { autoPraatBackground background; if (my name [0]) MelderFile_setDefaultDir (& file); Interpreter_run (my interpreter, text.peek()); } }
static void menu_cb_run (ScriptEditor me, EDITOR_ARGS_DIRECT) { if (my interpreter -> running) Melder_throw (U"The script is already running (paused). Please close or continue the pause or demo window."); autostring32 text = GuiText_getString (my textWidget); trace (U"Running the following script (1):\n", text.peek()); structMelderFile file = { 0 }; if (my name [0]) { Melder_pathToFile (my name, & file); MelderFile_setDefaultDir (& file); } Melder_includeIncludeFiles (& text); int npar = Interpreter_readParameters (my interpreter.get(), text.peek()); if (npar) { /* * Pop up a dialog box for querying the arguments. */ my argsDialog = autoUiForm (Interpreter_createForm (my interpreter.get(), my d_windowForm, nullptr, args_ok, me, false)); UiForm_do (my argsDialog.get(), false); } else { autoPraatBackground background; if (my name [0]) MelderFile_setDefaultDir (& file); trace (U"Running the following script (2):\n", text.peek()); Interpreter_run (my interpreter.get(), text.peek()); } }
int UiPause_end (int numberOfContinueButtons, int defaultContinueButton, int cancelContinueButton, const wchar_t *continueText1, const wchar_t *continueText2, const wchar_t *continueText3, const wchar_t *continueText4, const wchar_t *continueText5, const wchar_t *continueText6, const wchar_t *continueText7, const wchar_t *continueText8, const wchar_t *continueText9, const wchar_t *continueText10, Interpreter interpreter) { if (thePauseForm == NULL) Melder_throw ("Found the function \"endPause\" without a preceding \"beginPause\"."); UiForm_setPauseForm (thePauseForm, numberOfContinueButtons, defaultContinueButton, cancelContinueButton, continueText1, continueText2, continueText3, continueText4, continueText5, continueText6, continueText7, continueText8, continueText9, continueText10, thePauseFormCancelCallback); theCancelContinueButton = cancelContinueButton; UiForm_finish (thePauseForm); bool wasBackgrounding = Melder_backgrounding; //if (theCurrentPraatApplication -> batch) goto end; if (wasBackgrounding) praat_foreground (); /* * Put the pause form on the screen. */ UiForm_destroyWhenUnmanaged (thePauseForm); UiForm_do (thePauseForm, false); /* * Wait for the user to click Stop or Continue. */ #ifndef CONSOLE_APPLICATION { // scope autoMelderSaveDefaultDir saveDir; thePauseForm_clicked = 0; Melder_assert (theEventLoopDepth == 0); theEventLoopDepth ++; try { #if gtk do { gtk_main_iteration (); } while (! thePauseForm_clicked); #elif cocoa #elif motif do { XEvent event; GuiNextEvent (& event); XtDispatchEvent (& event); } while (! thePauseForm_clicked); #endif } catch (MelderError) { Melder_flushError ("An error made it to the outer level in a pause window; should not occur! Please write to [email protected]"); } theEventLoopDepth --; } if (wasBackgrounding) praat_background (); /* BUG: should also restore praatP. editor. */ thePauseForm = NULL; // undangle thePauseFormRadio = NULL; // undangle if (thePauseForm_clicked == -1) { Interpreter_stop (interpreter); Melder_throw ("You interrupted the script."); //Melder_flushError (NULL); //Melder_clearError (); } else { //Melder_casual ("Clicked %d", thePauseForm_clicked); } #endif return thePauseForm_clicked; }