예제 #1
0
        /// <inheritdoc/>
        public override void DoSetText(SetTextEventArgs args)
        {
            if (args == null)
            {
                return;
            }

            try
            {
                // path
                string path = My.PathEx.Combine(Location, args.File.Name);

                // read
                string text = args.Text.TrimEnd();

                // set
                if (!A.SetContentUI(path, text))
                {
                    return;
                }
            }
            catch (RuntimeException ex)
            {
                if (args.UI)
                {
                    A.Message(ex.Message);
                }
            }
        }
예제 #2
0
        public override void UISetText(SetTextEventArgs args)
        {
            base.UISetText(args);

            Update(true);
            Redraw();

            _isDirty = true;
        }
예제 #3
0
 /// <include file='doc.xml' path='doc/ScriptFork/*'/>
 /// <param name="args">.</param>
 public sealed override void SetText(SetTextEventArgs args)
 {
     if (AsSetText == null)
     {
         DoSetText(args);
     }
     else
     {
         A.InvokeScriptReturnAsIs(AsSetText, this, args);
     }
 }
예제 #4
0
        /// <inheritdoc/>
        public override void SetText(SetTextEventArgs args)
        {
            if (args == null)
            {
                return;
            }

            PSPropertyInfo pi = Cast <PSPropertyInfo> .From(args.File.Data);

            if (pi == null)
            {
                args.Result = JobResult.Ignore;
            }
            else
            {
                A.SetPropertyFromTextUI(Value, pi, args.Text.TrimEnd());
            }
        }
예제 #5
0
        /// <inheritdoc/>
        public override void SetText(SetTextEventArgs args)
        {
            if (args == null)
            {
                return;
            }

            PSPropertyInfo pi = args.File.Data as PSPropertyInfo;

            if (pi == null)
            {
                args.Result = JobResult.Ignore;
                return;
            }

            try
            {
                object value;
                string text = args.Text.TrimEnd();
                if (pi.TypeNameOfValue.EndsWith("]", StringComparison.Ordinal))
                {
                    ArrayList lines = new ArrayList();
                    foreach (var line in FarNet.Works.Kit.SplitLines(text))
                    {
                        lines.Add(line);
                    }
                    value = lines;
                }
                else
                {
                    value = text;
                }

                A.SetPropertyValue(ItemPath, pi.Name, Converter.Parse(pi, value));
                PropertyPanel.WhenPropertyChanged(ItemPath);
            }
            catch (RuntimeException ex)
            {
                if (args.UI)
                {
                    A.Msg(ex);
                }
            }
        }
예제 #6
0
        /// <inheritdoc/>
        public override void UISetText(SetTextEventArgs args)
        {
            if (args == null)
            {
                return;
            }

            // call
            base.UISetText(args);
            if (args.Result != JobResult.Done)
            {
                return;
            }

            // update after edit
            if (0 != (args.Mode & ExplorerModes.Edit))             //????? in many cases it is not needed, think to avoid/do effectively
            {
                UpdateRedraw(true);
            }
        }
예제 #7
0
        public override void SetText(SetTextEventArgs args)
        {
            if (args == null)
            {
                return;
            }
            var value = (SettingsPropertyValue)args.File.Data;

            var ex = ValidatePropertyText(value.Property, args.Text);

            if (ex != null)
            {
                args.Result = JobResult.Ignore;
                Far.Api.ShowError("Settings", ex);
                return;
            }

            args.File.Description = SetPropertyValueText(value, args.Text);

            CompleteFileData(args.File, value);
        }
예제 #8
0
        /// <inheritdoc/>
        public override void SetText(SetTextEventArgs args)
        {
            if (args == null)
            {
                return;
            }

            // call
            var xfile = (SuperFile)args.File;

            if (!xfile.Explorer.CanSetText)
            {
                args.Result = JobResult.Default;
                return;
            }
            var argsImport = new SetTextEventArgs(args.Mode, xfile.File, args.Text);

            xfile.Explorer.SetText(argsImport);

            // result
            args.Result = argsImport.Result;
        }
예제 #9
0
        /// <inheritdoc/>
        public override void SetText(SetTextEventArgs args)
        {
            if (args == null) return;

            // call
            var xfile = (SuperFile)args.File;
            if (!xfile.Explorer.CanSetText)
            {
                args.Result = JobResult.Default;
                return;
            }
            var argsImport = new SetTextEventArgs(args.Mode, xfile.File, args.Text);
            xfile.Explorer.SetText(argsImport);

            // result
            args.Result = argsImport.Result;
        }
예제 #10
0
        public override void UISetText(SetTextEventArgs args)
        {
            base.UISetText(args);

            Update(true);
            Redraw();

            _isDirty = true;
        }
예제 #11
0
파일: Panel.UI.cs 프로젝트: pezipink/FarNet
        /// <summary>
        /// Opens the file in the editor.
        /// </summary>
        /// <param name="file">The file to edit.</param>
        /// <remarks>
        /// The default method calls <see cref="FarNet.Explorer.GetContent"/>  to get a temporary file to edit
        /// and <see cref="FarNet.Explorer.SetFile"/> to save changes when the editor closes.
        /// The explorer should have at least export implemented.
        /// </remarks>
        public virtual void UIEditFile(FarFile file)
        {
            if (file == null)
                return;

            // target
            var temp = Far.Api.TempName();

            // export
            var xExportArgs = WorksExportExplorerFile(Explorer, this, ExplorerModes.Edit, file, temp);
            if (xExportArgs == null)
                return;

            // case: actual file exists
            var asExportFileEventArgs = xExportArgs as GetContentEventArgs;
            if (asExportFileEventArgs != null && !string.IsNullOrEmpty(asExportFileEventArgs.UseFileName))
            {
                var editorActual = Far.Api.CreateEditor();
                editorActual.FileName = asExportFileEventArgs.UseFileName;
                editorActual.Title = file.Name;
                if (!asExportFileEventArgs.CanSet)
                    editorActual.IsLocked = true;
                editorActual.Open();
                return;
            }

            // rename
            if (!string.IsNullOrEmpty(xExportArgs.UseFileExtension))
            {
                string temp2 = temp + xExportArgs.UseFileExtension;
                File.Move(temp, temp2);
                temp = temp2;
            }

            // editor
            var editorTemp = Far.Api.CreateEditor();
            editorTemp.DeleteSource = DeleteSource.File;
            editorTemp.DisableHistory = true;
            editorTemp.FileName = temp;
            editorTemp.Title = file.Name;
            if (asExportFileEventArgs.CodePage != 0)
                editorTemp.CodePage = asExportFileEventArgs.CodePage;

            // future
            if (xExportArgs.CanSet)
            {
                if (Explorer.CanSetText)
                {
                    editorTemp.Saving += delegate
                    {
                        var xImportTextArgs = new SetTextEventArgs(ExplorerModes.Edit, file, editorTemp.GetText());
                        Log.Source.TraceInformation("ImportText");
                        UISetText(xImportTextArgs);
                    };
                }
                else
                {
                    editorTemp.Closed += delegate //???? to use Saved (Far 3), update docs.
                    {
                        if (editorTemp.TimeOfSave == DateTime.MinValue)
                            return;

                        var xImportFileArgs = new SetFileEventArgs(ExplorerModes.Edit, file, temp);
                        Log.Source.TraceInformation("ImportFile");
                        UISetFile(xImportFileArgs);
                    };
                }
            }
            else
            {
                // to lock
                editorTemp.IsLocked = true;
            }

            // go
            editorTemp.Open();
        }
예제 #12
0
        /// <inheritdoc/>
        public override void SetText(SetTextEventArgs args)
        {
            if (args == null) return;

            PSPropertyInfo pi = Cast<PSPropertyInfo>.From(args.File.Data);
            if (pi == null)
                args.Result = JobResult.Ignore;
            else
                A.SetPropertyFromTextUI(Value, pi, args.Text.TrimEnd());
        }
예제 #13
0
        /// <summary>
        /// Calls <see cref="FarNet.Explorer.SetText"/> and <see cref="OnThisFileChanged"/>.
        /// </summary>
        /// <param name="args">.</param>
        public virtual void UISetText(SetTextEventArgs args)
        {
            if (args == null) return;

            Explorer.SetText(args);

            if (args.Result != JobResult.Ignore)
                OnThisFileChanged(args);
        }
예제 #14
0
        public override void SetText(SetTextEventArgs args)
        {
            if (args == null) return;
            var value = (SettingsPropertyValue)args.File.Data;

            var ex = ValidatePropertyText(value.Property, args.Text);
            if (ex != null)
            {
                args.Result = JobResult.Ignore;
                Far.Api.ShowError("Settings", ex);
                return;
            }

            args.File.Description = SetPropertyValueText(value, args.Text);

            CompleteFileData(args.File, value);
        }
예제 #15
0
        /// <inheritdoc/>
        public override void UISetText(SetTextEventArgs args)
        {
            if (args == null) return;

            // call
            base.UISetText(args);
            if (args.Result != JobResult.Done)
                return;

            // update after edit
            if (0 != (args.Mode & ExplorerModes.Edit)) //????? in many cases it is not needed, think to avoid/do effectively
                UpdateRedraw(true);
        }
예제 #16
0
 /// <summary>
 /// <see cref="Explorer.SetText"/> worker.
 /// </summary>
 /// <param name="args">.</param>
 public virtual void DoSetText(SetTextEventArgs args)
 {
     base.SetText(args);
 }
예제 #17
0
 /// <include file='doc.xml' path='doc/ScriptFork/*'/>
 /// <param name="args">.</param>
 public override sealed void SetText(SetTextEventArgs args)
 {
     if (AsSetText == null)
         DoSetText(args);
     else
         A.InvokeScriptReturnAsIs(AsSetText, this, args);
 }
예제 #18
0
 /// <summary>
 /// <see cref="Explorer.SetText"/> worker.
 /// </summary>
 /// <param name="args">.</param>
 public virtual void DoSetText(SetTextEventArgs args)
 {
     base.SetText(args);
 }
예제 #19
0
파일: Explorer.cs 프로젝트: pezipink/FarNet
 /// <summary>
 /// Sets the file content given the text string.
 /// </summary>
 /// <param name="args">.</param>
 /// <remarks>
 /// If this method is used then <see cref="Functions"/> should contain the <see cref="ExplorerFunctions.SetText"/> flag.
 /// </remarks>
 public virtual void SetText(SetTextEventArgs args)
 {
     if (args != null) args.Result = JobResult.Default;
 }
예제 #20
0
        /// <inheritdoc/>
        public override void SetText(SetTextEventArgs args)
        {
            if (args == null) return;

            PSPropertyInfo pi = args.File.Data as PSPropertyInfo;
            if (pi == null)
            {
                args.Result = JobResult.Ignore;
                return;
            }

            try
            {
                object value;
                string text = args.Text.TrimEnd();
                if (pi.TypeNameOfValue.EndsWith("]", StringComparison.Ordinal))
                {
                    ArrayList lines = new ArrayList();
                    foreach (var line in FarNet.Works.Kit.SplitLines(text))
                        lines.Add(line);
                    value = lines;
                }
                else
                {
                    value = text;
                }

                A.SetPropertyValue(ItemPath, pi.Name, Converter.Parse(pi, value));
                PropertyPanel.WhenPropertyChanged(ItemPath);
            }
            catch (RuntimeException ex)
            {
                if (args.UI)
                    A.Msg(ex);
            }
        }
예제 #21
0
        /// <inheritdoc/>
        public override void DoSetText(SetTextEventArgs args)
        {
            if (args == null) return;

            try
            {
                // path
                string path = My.PathEx.Combine(Location, args.File.Name);

                // read
                string text = args.Text.TrimEnd();

                // set
                if (!A.SetContentUI(path, text))
                    return;
            }
            catch (RuntimeException ex)
            {
                if (args.UI)
                    A.Message(ex.Message);
            }
        }