Пример #1
0
        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
                }
            }
        }
Пример #3
0
 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);
                 }
             }
         }
     });
 }
Пример #4
0
 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);
            }
        }
Пример #6
0
        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());
        }
Пример #7
0
 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());
 }
Пример #8
0
 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();
     }
 }
Пример #9
0
 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));
             }
         }));
     }
 }
Пример #10
0
        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();
        }
Пример #14
0
 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);
     }
 }
Пример #15
0
 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);
 }
Пример #16
0
        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()));
                    }
                });
            };
        }
Пример #17
0
        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;
                            }
                        }
                    }
                }
            }
        }