mirror of
https://github.com/netchx/netch.git
synced 2026-05-11 23:45:06 +08:00
Fix repository
This commit is contained in:
104
Netch/Forms/ModeForms/RouteForm.cs
Normal file
104
Netch/Forms/ModeForms/RouteForm.cs
Normal file
@@ -0,0 +1,104 @@
|
||||
using Netch.Models.Modes;
|
||||
using Netch.Models.Modes.TunMode;
|
||||
using Netch.Properties;
|
||||
using Netch.Services;
|
||||
using Netch.Utils;
|
||||
|
||||
namespace Netch.Forms.ModeForms;
|
||||
|
||||
[Fody.ConfigureAwait(true)]
|
||||
public partial class RouteForm : BindingForm
|
||||
{
|
||||
private readonly bool IsCreateMode;
|
||||
|
||||
private readonly TunMode _mode;
|
||||
|
||||
public RouteForm(Mode? mode = null)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case null:
|
||||
IsCreateMode = true;
|
||||
_mode = new TunMode();
|
||||
break;
|
||||
case TunMode tunMode:
|
||||
IsCreateMode = false;
|
||||
_mode = tunMode;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
InitializeComponent();
|
||||
Icon = Resources.icon;
|
||||
|
||||
|
||||
BindTextBox(RemarkTextBox, _ => true, s => _mode.i18NRemark = s, _mode.i18NRemark);
|
||||
// TODO Options Not implemented
|
||||
|
||||
BindTextBox(BypassRuleRichTextBox, s => true, s => _mode.Bypass = s.GetLines().ToList(), string.Join(Constants.EOF, _mode.Bypass));
|
||||
BindTextBox(HandleRuleRichTextBox, s => true, s => _mode.Handle = s.GetLines().ToList(), string.Join(Constants.EOF, _mode.Handle));
|
||||
}
|
||||
|
||||
private void Route_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsCreateMode)
|
||||
{
|
||||
Text = "Edit Route Table Rule";
|
||||
|
||||
RemarkTextBox.TextChanged -= RemarkTextBox_TextChanged;
|
||||
RemarkTextBox.Text = _mode.i18NRemark;
|
||||
FilenameTextBox.Text = ModeService.Instance.GetRelativePath(_mode.FullName);
|
||||
|
||||
if (!_mode.FullName.EndsWith(".json"))
|
||||
ControlButton.Enabled = false;
|
||||
}
|
||||
|
||||
i18N.TranslateForm(this);
|
||||
}
|
||||
|
||||
private void ControlButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(RemarkTextBox.Text))
|
||||
{
|
||||
MessageBoxX.Show(i18N.Translate("Please enter a mode remark"));
|
||||
return;
|
||||
}
|
||||
|
||||
SaveBinds();
|
||||
|
||||
if (IsCreateMode)
|
||||
{
|
||||
var relativePath = FilenameTextBox.Text;
|
||||
var fullName = ModeService.Instance.GetFullPath(relativePath);
|
||||
if (File.Exists(fullName))
|
||||
{
|
||||
MessageBoxX.Show(i18N.Translate("File already exists.\n Please Change the filename"));
|
||||
return;
|
||||
}
|
||||
|
||||
_mode.FullName = fullName;
|
||||
|
||||
ModeService.Instance.Add(_mode);
|
||||
MessageBoxX.Show(i18N.Translate("Mode added successfully"));
|
||||
}
|
||||
else
|
||||
{
|
||||
_mode.WriteFile();
|
||||
MessageBoxX.Show(i18N.Translate("Mode updated successfully"));
|
||||
}
|
||||
Global.MainForm.ModeComboBox.SelectedItem = _mode;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void RemarkTextBox_TextChanged(object? sender, EventArgs? e)
|
||||
{
|
||||
if (!IsHandleCreated)
|
||||
return;
|
||||
|
||||
BeginInvoke(() =>
|
||||
{
|
||||
FilenameTextBox.Text = FilenameTextBox.Text = ModeEditorUtils.GetCustomModeRelativePath(RemarkTextBox.Text);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user