internal void LoadExtensionPopupFromFolder(string folderPath) { if (!Path.IsPathRooted(folderPath)) { folderPath = Path.Combine(CustomPictureBox.AssetsDir, folderPath); } if (!Directory.Exists(folderPath)) { return; } try { string path = Path.Combine(folderPath, "extensionPopup.json"); if (!File.Exists(path)) { return; } ExtensionPopupControl.ExtensionPopupContext context = ExtensionPopupControl.ExtensionPopupContext.ReadJson(JObject.Parse(File.ReadAllText(path))); this.slideShow.ImagesFolderPath = folderPath; this.ApplyContext(context); } catch (Exception ex) { Logger.Error("Error while trying to read extensionpopup.json from " + folderPath + "." + ex.ToString()); } }
public static ExtensionPopupControl.ExtensionPopupContext ReadJson( JObject input) { ExtensionPopupControl.ExtensionPopupContext extensionPopupContext = input.ToObject <ExtensionPopupControl.ExtensionPopupContext>(); extensionPopupContext.features = input["features"].ToIenumerableString(); extensionPopupContext.ExtensionDetails = input["ExtensionDetails"].ToStringStringEnumerableKvp(); return(extensionPopupContext); }
private void ApplyContext( ExtensionPopupControl.ExtensionPopupContext context) { BlueStacksUIBinding.Bind(this.mTitle, context.Title); BlueStacksUIBinding.Bind(this.mSubTitle, context.SubTitle); BlueStacksUIBinding.Bind(this.mTagLine, context.TagLine, ""); BlueStacksUIBinding.Bind(this.mDescription, context.Description, ""); if (context.features != null && context.features.Any <string>()) { BlueStacksUIBinding.Bind(this.mFeaturesText, context.FeaturesText, ""); foreach (string feature in context.features) { TextBlock tb = new TextBlock() { FontSize = 13.0 }; BlueStacksUIBinding.BindColor((DependencyObject)tb, Control.ForegroundProperty, "SettingsWindowTabMenuItemForeground"); tb.Margin = new Thickness(7.0, 0.0, 0.0, 5.0); tb.TextWrapping = TextWrapping.Wrap; BlueStacksUIBinding.Bind(tb, feature, ""); TextBlock textBlock = new TextBlock() { Text = "•" }; BlueStacksUIBinding.BindColor((DependencyObject)textBlock, Control.ForegroundProperty, "SettingsWindowTabMenuItemForeground"); textBlock.FontSize = 13.0; textBlock.FontWeight = FontWeights.Bold; textBlock.Margin = new Thickness(0.0, 0.0, 0.0, 5.0); BulletDecorator bulletDecorator = new BulletDecorator(); bulletDecorator.Bullet = (UIElement)textBlock; bulletDecorator.Child = (UIElement)tb; this.mFeaturesStack.Children.Add((UIElement)bulletDecorator); } } else { this.mFeaturesText.Text = ""; } if (context.ExtensionDetails != null && context.ExtensionDetails.Any <KeyValuePair <string, string> >()) { BlueStacksUIBinding.Bind(this.mDetailsText, context.ExtensionDetailText, ""); foreach (KeyValuePair <string, string> extensionDetail in context.ExtensionDetails) { Grid grid = new Grid(); grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1.0, GridUnitType.Star) }); grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1.6, GridUnitType.Star) }); TextBlock tb1 = new TextBlock() { FontSize = 13.0 }; BlueStacksUIBinding.BindColor((DependencyObject)tb1, Control.ForegroundProperty, "SettingsWindowTabMenuItemForeground"); tb1.Margin = new Thickness(0.0, 0.0, 0.0, 5.0); tb1.TextWrapping = TextWrapping.Wrap; BlueStacksUIBinding.Bind(tb1, extensionDetail.Key, ""); grid.Children.Add((UIElement)tb1); Grid.SetColumn((UIElement)tb1, 0); TextBlock tb2 = new TextBlock() { FontSize = 13.0 }; BlueStacksUIBinding.BindColor((DependencyObject)tb2, Control.ForegroundProperty, "SettingsWindowTabMenuItemForeground"); tb2.Margin = new Thickness(7.0, 0.0, 0.0, 5.0); tb2.TextWrapping = TextWrapping.Wrap; BlueStacksUIBinding.Bind(tb2, extensionDetail.Value, ""); grid.Children.Add((UIElement)tb2); Grid.SetColumn((UIElement)tb2, 1); this.mDetailsStack.Children.Add((UIElement)grid); } } else { this.mDetailsText.Text = ""; } }