commit 908c92e831fd681be37d5decf1e78edbb1bf85ca
Author: Benjamin Piwowarski <[email protected]>
Date:   Wed Mar 5 15:46:27 2014 -0500

    Updates to AppleScript support, and documentaoin for it.

diff --git a/development/MacOSX/LyX.sdef b/development/MacOSX/LyX.sdef
index 41f7408..63b8925 100644
--- a/development/MacOSX/LyX.sdef
+++ b/development/MacOSX/LyX.sdef
@@ -12,43 +12,28 @@
 -->
  
  
-    <!-- declare the namespace for using XInclude so we can include the 
standard suite -->
+<!-- declare the namespace for using XInclude so we can include the standard 
suite -->
 <dictionary xmlns:xi="http://www.w3.org/2003/XInclude";>
- 
- 
-        <!-- use XInclude to include the standard suite -->
-    <!-- <xi:include 
href="file:///System/Library/ScriptingDefinitions/CocoaStandard.sdef" 
xpointer="xpointer(/dictionary/suite)"/> -->
- 
- 
-        <!-- our special scripting suite for this example -->
-    <suite name="Lyx" code="LYX " description="LyX scripting facilities.">
-        
-        <record-type name="LyX return value" code="LyxR">
-            <property name="code" code="code" type="integer"
-                description="Error code (0 in case of success).">
-                <cocoa key="code"/>
-            </property>            
-            <property name="message" code="mess" type="text"
-                description="The returned message.">
-                <cocoa key="message"/>
-            </property>
-        </record-type>
-        
-        <command name="run" code="SLyxComm" description="run a simple command 
with one parameter">
+
+       <!-- our special scripting suite for this example -->
+       <suite name="Lyx" code="LYX " description="LyX scripting facilities.">
+               
+          
+               <command name="run" code="SLyxComm" description="run a simple 
command with one parameter">
                        <cocoa class="LyxCommand"/>
                        
                        <direct-parameter description="The command to be 
executed.">
-                <type type="text" list="no"/>
-            </direct-parameter>
-            
-            <parameter name="with argument" code="args" type="text">
-                <cocoa key="arg"/>
-            </parameter>
-            
-                       <result type="LyX return value" description="Contains a 
code (0 for success) and the message returned by LyX"/>
+                               <type type="text" list="no"/>
+                       </direct-parameter>
+                       
+                       <parameter name="with argument" code="args" type="text">
+                               <cocoa key="arg"/>
+                       </parameter>
+                       
+                       <result type="text" description="The message returned 
by LyX"/>
                </command>
 
-    </suite>
-    
-    
+       </suite>
+       
+       
 </dictionary>
\ No newline at end of file
diff --git a/lib/doc/Additional.lyx b/lib/doc/Additional.lyx
index 59a31d1..04f36c8 100644
--- a/lib/doc/Additional.lyx
+++ b/lib/doc/Additional.lyx
@@ -131,11 +131,12 @@ End
 \papercolumns 1
 \papersides 2
 \paperpagestyle headings
-\tracking_changes false
+\tracking_changes true
 \output_changes false
 \html_math_output 0
 \html_css_as_file 0
 \html_be_strict true
+\author -1762856967 "Benjamin Piwowarski" 
 \end_header
 
 \begin_body
@@ -5507,6 +5508,91 @@ read a <~/.lyxpipe.out
 \end_inset
 
 echo $a
+\change_inserted -1762856967 1393941760
+
+\end_layout
+
+\begin_layout Subsection
+
+\change_inserted -1762856967 1393941776
+AppleScript (Mac OS X)
+\end_layout
+
+\begin_layout Standard
+
+\change_inserted -1762856967 1393941776
+Since LyX 2.1, LyX supports basic interactions with AppleScript for normal
+ communication through the command run.
+ This command takes a direct argument (the 
+\series bold
+function
+\series default
+ to perform) and an optional argument.
+ It either returns the output of the function or triggers an error with
+ the error message and code.
+\end_layout
+
+\begin_layout Standard
+
+\change_inserted -1762856967 1393941776
+Example:
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -1762856967 1393941776
+tell application "LyX"
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -1762856967 1393941776
+  try
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -1762856967 1393941776
+    -- Stores the current file name into f
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -1762856967 1393941776
+    set f to (run "server-get-filename" with argument "")
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -1762856967 1393941776
+    on error the error_message number the error_number
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -1762856967 1393941776
+      display dialog "Error: " & the error_number & ".
+ " ¬
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -1762856967 1393941776
+              & the error_message buttons {"OK"} default button 1
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -1762856967 1393941776
+  end try
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -1762856967 1393941776
+end tell
+\change_unchanged
+
 \end_layout
 
 \begin_layout Section
diff --git a/src/support/AppleScript.m b/src/support/AppleScript.m
index bf06b02..324b4be 100644
--- a/src/support/AppleScript.m
+++ b/src/support/AppleScript.m
@@ -34,8 +34,14 @@
   NSString *message = [NSString stringWithCString:result.message 
encoding:NSUTF8StringEncoding];
   free(result.message); 
   
-  NSDictionary *objcResult = [NSDictionary dictionaryWithObjectsAndKeys: 
[NSNumber numberWithInt:result.code], @"code", message, @"message", nil];
-  return objcResult;
+  if (result.code != 0) {
+    NSScriptCommand* c = [NSScriptCommand currentCommand]; 
+    [c setScriptErrorNumber:result.code]; 
+    [c setScriptErrorString:message];
+    return NULL;
+  }
+ 
+  return message;
 }
 
 @end

Reply via email to