using System; using System.Diagnostics; using System.Linq; using System.Windows; using System.Windows.Interop; using H.Formatters; using H.Pipes; using H.Pipes.Extensions; using InABox.Integration.Logikal; using Newtonsoft.Json; namespace PRSLogikal { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow { private LogikalServer _server; private LogikalListener _listener; private void Log(string msg) { Dispatcher.BeginInvoke(new Func(() => _Log.Text += $"{msg}\n")); } public MainWindow() { InitializeComponent(); } private void MainWindow_OnClosed(object sender, EventArgs e) { if (bClosing) { _listener.Stop(); _server.Disconnect(); } } private void _connect_OnClick(object sender, RoutedEventArgs e) { var _request = new LogikalConnectRequest(_path.Text ); var _response = _server.Connect(_request); Log($"Connect(): {_response}"); if (_response is LogikalConnectResponse) { _connect.IsEnabled = false; _path.IsEnabled = false; _disconnect.IsEnabled = true; _login.IsEnabled = true; _userid.IsEnabled = true; _password.IsEnabled = true; _logout.IsEnabled = false; _projects.IsEnabled = false; } } private void _login_OnClick(object sender, RoutedEventArgs e) { var _request = new LogikalLoginRequest(); var _response = _server.Login(_request); Log($"Login(): {_response}"); if (_response is LogikalLoginResponse) { _disconnect.IsEnabled = false; _login.IsEnabled = false; _userid.IsEnabled = false; _password.IsEnabled = false; _logout.IsEnabled = true; _projects.IsEnabled = true; } } private void _logout_OnClick(object sender, RoutedEventArgs e) { var _response = _server.Logout(); Log($"Logout(): {_response}"); if (_response is LogikalLoginResponse) { _disconnect.IsEnabled = true; _login.IsEnabled = true; _userid.IsEnabled = true; _password.IsEnabled = true; _logout.IsEnabled = false; _projects.IsEnabled = false; } } private void _disconnect_OnClick(object sender, RoutedEventArgs e) { var _response = _server.Disconnect(); Log($"Disconnect(): {_response}"); if (_response is LogikalDisconnectResponse) { _connect.IsEnabled = true; _path.IsEnabled = true; _disconnect.IsEnabled = false; _login.IsEnabled = false; _userid.IsEnabled = false; _password.IsEnabled = false; _projects.IsEnabled = false; } } private void _projects_OnClick(object sender, RoutedEventArgs e) { // var _request = new LogikalProjectsRequest(); // var _response = _server.GetProjects(_request); // Log($"GetProjects(): {_response}"); // if (_response is LogikalProjectsResponse _projects) // { // foreach (var _project in _projects.Projects) // { // Log(_project.Name); // } // } } private void Window_Loaded(object sender, RoutedEventArgs args) { _server = new LogikalServer(new WindowInteropHelper(this).Handle); _server.Log += (o, e) => Log(e.Message); _listener = new LogikalListener() { Server = _server }; _listener.Disconnecting += (o, e) => Dispatcher.Invoke(() => Close()); _listener.Log += (o, e) => Log(e.Message); _listener.Start(); Hide(); } private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { if (!bClosing) { Hide(); e.Cancel = true; } } private void ShowInterfaceClick(object sender, RoutedEventArgs e) { Show(); } private bool bClosing = false; private void DoExitClick(object sender, RoutedEventArgs e) { bClosing = true; Close(); } } }