E:\Devel\PlayniteDiagTool\PlayniteDiagTool\bin\Debug\temp\PlayniteSDK\IDialogsFactory.cs e:\Devel\Playnite\source\PlayniteSDK\IDialogsFactory.cs
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Threading; using System.Windows.Threading;
   
namespace Playnite.SDK namespace Playnite.SDK
{ {
   /// <summary>    /// <summary>
   /// Represents message box response options.    /// Represents message box response options.
   /// </summary>    /// </summary>
   public class MessageBoxOption    public class MessageBoxOption
   {    {
       /// <summary>        /// <summary>
       /// Gets or sets title of response option.        /// Gets or sets title of response option.
       /// </summary>        /// </summary>
       public string Title { get; set; }        public string Title { get; set; }
   
       /// <summary>        /// <summary>
       /// Gets or sets value indicating whether this is default option.        /// Gets or sets value indicating whether this is default option.
       /// </summary>        /// </summary>
       public bool IsDefault { get; set; }        public bool IsDefault { get; set; }
   
       /// <summary>        /// <summary>
       /// Gets or sets value indicating whether this is option to cancel the request.        /// Gets or sets value indicating whether this is option to cancel the request.
       /// </summary>        /// </summary>
       public bool IsCancel { get; set; }        public bool IsCancel { get; set; }
   
       /// <summary>        /// <summary>
       /// Creates new instance of <see cref="MessageBoxOption"/>.        /// Creates new instance of <see cref="MessageBoxOption"/>.
       /// </summary>        /// </summary>
       /// <param name="title"></param>        /// <param name="title"></param>
       /// <param name="isDefault"></param>        /// <param name="isDefault"></param>
       /// <param name="isCancel"></param>        /// <param name="isCancel"></param>
       public MessageBoxOption(string title, bool isDefault = false, bool isCancel = false)        public MessageBoxOption(string title, bool isDefault = false, bool isCancel = false)
       {        {
           Title = title;            Title = title;
           IsDefault = isDefault;            IsDefault = isDefault;
           IsCancel = isCancel;            IsCancel = isCancel;
       }        }
   }    }
   
   /// <summary>    /// <summary>
.     /// Represents message box toggle option.
     /// </summary>
     public class MessageBoxToggle : ObservableObject
     {
         /// <summary>
         /// Gets or sets title toggle option.
         /// </summary>
         public string Title { get; set; }
   
         private bool selected;
         /// <summary>
         /// Gets or sets value indicating whether this is option is selected.
         /// </summary>
         public bool Selected
         {
             get => selected;
             set
             {
                 selected = value;
                 OnPropertyChanged();
             }
         }
   
         /// <summary>
         ///
         /// </summary>
         /// <param name="title"></param>
         /// <param name="selected"></param>
         public MessageBoxToggle(string title, bool selected = false)
         {
             Title = title.StartsWith("LOC") ? ResourceProvider.GetString(title) : title;
             Selected = selected;
         }
     }
   
     /// <summary>
   /// Represents arguments for global progress action.    /// Represents arguments for global progress action.
   /// </summary>    /// </summary>
   public class GlobalProgressActionArgs : ObservableObject    public class GlobalProgressActionArgs : ObservableObject
   {    {
       /// <summary>        /// <summary>
       /// Gets synchronization context of main thread.        /// Gets synchronization context of main thread.
       /// </summary>        /// </summary>
       public SynchronizationContext MainContext { get; }        public SynchronizationContext MainContext { get; }
   
       /// <summary>        /// <summary>
       /// Gets dispatcher for main UI thread.        /// Gets dispatcher for main UI thread.
       /// </summary>        /// </summary>
       public Dispatcher MainDispatcher { get; }        public Dispatcher MainDispatcher { get; }
   
       /// <summary>        /// <summary>
       /// Gets cancelation token source.        /// Gets cancelation token source.
       /// </summary>        /// </summary>
.        public CancellationTokenSource CancelToken { get; }        public CancellationToken CancelToken { get; }
   
       private double progressMaxValue = 0;        private double progressMaxValue = 0;
       /// <summary>        /// <summary>
       /// Gets or sets maximum value represented on progress track.        /// Gets or sets maximum value represented on progress track.
       /// </summary>        /// </summary>
       public double ProgressMaxValue        public double ProgressMaxValue
       {        {
           get => progressMaxValue;            get => progressMaxValue;
           set            set
           {            {
               progressMaxValue = value;                progressMaxValue = value;
               MainDispatcher?.Invoke(() => OnPropertyChanged(), DispatcherPriority.Send);                MainDispatcher?.Invoke(() => OnPropertyChanged(), DispatcherPriority.Send);
           }            }
       }        }
   
       private double currentProgressValue = 0;        private double currentProgressValue = 0;
       /// <summary>        /// <summary>
       /// Gets or sets currect value represented on progress track.        /// Gets or sets currect value represented on progress track.
       /// </summary>        /// </summary>
       public double CurrentProgressValue        public double CurrentProgressValue
       {        {
           get => currentProgressValue;            get => currentProgressValue;
           set            set
           {            {
               currentProgressValue = value;                currentProgressValue = value;
               MainDispatcher?.Invoke(() => OnPropertyChanged(), DispatcherPriority.Send);                MainDispatcher?.Invoke(() => OnPropertyChanged(), DispatcherPriority.Send);
           }            }
       }        }
   
       private string text;        private string text;
       /// <summary>        /// <summary>
       /// Gets or sets progress text.        /// Gets or sets progress text.
       /// </summary>        /// </summary>
       public string Text        public string Text
       {        {
           get => text;            get => text;
           set            set
           {            {
               text = value;                text = value;
               MainDispatcher?.Invoke(() => OnPropertyChanged(), DispatcherPriority.Send);                MainDispatcher?.Invoke(() => OnPropertyChanged(), DispatcherPriority.Send);
           }            }
       }        }
   
       /// <summary>        /// <summary>
       /// Creates new instance of <see cref="GlobalProgressActionArgs"/>.        /// Creates new instance of <see cref="GlobalProgressActionArgs"/>.
       /// </summary>        /// </summary>
       /// <param name="mainContext"></param>        /// <param name="mainContext"></param>
       /// <param name="mainDispatcher"></param>        /// <param name="mainDispatcher"></param>
       /// <param name="cancelToken"></param>        /// <param name="cancelToken"></param>
.        public GlobalProgressActionArgs(SynchronizationContext mainContext, Dispatcher mainDispatcher, CancellationTokenSource cancelToken)        public GlobalProgressActionArgs(SynchronizationContext mainContext, Dispatcher mainDispatcher, CancellationToken cancelToken)
       {        {
           MainContext = mainContext;            MainContext = mainContext;
           MainDispatcher = mainDispatcher;            MainDispatcher = mainDispatcher;
           CancelToken = cancelToken;            CancelToken = cancelToken;
       }        }
   }    }
   
   /// <summary>    /// <summary>
   /// Represents result of global progress dialog.    /// Represents result of global progress dialog.
   /// </summary>    /// </summary>
   public class GlobalProgressResult    public class GlobalProgressResult
   {    {
       /// <summary>        /// <summary>
       /// Gets failure exception record.        /// Gets failure exception record.
       /// </summary>        /// </summary>
       public Exception Error { get; }        public Exception Error { get; }
   
       /// <summary>        /// <summary>
       /// Gets execution result.        /// Gets execution result.
       /// </summary>        /// </summary>
       public bool? Result { get; }        public bool? Result { get; }
   
       /// <summary>        /// <summary>
       /// Gets value indicating whether the action was canceled by user.        /// Gets value indicating whether the action was canceled by user.
       /// </summary>        /// </summary>
       public bool Canceled { get; }        public bool Canceled { get; }
   
       /// <summary>        /// <summary>
       /// Creates new instance of <see cref="GlobalProgressResult"/>.        /// Creates new instance of <see cref="GlobalProgressResult"/>.
       /// </summary>        /// </summary>
       /// <param name="result"></param>        /// <param name="result"></param>
       /// <param name="canceled"></param>        /// <param name="canceled"></param>
       /// <param name="error"></param>        /// <param name="error"></param>
       public GlobalProgressResult(bool? result, bool canceled, Exception error)        public GlobalProgressResult(bool? result, bool canceled, Exception error)
       {        {
           Result = result;            Result = result;
           Error = error;            Error = error;
           Canceled = canceled;            Canceled = canceled;
       }        }
   }    }
   
   /// <summary>    /// <summary>
   /// Represents option for global progress dialog.    /// Represents option for global progress dialog.
   /// </summary>    /// </summary>
   public class GlobalProgressOptions    public class GlobalProgressOptions
   {    {
       /// <summary>        /// <summary>
       /// Gets or sets progress text.        /// Gets or sets progress text.
       /// </summary>        /// </summary>
       public string Text { get; set; }        public string Text { get; set; }
   
       /// <summary>        /// <summary>
       /// Gets or sets value indicating whether the progress can be canceled.        /// Gets or sets value indicating whether the progress can be canceled.
       /// </summary>        /// </summary>
       public bool Cancelable { get; set; }        public bool Cancelable { get; set; }
   
       /// <summary>        /// <summary>
       /// Gets or sets value indicating whether the progress is indeterminated.        /// Gets or sets value indicating whether the progress is indeterminated.
       /// </summary>        /// </summary>
       public bool IsIndeterminate { get; set; } = true;        public bool IsIndeterminate { get; set; } = true;
   
       /// <summary>        /// <summary>
       /// Creates new instance of <see cref="GlobalProgressOptions"/>.        /// Creates new instance of <see cref="GlobalProgressOptions"/>.
       /// </summary>        /// </summary>
       /// <param name="text"></param>        /// <param name="text"></param>
       public GlobalProgressOptions(string text)        public GlobalProgressOptions(string text)
       {        {
           Text = text;            Text = text;
       }        }
   
       /// <summary>        /// <summary>
       /// Creates new instance of <see cref="GlobalProgressOptions"/>.        /// Creates new instance of <see cref="GlobalProgressOptions"/>.
       /// </summary>        /// </summary>
       /// <param name="text"></param>        /// <param name="text"></param>
       /// <param name="cancelable"></param>        /// <param name="cancelable"></param>
       public GlobalProgressOptions(string text, bool cancelable) : this(text)        public GlobalProgressOptions(string text, bool cancelable) : this(text)
       {        {
           Cancelable = cancelable;            Cancelable = cancelable;
       }        }
   }    }
   
   /// <summary>    /// <summary>
   /// Represents item for image selection dialog.    /// Represents item for image selection dialog.
   /// </summary>    /// </summary>
   public class ImageFileOption : GenericItemOption    public class ImageFileOption : GenericItemOption
   {    {
       /// <summary>        /// <summary>
       /// Gets or sets image path or URL.        /// Gets or sets image path or URL.
       /// </summary>        /// </summary>
       public string Path { get; set; }        public string Path { get; set; }
   
       /// <summary>        /// <summary>
       /// Creates new instance of <see cref="ImageFileOption"/>.        /// Creates new instance of <see cref="ImageFileOption"/>.
       /// </summary>        /// </summary>
       public ImageFileOption() : base()        public ImageFileOption() : base()
       {        {
       }        }
   
       /// <summary>        /// <summary>
       /// Creates new instance of <see cref="ImageFileOption"/>.        /// Creates new instance of <see cref="ImageFileOption"/>.
       /// </summary>        /// </summary>
       /// <param name="path"></param>        /// <param name="path"></param>
       public ImageFileOption(string path)        public ImageFileOption(string path)
       {        {
           Path = path;            Path = path;
       }        }
   }    }
   
   /// <summary>    /// <summary>
   /// Represents item for item selection dialogs.    /// Represents item for item selection dialogs.
   /// </summary>    /// </summary>
   public class GenericItemOption    public class GenericItemOption
   {    {
       /// <summary>        /// <summary>
       /// Gets or sets game name.        /// Gets or sets game name.
       /// </summary>        /// </summary>
       public string Name { get; set; }        public string Name { get; set; }
   
       /// <summary>        /// <summary>
       /// Gets or sets search result's description.        /// Gets or sets search result's description.
       /// </summary>        /// </summary>
       public string Description { get; set; }        public string Description { get; set; }
   
       /// <summary>        /// <summary>
       /// Creates new instance of <see cref="GenericItemOption"/>.        /// Creates new instance of <see cref="GenericItemOption"/>.
       /// </summary>        /// </summary>
       public GenericItemOption()        public GenericItemOption()
       {        {
       }        }
   
       /// <summary>        /// <summary>
       /// Creates new instance of <see cref="GenericItemOption"/>.        /// Creates new instance of <see cref="GenericItemOption"/>.
       /// </summary>        /// </summary>
       /// <param name="name"></param>        /// <param name="name"></param>
       /// <param name="description"></param>        /// <param name="description"></param>
       public GenericItemOption(string name, string description)        public GenericItemOption(string name, string description)
       {        {
           Name = name;            Name = name;
           Description = description;            Description = description;
       }        }
   }    }
   
   /// <summary>    /// <summary>
   /// Refresents result of selection string dialog operation.    /// Refresents result of selection string dialog operation.
   /// </summary>    /// </summary>
   public class StringSelectionDialogResult    public class StringSelectionDialogResult
   {    {
       /// <summary>        /// <summary>
       /// Gets or sets dialog result. True if user confirmed selected otherwise false.        /// Gets or sets dialog result. True if user confirmed selected otherwise false.
       /// </summary>        /// </summary>
.        public bool Result         public bool Result { get; set; }
       {   
           get; set;   
       }  
   
       /// <summary>        /// <summary>
       /// Gets or sets string selected by user.        /// Gets or sets string selected by user.
       /// </summary>        /// </summary>
.        public string SelectedString         public string SelectedString { get; set; }
       {   
           get; set;   
       }  
   
       /// <summary>        /// <summary>
       /// Creates new instance of StringSelectionDialogResult.        /// Creates new instance of StringSelectionDialogResult.
       /// </summary>        /// </summary>
       /// <param name="result">Dialog result.</param>        /// <param name="result">Dialog result.</param>
       /// <param name="selectedString">Selected string.</param>        /// <param name="selectedString">Selected string.</param>
       public StringSelectionDialogResult(bool result, string selectedString)        public StringSelectionDialogResult(bool result, string selectedString)
       {        {
           Result = result;            Result = result;
           SelectedString = selectedString;            SelectedString = selectedString;
       }        }
   }    }
   
   /// <summary>    /// <summary>
   /// Represents option for new window creation.    /// Represents option for new window creation.
   /// </summary>    /// </summary>
   public class WindowCreationOptions    public class WindowCreationOptions
   {    {
       /// <summary>        /// <summary>
       /// Gets or sets value indicating whether the minimize button should be shown.        /// Gets or sets value indicating whether the minimize button should be shown.
       /// </summary>        /// </summary>
       public bool ShowMinimizeButton { get; set; } = true;        public bool ShowMinimizeButton { get; set; } = true;
   
       /// <summary>        /// <summary>
       /// Gets or sets value indicating whether the maximize button should be shown.        /// Gets or sets value indicating whether the maximize button should be shown.
       /// </summary>        /// </summary>
       public bool ShowMaximizeButton { get; set; } = true;        public bool ShowMaximizeButton { get; set; } = true;
   
       /// <summary>        /// <summary>
       /// Gets or sets value indicating whether the close button should be shown.        /// Gets or sets value indicating whether the close button should be shown.
       /// </summary>        /// </summary>
       public bool ShowCloseButton { get; set; } = true;        public bool ShowCloseButton { get; set; } = true;
   }    }
   
   /// <summary>    /// <summary>
   /// Describes object providing methods for dialog based actions.    /// Describes object providing methods for dialog based actions.
   /// </summary>    /// </summary>
   public interface IDialogsFactory    public interface IDialogsFactory
   {    {
       /// <summary>        /// <summary>
       /// Displays errod dialog window with text message.        /// Displays errod dialog window with text message.
       /// </summary>        /// </summary>
       /// <param name="messageBoxText">Dialog message text.</param>        /// <param name="messageBoxText">Dialog message text.</param>
       /// <param name="caption">Dialog window caption.</param>        /// <param name="caption">Dialog window caption.</param>
       /// <returns></returns>        /// <returns></returns>
       MessageBoxResult ShowErrorMessage(string messageBoxText, string caption);        MessageBoxResult ShowErrorMessage(string messageBoxText, string caption);
   
       /// <summary>        /// <summary>
       /// Displays dialog window with text message.        /// Displays dialog window with text message.
       /// </summary>        /// </summary>
       /// <param name="messageBoxText">Dialog message text.</param>        /// <param name="messageBoxText">Dialog message text.</param>
       /// <param name="caption">Dialog window caption.</param>        /// <param name="caption">Dialog window caption.</param>
       /// <param name="button">Available response button.</param>        /// <param name="button">Available response button.</param>
       /// <param name="icon">Dialog icon.</param>        /// <param name="icon">Dialog icon.</param>
       /// <returns>Selected dialog response.</returns>        /// <returns>Selected dialog response.</returns>
       MessageBoxResult ShowMessage(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon);        MessageBoxResult ShowMessage(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon);
   
       /// <summary>        /// <summary>
       /// Displays dialog window with text message.        /// Displays dialog window with text message.
       /// </summary>        /// </summary>
       /// <param name="messageBoxText">Dialog message text.</param>        /// <param name="messageBoxText">Dialog message text.</param>
       /// <param name="caption">Dialog window caption.</param>        /// <param name="caption">Dialog window caption.</param>
       /// <param name="button">Available response button.</param>        /// <param name="button">Available response button.</param>
       /// <returns>Selected dialog response.</returns>        /// <returns>Selected dialog response.</returns>
       MessageBoxResult ShowMessage(string messageBoxText, string caption, MessageBoxButton button);        MessageBoxResult ShowMessage(string messageBoxText, string caption, MessageBoxButton button);
   
       /// <summary>        /// <summary>
       /// Displays dialog window with text message.        /// Displays dialog window with text message.
       /// </summary>        /// </summary>
       /// <param name="messageBoxText">Dialog message text.</param>        /// <param name="messageBoxText">Dialog message text.</param>
       /// <param name="caption">Dialog window caption.</param>        /// <param name="caption">Dialog window caption.</param>
       /// <returns>Selected dialog response.</returns>        /// <returns>Selected dialog response.</returns>
       MessageBoxResult ShowMessage(string messageBoxText, string caption);        MessageBoxResult ShowMessage(string messageBoxText, string caption);
   
       /// <summary>        /// <summary>
       /// Displays dialog window with text message.        /// Displays dialog window with text message.
       /// </summary>        /// </summary>
       /// <param name="messageBoxText">Dialog message text.</param>        /// <param name="messageBoxText">Dialog message text.</param>
       /// <returns>Selected dialog response.</returns>        /// <returns>Selected dialog response.</returns>
       MessageBoxResult ShowMessage(string messageBoxText);        MessageBoxResult ShowMessage(string messageBoxText);
   
       /// <summary>        /// <summary>
       /// Displays dialog window custom response options.        /// Displays dialog window custom response options.
       /// </summary>        /// </summary>
       /// <param name="messageBoxText">Dialog message text.</param>        /// <param name="messageBoxText">Dialog message text.</param>
       /// <param name="caption">Dialog window caption.</param>        /// <param name="caption">Dialog window caption.</param>
       /// <param name="icon">Dialog icon.</param>        /// <param name="icon">Dialog icon.</param>
       /// <param name="options">Response options.</param>        /// <param name="options">Response options.</param>
       /// <returns>Selected dialog option.</returns>        /// <returns>Selected dialog option.</returns>
       MessageBoxOption ShowMessage(string messageBoxText, string caption, MessageBoxImage icon, List<MessageBoxOption> options);        MessageBoxOption ShowMessage(string messageBoxText, string caption, MessageBoxImage icon, List<MessageBoxOption> options);
   
       /// <summary>        /// <summary>
       /// Displays system dialog for folder selection.        /// Displays system dialog for folder selection.
       /// </summary>        /// </summary>
       /// <returns>Selected folder path or empty string if user cancels the dialog.</returns>        /// <returns>Selected folder path or empty string if user cancels the dialog.</returns>
       string SelectFolder();        string SelectFolder();
   
       /// <summary>        /// <summary>
       /// Displays system open file dialog.        /// Displays system open file dialog.
       /// </summary>        /// </summary>
       /// <param name="filter">File filter, for example "ZIP Archive|*.zip"</param>        /// <param name="filter">File filter, for example "ZIP Archive|*.zip"</param>
       /// <returns>Selected file path or empty string if user cancels the dialog.</returns>        /// <returns>Selected file path or empty string if user cancels the dialog.</returns>
       string SelectFile(string filter);        string SelectFile(string filter);
   
       /// <summary>        /// <summary>
       /// Displays system open file dialog allowing to select multiple files.        /// Displays system open file dialog allowing to select multiple files.
       /// </summary>        /// </summary>
       /// <param name="filter">File filter, for example "ZIP Archive|*.zip"</param>        /// <param name="filter">File filter, for example "ZIP Archive|*.zip"</param>
       /// <returns>List of paths or null if user cancels the dialog.</returns>        /// <returns>List of paths or null if user cancels the dialog.</returns>
       List<string> SelectFiles(string filter);        List<string> SelectFiles(string filter);
   
       /// <summary>        /// <summary>
       /// Displays file open dialog with file filter set to show only image files used for icons.        /// Displays file open dialog with file filter set to show only image files used for icons.
       /// </summary>        /// </summary>
       /// <returns>Selected icon path or empty string if user cancels the dialog.</returns>        /// <returns>Selected icon path or empty string if user cancels the dialog.</returns>
       string SelectIconFile();        string SelectIconFile();
   
       /// <summary>        /// <summary>
       /// Displays file open dialog with file filter set to show only image files.        /// Displays file open dialog with file filter set to show only image files.
       /// </summary>        /// </summary>
       /// <returns>Selected image path or empty string if user cancels the dialog.</returns>        /// <returns>Selected image path or empty string if user cancels the dialog.</returns>
       string SelectImagefile();        string SelectImagefile();
   
       /// <summary>        /// <summary>
       /// Displays system file save dialog.        /// Displays system file save dialog.
       /// </summary>        /// </summary>
       /// <param name="filter">File filter, for example "ZIP Archive|*.zip"</param>        /// <param name="filter">File filter, for example "ZIP Archive|*.zip"</param>
       /// <returns>Selected file path or empty string if user cancels the dialog.</returns>        /// <returns>Selected file path or empty string if user cancels the dialog.</returns>
       string SaveFile(string filter);        string SaveFile(string filter);
   
       /// <summary>        /// <summary>
       /// Displays system file save dialog.        /// Displays system file save dialog.
       /// </summary>        /// </summary>
       /// <param name="filter">File filter, for example "ZIP Archive|*.zip"</param>        /// <param name="filter">File filter, for example "ZIP Archive|*.zip"</param>
       /// <param name="promptOverwrite">Indicates whether to ask user for file overrite if selected path exists.</param>        /// <param name="promptOverwrite">Indicates whether to ask user for file overrite if selected path exists.</param>
       /// <returns>Selected file path or empty string if user cancels the dialog.</returns>        /// <returns>Selected file path or empty string if user cancels the dialog.</returns>
       string SaveFile(string filter, bool promptOverwrite);        string SaveFile(string filter, bool promptOverwrite);
   
       /// <summary>        /// <summary>
       /// Displays dialog asking user to input text string.        /// Displays dialog asking user to input text string.
       /// </summary>        /// </summary>
       /// <param name="messageBoxText">Dialog message text.</param>        /// <param name="messageBoxText">Dialog message text.</param>
       /// <param name="caption">Dialog window caption.</param>        /// <param name="caption">Dialog window caption.</param>
       /// <param name="defaultInput">Default string presented in input field.</param>        /// <param name="defaultInput">Default string presented in input field.</param>
       /// <returns>Selection result.</returns>        /// <returns>Selection result.</returns>
       StringSelectionDialogResult SelectString(string messageBoxText, string caption, string defaultInput);        StringSelectionDialogResult SelectString(string messageBoxText, string caption, string defaultInput);
.   
         /// <summary>
         ///
         /// </summary>
         /// <param name="messageBoxText"></param>
         /// <param name="caption"></param>
         /// <param name="defaultInput"></param>
         /// <param name="options"></param>
         /// <returns></returns>
         StringSelectionDialogResult SelectString(string messageBoxText, string caption, string defaultInput, List<MessageBoxToggle> options);
   
       /// <summary>        /// <summary>
       /// Displays dialog with textbox allowing to select/copy text.        /// Displays dialog with textbox allowing to select/copy text.
       /// </summary>        /// </summary>
       /// <param name="messageBoxText">Dialog message text.</param>        /// <param name="messageBoxText">Dialog message text.</param>
       /// <param name="caption">Dialog window caption.</param>        /// <param name="caption">Dialog window caption.</param>
       /// <param name="defaultInput">String added into selectable field.</param>        /// <param name="defaultInput">String added into selectable field.</param>
       /// <returns>Selection result.</returns>        /// <returns>Selection result.</returns>
       void ShowSelectableString(string messageBoxText, string caption, string defaultInput);        void ShowSelectableString(string messageBoxText, string caption, string defaultInput);
   
       /// <summary>        /// <summary>
       /// Displays dialog with an option to choose single image.        /// Displays dialog with an option to choose single image.
       /// </summary>        /// </summary>
       /// <param name="files"></param>        /// <param name="files"></param>
       /// <param name="caption"></param>        /// <param name="caption"></param>
       /// <param name="itemWidth"></param>        /// <param name="itemWidth"></param>
       /// <param name="itemHeight"></param>        /// <param name="itemHeight"></param>
       /// <returns>Null if dialog was canceled otherwise selected <see cref="ImageFileOption"/> object.</returns>        /// <returns>Null if dialog was canceled otherwise selected <see cref="ImageFileOption"/> object.</returns>
       ImageFileOption ChooseImageFile(List<ImageFileOption> files, string caption = null, double itemWidth = 240, double itemHeight = 180);        ImageFileOption ChooseImageFile(List<ImageFileOption> files, string caption = null, double itemWidth = 240, double itemHeight = 180);
   
       /// <summary>        /// <summary>
       /// Displays dialog with an option to choose single item and option to search for different items.        /// Displays dialog with an option to choose single item and option to search for different items.
       /// </summary>        /// </summary>
       /// <param name="items"></param>        /// <param name="items"></param>
       /// <param name="searchFunction"></param>        /// <param name="searchFunction"></param>
       /// <param name="defaultSearch"></param>        /// <param name="defaultSearch"></param>
       /// <param name="caption"></param>        /// <param name="caption"></param>
       /// <returns>Null if dialog was canceled otherwise selected <see cref="GenericItemOption"/> object.</returns>        /// <returns>Null if dialog was canceled otherwise selected <see cref="GenericItemOption"/> object.</returns>
       GenericItemOption ChooseItemWithSearch(List<GenericItemOption> items, Func<string, List<GenericItemOption>> searchFunction, string defaultSearch = null, string caption = null);        GenericItemOption ChooseItemWithSearch(List<GenericItemOption> items, Func<string, List<GenericItemOption>> searchFunction, string defaultSearch = null, string caption = null);
   
       /// <summary>        /// <summary>
       /// Activates progress dialog blocking app interaction until progress is finished or canceled.        /// Activates progress dialog blocking app interaction until progress is finished or canceled.
       /// </summary>        /// </summary>
       /// <param name="progresAction">Action to be executed.</param>        /// <param name="progresAction">Action to be executed.</param>
       /// <param name="progressOptions">Options for progress dialog.</param>        /// <param name="progressOptions">Options for progress dialog.</param>
       /// <returns>Status of the action execution.</returns>        /// <returns>Status of the action execution.</returns>
       GlobalProgressResult ActivateGlobalProgress(Action<GlobalProgressActionArgs> progresAction, GlobalProgressOptions progressOptions);        GlobalProgressResult ActivateGlobalProgress(Action<GlobalProgressActionArgs> progresAction, GlobalProgressOptions progressOptions);
   
       /// <summary>        /// <summary>
       /// Creates new window with Playnite's default styling applied.        /// Creates new window with Playnite's default styling applied.
       /// </summary>        /// </summary>
       /// <param name="options">Custom window options.</param>        /// <param name="options">Custom window options.</param>
       /// <returns>New window instance.</returns>        /// <returns>New window instance.</returns>
       Window CreateWindow(WindowCreationOptions options);        Window CreateWindow(WindowCreationOptions options);
   
       /// <summary>        /// <summary>
       /// Gets a window which currently in use an active.        /// Gets a window which currently in use an active.
       /// </summary>        /// </summary>
       /// <returns>Window object.</returns>        /// <returns>Window object.</returns>
       Window GetCurrentAppWindow();        Window GetCurrentAppWindow();
   }    }
} }