private void btAddPlugin_Click(object sender, RoutedEventArgs e) { var dialog = new System.Windows.Forms.OpenFileDialog(); dialog.Filter = string.Format("Lazurite plugin file (*{0})|*{0}", PluginsManager.PluginFileExtension); dialog.Multiselect = false; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var canAddPluginResult = _manager.CanAddPlugin(dialog.FileName); if (!canAddPluginResult.CanAdd) { _warningHandler.WarnFormat("Невозможно добавить плагин \r\n[{0}];\r\nПричина: {1}", dialog.FileName, canAddPluginResult.Message); } else { try { _manager.AddPlugin(dialog.FileName); MessageView.ShowMessage("Плагин добавлен!", "Добавление плагина", Icons.Icon.Check, Window.GetWindow(this).Content as Panel); Refresh(); } catch (Exception exception) { _warningHandler.ErrorFormat(exception, "Невозможно добавить плагин \r\n[{0}]", dialog.FileName); } } } }
private void ItemView_Click(object sender, RoutedEventArgs e) { var data = GeolocationData.FromString(((ScenarioModel)DataContext).ScenarioValue); if (data.IsEmpty) { MessageView.ShowMessage( "Данные о геокоординатах пусты...", "Невозможно открыть геокоординаты", Icons.Icon.MapGps); } else { // Open through yandex maps var browserUrl = @"https://yandex.ru/maps/?mode=whatshere&whatshere%5Bpoint%5D={0}%2C{1}&whatshere%5Bzoom%5D=13"; var lat = data.Latitude.ToString().Replace(",", "."); var lng = data.Longtitude.ToString().Replace(",", "."); var url = string.Format(browserUrl, lng, lat); try { Process.Start(url); } catch { Process.Start("IEXPLORE.EXE", url); //crutch } } }
private void btRemovePlugin_Click(object sender, RoutedEventArgs e) { MessageView.ShowYesNo("Вы уверены что хотите удалить плагин [" + SelectedPlugin.Name + "]?", "Удаленеи плагина", Icons.Icon.Delete, (result) => { if (result) { var canRemoveResult = _manager.CanRemovePlugin(SelectedPlugin.Name); if (!canRemoveResult.CanRemove) { MessageView.ShowMessage(string.Format("Невозможно удалить плагин \r\n[{0}];\r\nПричина: {1}", SelectedPlugin.Name, canRemoveResult.Message), "Внимание!", Icon.Warning); } else { try { _manager.RemovePlugin(SelectedPlugin.Name); Refresh(); MessageView.ShowMessage("Плагин удален. Повторно добавить этот плагин можно будет при следующем запуске программы.", "Удаление плагина", Icon.Warning); } catch (Exception exception) { _warningHandler.WarnFormat(exception, "Невозможно удалить плагин \r\n[{0}]", SelectedPlugin.Name); } } } }); }
public void BeginEditAction() { try { ActionControlResolver.UserInitialize( (result) => { if (result) { Model.Refresh(ActionHolder); Modified?.Invoke(this); if (MasterAction != null && MasterAction.ValueType.GetType() != ActionHolder.Action.ValueType.GetType()) { MessageView.ShowMessage( "Тип действия не совпадает с типом главного действия. Нужно настроить подчиненное действие еще раз.", "Внимание!", Icons.Icon.WarningCircle, null, () => BeginEditAction() ); } } }, ActionHolder.Action, MasterAction?.ValueType, MasterAction != null, MasterAction); } catch (Exception e) { Log.Error("Ошибка во время настройки действия", e); } }
private void ProgressAction(string text, Action <Action <bool> > action, bool needRefresh = false, bool cancel = true) { BlockUI?.Invoke(true); var messageView = new MessageView(); messageView.HeaderText = "Выполнение операции"; messageView.ContentText = text; messageView.Icon = Icon.Hourglass; if (cancel) { messageView.SetItems(new[] { new MessageItemInfo("Отмена", (m) => _manager.CancelOperation(_selectedController), Icon.Cancel) }); } messageView.StartAnimateProgress(); var callback = new Action <bool>((success) => { this.Dispatcher.BeginInvoke(new Action(() => { BlockUI?.Invoke(false); messageView.StopAnimateProgress(); if (!success) { messageView.Icon = Icon.Cancel; messageView.ContentText = "Операция не выполнена."; } else { messageView.Icon = Icon.Check; messageView.ContentText = "Операция выполнена успешно!"; if (needRefresh) { UpdateControllers(); } } messageView.SetItems(new[] { new MessageItemInfo("OK", (m) => messageView.Close()) }); })); }); messageView.Show(mainGrid); try { action?.Invoke(callback); } catch (Exception e) { MessageView.ShowMessage(e.Message, "Ошибка!", Icon.Bug, mainGrid); } }
public void BeginSelectAction() { ActionInstanceSide actionInstanceSide; if (AlgorithmContext is SingleActionScenario) { actionInstanceSide = ActionInstanceSide.Both; } else if (MasterAction == null) { actionInstanceSide = ActionInstanceSide.OnlyLeft; } else { actionInstanceSide = ActionInstanceSide.OnlyRight; } SelectActionView.Show( (type) => { var newAction = Singleton.Resolve <PluginsManager>().CreateInstance(type, AlgorithmContext); if (newAction != null) { ActionControlResolver.UserInitialize( (result) => { if (result) { ActionHolder.Action = newAction; Model.Refresh(ActionHolder); Modified?.Invoke(this); if (MasterAction != null && !MasterAction.ValueType.IsCompatibleWith(newAction.ValueType)) { MessageView.ShowMessage( "Тип действия не совпадает с типом действия главного действия. Нужно настроить подчиненное действие еще раз.", "Внимание!", Icons.Icon.WarningCircle); } } }, newAction, MasterAction?.ValueType, true, MasterAction); } }, MasterAction?.ValueType.GetType(), actionInstanceSide, ActionHolder?.Action.GetType()); }
public void BeginSelectAction() { SelectActionView.Show( (type) => { try { var newAction = Singleton.Resolve <PluginsManager>().CreateInstance(type, AlgorithmContext); if (newAction != null) { ActionControlResolver.UserInitialize( (result) => { if (result) { ActionHolder.Action = newAction; Model.Refresh(ActionHolder); Modified?.Invoke(this); } }, newAction, MasterAction?.ValueType, true, MasterAction); if (MasterAction != null && MasterAction.ValueType.GetType() != newAction.ValueType.GetType()) { MessageView.ShowMessage( "Тип действия не совпадает с типом действия главного действия. Нужно настроить подчиненное действие еще раз.", "Внимание!", Icons.Icon.WarningCircle, null, () => { BeginSelectAction(); }); } } } catch (Exception e) { Log.Error("Ошибка во время настройки действия", e); } }, MasterAction?.ValueType.GetType(), ActionInstanceSide.OnlyRight, ActionHolder?.Action.GetType()); }
public static void Show(Action <UserBase[]> callback, string[] selectedUsersIds, bool hideButtons = false) { if (!Repository.Users.Any()) { MessageView.ShowMessage("Пользователи не созданы!", "Выбор пользователей", Icons.Icon.Warning); } else { var control = new UsersSelectView(selectedUsersIds, hideButtons); var dialogView = new DialogView(control); dialogView.Caption = "Выберите пользователей"; control.ApplyClicked += () => { callback?.Invoke(control.SelectedUsers); dialogView.Close(); }; dialogView.Show(); } }
public static void Set(string message, WarnType type, Exception e = null, bool showAnyway = false) { JournalView.Set(message, type); if (type <= MaxShowingWarnType || showAnyway) { JournalLightWindow.Show(message, type); } if (type == WarnType.Fatal) { Application.Current.Dispatcher.BeginInvoke(new Action(() => { var mainWindow = Application.Current.Windows.Cast <Window>().FirstOrDefault(x => x is MainWindow); if (mainWindow != null) { MessageView.ShowMessage(message + "\r\n" + e?.Message, "Критическая ошибка!", Icons.Icon.Close, mainWindow.Content as Panel, () => Application.Current.Shutdown(1)); } })); } }
private void updatePlugin_Click(object sender, RoutedEventArgs e) { var dialog = new System.Windows.Forms.OpenFileDialog(); dialog.Filter = string.Format("Lazurite plugin file (*{0})|*{0}", PluginsManager.PluginFileExtension); dialog.Multiselect = false; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { _manager.UpdatePlugin(dialog.FileName); MessageView.ShowMessage("Плагин обновлен! Изменения вступят в силу после перезапуска приложения.", "Обновление плагина", Icons.Icon.Check, Window.GetWindow(this).Content as Panel); Refresh(); } catch (Exception exception) { _warningHandler.ErrorFormat(exception, "Невозможно обновить плагин \r\n[{0}]", dialog.FileName); } } }
private void btDeleteScenario_Click(object sender, RoutedEventArgs e) { MessageView.ShowYesNo("Вы уверены что хотите удалить выбранный триггер?", "Удаление триггера", Icon.ListDelete, (result) => { if (result) { var trigger = triggersListView.SelectedTrigger; try { _repository.RemoveTrigger(trigger); _lastDeletedTrigger = trigger; triggersListView.Remove(trigger); } catch (Exception exception) { MessageView.ShowMessage(exception.Message, "Невозможно удалить триггер", Icon.Warning); _warningHandler.Warn("Невозможно удалить триггер", exception); } } } ); }
private void btDeleteScenario_Click(object sender, RoutedEventArgs e) { MessageView.ShowYesNo("Вы уверены что хотите удалить выбранный сценарий?", "Удаление сценария", Icon.ListDelete, (result) => { if (result) { var scenario = switchesGrid.SelectedModel.Scenario; try { _repository.RemoveScenario(scenario); _lastDeletedScenario = scenario; switchesGrid.Remove(scenario); } catch (Exception exception) { MessageView.ShowMessage(exception.Message, "Невозможно удалить сценарий", Icon.Warning); _warningHandler.Warn("Невозможно удалить сценарий", exception); } } } ); }
public void RefreshWith(ZWaveManager manager, Node node = null, byte paramId = 0) { _manager = manager; SelectedNode = node; if (_manager.State == ZWaveManagerState.None) { _manager.Initialize(); } if (_manager.State == ZWaveManagerState.Initializing) { var token = MessageView.ShowLoad("Инициализация контроллеров...", gridExternalContent); _manager.ManagerInitializedCallbacksPool.Add(new ManagerInitializedCallback() { RemoveAfterInvoke = true, Callback = (s, args) => { token.Cancel(); if (args.Successful) { Refresh(); } else { MessageView.ShowMessage("Ошибка инициализации контроллеров.", "Ошибка", LazuriteUI.Icons.Icon.Cancel); } } }); } if (_manager.State == ZWaveManagerState.Initialized) { Refresh(); } if (!_manager.GetControllers().Any()) { ControllersManagerView.Show(_manager, gridExternalContent, Refresh); } tbId.Text = paramId.ToString(); }
public void RefreshWith(ZWaveManager manager, NodeValue selectedValue = null, Func <NodeValue, bool> comparability = null) { _manager = manager; _comparability = comparability; SelectedNodeValue = selectedValue; if (_manager.State == ZWaveManagerState.None) { _manager.Initialize(); } if (_manager.State == ZWaveManagerState.Initializing) { var token = MessageView.ShowLoad("Инициализация контроллеров...", this.gridExternalContent); _manager.ManagerInitializedCallbacksPool.Add(new ManagerInitializedCallback() { RemoveAfterInvoke = true, Callback = (s, args) => { token.Cancel(); if (args.Successful) { Refresh(); } else { MessageView.ShowMessage("Ошибка инициализации контроллеров.", "Ошибка", LazuriteUI.Icons.Icon.Cancel); } } }); } if (_manager.State == ZWaveManagerState.Initialized) { Refresh(); } if (!_manager.GetControllers().Any()) { ControllersManagerView.Show(_manager, this.gridExternalContent, Refresh); } }
public void BeginEditAction() { ActionControlResolver.UserInitialize( (result) => { if (result) { Model.Refresh(ActionHolder); Modified?.Invoke(this); if (MasterAction != null && !MasterAction.ValueType.IsCompatibleWith(ActionHolder.Action.ValueType)) { MessageView.ShowMessage( "Тип действия не совпадает с типом главного действия. Нужно настроить подчиненное действие еще раз.", "Внимание!", Icons.Icon.WarningCircle, null, () => BeginEditAction() ); } } }, ActionHolder.Action, MasterAction?.ValueType, MasterAction != null, MasterAction); }
public RemoteScenarioView(RemoteScenario scenario) { InitializeComponent(); Refresh(scenario); tbPort.Validation = (v) => EntryViewValidation.UShortValidation().Invoke(v); tbServiceName.TextChanged += (o, e) => ApplyCurrent(); tbSecretCode.PasswordChanged += (o, e) => ApplyCurrent(); tbPort.TextChanged += (o, e) => ApplyCurrent(); tbPassword.PasswordChanged += (o, e) => ApplyCurrent(); tbLogin.TextChanged += (o, e) => ApplyCurrent(); tbHost.TextChanged += (o, e) => ApplyCurrent(); btExitingCredentials.Click += (o, e) => { var credentialsSelect = new ExistingConnectionSelect(ClientFactory.ConnectionCredentials); var dialog = new DialogView(credentialsSelect); credentialsSelect.SelectedCredentialsChanged += (o1, args) => { tbHost.Text = args.Value.Host; tbLogin.Text = args.Value.Login; tbPassword.Password = args.Value.Password; tbPort.Text = args.Value.Port.ToString(); tbSecretCode.Password = args.Value.SecretKey; tbServiceName.Text = args.Value.ServiceName; Modified?.Invoke(); dialog.Close(); }; dialog.Show(); }; btScenariosList.Click += (o, e) => { try { var remoteScenarios = _scenario.GetServer().GetScenariosInfo().Decrypt(_scenario.Credentials.SecretKey).ToArray(); if (!remoteScenarios.Any()) { throw new Exception("На удаленном сервере отсутсвуют сценарии."); } var selectScenarioControl = new RemoteScenarioSelect(remoteScenarios, _scenario.RemoteScenarioId); var dialog = new DialogView(selectScenarioControl); selectScenarioControl.ScenarioInfoSelected += (info) => { dialog.Close(); _scenario.RemoteScenarioId = info.ScenarioId; _scenario.RemoteScenarioName = info.Name; tbScenario.Text = _scenario.RemoteScenarioName; var loadWindowCloseToken = MessageView.ShowLoad("Соединение с удаленным сервером..."); _scenario.InitializeAsync((result) => { loadWindowCloseToken.Cancel(); Dispatcher.BeginInvoke(new Action(() => { if (result) { Modified?.Invoke(); Succeed?.Invoke(); } else { WarningHandler.Error("Невозможно получить список сценариев."); Failed?.Invoke(); } })); }); }; dialog.Show(); } catch (Exception exception) { WarningHandler.Error("Невозможно получить список сценариев.", exception); Failed?.Invoke(); } }; btTest.Click += (o, e) => { var loadWindowCloseToken = MessageView.ShowLoad("Соединение с удаленным сервером..."); _scenario.InitializeAsync((result) => { loadWindowCloseToken.Cancel(); if (result) { MessageView.ShowMessage("Соединение успешно!", "Тест удаленного сценария", Icons.Icon.Check); Dispatcher.BeginInvoke(new Action(() => Succeed?.Invoke())); } else { MessageView.ShowMessage("Невозможно активировать удаленный сценарий!", "Тест удаленного сценария", Icons.Icon.Cancel); Dispatcher.BeginInvoke(new Action(() => Failed?.Invoke())); } }); }; }
public void Run() { Settings settings = new Settings(); FieldFiller filler = new FieldFiller(); WinChecker winChecker = new WinChecker(); SettingsView settingsView = new SettingsView(); KeySwitcher switcher = new KeySwitcher(); while (true) { settingsView.GetSettings(settings); IField field = new Field(); Console.SetWindowSize(settings.FieldSize * 3, settings.FieldSize * 3 + 5); filler.Randomize(settings, field); FieldPrinter printer = new FieldPrinter(settings, field); CellPrinter cellPrinter = new CellPrinter(settings, field); OpenChecker checker = new OpenChecker(settings); MessageView message = new MessageView(settings); FieldNavigator navigator = new FieldNavigator(settings); IKeyReader keyReader = switcher.SwitchKeyboard(settings); bool gameRun = true; while (gameRun) { //printer.Print(); Control action = navigator.Navigate(keyReader, field, cellPrinter); if (action == Control.Exit) { if (message.ShowMessage(settings.ExitMsg, settings.YesNoMsg)) { return; } } else if (action == Control.Open) { bool result = checker.Check(field, field.FieldCells[field.ActiveIndex]); if (result) //Boom! { printer.Print(); if (message.ShowMessage(settings.LooseMsg, settings.ExitNewMsg)) { return; } else { gameRun = false; } } if (winChecker.Check(field)) //Win! { printer.Print(); if (message.ShowMessage(settings.WinMsg, settings.ExitNewMsg)) { return; } else { gameRun = false; } } } else if (action == Control.Flag) { if (winChecker.Check(field)) //Win! { printer.Print(); if (message.ShowMessage(settings.WinMsg, settings.ExitNewMsg)) { return; } else { gameRun = false; } } } } } }