ProConcepts Configurations - EsriJapan/arcgis-pro-sdk GitHub Wiki
ArcGIS Pro æ§æ管çã¯ã¢ãã€ã³ã«äŒŒãŠããŸãããã¢ããªã±ãŒã·ã§ã³ãæ¡åŒµããããã®è¿œå ã®æ¹æ³ãæäŸããŸããããã«ãããçµç¹ã®ãã©ã³ããã¯ãŒã¯ãããŒãããå³å¯ã«åæ ããããŒãžã§ã³ã® ArcGIS Pro ãèšèšããã®ã«åœ¹ç«ã¡ãŸãã
Language: C#
Subject: Framework
Contributor: ArcGIS Pro SDK Team <[email protected]>
Organization: Esri, http://www.esri.com
Date: 10/06/2024
ArcGIS Pro: 3.4
Visual Studio: 2022
ãããã¯
- æŠèŠ
- æ§é
- ã³ã³ãã€ã«
- å®è¡æ
- ã€ã³ã¹ããŒã«
- DAML ã¹ããŒã
- Configuration Manager
æ§æ管çã§ã¯ã¢ãã€ã³ãããé«ã¬ãã«ã§ã®ã«ã¹ã¿ãã€ãºãå¯èœã§ããã¢ãã€ã³ã®ã«ã¹ã¿ãã€ãºã¯ã䞻㫠ArcGIS Pro ã® UI ã®æ¡åŒµã«éå®ãããŸãããæ§æ管çã®ã«ã¹ã¿ãã€ãºã¯ãã詳现ã«è¡ãããšãã§ããŸããæ§æ管çã«ãããã¢ãã€ã³ã®ã»ãã¥ãªãã£ã¬ãã«ãäžãã管çè 以å€ãæå®ããæ¢ç¥ã®ãã©ã«ããŒãè¿œå ããããšãã§ããŸããæ§æ管çã¯ãã¢ãã€ã³ãããåºç¯å²ãªã«ã¹ã¿ãã€ãºãå¯èœã§ãããDAML å®è¡æã®å€æŽïŒãã°ã€ã³ãããŠãŒã¶ãŒã®åœ¹å²ã«åºã¥ãïŒãæäŸããŸãã
åã ã®ãã·ã³ã«è€æ°ã®æ§æ管çãã€ã³ã¹ããŒã«ããããšã¯ã§ããŸãããArcGIS Pro ã®ã»ãã·ã§ã³ããšã«å®è¡ã§ããæ§æ管ç (ã€ãŸããœãªã¥ãŒã·ã§ã³) 㯠1 ã€ã®ã¿ã§ããããã¯ãã»ãã·ã§ã³ããšã«è€æ°ã®ã¢ãã€ã³ãã€ã³ã¹ããŒã«ããã³ããŒãã§ããã¢ãã€ã³ãšã¯ç°ãªããŸãã
æ§æ管çã§ã§ããããšã«ã¯æ¬¡ã®ãããªãã®ããããŸãã
- ã«ã¹ã¿ã ã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ãšã«ã¹ã¿ã ã¹ã¿ãŒãããŒãžã®äœæ
- ã¢ããªã±ãŒã·ã§ã³ ã¢ã€ã³ã³ãååãã¿ã€ãã«ããŒããã¹ãã®å€æŽ
- 䜿çšé »åºŠã®äœãã³ã³ãããŒã«ã®åé 眮ãåé€ãæ°ããã³ã³ãããŒã«ã®æ¿å ¥
- èµ·åæã«ããžãã¯ãæ¿å ¥ãããŠãŒã¶ãŒã®åœ¹å²ã«å¿ããŠã©ã€ã»ã³ã¹ãã§ãã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®å€æŽãè¡ã
- ã¢ãã€ã³ã®èªã¿èŸŒã¿ãå¶åŸ¡ãã
- ãã£ã«ã¿ãŒã³ãã³ã (ã³ãã³ãã®éç¥ãšãããç¡å¹ã«ãããªãã·ã§ã³)
æ§æ管çã¯ãã¢ãã€ã³ãšåæ§ã«ãã¢ãžã¥ãŒã«ããã¿ã³ãããã¯ãã€ã³ãªã©ã®æ°ããæ©èœãå ¬éããããšãã§ããŸãã
æ§æ管çãã¡ã€ã«ã¯ zip ã¢ãŒã«ã€ããã¡ã€ã«ã§ãæ¡åŒµå㯠.proConfigXãå éšæ§é ã¯ã¢ãã€ã³ãšåãã§ããæ§æ管ç (ããã³ã¢ãã€ã³) ã¯ã次ã®ãããªããã€ãã®éšåã§æ§æãããŸãã
- æ§æ管çãšãã®ã«ã¹ã¿ãã€ãºå 容ãèšè¿°ãã DAML (Desktop Architecture Markup Language) ãã¡ã€ã«
- ã³ã³ãã€ã«ãããã³ãŒã (ã³ã³ãã£ã°ã¬ãŒã·ã§ã³ã»ãããŒãžã£ãŒãšãã®é¢é£ã¢ãžã¥ãŒã«çš)
- ç»å
- ãªãœãŒã¹
- ãµãŒãããŒãã£ã®ã¢ã»ã³ããª
ArcGIS Pro æ§æ管çãããžã§ã¯ã ãã³ãã¬ãŒãã¯ãDAMLãæ§æ管çããã³ã¢ãžã¥ãŒã« ã¯ã©ã¹ ãã¡ã€ã«ãå«ãæ§æ管çãããžã§ã¯ããçæããŸãããããžã§ã¯ãããã«ãããŠæ§æ管çã¢ãŒã«ã€ããã¡ã€ã« (äŸïŒProConfiguration1.proConfigX) ãçæããããã©ã«ãã®æ¢ç¥ã®ãã©ã«ã (C:\Users<UserName>\Documents\ArcGIS\AddIns\ArcGISPro\Configurations) ã«ã€ã³ã¹ããŒã«ããŸããã»ãšãã©ã®å Žåãæ§æ管çã® DAML ã¯ãã¢ãã€ã³ã«äœ¿çšããã ArcGIS Pro SDK ã¢ã€ãã ãã³ãã¬ãŒããšåãã»ããã䜿çšããŠäœæãããŸã (ããšãã°ããã¿ã³ãããã ããŒã«ãããã¯ããã«ãªã©ãæ§æ管çã«è¿œå ããå Žåãªã©)ã
æ§æ管çã¯ã·ã³ã°ã«ãã³ã§ãã1 ã€ã®ã·ã¹ãã ã«ã¯ããã€ã§ãæ§æ管çãã€ã³ã¹ããŒã«ããããšãã§ããŸãããã¢ã¯ãã£ãã«ã§ããæ§æ管çã¯1ã€ã ãã§ããæ§æ管çã¯ãArcGISPro.exe ã®ã³ãã³ã ã©ã€ã³ã§ /config:{æ§æ管çå} ã³ãã³ã ã©ã€ã³ ãªãã·ã§ã³ã䜿çšããŠæå®ããããšã§ã¢ã¯ãã£ãã«ãªããŸããäŸïŒC:\ArcGIS\bin\ArcGISPro.exe /config:Acme ãšãããš Acme.proConfigX ã®èšå®ãæå¹ã«ã㊠ArcGISPro ãèµ·åããŸãã
éåžžãå®è¡ããæ§æ管çããšã«ãã¹ã¯ãããã®ã·ã§ãŒãã«ãããäœæããŸããåã·ã§ãŒãã«ããã«ã¯ãããŸããŸãªæ§æ管çã®èµ·åãç°¡åã«ããããã®é¢é£ãã/config:{Configuration_name} åŒæ°ãå«ãŸããŠããŸããããã«ãããç°ãªããã¹ã¯ãããã®ã·ã§ãŒãã«ãã㧠Pro ãèµ·åããã ãã§ãç°ãªãæ§æ管çãšããã©ã«ãã®ã¢ããªã±ãŒã·ã§ã³ãç°¡åã«åãæ¿ããããšãã§ããŸãã
æ§æ管çã¯ãã¬ãžã¹ããªã§æå®ããããšãã§ããŸããã¬ãžã¹ããªã䜿çšãããšãPro ã®ãã¹ãŠã®ã»ãã·ã§ã³ã§ã¬ãžã¹ããªã«æå®ãããæ§æ管çãåžžã«å®è¡ãããŸããã¬ãžã¹ããªã¯ãã³ãã³ãã©ã€ã³ã§æå®ãããæ§æ管çãäžæžãããŸãã詳现ã¯ãArcGIS Pro Registry Keys, ConfigurationName ããã³ ArcGIS Pro Registry Keys, Configuration Folders ãåç §ããŠãã ããã
æ§æ管çã¯ãã¢ãã€ã³ãšåãã€ã³ã¹ããŒã«ãã¿ãŒã³ã§ãã.proConfigX ãã¡ã€ã«ãããã«ã¯ãªãã¯ã㊠"RegisterAddin.exe" ãå®è¡ããŸãã"RegisterAddin.exe" ã¯ãæ§æ管çãæ€èšŒããæ§æ管çãä¿åãããŠãããã©ã«ãã«ã³ããŒããŸããC:\Users<UserName>\Documents\ArcGIS\AddIns\ArcGISPro\Configurations.ãŠãŒã¶ãŒã¯ãå ã«é²ããåã«ãæ§æ管çã®äœæè ã説æãããŒãžã§ã³ãããžã¿ã«çœ²åã®æ å ±ã確èªããæ©äŒãäžããããŸããåããã©ã«ã㌠(ããã©ã«ããã©ã«ããŒãŸãã¯æ¢åã®ãã©ã«ããŒ) ã«ã€ã³ã¹ããŒã«ãããŠããæ¢åã®æ§æ管çãšåãååã®æ§æ管çãããå Žåãæ¢åã®æ§æ管çãäžæžããããŸãã
æ§æ管ç㯠Config.daml ã®äžã§ãã«ãŒãã®<ArcGIS ...>èŠçŽ ã®åãšããŠæå®ããã<Configuration ...>ã»ã¯ã·ã§ã³ã®äžã§å®£èšãããŸãã
<ArcGIS defaultAssembly="ProConfiguration1.dll"
defaultNamespace="ProConfiguration1"
xmlns="http://schemas.esri.com/DADF/Registry"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.esri.com/DADF/Registry file:///C:/arcgis/bin/ArcGIS.Desktop.Framework.xsd">
<AddInInfo ...>
...
</AddInInfo>
<Configuration blockAddInTab="true" blockCustomizeDialog="false" blockPerfMeter="true"
checkForUpdatesAtStartup="false">
<ConfigurationManager className="ConfigurationManager1"/>
<AddIns securityLevel="1">
<AdditionalWellKnownFolder>\\NetworkShare\public\add-ins</AdditionalWellKnownFolder>
</AddIns>
</Configuration>
<modules>
<insertModule id="...." ... >
DAML ããšã«ååšã§ããæ§æ管çã®èŠçŽ ã¯1ã€ãããããŸãããæ§æ管çã®èŠçŽ 㯠blockAddInTab,blockCustomizeDialog, blockPerfMeter, ããã³ checkForUpdatesAtStartup ã® 4 ã€ã®ãªãã·ã§ã³å±æ§ããããŸãã
blockAddInTab
ããã©ã«ãå€ïŒfalse
true ã«èšå®ãããšãblockAddInTab
å±æ§ã¯ãªãã³ã® Add-In ã¿ããé衚瀺ã«ããŸãã
泚: ã¢ãã€ã³ã¯ããŒããããŸãããAdd-In ã¿ãã¯è¡šç€ºãããŸããã
blockCustomizeDialog
ããã©ã«ãå€ïŒfalse
blockCustomizeDialog
å±æ§ã true ã«èšå®ããããšãArcGIS Pro ã® [ãªãã·ã§ã³] ãã [ãªãã³ã®ã«ã¹ã¿ãã€ãº] ãªãã·ã§ã³ãåé€ãããŸããããã«ããã[ãªãã·ã§ã³] ã® [ãªãã³ã®ã«ã¹ã¿ãã€ãº] ããŒãžããè¡ã£ããŠãŒã¶ãŒã¬ãã«ã®ã«ã¹ã¿ãã€ãºããã¹ãŠãããã¯ãããŸãã
blockCustomizeDialog="true"
ã®å Žåã"ãªãã³ã®ã«ã¹ã¿ãã€ãº"ã¯åé€ãããŸãã
blockPerfMeter
ããã©ã«ãå€ïŒfalse
blockPerfMeter
å±æ§ã true ã«èšå®ããããšããŠãŒã¶ãŒãArcGIS Monitor ãèµ·åã§ããªãããã«ãããã¯ããŸãã
CheckForUpdatesAtStartup
ããã©ã«ãå€ïŒtrue
checkForUpdatesAtStartup
å±æ§ã false ã«èšå®ããããšãArcGIS Pro ã®ããã¯ã¹ããŒãžã«ãã [ããŒãžã§ã³æ
å ±] ã¿ãã® [èµ·åæã«æŽæ°ã確èª] ãã§ã㯠ããã¯ã¹ã®ãã§ãã¯ãå€ããŸãã
ConfigurationManger
èŠçŽ ã¯å¿
é ã§ãããã®ã¯ã©ã¹ã¯ãæ§æ管çãäœæããã®ã«åœ¹ç«ã€ããã€ãã®ããªãã·ã§ã³ã®æ¡åŒµãã€ã³ããæäŸããŸããæ¡åŒµãã€ã³ãã¯ã³ãŒã«ããã¯ãšããŠå®è£
ããã掟çããConfigurationManager ã¯ã©ã¹ã§ãªãŒããŒã©ã€ããããŸãã
ConfigurationManger èŠçŽ ã«ã¯ã1ã€ã®å¿ é å±æ§ className ããããŸãã
className
ããã©ã«ãå€ïŒnone
ConfigurationManager ã¯ã©ã¹ãæå®ããŸããConfigurationManager ã¯ã©ã¹ã¯ãArcGIS.Desktop.Framework.Contracts.ConfigurationManager ã³ã³ãã©ã¯ã ã¯ã©ã¹ãç¶æ¿ããå¿ èŠããããŸãã
<Configuration>
<ConfigurationManager className="ConfigurationManager1"/>
</Configuration>
Addins èŠçŽ ã䜿ã£ãŠãã¢ãã€ã³ã®ã»ãã¥ãªãã£ã¬ãã«ãæå®ããããæ¢åã®ã¢ãã€ã³ã®ã»ãã¥ãªãã£ã¬ãã«*ãäžãããã管çè ã®æ¢ç¥ã®ãã©ã«ããè¿œå ãããããããšãã§ããŸãã
securityLevel
ããã©ã«ãå€ïŒ0
securityLevel
å±æ§ã«ã¯ãã¢ãã€ã³ã®ã»ãã¥ãªãã£ã¬ãã«ã瀺ã 0ïœ5 ã®æŽæ°å€ãèšå®ã§ããŸãããããã®ã¬ãã«ã¯ãã¬ãžã¹ããªã§èšå®ã§ãã BlockAddins ã¢ãã€ã³ã®ã»ãã¥ãªãã£ã¬ãã«ãšåãã§ãã
*BlockAddins ã®ã»ãã¥ãªãã£ã¬ãã« (HKLM ãš HKCU ã®äž¡æ¹)ã¯ãèšå®ã«ãã£ãŠã®ã¿äžããããšãã§ããŸããBlockAddin ã®ã»ãã¥ãªãã£ã¬ãã«ãããäœã securityLevel
ã®å€ã¯ç¡èŠãããŸãã
<Configuration>
<ConfigurationManager className="ConfigurationManager1"/>
<AddIns securityLevel="1"/>
</Configuration>
ã¢ãã€ã³ã®ã»ãã¥ãªãã£ã¬ãã«ã 1 ã«èšå®ããŸã (眲åä»ãã¢ãã€ã³ã®ã¿)ã
ããã©ã«ãå€ïŒnone
管çè
çšã¢ãã€ã³ãã©ã«ããŒãšããŠæ±ãããããŒã«ã«ãã©ã«ããŒãŸãã¯ãããã¯ãŒã¯å
±æã®ãã«ãã¹ãæå®ããŸãã0 å以äžã® AdditionalWellKnownFolder
åèŠçŽ ãæå®ã§ããŸããAdditionalWellKnownFolders
ã¯ãä»ã®ãã©ã«ã (ã¬ãžã¹ããªã§æå®ãããŠãããã©ããã«é¢ããã) ãããå
ã«ã¢ãã€ã³ã®æç¡ã確èªããŸãã
<Configuration>
<ConfigurationManager className="ConfigurationManager1"/>
<AddIns>
<AdditionalWellKnownFolder>\\AddInShare\Public\Add-Ins</AdditionalWellKnownFolder>
<AdditionalWellKnownFolder>C:\Data\Common\Add-Ins</AdditionalWellKnownFolder>
</AddIns>
</Configuration>
管çè
çšã¢ãã€ã³ãã©ã«ããŒã®ãªã¹ãã«ã\\AddInShare\Public\Add-Ins
ãš C:\Data\Common\Add-Ins
ãè¿œå ããŸãã
ãã¹ãŠã®æ§æ管çã¯ãArcGIS.Desktop.Framework.Contracts.ConfigurationManager
ãã掟çããèšå®ãããŒãžã£ã¯ã©ã¹ãå®è£
ããå¿
èŠããããŸããConfigurationManager ã³ãŒã«ããã¯ã¯ãªãã·ã§ã³ã§ããArcGIS Pro ã®ã¢ã¹ãã¯ãããªãŒããŒã©ã€ãããããã®ã ãããªãŒããŒã©ã€ãããŸããããã©ã«ãã§ã¯ãArcGIS Pro æ§æ管ç ãã³ãã¬ãŒãã¯ãã¢ããªã±ãŒã·ã§ã³åãã¢ã€ã³ã³ãã¹ã¿ãŒãããŒãžãã¹ãã©ãã·ã¥ç»é¢ãããã³ããŒãž ã³ã³ãã³ãã®ã³ãŒã«ããã¯ã«ã€ããŠããã©ã«ãã®ãªãŒããŒã©ã€ããå®è£
ãã ConfigurationManager ã¯ã©ã¹ãçæããŸãã
æ§æ管çã¯ãPro ã®èµ·åã·ãŒã±ã³ã¹ã®éåžžã«æ©ã段éã§ã€ã³ã¹ã¿ã³ã¹åãããŸããã¢ã¯ãã£ããªæ§æ管çã¯ãä»ã®ã¢ãžã¥ãŒã« (CoreãŸãã¯ãã®ä») ãããå ã«ããŒããããŸããæ§æ管çã³ãŒã«ããã¯ã®å€ãã¯ããã¹ã WPF ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ãããArcGIS Pro ã®åºãšãªããŠã£ã³ããŠãšããã¯ã°ã©ãŠã³ã ã¹ã¬ãããéå§ãããåã«å®è¡ãããŸããã€ãŸããæ§æ管çãå®è£ ãããšãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ã«é¢é£ãã Pro èµ·åæã®ã³ãŒã«ããã¯ã§ã«ã¹ã¿ã ã³ãŒããå®è¡ããéã«ãéçºè ã«å³ããå¶çŽã課ããããããšã«ãªããŸãã
ãããã®å¶çŽã«åŸããªããšãPro ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããŸããã³ãŒã«ããã¯ã®æ£ããåŠçã«ã€ããŠã¯ã次ã®ã»ã¯ã·ã§ã³ã§èª¬æããŸãã
//The ConfigurationManager contract
public class ArcGIS.Desktop.Framework.Contracts.ConfigurationManager {
//Gets a replacement DAML file at run-time.
protected internal virtual string RuntimeDamlFile { get; }
//Gets the new application name
protected internal virtual string ApplicationName { get; }
//Gets the title bar text (New at 3.0)
protected internal virtual string TitleBarText { get; }
//Gets the new application icon
protected internal virtual ImageSource Icon { get; }
//Called when the application is initializing. Denotes it is now safe to
//communicate with Portal at this time. The DAML records have not been processed
//at this point.
//
//cancelEventArgs: false signals a problem has occurred. The application will shut down.
protected internal virtual void OnApplicationInitializing(CancelEventArgs cancelEventArgs);
//Called when the application has fully initialized.
protected internal virtual void OnApplicationReady();
//CommandFilter - gives a configuration the ability to disable commands.
//
//cmdID: The DAML ID of the command about to execute.
//moduleID: The command's parent module DAML ID.
protected internal virtual bool OnCanExecuteCommand(string cmdID, string moduleID);
//Opportunity for the configuration to provide DAML at run-time.
//
// Returns: The DAML to process in the form on an XML string.
protected internal virtual string OnCreateDaml();
//Opportunity for the configuration to provide a list of commands to show in the
//quick access toolbar. It occurs after the start page has been closed and the first
//project is opening.
//
// Returns: A list of commands to be used on the QAT
protected internal virtual List<Tuple<string, bool>> OnCreateQuickAccessToolbar();
//CommandFilter - gives a configuration the ability to reject a command's execution
//cmdID: The DAML ID of the executing command.
//moduleID: The command's parent module DAML ID.
protected internal virtual bool OnExecuteCommand(string cmdID, string moduleID);
// Allows the configuration to inject some custom user interface into the about page.
//
// Returns: The element to add to the about page.
protected internal virtual FrameworkElement OnShowAboutPage();
//The custom splash screen for the configuration.
//
// Returns: The custom window to show during startup.
protected internal virtual Window OnShowSplashScreen();
//The custom start page (landing page) to show once the application starts.
//
// Returns: The start page
protected internal virtual FrameworkElement OnShowStartPage();
//The last chance for the configuration to manipulate the DAML before it is processed.
//
//database: The entire merged DAML database.
//
//Remarks:
// A configuration may find it necessary to edit the raw database to achieve a desired
// look. For example, a configuration may want to delete all the tabs in the system
// except for its own. This is the raw DAML database in XML form, edit with extreme caution.
protected internal virtual void OnUpdateDatabase(XDocument database);
//License validation
//
//Remarks:
// Gives the configuration the chance to perform its own license checking. Returning
// false signals a licensing problem has occurred. The application will shut down.
protected internal virtual bool OnValidateLicense();
}
æ§æ管çã³ãŒã«ããã¯ã¯ãArcGIS Pro ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ã«é¢é£ãããåæååãåæåäžãæºåå®äºã® 3 ã€ã®ã«ããŽãªã«åé¡ãããŸããåæååã®ç¶æ ã§ã¯ãPro API ã¢ãžã¥ãŒã«ã¯ããŒãããããUI ããããŸãããåæåäžã§ã¯ãPro WPF ã¢ããªã±ãŒã·ã§ã³ãäœæãããããŒã¿ã«ããªã³ã©ã€ã³æ¥ç¶ãåæåãããŸããæåŸã«æºåå®äºã®ç¶æ ã§ãã¢ããªã±ãŒã·ã§ã³ãå®å šã«ããŒããããŸããã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ã¯å ã«é²ãã®ã¿ã§ããã¢ããªã±ãŒã·ã§ã³ãæºåå®äºç¶æ ã«ç§»è¡ãããšãã»ãã·ã§ã³ã®éãæºåå®äºç¶æ ãç¶æãããŸãã
æ§æ管çã®ã³ãŒã«ããã¯ã¯ã以äžã®ããã«åŒã³åºãããæ£ç¢ºãªé ã«èšèŒãããŠããŸããOnShowAboutPage
ãOnCanExecuteCommand
ãOnExecuteCommand
ãé€ããŠãã³ãŒã«ããã¯ã¯ 1 ã€ã®ã»ãã·ã§ã³ã«ã€ã 1 åããåŒã³åºãããŸãã (äŸå€ããããŸã - ãªãã·ã§ã³ã®ãªã»ãããåç
§ããŠãã ãã)ã
- ã³ãŒã«ããã¯ã®äºååæå
- OnShowSplashScreen
- RuntimeDamlFile
- ã³ãŒã«ããã¯ã®åæå
- OnApplicationInitializing
- OnCreateDaml
- ApplicationName*
- OnUpdateDatabase
- Icon
- OnValidateLicense
- TitleBarText*
- OnShowStartPage
--- ã¢ããªã±ãŒã·ã§ã³ãŠã£ã³ããŠãããã«è¡šç€ºãããŸã ---
- ã³ãŒã«ããã¯ã®æºå
- OnApplicationReady
--- ã¹ã¿ãŒãããŒãžã衚瀺ãããŸã ---
* OnCreateQuickAccessToolbar()
* OnShowAboutPage (not ordered*)
* OnCanExecuteCommand (not ordered*)
* OnExecuteCommand (not ordered*)
*UIã€ãã³ãã«å¿çããŠçºçããŸããç¹ã« TitleBarText
ã¯1åã®ã»ãã·ã§ã³ã§è€æ°åèµ·åããããšãã§ããŸãã
3 ã€ã®ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ã®é·ç§»ã¯ãOnApplicationInitializing
ãš OnApplicationReady
ã® 2 ã€ã®ã³ãŒã«ããã¯ã«ãã£ãŠåºå¥ãããŸããOnApplicationInitializing
ã¯åæååããåæåãžã®ç§»è¡ã瀺ããŸããOnApplicationReady
ã¯åæåããæºåå®äºãžã®ç§»è¡ã瀺ããŸãã
åæåã§å®éã«è¡ãã¹ãããšã¯ãã¹ãã©ãã·ã¥ ã¹ã¯ãªãŒã³ãæäŸããããšã ãã§ã (ããã©ã«ãããªãŒããŒã©ã€ãããå Žå)ããã®æ®µéã§ã¯ãPro ã®ã©ã€ããµã€ã¯ã«ã®éåžžã«æ©ã段éã«ãããŸããPro WPF ã¢ããªã±ãŒã·ã§ã³ã¯ãŸã èµ·åããŠããªããããæ©èœããŠãã UI ã¹ã¬ãããããããšãåæãšããåŒã³åºã (ã¡ãã»ãŒãžããã¯ã¹ã®è¡šç€ºãªã©) ãè¡ããšãã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããŸããPro æ¡åŒµã¢ã»ã³ããªããŸã 1 ã€ãããŒããããŠããªããããåæååã®æ®µé㧠Pro API ãåŒã³åºããšã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããŸãã
åæååã¯ä»¥äžãè¡ããŸãã
- ã«ã¹ã¿ã ã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã®è¡šç€º
åæååã¯ä»¥äžãè¡ããªãã§ãã ããã
-
QueuedTask.Run
ãå«ãä»»æã® Pro API ã¡ãœããã®åŒã³åºã
- ä»»æã® Pro WPF ãªãœãŒã¹ (ã¹ã¿ã€ã«ããã©ã·ãã«ã©ãŒãã¢ã€ã³ã³ãã€ã¡ãŒãž) ãžã®ã¢ã¯ã»ã¹
- Proã®ã€ãã³ããç»é²ãã (ConfigurationManager ã®ã³ã³ã¹ãã©ã¯ã¿ãå«ã)
- UI ã¹ã¬ããã«äŸåãã WPF ã®åŒã³åºããè¡ã (
Dispatcher.Invoke
ãªã©)
- ä»»æã®ã«ã¹ã¿ã UI (ã¡ãã»ãŒãžããã¯ã¹ãªã©) ã®è¡šç€º
ãã®é¢æ°ããªãŒããŒã©ã€ãããŠãèµ·åæã«ã«ã¹ã¿ã ã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã衚瀺ããŸããã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã¯ãããŒããŒã¬ã¹ã® WPF ãŠã£ã³ããŠã§ãªããã°ãªããŸãããArcGIS Pro SDK æ§æ管çãã³ãã¬ãŒãã¯ãã«ã¹ã¿ãã€ãºå¯èœãªã¹ãã©ãã·ã¥ ã¹ã¯ãªãŒã³ ãŠã£ã³ããŠãæ§æ管çã«è¿œå ããŸããnull ã®ãŠã£ã³ããŠãè¿ãããå Žåã¯ãPro ã®ããã©ã«ãã®ã¹ãã©ãã·ã¥ã¹ã¯ãªãŒã³ã衚瀺ãããŸãã
æ§æ管çã® DAML ã (ããã©ã«ãã® Config.daml ãšã¯ïŒç°ãªãXML ãã¡ã€ã«ããçæãããå Žåã¯ããã®é¢æ°ããªãŒããŒã©ã€ãããŸããRunTimeDamlFile
ããè¿ããã DAML ã¯ãããã©ã«ãã® Config.daml ããèªã¿èŸŒãŸãã DAML ãäžæžãããŸã (ããã¯ãçµåãã§ã¯ãªãã眮æãã§ã)ãPro API ãå¿
èŠãšããããžãã¯ã«åºã¥ã㊠DAML ã³ã³ãã³ããæäŸãããå Žåã¯ã代ããã« OnCreateDAML
ã䜿çšããå¿
èŠããããŸãã
åæåäžã§ã¯ãæ§æ管çã«ã¯éåžž 2 ã€ã®ã¿ã¹ã¯ããããŸãã
- æ§æ管çã¯ãŒã¯ãããŒãæš©éãããŒã«ãªã©ã«åºã¥ã㊠Pro UI ã«å€æŽãå ããŸãã
- Pro ã®ã»ãã·ã§ã³ãéå§ããããã®ã¹ã¿ãŒãããŒãžãçšæããŸããã¹ã¿ãŒãããŒãžã¯äžåºŠã ã衚瀺ãããŸãã
åæå㯠OnApplicationInitializing
ã³ãŒã«ããã¯ã§å§ãŸããŸããåæåããããšã§ãåã㊠Pro API ã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããããŸã å¶éããããŸããAPI ã§ã¯ãEsriHttpClient
ãArcGISPortalManager
ãArcGISPortal
ãå®å
šã«åŒã³åºãããšãã§ããŸãããããã ãã®ããšã§ããããŒã¿ã«ããªã³ã©ã€ã³ã«ã¢ã¯ã»ã¹ããããã®ã³ãŒããéçŽãã䟿å©ãªå ŽæãšããŠãOnApplicationInitializing
ã³ãŒã«ããã¯ã䜿ãããšãã§ããŸããäŸãã°ãæ§æ管çãããŒã¿ã«ã®ã³ã³ãã³ããããŒã¿ã«ã®èšå®ãããŒã«ãªã©ã«ã¢ã¯ã»ã¹ããŠãä»åŸã® Pro ã»ãã·ã§ã³ã®æ§æ管çã«åœ±é¿ãäžããå¿
èŠãããå Žåã§ãã
Pro ã®ä»ã®æ©èœã¯åæåäžã«ã¯ã€ã³ã¹ã¿ã³ã¹åããã (ãã®æç¹ã§ã¯ããããã¬ã€ã€ãŒããããžã§ã¯ããªã©ã¯ååšããŸãã)ã芪ã®WPF ã¢ããªã±ãŒã·ã§ã³ããŸã ãããŸããããåæåäžã«äœæãããOnShowStartPage
ã³ãŒã«ããã¯ã®çŽåŸã«è¡šç€ºãããŸããPro ã®ã¡ã€ã³ããã¯ã°ã©ãŠã³ãã¹ã¬ãã"MCT" ãŸã㯠QueuedTask
ã¯ããµã€ã³ã€ã³/ãµã€ã³ã¢ãŠãã«é¢é£ããããŒã¿ã«åŒã³åºããã©ããããããã«äœ¿çšããªãã§ãã ããããã®ããšã¯é¢é£ããã¡ãœããã®æŠèŠã³ã¡ã³ãã«èšèŒãããŠããŸããäŸãã°ãportal.SignIn()
ã®ã³ã¡ã³ãã«æ³šç®ããŠãã ããã
æ§æ管çã® OnApplicationInitializing ã³ãŒã«ããã¯å ã§ãSignIn ã QueuedTask ã§ã¯ãªãMain Thread ã§åŒã³åºãããã«æ瀺ããŠããããšã«æ³šç®ããŠãã ãããããã¯ã¹ã¯ãªãŒã³ã·ã§ããã«ç€ºããã®ãšåãã³ãŒãã¹ããããã§ãããã®ã³ãŒãã§ã¯ãçŸåšã®ãŠãŒã¶ãŒããµã€ã³ã€ã³ããŠããããè³æ Œæ å ±ããã£ãã·ã¥ãããŠããªãå ŽåãOAuth ãã€ã¢ãã°ã "pop" ãããŸãã
protected override void OnApplicationInitializing(CancelEventArgs cancelEventArgs) {
var portal = ArcGISPortalManager.Current.GetActivePortal();
if (portal != null)
{
if (!portal.IsSignedOn())
portal.SignIn();
}
}
äžè¬çã«ãã¢ããªãåæ¢ããå¯èœæ§ããããããPro ã®åæåäžã«ã«ã¹ã¿ã UI ã衚瀺ããªãã§ãã ãããäŸãã°ããªãœãŒã¹ (ããŒã¿ããŒã¹ããŠã§ããµã€ããªã©) ãžã®ãã°ã€ã³ãå¿ èŠã§ããã°ã€ã³ã«å€±æãããšã¢ããªãçµäºããããããªèšå®ãå¿ èŠãªå Žåã§ã (åæ§ã«ãåºç€ãšãªã Pro ã©ã€ã»ã³ã¹ãããŒã¿ã«ã¯ã©ã¹ã¯ãèªèšŒãå¿ èŠãªå Žåã¯ãã€ã§ãèµ·åæã« OAuth ãããã¢ãããããªã¬ãŒããããšãã§ããŸã)ãxaml ã® Pro WPF ãªãœãŒã¹ã䜿çšããŠããªãéããåæåäžã«UIã衚瀺ããããšãã§ããŸããxaml 㧠Pro WPF ãªãœãŒã¹ã䜿çšããŠããªãéããåæåäžã« UI ã衚瀺ããããšãã§ããŸãã
OnShowStartPage
ã¯ãåæåäžã®æåŸã®ã³ãŒã«ããã¯ã§ããã¹ã¿ãŒãããŒãžã³ãŒã«ããã¯ãè¿ãããåŸãã¢ããªã±ãŒã·ã§ã³ã¯åŒãç¶ãèªã¿èŸŒã¿ãè¡ããWPF ã®ã¡ã€ã³ãŠã£ã³ããŠã衚瀺ããAPI æ¡åŒµæ©èœã®èªã¿èŸŒã¿ãå®äºããMCT ãèµ·åããã¹ã¿ãŒãããŒãžãæäŸããŠããã°ããã衚瀺ããŠçµäºããŸããã¹ã¿ãŒãããŒãžã¯åæåäžã«èŠæ±ãããå Žåã§ããå®éã«ã¯æºåå®äºã®ç¶æ
ã§è¡šç€ºãããŠããŸããã¹ã¿ãŒãããŒãžã¯æºåå®äºæã«è¡šç€ºããããããPro WPF ã®ã¹ã¿ã€ã«ããã©ã·ãã«ã©ãŒã䜿çšããŠãåé¡ãªããã¹ã¿ãŒãããŒãžã®ããžãã¯ã§ä»»æã® Pro API ã®ã¡ãœããã«å®å
šã«ã¢ã¯ã»ã¹ããããšãã§ããŸããããããUI ã¹ã¬ãããéå§ãããå ŽåãQueuedTask ã®éåžžã®äœ¿çšã«ãŒã«ãé©çšãããŸããã¹ã¿ãŒãããŒãžãã Pro API ã«ã¢ã¯ã»ã¹ããå Žåãéåžžã®ã¢ãã€ã³ããžãã¯ãã³ãŒãã£ã³ã°ããéã«ã€ã³ã¹ã¿ã³ã¹åãããããšãæåŸ
ãããå€ãã®ã¯ã©ã¹ãããããã£ã¯ NULL ã®ãŸãŸã§ããããšã«æ³šæããŠãã ããã
ã¹ã¿ãŒãããŒãžãæäŸããå Žåãã¹ã¿ãŒãããŒãžã Pro ã»ãã·ã§ã³ãéå§ãã圹å²ãæ ããŸããã»ãã·ã§ã³ãéå§ããã«ã¯ãæ°ãããããžã§ã¯ããäœæããããæ¢åã®ãããžã§ã¯ããéããŸããã¹ã¿ãŒã ããŒãžãéããå¿ èŠã¯ãããŸãããããã¯ãã»ãã·ã§ã³ãéå§ããããšãã«èªåçã«è¡ãããŸããã¹ã¿ãŒã ããŒãžã¯ãPro ã»ãã·ã§ã³ã®éå§æã«äžåºŠã ã衚瀺ãããŸãã
åæåæã¯ä»¥äžãè¡ããŸãã
- Pro API ã䜿çšã㊠(QueuedTask ã䜿çšããã«) ããŒã¿ã«ãŸãã¯ãªã³ã©ã€ã³ãåŒã³åºã
- ã«ã¹ã¿ã DAML ã®æäŸ (å¿ èŠã«å¿ããŠ)
- DAML ããŒã¿ããŒã¹ã®å€æŽ (å¿ èŠã«å¿ããŠ)
- Pro ã»ãã·ã§ã³ãéå§ããããã®ããžãã¯ã UI ãã«ã¹ã¿ãã€ãºãããå Žåã¯ãã«ã¹ã¿ã ã¹ã¿ãŒã ããŒãžãæäŸããŸãã
- ã¹ã¿ãŒã ããŒãžã§ Pro WPF ã®ã¹ã¿ã€ã«ãªã©ã䜿çšãã
- ã¹ã¿ãŒã ããŒãžã®ããžãã¯ã§ä»»æã® Pro API ã¢ã¹ãã¯ããåŒã³åºã (å¿ èŠã«å¿ã㊠QueuedTask ã䜿çš)ã
åæåæã¯ä»¥äžãè¡ããªãã§ãã ããã
-
ArcGIS.Desktop.Core
以å€ã® Pro API ã¡ãœãã (QueuedTask.Run
ãå«ã) ã®åŒã³åºã
- ãã©ã°ã€ã³ããã€ã³ããããã³ã°ãã€ã³ããŸã㯠UI èŠçŽ ããã®ä»ã®ã¢ãžã¥ãŒã«ãžã®ã¢ã¯ã»ã¹
- ãã¹ãŠã® Pro ã€ãã³ãã«ç»é²
- ã¹ã¿ãŒã ããŒãžä»¥å€ã® Pro WPF ãªãœãŒã¹ (ã¹ã¿ã€ã«ããã©ã·ãã«ã©ãŒãã¢ã€ã³ã³ãã€ã¡ãŒãž) ãžã®ã¢ã¯ã»ã¹
- UI ã¹ã¬ããã«äŸåãã WPF ã®åŒã³åºã (äŸïŒ
Dispatcher.Invoke
)ã
- ä»»æã®ã«ã¹ã¿ã UI ã衚瀺
ãããã®å¶çŽã«åŸããªããšãã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããŸãã
*ã¢ããªã±ãŒã·ã§ã³ã®æºåãæŽãåã«æ§æ管çå
ã® Pro ã€ãã³ããç»é²ããæ¹æ³ã«ã€ããŠã¯ãã¢ããªã±ãŒã·ã§ã³ ã€ãã³ãã®ç»é² ãåç
§ããŠãã ããã
*ã¹ã¿ãŒã ããŒãžã¯è¡šç€ºããŠãåé¡ãããŸããã
*å¿ èŠã«å¿ããŠãã«ã¹ã¿ã ãã°ã€ã³ UI ãªã©ãé©åã§ãã Pro WPF ãªãœãŒã¹ã䜿çšããªãã§ãã ããã
ãã®é¢æ°ã¯ãConfigurationManager ãã¢ããªã±ãŒã·ã§ã³ã®ããã€ãã®éšåãåŒã³åºãæåã®æ©äŒã§ããããã®äžã§æãéèŠãªã®ã¯ããªã³ã©ã€ã³ããã³ããŒã¿ã«éä¿¡çšã® API ã§ãããã®ã³ãŒã«ããã¯ã«ããCancelEventArgs
ãæž¡ããããã® Cancel ããããã£ã true ã«èšå®ãããå Žåãã¢ããªã±ãŒã·ã§ã³ã¯çŽã¡ã«ã·ã£ããããŠã³ããŸãã
å®è¡æã« DAML ã XML æååã®åœ¢ã§æäŸããã«ã¯ããã®é¢æ°ããªãŒããŒã©ã€ãããŸããããšãã°ãOnApplicationInitializing
ã§çŸåšã®ãŠãŒã¶ãŒãç·šéè
ãšç®¡çè
ã®åœ¹å²ãæã£ãŠãããšå€æããå Žå (ããŒã¿ã«ãŸãã¯ãªã³ã©ã€ã³ãžã®ã¯ãšãªãªã©)ããã®åœ¹å²ã«ã¯ç°ãªã DAMLããæäŸããå¿
èŠããããŸããOnCreateDaml ãä»ããŠæäŸããã DAML ã¯ã以åã«æ§æ管çããèªã¿èŸŒãŸãã DAML ãããåªå
ãããŸã (æ§æ管çã® DAML èŠçŽ èªäœã¯äŸå€ã§ãããããã¯åŸããå€æŽããããšã¯ã§ããŸãã)ã
ãã®ããããã£ããªãŒããŒã©ã€ãããŠãã¢ããªã±ãŒã·ã§ã³ã®ã¿ã€ãã«ããŒã®ååãæå®ããŸããApplicationName ã¯è€æ°ååŒã³åºããŸãã NoteïŒ3.0 ã§ã¯ãã¿ã€ãã«æååãååšããå Žåãã¢ããªã±ãŒã·ã§ã³ã®ããã©ã«ãã¯ã¿ã€ãã«ã®ã¿è¡šç€ºãããŸããã¢ããªã±ãŒã·ã§ã³åã¯è¡šç€ºãããŸããã
ããã©ã«ãã§ã¯ãçŸåšéããŠãããããžã§ã¯ãåãã¿ã€ãã«ãšããŠè¡šç€ºãããŸãã3.0 ã§ã®ã¿ã€ãã«ããŒã«ApplicationName ã衚瀺ããæ¹æ³ã¯ãTitleBarTextãåç §ããŠãã ããã
èµ·åæã«ãPro (bin\Extensions) ããã® DAML ãã¡ã€ã«ãæ€åºãããã¢ãã€ã³ãããã³èšå®ã®ãã¹ãŠã 1 ã€ã® DAML ããŒã¿ããŒã¹ (XML) ã«ããŒãžãããŸãããã® XML ããŒã¿ããŒã¹ã¯ããã®é¢æ°ã®ãã©ã¡ãŒã¿ãšããŠæž¡ãããŸããPro ã® UI ãå®çŸ©ããããã«åŠçãããåã«ãOnUpdateDatabase
ã§æçµçã«ããŒãžãããããŒã¿ããŒã¹ãä¿®æ£ããããšãã§ããŸããäŸãšããŠã以äžã® OnUpdateDatabase
ã®å®è£
ã§ã¯ãPro ã®ãªãã³ããèšå®ä»¥å€ã®ãã¹ãŠã®ã¿ããåé€ãããŸãã
protected override void OnUpdateDatabase(XDocument database) {
var nsp = database.Root.Name.Namespace;
// select all elements that are tabs
var tabElements = from seg in database.Root.Descendants(nsp + "tab") select seg;
// collect all elements that need to be removed
var elements = new HashSet<XElement>();
foreach (var tabElement in tabElements)
{
// skip root and backstage elements
if (tabElement.Parent == null
|| tabElement.Parent.Name.LocalName.StartsWith("backstage"))
continue;
var id = tabElement.Attribute("id");
if (id == null || id.Value.StartsWith("MyConfiguration")) continue;//Skip our tabs - "MyConfiguration"
elements.Add(tabElement);
}
// remove the elements
foreach (var element in elements)
{
element.Remove();
}
}
ãã詳现ãªäŸã«ã€ããŠã¯ãProGuide Configurations ãåç §ããŠãã ããã
ãã®ããããã£ããªãŒããŒã©ã€ããããšãã¢ããªã±ãŒã·ã§ã³ã®ã¿ã€ãã«ããŒã«è¡šç€ºãããã¢ããªã±ãŒã·ã§ã³ã®ã¢ã€ã³ã³ãã«ã¹ã¿ãã€ãºããããšãã§ããŸããã¢ã€ã³ã³ã¯è€æ°ååŒã³åºãããšãã§ããŸãã
ãã®ã³ãŒã«ããã¯ã¯ãæ§æ管çãèµ·åæã«ç¬èªã®ã©ã€ã»ã³ã¹ãã§ãã¯ãè¡ãæ©äŒãäžããŸããã©ã€ã»ã³ã¹ã®åé¡ãçºçããå Žåã¯ãfalse ãè¿ããŸããfalse ãè¿ããšãã¢ããªã±ãŒã·ã§ã³ã®èµ·åãçµäºããã¢ããªã±ãŒã·ã§ã³ãã·ã£ããããŠã³ããŸãã
ãã®ããããã£ããªãŒããŒã©ã€ãããŠãã¢ããªã±ãŒã·ã§ã³ã®ã¿ã€ãã«ããŒããã¹ããæå®ããŸããTitleBarTextã¯ãã¢ããªã±ãŒã·ã§ã³ ã¿ã€ãã«ããŒã®ããã¹ããæŽæ°ããå¿ èŠããããã³ã«åŒã³åºãããŸããTitleBarText ã¯ãã¹ã¿ãŒãããŒãžã衚瀺ãããåã« (åããŠ) åŒã³åºãããŸããããããžã§ã¯ããéããããŸã§ãã¢ããªã±ãŒã·ã§ã³ã®ã¿ã€ãã«ããŒã«ã¯å®éã«ã¿ã€ãã«ã¯è¡šç€ºãããŸããã
2.x ã§ã¯ãName - Title - Subtitle ãšãã£ãã¿ã€ãã«ã® 3 ã€ã®æ§æèŠçŽ ããã¹ãŠè¡šç€ºãããŠããŸããããããã3.0 ã§ã¯ãããã©ã«ãã§ã¿ã€ãã«ã ãã衚瀺ãããŸããã¢ããªã±ãŒã·ã§ã³ã®ã¿ã€ãã«æååããªãå ŽåããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®ã¿ã€ãã«æååã NULLã®å Žåãã¢ããªã±ãŒã·ã§ã³ã®ããã©ã«ãã®åäœã¯ Name(èšå®ã®å ŽåãApplicationName
ãšãªããŸã) ã®ã¿ãšãªããŸãã
3.0 ã§ç€ºãããã®ãšåãããã«ãName - Title - Subtitle ã® 3 ã€ã®ã¿ã€ãã«ã®èŠçŽ ããŸãšããŠè¡šç€ºããã«ã¯ã以äžã® TitleBarText ã®å®è£ ã䜿çšããŸãã
protected override string ApplicationName
{
get { return "MyConfiguration"; }
}
protected override string TitleBarText
{
get
{
string title = ApplicationName;
if (!string.IsNullOrEmpty(FrameworkApplication.Title))
title += " - " + FrameworkApplication.Title;
if (!string.IsNullOrEmpty(FrameworkApplication.SubTitle))
title += " - " + FrameworkApplication.SubTitle;
return title;
}
}
2.x style title:
ã¢ããªã±ãŒã·ã§ã³ã®æºåãã§ãããšãã«è¡šç€ºããã«ã¹ã¿ã ã¹ã¿ãŒãã¢ããããŒãž (ã©ã³ãã£ã³ã°ããŒãž) ã§ããnull ã® FrameworkElement ãè¿ãããå Žåã¯ãPro ã®ããã©ã«ãã®ã¹ã¿ãŒãã¢ããããŒãžã衚瀺ãããŸããã¹ã¿ãŒãã¢ãã ããŒãžã¯ããã® xaml 㧠ArcGIS Pro ãªãœãŒã¹ãå®å šã«åç §ã§ããŸãã
äŸã«ã€ããŠã¯ãProGuide Configurations ãåç §ããŠãã ããã
泚ïŒåæåäžã«ã¹ã¿ãŒãããŒãžãèŠæ±ãããReady ã«è¡šç€ºãããŸãã
ãŠãŒã¶ãŒã¯ãPro Backstage ããã¢ã¯ã»ã¹ã§ãã(ãããžã§ã¯ãã®) ãªãã·ã§ã³ ãããã㣠ããŒãžã䜿ã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®å€èŠ³ãã«ã¹ã¿ãã€ãºããããšãã§ããŸã (ãªãã³ãã«ã¹ã¿ãã€ãºããªãããã«ããã«ã¯ã<Configuration blockCustomizeDialog="false" ...>
ã䜿çšããŸã)ããŠãŒã¶ãŒããªãã³ãã¯ã€ãã¯ã¢ã¯ã»ã¹ããŒã«ã㌠(QAT) ãå€æŽãããã以åã«è¡ã£ããªãã³ã QAT ã®ã«ã¹ã¿ãã€ãºããªã»ããããããããš(ã»ãã·ã§ã³äžã«ãªãã·ã§ã³ãã€ã¢ãã°ã§)ãã¢ããªã±ãŒã·ã§ã³ã¯ãªãã³ã QAT ãååæåããOnApplicationInitializing
ãOnCreateDaml
ãOnUpdateDatabase
ã®ã³ãŒã«ããã¯ãåŒã³åºãããã¢ããªã±ãŒã·ã§ã³åãšã¢ã€ã³ã³ã衚瀺ãããŸããããã«ããããã§ã«çšŒåããŠããã¢ããªã±ãŒã·ã§ã³ã® UI ãä»ããŠè¡ãããã«ã¹ã¿ãã€ãºã®å€æŽã«å¯Ÿå¿ããä¿®æ£ãåé©çšãããªã©ã®æ§æãå¯èœã«ãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ã¢ããªã±ãŒã·ã§ã³ãå®å
šã«åæåãããã¹ã¿ãŒãã¢ããããŒãž (ã«ã¹ã¿ã ã§ãããã©ã«ãã§ã) ã衚瀺ããããšãã¢ããªã±ãŒã·ã§ã³ã®æºåãæŽã£ããšèšããŸããæºåãæŽã£ãç¶æ
ã¯ãOnApplicationReady
ã³ãŒã«ããã¯ããå§ãŸããŸããããã§ã·ã¹ãã å
šäœã«å®å
šã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã
Ready ç¶æ ã®éã¯ãå¶éã¯ãããŸããã
泚ïŒPro API ã®ã¢ã¹ãã¯ããåŒã³åºããŠãå®å
šã ãããšãã£ãŠãå¿
ãããå€ãã®ããããã£ãã¯ã©ã¹ã NULL ã«ãªããªããšã¯éããŸãããäŸãã°ããããžã§ã¯ãããŸã éãããŠããªãå ŽåãProject.Current
ãš MapView.Active
ã®ããããã£ã¯ãå®å
šã«ã¢ã¯ã»ã¹ã§ããããã«ãªã£ããšããŠããNULL ãšãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ãå®å
šã«åæåãããåŸã«åŒã³åºãããŸããããã¯ãArcGIS.Desktop.Framework.Events.ApplicationReadyEvent
ãçºè¡ãããçŽåŸãšãArcGIS.Desktop.Framework.Events.ApplicationStartupEvent
ãçºè¡ãããçŽåã«åŒã³åºãããŸãããããã®ã€ãã³ãã¯ãã©ãããèŠãŠã OnApplicationReady
ãšåãããšãè¡šããŠããŸãã
ã¢ããªã±ãŒã·ã§ã³ãã¹ã¿ãŒãããŒãžãéããŠãã»ãã·ã§ã³ã®æåã®ãããžã§ã¯ããéããŠãããšãã«åŒã³åºãããŸããOnCreateQuickAccessToolbar ã䜿ã£ãŠãã¢ããªã±ãŒã·ã§ã³ ã¯ã€ãã¯ã¢ã¯ã»ã¹ããŒã«ã㌠ã®ããã©ã«ãã®èšå®ãäžæžãããŸããOnCreateQuickAccessToolbar ã®ç®çã¯ãQAT ã®åæèšå®ãè¡ãããšã§ããConfiguration Manager ãã³ãŒã«ããã¯ãä»ããŠæäŸãã QAT ã®æ§æ管çã¯ãååã®æ§æ管çå®è¡åŸã«ãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠ C:Users\\AppDataLocalESRI#{ApplicationName}Settings.xml
ãã¡ã€ã«ã«æ°žç¶åãããŸãã
æ§æ管çãæåã«å®è¡ãããåŸãPro ã¢ããªã±ãŒã·ã§ã³ã¯ãæ§æ管çãããŒãžã£ãŒã®äžã§å®è¡ããã以éã®ã»ãã·ã§ã³ã® QAT æ§æ管çã«å¯ŸããŠãæ°žç¶åããã {ApplicationName}Settings.xml
ãã¡ã€ã«ã䜿çšããŸã(OnCreateQuickAccessToolbar ã³ãŒã«ããã¯ã¯åŒã³åºãããŸããã䜿çšãããŸãã)ãPro ã®ããã¯ã¹ããŒãžã«ãããªãã·ã§ã³ãã€ã¢ãã° (ãŠãŒã¶ãŒã«ãã) 㧠QAT ã«å ããããå€æŽã¯ããã®æ§æ管çãã¡ã€ã«ã«ä¿åãããŸã (ãã®ããããConfiguration Managerãã§ãProãã¢ããªã±ãŒã·ã§ã³ã次åèµ·åãããšãã«ãå床é©çšããããšãã§ããŸã)ã
äŸãã°ã次ã®ãããªOnCreateQuickAccessToolbar ã®å®è£ ããããšããŸãã
protected override List<Tuple<string, bool>> OnCreateQuickAccessToolbar()
{
List<Tuple<string, bool>> cmds = new List<Tuple<string, bool>>();
//set the second argument "true" ("ischecked") to add to the QAT toolbar otherwise the
//command will only show on the QAT pulldown menu.
Tuple<string, bool> item1 = new Tuple<string, bool>("esri_mapping_clearSelectionButton", true);
Tuple<string, bool> item2 = new Tuple<string, bool>("esri_core_newProjectButton", true);
Tuple<string, bool> item3 = new Tuple<string, bool>("esri_core_saveProjectButton", true);
Tuple<string, bool> item4 = new Tuple<string, bool>("esri_core_undoSplitButton", true);
cmds.Add(item1);
cmds.Add(item2);
cmds.Add(item3);
cmds.Add(item4);
return cmds;
}
QAT ã¯å³ã®ããã«ãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯æ¬¡ã® {ApplicationName}Settings.xml
ãã¡ã€ã«ãæ°žç¶åãã(äžãããã æ§æ管çãããŒãžã£ãŒã䜿çšããŠ) åŸç¶ã®ã»ãã·ã§ã³ã§äœ¿çšãããŸãã
<?xml version="1.0" encoding="utf-8"?>
<ArcGIS>
<QAT>
<Commands>esri_mapping_clearSelectionButton;esri_core_newProjectButton;esri_core_saveProjectButton;esri_core_undoSplitButton;</Commands>
<Position>1</Position>
<IsRibbonCollapsed>False</IsRibbonCollapsed>
</QAT>
</ArcGIS>
(ãããžã§ã¯ã) ãªãã·ã§ã³ã§ QAT æ§æ管çããªã»ãããããšãQAT ã¯æå®ãããæ§æ管çãããŒãžã£ãŒã® {ApplicationName}Settings.xml
ãã¡ã€ã«ã«ä¿åãããŠãã QAT æ§æ管çã«ãªã»ãããããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³æ å ±ããŒãžã«"about" æ å ±ãè¿œå ãããŠãŒã¶ãŒã³ã³ãããŒã«ãè¿ããŸãããã®ã³ãŒã«ããã¯ã¯ãPro ããŒãžã§ã³æ å ±ã¿ããã¢ã¯ã»ã¹ããããã³ã«åŒã³åºãããŸããArcGIS Pro SDK æ§æ管çãã³ãã¬ãŒãã¯ãæ§æ管çã«ãŠãŒã¶ãŒ ã³ã³ãããŒã«ãè¿œå ããã«ã¹ã¿ãã€ãºããŠããŒãžã§ã³æ å ±ããŒãžãæäŸããããšãã§ããŸãã
äŸã«ã€ããŠã¯ ProGuide Configurations ãåç §ããŠãã ããã
OnCanExecuteCommand
ãš OnExecuteCommand
ã³ãŒã«ããã¯ã¯ãã³ãã³ã ãã£ã«ã¿ãŒãšããŠåäœããŸããã³ãã³ã ãã£ã«ã¿ãŒãå®è£
ããããšã§ãé¢é£ããã³ãã³ãã®å®è¡ãé²ãããšãã§ããŸããOnCanExecuteCommand
ã³ãŒã«ããã¯ã¯ããŠãŒã¶ãŒããªãã³äžã®åºç€ãšãªãã³ãã³ããã¿ã³ã "ããŠã¹ãªãŒããŒ" ãããã³ã«ãã³ãã³ãã® DAML ID ãšãã®èŠªã¢ãžã¥ãŒã«ãæž¡ãããŸããOnCanExecuteCommand ã¯ãæå®ãããã³ãã³ããç¡å¹ã«ããããã« false ãè¿ãããšãã§ããŸããfalse ãèšå®ãããšãã³ãã³ãã®åºæ¬çãªæå¹ç¶æ
ãäžæžããããŸããfalse ãèšå®ãããšãã³ãã³ãã®åºæ¬çãªæå¹ç¶æ
ãäžæžããããŸããtrue ãè¿ãããšã¯ãã³ãã³ãã®åºæ¬çãªæå¹/ç¡å¹ã®ç¶æ
ãå€æŽããªãããã©ã«ãã®æ»ãå€ã§ãããããã£ãŠãã³ãã³ããæå¹ã§ããå Žåã¯ãæå¹ãªãŸãŸã§ããã³ãã³ããç¡å¹ã®å Žåã¯ãç¡å¹ã®ãŸãŸã§ãã
ãã®ã³ãŒã«ããã¯ã«ã¯ãå OnClick ã€ãã³ãã®åã«ãã³ãã³ããšãã®èŠªã¢ãžã¥ãŒã«ã® DAML ID ãæž¡ãããŸããfalse ãè¿ããšãã³ãã³ãã®å®è¡ãé»æ¢ãããŸã (OnClick ã¯å®è¡ãããŸãã)ã
泚ïŒã¢ãã€ã³ã¯ãã³ãã³ããã£ã«ã¿ãŒãã¿ãŒã³ã®éå®çãªåœ¢åŒãå®è£ ããããšãã§ããŸããCommand Filter ã®ã³ãã¥ããã£ãµã³ãã«ãåç §ããŠãã ããã
ã¢ããªã±ãŒã·ã§ã³ã®æºåãå®äºããåã«ãConfigurationManager ã®ã³ãŒã«ããã¯ãã³ã³ã¹ãã©ã¯ã¿ã§ ArcGIS Pro ã®ã€ãã³ããç»é²ããããšããªãã§ãã ãããArcGIS.Desktop.Framework.Events.ApplicationReadyEvent
ã ArcGIS.Desktop.Framework.Events.ApplicationStartupEvent
ã®ãããªåæã®ã€ãã³ããç»é²ããå¿
èŠãããå Žåã¯ãæ§æ管çã¢ãžã¥ãŒã« ã¯ã©ã¹ã®ãªãŒããŒã©ã€ããããInitialize
ã¡ãœããã§ç»é²ããDAML ã§autoLoad="true"
ãèšå®ããŸãã
internal class Module1 : Module {
protected override bool Initialize() {
//Immediately preceeds OnApplicationReady callback
ArcGIS.Desktop.Framework.Events.ApplicationReadyEvent.Subscribe((a) => {
Debug.WriteLine("ApplicationReadyEvent");
});
//Immediately follows OnApplicationReady callback
ArcGIS.Desktop.Framework.Events.ApplicationStartupEvent.Subscribe((a) => {
Debug.WriteLine("ApplicationStartupEvent");
});
return true;
}
Config.daml å :
<modules>
<insertModule id="..." className="Module1" autoLoad="true" ...>