private void SetText(bool reloadReferences) { if (_currentDevice == null) { return; } UpdateEditorLanguage(_currentCodeType.CodeType, reloadReferences); if (!String.IsNullOrWhiteSpace(_currentCodeType.EditFilePath)) { var filePathData = Encoding.UTF8.GetBytes(_currentCodeType.EditFilePath); var fileContentsDataString = SimpleHttpServer.SendPostRequest(_currentDevice.DeviceAddress, filePathData, "GetFileContents"); _currentWrapText = ""; CodeEditor.Document.SetText(fileContentsDataString); CodeEditor.Document.SetHeaderAndFooterText("", ""); CodeEditor.Document.FileName = Path.GetFileName(_currentCodeType.EditFilePath); } else { var isPixate = _currentDevice.PixateCssPaths != null; _currentWrapText = EditorHelpers.GetWrapText(_currentCodeType.CodeType, _currentDevice.DeviceType, isPixate ? new List <string> { "using PixateLib;" } : null); CodeEditor.Document.SetText(EditorHelpers.GetDefaultCode(_currentCodeType.CodeType, _currentDevice.DeviceType)); CodeEditor.Document.SetHeaderAndFooterText(WrapHeader, WrapFooter); CodeEditor.Document.FileName = "ProtoPad.cs"; } }
private void SendCssButton_Click(object sender, RoutedEventArgs e) { var cssText = CodeEditor.Document.CurrentSnapshot.Text; var cssData = Encoding.UTF8.GetBytes(cssText); var cssFilePathData = Encoding.UTF8.GetBytes(_currentCodeType.EditFilePath); var requestLength = 2 + cssFilePathData.Length + cssData.Length; var requestData = new byte[requestLength]; var cssFilePathDataLength = (ushort)(cssFilePathData.Length); requestData[0] = (byte)(cssFilePathDataLength >> 8); requestData[1] = (byte)cssFilePathDataLength; Array.Copy(cssFilePathData, 0, requestData, 2, cssFilePathDataLength); Array.Copy(cssData, 0, requestData, 2 + cssFilePathDataLength, cssData.Length); SimpleHttpServer.SendPostRequest(_currentDevice.DeviceAddress, requestData, "UpdatePixateCSS"); }
private void LoadAssemblyButton_Click(object sender, RoutedEventArgs e) { if (_currentDevice == null) { MessageBox.Show("Please connect to an app first!"); return; } var dlg = new Microsoft.Win32.OpenFileDialog { DefaultExt = ".dll" }; var frameworkReferenceAssembliesDirectory = Path.GetDirectoryName(_referencedAssemblies.First()); switch (_currentDevice.DeviceType) { case DeviceTypes.Android: dlg.Filter = "Xamarin.Android-compatible assembly (.dll)|*.dll"; dlg.InitialDirectory = Path.Combine(frameworkReferenceAssembliesDirectory, "MonoAndroid"); break; case DeviceTypes.iOS: dlg.Filter = "Xamarin.iOS-compatible assembly (.dll)|*.dll"; dlg.InitialDirectory = Path.Combine(frameworkReferenceAssembliesDirectory, @"MonoTouch\v4.0"); break; case DeviceTypes.Local: dlg.Filter = ".Net assembly (.dll)|*.dll"; dlg.InitialDirectory = Path.Combine(frameworkReferenceAssembliesDirectory, @".NETFramework"); break; } var result = dlg.ShowDialog(); if (!result.Value) { return; } var assemblyPath = dlg.FileName; _projectAssembly.AssemblyReferences.AddFrom(assemblyPath); _referencedAssemblies.Add(assemblyPath); SimpleHttpServer.SendPostRequest(_currentDevice.DeviceAddress, File.ReadAllBytes(assemblyPath), "ExecuteAssembly"); }
private ExecuteResponse SendCode(string url, bool wrapWithDefaultCode = true, string specialNonEditorCode = null) { var assemblyPath = CompileSource(wrapWithDefaultCode, specialNonEditorCode); if (String.IsNullOrWhiteSpace(assemblyPath)) { return(null); } if (_currentDevice.DeviceType == DeviceTypes.Local) { var executeResponse = EditorHelpers.ExecuteLoadedAssemblyString(File.ReadAllBytes(assemblyPath)); var dumpValues = executeResponse.GetDumpValues(); if (dumpValues != null) { executeResponse.Results = dumpValues.Select(v => new ResultPair(v.Description, Dumper.ObjectToDumpValue(v.Value, v.Level, executeResponse.GetMaxEnumerableItemCount()))).ToList(); } return(executeResponse); } var responseString = SimpleHttpServer.SendPostRequest(url, File.ReadAllBytes(assemblyPath), "ExecuteAssembly").Trim(); return(String.IsNullOrWhiteSpace(responseString) ? null : UtilityMethods.JsonDecode <ExecuteResponse>(responseString)); }