Skip to content

Commit edeb452

Browse files
authored
Merge branch 'master' into features/graphics_rework
2 parents 2935832 + 036fb8f commit edeb452

15 files changed

Lines changed: 239 additions & 22 deletions

File tree

ZXBStudio/BuildSystem/ZXCodeFile.cs

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System;
1+
using Avalonia.Svg.Skia;
2+
using System;
23
using System.Collections.Generic;
34
using System.IO;
45
using System.Linq;
@@ -116,7 +117,14 @@ public void CreateBuildFile(IEnumerable<ZXCodeFile> AllFiles)
116117
string line = lines[lineNum];
117118
string trim = line.Trim().ToLower();
118119

119-
if (trim.StartsWith("#line") || string.IsNullOrWhiteSpace(trim))
120+
if (string.IsNullOrWhiteSpace(trim))
121+
{
122+
sbSource.AppendLine(line);
123+
sb.AppendLine(line);
124+
continue;
125+
}
126+
127+
if (trim.StartsWith("#line"))
120128
continue;
121129

122130
if (regInclude.IsMatch(line))
@@ -156,8 +164,48 @@ public void CreateBuildFile(IEnumerable<ZXCodeFile> AllFiles)
156164

157165
BuildContent = sb.ToString();
158166

167+
bool doTrim = true;
168+
169+
while (doTrim)
170+
{
171+
BuildContent.TrimEnd();
172+
173+
if (BuildContent.EndsWith("\r") || BuildContent.EndsWith("\n"))
174+
{
175+
176+
if (BuildContent.EndsWith("\r\n"))
177+
BuildContent = BuildContent.Substring(0, BuildContent.Length - 2);
178+
else
179+
BuildContent = BuildContent.Substring(0, BuildContent.Length - 1);
180+
181+
}
182+
else
183+
doTrim = false;
184+
}
185+
159186
File.WriteAllText(Path.Combine(Directory, TempFileName), BuildContent);
187+
160188
Content = sbSource.ToString();
189+
190+
doTrim = true;
191+
192+
while (doTrim)
193+
{
194+
195+
Content.TrimEnd();
196+
197+
if (Content.EndsWith("\r") || Content.EndsWith("\n"))
198+
{
199+
200+
if (Content.EndsWith("\r\n"))
201+
Content = Content.Substring(0, Content.Length - 2);
202+
else
203+
Content = Content.Substring(0, Content.Length - 1);
204+
205+
}
206+
else
207+
doTrim = false;
208+
}
161209
}
162210
else
163211
{
@@ -171,7 +219,10 @@ public void CreateBuildFile(IEnumerable<ZXCodeFile> AllFiles)
171219
string trim = line.Trim().ToLower();
172220

173221
if (string.IsNullOrWhiteSpace(trim))
222+
{
223+
sb.AppendLine(line);
174224
continue;
225+
}
175226

176227
if (!inAsm)
177228
inAsm = line.Trim().ToLower().StartsWith("asm");
@@ -209,6 +260,26 @@ public void CreateBuildFile(IEnumerable<ZXCodeFile> AllFiles)
209260

210261
BuildContent = sb.ToString();
211262

263+
bool dotrim = true;
264+
265+
while (dotrim)
266+
{
267+
268+
BuildContent.TrimEnd();
269+
270+
if (BuildContent.EndsWith("\r") || BuildContent.EndsWith("\n"))
271+
{
272+
273+
if (BuildContent.EndsWith("\r\n"))
274+
BuildContent = BuildContent.Substring(0, BuildContent.Length - 2);
275+
else
276+
BuildContent = BuildContent.Substring(0, BuildContent.Length - 1);
277+
278+
}
279+
else
280+
dotrim = false;
281+
}
282+
212283
File.WriteAllText(Path.Combine(Directory, TempFileName), sb.ToString());
213284
}
214285
}

ZXBStudio/BuildSystem/ZXProjectBuilder.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class ZXProjectBuilder
2525

2626
if (ZXProjectManager.Current == null)
2727
{
28-
OutputLogWritter.WriteLine("No open projcet, aborting...");
28+
OutputLogWritter.WriteLine("No open project, aborting...");
2929
return null;
3030
}
3131

@@ -262,7 +262,7 @@ private static bool BuildNexFile(byte[] binary, ZXBuildSettings settings, ZXProj
262262
{
263263
if (ZXProjectManager.Current == null)
264264
{
265-
OutputLogWritter.WriteLine("No open projcet, aborting...");
265+
OutputLogWritter.WriteLine("No open project, aborting...");
266266
return null;
267267
}
268268

@@ -454,14 +454,14 @@ public static bool Export(ZXExportOptions Export, TextWriter OutputLogWritter)
454454
{
455455
if (ZXProjectManager.Current == null)
456456
{
457-
OutputLogWritter.WriteLine("No open projcet, aborting...");
457+
OutputLogWritter.WriteLine("No open project, aborting...");
458458
return false;
459459
}
460460

461461
var project = ZXProjectManager.Current;
462462

463463
Cleanup(project.ProjectPath);
464-
ZXBuildSettings? settings = null;
464+
ZXBuildSettings? settings;
465465
string? mainFile = null;
466466

467467
if (string.IsNullOrWhiteSpace(ZXOptions.Current.ZxbcPath) || string.IsNullOrWhiteSpace(ZXOptions.Current.ZxbasmPath))

ZXBStudio/Classes/ZXOptions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,6 @@ public static void SaveCurrentSettings()
4343
public string LastProjectPath { get; set; }
4444
public ZXBuildSettings? DefaultBuildSettings { get; set; }
4545
public string? NextEmulatorPath { get; set; }
46+
public bool DisableAuto { get; set; }
4647
}
4748
}

ZXBStudio/Controls/ZXOutputLog.axaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
</UserControl.ContextMenu>
1414
<Grid RowDefinitions="auto,*">
1515
<Grid ColumnDefinitions="1*" DataContext=".ZXMemoryView">
16-
<StackPanel Grid.Row="0" Spacing="2" Orientation="Horizontal" Margin="2,4" HorizontalAlignment="Left">
16+
<StackPanel Grid.Row="0" Spacing="2" Orientation="Horizontal" Margin="2" HorizontalAlignment="Left">
1717
<Button Width="30" Foreground="Black" Classes="toolbar" Name="btnClearOutputWindow" ToolTip.Tip="Clear output window"><svg:Svg Path="/Svg/eraser-solid.svg"></svg:Svg></Button>
1818
<Button Width="30" Foreground="Black" Classes="toolbar" Name="btnCopyToClipboard" ToolTip.Tip="Copy output log to clipboard"><svg:Svg Path="/Svg/copy-solid.svg"></svg:Svg></Button>
1919
</StackPanel>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<UserControl xmlns="https://github.com/avaloniaui"
2+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
6+
x:Class="ZXBasicStudio.DebuggingTools.Flags.Controls.ZXFlagsView">
7+
<UserControl.Styles>
8+
</UserControl.Styles>
9+
<Grid Grid.Row="1" RowDefinitions="50" VerticalAlignment="Stretch">
10+
<Panel Background="#FF606060">
11+
<Grid ColumnDefinitions="*,*,*,*,*,*,*,*" RowDefinitions="25,25" Name="gridFlags">
12+
<TextBlock Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip.Tip="S - Sign flag: Set if the 2-complement value is negative (copy of MSB)">S</TextBlock>
13+
<TextBlock Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip.Tip="Z - Zero flag: Set if the value is zero">Z</TextBlock>
14+
<TextBlock Grid.Row="0" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip.Tip="F5 - undocumented: Copy of bit 5">-</TextBlock>
15+
<TextBlock Grid.Row="0" Grid.Column="3" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip.Tip="H - Half Carry: Carry from bit 3 to bit 4">H</TextBlock>
16+
<TextBlock Grid.Row="0" Grid.Column="4" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip.Tip="F3 - undocumented: Copy of bit 3">-</TextBlock>
17+
<TextBlock Grid.Row="0" Grid.Column="5"
18+
HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip.Tip="P/V - Parity or Overflow: Parity set if even number of bits set. Overflow set if the 2-complement result does not fit in the register">
19+
V
20+
</TextBlock>
21+
<TextBlock Grid.Row="0" Grid.Column="6"
22+
HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip.Tip="N - Subtract: Set if the last operation was a subtraction">
23+
N
24+
</TextBlock>
25+
<TextBlock Grid.Row="0" Grid.Column="7"
26+
HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip.Tip="C - Carry: Set if the result did not fit in the register">
27+
C
28+
</TextBlock>
29+
<Border Grid.Column="0" Grid.Row="1" BorderBrush="Black" BorderThickness="0,1,0,0">
30+
<TextBlock Name="Bit7" HorizontalAlignment="Center" VerticalAlignment="Center"/>
31+
</Border>
32+
<Border Grid.Column="1" Grid.Row="1" BorderBrush="Black" BorderThickness="1,1,0,0">
33+
<TextBlock Name="Bit6" HorizontalAlignment="Center" VerticalAlignment="Center"/>
34+
</Border>
35+
<Border Grid.Column="2" Grid.Row="1" BorderBrush="Black" BorderThickness="1,1,0,0">
36+
<TextBlock Name="Bit5" HorizontalAlignment="Center" VerticalAlignment="Center"/>
37+
</Border>
38+
<Border Grid.Column="3" Grid.Row="1" BorderBrush="Black" BorderThickness="1,1,0,0">
39+
<TextBlock Name="Bit4" HorizontalAlignment="Center" VerticalAlignment="Center"/>
40+
</Border>
41+
<Border Grid.Column="4" Grid.Row="1" BorderBrush="Black" BorderThickness="1,1,0,0">
42+
<TextBlock Name="Bit3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
43+
</Border>
44+
<Border Grid.Column="5" Grid.Row="1" BorderBrush="Black" BorderThickness="1,1,0,0">
45+
<TextBlock Name="Bit2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
46+
</Border>
47+
<Border Grid.Column="6" Grid.Row="1" BorderBrush="Black" BorderThickness="1,1,0,0">
48+
<TextBlock Name="Bit1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
49+
</Border>
50+
<Border Grid.Column="7" Grid.Row="1" BorderBrush="Black" BorderThickness="1,1,0,0">
51+
<TextBlock Name="Bit0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
52+
</Border>
53+
</Grid>
54+
</Panel>
55+
</Grid>
56+
</UserControl>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using System;
2+
using System.Linq;
3+
using Avalonia.Controls;
4+
5+
namespace ZXBasicStudio.DebuggingTools.Flags.Controls
6+
{
7+
public partial class ZXFlagsView : UserControl
8+
{
9+
10+
public ZXFlagsView()
11+
{
12+
InitializeComponent();
13+
}
14+
15+
public void Update(byte value)
16+
{
17+
var bits = GetBinaryFromByte(value);
18+
Bit7.Text = bits[7].ToString();
19+
Bit6.Text = bits[6].ToString();
20+
Bit5.Text = bits[5].ToString();
21+
Bit4.Text = bits[4].ToString();
22+
Bit3.Text = bits[3].ToString();
23+
Bit2.Text = bits[2].ToString();
24+
Bit1.Text = bits[1].ToString();
25+
Bit0.Text = bits[0].ToString();
26+
}
27+
28+
private static int[] GetBinaryFromByte(byte value)
29+
{
30+
string s = Convert.ToString(value, 2);
31+
int[] bits = s.PadLeft(8, '0')
32+
.Select(c => int.Parse(c.ToString()))
33+
.ToArray();
34+
35+
Array.Reverse(bits);
36+
return bits;
37+
}
38+
39+
public void Clear()
40+
{
41+
Bit7.Text = "-";
42+
Bit6.Text = "-";
43+
Bit5.Text = "-";
44+
Bit4.Text = "-";
45+
Bit3.Text = "-";
46+
Bit2.Text = "-";
47+
Bit1.Text = "-";
48+
Bit0.Text = "-";
49+
50+
}
51+
}
52+
}

ZXBStudio/Dialogs/ZXOptionsDialog.axaml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,14 @@
3838
<TextBox Classes="dialog" Grid.Row="8" Grid.Column="2" Name="txtNextEmulator" IsReadOnly="True"></TextBox>
3939
<Button Classes="dialog" Grid.Row="8" Grid.Column="3" VerticalAlignment="Center" Name="btnSelectNextEmulator">...</Button>
4040

41-
<Button Classes="dialog" Grid.Row="9" Grid.Column="2" Padding="6" VerticalAlignment="Center" Name="btnKeybMap">Keyboard mappings</Button>
42-
<Button Classes="dialog" Grid.Row="10" Grid.Column="2" Padding="6" VerticalAlignment="Center" Name="btnDefaultBuildConfig">Default build options</Button>
41+
<TextBlock Classes="dialog" Grid.Row="9" Grid.Column="1" VerticalAlignment="Center">Disable autocomplete:</TextBlock>
42+
<CheckBox Classes="dialog" Name="ckDisableAuto" Grid.Column="2" Grid.Row="9"></CheckBox>
43+
44+
<StackPanel Spacing="10" Margin="0,0,0,0" Grid.Row="10" Grid.ColumnSpan="5" Grid.RowSpan="1" Orientation="Horizontal" HorizontalAlignment="Center">
45+
<Button Classes="dialog" Margin="0" Padding="6" VerticalAlignment="Center" Name="btnDefaultBuildConfig">Default build options</Button>
46+
<Button Classes="dialog" Margin="0" Padding="6" VerticalAlignment="Center" Name="btnKeybMap">Keyboard mappings</Button>
47+
</StackPanel>
48+
4349
<StackPanel Margin="0,0,0,10" Grid.Row="11" Grid.ColumnSpan="4" Orientation="Horizontal" HorizontalAlignment="Right">
4450
<Button Classes="dialog" VerticalAlignment="Bottom" Padding="7" Name="btnCancel">Cancel</Button>
4551
<Button Classes="dialog" VerticalAlignment="Bottom" Padding="7" Name="btnAccept">Accept</Button>

ZXBStudio/Dialogs/ZXOptionsDialog.axaml.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ public ZXOptionsDialog()
1919
btnSelectZxbasm.Click += BtnSelectZxbasm_Click;
2020
btnDefaultBuildConfig.Click += BtnDefaultBuildConfig_Click;
2121
btnSelectNextEmulator.Click += BtnSelectNextEmulator_Click;
22-
2322
txtZxbasm.Text = ZXOptions.Current.ZxbasmPath;
2423
txtZxbc.Text = ZXOptions.Current.ZxbcPath;
2524
nudFontSize.Value = (decimal)ZXOptions.Current.EditorFontSize;
@@ -29,9 +28,10 @@ public ZXOptionsDialog()
2928
ckBorderless.IsChecked = ZXOptions.Current.Borderless;
3029
ckAntiAlias.IsChecked = ZXOptions.Current.AntiAlias;
3130
txtNextEmulator.Text = ZXOptions.Current.NextEmulatorPath;
31+
ckDisableAuto.IsChecked = ZXOptions.Current.DisableAuto;
3232

3333
btnKeybMap.Click += BtnKeybMap_Click;
34-
}
34+
}
3535

3636
private void BtnKeybMap_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
3737
{
@@ -61,8 +61,7 @@ private async void BtnSelectZxbasm_Click(object? sender, Avalonia.Interactivity.
6161
Title = "Select ZXBASM path...",
6262
FileTypeFilter = new[]
6363
{
64-
new FilePickerFileType("ZXBASM executable") { Patterns = new[] { "zxbasm.exe" } },
65-
new FilePickerFileType("All files") { Patterns = new[] { "*", "*.*" } }
64+
new FilePickerFileType("ZXBASM executable") { Patterns = new[] { "*" } }
6665
}
6766
});
6867

@@ -78,8 +77,7 @@ private async void BtnSelectZxbc_Click(object? sender, Avalonia.Interactivity.Ro
7877
Title = "Select ZXBC path...",
7978
FileTypeFilter = new[]
8079
{
81-
new FilePickerFileType("ZXBC executable") { Patterns = new[] { "zxbc.exe" } },
82-
new FilePickerFileType("All files") { Patterns = new[] { "*", "*.*" } }
80+
new FilePickerFileType("ZXBC executable") { Patterns = new[] { "*" } }
8381
}
8482
});
8583

@@ -137,6 +135,7 @@ private async void BtnAccept_Click(object? sender, Avalonia.Interactivity.Routed
137135
ZXOptions.Current.Borderless = ckBorderless.IsChecked ?? false;
138136
ZXOptions.Current.AntiAlias = ckAntiAlias.IsChecked ?? false;
139137
ZXOptions.Current.NextEmulatorPath = txtNextEmulator.Text;
138+
ZXOptions.Current.DisableAuto = ckDisableAuto.IsChecked ?? false;
140139

141140
if (bsett != null)
142141
ZXOptions.Current.DefaultBuildSettings = bsett;

ZXBStudio/DocumentEditors/ZXGraphics/SpriteEditor.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
Focusable="True"
1010
Background="#ff202020"
1111
x:Class="ZXBasicStudio.DocumentEditors.ZXGraphics.SpriteEditor">
12-
1312
<Grid Name="grdMain" RowDefinitions="*,Auto">
1413
<Grid Name="grdEditor" Grid.RowSpan="2" ColumnDefinitions="180,4,*,4,200" Margin="0,8,0,0">
1514

ZXBStudio/DocumentEditors/ZXTextEditor/Controls/ZXBasicEditor.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Text;
88
using System.Text.RegularExpressions;
99
using System.Threading.Tasks;
10+
using ZXBasicStudio.Classes;
1011
using ZXBasicStudio.DocumentEditors.ZXTextEditor.Classes.Folding;
1112
using ZXBasicStudio.DocumentEditors.ZXTextEditor.Classes.LanguageDefinitions;
1213
using ZXBasicStudio.IntegratedDocumentTypes.CodeDocuments.Basic;
@@ -472,6 +473,12 @@ public ZXBasicEditor(string DocumentPath) : base(DocumentPath, ZXBasicDocument.I
472473

473474
var context = GetContext(Document, line.Offset + Column);
474475

476+
if (!ByRequest)
477+
{
478+
if(ZXOptions.Current.DisableAuto)
479+
return null;
480+
}
481+
475482
if (ByRequest)
476483
{
477484

0 commit comments

Comments
 (0)