mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-10-31 09:20:21 +00:00
bbba2c0eea
add generic svr4 poll(2) event loop
176 lines
6.3 KiB
C#
176 lines
6.3 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System.Windows.Forms;
|
|
|
|
namespace network.loki.lokinet.win32.ui
|
|
{
|
|
public partial class main_frame : Form
|
|
{
|
|
public static Process lokiNetDaemon = new Process();
|
|
public static bool isConnected;
|
|
public static string logText;
|
|
private string config_path;
|
|
private LogDumper ld;
|
|
|
|
void UpdateUI(string text)
|
|
{
|
|
this.Invoke(new MethodInvoker(delegate () { lokinetd_fd1.AppendText(text); }));
|
|
}
|
|
|
|
public main_frame()
|
|
{
|
|
InitializeComponent();
|
|
if (Program.platform == PlatformID.Win32NT)
|
|
config_path = Environment.ExpandEnvironmentVariables("%APPDATA%\\.lokinet");
|
|
else
|
|
config_path = Environment.ExpandEnvironmentVariables("%HOME%/.lokinet");
|
|
StatusLabel.Text = "Disconnected";
|
|
var build = ((AssemblyInformationalVersionAttribute)Assembly
|
|
.GetAssembly(typeof(main_frame))
|
|
.GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false)[0])
|
|
.InformationalVersion;
|
|
UIVersionLabel.Text = String.Format("LokiNET version {0}", build);
|
|
lokinetd_fd1.Text = string.Empty;
|
|
logText = string.Empty;
|
|
lokiNetDaemon.OutputDataReceived += new DataReceivedEventHandler((s, ev) =>
|
|
{
|
|
if (!string.IsNullOrEmpty(ev.Data))
|
|
{
|
|
UpdateUI(ev.Data + Environment.NewLine);
|
|
}
|
|
});
|
|
}
|
|
|
|
private void btnConfigProfile_Click(object sender, EventArgs e)
|
|
{
|
|
//MessageBox.Show("not implemented yet", "error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
|
|
UserSettingsForm f = new UserSettingsForm();
|
|
f.ShowDialog();
|
|
f.Dispose();
|
|
}
|
|
|
|
private void btnConnect_Click(object sender, EventArgs e)
|
|
{
|
|
string lokinetExeString;
|
|
|
|
if (Program.platform == PlatformID.Win32NT)
|
|
lokinetExeString = String.Format("{0}\\lokinet.exe", Directory.GetCurrentDirectory());
|
|
else
|
|
lokinetExeString = String.Format("{0}/lokinet", Directory.GetCurrentDirectory());
|
|
|
|
lokiNetDaemon.StartInfo.UseShellExecute = false;
|
|
lokiNetDaemon.StartInfo.RedirectStandardOutput = true;
|
|
//lokiNetDaemon.EnableRaisingEvents = true;
|
|
lokiNetDaemon.StartInfo.CreateNoWindow = true;
|
|
lokiNetDaemon.StartInfo.FileName = lokinetExeString;
|
|
lokiNetDaemon.Start();
|
|
lokiNetDaemon.BeginOutputReadLine();
|
|
btnConnect.Enabled = false;
|
|
TrayConnect.Enabled = false;
|
|
StatusLabel.Text = "Connected";
|
|
isConnected = true;
|
|
NotificationTrayIcon.Text = "LokiNET - connected";
|
|
btnDrop.Enabled = true;
|
|
TrayDisconnect.Enabled = true;
|
|
NotificationTrayIcon.ShowBalloonTip(5, "LokiNET", "Connected to network.", ToolTipIcon.Info);
|
|
}
|
|
|
|
private void btnDrop_Click(object sender, EventArgs e)
|
|
{
|
|
lokiNetDaemon.CancelOutputRead();
|
|
lokiNetDaemon.Kill();
|
|
btnConnect.Enabled = true;
|
|
TrayConnect.Enabled = true;
|
|
btnDrop.Enabled = false;
|
|
TrayDisconnect.Enabled = false;
|
|
StatusLabel.Text = "Disconnected";
|
|
NotificationTrayIcon.Text = "LokiNET - disconnected";
|
|
isConnected = false;
|
|
logText = lokinetd_fd1.Text;
|
|
lokinetd_fd1.Text = string.Empty;
|
|
NotificationTrayIcon.ShowBalloonTip(5, "LokiNET", "Disconnected from network.", ToolTipIcon.Info);
|
|
|
|
}
|
|
|
|
private void lokinetd_fd1_TextChanged(object sender, EventArgs e)
|
|
{
|
|
lokinetd_fd1.ScrollToCaret();
|
|
}
|
|
|
|
private void btnHide_Click(object sender, EventArgs e)
|
|
{
|
|
Hide();
|
|
if (isConnected)
|
|
NotificationTrayIcon.ShowBalloonTip(5, "LokiNET", "Currently connected.", ToolTipIcon.Info);
|
|
else
|
|
NotificationTrayIcon.ShowBalloonTip(5, "LokiNET", "Currently disconnected.", ToolTipIcon.Info);
|
|
}
|
|
|
|
private void NotificationTrayIcon_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
if (!Visible)
|
|
{
|
|
Show();
|
|
}
|
|
}
|
|
|
|
private void btnAbout_Click(object sender, EventArgs e)
|
|
{
|
|
AboutBox a = new AboutBox();
|
|
a.ShowDialog(this);
|
|
a.Dispose();
|
|
}
|
|
|
|
private void saveLogToFileToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (isConnected)
|
|
MessageBox.Show("Cannot dump log when client is running.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
|
else
|
|
{
|
|
if (logText == string.Empty)
|
|
{
|
|
MessageBox.Show("Log is empty", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
|
return;
|
|
}
|
|
if (ld == null)
|
|
ld = new LogDumper(logText);
|
|
else
|
|
ld.setText(logText);
|
|
|
|
ld.CreateLog(config_path);
|
|
MessageBox.Show(string.Format("Wrote log to {0}, previous log rotated", ld.getLogPath()), "LokiNET", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
logText = string.Empty;
|
|
}
|
|
}
|
|
|
|
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
AboutBox a = new AboutBox();
|
|
a.ShowDialog();
|
|
a.Dispose();
|
|
}
|
|
|
|
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
Application.Exit();
|
|
}
|
|
|
|
private void TrayDisconnect_Click(object sender, EventArgs e)
|
|
{
|
|
btnDrop_Click(sender, e);
|
|
}
|
|
|
|
private void TrayConnect_Click(object sender, EventArgs e)
|
|
{
|
|
btnConnect_Click(sender, e);
|
|
}
|
|
|
|
private void showToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
Show();
|
|
}
|
|
}
|
|
}
|