public void ClearUndo()
        {
            switch (_CurrentTab)
            {
            case DesignTabs.Design:
                dcDesign.ClearUndo();
                break;

            case DesignTabs.Edit:
                scintilla1.EmptyUndoBuffer();
                break;

            default:
                break;
            }
        }
        public override bool NewDocument()
        {
            _codeBox.Text = "";
            if (_main.Settings.GetBoolean("autoScriptHeader", false))
            {
                string       author = (PluginManager.Core.Project != null) ? PluginManager.Core.Project.Author : "Unnamed";
                const string header = "/**\n* Script: Untitled.js\n* Written by: {0}\n* Updated: {1}\n**/";
                _codeBox.Text = string.Format(header, author, DateTime.Today.ToShortDateString());
            }

            _codeBox.Lexer = Lexer.Cpp;
            InitializeHighlighting(string.Empty);
            InitializeFolding();

            _codeBox.EmptyUndoBuffer();
            _codeBox.SetSavePoint();
            return(true);
        }
        TabPage CreateTabPage(string fileName, string script)
        {
            var tabPage   = new TabPage();
            var scintilla = new Scintilla();

            scintilla.Dock        = DockStyle.Fill;
            scintilla.BorderStyle = BorderStyle.None;
            scintilla.Location    = new Point(0, 0);
            scintilla.Margin      = new Padding(0);
            scintilla.TabWidth    = 2;
            scintilla.UseTabs     = false;
            scintilla.WrapMode    = WrapMode.Word;

            scintilla.StyleResetDefault();
            scintilla.Styles[Style.Default].Font = "Consolas";
            scintilla.Styles[Style.Default].Size = 10;
            scintilla.StyleClearAll();

            scintilla.CaretLineBackColor = ColorTranslator.FromHtml("#feefff");
            scintilla.Styles[Style.Cpp.Default].ForeColor      = Color.Black;
            scintilla.Styles[Style.Cpp.Character].ForeColor    = ColorTranslator.FromHtml("#00aa00");
            scintilla.Styles[Style.Cpp.CommentLine].ForeColor  = ColorTranslator.FromHtml("#008000");
            scintilla.Styles[Style.Cpp.Comment].ForeColor      = ColorTranslator.FromHtml("#008000");
            scintilla.Styles[Style.Cpp.Preprocessor].ForeColor = ColorTranslator.FromHtml("#adadad");
            scintilla.Styles[Style.Cpp.Number].ForeColor       = ColorTranslator.FromHtml("#800000");
            scintilla.Styles[Style.Cpp.String].ForeColor       = ColorTranslator.FromHtml("#00aa00");
            scintilla.Styles[Style.Cpp.StringEol].ForeColor    = ColorTranslator.FromHtml("#00aa00");
            scintilla.Styles[Style.Cpp.Word].ForeColor         = ColorTranslator.FromHtml("#0000ff");
            scintilla.Styles[Style.Cpp.Word2].ForeColor        = ColorTranslator.FromHtml("#900090");
            scintilla.Lexer = Lexer.Cpp;

            scintilla.SetKeywords(0, "attribute const uniform varying buffer shared coherent volatile restrict readonly writeonly atomic_uint layout centroid flat smooth noperspective patch sample break continue do for while switch case default if else subroutine in out inout float double int void bool true false invariant precise discard return mat2 mat3 mat4 dmat2 dmat3 dmat4 mat2x2 mat2x3 mat2x4 dmat2x2 dmat2x3 dmat2x4 mat3x2 mat3x3 mat3x4 dmat3x2 dmat3x3 dmat3x4 mat4x2 mat4x3 mat4x4 dmat4x2 dmat4x3 dmat4x4 vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 dvec2 dvec3 dvec4 uint uvec2 uvec3 uvec4 lowp mediump highp precision sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow samplerCubeShadow sampler1DArray sampler2DArray sampler1DArrayShadow sampler2DArrayShadow isampler1D isampler2D isampler3D isamplerCube isampler1DArray isampler2DArray usampler1D usampler2D usampler3D usamplerCube usampler1DArray usampler2DArray sampler2DRect sampler2DRectShadow isampler2DRect usampler2DRect samplerBuffer isamplerBuffer usamplerBuffer sampler2DMS isampler2DMS usampler2DMS sampler2DMSArray isampler2DMSArray usampler2DMSArray samplerCubeArray samplerCubeArrayShadow isamplerCubeArray usamplerCubeArray image1D iimage1D uimage1D image2D iimage2D uimage2D image3D iimage3D uimage3D image2DRect iimage2DRect uimage2DRect imageCube iimageCube uimageCube imageBuffer iimageBuffer uimageBuffer image1DArray iimage1DArray uimage1DArray image2DArray iimage2DArray uimage2DArray imageCubeArray iimageCubeArray uimageCubeArray image2DMS iimage2DMS uimage2DMS image2DMSArray iimage2DMSArray uimage2DMSArray struct common partition active asm class union enum typedef template this resource goto inline noinline public static extern external interface long short half fixed unsigned superp input output hvec2 hvec3 hvec4 fvec2 fvec3 fvec4 sampler3DRect filter sizeof cast namespace using gl_VertexID gl_InstanceID gl_Position gl_PointSize gl_ClipDistance gl_CullDistance gl_MaxPatchVertices gl_PatchVerticesIn gl_InvocationID gl_TessLevelOuter gl_TessLevelInner gl_TessCoord gl_PrimitiveIDIn gl_Layer gl_ViewportIndex gl_FragCoord gl_FrontFacing gl_PointCoord gl_PrimitiveID gl_SampleID gl_SamplePosition gl_SampleMaskIn gl_HelperInvocation gl_FragDepth gl_SampleMask gl_NumWorkGroups gl_WorkGroupSize gl_LocalGroupSize gl_WorkGroupID gl_LocalInvocationID gl_GlobalInvocationID gl_LocalInvocationIndex gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxComputeUniformComponents gl_MaxComputeTextureImageUnits gl_MaxComputeImageUniforms gl_MaxComputeAtomicCounters gl_MaxComputeAtomicCounterBuffers gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingComponents gl_MaxVertexOutputComponents gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxFragmentInputComponents gl_MaxVertexTextureImageUnits gl_MaxCombinedTextureImageUnits gl_MaxTextureImageUnits gl_MaxImageUnits gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxImageSamples gl_MaxVertexImageUniforms gl_MaxTessControlImageUniforms gl_MaxTessEvaluationImageUniforms gl_MaxGeometryImageUniforms gl_MaxFragmentImageUniforms gl_MaxCombinedImageUniforms gl_MaxFragmentUniformComponents gl_MaxDrawBuffers gl_MaxClipDistances gl_MaxGeometryTextureImageUnits gl_MaxGeometryOutputVertices gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlUniformComponents gl_MaxTessControlTotalOutputComponents gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessPatchComponents gl_MaxPatchVertices gl_MaxTessGenLevel gl_MaxViewports gl_MaxVertexUniformVectors gl_MaxFragmentUniformVectors gl_MaxVaryingVectors gl_MaxVertexAtomicCounters gl_MaxTessControlAtomicCounters gl_MaxTessEvaluationAtomicCounters gl_MaxGeometryAtomicCounters gl_MaxFragmentAtomicCounters gl_MaxCombinedAtomicCounters gl_MaxAtomicCounterBindings gl_MaxVertexAtomicCounterBuffers gl_MaxTessControlAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxGeometryAtomicCounterBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxCombinedAtomicCounterBuffers gl_MaxAtomicCounterBufferSize gl_MinProgramTexelOffset gl_MaxProgramTexelOffset gl_MaxTransformFeedbackBuffers gl_MaxTransformFeedbackInterleavedComponents gl_MaxCullDistances gl_MaxCombinedClipAndCullDistances gl_MaxSamples gl_MaxVertexImageUniforms gl_MaxFragmentImageUniforms gl_MaxComputeImageUniforms gl_MaxCombinedImageUniforms gl_MaxCombinedShaderOutputResources");
            scintilla.SetKeywords(1, "abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross degrees determinant dFdx dFdxCoarse dFdxFine dFdy dFdyCoarse dFdyFine distance dot EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp fwidth fwidthCoarse fwidthFine greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSamples imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm packUnorm2x16 packUnorm4x8 pow radians reflect refract removedTypes round roundEven sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSamples textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm unpackUnorm2x16 unpackUnorm4x8 usubBorrow");
            scintilla.Text = script;
            scintilla.EmptyUndoBuffer();
            scintilla.SetSavePoint();
            scintilla.SavePointLeft    += scintilla_SavePointLeft;
            scintilla.SavePointReached += scintilla_SavePointReached;
            scintilla.TextChanged      += scintilla_TextChanged;

            var tabState = new TabPageController(tabPage, scintilla);

            tabState.FileName = fileName;
            tabPage.Tag       = tabState;
            tabPage.SuspendLayout();
            tabPage.Controls.Add(scintilla);
            tabPage.ResumeLayout(false);
            tabPage.PerformLayout();
            editorTabControl.TabPages.Add(tabPage);
            return(tabPage);
        }
 public void SetText(string text)
 {
     _editor.ClearAll();
     _editor.Text = text;
     _editor.EmptyUndoBuffer();
 }
        public void InitScintilla(Scintilla scintilla)
        {
            // INITIAL VIEW CONFIG
            scintilla.WrapMode          = WrapMode.None;
            scintilla.IndentationGuides = IndentView.LookBoth;

            scintilla.StyleResetDefault();
            scintilla.Styles[Style.Default].Font  = "Courier New";
            scintilla.Styles[Style.Default].SizeF = 9.75f;
            scintilla.StyleClearAll();

            //scintilla.Margins[0].Type = MarginType.Number;
            scintilla.Margins[0].Width = 20; // Show line numbers.

            scintilla.Lexer = Lexer.Xml;

            // DEFAULT
            scintilla.Styles[0].ForeColor = Color.FromArgb(0x000000);
            scintilla.Styles[0].BackColor = Color.FromArgb(0xFFFFFF);
            scintilla.Styles[0].Bold      = true;
            // TAG
            scintilla.Styles[1].ForeColor = Color.FromArgb(0x0000FF);
            scintilla.Styles[1].BackColor = Color.FromArgb(0xFFFFFF);
            // TAGUNKNOWN
            scintilla.Styles[2].ForeColor = Color.FromArgb(0x0000FF);
            scintilla.Styles[2].BackColor = Color.FromArgb(0xFFFFFF);
            // ATTRIBUTE
            scintilla.Styles[3].ForeColor = Color.FromArgb(0xFF0000);
            scintilla.Styles[3].BackColor = Color.FromArgb(0xFFFFFF);
            // ATTRIBUTEUNKNOWN
            scintilla.Styles[4].ForeColor = Color.FromArgb(0xFF0000);
            scintilla.Styles[4].BackColor = Color.FromArgb(0xFFFFFF);
            // NUMBER
            scintilla.Styles[5].ForeColor = Color.FromArgb(0xFF0000);
            scintilla.Styles[5].BackColor = Color.FromArgb(0xFFFFFF);
            // DOUBLESTRING
            scintilla.Styles[6].ForeColor = Color.FromArgb(0x8000FF);
            scintilla.Styles[6].BackColor = Color.FromArgb(0xFFFFFF);
            //scintilla.Styles[6].Bold = true;
            // SINGLESTRING
            scintilla.Styles[7].ForeColor = Color.FromArgb(0x8000FF);
            scintilla.Styles[7].BackColor = Color.FromArgb(0xFFFFFF);
            //scintilla.Styles[7].Bold = true;
            // COMMENT
            scintilla.Styles[9].ForeColor = Color.FromArgb(0x008000);
            scintilla.Styles[9].BackColor = Color.FromArgb(0xFFFFFF);
            // ENTITY
            scintilla.Styles[10].ForeColor = Color.FromArgb(0x000000);
            scintilla.Styles[10].BackColor = Color.FromArgb(0xFEFDE0);
            //scintilla.Styles[10].Italic = true;
            // TAGEND
            scintilla.Styles[11].ForeColor = Color.FromArgb(0x0000FF);
            scintilla.Styles[11].BackColor = Color.FromArgb(0xFFFFFF);
            // XMLSTART
            scintilla.Styles[12].ForeColor = Color.FromArgb(0xFF0000);
            scintilla.Styles[12].BackColor = Color.FromArgb(0xFFFF00);
            // XMLEND
            scintilla.Styles[13].ForeColor = Color.FromArgb(0xFF0000);
            scintilla.Styles[13].BackColor = Color.FromArgb(0xFFFF00);
            // SGMLDEFAULT
            scintilla.Styles[21].ForeColor = Color.FromArgb(0x000000);
            scintilla.Styles[21].BackColor = Color.FromArgb(0xA6CAF0);
            // CDATA
            scintilla.Styles[17].ForeColor = Color.FromArgb(0xFF8000);
            scintilla.Styles[17].BackColor = Color.FromArgb(0xFFFFFF);

            // Enable folding
            scintilla.SetProperty("fold", "1");
            scintilla.SetProperty("fold.compact", "1");
            scintilla.SetProperty("fold.html", "1");

            // Configure a margin to display folding symbols
            scintilla.Margins[2].Type      = MarginType.Symbol;
            scintilla.Margins[2].Mask      = Marker.MaskFolders;
            scintilla.Margins[2].Sensitive = true;
            scintilla.Margins[2].Width     = 20;

            // Set colors for all folding markers

            /*for (int i = 25; i <= 31; i++)
             * {
             *  scintilla.Markers[i].SetForeColor(SystemColors.ControlLightLight);
             *  scintilla.Markers[i].SetBackColor(SystemColors.ControlDark);
             * }*/

            // Reset folder markers
            for (int i = Marker.FolderEnd; i <= Marker.FolderOpen; i++)
            {
                scintilla.Markers[i].SetForeColor(SystemColors.ControlLightLight);
                scintilla.Markers[i].SetBackColor(SystemColors.ControlDark);
            }

            // Style the folder markers
            scintilla.Markers[Marker.Folder].Symbol = MarkerSymbol.BoxPlus;
            scintilla.Markers[Marker.Folder].SetBackColor(SystemColors.ControlText);
            scintilla.Markers[Marker.FolderOpen].Symbol = MarkerSymbol.BoxMinus;
            scintilla.Markers[Marker.FolderEnd].Symbol  = MarkerSymbol.BoxPlusConnected;
            scintilla.Markers[Marker.FolderEnd].SetBackColor(SystemColors.ControlText);
            scintilla.Markers[Marker.FolderMidTail].Symbol = MarkerSymbol.TCorner;
            scintilla.Markers[Marker.FolderOpenMid].Symbol = MarkerSymbol.BoxMinusConnected;
            scintilla.Markers[Marker.FolderSub].Symbol     = MarkerSymbol.VLine;
            scintilla.Markers[Marker.FolderTail].Symbol    = MarkerSymbol.LCorner;

            // Enable automatic folding
            scintilla.AutomaticFold = AutomaticFold.Show | AutomaticFold.Click | AutomaticFold.Change;

            scintilla.ClearCmdKey(Keys.Control | Keys.F);
            scintilla.ClearCmdKey(Keys.Control | Keys.G);
            scintilla.ClearCmdKey(Keys.Control | Keys.S);
            scintilla.ClearCmdKey(Keys.Control | Keys.H);
            scintilla.ClearCmdKey(Keys.Control | Keys.B);

            scintilla.FoldAll(FoldAction.Expand);
            scintilla.FoldAll(FoldAction.Contract);

            scintilla.Text = string.Empty;
            scintilla.EmptyUndoBuffer();

            scintilla.TextChanged += (this.OnTextChanged);
        }
Beispiel #6
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            // handle document list changed or document activated
            App.Instance.Subscribe(
                x => x.Documents,
                x => x.Document,
                (documents, document) =>
            {
                replaceAllOpenedFilesItem.Enabled               =
                    replaceAllCurrentFileItem.Enabled           =
                        replaceNextItem.Enabled                 =
                            clearHighlightsItem.Enabled         =
                                findNextItem.Enabled            =
                                    findPreviousItem.Enabled    =
                                        openedFilesItem.Enabled =
                                            documents.Count > 0;

                // remove next siblings of menu separator
                var removedItems = mainToolbar.Items.OfType <ToolStripItem>().SkipWhile(x => x != editItem).Skip(1).ToArray();

                foreach (var item in removedItems)
                {
                    mainToolbar.Items.Remove(item);
                }

                // render document buttons
                var fileIndex = 0;
                foreach (var d in documents.Values.ToArray())
                {
                    // add separator before each file button
                    mainToolbar.Items.Add(new ToolStripSeparator());

                    var item = new ToolStripButton
                    {
                        // add shortcut for file buttons
                        // shortcut indexes should be sorted from 1-0
                        // no shortcut for 11th file and above
                        Text        = (fileIndex == 9 ? "&0. " : fileIndex < 9 ? $"&{fileIndex + 1}. " : "") + Path.GetFileName(d.FullPath).Ellipsis(15),
                        Checked     = d == document,
                        ToolTipText = d.FullPath
                    };

                    item.Click += delegate
                    {
                        App.Instance.ActivateDocument(d);
                    };

                    item.MouseDown += (s, me) =>
                    {
                        if (me.Button != MouseButtons.Middle)
                        {
                            return;
                        }

                        App.Instance.CloseDocument(d);

                        if (d.Editor != null)
                        {
                            editorPanel.Controls.Remove(d.Editor);
                        }
                    };

                    mainToolbar.Items.Add(item);

                    fileIndex++;
                }

                if (document != null)
                {
                    if (document.Editor == null)
                    {
                        // disable panel for configuring
                        var editor = new Scintilla
                        {
                            Dock = DockStyle.Fill
                        };
                        editor.Text = document.Contents;
                        editor.EmptyUndoBuffer();
                        editor.TextChanged += delegate
                        {
                            App.Instance.DocumentChanged(document, editor.Text);
                        };
                        editor.UpdateUI += delegate
                        {
                            if (!editor.Enabled)
                            {
                                return;
                            }
                            App.Instance.UpdateUi();
                        };
                        editorPanel.Controls.Add(editor);

                        // re-enable panel after editor is configured
                        editor.Configure(false);

                        App.Instance.EditorAdded(document, editor);
                    }

                    // show active document and hide each other
                    foreach (Control control in editorPanel.Controls)
                    {
                        control.Visible = control == document.Editor;
                    }
                }
            });

            App.Instance.Subscribe(
                x => x.Project,
                x => x.Document,
                x => x.Document?.Editor?.CurrentPosition ?? 0,
                async(project, document, position) =>
            {
                projectOptionsItem.Enabled = project != null;

                var projectStatus     = project == null ? null : Path.GetFileName(project.FullPath) + " | ";
                string documentStatus = null;

                if (document != null)
                {
                    documentStatus = $"{Path.GetFileName(document.FullPath)}";
                    // find section from current position
                    var sectionName = await App.Instance.FindSection(position);
                    if (!string.IsNullOrWhiteSpace(sectionName))
                    {
                        documentStatus += " » " + sectionName;
                    }
                }
                else
                {
                    documentStatus = "No document loaded";
                }

                statusLabel.Text = projectStatus + documentStatus;
            });

            // handle logging
            App.Instance.Subscribe(
                x => x.Logs.Count,
                logCount =>
            {
                if (logCount > 0)
                {
                    UpdateOutput(() =>
                    {
                        var start = logTextBox.TextLength;
                        foreach (var logEntry in App.Instance.PullLogs())
                        {
                            if (logEntry.Contents.IgnoreCaseEqual("<clear>"))
                            {
                                logTextBox.ClearAll();
                                logTextBox.RemoveAllData();
                                start = 0;
                                continue;
                            }

                            logTextBox.StartStyling(start);
                            var date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss : ");
                            logTextBox.AppendText(date);
                            logTextBox.SetStyling(date.Length, Style.Default);
                            var entryStart = logTextBox.TextLength;
                            logTextBox.AppendText(logEntry.Contents);

                            start += date.Length;

                            if (logEntry.Formatter == null)
                            {
                                logTextBox.SetStyling(logEntry.Contents.Length, Style.Default);
                            }
                            else
                            {
                                logEntry.Formatter.Invoke(logTextBox, entryStart);
                            }

                            start += logEntry.Contents.Length;
                            logTextBox.AppendText("\r\n");
                            logTextBox.Format(start, 2, Style.Default);
                            start += 2;
                        }

                        logTextBox.GotoPosition(logTextBox.TextLength);
                    });
                }
            });

            // handle menu states for current document
            App.Instance.Subscribe(
                x => x.Document?.Editor,
                editor =>
            {
                diagramItem.Enabled                                         =
                    quickSearchItem.Enabled                                 =
                        inlineEditItem.Enabled                              =
                            showTemplatesItem.Enabled                       =
                                goBackItem.Enabled                          =
                                    closeItem.Enabled                       =
                                        intelliSenseItem.Enabled            =
                                            currentFileItem.Enabled         =
                                                gotoDeclarationItem.Enabled =
                                                    gotoLineItem.Enabled    =
                                                        editor != null;
            }
                );


            inlineEditTextBox.KeyDown += (s, ee) =>
            {
                // dont close inline panel if user try to close autocomplete popup
                if (ee.KeyCode == Keys.Escape && !inlineEditTextBox.AutoCActive)
                {
                    _inlineEditData.Close();
                }
            };

            inlineEditTextBox.TextChanged += delegate
            {
                _inlineEditData?.Change(inlineEditTextBox.Text);
            };

            inlineEditTextBox.Leave += delegate
            {
                _inlineEditData.Close();
            };

            App.Instance.Subscribe(
                x => x.InlineEdit,
                inlineEditData =>
            {
                if (inlineEditData != null)
                {
                    _inlineEditData = inlineEditData;
                    inlineEditTextBox.AddData(0, 0, EditorExtraDataType.InlineEdit, inlineEditData);
                    inlineEditTextBox.Text  = inlineEditData.Text;
                    _inlineEditData.Changed = false;
                    inlineEditPanel.Show();
                    inlineEditTextBox.Focus();
                }
                else
                {
                    inlineEditPanel.Hide();
                    inlineEditTextBox.EmptyUndoBuffer();
                }
            });

            if (CommandLineArgs?.Any() ?? false)
            {
                foreach (var commandLineArg in CommandLineArgs)
                {
                    if (commandLineArg.EndsWith(".inip", StringComparison.OrdinalIgnoreCase))
                    {
                        // project file
                        App.Instance.LoadProject(commandLineArg);
                    }
                    else
                    {
                        App.Instance.LoadDocument(commandLineArg);
                    }
                }
            }
        }