{"id":19945668,"url":"https://github.com/frozenassassine/textcontrolbox-uwp","last_synced_at":"2025-05-03T16:32:30.415Z","repository":{"id":50640727,"uuid":"514832075","full_name":"FrozenAssassine/TextControlBox-UWP","owner":"FrozenAssassine","description":"A UWP based textbox with Syntaxhighlighting and support for very large amounts of text","archived":false,"fork":false,"pushed_at":"2024-05-22T11:47:10.000Z","size":9020,"stargazers_count":15,"open_issues_count":7,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-22T12:50:47.659Z","etag":null,"topics":["csharp","linenumbers","syntaxhighlighting","textbox","textcontrolbox","uwp"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FrozenAssassine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-07-17T12:05:06.000Z","updated_at":"2024-05-22T11:47:14.000Z","dependencies_parsed_at":"2024-02-18T20:22:13.481Z","dependency_job_id":"e75634ad-9bcb-48aa-8197-5887ac698b78","html_url":"https://github.com/FrozenAssassine/TextControlBox-UWP","commit_stats":{"total_commits":289,"total_committers":3,"mean_commits":96.33333333333333,"dds":0.3494809688581315,"last_synced_commit":"2a43bfe2cfc9d701878006f218de64f79524d047"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrozenAssassine%2FTextControlBox-UWP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrozenAssassine%2FTextControlBox-UWP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrozenAssassine%2FTextControlBox-UWP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FrozenAssassine%2FTextControlBox-UWP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FrozenAssassine","download_url":"https://codeload.github.com/FrozenAssassine/TextControlBox-UWP/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224368279,"owners_count":17299670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","linenumbers","syntaxhighlighting","textbox","textcontrolbox","uwp"],"created_at":"2024-11-13T00:26:28.178Z","updated_at":"2025-05-03T16:32:30.395Z","avatar_url":"https://github.com/FrozenAssassine.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"images/Icon1.png\" height=\"150px\" width=\"auto\"\u003e\n  \u003ch1\u003eTextControlBox-UWP\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://www.microsoft.com/store/productId/9NWL9M9JPQ36\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Download demo App-Microsoft%20Store-brightgreen?style=flat\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/github/issues/FrozenAssassine/TextControlBox-UWP.svg?style=flat\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/issues-closed/FrozenAssassine/TextControlBox-UWP.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/FrozenAssassine/TextControlBox-UWP.svg\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/repo-size/FrozenAssassine/TextControlBox-UWP\"\u003e\n  \n  \u003cbr\u003e\n\n  [![NuGet version (TextControlBox)](https://img.shields.io/nuget/v/TextControlBox.JuliusKirsch)](https://www.nuget.org/packages/TextControlBox.JuliusKirsch)\n\u003c/div\u003e\n\n---\n\n\u003e ⚠️ **This version is deprecated!** Check out the new version for WinUI-3:  \n\u003e 👉 [TextControlBox-WinUI](https://github.com/FrozenAssassine/TextControlBox-WinUI)\n\n---\n\n## 🤔 What is TextControlBox?\nA UWP-based textbox with syntax highlighting and support for handling very large amounts of text. This project is still in development.\n\n## 🛠 Why I Built It\nUWP provides a default `TextBox` and `RichTextBox`, but both perform poorly when rendering thousands of lines. Additionally, selection handling is slow. To solve these issues, I created my own textbox control.\n\n## 📥 Download\n\n\u003ca href=\"https://www.nuget.org/packages/TextControlBox.JuliusKirsch\"\u003e\n  \u003cimg width=\"40\" height=\"auto\" src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/nuget/nuget-original.svg\"/\u003e\n\u003c/a\u003e\n\n## 🔍 Features:\n- Viewing files with a million lines or more without performance issues\n- Syntaxhighlighting\n- Outstanding performance because it only renders the lines that are needed to display\n- Linenumbering\n- Linehighlighter\n- Json to create custom syntaxhighlighting\n- Highly customizable\n\n\n## ❗ Problems:\n- Current text limit is 100 million characters\n- Currently there is no textwrapping\n- First version for WinUI with many problems and bugs, but working [Github](https://github.com/FrozenAssassine/TextControlBox-WinUI/)\n\n## 🚩 Available languages:\n- Batch\n- Config file\n- C++\n- C#\n- CSV\n- CSS\n- GCode\n- Hex\n- Html\n- Java\n- Javascript\n- Json\n- Markdown\n- LaTex\n- PHP\n- Python\n- QSharp\n- Toml\n- Xml\n\n## 🚀 Usage:\n\n\u003cdetails\u003e\u003csummary\u003e\u003ch2\u003eProperties\u003c/h2\u003e\u003c/summary\u003e \n \n ```\n- ScrollBarPosition (get/set)\n- CharacterCount (get)\n- NumberOfLines (get)\n- CurrentLineIndex (get)\n- SelectedText (get/set)\n- SelectionStart (get/set)\n- SelectionLength (get/set)\n- ContextFlyoutDisabled (get/set)\n- ContextFlyout (get/set)\n- CursorSize (get/set)\n- ShowLineNumbers (get/set)\n- ShowLineHighlighter (get/set)\n- ZoomFactor (get/set)\n- IsReadonly (get/set)\n- Text (get/set)\n- RenderedFontSize (get)\n- FontSize (get/set)\n- FontFamily (get/set)\n- Cursorposition (get/set)\n- SpaceBetweenLineNumberAndText (get/set)\n- LineEnding (get/set)\n- SyntaxHighlighting (get/set)\n- CodeLanguage (get/set)\n- RequestedTheme (get/set)\n- Design (get/set)\n- static CodeLanguages (get/set) \n- VerticalScrollSensitivity (get/set)\n- HorizontalScrollSensitivity (get/set)\n- VerticalScroll (get/set)\n- HorizontalScroll (get/set)\n- CornerRadius (get/set)\n- UseSpacesInsteadTabs (get/set)\n- NumberOfSpacesForTab (get/set)\n  ```\n\u003c/details\u003e\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003eFunctions\u003c/h2\u003e\u003c/summary\u003e\n \n  ```\n- SelectLine(index)\n- GoToLine(index)\n- SetText(text)\n- LoadText(text)\n- Paste()\n- Copy()\n- Cut()\n- GetText()\n- SetSelection(start, length)\n- SelectAll()\n- ClearSelection()\n- Undo()\n- Redo()\n- ScrollLineToCenter(line)\n- ScrollOneLineUp()\n- ScrollOneLineDown()\n- ScrollLineIntoView(line)\n- ScrollTopIntoView()\n- ScrollBottomIntoView()\n- ScrollPageUp()\n- ScrollPageDown()\n- GetLineContent(line)\n- GetLinesContent(startline, count)\n- SetLineContent(line, text)\n- DeleteLine(line)\n- AddLine(position, text)\n- FindInText(pattern)\n- SurroundSelectionWith(value)\n- SurroundSelectionWith(value1, value2)\n- DuplicateLine(line)\n- FindInText(word, up, matchCase, wholeWord)\n- ReplaceInText(word, replaceword, up, matchCase, wholeword)\n- ReplaceAll(word, replaceword, up, matchCase, wholeword)\n- static GetCodeLanguageFromJson(jsondata)\n- static SelectCodeLanguageById(identifier)\n- Unload()\n- ClearUndoRedoHistory()\n  ```\n\u003c/details\u003e\n\n## Create custom syntaxhighlighting languages with json:\n```json\n{\n  \"Highlights\": [\n    {\n      \"CodeStyle\": { //optional delete when not used\n        \"Bold\": true, \n        \"Underlined\": true, \n        \"Italic\": true\n      },\n      \"Pattern\": \"REGEX PATTERN\",\n      \"ColorDark\": \"#ffffff\", //color in dark theme\n      \"ColorLight\": \"#000000\" //color in light theme\n    },\n  ],\n  \"Name\": \"NAME\",\n  \"Filter\": \"EXTENSION1|EXTENSION2\", //.cpp|.c\n  \"Description\": \"DESCRIPTION\",\n  \"Author\": \"AUTHOR\"\n}  \n```\n\n### To bind it to the textbox you can use one of these ways:\n```cs\n\nTextControlBox textbox = new TextControlBox();\n\n//Use a builtin language -\u003e see list a bit higher\n//Language identifiers are case intensitive\ntextbox.CodeLanguage = TextControlBox.GetCodeLanguageFromId(\"CSharp\");\n\n//Use a custom language:\nvar result = TextControlBox.GetCodeLanguageFromJson(\"JSON DATA\");\nif(result.Succeed)\n     textbox.CodeLanguage = result.CodeLanguage; \n```\n\n## Create custom designs in C#:\n```cs\ntextbox.Design = new TextControlBoxDesign(\n    new SolidColorBrush(Color.FromArgb(255, 30, 30, 30)), //Background brush\n    Color.FromArgb(255, 255, 255, 255), //Text color\n    Color.FromArgb(100, 0, 100, 255), //Selection color\n    Color.FromArgb(255, 255, 255, 255), //Cursor color\n    Color.FromArgb(50, 100, 100, 100), //Linehighlighter color\n    Color.FromArgb(255, 100, 100, 100), //Linenumber color\n    Color.FromArgb(0, 0, 0, 0), //Linenumber background\n    Color.FromArgb(100,255,150,0) //Search highlight color\n    );\n```\n\n\n## 👨‍👩‍👧‍👦 Contributors:\nIf you want to contribute for this project, feel free to open an \u003ca href=\"https://github.com/FrozenAssassine/TextControlBox-UWP/issues/new\"\u003eissue\u003c/a\u003e or a \u003ca href=\"https://github.com/FrozenAssassine/TextControlBox-UWP/pulls\"\u003epull request\u003c/a\u003e.\n\n## 📸 Images\n\n\u003cimg src=\"images/image1.png\"\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrozenassassine%2Ftextcontrolbox-uwp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrozenassassine%2Ftextcontrolbox-uwp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrozenassassine%2Ftextcontrolbox-uwp/lists"}