|
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