Example #1
0
        void ReleaseDesignerOutlets()
        {
            if (CboAdvancedManifestRefresh != null)
            {
                CboAdvancedManifestRefresh.Dispose();
                CboAdvancedManifestRefresh = null;
            }

            if (CboDnsSwitchMode != null)
            {
                CboDnsSwitchMode.Dispose();
                CboDnsSwitchMode = null;
            }

            if (CboGeneralOsxInterfaceStyle != null)
            {
                CboGeneralOsxInterfaceStyle.Dispose();
                CboGeneralOsxInterfaceStyle = null;
            }

            if (CboIpV6 != null)
            {
                CboIpV6.Dispose();
                CboIpV6 = null;
            }

            if (CboLockMode != null)
            {
                CboLockMode.Dispose();
                CboLockMode = null;
            }

            if (CboOpenVpnSndBuf != null)
            {
                CboOpenVpnSndBuf.Dispose();
                CboOpenVpnSndBuf = null;
            }

            if (CboOpenVpnRcvBuf != null)
            {
                CboOpenVpnRcvBuf.Dispose();
                CboOpenVpnRcvBuf = null;
            }

            if (CboProxyAuthentication != null)
            {
                CboProxyAuthentication.Dispose();
                CboProxyAuthentication = null;
            }

            if (CboProxyType != null)
            {
                CboProxyType.Dispose();
                CboProxyType = null;
            }

            if (CboRoutesOtherwise != null)
            {
                CboRoutesOtherwise.Dispose();
                CboRoutesOtherwise = null;
            }

            if (ChkAdvancedCheckRoute != null)
            {
                ChkAdvancedCheckRoute.Dispose();
                ChkAdvancedCheckRoute = null;
            }

            if (ChkAdvancedExpertMode != null)
            {
                ChkAdvancedExpertMode.Dispose();
                ChkAdvancedExpertMode = null;
            }

            if (ChkAdvancedNetworkLocking != null)
            {
                ChkAdvancedNetworkLocking.Dispose();
                ChkAdvancedNetworkLocking = null;
            }

            if (ChkAdvancedOpenVpnDirectivesDefaultSkip != null)
            {
                ChkAdvancedOpenVpnDirectivesDefaultSkip.Dispose();
                ChkAdvancedOpenVpnDirectivesDefaultSkip = null;
            }

            if (ChkAdvancedPingerEnabled != null)
            {
                ChkAdvancedPingerEnabled.Dispose();
                ChkAdvancedPingerEnabled = null;
            }

            if (ChkConnect != null)
            {
                ChkConnect.Dispose();
                ChkConnect = null;
            }

            if (ChkDnsCheck != null)
            {
                ChkDnsCheck.Dispose();
                ChkDnsCheck = null;
            }

            if (ChkExitConfirm != null)
            {
                ChkExitConfirm.Dispose();
                ChkExitConfirm = null;
            }

            if (ChkGeneralOsxNotifications != null)
            {
                ChkGeneralOsxNotifications.Dispose();
                ChkGeneralOsxNotifications = null;
            }

            if (ChkGeneralOsxVisible != null)
            {
                ChkGeneralOsxVisible.Dispose();
                ChkGeneralOsxVisible = null;
            }

            if (ChkGeneralStartLast != null)
            {
                ChkGeneralStartLast.Dispose();
                ChkGeneralStartLast = null;
            }

            if (ChkLockAllowPing != null)
            {
                ChkLockAllowPing.Dispose();
                ChkLockAllowPing = null;
            }

            if (ChkLockAllowPrivate != null)
            {
                ChkLockAllowPrivate.Dispose();
                ChkLockAllowPrivate = null;
            }

            if (ChkLoggingEnabled != null)
            {
                ChkLoggingEnabled.Dispose();
                ChkLoggingEnabled = null;
            }

            if (ChkLogLevelDebug != null)
            {
                ChkLogLevelDebug.Dispose();
                ChkLogLevelDebug = null;
            }

            if (ChkModeAutomatic != null)
            {
                ChkModeAutomatic.Dispose();
                ChkModeAutomatic = null;
            }

            if (ChkModeSsh22 != null)
            {
                ChkModeSsh22.Dispose();
                ChkModeSsh22 = null;
            }

            if (ChkModeSsh22Alt != null)
            {
                ChkModeSsh22Alt.Dispose();
                ChkModeSsh22Alt = null;
            }

            if (ChkModeSsh53 != null)
            {
                ChkModeSsh53.Dispose();
                ChkModeSsh53 = null;
            }

            if (ChkModeSsh80 != null)
            {
                ChkModeSsh80.Dispose();
                ChkModeSsh80 = null;
            }

            if (ChkModeSsl443 != null)
            {
                ChkModeSsl443.Dispose();
                ChkModeSsl443 = null;
            }

            if (ChkModeTcp2018 != null)
            {
                ChkModeTcp2018.Dispose();
                ChkModeTcp2018 = null;
            }

            if (ChkModeTcp2018Alt != null)
            {
                ChkModeTcp2018Alt.Dispose();
                ChkModeTcp2018Alt = null;
            }

            if (ChkModeTcp443 != null)
            {
                ChkModeTcp443.Dispose();
                ChkModeTcp443 = null;
            }

            if (ChkModeTcp53 != null)
            {
                ChkModeTcp53.Dispose();
                ChkModeTcp53 = null;
            }

            if (ChkModeTcp80 != null)
            {
                ChkModeTcp80.Dispose();
                ChkModeTcp80 = null;
            }

            if (ChkModeTor != null)
            {
                ChkModeTor.Dispose();
                ChkModeTor = null;
            }

            if (ChkModeUdp2018 != null)
            {
                ChkModeUdp2018.Dispose();
                ChkModeUdp2018 = null;
            }

            if (ChkModeUdp2018Alt != null)
            {
                ChkModeUdp2018Alt.Dispose();
                ChkModeUdp2018Alt = null;
            }

            if (ChkModeUdp443 != null)
            {
                ChkModeUdp443.Dispose();
                ChkModeUdp443 = null;
            }

            if (ChkModeUdp443Alt != null)
            {
                ChkModeUdp443Alt.Dispose();
                ChkModeUdp443Alt = null;
            }

            if (ChkModeUdp53 != null)
            {
                ChkModeUdp53.Dispose();
                ChkModeUdp53 = null;
            }

            if (ChkModeUdp53Alt != null)
            {
                ChkModeUdp53Alt.Dispose();
                ChkModeUdp53Alt = null;
            }

            if (ChkModeUdp80 != null)
            {
                ChkModeUdp80.Dispose();
                ChkModeUdp80 = null;
            }

            if (ChkModeUdp80Alt != null)
            {
                ChkModeUdp80Alt.Dispose();
                ChkModeUdp80Alt = null;
            }

            if (ChkNetLock != null)
            {
                ChkNetLock.Dispose();
                ChkNetLock = null;
            }

            if (ChkRouteRemoveDefaultGateway != null)
            {
                ChkRouteRemoveDefaultGateway.Dispose();
                ChkRouteRemoveDefaultGateway = null;
            }

            if (CmdAdvancedEventsClear != null)
            {
                CmdAdvancedEventsClear.Dispose();
                CmdAdvancedEventsClear = null;
            }

            if (CmdAdvancedEventsEdit != null)
            {
                CmdAdvancedEventsEdit.Dispose();
                CmdAdvancedEventsEdit = null;
            }

            if (CmdAdvancedHelp != null)
            {
                CmdAdvancedHelp.Dispose();
                CmdAdvancedHelp = null;
            }

            if (CmdAdvancedOpenVpnPath != null)
            {
                CmdAdvancedOpenVpnPath.Dispose();
                CmdAdvancedOpenVpnPath = null;
            }

            if (CmdCancel != null)
            {
                CmdCancel.Dispose();
                CmdCancel = null;
            }

            if (CmdDnsAdd != null)
            {
                CmdDnsAdd.Dispose();
                CmdDnsAdd = null;
            }

            if (CmdDnsEdit != null)
            {
                CmdDnsEdit.Dispose();
                CmdDnsEdit = null;
            }

            if (CmdDnsRemove != null)
            {
                CmdDnsRemove.Dispose();
                CmdDnsRemove = null;
            }

            if (CmdGeneralTos != null)
            {
                CmdGeneralTos.Dispose();
                CmdGeneralTos = null;
            }

            if (CmdLockHelp != null)
            {
                CmdLockHelp.Dispose();
                CmdLockHelp = null;
            }

            if (CmdModeHelp != null)
            {
                CmdModeHelp.Dispose();
                CmdModeHelp = null;
            }

            if (CmdModeTorTest != null)
            {
                CmdModeTorTest.Dispose();
                CmdModeTorTest = null;
            }

            if (CmdRouteAdd != null)
            {
                CmdRouteAdd.Dispose();
                CmdRouteAdd = null;
            }

            if (CmdRouteEdit != null)
            {
                CmdRouteEdit.Dispose();
                CmdRouteEdit = null;
            }

            if (CmdRouteRemove != null)
            {
                CmdRouteRemove.Dispose();
                CmdRouteRemove = null;
            }

            if (CmdSave != null)
            {
                CmdSave.Dispose();
                CmdSave = null;
            }

            if (LblDnsServers != null)
            {
                LblDnsServers.Dispose();
                LblDnsServers = null;
            }

            if (LblLockRoutingOutWarning != null)
            {
                LblLockRoutingOutWarning.Dispose();
                LblLockRoutingOutWarning = null;
            }

            if (LblLoggingHelp != null)
            {
                LblLoggingHelp.Dispose();
                LblLoggingHelp = null;
            }

            if (LblOpenVpnSndBuf != null)
            {
                LblOpenVpnSndBuf.Dispose();
                LblOpenVpnSndBuf = null;
            }

            if (LblOpenVpnRcvBuf != null)
            {
                LblOpenVpnRcvBuf.Dispose();
                LblOpenVpnRcvBuf = null;
            }

            if (LblRoutesNetworkLockWarning != null)
            {
                LblRoutesNetworkLockWarning.Dispose();
                LblRoutesNetworkLockWarning = null;
            }

            if (TableAdvancedEvents != null)
            {
                TableAdvancedEvents.Dispose();
                TableAdvancedEvents = null;
            }

            if (TableDnsServers != null)
            {
                TableDnsServers.Dispose();
                TableDnsServers = null;
            }

            if (TableRoutes != null)
            {
                TableRoutes.Dispose();
                TableRoutes = null;
            }

            if (TxtAdvancedOpenVpnDirectivesCustom != null)
            {
                TxtAdvancedOpenVpnDirectivesCustom.Dispose();
                TxtAdvancedOpenVpnDirectivesCustom = null;
            }

            if (TxtAdvancedOpenVpnDirectivesDefault != null)
            {
                TxtAdvancedOpenVpnDirectivesDefault.Dispose();
                TxtAdvancedOpenVpnDirectivesDefault = null;
            }

            if (TxtAdvancedOpenVpnPath != null)
            {
                TxtAdvancedOpenVpnPath.Dispose();
                TxtAdvancedOpenVpnPath = null;
            }

            if (TxtLockAllowedIPS != null)
            {
                TxtLockAllowedIPS.Dispose();
                TxtLockAllowedIPS = null;
            }

            if (TxtLoggingComputedPath != null)
            {
                TxtLoggingComputedPath.Dispose();
                TxtLoggingComputedPath = null;
            }

            if (TxtLoggingPath != null)
            {
                TxtLoggingPath.Dispose();
                TxtLoggingPath = null;
            }

            if (TxtModeTorControlPassword != null)
            {
                TxtModeTorControlPassword.Dispose();
                TxtModeTorControlPassword = null;
            }

            if (TxtModeTorControlPort != null)
            {
                TxtModeTorControlPort.Dispose();
                TxtModeTorControlPort = null;
            }

            if (TxtModeTorHost != null)
            {
                TxtModeTorHost.Dispose();
                TxtModeTorHost = null;
            }

            if (TxtModeTorPort != null)
            {
                TxtModeTorPort.Dispose();
                TxtModeTorPort = null;
            }

            if (TxtProxyHost != null)
            {
                TxtProxyHost.Dispose();
                TxtProxyHost = null;
            }

            if (TxtProxyLogin != null)
            {
                TxtProxyLogin.Dispose();
                TxtProxyLogin = null;
            }

            if (TxtProxyPassword != null)
            {
                TxtProxyPassword.Dispose();
                TxtProxyPassword = null;
            }

            if (TxtProxyPort != null)
            {
                TxtProxyPort.Dispose();
                TxtProxyPort = null;
            }
        }
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();

            Window.Title = Constants.Name + " - " + Messages.WindowsSettingsTitle;

            TableTabsController = new TableTabsController(TableTabs, TabMain);

            ChkNetLock.Activated += (object sender, EventArgs e) =>
            {
                if (GuiUtils.GetCheck(ChkNetLock))
                {
                    if ((Engine.Instance as UI.Cocoa.Osx.Engine).MainWindow.NetworkLockKnowledge() == false)
                    {
                        GuiUtils.SetCheck(ChkNetLock, false);
                    }
                }
            };

            TableRoutes.Delegate = new TableRoutingDelegate(this);

            LblDnsServers.StringValue = Messages.WindowsSettingsDnsServers;
            TableDnsServers.Delegate  = new TableDnsServersDelegate(this);

            TableAdvancedEvents.Delegate = new TableAdvancedEventsDelegate(this);

            LblLoggingHelp.StringValue = Messages.WindowsSettingsLoggingHelp;

            TableRoutingController        = new TableRoutingController(this.TableRoutes);
            TableDnsServersController     = new TableDnsServersController(this.TableDnsServers);
            TableAdvancedEventsController = new TableAdvancedEventsController(this.TableAdvancedEvents);

            CmdSave.Activated += (object sender, EventArgs e) =>
            {
                try
                {
                    if (Check())
                    {
                        SaveOptions();
                        Close();
                    }
                }
                catch (Exception ex)
                {
                    Core.Engine.Instance.Logs.Log(LogType.Fatal, ex);
                }
            };

            CmdCancel.Activated += (object sender, EventArgs e) =>
            {
                Close();
            };

            // General

            CmdGeneralTos.Activated += (object sender, EventArgs e) =>
            {
                WindowTosController tos = new WindowTosController();
                tos.Window.ReleasedWhenClosed = true;
                NSApplication.SharedApplication.RunModalForWindow(tos.Window);
                tos.Window.Close();
            };

            CmdResetToDefault.Activated += (object sender, EventArgs e) =>
            {
                if (Engine.Instance.OnAskYesNo(Messages.ResetSettingsConfirm))
                {
                    Engine.Instance.Storage.ResetAll(false);
                    ReadOptions();
                    GuiUtils.MessageBoxInfo(Messages.ResetSettingsDone);
                }
            };

            // UI

            CboUiUnit.RemoveAllItems();
            CboUiUnit.AddItem(Messages.WindowsSettingsUiUnit0);
            CboUiUnit.AddItem(Messages.WindowsSettingsUiUnit1);
            CboUiUnit.AddItem(Messages.WindowsSettingsUiUnit2);

            // Protocols

            CmdProtocolsHelp1.Activated += (object sender, EventArgs e) =>
            {
                Engine.Instance.Command("ui.show.docs.protocols");
            };

            CmdProtocolsHelp2.Activated += (object sender, EventArgs e) =>
            {
                Engine.Instance.Command("ui.show.docs.udp_vs_tcp");
            };

            ChkProtocolsAutomatic.Activated += (object sender, EventArgs e) =>
            {
                EnableIde();
            };

            TableProtocols.Delegate  = new TableProtocolsDelegate(this);
            TableProtocolsController = new TableProtocolsController(this.TableProtocols);

            // Proxy
            CboProxyType.RemoveAllItems();
            CboProxyType.AddItem("None");
            CboProxyType.AddItem("Http");
            CboProxyType.AddItem("Socks");
            CboProxyType.AddItem("Tor");
            CboProxyWhen.RemoveAllItems();
            CboProxyWhen.AddItem(Messages.WindowsSettingsProxyWhenAlways);
            CboProxyWhen.AddItem(Messages.WindowsSettingsProxyWhenWeb);
            CboProxyWhen.AddItem(Messages.WindowsSettingsProxyWhenOpenVPN);
            CboProxyWhen.AddItem(Messages.WindowsSettingsProxyWhenNone);

            CmdProxyTorHelp.Activated += (object sender, EventArgs e) =>
            {
                Engine.Instance.Command("ui.show.docs.tor");
            };
            CboProxyType.Activated += (object sender, EventArgs e) =>
            {
                EnableIde();

                if (GuiUtils.GetSelected(CboProxyType) == "Tor")
                {
                    TxtProxyPort.StringValue = "9150";
                }
                else
                {
                    TxtProxyPort.StringValue = "8080";
                }
            };
            CboProxyAuthentication.Activated += (object sender, EventArgs e) =>
            {
                EnableIde();
            };
            CmdProxyTorTest.Activated += (object sender, EventArgs e) =>
            {
                string result = TorControl.Test(TxtProxyHost.StringValue, Conversions.ToInt32(TxtProxyTorControlPort.StringValue), TxtProxyTorControlPassword.StringValue);
                GuiUtils.MessageBoxInfo(result);
            };

            // Routes
            CboRoutesOtherwise.RemoveAllItems();
            CboRoutesOtherwise.AddItem(RouteDirectionToDescription("in"));
            CboRoutesOtherwise.AddItem(RouteDirectionToDescription("out"));
            CboRoutesOtherwise.Activated += (object sender, EventArgs e) =>
            {
                EnableIde();
            };

            TableRoutes.DoubleClick += (object sender, EventArgs e) =>
            {
                RouteEdit();
            };

            CmdRouteAdd.Activated += (object sender, EventArgs e) =>
            {
                RouteAdd();
            };

            CmdRouteRemove.Activated += (object sender, EventArgs e) =>
            {
                RouteRemove();
            };

            CmdRouteEdit.Activated += (object sender, EventArgs e) =>
            {
                RouteEdit();
            };

            // Advanced - General

            CmdAdvancedHelp.Activated += (object sender, EventArgs e) =>
            {
                Engine.Instance.Command("ui.show.docs.advanced");
            };

            CboIpV6.RemoveAllItems();
            CboIpV6.AddItem("None");
            CboIpV6.AddItem("Disable");

            CboAdvancedManifestRefresh.RemoveAllItems();
            CboAdvancedManifestRefresh.AddItem("Automatic");
            CboAdvancedManifestRefresh.AddItem("Never");
            CboAdvancedManifestRefresh.AddItem("Every minute");
            CboAdvancedManifestRefresh.AddItem("Every ten minute");
            CboAdvancedManifestRefresh.AddItem("Every one hour");

            LblOpenVpnRcvBuf.StringValue = Messages.WindowsSettingsOpenVpnRcvBuf + ":";
            LblOpenVpnSndBuf.StringValue = Messages.WindowsSettingsOpenVpnSndBuf + ":";
            CboOpenVpnRcvBuf.RemoveAllItems();
            CboOpenVpnRcvBuf.AddItem(Messages.Automatic);
            CboOpenVpnRcvBuf.AddItem(Messages.WindowsSettingsOpenVpnDefault);
            CboOpenVpnRcvBuf.AddItem("8 KB");
            CboOpenVpnRcvBuf.AddItem("16 KB");
            CboOpenVpnRcvBuf.AddItem("32 KB");
            CboOpenVpnRcvBuf.AddItem("64 KB");
            CboOpenVpnRcvBuf.AddItem("128 KB");
            CboOpenVpnRcvBuf.AddItem("256 KB");
            CboOpenVpnRcvBuf.AddItem("512 KB");
            CboOpenVpnSndBuf.RemoveAllItems();
            CboOpenVpnSndBuf.AddItem(Messages.Automatic);
            CboOpenVpnSndBuf.AddItem(Messages.WindowsSettingsOpenVpnDefault);
            CboOpenVpnSndBuf.AddItem("8 KB");
            CboOpenVpnSndBuf.AddItem("16 KB");
            CboOpenVpnSndBuf.AddItem("32 KB");
            CboOpenVpnSndBuf.AddItem("64 KB");
            CboOpenVpnSndBuf.AddItem("128 KB");
            CboOpenVpnSndBuf.AddItem("256 KB");
            CboOpenVpnSndBuf.AddItem("512 KB");

            CmdAdvancedOpenVpnPath.Activated += (object sender, EventArgs e) =>
            {
                GuiUtils.SelectFile(this.Window, TxtAdvancedOpenVpnPath);
            };


            // Advanced - DNS
            TableDnsServers.DoubleClick += (object sender, EventArgs e) =>
            {
                DnsServersEdit();
            };

            CmdDnsAdd.Activated += (object sender, EventArgs e) =>
            {
                DnsServersAdd();
            };

            CmdDnsRemove.Activated += (object sender, EventArgs e) =>
            {
                DnsServersRemove();
            };

            CmdDnsEdit.Activated += (object sender, EventArgs e) =>
            {
                DnsServersEdit();
            };

            // Advanced - Net Lock
            CmdLockHelp.Activated += (object sender, EventArgs e) =>
            {
                Engine.Instance.Command("ui.show.docs.lock");
            };
            CboLockMode.RemoveAllItems();
            CboLockMode.AddItem("None");
            CboLockMode.AddItem("Automatic");
            foreach (NetworkLockPlugin lockPlugin in Engine.Instance.NetworkLockManager.Modes)
            {
                CboLockMode.AddItem(lockPlugin.GetName());
            }

            LblRoutesNetworkLockWarning.StringValue = Messages.WindowsSettingsRouteLockHelp;
            LblLockRoutingOutWarning.StringValue    = Messages.NetworkLockNotAvailableWithRouteOut;

            // Advanced - Logging

            TxtLoggingPath.Changed += (object sender, EventArgs e) =>
            {
                RefreshLogPreview();
            };

            CmdLoggingOpen.Activated += (object sender, EventArgs e) =>
            {
                List <string> paths = Engine.Instance.Logs.ParseLogFilePath(TxtLoggingPath.StringValue);
                foreach (string path in paths)
                {
                    if (Core.Platform.Instance.OpenDirectoryInFileManager(path) == false)
                    {
                        GuiUtils.MessageBoxError(MessagesFormatter.Format(Messages.WindowsSettingsLogsCannotOpenDirectory, path));
                    }
                }
            };

            // Directives
            CboOpenVpnDirectivesSkipDefault.RemoveAllItems();
            CboOpenVpnDirectivesSkipDefault.AddItem(Messages.WindowsSettingsOpenVpnDirectivesDefaultSkip1);
            CboOpenVpnDirectivesSkipDefault.AddItem(Messages.WindowsSettingsOpenVpnDirectivesDefaultSkip2);
            CmdOpenVpnDirectivesHelp.Activated += (object sender, EventArgs e) =>
            {
                Engine.Instance.Command("ui.show.docs.directives");
            };
            CmdOpenVpnDirectivesCustomPathBrowse.Activated += (object sender, EventArgs e) =>
            {
                GuiUtils.SelectFile(this.Window, TxtOpenVpnDirectivesCustomPath);
            };

            // Advanced - Events

            TableAdvancedEvents.DoubleClick += (object sender, EventArgs e) =>
            {
                AdvancedEventEdit();
            };

            CmdAdvancedEventsEdit.Activated += (object sender, EventArgs e) =>
            {
                AdvancedEventEdit();
            };

            CmdAdvancedEventsClear.Activated += (object sender, EventArgs e) =>
            {
                AdvancedEventClear();
            };

            ReadOptions();

            EnableIde();

            RefreshLogPreview();
        }
Example #3
0
        void ReleaseDesignerOutlets()
        {
            if (CboAdvancedManifestRefresh != null)
            {
                CboAdvancedManifestRefresh.Dispose();
                CboAdvancedManifestRefresh = null;
            }

            if (CboDnsSwitchMode != null)
            {
                CboDnsSwitchMode.Dispose();
                CboDnsSwitchMode = null;
            }

            if (CboGeneralOsxInterfaceStyle != null)
            {
                CboGeneralOsxInterfaceStyle.Dispose();
                CboGeneralOsxInterfaceStyle = null;
            }

            if (CboIpV6 != null)
            {
                CboIpV6.Dispose();
                CboIpV6 = null;
            }

            if (LblIPv6 != null)
            {
                LblIPv6.Dispose();
                LblIPv6 = null;
            }

            if (CboLockIncoming != null)
            {
                CboLockIncoming.Dispose();
                CboLockIncoming = null;
            }

            if (CboLockMode != null)
            {
                CboLockMode.Dispose();
                CboLockMode = null;
            }

            if (CboLockOutgoing != null)
            {
                CboLockOutgoing.Dispose();
                CboLockOutgoing = null;
            }

            if (CboNetworkEntryInterface != null)
            {
                CboNetworkEntryInterface.Dispose();
                CboNetworkEntryInterface = null;
            }

            if (CboOpenVpnDirectivesHelp != null)
            {
                CboOpenVpnDirectivesHelp.Dispose();
                CboOpenVpnDirectivesHelp = null;
            }

            if (CboOpenVpnDirectivesSkipDefault != null)
            {
                CboOpenVpnDirectivesSkipDefault.Dispose();
                CboOpenVpnDirectivesSkipDefault = null;
            }

            if (CboOpenVpnRcvBuf != null)
            {
                CboOpenVpnRcvBuf.Dispose();
                CboOpenVpnRcvBuf = null;
            }

            if (CboOpenVpnSndBuf != null)
            {
                CboOpenVpnSndBuf.Dispose();
                CboOpenVpnSndBuf = null;
            }

            if (CboProtocolIPEntry != null)
            {
                CboProtocolIPEntry.Dispose();
                CboProtocolIPEntry = null;
            }

            if (CboProxyAuthentication != null)
            {
                CboProxyAuthentication.Dispose();
                CboProxyAuthentication = null;
            }

            if (CboProxyType != null)
            {
                CboProxyType.Dispose();
                CboProxyType = null;
            }

            if (LblNetworkIPv4Mode != null)
            {
                LblNetworkIPv4Mode.Dispose();
                LblNetworkIPv4Mode = null;
            }

            if (LblNetworkIPv6Mode != null)
            {
                LblNetworkIPv6Mode.Dispose();
                LblNetworkIPv6Mode = null;
            }

            if (CboNetworkIPv4Mode != null)
            {
                CboNetworkIPv4Mode.Dispose();
                CboNetworkIPv4Mode = null;
            }

            if (CboNetworkIPv6Mode != null)
            {
                CboNetworkIPv6Mode.Dispose();
                CboNetworkIPv6Mode = null;
            }

            if (CboProxyWhen != null)
            {
                CboProxyWhen.Dispose();
                CboProxyWhen = null;
            }

            if (LblRoutesOtherwise != null)
            {
                LblRoutesOtherwise.Dispose();
                LblRoutesOtherwise = null;
            }

            if (CboRoutesOtherwise != null)
            {
                CboRoutesOtherwise.Dispose();
                CboRoutesOtherwise = null;
            }

            if (CboUiUnit != null)
            {
                CboUiUnit.Dispose();
                CboUiUnit = null;
            }

            if (ChkAdvancedCheckRoute != null)
            {
                ChkAdvancedCheckRoute.Dispose();
                ChkAdvancedCheckRoute = null;
            }

            if (ChkAdvancedExpertMode != null)
            {
                ChkAdvancedExpertMode.Dispose();
                ChkAdvancedExpertMode = null;
            }

            if (ChkAdvancedNetworkLocking != null)
            {
                ChkAdvancedNetworkLocking.Dispose();
                ChkAdvancedNetworkLocking = null;
            }

            if (ChkAdvancedPingerEnabled != null)
            {
                ChkAdvancedPingerEnabled.Dispose();
                ChkAdvancedPingerEnabled = null;
            }

            if (ChkAdvancedProviders != null)
            {
                ChkAdvancedProviders.Dispose();
                ChkAdvancedProviders = null;
            }

            if (ChkAdvancedSkipAlreadyRun != null)
            {
                ChkAdvancedSkipAlreadyRun.Dispose();
                ChkAdvancedSkipAlreadyRun = null;
            }

            if (ChkConnect != null)
            {
                ChkConnect.Dispose();
                ChkConnect = null;
            }

            if (ChkDnsCheck != null)
            {
                ChkDnsCheck.Dispose();
                ChkDnsCheck = null;
            }

            if (ChkExitConfirm != null)
            {
                ChkExitConfirm.Dispose();
                ChkExitConfirm = null;
            }

            if (ChkGeneralOsxNotifications != null)
            {
                ChkGeneralOsxNotifications.Dispose();
                ChkGeneralOsxNotifications = null;
            }

            if (ChkGeneralOsxVisible != null)
            {
                ChkGeneralOsxVisible.Dispose();
                ChkGeneralOsxVisible = null;
            }

            if (ChkGeneralStartLast != null)
            {
                ChkGeneralStartLast.Dispose();
                ChkGeneralStartLast = null;
            }

            if (ChkLockAllowDNS != null)
            {
                ChkLockAllowDNS.Dispose();
                ChkLockAllowDNS = null;
            }

            if (ChkLockAllowPing != null)
            {
                ChkLockAllowPing.Dispose();
                ChkLockAllowPing = null;
            }

            if (ChkLockAllowPrivate != null)
            {
                ChkLockAllowPrivate.Dispose();
                ChkLockAllowPrivate = null;
            }

            if (ChkLoggingEnabled != null)
            {
                ChkLoggingEnabled.Dispose();
                ChkLoggingEnabled = null;
            }

            if (ChkLogLevelDebug != null)
            {
                ChkLogLevelDebug.Dispose();
                ChkLogLevelDebug = null;
            }

            if (ChkNetLock != null)
            {
                ChkNetLock.Dispose();
                ChkNetLock = null;
            }

            if (ChkProtocolsAutomatic != null)
            {
                ChkProtocolsAutomatic.Dispose();
                ChkProtocolsAutomatic = null;
            }

            if (ChkRouteRemoveDefaultGateway != null)
            {
                ChkRouteRemoveDefaultGateway.Dispose();
                ChkRouteRemoveDefaultGateway = null;
            }

            if (ChkUiIEC != null)
            {
                ChkUiIEC.Dispose();
                ChkUiIEC = null;
            }

            if (ChkUiSystemBarShowInfo != null)
            {
                ChkUiSystemBarShowInfo.Dispose();
                ChkUiSystemBarShowInfo = null;
            }

            if (ChkUiSystemBarShowServer != null)
            {
                ChkUiSystemBarShowServer.Dispose();
                ChkUiSystemBarShowServer = null;
            }

            if (ChkUiSystemBarShowSpeed != null)
            {
                ChkUiSystemBarShowSpeed.Dispose();
                ChkUiSystemBarShowSpeed = null;
            }

            if (CmdAdvancedEventsClear != null)
            {
                CmdAdvancedEventsClear.Dispose();
                CmdAdvancedEventsClear = null;
            }

            if (CmdAdvancedEventsEdit != null)
            {
                CmdAdvancedEventsEdit.Dispose();
                CmdAdvancedEventsEdit = null;
            }

            if (CmdAdvancedHelp != null)
            {
                CmdAdvancedHelp.Dispose();
                CmdAdvancedHelp = null;
            }

            if (CmdAdvancedOpenVpnPath != null)
            {
                CmdAdvancedOpenVpnPath.Dispose();
                CmdAdvancedOpenVpnPath = null;
            }

            if (CmdCancel != null)
            {
                CmdCancel.Dispose();
                CmdCancel = null;
            }

            if (CmdDnsAdd != null)
            {
                CmdDnsAdd.Dispose();
                CmdDnsAdd = null;
            }

            if (CmdDnsEdit != null)
            {
                CmdDnsEdit.Dispose();
                CmdDnsEdit = null;
            }

            if (CmdDnsRemove != null)
            {
                CmdDnsRemove.Dispose();
                CmdDnsRemove = null;
            }

            if (CmdGeneralTos != null)
            {
                CmdGeneralTos.Dispose();
                CmdGeneralTos = null;
            }

            if (CmdLockHelp != null)
            {
                CmdLockHelp.Dispose();
                CmdLockHelp = null;
            }

            if (CmdLoggingOpen != null)
            {
                CmdLoggingOpen.Dispose();
                CmdLoggingOpen = null;
            }

            if (CmdOpenVpnDirectivesCustomPathBrowse != null)
            {
                CmdOpenVpnDirectivesCustomPathBrowse.Dispose();
                CmdOpenVpnDirectivesCustomPathBrowse = null;
            }

            if (CmdOpenVpnDirectivesHelp != null)
            {
                CmdOpenVpnDirectivesHelp.Dispose();
                CmdOpenVpnDirectivesHelp = null;
            }

            if (CmdProtocolsHelp1 != null)
            {
                CmdProtocolsHelp1.Dispose();
                CmdProtocolsHelp1 = null;
            }

            if (CmdProtocolsHelp2 != null)
            {
                CmdProtocolsHelp2.Dispose();
                CmdProtocolsHelp2 = null;
            }

            if (CmdProxyTorHelp != null)
            {
                CmdProxyTorHelp.Dispose();
                CmdProxyTorHelp = null;
            }

            if (CmdProxyTorTest != null)
            {
                CmdProxyTorTest.Dispose();
                CmdProxyTorTest = null;
            }

            if (CmdResetToDefault != null)
            {
                CmdResetToDefault.Dispose();
                CmdResetToDefault = null;
            }

            if (CmdRouteAdd != null)
            {
                CmdRouteAdd.Dispose();
                CmdRouteAdd = null;
            }

            if (CmdRouteEdit != null)
            {
                CmdRouteEdit.Dispose();
                CmdRouteEdit = null;
            }

            if (CmdRouteRemove != null)
            {
                CmdRouteRemove.Dispose();
                CmdRouteRemove = null;
            }

            if (CmdSave != null)
            {
                CmdSave.Dispose();
                CmdSave = null;
            }

            if (LblAdvancedProviders != null)
            {
                LblAdvancedProviders.Dispose();
                LblAdvancedProviders = null;
            }

            if (LblDnsServers != null)
            {
                LblDnsServers.Dispose();
                LblDnsServers = null;
            }

            if (LblLockRoutingOutWarning != null)
            {
                LblLockRoutingOutWarning.Dispose();
                LblLockRoutingOutWarning = null;
            }

            if (LblLoggingHelp != null)
            {
                LblLoggingHelp.Dispose();
                LblLoggingHelp = null;
            }

            if (LblOpenVpnRcvBuf != null)
            {
                LblOpenVpnRcvBuf.Dispose();
                LblOpenVpnRcvBuf = null;
            }

            if (LblOpenVpnSndBuf != null)
            {
                LblOpenVpnSndBuf.Dispose();
                LblOpenVpnSndBuf = null;
            }

            if (LblRoutesNetworkLockWarning != null)
            {
                LblRoutesNetworkLockWarning.Dispose();
                LblRoutesNetworkLockWarning = null;
            }

            if (TableAdvancedEvents != null)
            {
                TableAdvancedEvents.Dispose();
                TableAdvancedEvents = null;
            }

            if (TableDnsServers != null)
            {
                TableDnsServers.Dispose();
                TableDnsServers = null;
            }

            if (TableProtocols != null)
            {
                TableProtocols.Dispose();
                TableProtocols = null;
            }

            if (TableRoutes != null)
            {
                TableRoutes.Dispose();
                TableRoutes = null;
            }

            if (TableTabs != null)
            {
                TableTabs.Dispose();
                TableTabs = null;
            }

            if (TabMain != null)
            {
                TabMain.Dispose();
                TabMain = null;
            }

            if (TxtAdvancedOpenVpnDirectivesCustom != null)
            {
                TxtAdvancedOpenVpnDirectivesCustom.Dispose();
                TxtAdvancedOpenVpnDirectivesCustom = null;
            }

            if (TxtAdvancedOpenVpnDirectivesDefault != null)
            {
                TxtAdvancedOpenVpnDirectivesDefault.Dispose();
                TxtAdvancedOpenVpnDirectivesDefault = null;
            }

            if (TxtAdvancedOpenVpnPath != null)
            {
                TxtAdvancedOpenVpnPath.Dispose();
                TxtAdvancedOpenVpnPath = null;
            }

            if (TxtLockAllowedIPS != null)
            {
                TxtLockAllowedIPS.Dispose();
                TxtLockAllowedIPS = null;
            }

            if (TxtLoggingComputedPath != null)
            {
                TxtLoggingComputedPath.Dispose();
                TxtLoggingComputedPath = null;
            }

            if (TxtLoggingPath != null)
            {
                TxtLoggingPath.Dispose();
                TxtLoggingPath = null;
            }

            if (TxtOpenVpnDirectivesCustomPath != null)
            {
                TxtOpenVpnDirectivesCustomPath.Dispose();
                TxtOpenVpnDirectivesCustomPath = null;
            }

            if (TxtProxyHost != null)
            {
                TxtProxyHost.Dispose();
                TxtProxyHost = null;
            }

            if (TxtProxyLogin != null)
            {
                TxtProxyLogin.Dispose();
                TxtProxyLogin = null;
            }

            if (TxtProxyPassword != null)
            {
                TxtProxyPassword.Dispose();
                TxtProxyPassword = null;
            }

            if (TxtProxyPort != null)
            {
                TxtProxyPort.Dispose();
                TxtProxyPort = null;
            }

            if (TxtProxyTorControlPassword != null)
            {
                TxtProxyTorControlPassword.Dispose();
                TxtProxyTorControlPassword = null;
            }

            if (TxtProxyTorControlPort != null)
            {
                TxtProxyTorControlPort.Dispose();
                TxtProxyTorControlPort = null;
            }
        }
        public override void AwakeFromNib()
        {
            base.AwakeFromNib();

            Window.Title = Constants.Name + " - " + Messages.WindowsSettingsTitle;

            ChkConnect.Title = Messages.WindowsSettingsConnect;
            ChkNetLock.Title = Messages.WindowsSettingsNetLock;

            ChkNetLock.Activated += (object sender, EventArgs e) => {
                if (GuiUtils.GetCheck(ChkNetLock))
                {
                    if ((Engine.Instance as UI.Osx.Engine).MainWindow.NetworkLockKnowledge() == false)
                    {
                        GuiUtils.SetCheck(ChkNetLock, false);
                    }
                }
            };

            TableRoutes.Delegate = new TableRoutingDelegate(this);

            LblDnsServers.StringValue = Messages.WindowsSettingsDnsServers;
            TableDnsServers.Delegate  = new TableDnsServersDelegate(this);

            TableAdvancedEvents.Delegate = new TableAdvancedEventsDelegate(this);

            LblLoggingHelp.StringValue = Messages.WindowsSettingsLoggingHelp;

            TableRoutingController        = new TableRoutingController(this.TableRoutes);
            TableDnsServersController     = new TableDnsServersController(this.TableDnsServers);
            TableAdvancedEventsController = new TableAdvancedEventsController(this.TableAdvancedEvents);

            CmdSave.Activated += (object sender, EventArgs e) => {
                if (Check())
                {
                    SaveOptions();
                    Close();
                }
            };

            CmdCancel.Activated += (object sender, EventArgs e) => {
                Close();
            };

            CmdGeneralTos.Activated += (object sender, EventArgs e) => {
                WindowTosController tos = new WindowTosController();
                tos.Window.ReleasedWhenClosed = true;
                NSApplication.SharedApplication.RunModalForWindow(tos.Window);
                tos.Window.Close();
            };

            // Modes
            string sshStatus = (Software.SshVersion != "" ? "" : "Not available");

            if (sshStatus != "")
            {
                m_modeSshEnabled = false;
            }
            // TODO: disable ssh & ssl
            string sslStatus = (Software.SslVersion != "" ? "" : "Not available");

            if (sslStatus != "")
            {
                m_modeSslEnabled = false;
            }

            CmdModeHelp.Activated += (object sender, EventArgs e) => {
                Core.UI.Actions.OpenUrlDocsProtocols();
            };

            ChkModeAutomatic.Activated += (object sender, EventArgs e) => {
                m_mode_protocol  = "AUTO";
                m_mode_port      = 443;
                m_mode_alternate = 0;
                ChangeMode();
            };

            ChkModeUdp443.Activated += (object sender, EventArgs e) => {
                m_mode_protocol  = "UDP";
                m_mode_port      = 443;
                m_mode_alternate = 0;
                ChangeMode();
            };

            ChkModeTcp443.Activated += (object sender, EventArgs e) => {
                m_mode_protocol  = "TCP";
                m_mode_port      = 443;
                m_mode_alternate = 0;
                ChangeMode();
            };

            ChkModeUdp80.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "UDP";
                m_mode_port      = 80;
                m_mode_alternate = 0;
                ChangeMode();
            };

            ChkModeTcp80.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "TCP";
                m_mode_port      = 80;
                m_mode_alternate = 0;
                ChangeMode();
            };

            ChkModeUdp53.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "UDP";
                m_mode_port      = 53;
                m_mode_alternate = 0;
                ChangeMode();
            };

            ChkModeTcp53.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "TCP";
                m_mode_port      = 53;
                m_mode_alternate = 0;
                ChangeMode();
            };

            ChkModeUdp2018.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "UDP";
                m_mode_port      = 2018;
                m_mode_alternate = 0;
                ChangeMode();
            };

            ChkModeTcp2018.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "TCP";
                m_mode_port      = 2018;
                m_mode_alternate = 0;
                ChangeMode();
            };



            ChkModeUdp443Alt.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "UDP";
                m_mode_port      = 443;
                m_mode_alternate = 1;
                ChangeMode();
            };

            ChkModeUdp80Alt.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "UDP";
                m_mode_port      = 80;
                m_mode_alternate = 1;
                ChangeMode();
            };

            ChkModeUdp53Alt.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "UDP";
                m_mode_port      = 53;
                m_mode_alternate = 1;
                ChangeMode();
            };

            ChkModeUdp2018Alt.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "UDP";
                m_mode_port      = 2018;
                m_mode_alternate = 1;
                ChangeMode();
            };

            ChkModeTcp2018Alt.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "TCP";
                m_mode_port      = 2018;
                m_mode_alternate = 1;
                ChangeMode();
            };


            ChkModeSsh22.Activated += (object sender, EventArgs e) => {
                m_mode_protocol  = "SSH";
                m_mode_port      = 22;
                m_mode_alternate = 0;
                ChangeMode();
            };

            ChkModeSsh22Alt.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "SSH";
                m_mode_port      = 22;
                m_mode_alternate = 1;
                ChangeMode();
            };

            ChkModeSsh80.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "SSH";
                m_mode_port      = 80;
                m_mode_alternate = 1;
                ChangeMode();
            };

            ChkModeSsh53.Activated += (object sender, EventArgs e) =>
            {
                m_mode_protocol  = "SSH";
                m_mode_port      = 53;
                m_mode_alternate = 1;
                ChangeMode();
            };

            ChkModeSsl443.Activated += (object sender, EventArgs e) => {
                m_mode_protocol  = "SSL";
                m_mode_port      = 443;
                m_mode_alternate = 1;
                ChangeMode();
            };

            ChkModeTor.Activated += (object sender, EventArgs e) => {
                m_mode_protocol  = "TOR";
                m_mode_port      = 2018;
                m_mode_alternate = 0;
                ChangeMode();
            };

            CmdModeTorTest.Activated += (object sender, EventArgs e) => {
                string result = TorControl.Test(TxtModeTorHost.StringValue, Conversions.ToInt32(TxtModeTorControlPort.StringValue), TxtModeTorControlPassword.StringValue);
                GuiUtils.MessageBox(result);
            };

            // Proxy
            CboProxyType.Activated += (object sender, EventArgs e) => {
                EnableIde();
            };
            CboProxyAuthentication.Activated += (object sender, EventArgs e) => {
                EnableIde();
            };

            // Routes
            CboRoutesOtherwise.RemoveAllItems();
            CboRoutesOtherwise.AddItem(RouteDirectionToDescription("in"));
            CboRoutesOtherwise.AddItem(RouteDirectionToDescription("out"));
            CboRoutesOtherwise.Activated += (object sender, EventArgs e) => {
                EnableIde();
            };

            TableRoutes.DoubleClick += (object sender, EventArgs e) => {
                RouteEdit();
            };

            CmdRouteAdd.Activated += (object sender, EventArgs e) => {
                RouteAdd();
            };

            CmdRouteRemove.Activated += (object sender, EventArgs e) => {
                RouteRemove();
            };

            CmdRouteEdit.Activated += (object sender, EventArgs e) => {
                RouteEdit();
            };

            // Advanced - General

            CboIpV6.RemoveAllItems();
            CboIpV6.AddItem("None");
            CboIpV6.AddItem("Disable");

            CboAdvancedManifestRefresh.RemoveAllItems();
            CboAdvancedManifestRefresh.AddItem("Automatic");
            CboAdvancedManifestRefresh.AddItem("Never");
            CboAdvancedManifestRefresh.AddItem("Every minute");
            CboAdvancedManifestRefresh.AddItem("Every ten minute");
            CboAdvancedManifestRefresh.AddItem("Every one hour");

            LblOpenVpnRcvBuf.StringValue = Messages.WindowsSettingsOpenVpnRcvBuf + ":";
            LblOpenVpnSndBuf.StringValue = Messages.WindowsSettingsOpenVpnSndBuf + ":";
            CboOpenVpnRcvBuf.RemoveAllItems();
            CboOpenVpnRcvBuf.AddItem(Messages.WindowsSettingsOpenVpnDefault);
            CboOpenVpnRcvBuf.AddItem("8 KB");
            CboOpenVpnRcvBuf.AddItem("16 KB");
            CboOpenVpnRcvBuf.AddItem("32 KB");
            CboOpenVpnRcvBuf.AddItem("64 KB");
            CboOpenVpnRcvBuf.AddItem("128 KB");
            CboOpenVpnRcvBuf.AddItem("256 KB");
            CboOpenVpnRcvBuf.AddItem("512 KB");
            CboOpenVpnSndBuf.RemoveAllItems();
            CboOpenVpnSndBuf.AddItem(Messages.WindowsSettingsOpenVpnDefault);
            CboOpenVpnSndBuf.AddItem("8 KB");
            CboOpenVpnSndBuf.AddItem("16 KB");
            CboOpenVpnSndBuf.AddItem("32 KB");
            CboOpenVpnSndBuf.AddItem("64 KB");
            CboOpenVpnSndBuf.AddItem("128 KB");
            CboOpenVpnSndBuf.AddItem("256 KB");
            CboOpenVpnSndBuf.AddItem("512 KB");

            CmdAdvancedOpenVpnPath.Activated += (object sender, EventArgs e) => {
                GuiUtils.SelectFile(this.Window, TxtAdvancedOpenVpnPath);
            };

            CmdAdvancedHelp.Activated += (object sender, EventArgs e) => {
                Core.UI.Actions.OpenUrlDocsAdvanced();
            };

            // Advanced - DNS
            TableDnsServers.DoubleClick += (object sender, EventArgs e) =>
            {
                DnsServersEdit();
            };

            CmdDnsAdd.Activated += (object sender, EventArgs e) =>
            {
                DnsServersAdd();
            };

            CmdDnsRemove.Activated += (object sender, EventArgs e) =>
            {
                DnsServersRemove();
            };

            CmdDnsEdit.Activated += (object sender, EventArgs e) =>
            {
                DnsServersEdit();
            };

            // Advanced - Net Lock

            CmdLockHelp.Activated += (object sender, EventArgs e) => {
                Core.UI.Actions.OpenUrlDocsLock();
            };
            CboLockMode.RemoveAllItems();
            CboLockMode.AddItem("None");
            CboLockMode.AddItem("Automatic");
            foreach (NetworkLockPlugin lockPlugin in Engine.Instance.NetworkLockManager.Modes)
            {
                CboLockMode.AddItem(lockPlugin.GetName());
            }

            LblRoutesNetworkLockWarning.StringValue = Messages.WindowsSettingsRouteLockHelp;
            LblLockRoutingOutWarning.StringValue    = Messages.NetworkLockNotAvailableWithRouteOut;

            // Advanced - Logging

            TxtLoggingPath.Changed += (object sender, EventArgs e) => {
                RefreshLogPreview();
            };

            // Advanced - Events

            TableAdvancedEvents.DoubleClick += (object sender, EventArgs e) => {
                AdvancedEventEdit();
            };

            CmdAdvancedEventsEdit.Activated += (object sender, EventArgs e) => {
                AdvancedEventEdit();
            };

            CmdAdvancedEventsClear.Activated += (object sender, EventArgs e) => {
                AdvancedEventClear();
            };


            ReadOptions();

            EnableIde();

            RefreshLogPreview();
        }