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 = "";
     }
 }