Skip to content

Commit 17f51f7

Browse files
committed
Fixed Console Actions to allow multiple consoles running. Placed them in Thread.
1 parent 8826685 commit 17f51f7

File tree

4 files changed

+172
-8
lines changed

4 files changed

+172
-8
lines changed

Classes/consoles/NoVNCClient.Designer.cs

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Classes/consoles/NoVNCClient.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,17 @@ public partial class NoVncClient : Form
1313
private readonly MachineData machine;
1414
private WebView2 webView;
1515

16-
public NoVncClient(MachineData machine, string remote = "novcs")
16+
public NoVncClient(MachineData machine)
1717
{
1818
this.machine = machine;
1919
InitializeComponent();
20+
21+
}
22+
public void RequestWebConnection(string remote = "novcs")
23+
{
2024
CenterToScreen();
2125
InitializeWebView(remote);
2226
}
23-
2427
private async void InitializeWebView(string remoteType)
2528
{
2629
if (remoteType == "novnc")

Classes/consoles/NoVNCClient.resx

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,129 @@
117117
<resheader name="writer">
118118
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120+
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
121+
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
122+
<value>
123+
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
242+
AAAAyDD+H4On36whjyRHAAAAAElFTkSuQmCC
243+
</value>
244+
</data>
120245
</root>

Panels/MainPanel.cs

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using System.Threading;
45
using System.Threading.Tasks;
56
using System.Windows.Forms;
67
using Newtonsoft.Json;
@@ -167,9 +168,9 @@ private void GenerateMachineTile(MachineData machineData)
167168
powerContextMenu.Items.AddRange(new ToolStripItem[] { pMenuItem1, pMenuItem2, pMenuItem3, pMenuItem4, pMenuItem5, pMenuItem6, pMenuItem7 });
168169

169170
// Remote Set Click Actions
170-
rMenuItem1.Click += (_, _) => WebClient(machineData, "novnc");
171-
rMenuItem2.Click += (_, _) => SpiceClient(machineData.Vmid);
172-
rMenuItem3.Click += (_, _) => WebClient(machineData, "xtermjs");
171+
rMenuItem1.Click += (_, _) => WebThread(machineData, "novnc");
172+
rMenuItem2.Click += (_, _) => SpiceThread(machineData.Vmid);
173+
rMenuItem3.Click += (_, _) => WebThread(machineData, "xtermjs");
173174

174175
// Power Set Click Actions
175176
pMenuItem1.Click += (_, _) => PowerRequest("start", machineData);
@@ -319,6 +320,36 @@ private void OpenSpiceProxyPanel(object sender, EventArgs e)
319320
Program._Panels.Add("SpiceProxyPanel", panelSpiceProxy);
320321
panelSpiceProxy.Show();
321322
}
323+
// New Thread for Consoles
324+
private static void InvokeOnUIThread(Action action)
325+
{
326+
if (Application.OpenForms.Count > 0)
327+
{
328+
var form = Application.OpenForms[0]; // Get the main form
329+
if (form.InvokeRequired)
330+
{
331+
form.Invoke(action);
332+
}
333+
else
334+
{
335+
action();
336+
}
337+
}
338+
else
339+
{
340+
throw new InvalidOperationException("No open forms available.");
341+
}
342+
}
343+
344+
private static void SpiceThread(int vmid)
345+
{
346+
InvokeOnUIThread(() => SpiceClient(vmid));
347+
}
348+
349+
private static void WebThread(MachineData machineData, string remoteType)
350+
{
351+
InvokeOnUIThread(() => WebClient(machineData, remoteType));
352+
}
322353

323354
// Opening Consoles
324355
private static void SpiceClient(int vmid)
@@ -330,7 +361,9 @@ private static void WebClient(MachineData machineData, string remoteType)
330361
{
331362
// ReSharper disable once UnusedVariable
332363
// ReSharper disable once ObjectCreationAsStatement
333-
new NoVncClient(machineData, remoteType);
334-
}
364+
var webClient = new NoVncClient(machineData);
365+
webClient.RequestWebConnection(remoteType);
366+
367+
}
335368

336369
}

0 commit comments

Comments
 (0)