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); }
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); } }); }
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; }
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))); }
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); }
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()); }); }
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")); }
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()); }
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); }
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("Розничная цена: редактирование запрещено поставщиком")); }
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(); }