|
1 | 1 | using System.Linq;
|
2 | 2 | using System.Text;
|
| 3 | +using System.Threading.Tasks; |
3 | 4 | using System.Windows;
|
4 | 5 | using System.Windows.Controls;
|
5 | 6 | using System.Windows.Media;
|
@@ -43,74 +44,77 @@ private void EditItem_Click(object sender, RoutedEventArgs e)
|
43 | 44 | RestoreMainWindow();
|
44 | 45 | }
|
45 | 46 |
|
46 |
| - private void Item_Click(object sender, RoutedEventArgs e) |
| 47 | + private async void Item_Click(object sender, RoutedEventArgs e) |
47 | 48 | {
|
48 | 49 | var name = (string)((MenuItem)sender).Header;
|
49 |
| - ChangeConfig(name); |
| 50 | + await ChangeConfig(name); |
50 | 51 | LoggingControl.LogAction($"Changed to config \"{name}\".", 2);
|
51 | 52 | }
|
52 | 53 |
|
53 | 54 | /// <summary>
|
54 | 55 | /// Changes to the specified config.
|
55 | 56 | /// </summary>
|
56 | 57 | /// <param name="index">The config index to change to</param>
|
57 |
| - public void ChangeConfig(int index) |
| 58 | + public async Task ChangeConfig(int index) |
58 | 59 | {
|
59 | 60 | if (index < 0 || index >= Program.Configs.Count)
|
60 | 61 | {
|
61 | 62 | return;
|
62 | 63 | }
|
63 | 64 |
|
64 |
| - Program.Configs[index].LoadSMDef(); |
65 |
| - |
66 |
| - if (Program.Configs[index].RejectedPaths.Any()) |
| 65 | + await Dispatcher.InvokeAsync(() => |
67 | 66 | {
|
68 |
| - var sb = new StringBuilder(); |
69 |
| - sb.Append("SPCode was unauthorized to access the following directories to parse their includes: \n"); |
70 |
| - foreach (var path in Program.Configs[index].RejectedPaths) |
| 67 | + Program.Configs[index].LoadSMDef(); |
| 68 | + |
| 69 | + if (Program.Configs[index].RejectedPaths.Any()) |
71 | 70 | {
|
72 |
| - sb.Append($" - {path}\n"); |
73 |
| - } |
| 71 | + var sb = new StringBuilder(); |
| 72 | + sb.Append("SPCode was unauthorized to access the following directories to parse their includes: \n"); |
| 73 | + foreach (var path in Program.Configs[index].RejectedPaths) |
| 74 | + { |
| 75 | + sb.Append($" - {path}\n"); |
| 76 | + } |
74 | 77 |
|
75 |
| - LoggingControl.LogAction(sb.ToString()); |
76 |
| - } |
| 78 | + LoggingControl.LogAction(sb.ToString()); |
| 79 | + } |
77 | 80 |
|
78 |
| - var name = Program.Configs[index].Name; |
79 |
| - for (var i = 0; i < ConfigMenu.Items.Count - 2; ++i) |
80 |
| - { |
81 |
| - ((MenuItem)ConfigMenu.Items[i]).IsChecked = name == (string)((MenuItem)ConfigMenu.Items[i]).Header; |
82 |
| - } |
| 81 | + var name = Program.Configs[index].Name; |
| 82 | + for (var i = 0; i < ConfigMenu.Items.Count - 2; ++i) |
| 83 | + { |
| 84 | + ((MenuItem)ConfigMenu.Items[i]).IsChecked = name == (string)((MenuItem)ConfigMenu.Items[i]).Header; |
| 85 | + } |
83 | 86 |
|
84 |
| - Program.SelectedConfig = index; |
85 |
| - Program.OptionsObject.Program_SelectedConfig = Program.Configs[Program.SelectedConfig].Name; |
| 87 | + Program.SelectedConfig = index; |
| 88 | + Program.OptionsObject.Program_SelectedConfig = Program.Configs[Program.SelectedConfig].Name; |
86 | 89 |
|
87 |
| - var editors = GetAllEditorElements(); |
88 |
| - if (editors != null) |
89 |
| - { |
90 |
| - foreach (var editor in editors) |
| 90 | + var editors = GetAllEditorElements(); |
| 91 | + if (editors != null) |
91 | 92 | {
|
92 |
| - editor.LoadAutoCompletes(); |
93 |
| - editor.editor.SyntaxHighlighting = new AeonEditorHighlighting(); |
94 |
| - editor.InvalidateVisual(); |
| 93 | + foreach (var editor in editors) |
| 94 | + { |
| 95 | + editor.LoadAutoCompletes(); |
| 96 | + editor.editor.SyntaxHighlighting = new AeonEditorHighlighting(); |
| 97 | + editor.InvalidateVisual(); |
| 98 | + } |
95 | 99 | }
|
96 |
| - } |
97 | 100 |
|
98 |
| - OBDirList.ItemsSource = Program.Configs[index].SMDirectories; |
99 |
| - OBDirList.Items.Refresh(); |
100 |
| - OBDirList.SelectedIndex = 0; |
| 101 | + OBDirList.ItemsSource = Program.Configs[index].SMDirectories; |
| 102 | + OBDirList.Items.Refresh(); |
| 103 | + OBDirList.SelectedIndex = 0; |
| 104 | + }); |
101 | 105 | }
|
102 | 106 |
|
103 | 107 | /// <summary>
|
104 | 108 | /// Overload of ChangeConfig to take the name of the config.
|
105 | 109 | /// </summary>
|
106 | 110 | /// <param name="name">Name of the config to change to.</param>
|
107 |
| - private void ChangeConfig(string name) |
| 111 | + private async Task ChangeConfig(string name) |
108 | 112 | {
|
109 | 113 | for (var i = 0; i < Program.Configs.Count; ++i)
|
110 | 114 | {
|
111 | 115 | if (Program.Configs[i].Name == name)
|
112 | 116 | {
|
113 |
| - ChangeConfig(i); |
| 117 | + await ChangeConfig(i); |
114 | 118 | return;
|
115 | 119 | }
|
116 | 120 | }
|
|
0 commit comments