[mapguide-commits] r7161 - in trunk/Tools/Maestro/Maestro.AddIn.Scripting: Lang/Python Services

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Oct 29 01:20:20 PDT 2012


Author: jng
Date: 2012-10-29 01:20:20 -0700 (Mon, 29 Oct 2012)
New Revision: 7161

Modified:
   trunk/Tools/Maestro/Maestro.AddIn.Scripting/Lang/Python/PythonConsoleCompletionDataProvider.cs
   trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs
Log:
#2161: Improve python auto-complete and add some extra convenience methods to HostApplication

Modified: trunk/Tools/Maestro/Maestro.AddIn.Scripting/Lang/Python/PythonConsoleCompletionDataProvider.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.Scripting/Lang/Python/PythonConsoleCompletionDataProvider.cs	2012-10-29 07:59:12 UTC (rev 7160)
+++ trunk/Tools/Maestro/Maestro.AddIn.Scripting/Lang/Python/PythonConsoleCompletionDataProvider.cs	2012-10-29 08:20:20 UTC (rev 7161)
@@ -34,6 +34,7 @@
 using ICSharpCode.TextEditor.Gui.CompletionWindow;
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
 using System.Text;
 
@@ -89,8 +90,10 @@
 
         string GetName(string text)
         {
-            int startIndex = text.LastIndexOf(' ');
-            return text.Substring(startIndex + 1);
+            int startIndex = text.LastIndexOfAny(new char[] { ' ', '+', '(' });
+            string res = text.Substring(startIndex + 1);
+            Debug.WriteLine("Evaluating python auto-complete options for: " + res);
+            return res;
         }
 
         /// <summary>

Modified: trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs	2012-10-29 07:59:12 UTC (rev 7160)
+++ trunk/Tools/Maestro/Maestro.AddIn.Scripting/Services/ScriptingClasses.cs	2012-10-29 08:20:20 UTC (rev 7161)
@@ -32,9 +32,13 @@
 using Microsoft.Scripting.Runtime;
 using Microsoft.Scripting.Hosting;
 using Maestro.AddIn.Scripting.UI;
+using Maestro.Editors.Generic;
 
 namespace Maestro.AddIn.Scripting.Services
 {
+    /// <summary>
+    /// Helper class to inject the HostApplication object into the engine's global scope
+    /// </summary>
     public static class ScriptHostSetup
     {
         internal static void SetupGlobalScope(ScriptEngine engine, LanguageContext context)
@@ -163,6 +167,98 @@
         }
 
         /// <summary>
+        /// Displays a resource picker for opening
+        /// </summary>
+        /// <param name="conn"></param>
+        /// <param name="resourceType"></param>
+        /// <returns></returns>
+        public string PickResourceOpen(IServerConnection conn, string resourceType)
+        {
+            Func<string> picker = () =>
+            {
+                using (var diag = new ResourcePicker(conn.ResourceService, (ResourceTypes)Enum.Parse(typeof(ResourceTypes), resourceType), ResourcePickerMode.OpenResource))
+                {
+                    if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+                    {
+                        return diag.ResourceID;
+                    }
+                }
+                return null;
+            };
+            if (this.MainWindow.InvokeRequired)
+            {
+                var result = this.MainWindow.Invoke(picker);
+                if (result != null)
+                    return result.ToString();
+                else
+                    return null;
+            }
+            else
+                return picker();
+        }
+
+        /// <summary>
+        /// Displays a resource picker for saving
+        /// </summary>
+        /// <param name="conn"></param>
+        /// <param name="resourceType"></param>
+        /// <returns></returns>
+        public string PickResourceSave(IServerConnection conn, string resourceType)
+        {
+            Func<string> picker = () =>
+            {
+                using (var diag = new ResourcePicker(conn.ResourceService, (ResourceTypes)Enum.Parse(typeof(ResourceTypes), resourceType), ResourcePickerMode.SaveResource))
+                {
+                    if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+                    {
+                        return diag.ResourceID;
+                    }
+                }
+                return null;
+            };
+            if (this.MainWindow.InvokeRequired)
+            {
+                var result = this.MainWindow.Invoke(picker);
+                if (result != null)
+                    return result.ToString();
+                else
+                    return null;
+            }
+            else
+                return picker();
+        }
+
+        /// <summary>
+        /// Prompts a dialog to select a folder
+        /// </summary>
+        /// <param name="conn"></param>
+        /// <returns></returns>
+        public string PickFolder(IServerConnection conn)
+        {
+            Func<string> picker = () =>
+            {
+                using (var diag = new ResourcePicker(conn.ResourceService, ResourcePickerMode.OpenFolder))
+                {
+                    if (diag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+                    {
+                        return diag.ResourceID;
+                    }
+                }
+                return null;
+            };
+            if (this.MainWindow.InvokeRequired)
+            {
+                var result = this.MainWindow.Invoke(picker);
+                if (result != null)
+                    return result.ToString();
+                else
+                    return null;
+            }
+            else
+                return picker();
+        }
+
+        /// <summary>
         /// Opens the default editor for the specified resource
         /// </summary>
         /// <param name="conn"></param>



More information about the mapguide-commits mailing list