├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── issue_template.md
├── .gitignore
├── .vs
└── config
│ └── applicationhost.config
├── CNAME
├── LICENSE.txt
├── LicenseChecker
└── McTools.StopAdvertisement.dll
├── Plugins
└── MsCrmTools.SampleTool
│ ├── .vs
│ └── MsCrmTools.SampleTool.csproj.dtbcache.json
│ ├── CompanionTool.Designer.cs
│ ├── CompanionTool.cs
│ ├── CompanionTool.resx
│ ├── MsCrmTools.SampleTool.csproj
│ ├── Plugin.cs
│ ├── PluginCompanion.cs
│ ├── PluginMulti.cs
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── SampleTool.Designer.cs
│ ├── SampleTool.cs
│ ├── SampleTool.resx
│ ├── SampleToolMulti.Designer.cs
│ ├── SampleToolMulti.cs
│ ├── SampleToolMulti.resx
│ ├── Settings.cs
│ ├── app.config
│ └── packages.config
├── README.md
├── Referenced Assemblies
├── ILMerge.exe
├── Microsoft.Crm.Sdk.Proxy.dll
├── Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll
├── Microsoft.IdentityModel.Clients.ActiveDirectory.dll
├── Microsoft.Xrm.Sdk.Deployment.dll
├── Microsoft.Xrm.Sdk.dll
├── Microsoft.Xrm.Tooling.Connector.dll
└── Microsoft.Xrm.Tooling.CrmConnectControl.dll
├── XrmToolBox.AutoUpdater
├── .vs
│ └── XrmToolBox.AutoUpdater.csproj.dtbcache.json
├── App.config
├── AutoUpdater.Designer.cs
├── AutoUpdater.cs
├── AutoUpdater.resx
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── XrmToolBox.AutoUpdater.csproj
├── XrmToolBox.Updater.ico
└── packages.config
├── XrmToolBox.Extensibility
├── .vs
│ └── XrmToolBox.Extensibility.csproj.dtbcache.json
├── AdditionalConnections.cs
├── Args
│ ├── DuplicateToolArgs.cs
│ ├── DuplicateToolWithConnectionArgs.cs
│ ├── MessageBusEventArgs.cs
│ ├── RequestConnectionEventArgs.cs
│ └── StatusBarMessageEventArgs.cs
├── Extensions.cs
├── ExternalMethodCallerInfo.cs
├── Forms
│ ├── CurrencySelectionDialog.Designer.cs
│ ├── CurrencySelectionDialog.cs
│ ├── CurrencySelectionDialog.resx
│ ├── ErrorDetail.cs
│ ├── ErrorDetail.designer.cs
│ └── ErrorDetail.resx
├── ITSecurityChecker.cs
├── Icons.Designer.cs
├── Icons.resx
├── Images
│ └── progress.gif
├── InformationPanel.cs
├── Interfaces
│ ├── IAboutPlugin.cs
│ ├── ICodePlexPlugin.cs
│ ├── ICompanion.cs
│ ├── IConnectionControlUpdateSettings.cs
│ ├── IDuplicatableTool.cs
│ ├── IEarlyBoundProxy.cs
│ ├── IGitHubPlugin.cs
│ ├── IHelpPlugin.cs
│ ├── IMessageBusHost.cs
│ ├── INoConnectionRequired.cs
│ ├── INoHighlightingPlugin.cs
│ ├── IPayPalPlugin.cs
│ ├── IPluginMetadata.cs
│ ├── IPluginMetadataExt.cs
│ ├── IPrivatePlugin.cs
│ ├── ISettingsPlugin.cs
│ ├── IShortcutReceiver.cs
│ ├── IStatusBarMessager.cs
│ ├── IStatusBarMessenger.cs
│ ├── IToolLibrary.cs
│ ├── IToolLibrarySettings.cs
│ ├── IWorkerHost.cs
│ ├── IXrmToolBoxLibraryTool.cs
│ ├── IXrmToolBoxPlugin.cs
│ └── IXrmToolBoxPluginControl.cs
├── LogManager.cs
├── Manifest
│ ├── Manifest.cs
│ ├── ManifestLoader.cs
│ └── PluginMetadata.cs
├── MultipleConnectionsPluginControlBase.cs
├── Paths.cs
├── PluginBase.cs
├── PluginCloseInfo.cs
├── PluginControlBase.cs
├── PluginNotFoundException.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Resources
│ ├── error_52.gif
│ ├── money_dollar.png
│ ├── money_euro.png
│ ├── money_pound.png
│ ├── notif_icn_alert16.png
│ ├── notif_icn_crit16.png
│ ├── notif_icn_info16.png
│ ├── paypal.png
│ └── progress_new.gif
├── SettingsManager.cs
├── UserControls
│ ├── LargePluginModel.Designer.cs
│ ├── LargePluginModel.cs
│ ├── LargePluginModel.resx
│ ├── NotificationArea.Designer.cs
│ ├── NotificationArea.cs
│ ├── NotificationArea.resx
│ ├── PluginModel.cs
│ ├── PluginModel.resx
│ ├── SmallPluginLabel.cs
│ ├── SmallPluginModel.Designer.cs
│ ├── SmallPluginModel.cs
│ └── SmallPluginModel.resx
├── WorkAsyncInfo.cs
├── Worker.cs
├── XrmToolBox.Extensibility.csproj
├── app.config
└── packages.config
├── XrmToolBox.PluginsStore
├── AppInsights
│ └── AppInsights.cs
├── ConnectionControlsUpdateSettings.cs
├── DTO
│ └── XtbPlugin.cs
├── Extensions.cs
├── InstallationInfo.cs
├── LicenseAcceptanceForm.Designer.cs
├── LicenseAcceptanceForm.cs
├── LicenseAcceptanceForm.resx
├── ListViewItemComparer.cs
├── Options.cs
├── PluginDeletions.cs
├── PluginLicense.Designer.cs
├── PluginLicense.cs
├── PluginLicense.resx
├── PluginUpdates.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── ProxySettingsHelper.cs
├── StoreForm - Copier.Designer.cs
├── StoreForm - Copier.cs
├── StoreForm - Copier.resx
├── StoreFormFromPortal.Designer.cs
├── StoreFormFromPortal.cs
├── StoreFormFromPortal.resx
├── StoreFromPortal.cs
├── ToolInformationEventArgs.cs
├── XmlSerializerHelper.cs
├── XrmToolBox.PluginsStore.csproj
├── app.config
└── packages.config
├── XrmToolBox.ToolLibrary
├── .vs
│ └── XrmToolBox.ToolLibrary.csproj.dtbcache.json
├── AppCode
│ ├── ConnectionControlsUpdateSettings.cs
│ ├── Extensions.cs
│ ├── ImageCache.cs
│ ├── OpenPluginEventArgs.cs
│ ├── PackageVersion.cs
│ ├── PluginDeletions.cs
│ ├── PluginUpdates.cs
│ ├── SerializerHelper.cs
│ ├── ToolLibrarySettings.cs
│ ├── ToolOperationEventArgs.cs
│ ├── WebRequestHelper.cs
│ ├── XmlSerializerHelper.cs
│ ├── XtbPlugin.cs
│ └── XtbPluginVersion.cs
├── Forms
│ ├── LicenseAcceptanceForm.Designer.cs
│ ├── LicenseAcceptanceForm.cs
│ ├── LicenseAcceptanceForm.resx
│ ├── ToolLibraryForm.Drawing.cs
│ ├── ToolLibraryForm.Processing.cs
│ ├── ToolLibraryForm.cs
│ ├── ToolLibraryForm.designer.cs
│ └── ToolLibraryForm.resx
├── Properties
│ └── AssemblyInfo.cs
├── Resource.Designer.cs
├── Resource.resx
├── Resources
│ ├── ClearCache.png
│ ├── Download32.png
│ ├── Error32.png
│ ├── Incompatible.png
│ ├── Install32.png
│ ├── New.png
│ ├── NewToInstall.png
│ ├── No32.png
│ ├── NoLogo100.png
│ ├── Open16.png
│ ├── Open32.png
│ ├── Pending32.png
│ ├── PluginsStore32.png
│ ├── Refresh.png
│ ├── RefreshImages.png
│ ├── Restart.png
│ ├── Settings.png
│ ├── StatusInvalid.18.18.png
│ ├── StatusOK.18.18.png
│ ├── StatusUpdateAvailable.18.18.png
│ ├── Success32.png
│ ├── Uninstall.png
│ ├── Update.png
│ ├── github.png
│ ├── mvp.png
│ ├── progress.gif
│ └── star.png
├── ToolLibrary.cs
├── UserControls
│ ├── InstallProgressControl.Designer.cs
│ ├── InstallProgressControl.cs
│ ├── InstallProgressControl.resx
│ ├── PluginLicense.Designer.cs
│ ├── PluginLicense.cs
│ ├── PluginLicense.resx
│ ├── ProgressStepControl.Designer.cs
│ ├── ProgressStepControl.cs
│ ├── ProgressStepControl.resx
│ ├── ToolPackageProperties.cs
│ ├── ToolPackageProperties.designer.cs
│ └── ToolPackageProperties.resx
├── XrmToolBox.ToolLibrary.csproj
├── app.config
├── app.manifest
└── packages.config
├── XrmToolBox.sln
├── XrmToolBox
├── .vs
│ └── XrmToolBox.csproj.dtbcache.json
├── AbstractControlDescriptionProvider.cs
├── Announcement
│ ├── AnnouncementDialog.Designer.cs
│ ├── AnnouncementDialog.cs
│ ├── AnnouncementDialog.resx
│ ├── AnnouncementManager.cs
│ └── AnnouncementSettings.cs
├── AppCode
│ ├── AppInsights
│ │ ├── AppInsights.cs
│ │ └── InstallationInfo.cs
│ ├── DockExtensions.cs
│ ├── Extensions.cs
│ ├── Favorites.cs
│ ├── IToolsForm.cs
│ ├── ListViewItemComparer.cs
│ ├── MostRecentlyUsedItems.cs
│ ├── PluginControlStatus.cs
│ ├── PluginUpdateSkip.cs
│ ├── PluginUpdates.cs
│ ├── PropertySorter.cs
│ ├── RegistryHelper.cs
│ ├── ReleasesDTO.cs
│ ├── SettingsPropertyEventArgs.cs
│ ├── SettingsPropertyInfo.cs
│ └── WebProxyHelper.cs
├── AppInsights
│ └── AppInsights.cs
├── ConnectionParameterInfo.cs
├── Controls
│ ├── AdvancedControl.cs
│ ├── AdvancedControl.designer.cs
│ ├── AdvancedControl.resx
│ ├── ApplicationProtocolControl.Designer.cs
│ ├── ApplicationProtocolControl.cs
│ ├── ApplicationProtocolControl.resx
│ ├── AssembliesControl.Designer.cs
│ ├── AssembliesControl.cs
│ ├── AssembliesControl.resx
│ ├── ConnectingCdsControl.cs
│ ├── ConnectingCdsControl.designer.cs
│ ├── ConnectingCdsControl.resx
│ ├── ConnectingControl.Designer.cs
│ ├── ConnectingControl.cs
│ ├── ConnectingControl.resx
│ ├── CreditsControl.Designer.cs
│ ├── CreditsControl.cs
│ ├── CreditsControl.resx
│ ├── DropdownSettingsControl.cs
│ ├── DropdownSettingsControl.designer.cs
│ ├── DropdownSettingsControl.resx
│ ├── HiddenToolsControl.Designer.cs
│ ├── HiddenToolsControl.cs
│ ├── HiddenToolsControl.resx
│ ├── HighlightItem.Designer.cs
│ ├── HighlightItem.cs
│ ├── HighlightItem.resx
│ ├── ISettingsControl.cs
│ ├── NavLeftItem.cs
│ ├── NavLeftItem.designer.cs
│ ├── NavLeftItem.resx
│ ├── PathsControl.Designer.cs
│ ├── PathsControl.cs
│ ├── PathsControl.resx
│ ├── ProxyControl.Designer.cs
│ ├── ProxyControl.cs
│ ├── ProxyControl.resx
│ ├── SwitchControl.cs
│ ├── SwitchControl.designer.cs
│ ├── SwitchControl.resx
│ ├── SwitchSettingsControl.cs
│ ├── SwitchSettingsControl.designer.cs
│ ├── SwitchSettingsControl.resx
│ ├── TextBoxSettingsControl.cs
│ ├── TextBoxSettingsControl.designer.cs
│ ├── TextBoxSettingsControl.resx
│ └── TextBoxWithPlaceholder.cs
├── CrmExceptionHelper.cs
├── Forms
│ ├── DonationIntroForm.Designer.cs
│ ├── DonationIntroForm.cs
│ ├── DonationIntroForm.resx
│ ├── HiddenPluginsDialog.Designer.cs
│ ├── HiddenPluginsDialog.cs
│ ├── HiddenPluginsDialog.resx
│ ├── NewConnectionVersion.Designer.cs
│ ├── NewConnectionVersion.cs
│ ├── NewConnectionVersion.resx
│ ├── NewPluginVersion.Designer.cs
│ ├── NewPluginVersion.cs
│ ├── NewPluginVersion.resx
│ ├── NewVersionForm.Designer.cs
│ ├── NewVersionForm.cs
│ ├── NewVersionForm.resx
│ ├── OptionsDialog.Designer.cs
│ ├── OptionsDialog.cs
│ ├── OptionsDialog.resx
│ ├── SettingsForm.cs
│ ├── SettingsForm.designer.cs
│ ├── SettingsForm.resx
│ ├── SuccessDialog.cs
│ ├── SuccessDialog.designer.cs
│ ├── SuccessDialog.resx
│ ├── TabConnectionUpdater.Designer.cs
│ ├── TabConnectionUpdater.cs
│ ├── TabConnectionUpdater.resx
│ ├── UserSelectionDialog.Designer.cs
│ ├── UserSelectionDialog.cs
│ ├── UserSelectionDialog.resx
│ ├── WelcomeDialog.Designer.cs
│ ├── WelcomeDialog.cs
│ └── WelcomeDialog.resx
├── Images
│ ├── nologo.png
│ ├── nologo32.png
│ └── progress.gif
├── InformationPanel.cs
├── New
│ ├── CustomFloatWindow.cs
│ ├── EventArgs
│ │ ├── OpenFavoritePluginEventArgs.cs
│ │ ├── OpenMruPluginEventArgs.cs
│ │ ├── OpenPluginEventArgs.cs
│ │ ├── PluginEventArgs.cs
│ │ └── PluginsListEventArgs.cs
│ ├── FavoriteControl.Designer.cs
│ ├── FavoriteControl.cs
│ ├── FavoriteControl.resx
│ ├── InvalidPluginsForm.Designer.cs
│ ├── InvalidPluginsForm.cs
│ ├── InvalidPluginsForm.resx
│ ├── InvalidPluginsInfo.Designer.cs
│ ├── InvalidPluginsInfo.cs
│ ├── InvalidPluginsInfo.resx
│ ├── MostRecentlyUsedItemControl.Designer.cs
│ ├── MostRecentlyUsedItemControl.cs
│ ├── MostRecentlyUsedItemControl.resx
│ ├── NewForm.Community.cs
│ ├── NewForm.Designer.cs
│ ├── NewForm.cs
│ ├── NewForm.resx
│ ├── NewVersionForm.Designer.cs
│ ├── NewVersionForm.cs
│ ├── NewVersionForm.resx
│ ├── PluginForm.Designer.cs
│ ├── PluginForm.cs
│ ├── PluginForm.resx
│ ├── PluginsFilterInfo.Designer.cs
│ ├── PluginsFilterInfo.cs
│ ├── PluginsFilterInfo.resx
│ ├── PluginsForm.Designer.cs
│ ├── PluginsForm.cs
│ ├── PluginsForm.resx
│ ├── PluginsForm2.cs
│ ├── PluginsForm2.designer.cs
│ ├── PluginsForm2.resx
│ ├── StartPage.Designer.cs
│ ├── StartPage.cs
│ ├── StartPage.resx
│ └── ToolInfo.cs
├── Options.cs
├── PluginManagerExtended.cs
├── PluginUseCount.cs
├── PluginsListForm.Designer.cs
├── PluginsListForm.cs
├── PluginsListForm.resx
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── Resources
│ ├── 3.png
│ ├── ApplicationProtocol32.png
│ ├── Assemblies32.png
│ ├── CheckForUpdate24.png
│ ├── Clear_16.png
│ ├── CloseBehavior32.png
│ ├── Comparison32.png
│ ├── Configuration32.png
│ ├── Connect16.png
│ ├── Connect24.png
│ ├── Connect32.png
│ ├── ConnectingDataverse.gif
│ ├── ConnectingDynamics.gif
│ ├── ConnectionControls32.png
│ ├── Connections32.png
│ ├── Credits32.png
│ ├── Customizations32.png
│ ├── Data32.png
│ ├── DataCollect32.png
│ ├── Dataverse24.png
│ ├── Dataverse_16x16.png
│ ├── Development32.png
│ ├── Display32.png
│ ├── Documentation32.png
│ ├── Dollar24.png
│ ├── Dynamics365_24.png
│ ├── Eraser24.png
│ ├── Euro24.png
│ ├── Expand32.png
│ ├── Favorite24.png
│ ├── Gitter32.png
│ ├── Help24.png
│ ├── Hide24.png
│ ├── Hide32.png
│ ├── Impersonate24.png
│ ├── LoadingConnection.gif
│ ├── LogoDyn365.png
│ ├── ManageConnections24.png
│ ├── Migration32.png
│ ├── New32.png
│ ├── OpenToolsLibrary.png
│ ├── Paths32.png
│ ├── Plugins32.png
│ ├── PluginsStore32.png
│ ├── PluginsStore64.png
│ ├── Pound24.png
│ ├── PowerApps24.png
│ ├── PowerApps_scalable.png
│ ├── PowerBI32.png
│ ├── PowerPages32.png
│ ├── Processes32.png
│ ├── ProxySettings32.png
│ ├── Refresh24.png
│ ├── Reporting32.png
│ ├── Security32.png
│ ├── Session32.png
│ ├── Settings24.png
│ ├── Settings32.png
│ ├── Shortcut24.png
│ ├── Shrink32.png
│ ├── Solutions32.png
│ ├── StartPage32.png
│ ├── Startup32.png
│ ├── Tools24.png
│ ├── ToolsListDisplay32.png
│ ├── Troubleshooting32.png
│ ├── Uninstall24.png
│ ├── UserInterface32.png
│ ├── Web24.png
│ ├── close.png
│ ├── close1.png
│ ├── hide_detail.png
│ ├── left-arrow.png
│ ├── lightning.png
│ ├── loading_dv0.png
│ ├── loading_dv1.png
│ ├── loading_dv2.png
│ ├── loading_dv3.png
│ ├── loading_dv4.png
│ ├── logo_0016.png
│ ├── logo_0032.png
│ ├── logo_0400.png
│ ├── logo_0400_old.png
│ ├── mask.png
│ ├── money_dollar.png
│ ├── money_euro.png
│ ├── money_pound.png
│ ├── off-button.png
│ ├── on-button.png
│ ├── paypal.png
│ ├── powerapps16.png
│ ├── right-arrow.png
│ ├── server.png
│ ├── shortcut.png
│ ├── star.png
│ ├── three_tags.png
│ ├── twitter.png
│ └── www_page.png
├── Startup
│ └── NugetCleanup.Command.xml
├── UserControls
│ ├── LargePluginModel.Designer.cs
│ ├── LargePluginModel.cs
│ ├── LargePluginModel.resx
│ ├── PluginModel.cs
│ ├── SmallPluginLabel.cs
│ ├── SmallPluginModel.Designer.cs
│ ├── SmallPluginModel.cs
│ └── SmallPluginModel.resx
├── XrmToolBox.csproj
├── XrmToolBox.csproj.vspscc
├── XrmToolBox201512.ico
├── app.config
├── app.manifest
├── favicon3Fr.ico
└── packages.config
└── packages
└── repositories.config
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [mscrmtools]
4 | custom: ["https://paypal.me/tanguytouzard"]
5 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: A template to report a bug
4 | title: "[BUG]"
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior
15 |
16 | **Expected behavior**
17 | A clear and concise description of what you expected to happen.
18 |
19 | **Screenshots**
20 | If applicable, add screenshots to help explain your problem.
21 |
22 | **Desktop (please complete the following information):**
23 | - XrmToolbox Version
24 | - Tool version
25 |
26 | **Additional context**
27 | Add any other context about the problem here.
28 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: "[Improvement]"
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/issue_template.md:
--------------------------------------------------------------------------------
1 | Before creating an issue, please ensure you are in the appropriate repository:
2 | - for connectivity issue, please submit an issue in [MscrmTools.Xrm.Connection repository](https://github.com/MscrmTools/MscrmTools.Xrm.Connection/issues)
3 | - for plugins issue, we only accept issue for plugins from MscrmTools that don't have their own repository (which are, as of today: MsCrmTools.FetchXmlTester, MsCrmTools.MetadataDocumentGenerator, MsCrmTools.SolutionImport and MsCrmTools.SynchronousEventOrderEditor). Any other plugin issue should be created on their respective repository
4 |
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | www.xrmtoolbox.com
--------------------------------------------------------------------------------
/LicenseChecker/McTools.StopAdvertisement.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/LicenseChecker/McTools.StopAdvertisement.dll
--------------------------------------------------------------------------------
/Plugins/MsCrmTools.SampleTool/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : MsCrmTools.SampleTool
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using System.Reflection;
7 | using System.Runtime.InteropServices;
8 |
9 | [assembly: AssemblyTitle("A Sample Tool")]
10 | [assembly: AssemblyDescription("Illustrates how to create a tool to be used with the toolbox")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("MscrmTools")]
13 | [assembly: AssemblyProduct("MsCrmTools.SampleTool")]
14 | [assembly: AssemblyCopyright("Copyright © MscrmTools 2012")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 | [assembly: ComVisible(false)]
18 | [assembly: Guid("a8234074-9ff2-4a4c-b580-a2ad4507a116")]
19 | [assembly: AssemblyVersion("1.2018.6.23")]
20 | [assembly: AssemblyFileVersion("1.2018.6.23")]
--------------------------------------------------------------------------------
/Plugins/MsCrmTools.SampleTool/Settings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace MsCrmTools.SampleTool
8 | {
9 | public class Settings
10 | {
11 | public string Var1 { get; set; }
12 | public bool Var2 { get; set; }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # XrmToolBox
2 |
3 | [](https://gitter.im/MscrmTools/XrmToolBox?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4 |
5 | [](https://ci.appveyor.com/project/MscrmTools/xrmtoolbox)
6 |
7 |
8 | XrmToolBox is a Windows application that connects to the Common Data Service for Apps (CDS). Dynamics 365 Customer Engagement (CE) applications, like Dynamics 365 for Sales, Service or Talent also use the Common Data Service for Apps as their foundational data service. XrmToolBox, provides tools to ease customization, configuration and operation tasks for anything built on CDS, including Dynamics 365 CE (formerly CRM) and model-driven PowerApps. It is shipped with more than 30 plugins to make administration, customization or configuration tasks easier and less time consuming.
9 |
10 | One of the great points about XrmToolBox is its capability to welcome external plugins written by other developers, just by implementing specific parts of XrmToolBox code.
11 |
12 | # Documentation
13 | The documentation is available through the [Wiki](https://github.com/MscrmTools/XrmToolBox/wiki) of XrmToolBox's GitHub repository. You will find information about prerequisites, a list of existing plugins, help on how to connect to your Microsoft Dynamics CRM deployment and much more…
14 | If you feel you can contribute to this documentation, please create a GitHub account and help me to fill the [Wiki](https://github.com/MscrmTools/XrmToolBox/wiki) with as much interesting content as possible.
15 |
16 | # Report bugs or make suggestions
17 | If you have faced a bug or would like to make a suggestion to improve XrmToolBox and its included plugins, please go the [suggestions](https://github.com/MscrmTools/XrmToolBox/issues) section of XrmToolBox GitHub repository. You will have to create an account if you don't have one yet.
18 |
19 | # Support XrmToolBox
20 |
21 | XrmToolBox is a free tool and will remain like this. But if you think this tool has improved your productivity or saved you time on your Microsoft Dynamics CRM project, then you can help me by donating whatever amount you want through [PayPal](https://www.xrmtoolbox.com/donators/).
22 |
--------------------------------------------------------------------------------
/Referenced Assemblies/ILMerge.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/Referenced Assemblies/ILMerge.exe
--------------------------------------------------------------------------------
/Referenced Assemblies/Microsoft.Crm.Sdk.Proxy.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/Referenced Assemblies/Microsoft.Crm.Sdk.Proxy.dll
--------------------------------------------------------------------------------
/Referenced Assemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/Referenced Assemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll
--------------------------------------------------------------------------------
/Referenced Assemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/Referenced Assemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll
--------------------------------------------------------------------------------
/Referenced Assemblies/Microsoft.Xrm.Sdk.Deployment.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/Referenced Assemblies/Microsoft.Xrm.Sdk.Deployment.dll
--------------------------------------------------------------------------------
/Referenced Assemblies/Microsoft.Xrm.Sdk.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/Referenced Assemblies/Microsoft.Xrm.Sdk.dll
--------------------------------------------------------------------------------
/Referenced Assemblies/Microsoft.Xrm.Tooling.Connector.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/Referenced Assemblies/Microsoft.Xrm.Tooling.Connector.dll
--------------------------------------------------------------------------------
/Referenced Assemblies/Microsoft.Xrm.Tooling.CrmConnectControl.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/Referenced Assemblies/Microsoft.Xrm.Tooling.CrmConnectControl.dll
--------------------------------------------------------------------------------
/XrmToolBox.AutoUpdater/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/XrmToolBox.AutoUpdater/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace XrmToolBox.AutoUpdater
5 | {
6 | internal static class Program
7 | {
8 | ///
9 | /// Point d'entrée principal de l'application.
10 | ///
11 | [STAThread]
12 | private static void Main(string[] args)
13 | {
14 | Application.EnableVisualStyles();
15 | Application.SetCompatibleTextRenderingDefault(false);
16 | Application.Run(new AutoUpdater(args[0]));
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/XrmToolBox.AutoUpdater/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // Les informations générales relatives à un assembly dépendent de
5 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
6 | // associées à un assembly.
7 | [assembly: AssemblyTitle("XrmToolBox.AutoUpdater")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("XrmToolBox.AutoUpdater")]
12 | [assembly: AssemblyCopyright("Copyright © 2016")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
17 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
18 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type.
19 | [assembly: ComVisible(false)]
20 |
21 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
22 | [assembly: Guid("564c72c8-586e-4218-b6b3-f464f7c3903a")]
23 |
24 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes :
25 | //
26 | // Version principale
27 | // Version secondaire
28 | // Numéro de build
29 | // Révision
30 | //
31 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
32 | // en utilisant '*', comme indiqué ci-dessous :
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.1.0.2")]
35 | [assembly: AssemblyFileVersion("1.1.0.2")]
--------------------------------------------------------------------------------
/XrmToolBox.AutoUpdater/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Ce code a été généré par un outil.
4 | // Version du runtime :4.0.30319.42000
5 | //
6 | // Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
7 | // le code est régénéré.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace XrmToolBox.AutoUpdater.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/XrmToolBox.AutoUpdater/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/XrmToolBox.AutoUpdater/XrmToolBox.Updater.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.AutoUpdater/XrmToolBox.Updater.ico
--------------------------------------------------------------------------------
/XrmToolBox.AutoUpdater/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/AdditionalConnections.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using McTools.Xrm.Connection;
4 |
5 | namespace XrmToolBox.Extensibility
6 | {
7 | public class AdditionalConnections
8 | {
9 | private readonly List connections;
10 |
11 | public AdditionalConnections()
12 | {
13 | connections = new List();
14 | }
15 |
16 | public event EventHandler AdditionalConnectionAdded;
17 |
18 | public List Connections => connections;
19 |
20 | public void Add(ConnectionDetail detail)
21 | {
22 | if (connections.Contains(detail)) return;
23 | connections.Add(detail);
24 | AdditionalConnectionAdded?.Invoke(this, new ConnectionDetailEventArgs(detail));
25 | }
26 |
27 | public void Clear()
28 | {
29 | connections.Clear();
30 | }
31 |
32 | public void Remove(ConnectionDetail detail)
33 | {
34 | connections.Remove(detail);
35 | }
36 |
37 | public bool Contains(ConnectionDetail detail)
38 | {
39 | return connections.Contains(detail);
40 | }
41 | }
42 |
43 | public class ConnectionDetailEventArgs : EventArgs
44 | {
45 | public ConnectionDetailEventArgs()
46 | {
47 | }
48 |
49 | public ConnectionDetailEventArgs(ConnectionDetail detail)
50 | {
51 | Detail = detail;
52 | }
53 |
54 | public ConnectionDetail Detail { get; set; }
55 | }
56 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Args/DuplicateToolArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Args
4 | {
5 | public class DuplicateToolArgs : EventArgs
6 | {
7 | public DuplicateToolArgs(object state, bool newConnection)
8 | {
9 | State = state;
10 | NewConnection = newConnection;
11 | }
12 |
13 | public bool NewConnection { get; }
14 | public object State { get; }
15 | }
16 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Args/DuplicateToolWithConnectionArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XrmToolBox.Extensibility.Interfaces;
3 |
4 | namespace XrmToolBox.Extensibility.Args
5 | {
6 | public class DuplicateToolWithConnectionArgs : EventArgs
7 | {
8 | public IDuplicatableTool SourceTool { get; set; }
9 |
10 | public object State { get; set; }
11 | public Lazy Tool { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Args/MessageBusEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility
4 | {
5 | ///
6 | /// Object that passed as argument in message bus communication
7 | ///
8 | public class MessageBusEventArgs : EventArgs
9 | {
10 | ///
11 | /// Initializes a new instance of the class.
12 | ///
13 | /// Unique string name (title) of plugin to call
14 | /// Switch instructing message broker start new instance of the plugin even if one is already present
15 | public MessageBusEventArgs(string targetPlugin, bool newInstance = false)
16 | {
17 | this.TargetPlugin = targetPlugin;
18 | this.NewInstance = newInstance;
19 | }
20 |
21 | ///
22 | /// Gets or sets value indicating whether new instance of target plugin should be created.
23 | ///
24 | public bool NewInstance
25 | {
26 | get;
27 | set;
28 | }
29 |
30 | ///
31 | /// Gets or sets name of plugin to return.
32 | /// This value if not set is resolved by message broker.
33 | ///
34 | public string SourcePlugin
35 | {
36 | get;
37 | set;
38 | }
39 |
40 | ///
41 | /// Gets or sets data will be passed to target plugin.
42 | /// This is dynamic data type. New properties and methods could be added on the fly.
43 | ///
44 | public dynamic TargetArgument
45 | {
46 | get;
47 | set;
48 | }
49 |
50 | ///
51 | /// Gets name of the plugin to start.
52 | /// This value should be set in the constructor.
53 | ///
54 | public string TargetPlugin
55 | {
56 | get;
57 | private set;
58 | }
59 | }
60 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Args/RequestConnectionEventArgs.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using System;
7 | using XrmToolBox.Extensibility.Interfaces;
8 |
9 | namespace XrmToolBox.Extensibility
10 | {
11 | public class RequestConnectionEventArgs : EventArgs
12 | {
13 | ///
14 | /// The name of the action
15 | ///
16 | ///
17 | /// Useful when the connection call back arrives to understand which
18 | /// action required a connection
19 | ///
20 | public string ActionName;
21 |
22 | ///
23 | /// The control that required a connection
24 | ///
25 | public IXrmToolBoxPluginControl Control;
26 |
27 | ///
28 | /// A parameter if passing extra data is needed
29 | ///
30 | public object Parameter;
31 | }
32 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Args/StatusBarMessageEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Args
4 | {
5 | public class StatusBarMessageEventArgs : EventArgs
6 | {
7 | public StatusBarMessageEventArgs(string message)
8 | {
9 | Message = message;
10 | }
11 |
12 | public StatusBarMessageEventArgs(int? progress)
13 | {
14 | if (progress.HasValue && (progress < 0 || progress > 100))
15 | {
16 | throw new Exception("Progress value has to be between 0 and 100");
17 | }
18 |
19 | Progress = progress;
20 | }
21 |
22 | public StatusBarMessageEventArgs(int? progress, string message)
23 | {
24 | Message = message;
25 |
26 | if (progress.HasValue && (progress < 0 || progress > 100))
27 | {
28 | throw new Exception("Progress value has to be between 0 and 100");
29 | }
30 |
31 | Progress = progress;
32 | }
33 |
34 | public string Message { get; private set; }
35 | public int? Progress { get; private set; }
36 | }
37 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/ExternalMethodCallerInfo.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // Author : Daryl LaBar http://www.linkedin.com/pub/daryl-labar/4/988/5b8/
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://www.dotnetdust.blogspot.com/
5 |
6 | using System;
7 |
8 | namespace XrmToolBox.Extensibility
9 | {
10 | public class ExternalMethodCallerInfo
11 | {
12 | public Action ExternalAction { get; set; }
13 | public T Parameter { get; set; }
14 | }
15 |
16 | public class ExternalMethodCallerInfo
17 | {
18 | public ExternalMethodCallerInfo(Action action)
19 | {
20 | ExternalAction = action;
21 | }
22 |
23 | public Action ExternalAction { get; set; }
24 | }
25 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Forms/CurrencySelectionDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Web;
4 | using System.Windows.Forms;
5 | using XrmToolBox.Extensibility.Interfaces;
6 |
7 | namespace XrmToolBox.Extensibility.Forms
8 | {
9 | public partial class CurrencySelectionDialog : Form
10 | {
11 | private IPayPalPlugin pp;
12 |
13 | public CurrencySelectionDialog(IPayPalPlugin pp)
14 | {
15 | InitializeComponent();
16 |
17 | this.pp = pp;
18 | }
19 |
20 | private void btn_Click(object sender, EventArgs e)
21 | {
22 | string currency = "USD";
23 | if (sender == btnEuro)
24 | {
25 | currency = "EUR";
26 | }
27 | else if (sender == btnPound)
28 | {
29 | currency = "GBP";
30 | }
31 |
32 | var url = string.Format(
33 | "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business={0}&lc={1}&item_name={2}¤cy_code={3}&bn=PP%2dDonationsBF",
34 | pp.EmailAccount,
35 | "EN",
36 | HttpUtility.UrlEncode(pp.DonationDescription),
37 | currency);
38 |
39 | Process.Start(url);
40 | Close();
41 | }
42 | }
43 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Images/progress.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Images/progress.gif
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IAboutPlugin.cs:
--------------------------------------------------------------------------------
1 | namespace XrmToolBox.Extensibility.Interfaces
2 | {
3 | public interface IAboutPlugin
4 | {
5 | void ShowAboutDialog();
6 | }
7 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/ICodePlexPlugin.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | ///
6 | /// This interface allows a user to specify CodePlex project name to add a
7 | /// menu to redirect end user to CodePlex project pages (issues, discussions)
8 | ///
9 | public interface ICodePlexPlugin
10 | {
11 | ///
12 | /// Name of the CodePlex project to build a CodePlex url formatted as
13 | /// following : http://CodePlexUrlName.codeplex.com
14 | ///
15 | String CodePlexUrlName { get; }
16 | }
17 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/ICompanion.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | public enum RightOrLeft
6 | {
7 | Left,
8 | Right,
9 | Bottom
10 | }
11 |
12 | public interface ICompanion
13 | {
14 | RightOrLeft GetPosition();
15 | }
16 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IConnectionControlUpdateSettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | public interface IConnectionControlUpdateSettings
6 | {
7 | bool NewVersion { get; set; }
8 | string ReleaseNotes { get; set; }
9 | bool RestartNow { get; set; }
10 | string Version { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IDuplicatableTool.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XrmToolBox.Extensibility.Args;
3 |
4 | namespace XrmToolBox.Extensibility.Interfaces
5 | {
6 | public interface IDuplicatableTool
7 | {
8 | ///
9 | /// Ask XrmToolBox to duplicate this tool
10 | ///
11 | event EventHandler DuplicateRequested;
12 |
13 | ///
14 | /// Apply state retrieved from another tool instance to the current tool
15 | ///
16 | /// State to apply
17 | void ApplyState(object state);
18 |
19 | ///
20 | /// Get the state of the current tool
21 | ///
22 | ///
23 | object GetState();
24 | }
25 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IEarlyBoundProxy.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Reflection;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace XrmToolBox.Extensibility.Interfaces
9 | {
10 | public interface IEarlyBoundProxy
11 | {
12 | Assembly GetEarlyBoundProxyAssembly();
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IGitHubPlugin.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | ///
6 | /// This interface allows a user to specify Github user name and repository name
7 | /// to add a menu to redirect end user to Github issues page
8 | ///
9 | public interface IGitHubPlugin
10 | {
11 | ///
12 | /// Github Repository name
13 | ///
14 | String RepositoryName { get; }
15 |
16 | ///
17 | /// Github Username
18 | ///
19 | String UserName { get; }
20 | }
21 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IHelpPlugin.cs:
--------------------------------------------------------------------------------
1 | namespace XrmToolBox.Extensibility.Interfaces
2 | {
3 | public interface IHelpPlugin
4 | {
5 | string HelpUrl { get; }
6 | }
7 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IMessageBusHost.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | ///
6 | /// Interface which plugins should implement to be able communicate between each other
7 | ///
8 | public interface IMessageBusHost
9 | {
10 | ///
11 | /// Event raised by plugin notifying broker that new message is ready to dispatch
12 | ///
13 | event EventHandler OnOutgoingMessage;
14 |
15 | ///
16 | /// Method that accepts dispatched message
17 | ///
18 | ///
19 | void OnIncomingMessage(MessageBusEventArgs message);
20 | }
21 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/INoConnectionRequired.cs:
--------------------------------------------------------------------------------
1 | namespace XrmToolBox.Extensibility.Interfaces
2 | {
3 | public interface INoConnectionRequired
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/INoHighlightingPlugin.cs:
--------------------------------------------------------------------------------
1 | namespace XrmToolBox.Extensibility.Interfaces
2 | {
3 | public interface INoHighlightingPlugin
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IPayPalPlugin.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | ///
6 | /// This interface allows a user to specify Paypal account
7 | /// to add a menu to redirect end user to Paypal donation page
8 | ///
9 | public interface IPayPalPlugin
10 | {
11 | ///
12 | /// Description to add in Donation page
13 | ///
14 | String DonationDescription { get; }
15 |
16 | ///
17 | /// PayPal email account
18 | ///
19 | String EmailAccount { get; }
20 | }
21 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IPluginMetadata.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | public interface IPluginMetadata
6 | {
7 | string BackgroundColor { get; }
8 | string BigImageBase64 { get; }
9 | string Description { get; }
10 | string Name { get; }
11 | string PrimaryFontColor { get; }
12 | string SecondaryFontColor { get; }
13 | string SmallImageBase64 { get; }
14 | }
15 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IPluginMetadataExt.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace XrmToolBox.Extensibility.Interfaces
5 | {
6 | public interface IPluginMetadataExt : IPluginMetadata
7 | {
8 | DateTime AddedOn { get; set; }
9 | string AssemblyFilename { get; }
10 | string AssemblyQualifiedName { get; }
11 | List Categories { get; }
12 | string Company { get; }
13 | string Control { get; }
14 | Guid Id { get; }
15 | string[] Interfaces { get; }
16 | int numberOfUse { get; set; }
17 | string PluginType { get; }
18 | decimal Rating { get; set; }
19 | string Version { get; }
20 | }
21 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IPrivatePlugin.cs:
--------------------------------------------------------------------------------
1 | namespace XrmToolBox.Extensibility.Interfaces
2 | {
3 | ///
4 | /// This interface just helps to make sure the tool control that implements
5 | /// it does not report any usage to XrmToolBox Application Insights
6 | ///
7 | public interface IPrivatePlugin
8 | {
9 | }
10 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/ISettingsPlugin.cs:
--------------------------------------------------------------------------------
1 | namespace XrmToolBox.Extensibility.Interfaces
2 | {
3 | public interface ISettingsPlugin
4 | {
5 | void ShowSettings();
6 | }
7 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IShortcutReceiver.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | public interface IShortcutReceiver
6 | {
7 | void ReceiveKeyDownShortcut(KeyEventArgs e);
8 |
9 | void ReceiveKeyPressShortcut(KeyPressEventArgs e);
10 |
11 | void ReceiveKeyUpShortcut(KeyEventArgs e);
12 |
13 | void ReceivePreviewKeyDownShortcut(PreviewKeyDownEventArgs e);
14 | }
15 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IStatusBarMessager.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XrmToolBox.Extensibility.Args;
3 |
4 | namespace XrmToolBox.Extensibility.Interfaces
5 | {
6 | ///
7 | /// This interface allows to send message or progress to main application
8 | /// to display progress data in the status bar
9 | ///
10 | [Obsolete("Please use the interface IStatusBarMessenger instead")]
11 | public interface IStatusBarMessager
12 | {
13 | event EventHandler SendMessageToStatusBar;
14 | }
15 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IStatusBarMessenger.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XrmToolBox.Extensibility.Args;
3 |
4 | namespace XrmToolBox.Extensibility.Interfaces
5 | {
6 | ///
7 | /// This interface allows to send message or progress to main application
8 | /// to display progress data in the status bar
9 | ///
10 | public interface IStatusBarMessenger
11 | {
12 | event EventHandler SendMessageToStatusBar;
13 | }
14 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IToolLibrary.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Threading.Tasks;
4 | using System.Windows.Forms;
5 |
6 | namespace XrmToolBox.Extensibility.Interfaces
7 | {
8 | public interface IToolLibrary
9 | {
10 | bool AllowConnectionControlPreRelease { get; set; }
11 |
12 | List Categories { get; }
13 |
14 | int PluginsCount { get; }
15 |
16 | int PluginsUpdatesCount { get; }
17 |
18 | List Tools { get; }
19 |
20 | string GetPluginProjectUrlByFileName(string fileName);
21 |
22 | IXrmToolBoxLibraryTool GetPluginUpdateByFile(string location);
23 |
24 | void InstallOneToolUpdate(IXrmToolBoxLibraryTool tool, bool onNextRestart, Form form);
25 |
26 | Task IsConnectionControlsUpdateAvailable(string connectionControlsVersion);
27 |
28 | Task LoadTools(bool fromStorePortal = true);
29 |
30 | Task PrepareConnectionControlsUpdate(Form form, bool restart);
31 |
32 | void UninstallByFileName(string fileName);
33 | }
34 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IToolLibrarySettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | public interface IToolLibrarySettings
6 | {
7 | string AdditionalRepositories { get; set; }
8 | bool DisplayPluginsStoreOnlyIfUpdates { get; set; }
9 | bool DisplayPluginsStoreOnStartup { get; set; }
10 | bool LibraryFilterMvp { get; set; }
11 | bool LibraryFilterNew { get; set; }
12 | bool LibraryFilterOpenSource { get; set; }
13 | bool LibraryFilterRating { get; set; }
14 | bool LibraryShowIncompatible { get; set; }
15 | bool LibraryShowInstalled { get; set; }
16 | bool LibraryShowNotInstalled { get; set; }
17 | bool LibraryShowUpdates { get; set; }
18 | int MostRatedMinNumberOfVotes { get; set; }
19 | decimal MostRatedMinRatingAverage { get; set; }
20 | string RepositoryUrl { get; set; }
21 |
22 | #region Proxy
23 |
24 | bool ByPassProxyOnLocal { get; set; }
25 | string Password { get; set; }
26 | string ProxyAddress { get; set; }
27 | bool UseCustomProxy { get; set; }
28 | bool UseDefaultCredentials { get; set; }
29 | bool UseInternetExplorerProxy { get; set; }
30 | string UserName { get; set; }
31 |
32 | #endregion Proxy
33 | }
34 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IWorkerHost.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // Author : Daryl LaBar http://www.linkedin.com/pub/daryl-labar/4/988/5b8/
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://www.dotnetdust.blogspot.com/
5 |
6 | using System;
7 | using System.ComponentModel;
8 | using System.Windows.Forms;
9 |
10 | namespace XrmToolBox.Extensibility.Interfaces
11 | {
12 | public interface IWorkerHost
13 | {
14 | Control.ControlCollection Controls { get; }
15 |
16 | void RaiseRequestConnectionEvent(RequestConnectionEventArgs args);
17 |
18 | void SetWorkingMessage(string message, int width, int height);
19 |
20 | void WorkAsync(WorkAsyncInfo info);
21 | }
22 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IXrmToolBoxLibraryTool.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace XrmToolBox.Extensibility.Interfaces
5 | {
6 | public interface IXrmToolBoxLibraryTool
7 | {
8 | string CategoriesList { get; }
9 |
10 | List Files { get; }
11 |
12 | string LatestReleaseNote { get; }
13 | string LogoUrl { get; }
14 | string Name { get; }
15 | string Version { get; }
16 | }
17 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IXrmToolBoxPlugin.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility.Interfaces
4 | {
5 | public interface IXrmToolBoxPlugin
6 | {
7 | string GetCompany();
8 |
9 | IXrmToolBoxPluginControl GetControl();
10 |
11 | string GetAssemblyQualifiedName();
12 |
13 | string GetVersion();
14 | }
15 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Interfaces/IXrmToolBoxPluginControl.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using McTools.Xrm.Connection;
7 | using Microsoft.Xrm.Sdk;
8 | using System;
9 |
10 | namespace XrmToolBox.Extensibility.Interfaces
11 | {
12 | public interface IXrmToolBoxPluginControl
13 | {
14 | ///
15 | /// EventHandler to close the current tool
16 | ///
17 | event EventHandler OnCloseTool;
18 |
19 | ///
20 | /// EventHandler to request a connection to an organization
21 | ///
22 | event EventHandler OnRequestConnection;
23 |
24 | ///
25 | /// EventHandler when a work async is started
26 | ///
27 | event EventHandler OnWorkAsync;
28 |
29 | ///
30 | /// Gets the organization service used by the tool
31 | ///
32 | IOrganizationService Service { get; }
33 |
34 | ///
35 | /// Method to allow plugin to Cancel a closing event, or perform any save events required before closing.
36 | ///
37 | ///
38 | void ClosingPlugin(PluginCloseInfo info);
39 |
40 | ///
41 | /// Updates the organization service used by the tool
42 | ///
43 | /// Organization service
44 | /// Details of the connection
45 | /// Action that requested a service update
46 | /// Parameter passed when requesting a service update
47 | void UpdateConnection(IOrganizationService newService, ConnectionDetail connectionDetail, string actionName = "", object parameter = null);
48 | }
49 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Manifest/Manifest.cs:
--------------------------------------------------------------------------------
1 | #region File header
2 | // Project / File: XrmToolBox / XrmToolBox.Extensibility / Manifest.cs
3 | // Author: Ahmed Elsawalhy (yagasoft.com)
4 | // Contributors:
5 | // Version: 1.2021.12.53
6 | // Created: 2021 / 09 / 19
7 | #endregion
8 |
9 | #region Imports
10 |
11 | using System;
12 |
13 | #endregion
14 |
15 | namespace XrmToolBox.Extensibility.Manifest
16 | {
17 | public class Manifest
18 | {
19 | public AssemblyInfo[] ScannedAssemblies { get; set; } = Array.Empty();
20 | public PluginMetadata[] PluginMetadata { get; set; } = Array.Empty();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Manifest/PluginMetadata.cs:
--------------------------------------------------------------------------------
1 | #region File header
2 |
3 | // Project / File: XrmToolBox / XrmToolBox.Extensibility / PluginMetadata.cs
4 | // Author: Ahmed Elsawalhy (yagasoft.com)
5 | // Contributors:
6 | // Version: 1.2021.12.53
7 | // Created: 2021 / 09 / 19
8 |
9 | #endregion
10 |
11 | #region Imports
12 |
13 | using System;
14 | using System.Collections.Generic;
15 | using XrmToolBox.Extensibility.Interfaces;
16 |
17 | #endregion
18 |
19 | namespace XrmToolBox.Extensibility.Manifest
20 | {
21 | public class PluginMetadata : IPluginMetadataExt
22 | {
23 | public DateTime AddedOn { get; set; }
24 | public string AssemblyFilename { get; set; }
25 | public string AssemblyQualifiedName { get; set; }
26 | public string BackgroundColor { get; set; }
27 | public string BigImageBase64 { get; set; }
28 | public List Categories { get; set; } = new List();
29 | public string Company { get; set; }
30 | public string Control { get; set; }
31 | public string Description { get; set; }
32 | public Guid Id { get; set; }
33 | public string[] Interfaces { get; set; }
34 | public string Name { get; set; }
35 | public int numberOfUse { get; set; }
36 | public string PluginType { get; set; }
37 | public string PrimaryFontColor { get; set; }
38 | public decimal Rating { get; set; }
39 | public string SecondaryFontColor { get; set; }
40 | public string SmallImageBase64 { get; set; }
41 | public string Version { get; set; }
42 | }
43 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Paths.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | namespace XrmToolBox.Extensibility
5 | {
6 | public static class Paths
7 | {
8 | private static string rootPath;
9 | private static string userApplicationDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
10 |
11 | public static string PluginsPath
12 | {
13 | get
14 | {
15 | return Path.Combine(rootPath?? XrmToolBoxPath, "Plugins");
16 | }
17 | }
18 | public static string LogsPath
19 | {
20 | get
21 | {
22 | return Path.Combine(rootPath ?? XrmToolBoxPath, "Logs");
23 | }
24 | }
25 | public static string SettingsPath
26 | {
27 | get
28 | {
29 | return Path.Combine(rootPath ?? XrmToolBoxPath, "Settings");
30 | }
31 | }
32 | public static string ConnectionsPath
33 | {
34 | get
35 | {
36 | return Path.Combine(rootPath ?? XrmToolBoxPath, "Connections");
37 | }
38 | }
39 |
40 | public static string XrmToolBoxPath
41 | {
42 | get
43 | {
44 | return Path.Combine(rootPath ?? Path.Combine(userApplicationDataFolder, "MscrmTools", "XrmToolBox"));
45 | }
46 | }
47 |
48 | public static void OverrideRootPath(string newRootPath)
49 | {
50 | if(!Directory.Exists(Path.GetFullPath(Environment.ExpandEnvironmentVariables(newRootPath))))
51 | throw new DirectoryNotFoundException(newRootPath);
52 |
53 | rootPath = newRootPath;
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/PluginBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XrmToolBox.Extensibility.Interfaces;
3 |
4 | namespace XrmToolBox.Extensibility
5 | {
6 | public abstract class PluginBase : IXrmToolBoxPlugin
7 | {
8 | public string GetAssemblyQualifiedName()
9 | {
10 | return GetType().AssemblyQualifiedName;
11 | }
12 |
13 | public string GetCompany()
14 | {
15 | return GetType().GetCompany();
16 | }
17 |
18 | public abstract IXrmToolBoxPluginControl GetControl();
19 |
20 | public virtual Guid GetId()
21 | {
22 | return Guid.Empty;
23 | }
24 |
25 | public string GetVersion()
26 | {
27 | return GetType().Assembly.GetName().Version.ToString();
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/PluginCloseInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace XrmToolBox.Extensibility
5 | {
6 | public enum ToolBoxCloseReason
7 | {
8 | None,
9 | CloseAll,
10 | CloseAllExceptActive,
11 | CloseCurrent,
12 | CloseMiddleClick,
13 | CloseHotKey,
14 | PluginRequest,
15 | }
16 |
17 | public class PluginCloseInfo
18 | {
19 | public PluginCloseInfo()
20 | {
21 | FormReason = CloseReason.None;
22 | ToolBoxReason = ToolBoxCloseReason.None;
23 | Silent = false;
24 | Cancel = false;
25 | }
26 |
27 | public PluginCloseInfo(CloseReason reason) : this()
28 | {
29 | if (reason == CloseReason.None)
30 | {
31 | throw new ArgumentException("None is not a valid CloseReason");
32 | }
33 | FormReason = reason;
34 | }
35 |
36 | public PluginCloseInfo(ToolBoxCloseReason reason) : this()
37 | {
38 | if (reason == ToolBoxCloseReason.None)
39 | {
40 | throw new ArgumentException("None is not a valid ToolBoxCloseReason");
41 | }
42 | ToolBoxReason = reason;
43 | }
44 |
45 | public bool Silent { get; set; }
46 | public bool Cancel { get; set; }
47 | public CloseReason FormReason { get; set; }
48 | public ToolBoxCloseReason ToolBoxReason { get; set; }
49 | }
50 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/PluginNotFoundException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.Extensibility
4 | {
5 | [Serializable()]
6 | public class PluginNotFoundException : Exception
7 | {
8 | public PluginNotFoundException(string format, params object[] args)
9 | : base(String.Format(format, args))
10 | {
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // Les informations générales relatives à un assembly dépendent de
5 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
6 | // associées à un assembly.
7 | [assembly: AssemblyTitle("XrmToolBox.Extensibility")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("XrmToolBox.Extensibility")]
12 | [assembly: AssemblyCopyright("Copyright © 2015")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
17 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
18 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type.
19 | [assembly: ComVisible(false)]
20 |
21 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
22 | [assembly: Guid("d9c6659a-eb9f-4c00-961b-aafea12246bc")]
23 |
24 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes :
25 | //
26 | // Version principale
27 | // Version secondaire
28 | // Numéro de build
29 | // Révision
30 | //
31 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
32 | // en utilisant '*', comme indiqué ci-dessous :
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.2024.9.69")]
35 | [assembly: AssemblyFileVersion("1.2024.9.69")]
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Resources/error_52.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Resources/error_52.gif
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Resources/money_dollar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Resources/money_dollar.png
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Resources/money_euro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Resources/money_euro.png
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Resources/money_pound.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Resources/money_pound.png
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Resources/notif_icn_alert16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Resources/notif_icn_alert16.png
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Resources/notif_icn_crit16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Resources/notif_icn_crit16.png
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Resources/notif_icn_info16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Resources/notif_icn_info16.png
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Resources/paypal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Resources/paypal.png
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/Resources/progress_new.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.Extensibility/Resources/progress_new.gif
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/UserControls/NotificationArea.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Windows.Forms;
4 |
5 | namespace XrmToolBox.Extensibility.UserControls
6 | {
7 | public partial class NotificationArea : UserControl
8 | {
9 | private Uri moreInfoUri;
10 |
11 | public NotificationArea()
12 | {
13 | InitializeComponent();
14 | }
15 |
16 | private void Initialize(string message, Uri infoUri, int height = 30)
17 | {
18 | lblMessage.Text = message;
19 | Height = height;
20 | llLearMore.Visible = infoUri != null;
21 | moreInfoUri = infoUri;
22 | Visible = true;
23 | }
24 |
25 | public void ShowInfoNotification(string message, Uri infoUri, int height = 30)
26 | {
27 | Initialize(message, infoUri, height);
28 |
29 | pbNotif.Image = Icons.notif_icn_info16;
30 | }
31 |
32 | public void ShowWarningNotification(string message, Uri infoUri, int height = 30)
33 | {
34 | Initialize(message, infoUri, height);
35 |
36 | pbNotif.Image = Icons.notif_icn_alert16;
37 | }
38 |
39 | public void ShowErrorNotification(string message, Uri infoUri, int height = 30)
40 | {
41 | Initialize(message, infoUri, height);
42 |
43 | pbNotif.Image = Icons.notif_icn_crit16;
44 | }
45 |
46 | private void llDismiss_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
47 | {
48 | Visible = false;
49 | }
50 |
51 | private void llLearnMore_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
52 | {
53 | Process.Start(moreInfoUri.AbsoluteUri);
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/UserControls/PluginModel.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using System;
7 | using System.Drawing;
8 | using System.Drawing.Drawing2D;
9 | using System.Windows.Forms;
10 | using XrmToolBox.Extensibility.Forms;
11 | using XrmToolBox.Extensibility.Interfaces;
12 |
13 | namespace XrmToolBox.Extensibility.UserControls
14 | {
15 | public class PluginModel : UserControl
16 | {
17 | protected int numberOfDaysToShowNewRibbon = 7;
18 |
19 | #region Delegates
20 |
21 | public delegate void ClickedEventHandler(object sender, EventArgs e);
22 |
23 | #endregion Delegates
24 |
25 | #region Event Handlers
26 |
27 | public virtual event EventHandler Clicked;
28 |
29 | #endregion Event Handlers
30 |
31 | protected void DrawRotatedTextAt(Graphics gr, float angle,
32 | string txt, int x, int y, Font the_font, Brush the_brush)
33 | {
34 | // Save the graphics state.
35 | GraphicsState state = gr.Save();
36 | gr.ResetTransform();
37 |
38 | // Rotate.
39 | gr.RotateTransform(angle);
40 |
41 | // Translate to desired position. Be sure to append
42 | // the rotation so it occurs after the rotation.
43 | gr.TranslateTransform(x, y, MatrixOrder.Append);
44 |
45 | // Draw the text at the origin.
46 | gr.DrawString(txt, the_font, the_brush, 0, 0);
47 |
48 | // Restore the graphics state.
49 | gr.Restore(state);
50 | }
51 |
52 | protected void OpenPayPalDonationDialog()
53 | {
54 | if (((Lazy)Tag).Value is IPayPalPlugin pp)
55 | {
56 | using (var dialog = new CurrencySelectionDialog(pp))
57 | {
58 | dialog.ShowDialog(Parent);
59 | }
60 | }
61 | }
62 |
63 | private void InitializeComponent()
64 | {
65 | this.SuspendLayout();
66 | //
67 | // PluginModel
68 | //
69 | this.Name = "PluginModel";
70 | this.ResumeLayout(false);
71 | }
72 | }
73 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/UserControls/SmallPluginLabel.cs:
--------------------------------------------------------------------------------
1 | using System.Drawing;
2 | using System.Windows.Forms;
3 |
4 | namespace XrmToolBox.Extensibility.UserControls
5 | {
6 | internal class SmallPluginLabel : Label
7 | {
8 | private Color primaryFontColor;
9 | private Color secondaryFontColor;
10 |
11 | public Color PrimaryFontColor
12 | {
13 | set { primaryFontColor = value; }
14 | }
15 |
16 | public Color SecondaryFontColor
17 | {
18 | set
19 | {
20 | secondaryFontColor = value;
21 | }
22 | }
23 |
24 | protected override void OnPaint(PaintEventArgs e)
25 | {
26 | Point drawPoint = new Point(0, 10);
27 |
28 | try
29 | {
30 | int indexOfBy = Text.IndexOf("by");
31 | int indexOfSeparator = Text.IndexOf(" - ", indexOfBy);
32 |
33 | string firstPart = Text.Substring(0, indexOfBy);
34 | string secondPart = Text.Substring(indexOfBy, indexOfSeparator - indexOfBy);
35 | string thirdPart = Text.Remove(0, indexOfSeparator);
36 |
37 | Font normalFont = this.Font;
38 |
39 | Font smallFont = new Font(normalFont.FontFamily, normalFont.Size - 4);
40 |
41 | Size normalSize1 = TextRenderer.MeasureText(firstPart, normalFont);
42 | Size smallSize = TextRenderer.MeasureText(secondPart, smallFont);
43 | Size normalSize2 = TextRenderer.MeasureText(thirdPart, normalFont);
44 |
45 | Rectangle normalRect1 = new Rectangle(drawPoint, normalSize1);
46 | Rectangle smallRect = new Rectangle(new Point(normalSize1.Width - 10, 15), smallSize);
47 | Rectangle normalRect2 = new Rectangle(new Point(smallSize.Width + normalSize1.Width - 20, 10), normalSize2);
48 |
49 | TextRenderer.DrawText(e.Graphics, firstPart, normalFont, normalRect1, primaryFontColor); //ForeColor);
50 | TextRenderer.DrawText(e.Graphics, secondPart, smallFont, smallRect, secondaryFontColor);//Color.Gray);
51 | TextRenderer.DrawText(e.Graphics, thirdPart, normalFont, normalRect2, primaryFontColor); //ForeColor);
52 | }
53 | catch
54 | {
55 | TextRenderer.DrawText(e.Graphics, Text, Font, drawPoint, ForeColor);
56 | }
57 | }
58 | }
59 | }
--------------------------------------------------------------------------------
/XrmToolBox.Extensibility/WorkAsyncInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Windows.Forms;
4 |
5 | namespace XrmToolBox.Extensibility
6 | {
7 | public class WorkAsyncInfo
8 | {
9 | public WorkAsyncInfo()
10 | {
11 | Message = "Working...";
12 | MessageWidth = 340;
13 | MessageHeight = 150;
14 | IsCancelable = false;
15 | }
16 |
17 | ///
18 | /// Constructor for non cancelable Work
19 | ///
20 | /// The message.
21 | /// The work.
22 | public WorkAsyncInfo(string message, Action work) : this(message, (s, e) => { work(e); })
23 | {
24 | }
25 |
26 | ///
27 | /// Constructor for cancelable Work
28 | ///
29 | /// The message.
30 | /// The work.
31 | public WorkAsyncInfo(string message, Action work) : this(message)
32 | {
33 | Work = work;
34 | }
35 |
36 | private WorkAsyncInfo(string message)
37 | {
38 | Message = message;
39 | MessageWidth = 340;
40 | MessageHeight = 150;
41 | IsCancelable = false;
42 | }
43 |
44 | public object AsyncArgument { get; set; }
45 | public Control Host { get; set; }
46 | public bool IsCancelable { get; set; }
47 | public string Message { get; set; }
48 | public int MessageHeight { get; set; }
49 |
50 | public int MessageWidth { get; set; }
51 |
52 | public Action PostWorkCallBack { get; set; }
53 |
54 | public Action ProgressChanged { get; set; }
55 |
56 | ///
57 | /// Gets or sets the work to be performed Asynchronously.
58 | ///
59 | ///
60 | /// The work.
61 | ///
62 | public Action Work { get; set; }
63 |
64 | internal void PerformProgressChange(object worker, ProgressChangedEventArgs args)
65 | {
66 | ProgressChanged(args);
67 | }
68 |
69 | internal void PerformWork(object worker, DoWorkEventArgs args)
70 | {
71 | Work((BackgroundWorker)worker, args);
72 | }
73 | }
74 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/ConnectionControlsUpdateSettings.cs:
--------------------------------------------------------------------------------
1 | using XrmToolBox.Extensibility.Interfaces;
2 |
3 | namespace XrmToolBox.PluginsStore
4 | {
5 | public class ConnectionControlsUpdateSettings : IConnectionControlUpdateSettings
6 | {
7 | public bool NewVersion { get; set; }
8 | public string ReleaseNotes { get; set; }
9 | public bool RestartNow { get; set; }
10 | public string Version { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/Extensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Linq;
4 | using System.Reflection;
5 | using XrmToolBox.Extensibility;
6 | using XrmToolBox.Extensibility.Interfaces;
7 |
8 | namespace XrmToolBox.PluginsStore
9 | {
10 | public static class FileInfoExtensions
11 | {
12 | ///
13 | /// Checks if the current file contains types that implement
14 | /// IXrmToolBoxPlugin interface
15 | ///
16 | /// Current file info
17 | /// Value that indicates if the current file contains types that implement
18 | /// IXrmToolBoxPlugin interface
19 | public static bool ImplementsXrmToolBoxPlugin(this FileInfo fi)
20 | {
21 | try
22 | {
23 | var assembly = Assembly.LoadFile(fi.FullName);
24 |
25 | foreach (var type in assembly.GetTypes())
26 | {
27 | if (type.GetInterfaces().Contains(typeof(IXrmToolBoxPlugin)))
28 | {
29 | return true;
30 | }
31 | }
32 | return false;
33 | }
34 | catch (Exception error)
35 | {
36 | var lm = new LogManager(typeof(StoreFromPortal));
37 | lm.LogError($"Unable to check if {fi.Name} is implementing interface IXrmToolBoxPlugin: {error.Message}");
38 | return false;
39 | }
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/InstallationInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.IO;
4 | using System.Windows.Forms;
5 | using System.Xml;
6 | using XrmToolBox.Extensibility;
7 |
8 | namespace XrmToolBox.PluginsStore
9 | {
10 | public class InstallationInfo
11 | {
12 | private const string OptionFileName = "XrmToolBox.Installation.xml";
13 |
14 | private static InstallationInfo instance;
15 |
16 | private InstallationInfo()
17 | {
18 | }
19 |
20 | public static InstallationInfo Instance
21 | {
22 | get
23 | {
24 | if (instance == null)
25 | {
26 | instance = Load();
27 | }
28 |
29 | if (instance?.InstallationId == Guid.Empty)
30 | {
31 | instance?.Save();
32 | }
33 |
34 | return instance;
35 | }
36 | }
37 |
38 | public Guid InstallationId { get; set; }
39 | public DateTime InstallationDate { get; set; } = DateTime.Now;
40 |
41 | public void Save()
42 | {
43 | if (InstallationId == Guid.Empty)
44 | {
45 | InstallationId = Guid.NewGuid();
46 | }
47 | if (!Directory.Exists(Paths.SettingsPath))
48 | {
49 | Directory.CreateDirectory(Paths.SettingsPath);
50 | }
51 |
52 | var settingsFile = Path.Combine(Paths.SettingsPath, OptionFileName);
53 |
54 | XmlSerializerHelper.SerializeToFile(this, settingsFile);
55 | }
56 |
57 | private static InstallationInfo Load()
58 | {
59 | if (!Directory.Exists(Paths.SettingsPath))
60 | {
61 | Directory.CreateDirectory(Paths.SettingsPath);
62 | }
63 |
64 | var settingsFile = Path.Combine(Paths.SettingsPath, OptionFileName);
65 |
66 | if (File.Exists(settingsFile))
67 | {
68 | try
69 | {
70 | var document = new XmlDocument();
71 | document.Load(settingsFile);
72 |
73 | return (InstallationInfo)XmlSerializerHelper.Deserialize(document.OuterXml, typeof(InstallationInfo));
74 | }
75 | catch { }
76 | }
77 | return new InstallationInfo();
78 | }
79 | }
80 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/LicenseAcceptanceForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Windows.Forms;
5 | using XrmToolBox.PluginsStore.DTO;
6 |
7 | namespace XrmToolBox.PluginsStore
8 | {
9 | public partial class LicenseAcceptanceForm : Form
10 | {
11 | public LicenseAcceptanceForm(List plugins)
12 | {
13 | InitializeComponent();
14 |
15 | SetStyle(
16 | ControlStyles.AllPaintingInWmPaint |
17 | ControlStyles.UserPaint |
18 | ControlStyles.DoubleBuffer,
19 | true);
20 |
21 | foreach (var plugin in plugins.OrderByDescending(p => p.Name))
22 | {
23 | pnlLicenses.Controls.Add(new PluginLicense(plugin) { Dock = DockStyle.Top });
24 | }
25 | }
26 |
27 | private void btnDecline_Click(object sender, EventArgs e)
28 | {
29 | Close();
30 | }
31 |
32 | private void btnAccept_Click(object sender, EventArgs e)
33 | {
34 | Close();
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/PluginDeletions.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Xml.Serialization;
3 |
4 | namespace XrmToolBox.PluginsStore
5 | {
6 | public class PluginDeletion
7 | {
8 | [XmlIgnore]
9 | public List ConfictedPackages { get; set; }
10 |
11 | [XmlIgnore]
12 | public bool Conflict { get; set; }
13 |
14 | public List Files { get; set; }
15 | }
16 |
17 | public class PluginDeletions
18 | {
19 | public PluginDeletions()
20 | {
21 | Plugins = new List();
22 | }
23 |
24 | public List Plugins { get; set; }
25 |
26 | public int PreviousProcessId { get; set; }
27 | }
28 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/PluginLicense.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Windows.Forms;
4 | using XrmToolBox.PluginsStore.DTO;
5 |
6 | namespace XrmToolBox.PluginsStore
7 | {
8 | public partial class PluginLicense : UserControl
9 | {
10 | private readonly XtbPlugin plugin;
11 |
12 | public PluginLicense(XtbPlugin plugin)
13 | {
14 | InitializeComponent();
15 |
16 | lblPluginName.Text = plugin.Name;
17 | lblAuthors.Text = string.Format(lblAuthors.Tag.ToString(), plugin.Authors);
18 |
19 | this.plugin = plugin;
20 | }
21 |
22 | private void llLicense_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
23 | {
24 | if (string.IsNullOrEmpty(plugin.LicenseUrl))
25 | {
26 | MessageBox.Show(this, @"License url is empty!", @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
27 | return;
28 | }
29 |
30 | if (!Uri.TryCreate(plugin.LicenseUrl, UriKind.Absolute, out Uri _))
31 | {
32 | MessageBox.Show(this, @"License url is not a valid URI!", @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
33 | return;
34 | }
35 |
36 | Process.Start(plugin.LicenseUrl);
37 | }
38 | }
39 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/PluginUpdates.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace XrmToolBox.PluginsStore
4 | {
5 | public class PluginUpdate
6 | {
7 | public string Destination { get; set; }
8 | public string Source { get; set; }
9 | public bool RequireRestart { get; set; }
10 | }
11 |
12 | public class PluginUpdates
13 | {
14 | public PluginUpdates()
15 | {
16 | Plugins = new List();
17 | }
18 |
19 | public List Plugins { get; set; }
20 |
21 | public int PreviousProcessId { get; set; }
22 | }
23 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // Les informations générales relatives à un assembly dépendent de
5 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
6 | // associées à un assembly.
7 | [assembly: AssemblyTitle("XrmToolBox.PluginsStore")]
8 | [assembly: AssemblyDescription("Plugins Store for XrmToolBox")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("MscrmTools")]
11 | [assembly: AssemblyProduct("XrmToolBox.PluginsStore")]
12 | [assembly: AssemblyCopyright("Copyright © MscrmTools 2016")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
17 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
18 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type.
19 | [assembly: ComVisible(false)]
20 |
21 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
22 | [assembly: Guid("ebcb3d22-03f2-40d2-b949-05cae575f2ea")]
23 |
24 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes :
25 | //
26 | // Version principale
27 | // Version secondaire
28 | // Numéro de build
29 | // Révision
30 | //
31 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
32 | // en utilisant '*', comme indiqué ci-dessous :
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.2023.1.63")]
35 | [assembly: AssemblyFileVersion("1.2023.1.63")]
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/ProxySettingsHelper.cs:
--------------------------------------------------------------------------------
1 | using McTools.Xrm.Connection.WinForms;
2 | using NuGet.Configuration;
3 | using System.Text.RegularExpressions;
4 | using System.Windows.Forms;
5 |
6 | namespace XrmToolBox.PluginsStore
7 | {
8 | public class ProxySettingsHelper
9 | {
10 | private const string KEY_HTTP_PROXY = "http_proxy";
11 | private const string KEY_HTTP_PROXY_PASSWORD = "http_proxy.password";
12 | private const string KEY_HTTP_PROXY_USER = "http_proxy.user";
13 |
14 | public static void registerSettings(Form parentForm)
15 | {
16 | using (ProxySettingsForm frmProxy = new ProxySettingsForm
17 | {
18 | StartPosition = FormStartPosition.CenterParent
19 | })
20 | {
21 | var settings = Settings.LoadDefaultSettings("c:\\temp");
22 | var proxyInfos = SettingsUtility.GetConfigValue(settings, KEY_HTTP_PROXY);
23 |
24 | if (proxyInfos == null)
25 | {
26 | proxyInfos = "";
27 | }
28 |
29 | Match m = Regex.Match(proxyInfos, @"http://(.*)?:(.*)", RegexOptions.IgnoreCase);
30 |
31 | if (m.Success)
32 | {
33 | frmProxy.UseCustomProxy = true;
34 |
35 | frmProxy.proxyAddress = m.Groups[1].Value;
36 |
37 | frmProxy.proxyPort = m.Groups[2].Value;
38 | }
39 | else
40 | {
41 | frmProxy.UseCustomProxy = false;
42 |
43 | frmProxy.proxyAddress = "";
44 |
45 | frmProxy.proxyPort = "";
46 | }
47 |
48 | if (frmProxy.ShowDialog(parentForm) == DialogResult.OK)
49 | {
50 | if (frmProxy.UseCustomProxy)
51 | {
52 | SettingsUtility.SetConfigValue(settings, KEY_HTTP_PROXY, string.Format("http://{0}:{1}", frmProxy.proxyAddress, frmProxy.proxyPort));
53 | }
54 | else
55 | {
56 | SettingsUtility.DeleteConfigValue(settings, KEY_HTTP_PROXY);
57 | SettingsUtility.DeleteConfigValue(settings, KEY_HTTP_PROXY_USER);
58 | SettingsUtility.DeleteConfigValue(settings, KEY_HTTP_PROXY_PASSWORD);
59 | }
60 | MessageBox.Show("You need to restart XrmToolbox for changes to take effect");
61 | }
62 | }
63 | }
64 | }
65 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/ToolInformationEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.PluginsStore
4 | {
5 | public class ToolInformationEventArgs : EventArgs
6 | {
7 | public int ProgressPercentage { get; internal set; }
8 | public string ToolName { get; set; }
9 | }
10 | }
--------------------------------------------------------------------------------
/XrmToolBox.PluginsStore/XmlSerializerHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Text;
4 | using System.Xml.Serialization;
5 |
6 | namespace XrmToolBox.PluginsStore
7 | {
8 | ///
9 | /// Classe utilitaire permettant de réaliser des opérations de
10 | /// sérialisation et de déserialization
11 | ///
12 | public class XmlSerializerHelper
13 | {
14 | ///
15 | /// Deserialize un contenu xml de type chaine de caractère en
16 | /// une instance de la classe du type spécifié
17 | ///
18 | /// Contenu xml
19 | /// Type de l'objet de destination
20 | /// Objet déserialisé
21 | public static object Deserialize(string xmlContent, Type objectType)
22 | {
23 | StringReader reader = new StringReader(xmlContent);
24 | XmlSerializer s = new XmlSerializer(objectType);
25 | return s.Deserialize(reader);
26 | }
27 |
28 | ///
29 | /// Sérialise un objet sous forme de chaine de caractère Xml
30 | ///
31 | /// Objet à sérialiser
32 | /// Chaine résultante
33 | public static string Serialize(object o)
34 | {
35 | try
36 | {
37 | XmlSerializer s = new XmlSerializer(o.GetType());
38 | StringBuilder builder = new StringBuilder();
39 | using (StringWriter writer = new StringWriter(builder))
40 | {
41 | s.Serialize(writer, o);
42 | }
43 | return builder.ToString();
44 | }
45 | catch (Exception error)
46 | {
47 | throw new Exception("Error while serializing: " + error.Message);
48 | }
49 | }
50 |
51 | ///
52 | /// Sérialize un objet dans un fichier
53 | ///
54 | /// Objet à sérialiser
55 | /// Chemin du fichier de destination
56 | public static void SerializeToFile(object o, string path)
57 | {
58 | try
59 | {
60 | XmlSerializer s = new XmlSerializer(o.GetType());
61 |
62 | using (StreamWriter writer = new StreamWriter(path, false))
63 | {
64 | s.Serialize(writer, o);
65 | }
66 | }
67 | catch (Exception error)
68 | {
69 | throw new Exception("Error while serializing: " + error.Message);
70 | }
71 | }
72 | }
73 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/ConnectionControlsUpdateSettings.cs:
--------------------------------------------------------------------------------
1 | using XrmToolBox.Extensibility.Interfaces;
2 |
3 | namespace XrmToolBox.ToolLibrary.AppCode
4 | {
5 | public class ConnectionControlsUpdateSettings : IConnectionControlUpdateSettings
6 | {
7 | public bool NewVersion { get; set; }
8 | public string ReleaseNotes { get; set; }
9 | public bool RestartNow { get; set; }
10 | public string Version { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/Extensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace XrmToolBox.ToolLibrary.AppCode
5 | {
6 | internal static class Extensions
7 | {
8 | public static void SetAutoWidth(this Label label)
9 | {
10 | label.Width = TextRenderer.MeasureText(label.Text, label.Font).Width;
11 | }
12 |
13 | public static void SetAutoWidth(this LinkLabel label)
14 | {
15 | label.Width = TextRenderer.MeasureText(label.Text, label.Font).Width;
16 | }
17 |
18 | public static void SetAutoWidth(this ComboBox combobox)
19 | {
20 | string longestWord = "";
21 |
22 | foreach (object item in combobox.Items)
23 | {
24 | if (item.ToString().Length > longestWord.Length)
25 | {
26 | longestWord = item.ToString();
27 | }
28 | }
29 |
30 | combobox.Width = TextRenderer.MeasureText(longestWord, combobox.Font).Width + 16;
31 | }
32 |
33 | public static Version Simplify(this Version version)
34 | {
35 | if (version.Revision != -1)
36 | return version;
37 |
38 | return new Version(
39 | version.Major == -1 ? 0 : version.Major,
40 | version.Minor == -1 ? 0 : version.Minor,
41 | version.Build == -1 ? 0 : version.Build,
42 | version.Revision == -1 ? 0 : version.Revision);
43 | }
44 | }
45 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/OpenPluginEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.ToolLibrary.AppCode
4 | {
5 | public class OpenPluginEventArgs : EventArgs
6 | {
7 | public XtbPlugin Plugin { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/PackageVersion.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.ToolLibrary.AppCode
4 | {
5 | public class PackageVersion
6 | {
7 | public PackageVersion(string packageName, string version, string releaseNotes, byte[] content)
8 | {
9 | var versionParts = version.Split('-');
10 |
11 | Version = new Version(versionParts[0]);
12 |
13 | if (versionParts.Length > 1)
14 | {
15 | Release = versionParts[1];
16 | IsPrerelease = true;
17 | }
18 |
19 | PackageName = packageName;
20 | Content = content;
21 | ReleaseNotes = releaseNotes;
22 | }
23 |
24 | public byte[] Content { get; }
25 | public bool IsPrerelease { get; }
26 | public string PackageName { get; }
27 | public string Release { get; }
28 | public string ReleaseNotes { get; }
29 | public Version Version { get; }
30 |
31 | public override string ToString()
32 | {
33 | return $"{Version}{(IsPrerelease ? "-" + Release : "")}";
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/PluginDeletions.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Xml.Serialization;
3 |
4 | namespace XrmToolBox.ToolLibrary.AppCode
5 | {
6 | public class PluginDeletion
7 | {
8 | [XmlIgnore]
9 | public List ConfictedPackages { get; set; }
10 |
11 | [XmlIgnore]
12 | public bool Conflict { get; set; }
13 |
14 | public List Files { get; set; }
15 | public string Name { get; set; }
16 | }
17 |
18 | public class PluginDeletions
19 | {
20 | public PluginDeletions()
21 | {
22 | Plugins = new List();
23 | }
24 |
25 | public List Plugins { get; set; }
26 |
27 | public int PreviousProcessId { get; set; }
28 | }
29 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/PluginUpdates.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace XrmToolBox.ToolLibrary.AppCode
4 | {
5 | public class PluginUpdate
6 | {
7 | public string Destination { get; set; }
8 | public string Name { get; set; }
9 | public bool RequireRestart { get; set; }
10 | public string Source { get; set; }
11 | }
12 |
13 | public class PluginUpdates
14 | {
15 | public PluginUpdates()
16 | {
17 | Plugins = new List();
18 | }
19 |
20 | public List Plugins { get; set; }
21 |
22 | public int PreviousProcessId { get; set; }
23 | }
24 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/SerializerHelper.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using System.Runtime.Serialization;
3 | using System.Runtime.Serialization.Json;
4 | using System.Text;
5 |
6 | namespace XrmToolBox.ToolLibrary.AppCode
7 | {
8 | public class SerializerHelper
9 | {
10 | public static T ReadObject(Stream content)
11 | {
12 | var serializer = new DataContractJsonSerializer(typeof(T), new DataContractJsonSerializerSettings
13 | {
14 | UseSimpleDictionaryFormat = true
15 | });
16 |
17 | return (T)serializer.ReadObject(content);
18 | }
19 |
20 | public static T ReadObject(Stream content, DateTimeFormat dtf)
21 | {
22 | var settings = new DataContractJsonSerializerSettings
23 | {
24 | UseSimpleDictionaryFormat = true,
25 | };
26 |
27 | if (dtf != null)
28 | {
29 | settings.DateTimeFormat = dtf;
30 | }
31 |
32 | var serializer = new DataContractJsonSerializer(typeof(T), settings);
33 |
34 | return (T)serializer.ReadObject(content);
35 | }
36 |
37 | public static T ReadObject(string content, DateTimeFormat dtf = null)
38 | {
39 | var settings = new DataContractJsonSerializerSettings
40 | {
41 | UseSimpleDictionaryFormat = true,
42 | };
43 |
44 | if (dtf != null)
45 | {
46 | settings.DateTimeFormat = dtf;
47 | }
48 |
49 | var serializer = new DataContractJsonSerializer(typeof(T), settings);
50 |
51 | return (T)serializer.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(content)));
52 | }
53 |
54 | public static string WriteObject(T content, Encoding encoding, DateTimeFormat dtf = null)
55 | {
56 | var settings = new DataContractJsonSerializerSettings
57 | {
58 | UseSimpleDictionaryFormat = true,
59 | };
60 |
61 | if (dtf != null)
62 | {
63 | settings.DateTimeFormat = dtf;
64 | }
65 |
66 | var serializer = new DataContractJsonSerializer(typeof(T), settings);
67 |
68 | MemoryStream stream = new MemoryStream();
69 | serializer.WriteObject(stream, content);
70 |
71 | return encoding.GetString(stream.ToArray());
72 | }
73 | }
74 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/ToolLibrarySettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XrmToolBox.Extensibility.Interfaces;
3 |
4 | namespace XrmToolBox.ToolLibrary.AppCode
5 | {
6 | public class ToolLibrarySettings : IToolLibrarySettings
7 | {
8 | public string AdditionalRepositories { get; set; }
9 | public bool ByPassProxyOnLocal { get; set; }
10 | public bool DisplayPluginsStoreOnlyIfUpdates { get; set; }
11 | public bool DisplayPluginsStoreOnStartup { get; set; }
12 | public bool LibraryFilterMvp { get; set; }
13 | public bool LibraryFilterNew { get; set; }
14 | public bool LibraryFilterOpenSource { get; set; }
15 | public bool LibraryFilterRating { get; set; }
16 | public bool LibraryShowIncompatible { get; set; }
17 | public bool LibraryShowInstalled { get; set; } = true;
18 | public bool LibraryShowNotInstalled { get; set; } = true;
19 | public bool LibraryShowUpdates { get; set; } = true;
20 | public int MostRatedMinNumberOfVotes { get; set; }
21 | public decimal MostRatedMinRatingAverage { get; set; }
22 | public string Password { get; set; }
23 | public string ProxyAddress { get; set; }
24 | public string RepositoryUrl { get; set; }
25 | public bool UseCustomProxy { get; set; }
26 | public bool UseDefaultCredentials { get; set; }
27 | public bool UseInternetExplorerProxy { get; set; }
28 | public string UserName { get; set; }
29 | }
30 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/ToolOperationEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.ToolLibrary.AppCode
4 | {
5 | public class ToolOperationEventArgs : EventArgs
6 | {
7 | private bool succeeded;
8 |
9 | public ToolOperationEventArgs(bool isInstallation, XtbPlugin plugin, Version version, string downloadUrl)
10 | {
11 | IsInstallation = isInstallation;
12 | Plugin = plugin;
13 | Version = version;
14 | DownloadUrl = downloadUrl;
15 | }
16 |
17 | public event EventHandler OnOperationCompleted;
18 |
19 | public string DownloadUrl { get; }
20 | public bool IsInstallation { get; }
21 | public XtbPlugin Plugin { get; }
22 |
23 | public bool Succeeded
24 | {
25 | get
26 | {
27 | return succeeded;
28 | }
29 | internal set
30 | {
31 | succeeded = value;
32 | OnOperationCompleted?.Invoke(this, value);
33 | }
34 | }
35 |
36 | public Version Version { get; }
37 | }
38 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/AppCode/XmlSerializerHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Text;
4 | using System.Xml.Serialization;
5 |
6 | namespace XrmToolBox.ToolLibrary.AppCode
7 | {
8 | ///
9 | /// Classe utilitaire permettant de réaliser des opérations de
10 | /// sérialisation et de déserialization
11 | ///
12 | public class XmlSerializerHelper
13 | {
14 | ///
15 | /// Deserialize un contenu xml de type chaine de caractère en
16 | /// une instance de la classe du type spécifié
17 | ///
18 | /// Contenu xml
19 | /// Type de l'objet de destination
20 | /// Objet déserialisé
21 | public static object Deserialize(string xmlContent, Type objectType)
22 | {
23 | StringReader reader = new StringReader(xmlContent);
24 | XmlSerializer s = new XmlSerializer(objectType);
25 | return s.Deserialize(reader);
26 | }
27 |
28 | ///
29 | /// Sérialise un objet sous forme de chaine de caractère Xml
30 | ///
31 | /// Objet à sérialiser
32 | /// Chaine résultante
33 | public static string Serialize(object o)
34 | {
35 | try
36 | {
37 | XmlSerializer s = new XmlSerializer(o.GetType());
38 | StringBuilder builder = new StringBuilder();
39 | using (StringWriter writer = new StringWriter(builder))
40 | {
41 | s.Serialize(writer, o);
42 | }
43 | return builder.ToString();
44 | }
45 | catch (Exception error)
46 | {
47 | throw new Exception("Error while serializing: " + error.Message);
48 | }
49 | }
50 |
51 | ///
52 | /// Sérialize un objet dans un fichier
53 | ///
54 | /// Objet à sérialiser
55 | /// Chemin du fichier de destination
56 | public static void SerializeToFile(object o, string path)
57 | {
58 | try
59 | {
60 | XmlSerializer s = new XmlSerializer(o.GetType());
61 |
62 | using (StreamWriter writer = new StreamWriter(path, false))
63 | {
64 | s.Serialize(writer, o);
65 | }
66 | }
67 | catch (Exception error)
68 | {
69 | throw new Exception("Error while serializing: " + error.Message);
70 | }
71 | }
72 | }
73 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Forms/LicenseAcceptanceForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Windows.Forms;
5 | using XrmToolBox.ToolLibrary.AppCode;
6 | using XrmToolBox.ToolLibrary.UserControls;
7 |
8 | namespace XrmToolBox.ToolLibrary.Forms
9 | {
10 | public partial class LicenseAcceptanceForm : Form
11 | {
12 | public LicenseAcceptanceForm(List plugins)
13 | {
14 | InitializeComponent();
15 |
16 | SetStyle(
17 | ControlStyles.AllPaintingInWmPaint |
18 | ControlStyles.UserPaint |
19 | ControlStyles.DoubleBuffer,
20 | true);
21 |
22 | foreach (var plugin in plugins.OrderByDescending(p => p.Name))
23 | {
24 | pnlLicenses.Controls.Add(new PluginLicense(plugin) { Dock = DockStyle.Top });
25 | }
26 | }
27 |
28 | private void btnAccept_Click(object sender, EventArgs e)
29 | {
30 | Close();
31 | }
32 |
33 | private void btnDecline_Click(object sender, EventArgs e)
34 | {
35 | Close();
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // Les informations générales relatives à un assembly dépendent de
5 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
6 | // associées à un assembly.
7 | [assembly: AssemblyTitle("XrmToolBox.ToolLibrary")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("XrmToolBox.ToolLibrary")]
12 | [assembly: AssemblyCopyright("Copyright © 2023")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
17 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
18 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type.
19 | [assembly: ComVisible(false)]
20 |
21 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
22 | [assembly: Guid("626aeba8-4315-4d82-b8b9-b94200fd7589")]
23 |
24 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes :
25 | //
26 | // Version principale
27 | // Version secondaire
28 | // Numéro de build
29 | // Révision
30 | //
31 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
32 | // en utilisant '*', comme indiqué ci-dessous :
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.2024.9.69")]
35 | [assembly: AssemblyFileVersion("1.2024.9.69")]
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/ClearCache.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/ClearCache.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Download32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Download32.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Error32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Error32.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Incompatible.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Incompatible.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Install32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Install32.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/New.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/New.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/NewToInstall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/NewToInstall.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/No32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/No32.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/NoLogo100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/NoLogo100.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Open16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Open16.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Open32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Open32.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Pending32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Pending32.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/PluginsStore32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/PluginsStore32.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Refresh.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/RefreshImages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/RefreshImages.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Restart.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Settings.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/StatusInvalid.18.18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/StatusInvalid.18.18.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/StatusOK.18.18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/StatusOK.18.18.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/StatusUpdateAvailable.18.18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/StatusUpdateAvailable.18.18.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Success32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Success32.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Uninstall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Uninstall.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/Update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/Update.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/github.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/mvp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/mvp.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/progress.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/progress.gif
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/Resources/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox.ToolLibrary/Resources/star.png
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/UserControls/InstallProgressControl.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace XrmToolBox.ToolLibrary.UserControls
5 | {
6 | public partial class InstallProgressControl : UserControl
7 | {
8 | public InstallProgressControl()
9 | {
10 | InitializeComponent();
11 | }
12 |
13 | public event EventHandler OnCloseRequested;
14 |
15 | public bool IsSuccess { get; private set; } = true;
16 |
17 | public void AddDownloadStep(string toolName)
18 | {
19 | var step = new ProgressStepControl($"Downloading {toolName}", Resource.Download32);
20 | step.Dock = DockStyle.Top;
21 | step.Height = 52;
22 |
23 | pnlMain.Controls.Add(step);
24 | pnlMain.Controls.SetChildIndex(step, 0);
25 |
26 | pnlMain.ScrollControlIntoView(step);
27 | }
28 |
29 | public void AddInstallStep(string toolName)
30 | {
31 | var step = new ProgressStepControl($"Installing {toolName}", Resource.Install32);
32 | step.Dock = DockStyle.Top;
33 | step.Height = 52;
34 |
35 | pnlMain.Controls.Add(step);
36 | pnlMain.Controls.SetChildIndex(step, 0);
37 |
38 | pnlMain.ScrollControlIntoView(step);
39 | }
40 |
41 | public void End()
42 | {
43 | btnClose.Enabled = true;
44 | }
45 |
46 | public void SetError(string message)
47 | {
48 | ((ProgressStepControl)pnlMain.Controls[0]).SetFailure(message);
49 | IsSuccess = false;
50 | }
51 |
52 | public void SetSuccess(bool pending = false)
53 | {
54 | ((ProgressStepControl)pnlMain.Controls[0]).SetSuccess(pending);
55 |
56 | btnRestart.Visible = pending;
57 | }
58 |
59 | private void btnClose_Click(object sender, EventArgs e)
60 | {
61 | OnCloseRequested?.Invoke(this, new EventArgs());
62 | }
63 |
64 | private void btnRestart_Click(object sender, EventArgs e)
65 | {
66 | Application.Restart();
67 | }
68 | }
69 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/UserControls/PluginLicense.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Windows.Forms;
4 | using XrmToolBox.ToolLibrary.AppCode;
5 |
6 | namespace XrmToolBox.ToolLibrary.UserControls
7 | {
8 | public partial class PluginLicense : UserControl
9 | {
10 | private readonly XtbPlugin plugin;
11 |
12 | public PluginLicense(XtbPlugin plugin)
13 | {
14 | InitializeComponent();
15 |
16 | lblPluginName.Text = plugin.Name;
17 | lblAuthors.Text = string.Format(lblAuthors.Tag.ToString(), plugin.Authors);
18 |
19 | this.plugin = plugin;
20 | }
21 |
22 | private void llLicense_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
23 | {
24 | if (string.IsNullOrEmpty(plugin.LicenseUrl))
25 | {
26 | MessageBox.Show(this, @"License url is empty!", @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
27 | return;
28 | }
29 |
30 | if (!Uri.TryCreate(plugin.LicenseUrl, UriKind.Absolute, out Uri _))
31 | {
32 | MessageBox.Show(this, @"License url is not a valid URI!", @"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
33 | return;
34 | }
35 |
36 | Process.Start(plugin.LicenseUrl);
37 | }
38 | }
39 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/UserControls/ProgressStepControl.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using System.Windows.Forms;
4 | using XrmToolBox.ToolLibrary.AppCode;
5 |
6 | namespace XrmToolBox.ToolLibrary.UserControls
7 | {
8 | public partial class ProgressStepControl : UserControl
9 | {
10 | private ToolTip tooltip = new ToolTip();
11 |
12 | public ProgressStepControl(string actionText, Image img)
13 | {
14 | InitializeComponent();
15 |
16 | lblAction.Text = actionText;
17 | pbAction.Image = img;
18 | lblAction.SetAutoWidth();
19 | lblAction.Width += 40;
20 |
21 | pbAction.Size = new Size(32, 32);
22 | pbState.Size = new Size(32, 32);
23 | Height = 52;
24 | pnlAction.Size = new Size(52, 52);
25 | pnlState.Size = new Size(52, 52);
26 | }
27 |
28 | public void SetFailure(string errorMessage)
29 | {
30 | pbState.Image = Resource.Error32;
31 | tooltip.SetToolTip(pbState, errorMessage);
32 | }
33 |
34 | public void SetSuccess(bool pending = false)
35 | {
36 | pbState.Image = pending ? Resource.Pending32 : Resource.Success32;
37 | }
38 | }
39 | }
--------------------------------------------------------------------------------
/XrmToolBox.ToolLibrary/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/XrmToolBox/AbstractControlDescriptionProvider.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Linq;
5 | using System.Text;
6 |
7 | namespace XrmToolBox
8 | {
9 | public class AbstractControlDescriptionProvider : TypeDescriptionProvider
10 | {
11 | public AbstractControlDescriptionProvider()
12 | : base(TypeDescriptor.GetProvider(typeof(TAbstract)))
13 | {
14 | }
15 |
16 | public override Type GetReflectionType(Type objectType, object instance)
17 | {
18 | if (objectType.FullName == typeof(TAbstract).FullName)
19 | return typeof(TBase);
20 |
21 | return base.GetReflectionType(objectType, instance);
22 | }
23 |
24 | public override object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args)
25 | {
26 | if (objectType.FullName == typeof(TAbstract).FullName)
27 | objectType = typeof(TBase);
28 |
29 | return base.CreateInstance(provider, objectType, argTypes, args);
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/XrmToolBox/Announcement/AnnouncementDialog.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.Windows.Forms;
3 |
4 | namespace XrmToolBox.Announcement
5 | {
6 | public partial class AnnouncementDialog : Form
7 | {
8 | private readonly AnnouncementItem item;
9 |
10 | public AnnouncementDialog(AnnouncementItem item)
11 | {
12 | InitializeComponent();
13 |
14 | try
15 | {
16 | this.item = item;
17 | int titleHeight = RectangleToScreen(ClientRectangle).Top - Top;
18 |
19 | var image = item.Image;
20 | Height = image.Height + pnlFooter.Height + titleHeight;
21 | Width = image.Width;
22 |
23 | pbImage.Image = image;
24 | pbImage.SizeMode = PictureBoxSizeMode.StretchImage;
25 |
26 | if (AnnouncementSettings.Instance.LastShown.Contains(item.Id))
27 | {
28 | AnnouncementSettings.Instance.LastShown.Remove(item.Id);
29 | }
30 |
31 | AnnouncementSettings.Instance.LastShown.Add(item.Id);
32 | }
33 | catch
34 | {
35 | IsInvalid = true;
36 | }
37 | }
38 |
39 | public bool IsInvalid { get; }
40 |
41 | private void llForget_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
42 | {
43 | if (!AnnouncementSettings.Instance.ToHide.Contains(item.Id))
44 | AnnouncementSettings.Instance.ToHide.Add(item.Id);
45 | AnnouncementSettings.Instance.Save();
46 | Close();
47 | }
48 |
49 | private void llMoreInfo_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
50 | {
51 | Process.Start(item.Url);
52 | Close();
53 | }
54 |
55 | private void pbImage_Click(object sender, System.EventArgs e)
56 | {
57 | Process.Start(item.Url);
58 | Close();
59 | }
60 | }
61 | }
--------------------------------------------------------------------------------
/XrmToolBox/Announcement/AnnouncementSettings.cs:
--------------------------------------------------------------------------------
1 | using McTools.Xrm.Connection;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using System.Xml;
6 | using XrmToolBox.Extensibility;
7 |
8 | namespace XrmToolBox.Announcement
9 | {
10 | public class AnnouncementSettings
11 | {
12 | private const string FileName = "XrmToolBox.Announcements.xml";
13 | private static AnnouncementSettings instance;
14 |
15 | private AnnouncementSettings()
16 | {
17 | }
18 |
19 | public static AnnouncementSettings Instance => instance ?? (instance = Load());
20 |
21 | public List LastShown { get; set; } = new List();
22 | public DateTime LastShownDate { get; set; }
23 | public List ToHide { get; set; } = new List();
24 |
25 | public void Save()
26 | {
27 | if (!Directory.Exists(Paths.SettingsPath))
28 | {
29 | Directory.CreateDirectory(Paths.SettingsPath);
30 | }
31 |
32 | var settingsFile = Path.Combine(Paths.SettingsPath, FileName);
33 |
34 | XmlSerializerHelper.SerializeToFile(this, settingsFile);
35 | }
36 |
37 | private static AnnouncementSettings Load()
38 | {
39 | if (!Directory.Exists(Paths.SettingsPath))
40 | {
41 | Directory.CreateDirectory(Paths.SettingsPath);
42 | }
43 |
44 | var file = Path.Combine(Paths.SettingsPath, FileName);
45 |
46 | if (File.Exists(file))
47 | {
48 | try
49 | {
50 | var document = new XmlDocument();
51 | document.Load(file);
52 |
53 | return (AnnouncementSettings)XmlSerializerHelper.Deserialize(document.OuterXml, typeof(AnnouncementSettings));
54 | }
55 | catch
56 | {
57 | return new AnnouncementSettings();
58 | }
59 | }
60 |
61 | return new AnnouncementSettings();
62 | }
63 | }
64 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/AppInsights/InstallationInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Xml;
4 | using XrmToolBox.Extensibility;
5 | using XrmToolBox.ToolLibrary.AppCode;
6 |
7 | namespace XrmToolBox.AppCode.AppInsights
8 | {
9 | public class InstallationInfo
10 | {
11 | private const string OptionFileName = "XrmToolBox.Installation.xml";
12 |
13 | private static InstallationInfo instance;
14 |
15 | private InstallationInfo()
16 | {
17 | }
18 |
19 | public static InstallationInfo Instance
20 | {
21 | get
22 | {
23 | if (instance == null)
24 | {
25 | instance = Load();
26 | }
27 |
28 | if (instance?.InstallationId == Guid.Empty)
29 | {
30 | instance?.Save();
31 | }
32 |
33 | return instance;
34 | }
35 | }
36 |
37 | public DateTime InstallationDate { get; set; } = DateTime.Now;
38 | public Guid InstallationId { get; set; }
39 |
40 | public void Save()
41 | {
42 | if (InstallationId == Guid.Empty)
43 | {
44 | InstallationId = Guid.NewGuid();
45 | }
46 | if (!Directory.Exists(Paths.SettingsPath))
47 | {
48 | Directory.CreateDirectory(Paths.SettingsPath);
49 | }
50 |
51 | var settingsFile = Path.Combine(Paths.SettingsPath, OptionFileName);
52 |
53 | XmlSerializerHelper.SerializeToFile(this, settingsFile);
54 | }
55 |
56 | private static InstallationInfo Load()
57 | {
58 | if (!Directory.Exists(Paths.SettingsPath))
59 | {
60 | Directory.CreateDirectory(Paths.SettingsPath);
61 | }
62 |
63 | var settingsFile = Path.Combine(Paths.SettingsPath, OptionFileName);
64 |
65 | if (File.Exists(settingsFile))
66 | {
67 | try
68 | {
69 | var document = new XmlDocument();
70 | document.Load(settingsFile);
71 |
72 | return (InstallationInfo)XmlSerializerHelper.Deserialize(document.OuterXml, typeof(InstallationInfo));
73 | }
74 | catch { }
75 | }
76 | return new InstallationInfo();
77 | }
78 | }
79 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/DockExtensions.cs:
--------------------------------------------------------------------------------
1 | using WeifenLuo.WinFormsUI.Docking;
2 |
3 | namespace XrmToolBox.AppCode
4 | {
5 | public static class DockExtensions
6 | {
7 | public static void EnsureVisible(this DockContent form, DockPanel parent, DockState defaultState)
8 | {
9 | switch (form.DockState)
10 | {
11 | case DockState.Unknown:
12 | case DockState.Hidden:
13 | form.Show(parent, defaultState);
14 | break;
15 |
16 | case DockState.DockBottomAutoHide:
17 | form.DockState = DockState.DockBottom;
18 | break;
19 |
20 | case DockState.DockTopAutoHide:
21 | form.DockState = DockState.DockTop;
22 | break;
23 |
24 | case DockState.DockLeftAutoHide:
25 | form.DockState = DockState.DockLeft;
26 | break;
27 |
28 | case DockState.DockRightAutoHide:
29 | form.DockState = DockState.DockRight;
30 | break;
31 |
32 | case DockState.Float:
33 | form.DockState = DockState.Float;
34 | break;
35 | }
36 | form.Activate();
37 | }
38 | }
39 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/Extensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using System.Drawing.Drawing2D;
4 | using System.Drawing.Imaging;
5 | using System.IO;
6 | using System.Linq;
7 | using System.Reflection;
8 | using XrmToolBox.Extensibility.Interfaces;
9 |
10 | namespace XrmToolBox.AppCode
11 | {
12 | public static class FileInfoExtensions
13 | {
14 | ///
15 | /// Checks if the current file contains types that implement
16 | /// IXrmToolBoxPlugin interface
17 | ///
18 | /// Current file info
19 | /// Value that indicates if the current file contains types that implement
20 | /// IXrmToolBoxPlugin interface
21 | public static bool ImplementsXrmToolBoxPlugin(this FileInfo fi)
22 | {
23 | var assembly = Assembly.LoadFile(fi.FullName);
24 |
25 | foreach (var type in assembly.GetTypes())
26 | {
27 | if (type.GetInterfaces().Contains(typeof(IXrmToolBoxPlugin)))
28 | {
29 | return true;
30 | }
31 | }
32 |
33 | return false;
34 | }
35 |
36 | public static Image ResizeImage(this Image image, int width, int height)
37 | {
38 | Bitmap newImage = new Bitmap(width, height);
39 | using (Graphics gr = Graphics.FromImage(newImage))
40 | {
41 | gr.CompositingMode = CompositingMode.SourceCopy;
42 | gr.CompositingQuality = CompositingQuality.HighQuality;
43 | gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
44 | gr.SmoothingMode = SmoothingMode.HighQuality;
45 | gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
46 |
47 | using (var wrapMode = new ImageAttributes())
48 | {
49 | wrapMode.SetWrapMode(WrapMode.TileFlipXY);
50 | gr.DrawImage(image, new Rectangle(0, 0, width, height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
51 | }
52 | }
53 |
54 | return newImage;
55 | }
56 | }
57 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/IToolsForm.cs:
--------------------------------------------------------------------------------
1 | using McTools.Xrm.Connection;
2 | using System;
3 | using System.Collections.Generic;
4 | using XrmToolBox.Extensibility.Interfaces;
5 | using XrmToolBox.New.EventArgs;
6 |
7 | namespace XrmToolBox.AppCode
8 | {
9 | internal interface IToolsForm
10 | {
11 | event EventHandler ActionRequested;
12 |
13 | event EventHandler OpenPluginProjectUrlRequested;
14 |
15 | event EventHandler OpenPluginRequested;
16 |
17 | event EventHandler UninstallPluginRequested;
18 |
19 | ConnectionDetail ConnectionDetail { get; set; }
20 | PluginManagerExtended PluginManager { get; }
21 |
22 | void DisplayCategories(Dictionary> categories);
23 |
24 | void DuplicateTool(string pluginName, IDuplicatableTool sourceTool, object state, OpenMruPluginEventArgs e = null);
25 |
26 | void OpenPlugin(string pluginName, OpenMruPluginEventArgs e = null, bool needNewConnection = false);
27 |
28 | void ReloadPluginsList();
29 | }
30 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/PluginControlStatus.cs:
--------------------------------------------------------------------------------
1 | using XrmToolBox.Extensibility.Interfaces;
2 |
3 | namespace XrmToolBox.AppCode
4 | {
5 | internal class PluginControlStatus
6 | {
7 | public PluginControlStatus(IXrmToolBoxPluginControl control, int? percentage, string message)
8 | {
9 | Control = control;
10 | Percentage = percentage;
11 | Message = message;
12 | }
13 |
14 | public IXrmToolBoxPluginControl Control { get; }
15 | public string Message { get; set; }
16 | public int? Percentage { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/PluginUpdateSkip.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.AppCode
4 | {
5 | public class PluginUpdateSkip
6 | {
7 | public DateTime Date { get; set; }
8 | public string Name { get; set; }
9 |
10 | public string Version { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/PluginUpdates.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace XrmToolBox.AppCode
4 | {
5 | public class PluginUpdate
6 | {
7 | public string Destination { get; set; }
8 | public string Source { get; set; }
9 | public bool RequireRestart { get; set; }
10 | }
11 |
12 | public class PluginUpdates
13 | {
14 | public PluginUpdates()
15 | {
16 | Plugins = new List();
17 | }
18 |
19 | public List Plugins { get; set; }
20 |
21 | public int PreviousProcessId { get; set; }
22 | }
23 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/RegistryHelper.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Win32;
2 | using System;
3 |
4 | namespace XrmToolBox.AppCode
5 | {
6 | internal static class RegistryHelper
7 | {
8 | public static void AddXtbProtocol(string xtbPath, string xtbStoragePath)
9 | {
10 | var softwareKey = Registry.CurrentUser.OpenSubKey("Software", true);
11 | var classesKey = softwareKey.OpenSubKey("Classes", true);
12 | var xtbKey = classesKey.CreateSubKey("xrmtoolbox");
13 | xtbKey.SetValue("", "XrmToolBox");
14 | xtbKey.SetValue("URL Protocol", "");
15 | var shellKey = xtbKey.CreateSubKey("shell");
16 | var openKey = shellKey.CreateSubKey("open");
17 | var commandKey = openKey.CreateSubKey("command");
18 | commandKey.SetValue("", $"\"{xtbPath}\" /overridepath:\"{xtbStoragePath}\" \"%1\"");
19 |
20 | commandKey.Dispose();
21 | openKey.Dispose();
22 | shellKey.Dispose();
23 | xtbKey.Dispose();
24 | classesKey.Dispose();
25 | softwareKey.Dispose();
26 | }
27 |
28 | public static string XtbProtocolPath()
29 | {
30 | if (Registry.ClassesRoot.OpenSubKey("xrmtoolbox") is RegistryKey xtbKey &&
31 | xtbKey.OpenSubKey("shell") is RegistryKey shellKey &&
32 | shellKey.OpenSubKey("open") is RegistryKey openKey &&
33 | openKey.OpenSubKey("command") is RegistryKey commandKey &&
34 | commandKey.GetValue("") is string command)
35 | {
36 | if (command.Contains(" /overridepath"))
37 | {
38 | command = command.Split(new string[] { " /overridepath" }, StringSplitOptions.None)[0].Trim();
39 | }
40 | command = command.Trim('"');
41 | return command;
42 | }
43 | return null;
44 | }
45 |
46 | public static void RemoveXtbProtocol()
47 | {
48 | var softwareKey = Registry.CurrentUser.OpenSubKey("Software", true);
49 | var classesKey = softwareKey.OpenSubKey("Classes", true);
50 | classesKey.DeleteSubKeyTree("xrmtoolbox");
51 | classesKey.Dispose();
52 | softwareKey.Dispose();
53 | }
54 | }
55 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/ReleasesDTO.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.Serialization;
3 |
4 | namespace XrmToolBox.AppCode
5 | {
6 | [DataContract]
7 | public class Releases
8 | {
9 | [DataMember(Name = "odatametadata")]
10 | public string ODataMetadata { get; set; }
11 |
12 | [DataMember(Name = "value")]
13 | public Release[] Items { get; set; }
14 | }
15 |
16 | [DataContract]
17 | public class Release
18 | {
19 | [DataMember(Name = "mctools_releaseid")]
20 | public string Id { get; set; }
21 |
22 | [DataMember(Name = "mctools_name")]
23 | public string Version { get; set; }
24 |
25 | [DataMember(Name = "mctools_downloadurl")]
26 | public string DownloadUrl { get; set; }
27 |
28 | [DataMember(Name = "mctools_webpageid")]
29 | public WebPageReference WebPage { get; set; }
30 |
31 | [DataMember(Name = "listid")]
32 | public string ListId { get; set; }
33 |
34 | [DataMember(Name = "viewid")]
35 | public string ViewId { get; set; }
36 |
37 | [DataMember(Name = "entitypermissionsenabled")]
38 | public object EntityPermissionEnabled { get; set; }
39 | }
40 |
41 | [DataContract(Name = "Mctools_Webpageid")]
42 | public class WebPageReference
43 | {
44 | public string Id { get; set; }
45 | public string Name { get; set; }
46 | }
47 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/SettingsPropertyEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.AppCode
4 | {
5 | public class SettingsPropertyEventArgs : EventArgs
6 | {
7 | public SettingsPropertyEventArgs(string propertyName, object value)
8 | {
9 | PropertyName = propertyName;
10 | Value = value;
11 | }
12 |
13 | public string PropertyName { get; set; }
14 |
15 | public object Value { get; set; }
16 | }
17 | }
--------------------------------------------------------------------------------
/XrmToolBox/AppCode/SettingsPropertyInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace XrmToolBox.AppCode
4 | {
5 | internal class SettingsPropertyInfo
6 | {
7 | public string Category { get; set; }
8 | public string Description { get; set; }
9 | public bool IsReadOnly { get; set; }
10 | public string Name { get; internal set; }
11 | public int Order { get; set; }
12 | public string Title { get; set; }
13 | public Type Type { get; internal set; }
14 | public bool IsMultiline { get; internal set; }
15 | }
16 | }
--------------------------------------------------------------------------------
/XrmToolBox/ConnectionParameterInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace XrmToolBox
4 | {
5 | ///
6 | /// Class to keep track of the Info panel, so it can be removed when the connection has succeeded
7 | ///
8 | internal class ConnectionParameterInfo
9 | {
10 | public UserControl ConnControl { get; set; }
11 | public object ConnectionParmater { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/XrmToolBox/Controls/ApplicationProtocolControl.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Drawing;
4 | using System.IO;
5 | using System.Windows.Forms;
6 | using XrmToolBox.AppCode;
7 | using XrmToolBox.Extensibility;
8 |
9 | namespace XrmToolBox.Controls
10 | {
11 | public partial class ApplicationProtocolControl : UserControl
12 | {
13 | public ApplicationProtocolControl()
14 | {
15 | InitializeComponent();
16 |
17 | CheckAppProtocolStatus();
18 | }
19 |
20 | private void btnAppProtocol_Click(object sender, EventArgs e)
21 | {
22 | try
23 | {
24 | if (!string.IsNullOrEmpty(RegistryHelper.XtbProtocolPath()))
25 | {
26 | RegistryHelper.RemoveXtbProtocol();
27 | }
28 | else
29 | {
30 | RegistryHelper.AddXtbProtocol(Application.ExecutablePath, Paths.XrmToolBoxPath == "." ? new FileInfo(Application.ExecutablePath).DirectoryName : Paths.XrmToolBoxPath);
31 | }
32 |
33 | CheckAppProtocolStatus();
34 | }
35 | catch (Exception error)
36 | {
37 | MessageBox.Show(this, $"An error occured when setting application protocol: {error.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
38 | }
39 | }
40 |
41 | private void CheckAppProtocolStatus()
42 | {
43 | var protocolPath = RegistryHelper.XtbProtocolPath();
44 | var isEnabled = !string.IsNullOrEmpty(protocolPath);
45 |
46 | lblAppProtocolStatus.Text = string.Format(lblAppProtocolStatus.Tag.ToString(), isEnabled ? "Enabled" : "Disabled");
47 | lblAppProtocolStatus.ForeColor = isEnabled ? Color.Green : Color.Red;
48 |
49 | btnAppProtocol.Text = isEnabled ? "Disable" : "Enable";
50 |
51 | lblAppProtocolPath.Text = protocolPath;
52 | lblAppProtocolPath.Visible = isEnabled;
53 | }
54 |
55 | private void llProtocolDoc_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
56 | {
57 | Process.Start("https://www.xrmtoolbox.com/documentation/for-developers/implement-application-protocol/");
58 | }
59 | }
60 | }
--------------------------------------------------------------------------------
/XrmToolBox/Controls/AssembliesControl.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Data;
4 | using System.Diagnostics;
5 | using System.Linq;
6 | using System.Reflection;
7 | using System.Windows.Forms;
8 |
9 | namespace XrmToolBox.Controls
10 | {
11 | public partial class AssembliesControl : UserControl
12 | {
13 | public AssembliesControl()
14 | {
15 | InitializeComponent();
16 |
17 | PopulateAssemblies();
18 | }
19 |
20 | private static string assemblyPrioritizer(string assemblyName)
21 | {
22 | return
23 | assemblyName.Equals("XrmToolBox") ? "AAAAAAAAAAAA" :
24 | assemblyName.Contains("XrmToolBox") ? "AAAAAAAAAAAB" :
25 | assemblyName.Equals(Assembly.GetExecutingAssembly().GetName().Name) ? "AAAAAAAAAAAC" :
26 | assemblyName;
27 | }
28 |
29 | private ListViewItem GetListItem(AssemblyName a)
30 | {
31 | var assembly = Assembly.Load(a);
32 | var fi = FileVersionInfo.GetVersionInfo(assembly.Location);
33 |
34 | var item = new ListViewItem(a.Name);
35 | item.SubItems.Add(fi.FileVersion.ToString());
36 | return item;
37 | }
38 |
39 | private List GetReferencedAssemblies()
40 | {
41 | var names = Assembly.GetExecutingAssembly().GetReferencedAssemblies()
42 | .Where(a => !a.Name.Equals("mscorlib") && !a.Name.StartsWith("System") && !a.Name.Contains("CSharp")).ToList();
43 | names.Add(Assembly.GetExecutingAssembly().GetName());
44 | names = names.OrderBy(a => assemblyPrioritizer(a.Name)).ToList();
45 | return names;
46 | }
47 |
48 | private void PopulateAssemblies()
49 | {
50 | var assemblies = GetReferencedAssemblies();
51 | var items = assemblies.Select(a => GetListItem(a)).ToArray();
52 | lvAssemblies.Items.Clear();
53 | lvAssemblies.Items.AddRange(items);
54 | }
55 | }
56 | }
--------------------------------------------------------------------------------
/XrmToolBox/Controls/ConnectingCdsControl.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using System.Threading;
4 | using System.Windows.Forms;
5 | using XrmToolBox.Properties;
6 |
7 | namespace XrmToolBox.Controls
8 | {
9 | public partial class ConnectingCdsControl : UserControl
10 | {
11 | private int currentFrame = 0;
12 |
13 | private Thread pictureThread;
14 |
15 | private System.Timers.Timer t;
16 |
17 | public ConnectingCdsControl()
18 | {
19 | AutoScaleMode = AutoScaleMode.Font;
20 |
21 | InitializeComponent();
22 | }
23 |
24 | private void AnimatePicture()
25 | {
26 | t = new System.Timers.Timer(300);
27 | t.Elapsed += T_Elapsed;
28 | t.Start();
29 | }
30 |
31 | private void ConnectingCdsControl_Load(object sender, System.EventArgs e)
32 | {
33 | pictureThread = new Thread(AnimatePicture);
34 | pictureThread.Start();
35 | }
36 |
37 | private void T_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
38 | {
39 | Image newImage = null;
40 | switch (currentFrame)
41 | {
42 | case 0:
43 | newImage = Resources.loading_dv1;
44 | currentFrame++;
45 | break;
46 |
47 | case 1:
48 | newImage = Resources.loading_dv2;
49 | currentFrame++;
50 | break;
51 |
52 | case 2:
53 | newImage = Resources.loading_dv3;
54 | currentFrame++;
55 | break;
56 |
57 | case 3:
58 | newImage = Resources.loading_dv4;
59 | currentFrame++;
60 | break;
61 |
62 | case 4:
63 | newImage = Resources.loading_dv0;
64 | currentFrame = 0;
65 | break;
66 | }
67 |
68 | if (this.IsDisposed) return;
69 |
70 | Invoke(new Action(() =>
71 | {
72 | pbConnectionLoading.Image = newImage;
73 | }));
74 | }
75 | }
76 | }
--------------------------------------------------------------------------------
/XrmToolBox/Controls/ConnectingControl.cs:
--------------------------------------------------------------------------------
1 | using System.Drawing;
2 | using System.Reflection;
3 | using System.Windows.Forms;
4 |
5 | namespace XrmToolBox.Controls
6 | {
7 | public partial class ConnectingControl : UserControl
8 | {
9 | public ConnectingControl()
10 | {
11 | AutoScaleMode = AutoScaleMode.Font;
12 |
13 | InitializeComponent();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/XrmToolBox/Controls/CreditsControl.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Windows.Forms;
4 |
5 | namespace XrmToolBox.Controls
6 | {
7 | public partial class CreditsControl : UserControl
8 | {
9 | public CreditsControl()
10 | {
11 | InitializeComponent();
12 | }
13 |
14 | private void rtbCredits_LinkClicked(object sender, LinkClickedEventArgs e)
15 | {
16 | Process.Start(e.LinkText);
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/XrmToolBox/Controls/HiddenToolsControl.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Data;
3 | using System.Linq;
4 | using System.Windows.Forms;
5 |
6 | namespace XrmToolBox.Controls
7 | {
8 | public partial class HiddenToolsControl : UserControl
9 | {
10 | public HiddenToolsControl()
11 | {
12 | InitializeComponent();
13 |
14 | PopulateTools();
15 | }
16 |
17 | private ListViewItem GetListItem(string name)
18 | {
19 | var item = new ListViewItem(name);
20 | item.Checked = true;
21 | return item;
22 | }
23 |
24 | private void HiddenToolsControl_Paint(object sender, PaintEventArgs e)
25 | {
26 | PopulateTools();
27 | }
28 |
29 | private void lvAssemblies_ItemChecked(object sender, ItemCheckedEventArgs e)
30 | {
31 | if (e.Item.Checked)
32 | {
33 | Options.Instance.HiddenPlugins.Add(e.Item.Text);
34 | }
35 | else
36 | {
37 | Options.Instance.HiddenPlugins.Remove(e.Item.Text);
38 | }
39 | }
40 |
41 | private void PopulateTools()
42 | {
43 | lvAssemblies.ItemChecked -= lvAssemblies_ItemChecked;
44 | var items = Options.Instance.HiddenPlugins.Select(a => GetListItem(a)).ToArray();
45 | lvAssemblies.Items.Clear();
46 | lvAssemblies.Items.AddRange(items);
47 | lvAssemblies.ItemChecked += lvAssemblies_ItemChecked;
48 | }
49 | }
50 | }
--------------------------------------------------------------------------------
/XrmToolBox/Controls/HighlightItem.cs:
--------------------------------------------------------------------------------
1 | using McTools.Xrm.Connection;
2 | using System;
3 | using System.Drawing;
4 | using System.Drawing.Drawing2D;
5 | using System.IO;
6 | using System.Windows.Forms;
7 |
8 | namespace XrmToolBox.Controls
9 | {
10 | public partial class HighlightItem : UserControl
11 | {
12 | private Color from;
13 | private Color to;
14 |
15 | public HighlightItem()
16 | {
17 | InitializeComponent();
18 | }
19 |
20 | public HighlightItem(ConnectionDetail detail)
21 | {
22 | InitializeComponent();
23 |
24 | SetContent(detail);
25 | }
26 |
27 | public HighlightItem(Color from, Color to)
28 | {
29 | InitializeComponent();
30 |
31 | Controls.Clear();
32 |
33 | this.from = from;
34 | this.to = to;
35 |
36 | Paint += HighlightItem_Paint;
37 | }
38 |
39 | private void HighlightItem_Paint(object sender, PaintEventArgs e)
40 | {
41 | LinearGradientBrush linGrBrush = new LinearGradientBrush(
42 | new Point(0, 10),
43 | new Point(Width, 10),
44 | from, // Opaque red
45 | to); // Opaque blue
46 |
47 | e.Graphics.FillRectangle(linGrBrush, 0, 0, Width, Height);
48 | }
49 |
50 | private void HighlightItem_Resize(object sender, EventArgs e)
51 | {
52 | Invalidate();
53 | }
54 |
55 | private void SetContent(ConnectionDetail detail)
56 | {
57 | BackColor = detail.EnvironmentHighlightingInfo?.Color ?? DefaultBackColor;
58 | lblName.ForeColor = detail.EnvironmentHighlightingInfo?.TextColor ?? DefaultForeColor;
59 | lblName.Text = detail.ConnectionName;
60 |
61 | if (detail.ParentConnectionFile?.Base64Image != null)
62 | {
63 | byte[] bytes = Convert.FromBase64String(detail.ParentConnectionFile.Base64Image);
64 |
65 | using (MemoryStream ms = new MemoryStream(bytes))
66 | {
67 | pbLogo.SizeMode = PictureBoxSizeMode.StretchImage;
68 | pbLogo.Image = Image.FromStream(ms);
69 | }
70 | }
71 | else
72 | {
73 | pbLogo.Visible = false;
74 | }
75 |
76 | Width = 10 + 8 + TextRenderer.MeasureText(lblName.Text, lblName.Font).Width + (pbLogo.Visible ? pbLogo.Width : 0);
77 | }
78 | }
79 | }
--------------------------------------------------------------------------------
/XrmToolBox/Controls/ISettingsControl.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XrmToolBox.AppCode;
3 |
4 | namespace XrmToolBox.Controls
5 | {
6 | internal interface ISettingsControl
7 | {
8 | event EventHandler OnSettingsPropertyChanged;
9 |
10 | string PropertyName { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/XrmToolBox/Controls/NavLeftItem.designer.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace XrmToolBox.Controls
3 | {
4 | partial class NavLeftItem
5 | {
6 | ///
7 | /// Variable nécessaire au concepteur.
8 | ///
9 | private System.ComponentModel.IContainer components = null;
10 |
11 | ///
12 | /// Nettoyage des ressources utilisées.
13 | ///
14 | /// true si les ressources managées doivent être supprimées ; sinon, false.
15 | protected override void Dispose(bool disposing)
16 | {
17 | if (disposing && (components != null))
18 | {
19 | components.Dispose();
20 | }
21 | base.Dispose(disposing);
22 | }
23 |
24 | #region Code généré par le Concepteur de composants
25 |
26 | ///
27 | /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
28 | /// le contenu de cette méthode avec l'éditeur de code.
29 | ///
30 | private void InitializeComponent()
31 | {
32 | this.SuspendLayout();
33 | //
34 | // NavLeftItem
35 | //
36 | this.AutoScaleDimensions = new System.Drawing.SizeF(13F, 32F);
37 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
38 | this.BackColor = System.Drawing.SystemColors.Control;
39 | this.Font = new System.Drawing.Font("Segoe UI Variable Text", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
40 | this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
41 | this.Name = "NavLeftItem";
42 | this.Size = new System.Drawing.Size(764, 198);
43 | this.Click += new System.EventHandler(this.NavLeftItem_Click);
44 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.NavLeftItem_Paint);
45 | this.ResumeLayout(false);
46 |
47 | }
48 |
49 | #endregion
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/XrmToolBox/Controls/SwitchControl.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using System.Windows.Forms;
4 | using XrmToolBox.AppCode;
5 |
6 | namespace XrmToolBox.Controls
7 | {
8 | public partial class SwitchControl : UserControl
9 | {
10 | private bool _checked;
11 |
12 | public SwitchControl()
13 | {
14 | InitializeComponent();
15 | }
16 |
17 | public event EventHandler OnCheckedChanged;
18 |
19 | public bool Checked
20 | {
21 | get
22 | {
23 | return _checked;
24 | }
25 | set
26 | {
27 | _checked = value;
28 | Invalidate();
29 | OnCheckedChanged?.Invoke(this, new EventArgs());
30 | }
31 | }
32 |
33 | public bool Enabled { get; set; } = true;
34 |
35 | private void SwitchControl_Click(object sender, EventArgs e)
36 | {
37 | Checked = !Checked;
38 | }
39 |
40 | private void SwitchControl_Paint(object sender, PaintEventArgs e)
41 | {
42 | using (Image img = (_checked ? Properties.Resources.on_button : Properties.Resources.off_button).ResizeImage(40, 40))
43 | {
44 | e.Graphics.DrawImage(img, new Point(4, Height / 2 - img.Height / 2));
45 | }
46 | var text = _checked ? "True" : "False";
47 | var textSize = TextRenderer.MeasureText(text, Font);
48 |
49 | e.Graphics.DrawString(text, Font, new SolidBrush(Enabled ? ForeColor : Color.LightGray), new Point(50, Height / 2 - textSize.Height / 2));
50 | }
51 | }
52 | }
--------------------------------------------------------------------------------
/XrmToolBox/Controls/SwitchControl.designer.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace XrmToolBox.Controls
3 | {
4 | partial class SwitchControl
5 | {
6 | ///
7 | /// Variable nécessaire au concepteur.
8 | ///
9 | private System.ComponentModel.IContainer components = null;
10 |
11 | ///
12 | /// Nettoyage des ressources utilisées.
13 | ///
14 | /// true si les ressources managées doivent être supprimées ; sinon, false.
15 | protected override void Dispose(bool disposing)
16 | {
17 | if (disposing && (components != null))
18 | {
19 | components.Dispose();
20 | }
21 | base.Dispose(disposing);
22 | }
23 |
24 | #region Code généré par le Concepteur de composants
25 |
26 | ///
27 | /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
28 | /// le contenu de cette méthode avec l'éditeur de code.
29 | ///
30 | private void InitializeComponent()
31 | {
32 | this.SuspendLayout();
33 | //
34 | // SwitchControl
35 | //
36 | this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 27F);
37 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
38 | this.Font = new System.Drawing.Font("Segoe UI Variable Text", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
39 | this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
40 | this.Name = "SwitchControl";
41 | this.Size = new System.Drawing.Size(232, 72);
42 | this.Click += new System.EventHandler(this.SwitchControl_Click);
43 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.SwitchControl_Paint);
44 | this.ResumeLayout(false);
45 |
46 | }
47 |
48 | #endregion
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/XrmToolBox/Controls/TextBoxWithPlaceholder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Drawing;
3 | using System.Windows.Forms;
4 |
5 | namespace XrmToolBox.Controls
6 | {
7 | public class TextBoxWithPlaceholder : TextBox
8 | {
9 | private string placeholder;
10 | private bool silent;
11 |
12 | public TextBoxWithPlaceholder()
13 | {
14 | ForeColor = Color.LightGray;
15 | Enter += TextBoxWithPlaceholder_Enter;
16 | Leave += TextBoxWithPlaceholder_Leave;
17 | GotFocus += TextBoxWithPlaceholder_GotFocus;
18 | Tag = true;
19 | }
20 |
21 | public string Placeholder
22 | {
23 | get { return placeholder; }
24 | set
25 | {
26 | placeholder = value;
27 | base.Text = value;
28 | }
29 | }
30 |
31 | public override string Text
32 | {
33 | get
34 | {
35 | if ((bool)Tag)
36 | return string.Empty;
37 | return base.Text;
38 | }
39 | set => base.Text = value;
40 | }
41 |
42 | protected override void OnTextChanged(EventArgs e)
43 | {
44 | if (!silent)
45 | {
46 | base.OnTextChanged(e);
47 | }
48 |
49 | ForeColor = SystemColors.ControlText;
50 | }
51 |
52 | private void TextBoxWithPlaceholder_Enter(object sender, EventArgs e)
53 | {
54 | if ((bool)Tag)
55 | {
56 | Tag = false;
57 | silent = true;
58 | Text = "";
59 | ForeColor = SystemColors.ControlText;
60 | silent = false;
61 | }
62 | }
63 |
64 | private void TextBoxWithPlaceholder_GotFocus(object sender, EventArgs e)
65 | {
66 | TextBoxWithPlaceholder_Enter(sender, e);
67 | }
68 |
69 | private void TextBoxWithPlaceholder_Leave(object sender, EventArgs e)
70 | {
71 | if (Text.Length == 0)
72 | {
73 | Tag = true;
74 | silent = true;
75 | Text = placeholder;
76 | ForeColor = Color.LightGray;
77 | silent = false;
78 | }
79 | }
80 | }
81 | }
--------------------------------------------------------------------------------
/XrmToolBox/CrmExceptionHelper.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using System;
7 | using System.ServiceModel;
8 |
9 | namespace XrmToolBox
10 | {
11 | public class CrmExceptionHelper
12 | {
13 | public static string GetErrorMessage(Exception error, bool returnWithStackTrace)
14 | {
15 | if (error.InnerException is FaultException)
16 | {
17 | if (returnWithStackTrace)
18 | {
19 | return (error.InnerException).ToString();
20 | }
21 | else
22 | {
23 | return (error.InnerException).Message;
24 | }
25 | }
26 | else if (error.InnerException != null)
27 | {
28 | if (returnWithStackTrace)
29 | {
30 | return error.InnerException.ToString();
31 | }
32 | else
33 | {
34 | return error.InnerException.Message;
35 | }
36 | }
37 | else
38 | {
39 | if (returnWithStackTrace)
40 | {
41 | return error.ToString();
42 | }
43 | else
44 | {
45 | return error.Message;
46 | }
47 | }
48 | }
49 | }
50 | }
--------------------------------------------------------------------------------
/XrmToolBox/Forms/HiddenPluginsDialog.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | using System.Windows.Forms;
4 |
5 | namespace XrmToolBox.Forms
6 | {
7 | public partial class HiddenPluginsDialog : Form
8 | {
9 | public HiddenPluginsDialog(List hiddenPlugins)
10 | {
11 | InitializeComponent();
12 |
13 | foreach (var plugin in PluginManagerExtended.Instance.PluginsExt)
14 | {
15 | try
16 | {
17 | var title = plugin.Metadata.Name;
18 | var author = plugin.Metadata.Company;
19 | var version = plugin.Metadata.Version;
20 |
21 | var item = new ListViewItem(title);
22 | item.SubItems.Add(author);
23 | item.SubItems.Add(version);
24 | item.Checked = hiddenPlugins?.Contains(title) ?? false;
25 |
26 | lvPlugins.Items.Add(item);
27 | }
28 | catch { }
29 | }
30 | }
31 |
32 | public List HiddenPlugins
33 | {
34 | get
35 | {
36 | return lvPlugins.Items
37 | .Cast()
38 | .Where(i => i.Checked)
39 | .Select(i => i.Text)
40 | .ToList();
41 | }
42 | }
43 |
44 | private void btnCancel_Click(object sender, System.EventArgs e)
45 | {
46 | Close();
47 | }
48 |
49 | private void btnOk_Click(object sender, System.EventArgs e)
50 | {
51 | Close();
52 | }
53 | }
54 | }
--------------------------------------------------------------------------------
/XrmToolBox/Forms/SuccessDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace XrmToolBox.Forms
5 | {
6 | public partial class SuccessDialog : Form
7 | {
8 | public SuccessDialog()
9 | {
10 | InitializeComponent();
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/XrmToolBox/Forms/TabConnectionUpdater.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using McTools.Xrm.Connection;
7 | using System;
8 | using System.Collections.Generic;
9 | using System.Windows.Forms;
10 | using XrmToolBox.New;
11 |
12 | namespace XrmToolBox.Forms
13 | {
14 | public partial class TabConnectionUpdater : Form
15 | {
16 | private readonly List pluginForms;
17 |
18 | public TabConnectionUpdater(List pluginForms, ConnectionDetail detail)
19 | {
20 | InitializeComponent();
21 |
22 | this.pluginForms = pluginForms;
23 | SelectedPluginForms = new List();
24 |
25 | lblHeaderDesc.Text = string.Format(lblHeaderDesc.Tag.ToString(), detail.ConnectionName);
26 | }
27 |
28 | public List SelectedPluginForms { get; }
29 |
30 | private void btnAll_Click(object sender, EventArgs e)
31 | {
32 | foreach (ListViewItem item in lvTabs.Items)
33 | {
34 | item.Checked = true;
35 | }
36 | btnOK.PerformClick();
37 | }
38 |
39 | private void btnCancel_Click(object sender, EventArgs e)
40 | {
41 | DialogResult = DialogResult.Cancel;
42 | Close();
43 | }
44 |
45 | private void BtnOkClick(object sender, EventArgs e)
46 | {
47 | foreach (ListViewItem item in lvTabs.CheckedItems)
48 | {
49 | SelectedPluginForms.Add((PluginForm)item.Tag);
50 | }
51 |
52 | DialogResult = DialogResult.OK;
53 | Close();
54 | }
55 |
56 | private void EnableButtons()
57 | {
58 | btnAll.Enabled = lvTabs.Items.Count > 0;
59 | btnOK.Enabled = lvTabs.CheckedItems.Count > 0;
60 | }
61 |
62 | private void lvTabs_ItemChecked(object sender, ItemCheckedEventArgs e)
63 | {
64 | EnableButtons();
65 | }
66 |
67 | private void TabConnectionUpdaterLoad(object sender, EventArgs e)
68 | {
69 | if (pluginForms != null)
70 | {
71 | foreach (var pluginForm in pluginForms)
72 | {
73 | string[] nameParts = pluginForm.Text.Split('(');
74 |
75 | var item = new ListViewItem(nameParts[0]);
76 | item.SubItems.Add(nameParts[1].Replace(")", ""));
77 | item.Tag = pluginForm;
78 |
79 | lvTabs.Items.Add(item);
80 | }
81 | }
82 |
83 | EnableButtons();
84 | }
85 | }
86 | }
--------------------------------------------------------------------------------
/XrmToolBox/Images/nologo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Images/nologo.png
--------------------------------------------------------------------------------
/XrmToolBox/Images/nologo32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Images/nologo32.png
--------------------------------------------------------------------------------
/XrmToolBox/Images/progress.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Images/progress.gif
--------------------------------------------------------------------------------
/XrmToolBox/New/CustomFloatWindow.cs:
--------------------------------------------------------------------------------
1 | using System.Drawing;
2 | using System.Windows.Forms;
3 | using WeifenLuo.WinFormsUI.Docking;
4 |
5 | namespace XrmToolBox.New
6 | {
7 | public class CustomFloatWindow : FloatWindow
8 | {
9 | public CustomFloatWindow(DockPanel dockPanel, DockPane pane)
10 | : base(dockPanel, pane)
11 | {
12 | FormBorderStyle = FormBorderStyle.Sizable;
13 | }
14 |
15 | public CustomFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds)
16 | : base(dockPanel, pane, bounds)
17 | {
18 | FormBorderStyle = FormBorderStyle.Sizable;
19 | }
20 | }
21 |
22 | public class CustomFloatWindowFactory : DockPanelExtender.IFloatWindowFactory
23 | {
24 | public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds)
25 | {
26 | return new CustomFloatWindow(dockPanel, pane, bounds);
27 | }
28 |
29 | public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane)
30 | {
31 | return new CustomFloatWindow(dockPanel, pane);
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/XrmToolBox/New/EventArgs/OpenFavoritePluginEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XrmToolBox.AppCode;
3 |
4 | namespace XrmToolBox.New.EventArgs
5 | {
6 | public class OpenFavoritePluginEventArgs : System.EventArgs
7 | {
8 | public OpenFavoritePluginEventArgs(Favorite item, bool newConnectionNeeded = false)
9 | {
10 | Item = item;
11 |
12 | if (item.ConnectionId == Guid.Empty)
13 | {
14 | NewConnectionNeeded = newConnectionNeeded;
15 | }
16 | }
17 |
18 | public Favorite Item { get; }
19 | public bool NewConnectionNeeded { get; }
20 | }
21 | }
--------------------------------------------------------------------------------
/XrmToolBox/New/EventArgs/OpenMruPluginEventArgs.cs:
--------------------------------------------------------------------------------
1 | using XrmToolBox.AppCode;
2 |
3 | namespace XrmToolBox.New.EventArgs
4 | {
5 | public class OpenMruPluginEventArgs : System.EventArgs
6 | {
7 | public OpenMruPluginEventArgs(MostRecentlyUsedItem item)
8 | {
9 | Item = item;
10 | }
11 |
12 | public MostRecentlyUsedItem Item { get; }
13 | }
14 | }
--------------------------------------------------------------------------------
/XrmToolBox/New/EventArgs/OpenPluginEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using XrmToolBox.Extensibility.Interfaces;
7 |
8 | namespace XrmToolBox.New.EventArgs
9 | {
10 | public class OpenPluginEventArgs : System.EventArgs
11 | {
12 | public OpenPluginEventArgs(Lazy plugin)
13 | {
14 | Plugin = plugin;
15 | }
16 |
17 | public Lazy Plugin { get; }
18 | }
19 | }
--------------------------------------------------------------------------------
/XrmToolBox/New/EventArgs/PluginEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using XrmToolBox.Extensibility.Interfaces;
3 | using XrmToolBox.Extensibility.UserControls;
4 |
5 | namespace XrmToolBox.New.EventArgs
6 | {
7 | public class PluginEventArgs : System.EventArgs
8 | {
9 | public PluginEventArgs(PluginModel pluginModel)
10 | {
11 | PluginModel = pluginModel;
12 | Plugin = (Lazy)pluginModel.Tag;
13 | }
14 |
15 | public PluginEventArgs(string pluginName)
16 | {
17 | PluginName = pluginName;
18 | }
19 |
20 | public PluginEventArgs(OpenMruPluginEventArgs mruInfo, Lazy plugin)
21 | {
22 | MruInfo = mruInfo;
23 | PluginName = mruInfo.Item.PluginName;
24 | Plugin = plugin;
25 | }
26 |
27 | public PluginEventArgs(IXrmToolBoxPluginControl pluginControl)
28 | {
29 | PluginControl = pluginControl;
30 | }
31 |
32 | public PluginEventArgs(Lazy plugin)
33 | {
34 | Plugin = plugin;
35 | }
36 |
37 | public OpenMruPluginEventArgs MruInfo { get; }
38 | public bool NeedNewConnection { get; set; }
39 | public Lazy Plugin { get; }
40 | public IXrmToolBoxPluginControl PluginControl { get; }
41 | public PluginModel PluginModel { get; }
42 | public string PluginName { get; }
43 | public IDuplicatableTool SourceTool { get; set; }
44 | public object State { get; set; }
45 | }
46 | }
--------------------------------------------------------------------------------
/XrmToolBox/New/EventArgs/PluginsListEventArgs.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace XrmToolBox.New.EventArgs
8 | {
9 | public class PluginsListEventArgs : System.EventArgs
10 | {
11 | public PluginsListEventArgs(PluginsListAction action)
12 | {
13 | Action = action;
14 | }
15 |
16 | public PluginsListAction Action { get; }
17 | }
18 |
19 |
20 | public abstract class PluginsListAction { }
21 |
22 | public class OpenPluginsStoreAction : PluginsListAction
23 | {
24 | public OpenPluginsStoreAction(string searchTerm)
25 | {
26 | SearchTerm = searchTerm;
27 | }
28 |
29 | public string SearchTerm { get; }
30 | }
31 |
32 | public class ResetSearchFilterAction : PluginsListAction { }
33 |
34 | }
--------------------------------------------------------------------------------
/XrmToolBox/New/InvalidPluginsForm.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Diagnostics;
3 | using System.Linq;
4 | using System.Windows.Forms;
5 | using XrmToolBox.Extensibility;
6 |
7 | namespace XrmToolBox.New
8 | {
9 | public partial class InvalidPluginsForm : Form
10 | {
11 | private readonly Dictionary validationErrors;
12 |
13 | public InvalidPluginsForm(Dictionary validationErrors)
14 | {
15 | InitializeComponent();
16 |
17 | this.validationErrors = validationErrors;
18 | }
19 |
20 | private void InvalidPluginsForm_Load(object sender, System.EventArgs e)
21 | {
22 | lvPlugins.Items.AddRange(validationErrors.Select(ve => new ListViewItem(ve.Key) { Tag = ve.Value }).ToArray());
23 | }
24 |
25 | private void llShortcut_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
26 | {
27 | MessageBox.Show(this, @"Do not forget to close XrmToolBox before deleting tools", @"Information",
28 | MessageBoxButtons.OK, MessageBoxIcon.Information);
29 |
30 | Process.Start(Paths.PluginsPath);
31 | Close();
32 | }
33 |
34 | private void lvPlugins_SelectedIndexChanged(object sender, System.EventArgs e)
35 | {
36 | if (lvPlugins.SelectedItems.Count > 0)
37 | {
38 | txtError.Text = lvPlugins.SelectedItems[0].Tag.ToString();
39 | }
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/XrmToolBox/New/InvalidPluginsInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Windows.Forms;
3 |
4 | namespace XrmToolBox.New
5 | {
6 | public partial class InvalidPluginsInfo : UserControl
7 | {
8 | private readonly Dictionary validationErrors;
9 |
10 | public InvalidPluginsInfo(Dictionary validationErrors)
11 | {
12 | InitializeComponent();
13 |
14 | this.validationErrors = validationErrors;
15 | }
16 |
17 | private void lblSecurityFilter_MouseClick(object sender, MouseEventArgs e)
18 | {
19 | if (e.Button == MouseButtons.Left)
20 | {
21 | using (var ipForm = new InvalidPluginsForm(validationErrors))
22 | {
23 | ipForm.ShowDialog(ParentForm);
24 | }
25 | }
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/XrmToolBox/New/PluginsFilterInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Forms;
2 |
3 | namespace XrmToolBox.New
4 | {
5 | public partial class PluginsFilterInfo : UserControl
6 | {
7 | public PluginsFilterInfo()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/XrmToolBox/New/ToolInfo.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 |
5 | namespace XrmToolBox.New
6 | {
7 | internal class ToolInfo
8 | {
9 | public string Author { get; set; }
10 | public Color BackColor { get; set; }
11 | public List Categories { get; set; } = new List();
12 | public Color Color { get; set; }
13 | public string Description { get; set; }
14 | public bool hasPayPal { get; set; }
15 | public Image Image { get; set; }
16 | public string Name { get; set; }
17 | public int NumberOfUse { get; set; }
18 | public Color SecondaryColor { get; set; }
19 | public string Version { get; set; }
20 | }
21 | }
--------------------------------------------------------------------------------
/XrmToolBox/PluginUseCount.cs:
--------------------------------------------------------------------------------
1 | namespace XrmToolBox
2 | {
3 | public class PluginUseCount
4 | {
5 | public int Count { get; set; }
6 | public string Name { get; set; }
7 | }
8 | }
--------------------------------------------------------------------------------
/XrmToolBox/PluginsListForm.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace XrmToolBox
2 | {
3 | partial class PluginsListForm
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.components = new System.ComponentModel.Container();
32 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
33 | this.Text = "PluginsListForm";
34 | }
35 |
36 | #endregion
37 | }
38 | }
--------------------------------------------------------------------------------
/XrmToolBox/PluginsListForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 |
11 | namespace XrmToolBox
12 | {
13 | public partial class PluginsListForm : Form
14 | {
15 | public PluginsListForm()
16 | {
17 | InitializeComponent();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/XrmToolBox/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using System.Reflection;
7 | using System.Runtime.InteropServices;
8 |
9 | // Les informations générales relatives à un assembly dépendent de
10 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
11 | // associées à un assembly.
12 | [assembly: AssemblyTitle("XrmToolBox")]
13 | [assembly: AssemblyDescription("")]
14 | [assembly: AssemblyConfiguration("")]
15 | [assembly: AssemblyCompany("MscrmTools")]
16 | [assembly: AssemblyProduct("XrmToolBox")]
17 | [assembly: AssemblyCopyright("Copyright © MscrmTools 2012")]
18 | [assembly: AssemblyTrademark("")]
19 | [assembly: AssemblyCulture("")]
20 |
21 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
22 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
23 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type.
24 | [assembly: ComVisible(false)]
25 |
26 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
27 | [assembly: Guid("c42f3d01-2b09-4f3a-93fb-3ad3118a421c")]
28 |
29 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes :
30 | //
31 | // Version principale
32 | // Version secondaire
33 | // Numéro de build
34 | // Révision
35 | //
36 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
37 | // en utilisant '*', comme indiqué ci-dessous :
38 | // [assembly: AssemblyVersion("1.0.*")]
39 | [assembly: AssemblyVersion("1.2024.9.69")]
40 | [assembly: AssemblyFileVersion("1.2024.9.69")]
--------------------------------------------------------------------------------
/XrmToolBox/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Ce code a été généré par un outil.
4 | // Version du runtime :4.0.30319.34209
5 | //
6 | // Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
7 | // le code est régénéré.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace XrmToolBox.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/XrmToolBox/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/XrmToolBox/Resources/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/3.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/ApplicationProtocol32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/ApplicationProtocol32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Assemblies32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Assemblies32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/CheckForUpdate24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/CheckForUpdate24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Clear_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Clear_16.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/CloseBehavior32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/CloseBehavior32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Comparison32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Comparison32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Configuration32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Configuration32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Connect16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Connect16.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Connect24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Connect24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Connect32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Connect32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/ConnectingDataverse.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/ConnectingDataverse.gif
--------------------------------------------------------------------------------
/XrmToolBox/Resources/ConnectingDynamics.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/ConnectingDynamics.gif
--------------------------------------------------------------------------------
/XrmToolBox/Resources/ConnectionControls32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/ConnectionControls32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Connections32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Connections32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Credits32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Credits32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Customizations32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Customizations32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Data32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Data32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/DataCollect32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/DataCollect32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Dataverse24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Dataverse24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Dataverse_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Dataverse_16x16.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Development32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Development32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Display32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Display32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Documentation32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Documentation32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Dollar24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Dollar24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Dynamics365_24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Dynamics365_24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Eraser24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Eraser24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Euro24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Euro24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Expand32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Expand32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Favorite24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Favorite24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Gitter32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Gitter32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Help24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Help24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Hide24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Hide24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Hide32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Hide32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Impersonate24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Impersonate24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/LoadingConnection.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/LoadingConnection.gif
--------------------------------------------------------------------------------
/XrmToolBox/Resources/LogoDyn365.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/LogoDyn365.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/ManageConnections24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/ManageConnections24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Migration32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Migration32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/New32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/New32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/OpenToolsLibrary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/OpenToolsLibrary.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Paths32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Paths32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Plugins32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Plugins32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/PluginsStore32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/PluginsStore32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/PluginsStore64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/PluginsStore64.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Pound24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Pound24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/PowerApps24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/PowerApps24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/PowerApps_scalable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/PowerApps_scalable.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/PowerBI32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/PowerBI32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/PowerPages32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/PowerPages32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Processes32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Processes32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/ProxySettings32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/ProxySettings32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Refresh24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Refresh24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Reporting32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Reporting32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Security32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Security32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Session32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Session32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Settings24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Settings24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Settings32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Settings32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Shortcut24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Shortcut24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Shrink32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Shrink32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Solutions32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Solutions32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/StartPage32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/StartPage32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Startup32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Startup32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Tools24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Tools24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/ToolsListDisplay32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/ToolsListDisplay32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Troubleshooting32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Troubleshooting32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Uninstall24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Uninstall24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/UserInterface32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/UserInterface32.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/Web24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/Web24.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/close.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/close1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/close1.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/hide_detail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/hide_detail.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/left-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/left-arrow.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/lightning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/lightning.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/loading_dv0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/loading_dv0.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/loading_dv1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/loading_dv1.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/loading_dv2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/loading_dv2.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/loading_dv3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/loading_dv3.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/loading_dv4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/loading_dv4.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/logo_0016.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/logo_0016.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/logo_0032.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/logo_0032.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/logo_0400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/logo_0400.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/logo_0400_old.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/logo_0400_old.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/mask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/mask.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/money_dollar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/money_dollar.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/money_euro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/money_euro.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/money_pound.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/money_pound.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/off-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/off-button.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/on-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/on-button.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/paypal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/paypal.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/powerapps16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/powerapps16.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/right-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/right-arrow.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/server.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/shortcut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/shortcut.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/star.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/three_tags.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/three_tags.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/twitter.png
--------------------------------------------------------------------------------
/XrmToolBox/Resources/www_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/Resources/www_page.png
--------------------------------------------------------------------------------
/XrmToolBox/Startup/NugetCleanup.Command.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Nuget.Common.dll
5 | XrmToolBox.PluginsStore.dll
6 |
7 | This version of XrmToolBox removes the legacy tool library. Nuget assemblies are not needed anymore and will be deleted.
8 |
9 | IF EXIST "Nuget.Common.dll" (DEL "Nuget.Common.dll")
10 | IF EXIST "Nuget.Configuration.dll" (DEL "Nuget.Configuration.dll")
11 | IF EXIST "Nuget.Core.dll" (DEL "Nuget.Core.dll")
12 | IF EXIST "Nuget.Frameworks.dll" (DEL "Nuget.Frameworks.dll")
13 | IF EXIST "Nuget.Packaging.dll" (DEL "Nuget.Packaging.dll")
14 | IF EXIST "Nuget.Protocol.dll" (DEL "Nuget.Protocol.dll")
15 | IF EXIST "Nuget.Versioning.dll" (DEL "Nuget.Versioning.dll")
16 | IF EXIST "XrmToolBox.PluginsStore.dll" (DEL "Nuget.Versioning.dll")
17 |
18 |
19 |
--------------------------------------------------------------------------------
/XrmToolBox/UserControls/LargePluginModel.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using System;
7 | using System.Drawing;
8 | using System.IO;
9 | using System.Windows.Forms;
10 |
11 | namespace XrmToolBox.UserControls
12 | {
13 | public partial class LargePluginModel : PluginModel
14 | {
15 | #region Event Handlers
16 |
17 | public override event ClickedEventHandler Clicked;
18 |
19 | #endregion
20 |
21 | #region Constructors
22 |
23 | public LargePluginModel()
24 | {
25 | InitializeComponent();
26 | }
27 |
28 | public LargePluginModel(Image image, string title, string description, string company, string version, Color backColor, Color primaryColor, Color secondaryColor, int count)
29 | {
30 | InitializeComponent();
31 |
32 | picture.Image = image;
33 | lblTitle.Text = title;
34 | lblDescription.Text = description;
35 | lblAuthor.Text = "Author: " + company;
36 | lblVersion.Text = "Version: " + version;
37 |
38 | lblTitle.ForeColor = primaryColor;
39 | lblDescription.ForeColor = primaryColor;
40 | lblAuthor.ForeColor = primaryColor;
41 | lblVersion.ForeColor = primaryColor;
42 |
43 | BackColor = backColor;
44 |
45 | if (count > 0)
46 | {
47 | lblCount.Text = count.ToString();
48 | }
49 | else
50 | {
51 | lblCount.Visible = false;
52 | }
53 | }
54 |
55 | #endregion Constructors
56 |
57 | private new void MouseClick(object sender, EventArgs e)
58 | {
59 | if(Clicked != null)
60 | Clicked(this, new EventArgs());
61 | }
62 |
63 | public void UpdateCount(int count)
64 | {
65 | lblCount.Text = count.ToString();
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/XrmToolBox/UserControls/PluginModel.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using System;
7 | using System.Drawing;
8 | using System.Windows.Forms;
9 |
10 | namespace XrmToolBox.UserControls
11 | {
12 | public class PluginModel : UserControl
13 | {
14 | #region Delegates
15 |
16 | public delegate void ClickedEventHandler(object sender, EventArgs e);
17 |
18 | #endregion
19 |
20 | #region Event Handlers
21 |
22 | public virtual event ClickedEventHandler Clicked;
23 |
24 | #endregion
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/XrmToolBox/UserControls/SmallPluginLabel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Windows.Forms;
7 |
8 | namespace XrmToolBox.UserControls
9 | {
10 | internal class SmallPluginLabel : Label
11 | {
12 | private Color primaryFontColor;
13 | private Color secondaryFontColor;
14 | public Color PrimaryFontColor {
15 | set { primaryFontColor = value; }
16 | }
17 |
18 | public Color SecondaryFontColor
19 | {
20 | set
21 | {
22 | secondaryFontColor = value;
23 | }
24 | }
25 |
26 | protected override void OnPaint(PaintEventArgs e)
27 | {
28 | Point drawPoint = new Point(0, 0);
29 |
30 | try
31 | {
32 | int indexOfBy = Text.IndexOf("by");
33 | int indexOfSeparator = Text.IndexOf(" - ", indexOfBy);
34 |
35 | string firstPart = Text.Substring(0, indexOfBy);
36 | string secondPart = Text.Substring(indexOfBy, indexOfSeparator - indexOfBy);
37 | string thirdPart = Text.Remove(0, indexOfSeparator);
38 |
39 |
40 | Font normalFont = this.Font;
41 |
42 | Font smallFont = new Font(normalFont.FontFamily, normalFont.Size - 4);
43 |
44 | Size normalSize1 = TextRenderer.MeasureText(firstPart, normalFont);
45 | Size smallSize = TextRenderer.MeasureText(secondPart, smallFont);
46 | Size normalSize2 = TextRenderer.MeasureText(thirdPart, normalFont);
47 |
48 | Rectangle normalRect1 = new Rectangle(drawPoint, normalSize1);
49 | Rectangle smallRect = new Rectangle(new Point(normalSize1.Width - 10,5), smallSize);
50 | Rectangle normalRect2 = new Rectangle(new Point(smallSize.Width + normalSize1.Width - 20, 0), normalSize2);
51 |
52 | TextRenderer.DrawText(e.Graphics, firstPart, normalFont, normalRect1, primaryFontColor); //ForeColor);
53 | TextRenderer.DrawText(e.Graphics, secondPart, smallFont, smallRect, secondaryFontColor);//Color.Gray);
54 | TextRenderer.DrawText(e.Graphics, thirdPart, normalFont, normalRect2, primaryFontColor); //ForeColor);
55 | }
56 | catch
57 | {
58 | TextRenderer.DrawText(e.Graphics, Text, Font, drawPoint, ForeColor);
59 | }
60 | }
61 | }
62 | }
--------------------------------------------------------------------------------
/XrmToolBox/UserControls/SmallPluginModel.cs:
--------------------------------------------------------------------------------
1 | // PROJECT : XrmToolBox
2 | // This project was developed by Tanguy Touzard
3 | // CODEPLEX: http://xrmtoolbox.codeplex.com
4 | // BLOG: http://mscrmtools.blogspot.com
5 |
6 | using System;
7 | using System.Drawing;
8 | using System.IO;
9 | using System.Windows.Forms;
10 |
11 | namespace XrmToolBox.UserControls
12 | {
13 | public partial class SmallPluginModel : PluginModel
14 | {
15 | #region Event Handlers
16 |
17 | public override event ClickedEventHandler Clicked;
18 |
19 | #endregion
20 |
21 | #region Constructors
22 |
23 | public SmallPluginModel()
24 | {
25 | InitializeComponent();
26 | }
27 |
28 | public SmallPluginModel(Image image, string title, string description, string company, string version, Color backColor, Color primaryColor, Color secondaryColor, int count)
29 | {
30 | InitializeComponent();
31 |
32 | picture.Image = image;
33 | lblTitle.PrimaryFontColor = primaryColor;
34 | lblTitle.SecondaryFontColor = secondaryColor;
35 | lblTitle.Text = string.Format("{0} by {1} - {2}", title, company, version);
36 |
37 | if (count > 0)
38 | {
39 | lblCount.Text = count.ToString();
40 | lblCount.ForeColor = secondaryColor;
41 | }
42 | else
43 | {
44 | lblCount.Visible = false;
45 | }
46 |
47 | var tip = new ToolTip();
48 | tip.SetToolTip(lblTitle, description);
49 |
50 | BackColor = backColor;
51 | }
52 |
53 | #endregion Constructors
54 |
55 | private new void MouseClick(object sender, EventArgs e)
56 | {
57 | if(Clicked != null)
58 | Clicked(this, new EventArgs());
59 | }
60 |
61 | private void LblTitleClick(object sender, EventArgs e)
62 | {
63 | MouseClick(null, null);
64 | }
65 |
66 | public void UpdateCount(int count)
67 | {
68 | lblCount.Text = count.ToString();
69 | Refresh();
70 | }
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/XrmToolBox/XrmToolBox.csproj.vspscc:
--------------------------------------------------------------------------------
1 | ""
2 | {
3 | "FILE_VERSION" = "9237"
4 | "ENLISTMENT_CHOICE" = "NEVER"
5 | "PROJECT_FILE_RELATIVE_PATH" = ""
6 | "NUMBER_OF_EXCLUDED_FILES" = "0"
7 | "ORIGINAL_PROJECT_FILE_PATH" = ""
8 | "NUMBER_OF_NESTED_PROJECTS" = "0"
9 | "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 | }
11 |
--------------------------------------------------------------------------------
/XrmToolBox/XrmToolBox201512.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/XrmToolBox201512.ico
--------------------------------------------------------------------------------
/XrmToolBox/favicon3Fr.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MscrmTools/XrmToolBox/7f3daa3d24d5ca5d6c03845d2eed5f49d46aa4de/XrmToolBox/favicon3Fr.ico
--------------------------------------------------------------------------------
/packages/repositories.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------