Ejemplo n.º 1
0
        public IEnumerable <IResult> EditLegend(string name)
        {
            var styles = Env.Query(s => s.Query <CustomStyle>().ToArray()).Result;
            var style  = styles.FirstOrDefault(s => s.Name == name);

            if (style == null)
            {
                yield break;
            }
            var isDirty = false;

            style.PropertyChanged += (sender, args) => {
                isDirty = true;
            };
            foreach (var result in CustomStyle.Edit(style))
            {
                yield return(result);
            }
            if (!isDirty)
            {
                yield break;
            }
            Env.Query(s => s.Update(style)).LogResult();
            StyleHelper.BuildStyles(App.Current.Resources, styles);
            Bus.SendMessage(styles);
        }
Ejemplo n.º 2
0
        public void Style_fixture()
        {
            var offers = new List <Offer>();

            offers.Add(new Offer(new Price("тест"), 100)
            {
                IsGrouped        = true,
                BuyingMatrixType = BuyingMatrixStatus.Denied,
            });

            WpfTestHelper.WithWindow2(async w => {
                var resources = new ResourceDictionary();
                StyleHelper.Reset();
                StyleHelper.BuildStyles(resources);
                var grid = new DataGrid2();
                grid.AutoGenerateColumns = false;
                grid.Columns.Add(new DataGridTextColumn {
                    Binding = new Binding("ProductSynonym")
                });
                grid.Columns.Add(new DataGridTextColumn {
                    Binding = new Binding("OrderCount")
                });
                w.Content = grid;
                StyleHelper.ApplyStyles(typeof(Offer), grid, resources);
                grid.ItemsSource = offers;
                await w.WaitIdle();
                var cells = grid.Descendants <DataGridCell>().ToArray();
                Assert.That(cells.Length, Is.GreaterThan(0));
                foreach (var cell in cells)
                {
                    Assert.AreEqual("#FFFF0000", cell.Background.ToString(), ((TextBlock)cell.Content).Text);
                }
            });
        }
Ejemplo n.º 3
0
        public void InitShell()
        {
            try {
                if (Application != null)
                {
                    using (var session = NHibernate.Factory.OpenSession()) {
                        StyleHelper.BuildStyles(Application.Resources, session.Query <CustomStyle>());
                    }
                }
            }
            catch (Exception e) {
                log.Error("Не удалось инициализировать стили", e);
            }

            var count = 0;

repeat:
            try {
                count++;
                //если это попытка восстановления нужно очистить
                Shell?.Dispose();
                windowManager = (WindowManager)IoC.Get <IWindowManager>();
                Shell         = new ShellViewModel(Config);
                Deserialize();
                windowManager.ShowWindow(Shell, null, new Dictionary <string, object> {
                    { "WindowState", WindowState.Maximized }
                });

                if (Application != null)
                {
                    //если это повторный запуск то мы можем потерять окно
                    //в этом случае нужно найти потерянные окна и закрыть их
                    //что бы избежать ситуации когда главное окно закрылось а приложение не завершилось
                    //тк windows считает что у него еще есть активные окна
                    //
                    //мы не можем выполнять очистку вместе с очисткой предыдущего главного экрана
                    //тк если мы это сделаем windows попытается завершить процесс тк у него не будет больше окон
                    var lostWindows = Application.Windows.OfType <Window>()
                                      .Where(x => x.DataContext is ShellViewModel && ((ShellViewModel)x.DataContext) != Shell);
                    foreach (var window in lostWindows)
                    {
                        window.Close();
                    }
                }
            }
            catch (Exception e) {
                log.Error("Ошибка при запуске приложения", e);
                if (count > 1 || !RepairDb.TryToRepair(e, Config))
                {
                    throw;
                }
                goto repeat;
            }
            IsInitialized = true;
        }
Ejemplo n.º 4
0
        public void Include_in_legend_only_posible_styles()
        {
            StyleHelper.BuildStyles(appResource);
            var grid = new DataGrid();

            grid.Columns.Add(new DataGridTextColumn {
                Binding = new Binding("Period")
            });
            Build(typeof(Offer));
            Assert.AreEqual("Подсказка\r\nЖизненно важные препараты\r\nПрепарат запрещен к заказу\r\nУцененные препараты", Legend(grid, typeof(Offer)));
        }
Ejemplo n.º 5
0
        public void RegisterResources()
        {
            resources = Resources.MergedDictionaries[1];
            baseStyle = (Style)Resources[typeof(DataGridCell)];
            var style = new Style(typeof(DataGridCell), baseStyle);

            style.Setters.Add(new Setter(Control.BackgroundProperty,
                                         new SolidColorBrush(Color.FromRgb(0xEE, 0xF8, 0xFF))));
            resources.Add("CountColumn", style);
            resources.Add("VitallyImportant", BaseStyle());
            StyleHelper.BuildStyles(Resources);
        }
Ejemplo n.º 6
0
        public void Edit_style()
        {
            session.DeleteEach <Order>();
            MakeOrder();
            var junkOrder = MakeOrder(session.Query <Offer>().First(o => o.Junk));

            StartWait();
            dispatcher.Invoke(() => {
                session.DeleteEach <CustomStyle>();
                var styles = StyleHelper.GetDefaultStyles();
                session.SaveEach(styles);
                StyleHelper.BuildStyles(App.Current.Resources, styles);
            });

            Click("ShowOrderLines");
            dispatcher.BeginInvoke(new Action(() => {
                var el = activeWindow.Descendants <Panel>().Where(p => p.Name == "Legend")
                         .SelectMany(p => p.Descendants <Label>())
                         .First(i => i.Name == "JunkLegendItem");
                DoubleClick(el);
            }));
            var dialog = manager.OsDialog.OfType <ColorDialog>().Timeout(2.Second())
                         .Take(1)
                         .Do(d => {
                d.Color = System.Drawing.Color.MistyRose;
            })
                         .First();

            Assert.IsNotNull(dialog);
            WaitIdle();
            dispatcher.Invoke(() => scheduler.Start());
            WaitIdle();

            dispatcher.Invoke(() => {
                var el = activeWindow.Descendants <Panel>().Where(p => p.Name == "Legend")
                         .SelectMany(p => p.Descendants <Label>())
                         .First(i => i.Name == "JunkLegendItem");
                Assert.AreEqual(System.Drawing.Color.MistyRose.ToHexString(), el.Background.ToString());

                var grid = activeWindow.Descendants <DataGrid>().First(g => g.Name == "Lines");
                //нужно убедиться что строку которую проверяем не выделена иначе цвета не совпадут из-за смешения
                grid.SelectedItem = grid.ItemsSource.OfType <OrderLine>().First(l => l.Id != junkOrder.Lines[0].Id);
                var cells         = grid.Descendants <DataGridCell>()
                                    .Where(c => ((OrderLine)c.DataContext).Id == junkOrder.Lines[0].Id)
                                    .Where(c => ((TextBlock)c.Column.Header).Text == "Срок годн.")
                                    .ToArray();
                Assert.AreEqual(1, cells.Length);
                Assert.AreEqual(System.Drawing.Color.MistyRose.ToHexString(), cells[0].Background.ToString());
            });
        }
Ejemplo n.º 7
0
        public void Check_context_on_build_legend()
        {
            StyleHelper.BuildStyles(appResource);
            var grid = new DataGrid();

            grid.Columns.Add(new DataGridTextColumn {
                Binding = new Binding("Sum")
            });
            Build(typeof(Order));

            Assert.AreEqual("Подсказка\r\n\"Загружен\"\r\n\"Заморожен\"", Legend(grid, typeof(Order)));
            Assert.AreEqual("Подсказка\r\n\"Загружен\"\r\n\"Заморожен\"" +
                            "\r\nИмеется позиция с корректировкой по цене и/или по количеству", Legend(grid, typeof(Order), "CorrectionEnabled"));
        }
Ejemplo n.º 8
0
        public void User_style_foreground()
        {
            var userStyles = new[] {
                new CustomStyle {
                    Foreground = "Red",
                    Name       = "VitallyImportant"
                }
            };

            StyleHelper.BuildStyles(appResource, userStyles);
            var style      = (Style)appResource["OfferRow"];
            var foreground = Foreground(style);

            Assert.AreEqual(Colors.Red, ((SolidColorBrush)foreground.Value).Color);
            appResource.Values.OfType <Style>().Each(s => s.Seal());
        }
Ejemplo n.º 9
0
        public void Rebuild_styles()
        {
            StyleHelper.Reset();

            var catalog = session.Query <Catalog>().First(c => c.HaveOffers);
            var model   = new CatalogOfferViewModel(catalog);
            var view    = Bind(model);

            StyleHelper.BuildStyles(App.Current.Resources, new[] { new CustomStyle("Junk", "Red") });
            bus.SendMessage(settings);
            scheduler.AdvanceByMs(1000);

            var legend = view.Descendants().OfType <Panel>().First(p => p.Name == "Legend");
            var label  = legend.Descendants <Label>()
                         .First(l => l.Style != null && l.Style.Setters.OfType <Setter>().Any(s => s.Property == ContentControl.ContentProperty && Equals(s.Value, "Уцененные препараты")));
            var setter = label.Style.Setters.OfType <Setter>().First(s => s.Property == Control.BackgroundProperty);

            Assert.AreEqual(Colors.Red, ((SolidColorBrush)setter.Value).Color);
        }
Ejemplo n.º 10
0
        public void Legend_for_waybillLine()
        {
            var styles = StyleHelper.GetDefaultStyles();
            var style  = styles.First(s => s.Name == "IsRetailCostFixed");

            Assert.IsTrue(style.IsBackground);
            Assert.AreEqual("#FFFA9BFA", style.Background);
            Assert.AreEqual("Black", style.Foreground);

            StyleHelper.BuildStyles(appResource);
            var grid = new DataGrid();

            grid.Columns.Add(new DataGridTextColumn
            {
                Binding = new Binding("RetailCost")
            });
            Build(typeof(WaybillLine));
            var legend = Legend(grid, typeof(WaybillLine));

            Assert.That(legend, Does.Contain("Розничная цена: редактирование запрещено поставщиком"));
        }
Ejemplo n.º 11
0
 private void Build(Type type)
 {
     StyleHelper.BuildStyles(resource, appResource, type, Colors.White, Colors.Black);
 }
        public IEnumerable <IResult> Save()
        {
            UpdateMarkups();
            UpdatePriceTags();
            var error = Settings.Value.Validate(validateMarkups: HaveAddresses);

            if (error?.Count > 0)
            {
                if (Session != null)
                {
                    Session.FlushMode = FlushMode.Never;
                }
                GoToErrorTab(error.First()[0]);
                yield return(MessageResult.Warn(error.First()[1]));

                yield break;
            }

            if (passwordUpdated)
            {
                Settings.Value.Password = password;
            }
            if (diadokPasswordUpdated)
            {
                Settings.Value.DiadokPassword = diadokPassword;
            }
            if (sbisPasswordUpdated)
            {
                Settings.Value.SbisPassword = sbisPassword;
            }

            if (App.Current != null)
            {
                StyleHelper.BuildStyles(App.Current.Resources, Styles);
            }

            if (Session != null)
            {
                IsCredentialsChanged = Session.IsChanged(Settings.Value, s => s.Password) ||
                                       Session.IsChanged(Settings.Value, s => s.UserName);
                if (Session.IsChanged(Settings.Value, s => s.GroupWaybillsBySupplier) &&
                    Settings.Value.GroupWaybillsBySupplier)
                {
                    foreach (var dirMap in DirMaps)
                    {
                        try {
                            Directory.CreateDirectory(dirMap.Dir);
                        }
                        catch (Exception e) {
                            Log.Error($"Не удалось создать директорию {dirMap.Dir}", e);
                        }
                    }
                }

                if (Session.IsChanged(Settings.Value, x => x.JunkPeriod))
                {
                    yield return(new Models.Results.TaskResult(Query(s => DbMaintain.CalcJunk(s, Settings.Value))));
                }

                Session.FlushMode = FlushMode.Auto;
                Settings.Value.ApplyChanges(Session);
                SynchronizeSpecialMarkUps();
            }
            TryClose();
        }