Git commit 9810f149f0455af0a4053f4cdf3e81ae1bfc8596 by Thomas Eschenbacher.
Committed on 21/02/2015 at 07:46.
Pushed by eschenbacher into branch 'master'.

new command sync(): wait for commands scheduled with delayed(...)

M  +1    -1    CHANGES
M  +21   -0    doc/en/index.docbook
M  +8    -3    kwave/FileContext.cpp

http://commits.kde.org/kwave/9810f149f0455af0a4053f4cdf3e81ae1bfc8596

diff --git a/CHANGES b/CHANGES
index 1900474..bd753fc 100644
--- a/CHANGES
+++ b/CHANGES
@@ -5,12 +5,12 @@
  * handbook: added text command reference
  * make system: new target "update-handbook" (updates command cross reference)
  * make system: fixed dependency problem in translation
- * i18n: implemented filter for non-translatable pot entries
  * new commands: "window:sendkey", "window:screenshot", "window:close"
    and "window:resize"
  * built-in variable ${LANG} for kwave commands
  * support for delayed command execution
  * debug plugin: always compiled in, but only visible in debug build
+ * new command sync(): wait for commands scheduled with delayed
 
 0.8.99-2 [2015-01-02]
 
diff --git a/doc/en/index.docbook b/doc/en/index.docbook
index 45169a8..c9ee25c 100644
--- a/doc/en/index.docbook
+++ b/doc/en/index.docbook
@@ -105,6 +105,7 @@
   <!ENTITY no-i18n-cmd_selectvisible "selectvisible">
   <!ENTITY no-i18n-cmd_start "start">
   <!ENTITY no-i18n-cmd_stop "stop">
+  <!ENTITY no-i18n-cmd_sync "sync">
   <!ENTITY no-i18n-cmd_undo "undo">
   <!ENTITY no-i18n-cmd_undo_all "undo_all">
   <!ENTITY no-i18n-cmd_view_scroll_end "view:scroll_end">
@@ -3032,6 +3033,7 @@
                <indexentry><primaryie><link linkend="cmd_sect_selectvisible" 
endterm="cmd_title_selectvisible"/></primaryie></indexentry>
                <indexentry><primaryie><link linkend="cmd_sect_start" 
endterm="cmd_title_start"/></primaryie></indexentry>
                <indexentry><primaryie><link linkend="cmd_sect_stop" 
endterm="cmd_title_stop"/></primaryie></indexentry>
+               <indexentry><primaryie><link linkend="cmd_sect_sync" 
endterm="cmd_title_sync"/></primaryie></indexentry>
            </indexdiv>
            <indexdiv><title>u</title>
                <indexentry><primaryie><link linkend="cmd_sect_undo" 
endterm="cmd_title_undo"/></primaryie></indexentry>
@@ -3235,6 +3237,7 @@
        </tbody></tgroup></informaltable></simplesect>
        <simplesect><title>See also</title>
            <para>
+               <link 
linkend="cmd_sect_sync"><command>&no-i18n-tag;&no-i18n-cmd_sync;</command>()</link>,
                <link 
linkend="cmd_sect_window_resize"><command>&no-i18n-tag;&no-i18n-cmd_window_resize;</command>()</link>,
                <link 
linkend="cmd_sect_window_click"><command>&no-i18n-tag;&no-i18n-cmd_window_click;</command>()</link>,
                <link 
linkend="cmd_sect_window_sendkey"><command>&no-i18n-tag;&no-i18n-cmd_window_sendkey;</command>()</link>,
@@ -4409,6 +4412,24 @@
            </para>
        </simplesect>
        </sect2>
+
+       <!-- @COMMAND@ sync() -->
+       <sect2 id="cmd_sect_sync"><title 
id="cmd_title_sync">&no-i18n-cmd_sync;</title>
+       <simplesect>
+           
<title>&i18n-cmd_syntax;<command>&no-i18n-tag;&no-i18n-cmd_sync;</command>()</title>
+           <para>
+               Waits until all commands which have been started asynchronously
+               have finished. If nothing is currently queued for delayed
+               execution this command has no effect.
+           </para>
+       </simplesect>
+       <simplesect><title>See also</title>
+           <para>
+               <link 
linkend="cmd_sect_delayed"><command>&no-i18n-tag;&no-i18n-cmd_delayed;</command>()</link>
+           </para>
+       </simplesect>
+       </sect2>
+
     </sect1>
 
     <sect1 id="commands_u"><title>&no-i18n-tag;u</title>
diff --git a/kwave/FileContext.cpp b/kwave/FileContext.cpp
index da735da..108084f 100644
--- a/kwave/FileContext.cpp
+++ b/kwave/FileContext.cpp
@@ -319,9 +319,6 @@ int Kwave::FileContext::executeCommand(const QString &line)
     if (command.trimmed().startsWith(_("#")))
        return 0; // only a comment
 
-    // log all commands to the log file if enabled
-    Kwave::Logger::log(this, Kwave::Logger::Info, _("CMD: ") + line);
-
     // special case: if the command contains ";" it is a list of
     // commands -> macro !
     Kwave::Parser parse_list(command);
@@ -359,6 +356,9 @@ int Kwave::FileContext::executeCommand(const QString &line)
        }
     }
 
+    // log all commands to the log file if enabled
+    Kwave::Logger::log(this, Kwave::Logger::Info, _("CMD: ") + line);
+
     // parse one single command
     Kwave::Parser parser(command);
     QString cmd = parser.command();
@@ -434,6 +434,11 @@ int Kwave::FileContext::executeCommand(const QString &line)
        result = saveFileAs(parser.nextParam(), false);
     CASE_COMMAND("saveselect")
        result = saveFileAs(QString(), true);
+    CASE_COMMAND("sync")
+       while (!m_delayed_command_queue.isEmpty()) {
+           qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
+       }
+       result = 0;
     CASE_COMMAND("window:click")
        return delegateCommand("debug", parser, 3);
     CASE_COMMAND("window:close")

Reply via email to