Skip to content

Commit

Permalink
feat: add autocomplete menu using AutoCompleteMenu-ScintillaNET library
Browse files Browse the repository at this point in the history
  • Loading branch information
PocketMiner82 committed Apr 9, 2024
1 parent efac5dc commit 38b2909
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 9 deletions.
26 changes: 19 additions & 7 deletions pseudocodeIde/PseudocodeIDEForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions pseudocodeIde/PseudocodeIDEForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
using pseudocode_ide.interpreter.scanner;
using System.Drawing;
using ScintillaNET_FindReplaceDialog;
using AutocompleteMenuNS;

namespace pseudocodeIde
{
Expand Down Expand Up @@ -96,6 +97,20 @@ public PseudocodeIDEForm()
this.setFileSaved();
}

private void buildAutocompleteMenu()
{
autoCompleteMenu.TargetControlWrapper = new ScintillaWrapper(codeTextBox);

List<AutocompleteItem> items = new List<AutocompleteItem>();

foreach (string item in Scanner.KEYWORDS.Keys)
{
items.Add(new SnippetAutocompleteItem(item) { ImageIndex = 1 });
}

autoCompleteMenu.SetAutocompleteItems(items);
}

// ---------------------------------------------
// COMMON EVENT LISTENERS
// ---------------------------------------------
Expand All @@ -113,6 +128,7 @@ private void PseudocodeIDEForm_Load(object sender, EventArgs e)

// set font
this.configureCodeTextBox();
this.buildAutocompleteMenu();
}

private void configureCodeTextBox()
Expand Down Expand Up @@ -229,6 +245,12 @@ private void codeTextBox_TextChanged(object sender, EventArgs e)

private void codeTextBox_KeyDown(object sender, KeyEventArgs e)
{
// hack to allow enter to autocomplete even if down wasnt pressed before
if ((e.KeyCode == Keys.Enter || e.KeyCode == Keys.Tab) && e.Modifiers == Keys.None && autoCompleteMenu.SelectedItemIndex < 0)
{
autoCompleteMenu.ProcessKey((char)Keys.Down, e.Modifiers);
}

// ignore CTRL[+SHIFT]+(Z/Y/L/R/E/S)
if ((e.KeyCode == Keys.Z || e.KeyCode == Keys.Y || e.KeyCode == Keys.L || e.KeyCode == Keys.R || e.KeyCode == Keys.E || e.KeyCode == Keys.S)
&& (Control.ModifierKeys == Keys.Control || Control.ModifierKeys == (Keys.Control | Keys.Shift)))
Expand Down
20 changes: 20 additions & 0 deletions pseudocodeIde/PseudocodeIDEForm.resx
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,26 @@
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="autoCompleteMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>165, 17</value>
</metadata>
<data name="autoCompleteMenu.Colors" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFRBdXRvY29tcGxldGVNZW51LVNjaW50aWxsYU5FVCwgVmVyc2lv
bj0xLjYuMi4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwMAwAAAFFTeXN0ZW0u
RHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIw
M2Y1ZjdmMTFkNTBhM2EFAQAAABlBdXRvY29tcGxldGVNZW51TlMuQ29sb3JzBgAAABo8Rm9yZUNvbG9y
PmtfX0JhY2tpbmdGaWVsZBo8QmFja0NvbG9yPmtfX0JhY2tpbmdGaWVsZCI8U2VsZWN0ZWRGb3JlQ29s
b3I+a19fQmFja2luZ0ZpZWxkIjxTZWxlY3RlZEJhY2tDb2xvcj5rX19CYWNraW5nRmllbGQjPFNlbGVj
dGVkQmFja0NvbG9yMj5rX19CYWNraW5nRmllbGQiPEhpZ2hsaWdodGluZ0NvbG9yPmtfX0JhY2tpbmdG
aWVsZAQEBAQEBBRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAAUU3lzdGVtLkRyYXdpbmcuQ29sb3IDAAAA
FFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAABRTeXN0ZW0uRHJhd2luZy5Db2xvcgMAAAAUU3lzdGVtLkRy
YXdpbmcuQ29sb3IDAAAAFFN5c3RlbS5EcmF3aW5nLkNvbG9yAwAAAAIAAAAF/P///xRTeXN0ZW0uRHJh
d2luZy5Db2xvcgQAAAAEbmFtZQV2YWx1ZQprbm93bkNvbG9yBXN0YXRlAQAAAAkHBwMAAAAKAAAAAAAA
AAAjAAEAAfv////8////CgAAAAAAAAAApAABAAH6/////P///woAAAAAAAAAACMAAQAB+f////z///8K
AAAAAAAAAAB/AAEAAfj////8////CgAAAAAAAAAApAABAAH3/////P///woAAAAAAAAAAH8AAQAL
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>83</value>
</metadata>
Expand Down
4 changes: 2 additions & 2 deletions pseudocodeIde/SetClipboardHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public SetClipboardHelper(string format, object data)

protected override void Work()
{
var obj = new System.Windows.Forms.DataObject(
DataObject obj = new System.Windows.Forms.DataObject(
_format,
_data
);
Expand All @@ -35,7 +35,7 @@ public abstract class StaHelper

public void Go()
{
var thread = new Thread(new ThreadStart(DoWork))
Thread thread = new Thread(new ThreadStart(DoWork))
{
IsBackground = true,
};
Expand Down
4 changes: 4 additions & 0 deletions pseudocodeIde/interpreter/scanner/Scanner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ static Scanner()
KEYWORDS.Add("NEU", NEW);

KEYWORDS.Add("NICHTS", NULL);

KEYWORDS.Add("schreibe", IDENTIFIER);
KEYWORDS.Add("warte", IDENTIFIER);
KEYWORDS.Add("benutzereingabe", IDENTIFIER);
}

public Scanner(string code)
Expand Down
1 change: 1 addition & 0 deletions pseudocodeIde/pseudocodeIde.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
</PropertyGroup>
<Import Project="..\packages\Microsoft.Web.WebView2.1.0.1823.32\build\Microsoft.Web.WebView2.targets" Condition="Exists('..\packages\Microsoft.Web.WebView2.1.0.1823.32\build\Microsoft.Web.WebView2.targets')" />
<ItemGroup>
<PackageReference Include="AutoCompleteMenu-ScintillaNET" Version="2.1.1" />
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
Expand Down

0 comments on commit 38b2909

Please sign in to comment.