nasa-exp-checkins Mailing List for NASA WorldWind (Page 2)
Brought to you by:
baker99-bull,
vigilant
You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(160) |
Jun
(302) |
Jul
(417) |
Aug
(96) |
Sep
(42) |
Oct
(135) |
Nov
(223) |
Dec
(22) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(36) |
Feb
(29) |
Mar
(70) |
Apr
(94) |
May
(96) |
Jun
(57) |
Jul
(97) |
Aug
(178) |
Sep
(235) |
Oct
(225) |
Nov
(47) |
Dec
(57) |
2007 |
Jan
(111) |
Feb
(41) |
Mar
(66) |
Apr
(38) |
May
(51) |
Jun
(7) |
Jul
(49) |
Aug
(6) |
Sep
(33) |
Oct
(17) |
Nov
(10) |
Dec
(15) |
2008 |
Jan
(16) |
Feb
(8) |
Mar
(11) |
Apr
|
May
(1) |
Jun
(10) |
Jul
(17) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
2009 |
Jan
(2) |
Feb
(23) |
Mar
(12) |
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(7) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(3) |
2010 |
Jan
|
Feb
(1) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(6) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <amm...@us...> - 2009-08-23 13:14:35
|
Revision: 4081 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4081&view=rev Author: ammianus Date: 2009-08-23 13:14:26 +0000 (Sun, 23 Aug 2009) Log Message: ----------- 1_4_1 Issue #3 - Fix for download code. 4xx / Client error are cached as failures and WW will not retry to download them during that session (cache is in memory only and cleared when WW is exited). 5xx / Server Error are recorded and a timeout period will begin before requests are allowed to this server again. A message is displayed in the top right of the UI stating the timeout length. If server response contains "retry-after" header, that period is used, otherwise default is 2 minutes. Modified Paths: -------------- trunk/WorldWind/PluginSDK/QuadTileSet.cs trunk/WorldWind/PluginSDK/Renderable/GeoSpatialDownloadRequest.cs trunk/WorldWind/WebDownload/WebDownload.cs Modified: trunk/WorldWind/PluginSDK/QuadTileSet.cs =================================================================== --- trunk/WorldWind/PluginSDK/QuadTileSet.cs 2009-08-03 02:02:31 UTC (rev 4080) +++ trunk/WorldWind/PluginSDK/QuadTileSet.cs 2009-08-23 13:14:26 UTC (rev 4081) @@ -65,6 +65,7 @@ protected GeoSpatialDownloadRequest[] m_activeDownloads = new GeoSpatialDownloadRequest[20]; protected DateTime[] m_downloadStarted = new DateTime[20]; protected TimeSpan m_connectionWaitTime = TimeSpan.FromMinutes(2); + protected TimeSpan m_defaultWaitTime = TimeSpan.FromMinutes(2); protected DateTime m_connectionWaitStart; protected bool m_isConnectionWaiting; protected bool m_enableColorKeying; @@ -75,8 +76,11 @@ protected string m_effectTechnique = null; protected Hashtable m_effectHandles = null; static protected EffectPool m_effectPool = new EffectPool(); + protected Hashtable m_failedDownloads = new Hashtable(); + //this value should be >= 1 + private int MaxRetriesPerTile = 1; + private int MaxFailedTilesForTimeout = 5; - protected TimeSpan m_cacheExpirationTime = TimeSpan.MaxValue; @@ -181,7 +185,7 @@ // Default terrain mapped imagery to terrain mapped priority if (terrainMapped) - RenderPriority = RenderPriority.TerrainMappedImages; + RenderPriority = RenderPriority.TerrainMappedImages; } /// <summary> @@ -921,9 +925,21 @@ { if (IsConnectionWaiting) { - if (DateTime.Now.Subtract(TimeSpan.FromSeconds(15)) < ConnectionWaitStart) + if (DateTime.Now.Subtract(TimeSpan.FromSeconds(20)) < ConnectionWaitStart) { - string s = "Problem connecting to server... Trying again in 2 minutes.\n"; + //the wait time may vary, display the correct wait time in minutes and seconds + int minutesWaiting = m_connectionWaitTime.Minutes; + String timePart; + if (minutesWaiting > 0) + { + timePart = m_connectionWaitTime.Minutes + " minutes "+m_connectionWaitTime.Seconds+" seconds"; + } + else + { + timePart = m_connectionWaitTime.Seconds + " seconds"; + } + //this message is rendered in upper right corner + string s = "Problem connecting to server... Trying again in "+timePart+".\n"; drawArgs.UpperLeftCornerText += s; } } @@ -1086,6 +1102,12 @@ } } + lock (m_failedDownloads.SyncRoot) + { + //clear this hashtable + m_failedDownloads.Clear(); + } + foreach (QuadTile qt in m_topmostTiles.Values) qt.Dispose(); @@ -1124,6 +1146,14 @@ foreach (long deletionKey in deletionList) m_topmostTiles.Remove(deletionKey); } + + //reset the numberRetries and timeout, also reset failedDownloads Hashtable + m_isConnectionWaiting = false; + //m_connectionWaitStart = System.DateTime.MinValue; + m_failedDownloads.Clear(); + m_numberRetries = 0; + Log.Write(Log.Levels.Verbose, "QTS", " ResetCacheForCurrentView: (" + m_isConnectionWaiting + "," + m_connectionWaitStart + "," +m_failedDownloads.Count +"," +m_numberRetries); + } public void ClearDownloadRequests() @@ -1143,37 +1173,52 @@ if (m_downloadRequests.Contains(key)) return; - Log.Write(Log.Levels.Verbose, "QTS", "AddToDownloadQueue: " + newRequest.QuadTile.ToString()); + //go through download requests, remove any requests that have failed before + if (IsTileFailed(newRequest.QuadTile.Level,newRequest.QuadTile.Col,newRequest.QuadTile.Row)) + { + + //increment number of retries overall for this tile (more than 5 failed downloads and anti-hammer goes into effect for wait time) + Log.Write(Log.Levels.Verbose, "QTS", "AddToDownloadQueue: Requested tile will not download again."); + newRequest.QuadTile.WaitingForDownload = false; + + } + - m_downloadRequests.Add(key, newRequest); + if(newRequest.QuadTile.WaitingForDownload == true) + { - if (m_downloadRequests.Count >= m_maxQueueSize) - { - //remove spatially farthest request - GeoSpatialDownloadRequest farthestRequest = null; - Angle curDistance = Angle.Zero; - Angle farthestDistance = Angle.Zero; - foreach (GeoSpatialDownloadRequest curRequest in m_downloadRequests.Values) - { - curDistance = MathEngine.SphericalDistance( - curRequest.QuadTile.CenterLatitude, - curRequest.QuadTile.CenterLongitude, - camera.Latitude, - camera.Longitude); + Log.Write(Log.Levels.Verbose, "QTS", "AddToDownloadQueue: " + newRequest.QuadTile.ToString()); - if (curDistance > farthestDistance) - { - farthestRequest = curRequest; - farthestDistance = curDistance; - } - } + m_downloadRequests.Add(key, newRequest); - farthestRequest.Dispose(); - farthestRequest.QuadTile.DownloadRequests.Remove(farthestRequest); - m_downloadRequests.Remove(farthestRequest.QuadTile); - } - } + if (m_downloadRequests.Count >= m_maxQueueSize) + { + //remove spatially farthest request + GeoSpatialDownloadRequest farthestRequest = null; + Angle curDistance = Angle.Zero; + Angle farthestDistance = Angle.Zero; + foreach (GeoSpatialDownloadRequest curRequest in m_downloadRequests.Values) + { + curDistance = MathEngine.SphericalDistance( + curRequest.QuadTile.CenterLatitude, + curRequest.QuadTile.CenterLongitude, + camera.Latitude, + camera.Longitude); + if (curDistance > farthestDistance) + { + farthestRequest = curRequest; + farthestDistance = curDistance; + } + } + + farthestRequest.Dispose(); + farthestRequest.QuadTile.DownloadRequests.Remove(farthestRequest); + m_downloadRequests.Remove(farthestRequest.QuadTile); + } + } + } + ServiceDownloadQueue(); } @@ -1223,22 +1268,27 @@ m_activeDownloads[i].Dispose(); m_activeDownloads[i] = null; } - - if (NumberRetries >= 5 || m_isConnectionWaiting) + + + //If there have been 'MaxFailedTilesForTimeout' or currently in a Timeout + if (NumberRetries >= MaxFailedTilesForTimeout || m_isConnectionWaiting) { - // Anti hammer in effect + + // Anti hammer in effect if (!m_isConnectionWaiting) { - m_connectionWaitStart = DateTime.Now; - m_isConnectionWaiting = true; + Log.Write(Log.Levels.Debug, "QTS", "ServiceDownloadQueue: Anti-Hammer[" + NumberRetries + "," + m_isConnectionWaiting + "," + m_connectionWaitStart.ToShortTimeString() + "] "); + //use default timeout (2 minutes) + setTimeoutAndWait(m_defaultWaitTime); } - if (DateTime.Now.Subtract(m_connectionWaitTime) > m_connectionWaitStart) + //after waiting for wait time clear the number of retries + if (DateTime.Now.Subtract(m_connectionWaitTime) > m_connectionWaitStart) { NumberRetries = 0; m_isConnectionWaiting = false; } - m_downloadRequests.Clear(); + ClearDownloadRequests(); return; } @@ -1343,5 +1393,67 @@ return texture; } } + + /// <summary> + /// When a DownloadRequest fails when a server returns a 404 error this will record that failure for the QuadTile + /// If the QuadTile fails to be downloaded after 'MaxRetriesPerTile' retries the QuadTileSet will not download it again to prevent + /// hammering the server. + /// </summary> + /// <param name="downloadRequest"></param> + public void RecordFailedRequest(GeoSpatialDownloadRequest downloadRequest) + { + //use the QuadTile's String as a key, assuming this would be unique + String quadTileKey = downloadRequest.QuadTile.ToString(); + QuadTile qt = downloadRequest.QuadTile; + + int numberFailures = 1; + if (m_failedDownloads.ContainsKey(quadTileKey)) + { + //already has failed once, increment the number of failures + numberFailures = (int) m_failedDownloads[quadTileKey]; + numberFailures++; + m_failedDownloads[quadTileKey] = numberFailures; + + }else{ + //first time failed, add to the hashTable + m_failedDownloads.Add(quadTileKey, numberFailures); + } + } + + /// <summary> + /// Allows for setting the Timeout for this QuadTileSet for a specified length of time + /// where downloads will be put on hold. + /// </summary> + /// <param name="waitTime">How long to set wait</param> + public void setTimeoutAndWait(TimeSpan waitTime) + { + m_connectionWaitStart = DateTime.Now; + m_isConnectionWaiting = true; + m_connectionWaitTime = waitTime; + } + + /// <summary> + /// Checks if the requested download has been flagged as a failed download + /// </summary> + /// <param name="level"></param> + /// <param name="x"></param> + /// <param name="y"></param> + /// <returns></returns> + public Boolean IsTileFailed(int level, int x, int y) + { + Boolean isTileFailed = false; + //construct key + String key = String.Format("QuadTile:Set={0} Level={1} X={2} Y={3}", + this.Name, level, x, y); + //TODO calculate tiles below failed tile as well. ie need to look up at lower levels for failures + if(m_failedDownloads.ContainsKey(key)) + { + isTileFailed = true; + } + return isTileFailed; + } + } + + } Modified: trunk/WorldWind/PluginSDK/Renderable/GeoSpatialDownloadRequest.cs =================================================================== --- trunk/WorldWind/PluginSDK/Renderable/GeoSpatialDownloadRequest.cs 2009-08-03 02:02:31 UTC (rev 4080) +++ trunk/WorldWind/PluginSDK/Renderable/GeoSpatialDownloadRequest.cs 2009-08-23 13:14:26 UTC (rev 4081) @@ -75,7 +75,7 @@ { downloadInfo.Verify(); - m_quadTile.QuadTileSet.NumberRetries = 0; + //m_quadTile.QuadTileSet.NumberRetries = 0; // Rename temp file to real name File.Delete(m_localFilePath); @@ -88,13 +88,69 @@ catch(System.Net.WebException caught) { System.Net.HttpWebResponse response = caught.Response as System.Net.HttpWebResponse; - if(response!=null && response.StatusCode==System.Net.HttpStatusCode.NotFound) + /* + * null response + */ + if (response == null) + { + m_quadTile.QuadTileSet.RecordFailedRequest(this); + } + /* 4xx - Client error + * 400 Bad Request + * 401 Unauthorized + * 403 Forbidden + * 404 Not Found + * 206 Partial Content + * 200 OK && Content length == 0 + */ + else if(response.StatusCode==System.Net.HttpStatusCode.NotFound || + response.StatusCode==System.Net.HttpStatusCode.Unauthorized || + response.StatusCode==System.Net.HttpStatusCode.Forbidden || + response.StatusCode==System.Net.HttpStatusCode.BadRequest || + response.StatusCode == System.Net.HttpStatusCode.PartialContent || + (response.StatusCode == System.Net.HttpStatusCode.OK && + response.ContentLength == 0)) { - using(File.Create(m_localFilePath + ".txt")) - {} - return; + m_quadTile.QuadTileSet.RecordFailedRequest(this); + } - m_quadTile.QuadTileSet.NumberRetries++; + /* + * 5xx - Server Error + * 500 Internal Server Error + * 501 Not Implemented + * 502 Bad Gateway + * 503 Service Unavailable + */ + else if (response.StatusCode == System.Net.HttpStatusCode.InternalServerError || + response.StatusCode == System.Net.HttpStatusCode.NotImplemented || + response.StatusCode == System.Net.HttpStatusCode.BadGateway || + response.StatusCode == System.Net.HttpStatusCode.ServiceUnavailable + ) + { + //server problem, directly start timeout for the layer, rather than counter per tile + + + TimeSpan waitTime = TimeSpan.FromSeconds(120); + //if retry-after is specified then wait for that length of time before retrying + String retryAfter = response.GetResponseHeader("Retry-After"); + if (retryAfter != null && !retryAfter.Equals(String.Empty)) + { + Log.Write(Log.Levels.Verbose, "GSDR", "Retry-After response header " + retryAfter); + try + { + //try to convert + double retryAfterNumber = Convert.ToDouble(retryAfter); + waitTime = TimeSpan.FromSeconds(retryAfterNumber); + } + catch (System.FormatException fe) + { + //ignore retry-after, just wait for 60 seconds + } + } + //wait before retrying + m_quadTile.QuadTileSet.setTimeoutAndWait(waitTime); + } + } catch { Modified: trunk/WorldWind/WebDownload/WebDownload.cs =================================================================== --- trunk/WorldWind/WebDownload/WebDownload.cs 2009-08-03 02:02:31 UTC (rev 4080) +++ trunk/WorldWind/WebDownload/WebDownload.cs 2009-08-23 13:14:26 UTC (rev 4081) @@ -1024,15 +1024,21 @@ if (Exception != null) { //these occur regularly - ignore - if (Exception is WebException) - { - Utility.Log.Write(Log.Levels.Debug, "NET", "Verify(): WebException: " + Exception.Message); - } - else - { - throw Exception; - } + //no - let these errors also rise up to the request to handle (ie a 404 will not get requested again) + throw Exception; } + else if (response.StatusCode == System.Net.HttpStatusCode.PartialContent) + { + //treat 206 Partial Content as an Exception + WebException partialDownloadException = new WebException("Partial Download Response",null,WebExceptionStatus.ReceiveFailure,response); + throw partialDownloadException; + } + else if (response.StatusCode == System.Net.HttpStatusCode.OK && response.ContentLength == 0) + { + //treat 200 OK and content length == 0 as an Exception + WebException noContentException = new WebException("No Content OK Download Response", null, WebExceptionStatus.ReceiveFailure, response); + throw noContentException; + } } /// <summary> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fiv...@us...> - 2009-08-03 02:02:45
|
Revision: 4080 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4080&view=rev Author: fiveofzero Date: 2009-08-03 02:02:31 +0000 (Mon, 03 Aug 2009) Log Message: ----------- Fix a memory leak as specified in the forums: http://forum.worldwindcentral.com/showthread.php?p=73008 Modified Paths: -------------- branches/fiveofoh/WorldWind/PluginSDK/Terrain/NltTerrainAccessor.cs Modified: branches/fiveofoh/WorldWind/PluginSDK/Terrain/NltTerrainAccessor.cs =================================================================== --- branches/fiveofoh/WorldWind/PluginSDK/Terrain/NltTerrainAccessor.cs 2009-08-02 13:43:45 UTC (rev 4079) +++ branches/fiveofoh/WorldWind/PluginSDK/Terrain/NltTerrainAccessor.cs 2009-08-03 02:02:31 UTC (rev 4080) @@ -304,7 +304,7 @@ } } - m_tileCache.Remove(oldestTile); + m_tileCache.Remove(oldestTile.TerrainTile.TerrainTileFilePath); } m_tileCache.Add(ttce.TerrainTile.TerrainTileFilePath, ttce); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <amm...@us...> - 2009-08-02 13:44:02
|
Revision: 4079 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4079&view=rev Author: ammianus Date: 2009-08-02 13:43:45 +0000 (Sun, 02 Aug 2009) Log Message: ----------- Fixed NullReferenceException that kept occurring because member world was being referenced statically as World Modified Paths: -------------- branches/ammianus/WorldWind/Atmosphere.cs Modified: branches/ammianus/WorldWind/Atmosphere.cs =================================================================== --- branches/ammianus/WorldWind/Atmosphere.cs 2009-08-02 13:06:23 UTC (rev 4078) +++ branches/ammianus/WorldWind/Atmosphere.cs 2009-08-02 13:43:45 UTC (rev 4079) @@ -195,7 +195,7 @@ // Set new one (to avoid being clipped) - probably better ways of doing this? float aspectRatio = (float)device.Viewport.Width / device.Viewport.Height; - device.Transform.Projection = Matrix.PerspectiveFovRH((float)camera.Fov.Radians, aspectRatio, 1, (float)(2*World.EquatorialRadius) ); + device.Transform.Projection = Matrix.PerspectiveFovRH((float)camera.Fov.Radians, aspectRatio, 1, (float)(2*world.EquatorialRadius) ); device.TextureState[0].ColorOperation = TextureOperation.BlendCurrentAlpha; // Draw our 2 triangles This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <amm...@us...> - 2009-08-02 13:06:33
|
Revision: 4078 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4078&view=rev Author: ammianus Date: 2009-08-02 13:06:23 +0000 (Sun, 02 Aug 2009) Log Message: ----------- Fix for 1_4_1_Issues #4: edit Stars3D.ini so that it will explicitly default to checked in LayerManager. Whether it is Checked/UnChecked in LayerManager will now be saved to the ini file for next startup. Modified Paths: -------------- branches/ammianus/bin/Debug/Plugins/Stars3D/Stars3D.ini Modified: branches/ammianus/bin/Debug/Plugins/Stars3D/Stars3D.ini =================================================================== --- branches/ammianus/bin/Debug/Plugins/Stars3D/Stars3D.ini 2009-08-01 22:45:09 UTC (rev 4077) +++ branches/ammianus/bin/Debug/Plugins/Stars3D/Stars3D.ini 2009-08-02 13:06:23 UTC (rev 4078) @@ -1 +1 @@ -1.0;Hipparcos_Stars_Mag7.7x31399.tsv \ No newline at end of file +1.1;Hipparcos_Stars_Mag7.7x31399.tsv;True;True \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <amm...@us...> - 2009-08-01 22:45:26
|
Revision: 4077 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4077&view=rev Author: ammianus Date: 2009-08-01 22:45:09 +0000 (Sat, 01 Aug 2009) Log Message: ----------- Fix for 1_4_1_Issues #4: issue where unchecking the Starfield box in LayerManager would not hide the background stars. Made this setting persistant to .ini file. Modified Paths: -------------- branches/ammianus/WorldWind/Stars3D.cs Modified: branches/ammianus/WorldWind/Stars3D.cs =================================================================== --- branches/ammianus/WorldWind/Stars3D.cs 2009-08-01 11:39:17 UTC (rev 4076) +++ branches/ammianus/WorldWind/Stars3D.cs 2009-08-01 22:45:09 UTC (rev 4077) @@ -1,6 +1,6 @@ //---------------------------------------------------------------------------- // NAME: Stars3D -// VERSION: 1.1 +// VERSION: 1.2 // DESCRIPTION: Renders a 3D star background to the world. Data comes from the Hipparcos catalog (ESA, 1997). Adds itself as a layer in Layer Manager (key: L). Right click on layer for settings. // DEVELOPER: Patrick Murris // WEBSITE: http://www.alpix.com/3d/worldwin @@ -8,6 +8,7 @@ // Based on the Sky plugin, itself based on Bjorn Reppen 'Atmosphere' plugin // Star data extracted using VizieR at http://cdsweb.u-strasbg.fr //---------------------------------------------------------------------------- +// 1.2 Aug 1, 2009 Fixed issue where unchecking the Starfield box in LayerManager would not hide the background stars. Made this setting persistant to .ini file. // 1.1 Dec 27, 2005 Added bright stars halo/flare // 1.0 Nov 19, 2005 First light with up to 31k stars from the Hipparcos catalog //---------------------------------------------------------------------------- @@ -76,6 +77,8 @@ private double sphereRadius; private Texture texture; public string textureFileName = "Flare.png"; + private bool m_initialIsOnFlag = true; + // default star catalog public string catalogFileName = "Hipparcos_Stars_Mag6x5044.tsv"; @@ -112,6 +115,11 @@ string saveVersion = settingsList[0]; // version when settings where saved if(settingsList[1] != null) catalogFileName = settingsList[1]; if(settingsList.Length >= 3) showFlares = (settingsList[2] == "False") ? false : true; + if(settingsList.Length >= 4) IsOn = (settingsList[3] == "False") ? false : true; + //save this to check whether we need to change the ini settings on Dispose + m_initialIsOnFlag = IsOn; + + } } @@ -120,7 +128,7 @@ /// </summary> public void SaveSettings() { - string line = version + ";" + catalogFileName + ";" + showFlares.ToString(); + string line = version + ";" + catalogFileName + ";" + showFlares.ToString() + ";" + IsOn; try { StreamWriter sw = new StreamWriter(Path.Combine(pluginPath, settingsFileName)); @@ -141,6 +149,9 @@ if(!isInitialized) return; + if (!this.IsOn) + return; + // Camera & Device shortcuts ;) CameraBase camera = drawArgs.WorldCamera; Device device = drawArgs.device; @@ -458,7 +469,14 @@ /// </summary> public override void Dispose() { - isInitialized = false; + //this saves whether you had Starfield checked in LayerManager or not when unloading(?) + //the Plugin or Exiting WorldWind. + if (IsOn != m_initialIsOnFlag) + { + SaveSettings(); + } + + isInitialized = false; if(StarListVB != null) { StarListVB = null; @@ -535,6 +553,7 @@ if(i != -1) cboTexture.SelectedIndex = i; // Flares chkFlares.Checked = layer.showFlares; + } #region Windows Form Designer generated code @@ -549,7 +568,6 @@ this.lblTexture = new System.Windows.Forms.Label(); this.cboTexture = new System.Windows.Forms.ComboBox(); this.lblFlares = new System.Windows.Forms.Label(); - this.chkFlares = new System.Windows.Forms.CheckBox(); this.SuspendLayout(); // // btnCancel This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fiv...@us...> - 2009-08-01 11:39:26
|
Revision: 4076 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4076&view=rev Author: fiveofzero Date: 2009-08-01 11:39:17 +0000 (Sat, 01 Aug 2009) Log Message: ----------- Branch for fiveofoh Modified Paths: -------------- branches/fiveofoh/WorldWind/PluginSDK/ImageStore.cs Added Paths: ----------- branches/fiveofoh/ branches/fiveofoh/WorldWind/ Modified: branches/fiveofoh/WorldWind/PluginSDK/ImageStore.cs =================================================================== --- trunk/WorldWind/PluginSDK/ImageStore.cs 2009-07-17 09:27:23 UTC (rev 4075) +++ branches/fiveofoh/WorldWind/PluginSDK/ImageStore.cs 2009-08-01 11:39:17 UTC (rev 4076) @@ -213,51 +213,79 @@ #endregion - public virtual string GetLocalPath(QuadTile qt) + /// <summary> + /// Returns a path to be used for local storage of the tile + /// Checks through various places before just assinging to cache, in this order. + /// If it finds a tile in any of these places, it immediately returns the path. + /// 1. The "Data" directory (if existent), under its folder structure + /// 2. If the QTS doesn't have a cache directory, it just returns the m_duplicateTexturePath + /// 3. If it has a cache directory, first with the default file extension, then checks for others + /// 4. If not found in any of these, it simply constructs the path + /// from cache directory and default extension, and returns that path + /// + /// This method also checks for tiles in the old, pre-1.4.1 cache structure if it can't find it + /// in the new WWJ format. If it can't find it in the old structure, it returns a WWJ-style + /// path to store a new tile in. + /// </summary> + public virtual string GetLocalPath(QuadTile qt) { if(qt.Level >= m_levelCount) throw new ArgumentException(string.Format("Level {0} not available.", qt.Level)); - string relativePath = String.Format(@"{0}\{1:D4}\{1:D4}_{2:D4}.{3}", - qt.Level, qt.Row, qt.Col, m_imageFileExtension); - - if(m_dataDirectory != null) - { - // Search data directory first - string rawFullPath = Path.Combine( m_dataDirectory, relativePath ); - if(File.Exists(rawFullPath)) - return rawFullPath; - } + //List of cache structures to try, in order of preference + string[] patternArray = { + @"{0}\{1:D1}\{1:D1}_{2:D1}.{3}", + @"{0}\{1:D4}\{1:D4}_{2:D4}.{3}" + }; + + foreach(string relativePattern in patternArray) { + //Try each pattern through + string relativePath = String.Format(relativePattern, + qt.Level, qt.Row, qt.Col, m_imageFileExtension); + + if(m_dataDirectory != null) + { + // Search data directory first + string rawFullPath = Path.Combine( m_dataDirectory, relativePath ); + if(File.Exists(rawFullPath)) + return rawFullPath; + } - // If cache doesn't exist, fall back to duplicate texture path. - if (m_cacheDirectory == null) - return m_duplicateTexturePath; - - // Try cache with default file extension - string cacheFullPath = Path.Combine( m_cacheDirectory, relativePath ); - if(File.Exists(cacheFullPath)) - return cacheFullPath; + // If cache doesn't exist, fall back to duplicate texture path. + if (m_cacheDirectory == null) + return m_duplicateTexturePath; + + // Try cache with default file extension + string cacheFullPath = Path.Combine( m_cacheDirectory, relativePath ); + if(File.Exists(cacheFullPath)) + return cacheFullPath; - // Try cache but accept any valid image file extension - const string ValidExtensions = ".bmp.dds.dib.hdr.jpg.jpeg.pfm.png.ppm.tga.gif.tif"; - - string cacheSearchPath = Path.GetDirectoryName(cacheFullPath); - if(Directory.Exists(cacheSearchPath)) - { - foreach( string imageFile in Directory.GetFiles( - cacheSearchPath, - Path.GetFileNameWithoutExtension(cacheFullPath) + ".*") ) - { - string extension = Path.GetExtension(imageFile).ToLower(); - if(ValidExtensions.IndexOf(extension)<0) - continue; + // Try cache but accept any valid image file extension + const string ValidExtensions = ".bmp.dds.dib.hdr.jpg.jpeg.pfm.png.ppm.tga.gif.tif"; + + string cacheSearchPath = Path.GetDirectoryName(cacheFullPath); + if(Directory.Exists(cacheSearchPath)) + { + foreach( string imageFile in Directory.GetFiles( + cacheSearchPath, + Path.GetFileNameWithoutExtension(cacheFullPath) + ".*") ) + { + string extension = Path.GetExtension(imageFile).ToLower(); + if(ValidExtensions.IndexOf(extension)<0) + continue; - return imageFile; - } - } + return imageFile; + } + } + } - return cacheFullPath; + //If it's not anywhere in cache, use the first (preferred) pattern, in the cache directory + string defaultPath = String.Format(patternArray[0], + qt.Level, qt.Row, qt.Col, m_imageFileExtension); + string defaultFullPath = Path.Combine(m_cacheDirectory, defaultPath); + + return defaultFullPath; } /// <summary> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <amm...@us...> - 2009-07-17 09:27:34
|
Revision: 4075 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4075&view=rev Author: ammianus Date: 2009-07-17 09:27:23 +0000 (Fri, 17 Jul 2009) Log Message: ----------- Download code fixes for WW .NET 1.4.1 Modified Paths: -------------- branches/ammianus/Altova/Altova.csproj branches/ammianus/AltovaXML/AltovaXML.csproj branches/ammianus/Collab/Collab.csproj branches/ammianus/ConfigurationWizard/ConfigurationWizard.csproj branches/ammianus/DstilePlugin/DstileGUI.csproj branches/ammianus/DstilePlugin/DstileGUI.csproj.user branches/ammianus/HtmlEditor/HtmlEditor.csproj branches/ammianus/LayerSet/LayerSet.csproj branches/ammianus/NavigationPanel/NavigationPanel.csproj branches/ammianus/OgrVectorImporter/OgrVectorImporter.csproj branches/ammianus/PluginEngine/PluginEngine.csproj branches/ammianus/PluginSDK/PluginSDK.csproj branches/ammianus/PluginSDK/QuadTileSet.cs branches/ammianus/PluginSDK/Renderable/GeoSpatialDownloadRequest.cs branches/ammianus/RSS.NET/RSS.NET.csproj branches/ammianus/Timeline/Timeline.csproj branches/ammianus/Utilities/Log.cs branches/ammianus/Utilities/Utilities.csproj branches/ammianus/WebDownload/WebDownload.cs branches/ammianus/WebDownload/WebDownload.csproj branches/ammianus/WiimoteLib/WiimoteLib.csproj branches/ammianus/WorldWind/WorldWind.cs branches/ammianus/WorldWind/WorldWind.csproj branches/ammianus/WorldWind.sln branches/ammianus/WorldXmlDescriptor/WorldXmlDescriptor.csproj branches/ammianus/bin/Debug/Config/Earth/@Images.xml branches/ammianus/capabilities_1_1_1/capabilities_1_1_1.csproj branches/ammianus/capabilities_1_3_0/capabilities_1_3_0.csproj branches/ammianus/wms_server_list/wms_server_list.csproj Modified: branches/ammianus/Altova/Altova.csproj =================================================================== --- branches/ammianus/Altova/Altova.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/Altova/Altova.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -73,6 +73,25 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System"> <Name>System</Name> Modified: branches/ammianus/AltovaXML/AltovaXML.csproj =================================================================== --- branches/ammianus/AltovaXML/AltovaXML.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/AltovaXML/AltovaXML.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -73,6 +73,25 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System"> <Name>System</Name> Modified: branches/ammianus/Collab/Collab.csproj =================================================================== --- branches/ammianus/Collab/Collab.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/Collab/Collab.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -29,6 +29,25 @@ <WarningLevel>4</WarningLevel> <DocumentationFile>Collab.xml</DocumentationFile> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DocumentationFile>Collab.xml</DocumentationFile> + <WarningLevel>3</WarningLevel> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <DocumentationFile>Collab.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="Microsoft.DirectX, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <SpecificVersion>False</SpecificVersion> Modified: branches/ammianus/ConfigurationWizard/ConfigurationWizard.csproj =================================================================== --- branches/ammianus/ConfigurationWizard/ConfigurationWizard.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/ConfigurationWizard/ConfigurationWizard.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -72,6 +72,27 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>ConfigurationWizard.xml</DocumentationFile> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>ConfigurationWizard.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System"> <Name>System</Name> Modified: branches/ammianus/DstilePlugin/DstileGUI.csproj =================================================================== --- branches/ammianus/DstilePlugin/DstileGUI.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/DstilePlugin/DstileGUI.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -1,4 +1,16 @@ <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <DocumentationFile>bin\Release\DstilGUI.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <PropertyGroup> <ProjectType>Local</ProjectType> <ProductVersion>8.0.50727</ProductVersion> @@ -71,6 +83,19 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <DocumentationFile>bin\Release\DstilGUI.xml</DocumentationFile> + <WarningLevel>3</WarningLevel> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="gdalconst_csharp, Version=0.0.0.0, Culture=neutral"> <SpecificVersion>False</SpecificVersion> Modified: branches/ammianus/DstilePlugin/DstileGUI.csproj.user =================================================================== --- branches/ammianus/DstilePlugin/DstileGUI.csproj.user 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/DstilePlugin/DstileGUI.csproj.user 2009-07-17 09:27:23 UTC (rev 4075) @@ -55,4 +55,10 @@ </StartWorkingDirectory> <StartWithIE>true</StartWithIE> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <StartWithIE>true</StartWithIE> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <StartWithIE>true</StartWithIE> + </PropertyGroup> </Project> \ No newline at end of file Modified: branches/ammianus/HtmlEditor/HtmlEditor.csproj =================================================================== --- branches/ammianus/HtmlEditor/HtmlEditor.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/HtmlEditor/HtmlEditor.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -100,6 +100,28 @@ <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <DocumentationFile>bin\Debug\HtmlEditor.XML</DocumentationFile> + <WarningLevel>3</WarningLevel> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="CustomMarshalers"> <Name>CustomMarshalers</Name> Modified: branches/ammianus/LayerSet/LayerSet.csproj =================================================================== --- branches/ammianus/LayerSet/LayerSet.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/LayerSet/LayerSet.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -73,6 +73,25 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System"> <Name>System</Name> Modified: branches/ammianus/NavigationPanel/NavigationPanel.csproj =================================================================== --- branches/ammianus/NavigationPanel/NavigationPanel.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/NavigationPanel/NavigationPanel.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -17,6 +17,19 @@ <StartupObject> </StartupObject> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + </PropertyGroup> <ItemGroup> <Reference Include="Microsoft.DirectX" /> <Reference Include="Microsoft.DirectX.Direct3D" /> Modified: branches/ammianus/OgrVectorImporter/OgrVectorImporter.csproj =================================================================== --- branches/ammianus/OgrVectorImporter/OgrVectorImporter.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/OgrVectorImporter/OgrVectorImporter.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -31,6 +31,25 @@ <WarningLevel>4</WarningLevel> <DocumentationFile>OgrVectorImporter.xml</DocumentationFile> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DocumentationFile>OgrVectorImporter.xml</DocumentationFile> + <WarningLevel>3</WarningLevel> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <DocumentationFile>OgrVectorImporter.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="Microsoft.DirectX, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> <SpecificVersion>False</SpecificVersion> Modified: branches/ammianus/PluginEngine/PluginEngine.csproj =================================================================== --- branches/ammianus/PluginEngine/PluginEngine.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/PluginEngine/PluginEngine.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -29,6 +29,24 @@ <WarningLevel>4</WarningLevel> <DocumentationFile>PluginEngine.xml</DocumentationFile> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DocumentationFile>PluginEngine.xml</DocumentationFile> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <DocumentationFile>PluginEngine.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="Microsoft.JScript" /> <Reference Include="System" /> Modified: branches/ammianus/PluginSDK/PluginSDK.csproj =================================================================== --- branches/ammianus/PluginSDK/PluginSDK.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/PluginSDK/PluginSDK.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -72,6 +72,30 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <DocumentationFile>PluginSDK.xml</DocumentationFile> + <WarningLevel>3</WarningLevel> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <DocumentationFile>PluginSDK.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="ICSharpCode.SharpZipLib"> <Name>ICSharpCode.SharpZipLib</Name> Modified: branches/ammianus/PluginSDK/QuadTileSet.cs =================================================================== --- branches/ammianus/PluginSDK/QuadTileSet.cs 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/PluginSDK/QuadTileSet.cs 2009-07-17 09:27:23 UTC (rev 4075) @@ -65,6 +65,7 @@ protected GeoSpatialDownloadRequest[] m_activeDownloads = new GeoSpatialDownloadRequest[20]; protected DateTime[] m_downloadStarted = new DateTime[20]; protected TimeSpan m_connectionWaitTime = TimeSpan.FromMinutes(2); + protected TimeSpan m_defaultWaitTime = TimeSpan.FromMinutes(2); protected DateTime m_connectionWaitStart; protected bool m_isConnectionWaiting; protected bool m_enableColorKeying; @@ -75,8 +76,11 @@ protected string m_effectTechnique = null; protected Hashtable m_effectHandles = null; static protected EffectPool m_effectPool = new EffectPool(); + protected Hashtable m_failedDownloads = new Hashtable(); + //this value should be >= 1 + private int MaxRetriesPerTile = 1; + private int MaxFailedTilesForTimeout = 5; - protected TimeSpan m_cacheExpirationTime = TimeSpan.MaxValue; @@ -181,7 +185,7 @@ // Default terrain mapped imagery to terrain mapped priority if (terrainMapped) - RenderPriority = RenderPriority.TerrainMappedImages; + RenderPriority = RenderPriority.TerrainMappedImages; } /// <summary> @@ -921,9 +925,21 @@ { if (IsConnectionWaiting) { - if (DateTime.Now.Subtract(TimeSpan.FromSeconds(15)) < ConnectionWaitStart) + if (DateTime.Now.Subtract(TimeSpan.FromSeconds(20)) < ConnectionWaitStart) { - string s = "Problem connecting to server... Trying again in 2 minutes.\n"; + //the wait time may vary, display the correct wait time in minutes and seconds + int minutesWaiting = m_connectionWaitTime.Minutes; + String timePart; + if (minutesWaiting > 0) + { + timePart = m_connectionWaitTime.Minutes + " minutes "+m_connectionWaitTime.Seconds+" seconds"; + } + else + { + timePart = m_connectionWaitTime.Seconds + " seconds"; + } + //this message is rendered in upper right corner + string s = "Problem connecting to server... Trying again in "+timePart+".\n"; drawArgs.UpperLeftCornerText += s; } } @@ -1086,6 +1102,12 @@ } } + lock (m_failedDownloads.SyncRoot) + { + //clear this hashtable + m_failedDownloads.Clear(); + } + foreach (QuadTile qt in m_topmostTiles.Values) qt.Dispose(); @@ -1124,6 +1146,14 @@ foreach (long deletionKey in deletionList) m_topmostTiles.Remove(deletionKey); } + + //reset the numberRetries and timeout, also reset failedDownloads Hashtable + m_isConnectionWaiting = false; + //m_connectionWaitStart = System.DateTime.MinValue; + m_failedDownloads.Clear(); + m_numberRetries = 0; + Log.Write(Log.Levels.Verbose, "QTS", " ResetCacheForCurrentView: (" + m_isConnectionWaiting + "," + m_connectionWaitStart + "," +m_failedDownloads.Count +"," +m_numberRetries); + } public void ClearDownloadRequests() @@ -1143,37 +1173,52 @@ if (m_downloadRequests.Contains(key)) return; - Log.Write(Log.Levels.Verbose, "QTS", "AddToDownloadQueue: " + newRequest.QuadTile.ToString()); + //go through download requests, remove any requests that have failed before + if (IsTileFailed(newRequest.QuadTile.Level,newRequest.QuadTile.Col,newRequest.QuadTile.Row)) + { + + //increment number of retries overall for this tile (more than 5 failed downloads and anti-hammer goes into effect for wait time) + Log.Write(Log.Levels.Verbose, "QTS", "AddToDownloadQueue: Requested tile will not download again."); + newRequest.QuadTile.WaitingForDownload = false; + + } + - m_downloadRequests.Add(key, newRequest); + if(newRequest.QuadTile.WaitingForDownload == true) + { - if (m_downloadRequests.Count >= m_maxQueueSize) - { - //remove spatially farthest request - GeoSpatialDownloadRequest farthestRequest = null; - Angle curDistance = Angle.Zero; - Angle farthestDistance = Angle.Zero; - foreach (GeoSpatialDownloadRequest curRequest in m_downloadRequests.Values) - { - curDistance = MathEngine.SphericalDistance( - curRequest.QuadTile.CenterLatitude, - curRequest.QuadTile.CenterLongitude, - camera.Latitude, - camera.Longitude); + Log.Write(Log.Levels.Verbose, "QTS", "AddToDownloadQueue: " + newRequest.QuadTile.ToString()); - if (curDistance > farthestDistance) - { - farthestRequest = curRequest; - farthestDistance = curDistance; - } - } + m_downloadRequests.Add(key, newRequest); - farthestRequest.Dispose(); - farthestRequest.QuadTile.DownloadRequests.Remove(farthestRequest); - m_downloadRequests.Remove(farthestRequest.QuadTile); - } - } + if (m_downloadRequests.Count >= m_maxQueueSize) + { + //remove spatially farthest request + GeoSpatialDownloadRequest farthestRequest = null; + Angle curDistance = Angle.Zero; + Angle farthestDistance = Angle.Zero; + foreach (GeoSpatialDownloadRequest curRequest in m_downloadRequests.Values) + { + curDistance = MathEngine.SphericalDistance( + curRequest.QuadTile.CenterLatitude, + curRequest.QuadTile.CenterLongitude, + camera.Latitude, + camera.Longitude); + if (curDistance > farthestDistance) + { + farthestRequest = curRequest; + farthestDistance = curDistance; + } + } + + farthestRequest.Dispose(); + farthestRequest.QuadTile.DownloadRequests.Remove(farthestRequest); + m_downloadRequests.Remove(farthestRequest.QuadTile); + } + } + } + ServiceDownloadQueue(); } @@ -1223,22 +1268,27 @@ m_activeDownloads[i].Dispose(); m_activeDownloads[i] = null; } - - if (NumberRetries >= 5 || m_isConnectionWaiting) + + + //If there have been 'MaxFailedTilesForTimeout' or currently in a Timeout + if (NumberRetries >= MaxFailedTilesForTimeout || m_isConnectionWaiting) { - // Anti hammer in effect + + // Anti hammer in effect if (!m_isConnectionWaiting) { - m_connectionWaitStart = DateTime.Now; - m_isConnectionWaiting = true; + Log.Write(Log.Levels.Debug, "QTS", "ServiceDownloadQueue: Anti-Hammer[" + NumberRetries + "," + m_isConnectionWaiting + "," + m_connectionWaitStart.ToShortTimeString() + "] "); + //use default timeout (2 minutes) + setTimeoutAndWait(m_defaultWaitTime); } - if (DateTime.Now.Subtract(m_connectionWaitTime) > m_connectionWaitStart) + //after waiting for wait time clear the number of retries + if (DateTime.Now.Subtract(m_connectionWaitTime) > m_connectionWaitStart) { NumberRetries = 0; m_isConnectionWaiting = false; } - m_downloadRequests.Clear(); + ClearDownloadRequests(); return; } @@ -1343,5 +1393,67 @@ return texture; } } + + /// <summary> + /// When a DownloadRequest fails when a server returns a 404 error this will record that failure for the QuadTile + /// If the QuadTile fails to be downloaded after 'MaxRetriesPerTile' retries the QuadTileSet will not download it again to prevent + /// hammering the server. + /// </summary> + /// <param name="downloadRequest"></param> + public void RecordFailedRequest(GeoSpatialDownloadRequest downloadRequest) + { + //use the QuadTile's String as a key, assuming this would be unique + String quadTileKey = downloadRequest.QuadTile.ToString(); + QuadTile qt = downloadRequest.QuadTile; + + int numberFailures = 1; + if (m_failedDownloads.ContainsKey(quadTileKey)) + { + //already has failed once, increment the number of failures + numberFailures = (int) m_failedDownloads[quadTileKey]; + numberFailures++; + m_failedDownloads[quadTileKey] = numberFailures; + + }else{ + //first time failed, add to the hashTable + m_failedDownloads.Add(quadTileKey, numberFailures); + } + } + + /// <summary> + /// Allows for setting the Timeout for this QuadTileSet for a specified length of time + /// where downloads will be put on hold. + /// </summary> + /// <param name="waitTime">How long to set wait</param> + public void setTimeoutAndWait(TimeSpan waitTime) + { + m_connectionWaitStart = DateTime.Now; + m_isConnectionWaiting = true; + m_connectionWaitTime = waitTime; + } + + /// <summary> + /// Checks if the requested download has been flagged as a failed download + /// </summary> + /// <param name="level"></param> + /// <param name="x"></param> + /// <param name="y"></param> + /// <returns></returns> + public Boolean IsTileFailed(int level, int x, int y) + { + Boolean isTileFailed = false; + //construct key + String key = String.Format("QuadTile:Set={0} Level={1} X={2} Y={3}", + this.Name, level, x, y); + //TODO calculate tiles below failed tile as well. ie need to look up at lower levels for failures + if(m_failedDownloads.ContainsKey(key)) + { + isTileFailed = true; + } + return isTileFailed; + } + } + + } Modified: branches/ammianus/PluginSDK/Renderable/GeoSpatialDownloadRequest.cs =================================================================== --- branches/ammianus/PluginSDK/Renderable/GeoSpatialDownloadRequest.cs 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/PluginSDK/Renderable/GeoSpatialDownloadRequest.cs 2009-07-17 09:27:23 UTC (rev 4075) @@ -75,7 +75,7 @@ { downloadInfo.Verify(); - m_quadTile.QuadTileSet.NumberRetries = 0; + //m_quadTile.QuadTileSet.NumberRetries = 0; // Rename temp file to real name File.Delete(m_localFilePath); @@ -88,13 +88,69 @@ catch(System.Net.WebException caught) { System.Net.HttpWebResponse response = caught.Response as System.Net.HttpWebResponse; - if(response!=null && response.StatusCode==System.Net.HttpStatusCode.NotFound) + /* + * null response + */ + if (response == null) + { + m_quadTile.QuadTileSet.RecordFailedRequest(this); + } + /* 4xx - Client error + * 400 Bad Request + * 401 Unauthorized + * 403 Forbidden + * 404 Not Found + * 206 Partial Content + * 200 OK && Content length == 0 + */ + else if(response.StatusCode==System.Net.HttpStatusCode.NotFound || + response.StatusCode==System.Net.HttpStatusCode.Unauthorized || + response.StatusCode==System.Net.HttpStatusCode.Forbidden || + response.StatusCode==System.Net.HttpStatusCode.BadRequest || + response.StatusCode == System.Net.HttpStatusCode.PartialContent || + (response.StatusCode == System.Net.HttpStatusCode.OK && + response.ContentLength == 0)) { - using(File.Create(m_localFilePath + ".txt")) - {} - return; + m_quadTile.QuadTileSet.RecordFailedRequest(this); + } - m_quadTile.QuadTileSet.NumberRetries++; + /* + * 5xx - Server Error + * 500 Internal Server Error + * 501 Not Implemented + * 502 Bad Gateway + * 503 Service Unavailable + */ + else if (response.StatusCode == System.Net.HttpStatusCode.InternalServerError || + response.StatusCode == System.Net.HttpStatusCode.NotImplemented || + response.StatusCode == System.Net.HttpStatusCode.BadGateway || + response.StatusCode == System.Net.HttpStatusCode.ServiceUnavailable + ) + { + //server problem, directly start timeout for the layer, rather than counter per tile + + + TimeSpan waitTime = TimeSpan.FromSeconds(120); + //if retry-after is specified then wait for that length of time before retrying + String retryAfter = response.GetResponseHeader("Retry-After"); + if (retryAfter != null && !retryAfter.Equals(String.Empty)) + { + Log.Write(Log.Levels.Verbose, "GSDR", "Retry-After response header " + retryAfter); + try + { + //try to convert + double retryAfterNumber = Convert.ToDouble(retryAfter); + waitTime = TimeSpan.FromSeconds(retryAfterNumber); + } + catch (System.FormatException fe) + { + //ignore retry-after, just wait for 60 seconds + } + } + //wait before retrying + m_quadTile.QuadTileSet.setTimeoutAndWait(waitTime); + } + } catch { Modified: branches/ammianus/RSS.NET/RSS.NET.csproj =================================================================== --- branches/ammianus/RSS.NET/RSS.NET.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/RSS.NET/RSS.NET.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -71,6 +71,27 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>doc.xml</DocumentationFile> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>doc.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System"> <Name>System</Name> Modified: branches/ammianus/Timeline/Timeline.csproj =================================================================== --- branches/ammianus/Timeline/Timeline.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/Timeline/Timeline.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -71,6 +71,28 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>Timeline.xml</DocumentationFile> + <WarningLevel>3</WarningLevel> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>Timeline.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System"> <Name>System</Name> Modified: branches/ammianus/Utilities/Log.cs =================================================================== --- branches/ammianus/Utilities/Log.cs 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/Utilities/Log.cs 2009-07-17 09:27:23 UTC (rev 4075) @@ -56,9 +56,14 @@ logPath = DefaultSettingsDirectory(); Directory.CreateDirectory(logPath); + + // TODO: do not hardcode logfile name? logFilePath = Path.Combine( logPath, "WorldWind.log" ); + //TODO: roll-over log file + + logWriter = new StreamWriter(logFilePath, true); logWriter.AutoFlush = true; } Modified: branches/ammianus/Utilities/Utilities.csproj =================================================================== --- branches/ammianus/Utilities/Utilities.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/Utilities/Utilities.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -71,6 +71,28 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>Utilities.xml</DocumentationFile> + <WarningLevel>3</WarningLevel> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>Utilities.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System"> <Name>System</Name> Modified: branches/ammianus/WebDownload/WebDownload.cs =================================================================== --- branches/ammianus/WebDownload/WebDownload.cs 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/WebDownload/WebDownload.cs 2009-07-17 09:27:23 UTC (rev 4075) @@ -1024,15 +1024,21 @@ if (Exception != null) { //these occur regularly - ignore - if (Exception is WebException) - { - Utility.Log.Write(Log.Levels.Debug, "NET", "Verify(): WebException: " + Exception.Message); - } - else - { - throw Exception; - } + //no - let these errors also rise up to the request to handle (ie a 404 will not get requested again) + throw Exception; } + else if (response.StatusCode == System.Net.HttpStatusCode.PartialContent) + { + //treat 206 Partial Content as an Exception + WebException partialDownloadException = new WebException("Partial Download Response",null,WebExceptionStatus.ReceiveFailure,response); + throw partialDownloadException; + } + else if (response.StatusCode == System.Net.HttpStatusCode.OK && response.ContentLength == 0) + { + //treat 200 OK and content length == 0 as an Exception + WebException noContentException = new WebException("No Content OK Download Response", null, WebExceptionStatus.ReceiveFailure, response); + throw noContentException; + } } /// <summary> Modified: branches/ammianus/WebDownload/WebDownload.csproj =================================================================== --- branches/ammianus/WebDownload/WebDownload.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/WebDownload/WebDownload.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -71,6 +71,28 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>WebDownload.xml</DocumentationFile> + <WarningLevel>3</WarningLevel> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>WebDownload.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System"> <Name>System</Name> Modified: branches/ammianus/WiimoteLib/WiimoteLib.csproj =================================================================== --- branches/ammianus/WiimoteLib/WiimoteLib.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/WiimoteLib/WiimoteLib.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -130,6 +130,55 @@ <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'MSRS Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\MSRS Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <CodeAnalysisRuleAssemblies>C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop\\rules</CodeAnalysisRuleAssemblies> + <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> + <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug MSRS|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug MSRS\</OutputPath> + <DefineConstants>TRACE;DEBUG;MSRS</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <CodeAnalysisRuleAssemblies>C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop\\rules</CodeAnalysisRuleAssemblies> + <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> + <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release MSRS|x64' "> + <OutputPath>bin\x64\Release MSRS\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <Optimize>true</Optimize> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x64</PlatformTarget> + <CodeAnalysisRuleAssemblies>C:\Program Files\Microsoft Visual Studio 8\Team Tools\Static Analysis Tools\FxCop\\rules</CodeAnalysisRuleAssemblies> + <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression> + <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System" /> </ItemGroup> Modified: branches/ammianus/WorldWind/WorldWind.cs =================================================================== --- branches/ammianus/WorldWind/WorldWind.cs 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/WorldWind/WorldWind.cs 2009-07-17 09:27:23 UTC (rev 4075) @@ -477,9 +477,12 @@ IntPtr handle = GetWWHandle(); if (!System.IntPtr.Zero.Equals(handle)) { - if(args.Length>0) + + + if(args.Length>0) NativeMethods.SendArgs( handle, string.Join("\n",args) ); - return; + + //return; } // abort if 50 bindings problem present and user opts to go to the download page @@ -521,9 +524,10 @@ // Save program settings Settings.Save(); } - catch (NullReferenceException) + catch (NullReferenceException e) { // HACK + Log.Write(e); } // uncomment this if you want easy debugging ;) //#if !DEBUG Modified: branches/ammianus/WorldWind/WorldWind.csproj =================================================================== --- branches/ammianus/WorldWind/WorldWind.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/WorldWind/WorldWind.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -74,6 +74,29 @@ <UseVSHostingProcess>false</UseVSHostingProcess> <PlatformTarget>x86</PlatformTarget> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>WorldWind.xml</DocumentationFile> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <UseVSHostingProcess>false</UseVSHostingProcess> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <DocumentationFile>WorldWind.xml</DocumentationFile> + <Optimize>true</Optimize> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <UseVSHostingProcess>false</UseVSHostingProcess> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="APRSParser, Version=1.0.2499.42692, Culture=neutral, processorArchitecture=x86" /> <Reference Include="AviFile, Version=1.0.2461.30093, Culture=neutral, processorArchitecture=MSIL" /> Modified: branches/ammianus/WorldWind.sln =================================================================== --- branches/ammianus/WorldWind.sln 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/WorldWind.sln 2009-07-17 09:27:23 UTC (rev 4075) @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 +# Visual C# Express 2005 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorldWind", "WorldWind\WorldWind.csproj", "{394E6BC1-62F8-4776-9FC5-25633A239433}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginSDK", "PluginSDK\PluginSDK.csproj", "{30178337-6BBE-45A0-B7DF-73B2A46F06EE}" Modified: branches/ammianus/WorldXmlDescriptor/WorldXmlDescriptor.csproj =================================================================== --- branches/ammianus/WorldXmlDescriptor/WorldXmlDescriptor.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/WorldXmlDescriptor/WorldXmlDescriptor.csproj 2009-07-17 09:27:23 UTC (rev 4075) @@ -71,6 +71,27 @@ <DebugType>none</DebugType> <ErrorReport>prompt</ErrorReport> </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x64\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <NoWarn>109</NoWarn> + <DebugType>full</DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> + <OutputPath>bin\x64\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <BaseAddress>285212672</BaseAddress> + <Optimize>true</Optimize> + <NoWarn>109</NoWarn> + <DebugType> + </DebugType> + <PlatformTarget>x64</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> <ItemGroup> <Reference Include="System"> <Name>System</Name> Modified: branches/ammianus/bin/Debug/Config/Earth/@Images.xml =================================================================== --- branches/ammianus/bin/Debug/Config/Earth/@Images.xml 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/bin/Debug/Config/Earth/@Images.xml 2009-07-17 09:27:23 UTC (rev 4075) @@ -1,3 +1,342 @@ <?xml version="1.0" encoding="UTF-8"?> -<LayerSet redirect="http://worldwind25.arc.nasa.gov/layerConfig/earthimages.xml"> +<LayerSet Name="Images" ShowOnlyOneLayer="false" ShowAtStartup="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="LayerSet.xsd"> + <ChildLayerSet Name="NASA Landsat Imagery" ShowOnlyOneLayer="false" ShowAtStartup="true"> + <QuadTileSet ShowAtStartup="true"> + <Name>NLT Landsat7 (Visible Color)</Name> + <Description>NASA derived global 30 meters per pixel satellite image mosaic</Description> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>90.0</Value> + </North> + <South> + <Value>-90.0</Value> + </South> + <West> + <Value>-180.0</Value> + </West> + <East> + <Value>180.0</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>2.25</LevelZeroTileSizeDegrees> + <NumberLevels>5</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <ImageTileService> + <ServerUrl>http://worldwind25.arc.nasa.gov/tile/tile.aspx</ServerUrl> + <DataSetName>105</DataSetName> + <ServerLogoFilePath>Data\Icons\Interface\meatball.png</ServerLogoFilePath> + </ImageTileService> + </ImageAccessor> + <ExtendedInformation> + <ToolBarImage>Data\Icons\Interface\nlt-landsat-visible.png</ToolBarImage> + </ExtendedInformation> + </QuadTileSet> + <QuadTileSet ShowAtStartup="false"> + <Name>I-Cubed ESAT World Landsat7 Mosaic</Name> + <Description>NASA derived global 15 meters per pixel satellite image mosaic, donated and processed by I-Cubed using equipment from Isilon Systems.</Description> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>90.0</Value> + </North> + <South> + <Value>-90.0</Value> + </South> + <West> + <Value>-180.0</Value> + </West> + <East> + <Value>180.0</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>2.25</LevelZeroTileSizeDegrees> + <NumberLevels>6</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <ImageTileService> + <ServerUrl>http://worldwind25.arc.nasa.gov/lstile/lstile.aspx</ServerUrl> + <DataSetName>esat_world</DataSetName> + <ServerLogoFilePath>Data\Icons\Interface\meatball.png</ServerLogoFilePath> + </ImageTileService> + </ImageAccessor> + + </QuadTileSet> + <QuadTileSet ShowAtStartup="false"> + <Name>OnEarth 15m Global Mosaic, pseudocolor</Name> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>84</Value> + </North> + <South> + <Value>-60</Value> + </South> + <West> + <Value>-180</Value> + </West> + <East> + <Value>180</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>2.0</LevelZeroTileSizeDegrees> + <NumberLevels>6</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <WMSAccessor> + <ServerGetMapUrl>http://wms.jpl.nasa.gov/wms.cgi</ServerGetMapUrl> + <ServiceName>OGC:WMS</ServiceName> + <Version>1.1.1</Version> + <ImageFormat>image/jpeg</ImageFormat> + <WMSLayerName>global_mosaic</WMSLayerName> + <UseTransparency>true</UseTransparency> + <ServerLogoFilePath>Data\Icons\Interface\earth-western.png</ServerLogoFilePath> + </WMSAccessor> + </ImageAccessor> + </QuadTileSet> + <QuadTileSet ShowAtStartup="false"> + <Name>OnEarth 15m Global Mosaic, visual</Name> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>84</Value> + </North> + <South> + <Value>-60</Value> + </South> + <West> + <Value>-180</Value> + </West> + <East> + <Value>180</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>2.0</LevelZeroTileSizeDegrees> + <NumberLevels>6</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <WMSAccessor> + <ServerGetMapUrl>http://wms.jpl.nasa.gov/wms.cgi</ServerGetMapUrl> + <ServiceName>OGC:WMS</ServiceName> + <Version>1.1.1</Version> + <ImageFormat>image/jpeg</ImageFormat> + <WMSLayerName>global_mosaic</WMSLayerName> + <WMSLayerStyle>visual</WMSLayerStyle> + <UseTransparency>true</UseTransparency> + <ServerLogoFilePath>Data\Icons\Interface\earth-western.png</ServerLogoFilePath> + </WMSAccessor> + </ImageAccessor> + </QuadTileSet> + <QuadTileSet ShowAtStartup="false"> + <Name>NLT Landsat7 (Pseudo Color)</Name> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>90.0</Value> + </North> + <South> + <Value>-90.0</Value> + </South> + <West> + <Value>-180.0</Value> + </West> + <East> + <Value>180.0</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>2.25</LevelZeroTileSizeDegrees> + <NumberLevels>5</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <ImageTileService> + <ServerUrl>http://worldwind28.arc.nasa.gov/TestWebApp/WebForm1.aspx</ServerUrl> + <DataSetName>nlt_pseudo</DataSetName> + <ServerLogoFilePath>Data\Icons\Interface\meatball.png</ServerLogoFilePath> + </ImageTileService> + </ImageAccessor> + <ExtendedInformation> + <ToolBarImage>Data\Icons\Interface\nlt-landsat-pseudo.png</ToolBarImage> + </ExtendedInformation> + </QuadTileSet> + <QuadTileSet ShowAtStartup="false"> + <Name>Geocover 2000</Name> + <Description>Pseudo color 15m Landsat mosaic provided by MDA Federal, scenes comprised from early 2000s</Description> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>90.0</Value> + </North> + <South> + <Value>-90.0</Value> + </South> + <West> + <Value>-180.0</Value> + </West> + <East> + <Value>180.0</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>2.25</LevelZeroTileSizeDegrees> + <NumberLevels>6</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <ImageTileService> + <ServerUrl>http://localhost:8080/TomcatTileServer/TileRequestHandler</ServerUrl> + <DataSetName>geocover2000</DataSetName> + <ServerLogoFilePath>Data\Icons\Interface\meatball.png</ServerLogoFilePath> + </ImageTileService> + </ImageAccessor> + <ExtendedInformation> + <ToolBarImage>Data\Icons\Interface\geocover-landsat-pseudo-2000.png</ToolBarImage> + </ExtendedInformation> + </QuadTileSet> + <QuadTileSet ShowAtStartup="false"> + <Name>Geocover 1990</Name> + <Description>Pseudo color 30m Landsat mosaic provided by MDA Federal, scenes comprised from early 1990s</Description> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>90.0</Value> + </North> + <South> + <Value>-90.0</Value> + </South> + <West> + <Value>-180.0</Value> + </West> + <East> + <Value>180.0</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>2.25</LevelZeroTileSizeDegrees> + <NumberLevels>5</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <ImageTileService> + <ServerUrl>http://worldwind28.arc.nasa.gov/TestWebApp/WebForm1.aspx</ServerUrl> + <DataSetName>es_1990jpg</DataSetName> + <ServerLogoFilePath>Data\Icons\Interface\meatball.png</ServerLogoFilePath> + </ImageTileService> + </ImageAccessor> + <ExtendedInformation> + <ToolBarImage>Data\Icons\Interface\geocover-landsat-pseudo-1990.png</ToolBarImage> + </ExtendedInformation> + </QuadTileSet> + </ChildLayerSet> + <ChildLayerSet Name="USGS Imagery" ShowOnlyOneLayer="false" ShowAtStartup="true"> + <QuadTileSet ShowAtStartup="false"> + <Name>USGS Digital Ortho</Name> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>71.55</Value> + </North> + <South> + <Value>17.84</Value> + </South> + <West> + <Value>-168.67</Value> + </West> + <East> + <Value>-65.15</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>0.8</LevelZeroTileSizeDegrees> + <NumberLevels>8</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <ImageTileService> + <ServerUrl>http://worldwind25.arc.nasa.gov/tile/tile.aspx</ServerUrl> + <DataSetName>101</DataSetName> + <ServerLogoFilePath>Data\Icons\Interface\usgs.png</ServerLogoFilePath> + </ImageTileService> + </ImageAccessor> + <ExtendedInformation> + <ToolBarImage>Data\Icons\Interface\usgs-1m-ortho.png</ToolBarImage> + </ExtendedInformation> + </QuadTileSet> + <QuadTileSet ShowAtStartup="false"> + <Name>USGS Topo Maps</Name> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>71.55</Value> + </North> + <South> + <Value>17.84</Value> + </South> + <West> + <Value>-168.67</Value> + </West> + <East> + <Value>-65.15</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>0.8</LevelZeroTileSizeDegrees> + <NumberLevels>7</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <ImageTileService> + <ServerUrl>http://worldwind25.arc.nasa.gov/tile/tile.aspx</ServerUrl> + <DataSetName>102</DataSetName> + <ServerLogoFilePath>Data\Icons\Interface\usgs.png</ServerLogoFilePath> + </ImageTileService> + </ImageAccessor> + <ExtendedInformation> + <ToolBarImage>Data\Icons\Interface\usgs-topo-map.png</ToolBarImage> + </ExtendedInformation> + </QuadTileSet> + <QuadTileSet ShowAtStartup="false"> + <Name>USGS Urban Area Ortho</Name> + <DistanceAboveSurface>0</DistanceAboveSurface> + <BoundingBox> + <North> + <Value>71.55</Value> + </North> + <South> + <Value>17.84</Value> + </South> + <West> + <Value>-168.67</Value> + </West> + <East> + <Value>-65.15</Value> + </East> + </BoundingBox> + <TerrainMapped>true</TerrainMapped> + <ImageAccessor> + <LevelZeroTileSizeDegrees>0.8</LevelZeroTileSizeDegrees> + <NumberLevels>10</NumberLevels> + <TextureSizePixels>512</TextureSizePixels> + <ImageFileExtension>jpg</ImageFileExtension> + <ImageTileService> + <ServerUrl>http://worldwind25.arc.nasa.gov/tile/tile.aspx</ServerUrl> + <DataSetName>104</DataSetName> + <ServerLogoFilePath>Data\Icons\Interface\usgs.png</ServerLogoFilePath> + </ImageTileService> + </ImageAccessor> + <ExtendedInformation> + <ToolBarImage>Data\Icons\Interface\usgs-urban-area.png</ToolBarImage> + </ExtendedInformation> + </QuadTileSet> + </ChildLayerSet> </LayerSet> Modified: branches/ammianus/capabilities_1_1_1/capabilities_1_1_1.csproj =================================================================== --- branches/ammianus/capabilities_1_1_1/capabilities_1_1_1.csproj 2009-07-17 09:19:37 UTC (rev 4074) +++ branches/ammianus/capabilities_1_1_1/capabilities_1_1_1.csproj 2009-07-17 09:27:23 UTC (rev 4075) @... [truncated message content] |
From: <amm...@us...> - 2009-07-17 09:19:44
|
Revision: 4074 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4074&view=rev Author: ammianus Date: 2009-07-17 09:19:37 +0000 (Fri, 17 Jul 2009) Log Message: ----------- Branch for ammianus changes Added Paths: ----------- branches/ammianus/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-03-20 01:23:59
|
Revision: 4073 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4073&view=rev Author: joearmbruster Date: 2009-03-20 01:23:45 +0000 (Fri, 20 Mar 2009) Log Message: ----------- renamed MainApplication interface to IMainApplication moved the Config class since there are shared paths between the plugins sdk and worldwind itself settings now point to the users local application data path, so log files, xml configuration files and cache are all stored there (even in Debug!) it would be easy to if debug this to point to wherever the exe is located for debug purposes but for now i'm leaving it this way Modified Paths: -------------- branches/josepharmbruster/WorldWind/PluginEngine/PluginEngine.csproj branches/josepharmbruster/WorldWind/PluginSDK/SettingsBase.cs branches/josepharmbruster/WorldWind/PluginSDK/WorldWindSettings.cs branches/josepharmbruster/WorldWind/Utilities/Log.cs branches/josepharmbruster/WorldWind/Utilities/Utilities.csproj branches/josepharmbruster/WorldWind/WorldWind/AboutDialog.cs branches/josepharmbruster/WorldWind/WorldWind/GotoDialog.cs branches/josepharmbruster/WorldWind/WorldWind/PathMaker.cs branches/josepharmbruster/WorldWind/WorldWind/WMSBrowser.cs branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj branches/josepharmbruster/WorldWind/WorldWind/WorldWindMain.cs Added Paths: ----------- branches/josepharmbruster/WorldWind/PluginEngine/IMainApplication.cs branches/josepharmbruster/WorldWind/Utilities/Config.cs Removed Paths: ------------- branches/josepharmbruster/WorldWind/PluginEngine/MainApplication.cs branches/josepharmbruster/WorldWind/WorldWind/Config.cs Copied: branches/josepharmbruster/WorldWind/PluginEngine/IMainApplication.cs (from rev 4068, branches/josepharmbruster/WorldWind/PluginEngine/MainApplication.cs) =================================================================== --- branches/josepharmbruster/WorldWind/PluginEngine/IMainApplication.cs (rev 0) +++ branches/josepharmbruster/WorldWind/PluginEngine/IMainApplication.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Text; +using System.Windows.Forms; + +namespace WorldWind +{ + public interface IMainApplication + { + WorldWind.WorldWindow WorldWindow { get; } + WorldWind.WorldWindSettings Settings { get; } + + float VerticalExaggeration { get; set; } + MainMenu MainMenu { get; } + MenuItem ToolsMenu { get; } + MenuItem ViewMenu { get; } + MenuItem PluginsMenu { get; } + string[] CommandLineArguments { get; } + string Release { get; } + string DirectoryPath { get; } + void BrowseTo(string url); + void QuickInstall(string path); + FormWindowState WindowState { get; set;} + System.Drawing.Size ClientSize { get; set;} + RightToLeft RightToLeft { get; } + Point Location { get; set; } + Size Size { get; set; } + Form ParentForm { get; } + void SetViewPosition(double degreesLatitude, double degreesLongitude, double metersElevation); + } +} Property changes on: branches/josepharmbruster/WorldWind/PluginEngine/IMainApplication.cs ___________________________________________________________________ Added: svn:mergeinfo + Deleted: branches/josepharmbruster/WorldWind/PluginEngine/MainApplication.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginEngine/MainApplication.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/PluginEngine/MainApplication.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Text; -using System.Windows.Forms; - -namespace WorldWind -{ - public interface IMainApplication - { - WorldWind.WorldWindow WorldWindow { get; } - WorldWind.WorldWindSettings Settings { get; } - - float VerticalExaggeration { get; set; } - MainMenu MainMenu { get; } - MenuItem ToolsMenu { get; } - MenuItem ViewMenu { get; } - MenuItem PluginsMenu { get; } - string[] CommandLineArguments { get; } - string Release { get; } - string DirectoryPath { get; } - void BrowseTo(string url); - void QuickInstall(string path); - FormWindowState WindowState { get; set;} - System.Drawing.Size ClientSize { get; set;} - RightToLeft RightToLeft { get; } - Point Location { get; set; } - Size Size { get; set; } - Form ParentForm { get; } - void SetViewPosition(double degreesLatitude, double degreesLongitude, double metersElevation); - } -} Modified: branches/josepharmbruster/WorldWind/PluginEngine/PluginEngine.csproj =================================================================== --- branches/josepharmbruster/WorldWind/PluginEngine/PluginEngine.csproj 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/PluginEngine/PluginEngine.csproj 2009-03-20 01:23:45 UTC (rev 4073) @@ -38,7 +38,7 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> - <Compile Include="MainApplication.cs" /> + <Compile Include="IMainApplication.cs" /> <Compile Include="NativeMethods.cs" /> <Compile Include="Plugin.cs" /> <Compile Include="PluginCompiler.cs" /> Modified: branches/josepharmbruster/WorldWind/PluginSDK/SettingsBase.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginSDK/SettingsBase.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/PluginSDK/SettingsBase.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -37,35 +37,6 @@ } - // get the default location, given type of location - public static string DefaultLocation(LocationType locationType) - { - string directory; - - switch(locationType) - { - case LocationType.UserLocal: - // Example: @"C:\Documents and Settings\<user>\Local Settings\Application Data\NASA\NASA World Wind\1.3.3.11250" - return Application.LocalUserAppDataPath; - - case LocationType.UserCommon: - // Example: @"C:\Documents and Settings\All Users\Application Data\NASA\NASA World Wind\1.3.3.11250" - return Application.CommonAppDataPath; - - case LocationType.Application: - // Example: @"C:\Program Files\NASA\World Wind\" - return Application.StartupPath; - - default: - // fall through to regular (roaming) user - case LocationType.User: - // Example: @"C:\Documents and Settings\<user>\Application Data\NASA\World Wind\1.3.3" - directory = Log.DefaultSettingsDirectory(); - Directory.CreateDirectory(directory); - return directory; - } - } - // Return the default filename (without path) to be used when saving // this class's data(e.g. via serialization). // Always add the ".xml" file extension. @@ -164,7 +135,7 @@ // Load settings from specified location using specified name public static SettingsBase Load(SettingsBase defaultSettings, LocationType locationType, string name) { - string fileName = Path.Combine(DefaultLocation(locationType), name); + string fileName = Path.Combine(Utility.Config.SettingsPath, name); return Load(defaultSettings, fileName); } Modified: branches/josepharmbruster/WorldWind/PluginSDK/WorldWindSettings.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginSDK/WorldWindSettings.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/PluginSDK/WorldWindSettings.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -124,7 +124,7 @@ get { if (!Path.IsPathRooted(cachePath)) - return Path.Combine( WorldWindDirectory, cachePath); + return Path.Combine( Utility.Config.SettingsPath, cachePath); return cachePath; } set Copied: branches/josepharmbruster/WorldWind/Utilities/Config.cs (from rev 4072, branches/josepharmbruster/WorldWind/WorldWind/Config.cs) =================================================================== --- branches/josepharmbruster/WorldWind/Utilities/Config.cs (rev 0) +++ branches/josepharmbruster/WorldWind/Utilities/Config.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -0,0 +1,56 @@ +using System; +using System.IO; +using System.Windows.Forms; + +namespace Utility +{ + /// <summary> + /// Container to store readonly constants that may be used in multiple + /// places throughout the code. These should be readonly types that + /// are not intended to be user configurable. + /// </summary> + public sealed class Config + { + /// <summary> + /// URL of the NASA WorldWind website + /// </summary> + public static readonly string WebsiteUrl = "http://worldwind.arc.nasa.gov/"; + + /// <summary> + /// URL of the NASA WorldWind credits website + /// </summary> + public static readonly string CreditsWebsiteUrl = "http://worldwind.arc.nasa.gov/credits.html"; + + /// <summary> + /// Executable path of WorldWind + /// </summary> + public static readonly string DirectoryPath = Path.GetDirectoryName(Application.ExecutablePath); + + /// <summary> + /// Root path of WorldWind plugins + /// </summary> + public static readonly string PluginsPath = Path.Combine(DirectoryPath, "Plugins"); + + /// <summary> + /// User specific Settings path of WorldWind + /// TODO(joe): make this a configurable setting + /// </summary> + public static readonly string SettingsPath = Application.LocalUserAppDataPath; + + /// <summary> + /// Application version of WorldWind + /// </summary> + public static readonly Version ver = new Version(Application.ProductVersion); + + /// <summary> + /// Application version string + /// </summary> + public static string Release + { + get + { + return string.Format("{0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision); + } + } + } +} Property changes on: branches/josepharmbruster/WorldWind/Utilities/Config.cs ___________________________________________________________________ Added: svn:mergeinfo + Modified: branches/josepharmbruster/WorldWind/Utilities/Log.cs =================================================================== --- branches/josepharmbruster/WorldWind/Utilities/Log.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/Utilities/Log.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -74,18 +74,9 @@ { // Example for Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData): // @"C:\Documents and Settings\<user>\Application Data" - return Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + DefaultSettingsDirectorySuffix(); + return Application.LocalUserAppDataPath; } - // Return the program-specifc part of the full default directory path to be used - // for storing settings files, which is also where logfiles will be stored. - public static string DefaultSettingsDirectorySuffix() - { - // Application.ProductName is set by AssemblyProduct in \WorldWind\AssembyInfo.cs - Version ver = new Version(Application.ProductVersion); - return string.Format(@"\{0}\{1}\{2}.{3}.{4}.{5}", Application.CompanyName, Application.ProductName, ver.Major, ver.Minor, ver.Build, ver.Revision); - } - public static void Write(string category, string message) { Write(Levels.Error, category, message); Modified: branches/josepharmbruster/WorldWind/Utilities/Utilities.csproj =================================================================== --- branches/josepharmbruster/WorldWind/Utilities/Utilities.csproj 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/Utilities/Utilities.csproj 2009-03-20 01:23:45 UTC (rev 4073) @@ -95,6 +95,7 @@ <Compile Include="BindingsCheck.cs"> <SubType>Code</SubType> </Compile> + <Compile Include="Config.cs" /> <Compile Include="DataProtection.cs"> <SubType>Code</SubType> </Compile> Modified: branches/josepharmbruster/WorldWind/WorldWind/AboutDialog.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/AboutDialog.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/WorldWind/AboutDialog.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -31,7 +31,7 @@ { InitializeComponent(); - this.labelVersionNumber.Text = WorldWind.Config.Release; + this.labelVersionNumber.Text = Utility.Config.Release; this.labelWorldWindowVersionNumber.Text = ww.ProductVersion; this.pictureBox.SizeMode = PictureBoxSizeMode.StretchImage; @@ -183,13 +183,13 @@ private void pictureBox_Click(object sender, System.EventArgs e) { IMainApplication mainApplication = (IMainApplication)this.Owner; - mainApplication.BrowseTo(WorldWind.Config.WebsiteUrl); + mainApplication.BrowseTo(Utility.Config.WebsiteUrl); } private void buttonCredits_Click(object sender, System.EventArgs e) { IMainApplication mainApplication = (IMainApplication)this.Owner; - mainApplication.BrowseTo(WorldWind.Config.CreditsWebsiteUrl); + mainApplication.BrowseTo(Utility.Config.CreditsWebsiteUrl); } /// <summary> Deleted: branches/josepharmbruster/WorldWind/WorldWind/Config.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/Config.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/WorldWind/Config.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -1,50 +0,0 @@ -using System; -using System.IO; -using System.Windows.Forms; - -namespace WorldWind -{ - /// <summary> - /// Container to store readonly constants that may be used in multiple - /// places throughout the code. These should be readonly types that - /// are not intended to be user configurable. - /// </summary> - public sealed class Config - { - /// <summary> - /// URL of the NASA WorldWind website - /// </summary> - public static readonly string WebsiteUrl = "http://worldwind.arc.nasa.gov/"; - - /// <summary> - /// URL of the NASA WorldWind credits website - /// </summary> - public static readonly string CreditsWebsiteUrl = "http://worldwind.arc.nasa.gov/credits.html"; - - /// <summary> - /// Executable path of WorldWind - /// </summary> - public static readonly string DirectoryPath = Path.GetDirectoryName(Application.ExecutablePath); - - /// <summary> - /// Root path of WorldWind plugins - /// </summary> - public static readonly string PluginsPath = Path.Combine(DirectoryPath, "Plugins"); - - /// <summary> - /// Application version of WorldWind - /// </summary> - public static readonly Version ver = new Version(Application.ProductVersion); - - /// <summary> - /// Application version string - /// </summary> - public static string Release - { - get - { - return string.Format("{0}.{1}.{2}.{3}", ver.Major, ver.Minor, ver.Build, ver.Revision); - } - } - } -} Modified: branches/josepharmbruster/WorldWind/WorldWind/GotoDialog.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/GotoDialog.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/WorldWind/GotoDialog.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -446,7 +446,7 @@ LayerSet.Type_TiledPlacenameSet2 tpns = curLayerSet.GetTiledPlacenameSetAt(i); // compute full path to wpl file - WplIndex constructor needs this - string wplFullPath = Path.Combine(WorldWind.Config.DirectoryPath, tpns.PlacenameListFilePath.Value); + string wplFullPath = Path.Combine(Utility.Config.DirectoryPath, tpns.PlacenameListFilePath.Value); // build an index descriptor (does not create or load the index yet) WplIndex idx = new WplIndex(tpns, wplFullPath); Modified: branches/josepharmbruster/WorldWind/WorldWind/PathMaker.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PathMaker.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/WorldWind/PathMaker.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -29,7 +29,7 @@ private System.Windows.Forms.Button buttonStop; private System.Windows.Forms.Button buttonSave; private WorldWindow worldWindow; - string saveDirPath = Path.Combine(WorldWind.Config.DirectoryPath, Path.Combine("Data","User")); + string saveDirPath = Path.Combine(Utility.Config.DirectoryPath, Path.Combine("Data","User")); private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; private System.Windows.Forms.TextBox textBoxName; Modified: branches/josepharmbruster/WorldWind/WorldWind/WMSBrowser.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WMSBrowser.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/WorldWind/WMSBrowser.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -107,7 +107,7 @@ wms_config_filepath = Path.Combine( Path.Combine(_worldWindSettings.ConfigPath, "Earth"), Path.Combine("Tools", "wms_server_list.xml")); - saved_dirpath = Path.Combine(WorldWind.Config.DirectoryPath, + saved_dirpath = Path.Combine(Utility.Config.DirectoryPath, Path.Combine(_worldWindSettings.CachePath, "WMS Browser")); InitializeComponent(); Modified: branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -676,7 +676,7 @@ { get { - return WorldWind.Config.DirectoryPath; + return Utility.Config.DirectoryPath; } } @@ -723,7 +723,7 @@ { get { - return WorldWind.Config.Release; + return Utility.Config.Release; } } @@ -1542,7 +1542,7 @@ { Log.Write(Log.Levels.Debug, "CONF", "initializing plugin compiler..."); - compiler = new PluginCompiler(this, WorldWind.Config.PluginsPath); + compiler = new PluginCompiler(this, Utility.Config.PluginsPath); compiler.FindPlugins(Assembly.GetExecutingAssembly()); compiler.FindPlugins(); compiler.LoadStartupPlugins(); @@ -1565,23 +1565,23 @@ { /* this.gotoDialog = new GotoDialog(this.worldWindow, this.currentWorld, Settings.ConfigPath); this.gotoDialog.Icon = this.Icon; - this.worldWindow.MenuBar.AddToolsMenuButton( new WindowsControlMenuButton( "Place Finder", WorldWind.Config.DirectoryPath + "\\Data\\Icons\\Interface\\search.png", this.gotoDialog)); + this.worldWindow.MenuBar.AddToolsMenuButton( new WindowsControlMenuButton( "Place Finder", Utility.Config.DirectoryPath + "\\Data\\Icons\\Interface\\search.png", this.gotoDialog)); */ if(this.worldWindow.CurrentWorld.IsEarth) { this.rapidFireModisManager = new RapidFireModisManager(this.worldWindow, this.Settings); this.rapidFireModisManager.Icon = this.Icon; - this.worldWindow.MenuBar.AddToolsMenuButton( new WindowsControlMenuButton( "Rapid Fire MODIS", WorldWind.Config.DirectoryPath + "\\Data\\Icons\\Interface\\modis.png", this.rapidFireModisManager) ); + this.worldWindow.MenuBar.AddToolsMenuButton( new WindowsControlMenuButton( "Rapid Fire MODIS", Utility.Config.DirectoryPath + "\\Data\\Icons\\Interface\\modis.png", this.rapidFireModisManager) ); } this.wmsBrowser = new WMSBrowser(this.worldWindow, this.Settings); this.wmsBrowser.Icon = this.Icon; - this.worldWindow.MenuBar.AddToolsMenuButton( new WindowsControlMenuButton( "WMS Browser", WorldWind.Config.DirectoryPath + "\\Data\\Icons\\Interface\\wms.png", this.wmsBrowser )); + this.worldWindow.MenuBar.AddToolsMenuButton( new WindowsControlMenuButton( "WMS Browser", Utility.Config.DirectoryPath + "\\Data\\Icons\\Interface\\wms.png", this.wmsBrowser )); if(this.worldWindow.CurrentWorld.IsEarth) { this.animatedEarthMananger = new AnimatedEarthManager(this.worldWindow); this.animatedEarthMananger.Icon = this.Icon; - this.worldWindow.MenuBar.AddToolsMenuButton( new WindowsControlMenuButton( "Scientific Visualization Studio", WorldWind.Config.DirectoryPath + "\\Data\\Icons\\Interface\\svs2.png", this.animatedEarthMananger)); + this.worldWindow.MenuBar.AddToolsMenuButton( new WindowsControlMenuButton( "Scientific Visualization Studio", Utility.Config.DirectoryPath + "\\Data\\Icons\\Interface\\svs2.png", this.animatedEarthMananger)); } } @@ -1778,7 +1778,7 @@ private void menuItemWebsite_Click(object sender, System.EventArgs e) { - BrowseTo( WorldWind.Config.WebsiteUrl ); + BrowseTo( Utility.Config.WebsiteUrl ); } private void menuItemAbout_Click(object sender, System.EventArgs e) @@ -1797,7 +1797,7 @@ private void menuItemKeyChart_Click(object sender, System.EventArgs e) { // changed by Dave Mays 9/30/2004 (remove if you like - this is in lieu of CVS) - string keyChartPath = Path.Combine(WorldWind.Config.DirectoryPath, "keychart.html"); + string keyChartPath = Path.Combine(Utility.Config.DirectoryPath, "keychart.html"); if (File.Exists( keyChartPath )) BrowseTo( keyChartPath ); else @@ -1809,7 +1809,7 @@ /// </summary> private void menuItemWalkthrough_Click(object sender, System.EventArgs e) { - string TourPath = Path.Combine(WorldWind.Config.DirectoryPath, @"Data\Documentation\WW_Tour.exe"); + string TourPath = Path.Combine(Utility.Config.DirectoryPath, @"Data\Documentation\WW_Tour.exe"); if (File.Exists(TourPath)) System.Diagnostics.Process.Start(TourPath); else @@ -2180,7 +2180,7 @@ OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "XML Script Files (*.xml)|*.xml"; dialog.CheckFileExists = true; - dialog.InitialDirectory = Path.Combine(WorldWind.Config.DirectoryPath, "Scripts"); + dialog.InitialDirectory = Path.Combine(Utility.Config.DirectoryPath, "Scripts"); if (dialog.ShowDialog() == DialogResult.OK) { @@ -2374,7 +2374,7 @@ if (zipFilePath.EndsWith("xml")) { FileInfo source = new FileInfo(zipFilePath); - string targetLocation = WorldWind.Config.DirectoryPath + Path.DirectorySeparatorChar + "Config" + Path.DirectorySeparatorChar + WorldWindow.CurrentWorld.Name + Path.DirectorySeparatorChar + source.Name; + string targetLocation = Utility.Config.DirectoryPath + Path.DirectorySeparatorChar + "Config" + Path.DirectorySeparatorChar + WorldWindow.CurrentWorld.Name + Path.DirectorySeparatorChar + source.Name; FileInfo target = new FileInfo(targetLocation); if (target.Exists) target.Delete(); @@ -2393,7 +2393,7 @@ try { FastZip fz = new FastZip(); - fz.ExtractZip(zipFilePath, WorldWind.Config.DirectoryPath, ""); + fz.ExtractZip(zipFilePath, Utility.Config.DirectoryPath, ""); } catch (Exception ex) @@ -2404,7 +2404,7 @@ try { - string ManifestFile = Path.Combine(WorldWind.Config.DirectoryPath, "manifest.txt"); + string ManifestFile = Path.Combine(Utility.Config.DirectoryPath, "manifest.txt"); if (File.Exists(ManifestFile)) { StreamReader fs = new StreamReader(ManifestFile); @@ -2418,7 +2418,7 @@ if (line.StartsWith("#") || line.StartsWith("//") || line.StartsWith("\t")) continue; - FileInfo fi = new FileInfo(WorldWind.Config.DirectoryPath + Path.DirectorySeparatorChar + line); + FileInfo fi = new FileInfo(Utility.Config.DirectoryPath + Path.DirectorySeparatorChar + line); if (fi.Exists && fi.Extension == ".xml") { LoadAddon(fi.FullName); @@ -2434,7 +2434,7 @@ } } fs.Close(); - File.Delete(Path.Combine(WorldWind.Config.DirectoryPath, "manifest.txt")); + File.Delete(Path.Combine(Utility.Config.DirectoryPath, "manifest.txt")); } else { @@ -2544,7 +2544,7 @@ @"{0}\{1}\___DownloadedWMSImages.xml", _settings.ConfigPath, "");//this.currentWorld.LayerDirectory.Value); string texturePath = string.Format(CultureInfo.InvariantCulture, - @"{0}\Data\DownloadedWMSImages\{1}", WorldWind.Config.DirectoryPath, System.DateTime.Now.ToFileTimeUtc()); + @"{0}\Data\DownloadedWMSImages\{1}", Utility.Config.DirectoryPath, System.DateTime.Now.ToFileTimeUtc()); if(!File.Exists(path)) { @@ -2651,7 +2651,7 @@ { try { - _settings = (WorldWindSettings) SettingsBase.Load(_settings, SettingsBase.LocationType.User); + _settings = (WorldWindSettings) SettingsBase.Load(_settings, SettingsBase.LocationType.UserLocal); if(!File.Exists(_settings.FileName)) { @@ -2977,7 +2977,7 @@ { if(ro.MetaData.Contains("ToolBarImagePath")) { - string imagePath = Path.Combine(WorldWind.Config.DirectoryPath, (string)ro.MetaData["ToolBarImagePath"]); + string imagePath = Path.Combine(Utility.Config.DirectoryPath, (string)ro.MetaData["ToolBarImagePath"]); if(File.Exists(imagePath)) { LayerShortcutMenuButton button = new LayerShortcutMenuButton(imagePath, ro); @@ -3124,7 +3124,7 @@ { imagePath = curImageLayerType.TexturePath.Value; if(!Path.IsPathRooted(imagePath)) - imagePath = Path.Combine(WorldWind.Config.DirectoryPath, imagePath); + imagePath = Path.Combine(Utility.Config.DirectoryPath, imagePath); } int transparentColor = 0; @@ -3157,7 +3157,7 @@ newImageLayer.LegendImagePath = curImageLayerType.LegendImagePath.Value; if(curImageLayerType.HasExtendedInformation() && curImageLayerType.ExtendedInformation.HasToolBarImage()) - newImageLayer.MetaData.Add("ToolBarImagePath", Path.Combine(WorldWind.Config.DirectoryPath, curImageLayerType.ExtendedInformation.ToolBarImage.Value)); + newImageLayer.MetaData.Add("ToolBarImagePath", Path.Combine(Utility.Config.DirectoryPath, curImageLayerType.ExtendedInformation.ToolBarImage.Value)); rol.Add(newImageLayer); } @@ -3176,7 +3176,7 @@ { permDirPath = curQtsType.ImageAccessor.PermanantDirectory.Value; if(!Path.IsPathRooted(permDirPath)) - permDirPath = Path.Combine( WorldWind.Config.DirectoryPath, permDirPath ); + permDirPath = Path.Combine( Utility.Config.DirectoryPath, permDirPath ); } string cacheDirPath = Path.Combine(worldWindow.Cache.CacheDirectory, @@ -3215,7 +3215,7 @@ if(curQtsType.ImageAccessor.WMSAccessor.HasServerLogoFilePath()) { - string logoPath = Path.Combine(WorldWind.Config.DirectoryPath, curQtsType.ImageAccessor.WMSAccessor.ServerLogoFilePath.Value); + string logoPath = Path.Combine(Utility.Config.DirectoryPath, curQtsType.ImageAccessor.WMSAccessor.ServerLogoFilePath.Value); if(File.Exists(logoPath)) wmsLayerAccessor.LogoFilePath = logoPath; } @@ -3233,7 +3233,7 @@ { string logoPath = null; if(curQtsType.ImageAccessor.ImageTileService.HasServerLogoFilePath()) - logoPath = Path.Combine( WorldWind.Config.DirectoryPath, curQtsType.ImageAccessor.ImageTileService.ServerLogoFilePath.Value); + logoPath = Path.Combine( Utility.Config.DirectoryPath, curQtsType.ImageAccessor.ImageTileService.ServerLogoFilePath.Value); ImageTileService imageTileService = new ImageTileService( curQtsType.ImageAccessor.ImageTileService.DataSetName.Value, @@ -3253,7 +3253,7 @@ { string dupePath = curQtsType.ImageAccessor.DuplicateTilePath.Value; if(!Path.IsPathRooted(dupePath)) - dupePath = Path.Combine(WorldWind.Config.DirectoryPath, dupePath); + dupePath = Path.Combine(Utility.Config.DirectoryPath, dupePath); imageAccessor = new ImageAccessor( permDirPath, curQtsType.ImageAccessor.TextureSizePixels.Value, @@ -3297,7 +3297,7 @@ { try { - string fileName = Path.Combine(WorldWind.Config.DirectoryPath, curQtsType.ExtendedInformation.ToolBarImage.Value); + string fileName = Path.Combine(Utility.Config.DirectoryPath, curQtsType.ExtendedInformation.ToolBarImage.Value); if (File.Exists(fileName)) qts.MetaData.Add("ToolBarImagePath", fileName); } @@ -3322,7 +3322,7 @@ curWorld, newPathList.MinDisplayAltitude.DoubleValue(), newPathList.MaxDisplayAltitude.DoubleValue(), - WorldWind.Config.DirectoryPath + "//" + newPathList.PathsDirectory.Value, + Utility.Config.DirectoryPath + "//" + newPathList.PathsDirectory.Value, newPathList.DistanceAboveSurface.DoubleValue(), (newPathList.HasWinColorName() ? System.Drawing.Color.FromName(newPathList.WinColorName.Value) : System.Drawing.Color.FromArgb(newPathList.RGBColor.Red.Value, newPathList.RGBColor.Green.Value, newPathList.RGBColor.Blue.Value)), curWorld.TerrainAccessor); @@ -3330,7 +3330,7 @@ pl.IsOn = newPathList.ShowAtStartup.Value; if(newPathList.HasExtendedInformation() && newPathList.ExtendedInformation.HasToolBarImage()) - pl.MetaData.Add("ToolBarImagePath", Path.Combine(WorldWind.Config.DirectoryPath, newPathList.ExtendedInformation.ToolBarImage.Value)); + pl.MetaData.Add("ToolBarImagePath", Path.Combine(Utility.Config.DirectoryPath, newPathList.ExtendedInformation.ToolBarImage.Value)); rol.Add(pl); } @@ -3359,7 +3359,7 @@ sp.IsOn = newShapefileLayer.ShowAtStartup.BoolValue(); if(newShapefileLayer.HasExtendedInformation() && newShapefileLayer.ExtendedInformation.HasToolBarImage()) - sp.MetaData.Add("ToolBarImagePath", Path.Combine(WorldWind.Config.DirectoryPath, newShapefileLayer.ExtendedInformation.ToolBarImage.Value)); + sp.MetaData.Add("ToolBarImagePath", Path.Combine(Utility.Config.DirectoryPath, newShapefileLayer.ExtendedInformation.ToolBarImage.Value)); rol.Add(sp); } @@ -3376,7 +3376,7 @@ string textureFullPath = newIcon.TextureFilePath.Value; if (textureFullPath.Length > 0 && !Path.IsPathRooted(textureFullPath)) // Use absolute path to icon image - textureFullPath = Path.Combine( WorldWind.Config.DirectoryPath, newIcon.TextureFilePath.Value ); + textureFullPath = Path.Combine( Utility.Config.DirectoryPath, newIcon.TextureFilePath.Value ); WorldWind.Renderable.Icon ic = new WorldWind.Renderable.Icon( newIcon.Name.Value, @@ -3409,7 +3409,7 @@ string filePath = newPlacenames.PlacenameListFilePath.Value; if(!Path.IsPathRooted(filePath)) - filePath = Path.Combine(WorldWind.Config.DirectoryPath, filePath); + filePath = Path.Combine(Utility.Config.DirectoryPath, filePath); Microsoft.DirectX.Direct3D.FontDescription fd = GetLayerFontDescription(newPlacenames.DisplayFont); TiledPlacenameSet tps = new TiledPlacenameSet( @@ -3424,7 +3424,7 @@ (newPlacenames.HasIconFilePath() ? newPlacenames.IconFilePath.Value : null)); if(newPlacenames.HasExtendedInformation() && newPlacenames.ExtendedInformation.HasToolBarImage()) - tps.MetaData.Add("ToolBarImagePath", Path.Combine(WorldWind.Config.DirectoryPath, newPlacenames.ExtendedInformation.ToolBarImage.Value)); + tps.MetaData.Add("ToolBarImagePath", Path.Combine(Utility.Config.DirectoryPath, newPlacenames.ExtendedInformation.ToolBarImage.Value)); tps.IsOn = newPlacenames.ShowAtStartup.Value; rol.Add(tps); Modified: branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-03-20 01:23:45 UTC (rev 4073) @@ -211,7 +211,6 @@ <SubType>Code</SubType> </Compile> <Compile Include="CommandLine.cs" /> - <Compile Include="Config.cs" /> <Compile Include="GotoDialog.cs"> <SubType>Form</SubType> </Compile> Modified: branches/josepharmbruster/WorldWind/WorldWind/WorldWindMain.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWindMain.cs 2009-03-20 00:14:10 UTC (rev 4072) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWindMain.cs 2009-03-20 01:23:45 UTC (rev 4073) @@ -86,12 +86,8 @@ { Log.Write( e.Exception ); - //HACK - if (e.Exception is NullReferenceException) - return; - //TODO: Nice dialog with button to show debug info (stack trace) - MessageBox.Show( e.Exception.Message, "An error has occurred", MessageBoxButtons.OK, MessageBoxIcon.Stop ); + MessageBox.Show( e.Exception.Message, "Thread Exception", MessageBoxButtons.OK, MessageBoxIcon.Stop ); } private static WorldWindSettings _settings = new WorldWindSettings(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-03-20 01:22:22
|
Revision: 4072 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4072&view=rev Author: joearmbruster Date: 2009-03-20 00:14:10 +0000 (Fri, 20 Mar 2009) Log Message: ----------- making variable reference local instead of absolute Modified Paths: -------------- branches/josepharmbruster/WorldWind/WorldWind/Config.cs Modified: branches/josepharmbruster/WorldWind/WorldWind/Config.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/Config.cs 2009-03-15 20:57:17 UTC (rev 4071) +++ branches/josepharmbruster/WorldWind/WorldWind/Config.cs 2009-03-20 00:14:10 UTC (rev 4072) @@ -29,7 +29,7 @@ /// <summary> /// Root path of WorldWind plugins /// </summary> - public static readonly string PluginsPath = Path.Combine(WorldWind.Config.DirectoryPath, "Plugins"); + public static readonly string PluginsPath = Path.Combine(DirectoryPath, "Plugins"); /// <summary> /// Application version of WorldWind This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-03-15 20:57:22
|
Revision: 4071 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4071&view=rev Author: joearmbruster Date: 2009-03-15 20:57:17 +0000 (Sun, 15 Mar 2009) Log Message: ----------- attempting to split main from the worldwind class in an effort to clean up the main worldwind class note: there are still some things going on in WorldWindMain that do not seem appropriate (like the null reference exception suppression hack) Modified Paths: -------------- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj Added Paths: ----------- branches/josepharmbruster/WorldWind/WorldWind/WorldWindMain.cs Modified: branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs 2009-03-13 01:58:48 UTC (rev 4070) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs 2009-03-15 20:57:17 UTC (rev 4071) @@ -409,7 +409,7 @@ #endregion #region Other misc variables - private static WorldWindSettings _settings = new WorldWindSettings(); + private WorldWindSettings _settings; private static WorldWindUri worldWindUri; private CommandLineParameters _commandLineParameters; private WorldWindow worldWindow; @@ -435,81 +435,13 @@ return _settings; } } - /// <summary> - /// The main entry point. Parses arguments, runs the MainApplication and saves settings - /// </summary> - /// <param name="commandLineArguments">The arguments to parse</param> - [STAThread] - static void Main(string[] commandLineArguments) - { - try - { - // If World Wind is already running, pass any commandline - // arguments from this instance, and quit. - IntPtr handle = GetWWHandle(); - if (!System.IntPtr.Zero.Equals(handle)) - { - if(commandLineArguments.Length>0) - NativeMethods.SendArgs( handle, string.Join(Environment.NewLine,commandLineArguments) ); - return; - } - // abort if 50 bindings problem present and user opts to go to the download page - if(BindingsCheck.FiftyBindingsWarning()) return; - - // Name the main thread. - System.Threading.Thread.CurrentThread.Name = "Main Thread"; - - Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); - - MainApplication app = new MainApplication(commandLineArguments); - Application.Idle += new EventHandler(app.WorldWindow.OnApplicationIdle); - Application.Run(app); - - // Save World settings - World.Settings.Save(); - - // Encrypt encoded user credentials before saving program settings - DataProtector dp = new DataProtector(DataProtector.Store.USE_USER_STORE); - _settings.ProxyUsername = dp.TransparentEncrypt(_settings.ProxyUsername); - _settings.ProxyPassword = dp.TransparentEncrypt(_settings.ProxyPassword); - - // Save program settings - _settings.Save(); - } - catch (Exception exception) - { - try - { - Log.Write(exception); - } - catch - { - // ignore errors while trying to write the error to the log - } - finally - { - string errorMessages = "The following error(s) occurred:"; - do - { - errorMessages += Environment.NewLine + exception.Message; - exception = exception.InnerException; - } - while(exception != null); - - new ErrorDisplay(errorMessages).ShowDialog(); - Environment.Exit(0); - } - } - - } - - /// <summary> /// Initializes a new instance of the <see cref= "T:WorldWind.MainApplication"/> class. /// </summary> - public MainApplication(string[] commandLineArguments) + public MainApplication(string[] commandLineArguments, WorldWindSettings settings) { + _settings = settings; ParseCommandLineArguments(commandLineArguments); if (_commandLineParameters.CurrentSettingsDirectory == null) @@ -2303,14 +2235,6 @@ #endregion #region Inter-process messaging methods - /// <summary> - /// Returns the handle to currently running World Wind's window. - /// </summary> - /// <returns></returns> - public static IntPtr GetWWHandle() - { - return NativeMethods.FindWindow(null, "NASA World Wind"); - } public static string[] StringFromCopyData( Message m ) { @@ -2723,7 +2647,7 @@ /// <summary> /// Deserializes and optionally decrypts settings /// </summary> - private static void LoadSettings() + private void LoadSettings() { try { @@ -2775,7 +2699,7 @@ /// <summary> /// Deserializes and optionally decrypts settings, using specified location /// </summary> - private static void LoadSettings(string directory) + private void LoadSettings(string directory) { try { @@ -3549,21 +3473,7 @@ return fd; } - /// <summary> - /// Occurs when an un-trapped thread exception is thrown, typically in UI event handlers. - /// </summary> - private static void Application_ThreadException( object sender, System.Threading.ThreadExceptionEventArgs e ) - { - Log.Write( e.Exception ); - //HACK - if (e.Exception is NullReferenceException) - return; - - //TODO: Nice dialog with button to show debug info (stack trace) - MessageBox.Show( e.Exception.Message, "An error has occurred", MessageBoxButtons.OK, MessageBoxIcon.Stop ); - } - /// <summary> /// Handles key up events. /// </summary> Modified: branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-03-13 01:58:48 UTC (rev 4070) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-03-15 20:57:17 UTC (rev 4071) @@ -218,6 +218,7 @@ <Compile Include="gpx.cs"> <SubType>Code</SubType> </Compile> + <Compile Include="WorldWindMain.cs" /> <Compile Include="NativeMethods.cs"> <SubType>Code</SubType> </Compile> Added: branches/josepharmbruster/WorldWind/WorldWind/WorldWindMain.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWindMain.cs (rev 0) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWindMain.cs 2009-03-15 20:57:17 UTC (rev 4071) @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +using Utility; + +namespace WorldWind +{ + class WorldWindMain + { + /// <summary> + /// The main entry point. Parses arguments, runs the MainApplication and saves settings + /// </summary> + /// <param name="commandLineArguments">The arguments to parse</param> + [STAThread] + static void Main(string[] commandLineArguments) + { + try + { + // If World Wind is already running, pass any commandline + // arguments from this instance, and quit. + IntPtr handle = NativeMethods.FindWindow(null, "NASA World Wind"); + if (!System.IntPtr.Zero.Equals(handle)) + { + if (commandLineArguments.Length > 0) + NativeMethods.SendArgs(handle, string.Join(Environment.NewLine, commandLineArguments)); + return; + } + + // abort if 50 bindings problem present and user opts to go to the download page + if (BindingsCheck.FiftyBindingsWarning()) return; + + // Name the main thread. + System.Threading.Thread.CurrentThread.Name = "Main Thread"; + + Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); + + MainApplication app = new MainApplication(commandLineArguments, _settings); + Application.Idle += new EventHandler(app.WorldWindow.OnApplicationIdle); + Application.Run(app); + + // Save World settings + World.Settings.Save(); + + // Encrypt encoded user credentials before saving program settings + DataProtector dp = new DataProtector(DataProtector.Store.USE_USER_STORE); + _settings.ProxyUsername = dp.TransparentEncrypt(_settings.ProxyUsername); + _settings.ProxyPassword = dp.TransparentEncrypt(_settings.ProxyPassword); + + // Save program settings + _settings.Save(); + } + catch (Exception exception) + { + try + { + Log.Write(exception); + } + catch + { + // ignore errors while trying to write the error to the log + } + finally + { + string errorMessages = "The following error(s) occurred:"; + do + { + errorMessages += Environment.NewLine + exception.Message; + exception = exception.InnerException; + } + while (exception != null); + + new ErrorDisplay(errorMessages).ShowDialog(); + Environment.Exit(0); + } + } + } + + + /// <summary> + /// Occurs when an un-trapped thread exception is thrown, typically in UI event handlers. + /// </summary> + private static void Application_ThreadException( object sender, System.Threading.ThreadExceptionEventArgs e ) + { + Log.Write( e.Exception ); + + //HACK + if (e.Exception is NullReferenceException) + return; + + //TODO: Nice dialog with button to show debug info (stack trace) + MessageBox.Show( e.Exception.Message, "An error has occurred", MessageBoxButtons.OK, MessageBoxIcon.Stop ); + } + + private static WorldWindSettings _settings = new WorldWindSettings(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-03-13 01:21:15
|
Revision: 4069 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4069&view=rev Author: joearmbruster Date: 2009-03-13 01:21:01 +0000 (Fri, 13 Mar 2009) Log Message: ----------- adding missing plugin dialog designer file from rev 4068 Revision Links: -------------- http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4068&view=rev Added Paths: ----------- branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.Designer.cs Added: branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.Designer.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.Designer.cs (rev 0) +++ branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.Designer.cs 2009-03-13 01:21:01 UTC (rev 4069) @@ -0,0 +1,220 @@ +using WorldWind.PluginEngine; + +namespace WorldWind.PluginEngine +{ + partial class PluginDialog + { + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(PluginDialog)); + this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); + this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); + this.buttonLoad = new System.Windows.Forms.Button(); + this.buttonUnload = new System.Windows.Forms.Button(); + this.imageList = new System.Windows.Forms.ImageList(this.components); + this.listView = new WorldWind.PluginEngine.PluginListView(imageList); + this.description = new System.Windows.Forms.TextBox(); + this.webSite = new System.Windows.Forms.LinkLabel(); + this.labelDescription = new System.Windows.Forms.Label(); + this.labelWebSite = new System.Windows.Forms.Label(); + this.labelDeveloper = new System.Windows.Forms.Label(); + this.developer = new System.Windows.Forms.Label(); + this.buttonInstall = new System.Windows.Forms.Button(); + this.buttonUninstall = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // listView + // + this.listView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2}); + this.listView.FullRowSelect = true; + this.listView.GridLines = true; + this.listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView.Location = new System.Drawing.Point(8, 8); + this.listView.Name = "listView"; + this.listView.Size = new System.Drawing.Size(231, 160); + this.listView.TabIndex = 0; + this.listView.View = System.Windows.Forms.View.Details; + this.listView.DoubleClick += new System.EventHandler(this.listView_DoubleClick); + this.listView.SelectedIndexChanged += new System.EventHandler(this.listView_SelectedIndexChanged); + // + // columnHeader1 + // + this.columnHeader1.Text = "Available plugins"; + this.columnHeader1.Width = 163; + // + // columnHeader2 + // + this.columnHeader2.Text = "Startup"; + this.columnHeader2.Width = 47; + // + // buttonLoad + // + this.buttonLoad.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonLoad.Location = new System.Drawing.Point(248, 8); + this.buttonLoad.Name = "buttonLoad"; + this.buttonLoad.TabIndex = 1; + this.buttonLoad.Text = "&Load"; + this.buttonLoad.Click += new System.EventHandler(this.buttonLoad_Click); + // + // buttonUnload + // + this.buttonUnload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonUnload.Location = new System.Drawing.Point(248, 40); + this.buttonUnload.Name = "buttonUnload"; + this.buttonUnload.TabIndex = 2; + this.buttonUnload.Text = "&Unload"; + this.buttonUnload.Click += new System.EventHandler(this.buttonUnload_Click); + // + // imageList + // + this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit; + this.imageList.ImageSize = new System.Drawing.Size(16, 11); + this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream"))); + this.imageList.TransparentColor = System.Drawing.Color.Transparent; + // + // description + // + this.description.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.description.Location = new System.Drawing.Point(24, 195); + this.description.Multiline = true; + this.description.Name = "description"; + this.description.ReadOnly = true; + this.description.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.description.Size = new System.Drawing.Size(288, 48); + this.description.TabIndex = 6; + this.description.Text = ""; + // + // webSite + // + this.webSite.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.webSite.Location = new System.Drawing.Point(24, 312); + this.webSite.Name = "webSite"; + this.webSite.Size = new System.Drawing.Size(288, 16); + this.webSite.TabIndex = 10; + this.webSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.webSite_LinkClicked); + // + // labelDescription + // + this.labelDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelDescription.Location = new System.Drawing.Point(10, 179); + this.labelDescription.Name = "labelDescription"; + this.labelDescription.Size = new System.Drawing.Size(100, 16); + this.labelDescription.TabIndex = 5; + this.labelDescription.Text = "Description:"; + // + // labelWebSite + // + this.labelWebSite.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelWebSite.Location = new System.Drawing.Point(10, 296); + this.labelWebSite.Name = "labelWebSite"; + this.labelWebSite.Size = new System.Drawing.Size(56, 16); + this.labelWebSite.TabIndex = 9; + this.labelWebSite.Text = "Web Site:"; + // + // labelDeveloper + // + this.labelDeveloper.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelDeveloper.Location = new System.Drawing.Point(10, 253); + this.labelDeveloper.Name = "labelDeveloper"; + this.labelDeveloper.Size = new System.Drawing.Size(62, 16); + this.labelDeveloper.TabIndex = 7; + this.labelDeveloper.Text = "Developer:"; + // + // developer + // + this.developer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.developer.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); + this.developer.Location = new System.Drawing.Point(24, 271); + this.developer.Name = "developer"; + this.developer.Size = new System.Drawing.Size(296, 16); + this.developer.TabIndex = 8; + // + // buttonInstall + // + this.buttonInstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonInstall.Location = new System.Drawing.Point(248, 88); + this.buttonInstall.Name = "buttonInstall"; + this.buttonInstall.TabIndex = 3; + this.buttonInstall.Text = "&Install"; + this.buttonInstall.Click += new System.EventHandler(this.buttonInstall_Click); + // + // buttonUninstall + // + this.buttonUninstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonUninstall.Location = new System.Drawing.Point(248, 120); + this.buttonUninstall.Name = "buttonUninstall"; + this.buttonUninstall.TabIndex = 4; + this.buttonUninstall.Text = "&Uninstall"; + this.buttonUninstall.Click += new System.EventHandler(this.buttonUninstall_Click); + // + // PluginDialog + // + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.ClientSize = new System.Drawing.Size(328, 342); + this.Controls.Add(this.buttonUninstall); + this.Controls.Add(this.buttonInstall); + this.Controls.Add(this.developer); + this.Controls.Add(this.labelDeveloper); + this.Controls.Add(this.labelWebSite); + this.Controls.Add(this.labelDescription); + this.Controls.Add(this.webSite); + this.Controls.Add(this.description); + this.Controls.Add(this.buttonUnload); + this.Controls.Add(this.buttonLoad); + this.Controls.Add(this.listView); + this.MinimumSize = new System.Drawing.Size(336, 272); + this.Name = "PluginDialog"; + this.Text = "Plugin Load/Unload"; + this.Load += new System.EventHandler(this.PluginDialog_Load); + this.ResumeLayout(false); + + } + #endregion + + + + private PluginListView listView; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private PluginCompiler compiler; + private System.Windows.Forms.Button buttonLoad; + private System.Windows.Forms.Button buttonUnload; + private System.Windows.Forms.ImageList imageList; + private System.Windows.Forms.TextBox description; + private System.Windows.Forms.LinkLabel webSite; + private System.Windows.Forms.Label labelDescription; + private System.Windows.Forms.Label labelWebSite; + private System.Windows.Forms.Label labelDeveloper; + private System.Windows.Forms.Label developer; + private System.Windows.Forms.Button buttonInstall; + private System.Windows.Forms.Button buttonUninstall; + private System.ComponentModel.IContainer components; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-03-13 01:03:35
|
Revision: 4068 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4068&view=rev Author: joearmbruster Date: 2009-03-13 01:03:16 +0000 (Fri, 13 Mar 2009) Log Message: ----------- Removed the duplicated code that was found in the two pluginengine locations, now it is all implemented in a single place in the PluginEngine Project. This required the MainApplication interface (which I renamed to IMainApplication) to be fully implemented. I implemented what needed to be done to get the plugins working, nothing more or less. This interface should be cleaned a bit and renamed to something more appropriate in the future. The plugin projects now have a reference to the PluginEngine project, not just the PluginSDK, which is not Ideal but ok for the time being. During the course of this effort, most all of the plugins needed to be touched in order to get them working with the IMainApplication interface. Along the way, I fixed quite a few that did not fully implement the unload method. In addition, since I added Config class which has a path to the plugins directory, I removed the hard-coded + "\\Plugins" path manipulations that I found scattered throughout the plugins and opted for Path.Combine. Modified Paths: -------------- branches/josepharmbruster/WorldWind/Collab/jhuapl/Whiteboard/WhiteboardWidget.cs branches/josepharmbruster/WorldWind/DstilePlugin/DstileGUI.csproj branches/josepharmbruster/WorldWind/NavigationPanel/NavigationPanel.csproj branches/josepharmbruster/WorldWind/OgrVectorImporter/OGRVectorImporterPlugin.cs branches/josepharmbruster/WorldWind/OgrVectorImporter/OgrVectorImporter.csproj branches/josepharmbruster/WorldWind/OgrVectorImporter/OgrVectorImporterGUI.cs branches/josepharmbruster/WorldWind/PluginEngine/MainApplication.cs branches/josepharmbruster/WorldWind/PluginEngine/Plugin.cs branches/josepharmbruster/WorldWind/PluginEngine/PluginCompiler.cs branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.cs branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.resx branches/josepharmbruster/WorldWind/PluginEngine/PluginEngine.csproj branches/josepharmbruster/WorldWind/PluginEngine/PluginInfo.cs branches/josepharmbruster/WorldWind/PluginEngine/PluginInstallDialog.cs branches/josepharmbruster/WorldWind/PluginEngine/PluginListItem.cs branches/josepharmbruster/WorldWind/PluginEngine/PluginListView.cs branches/josepharmbruster/WorldWind/WorldWind/AboutDialog.cs branches/josepharmbruster/WorldWind/WorldWind/Config.cs branches/josepharmbruster/WorldWind/WorldWind/ExternalLayerManager.cs branches/josepharmbruster/WorldWind/WorldWind/FileLoader.cs branches/josepharmbruster/WorldWind/WorldWind/Joystick.cs branches/josepharmbruster/WorldWind/WorldWind/LightController.cs branches/josepharmbruster/WorldWind/WorldWind/OverviewForm/OverviewForm.cs branches/josepharmbruster/WorldWind/WorldWind/PlaceFinder.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/Atmosphere.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/Compass/CompassRose.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GeoRSS.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.WorldWind.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/KMLImporter.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/MeasureTool.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/MovieRecorder.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/NRLWeather.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/ShapeFileLoader.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/SpacePilot.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/WavingFlags.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/WhiteboardPlugin.cs branches/josepharmbruster/WorldWind/WorldWind/RapidFireModis.cs branches/josepharmbruster/WorldWind/WorldWind/WMSBrowser.cs branches/josepharmbruster/WorldWind/WorldWind/WMSBrowserNG.cs branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj branches/josepharmbruster/WorldWind/WorldWind.sln branches/josepharmbruster/WorldWind/bin/Debug/Plugins/3Dconnexion/TDxWWInput.cs branches/josepharmbruster/WorldWind/bin/Debug/Plugins/Clock.cs branches/josepharmbruster/WorldWind/bin/Debug/Plugins/GlobeIcon/GlobeIcon.cs branches/josepharmbruster/WorldWind/bin/Debug/Plugins/ImageOverlay/ImageOverlay_1.1.cs branches/josepharmbruster/WorldWind/bin/Debug/Plugins/MousePosition.cs branches/josepharmbruster/WorldWind/bin/Debug/Plugins/SatelliteTracker/SatelliteTrackerPlugin.cs branches/josepharmbruster/WorldWind/bin/Debug/Plugins/VirtualEarth/VirtualEarthPlugin.cs Removed Paths: ------------- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/ Modified: branches/josepharmbruster/WorldWind/Collab/jhuapl/Whiteboard/WhiteboardWidget.cs =================================================================== --- branches/josepharmbruster/WorldWind/Collab/jhuapl/Whiteboard/WhiteboardWidget.cs 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/Collab/jhuapl/Whiteboard/WhiteboardWidget.cs 2009-03-13 01:03:16 UTC (rev 4068) @@ -42,6 +42,7 @@ // ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE. // using System; +using System.IO; using WorldWind; using WorldWind.Renderable; @@ -62,10 +63,10 @@ /// </summary> public string BasePath { - get { return m_basePath; } - set { m_basePath = value; } + get { return m_pluginDirectory; } + set { m_pluginDirectory = value; } } - protected string m_basePath; + protected string m_pluginDirectory; /// <summary> /// The whiteboard drawing layer @@ -161,9 +162,9 @@ protected ButtonWidget m_freehandButton; - public WhiteboardWidget(string name, string basePath) : base(name) + public WhiteboardWidget(string name, string pluginDirectory) : base(name) { - m_basePath = basePath; + m_pluginDirectory = pluginDirectory; // Probably should put this in a try catch block or move out of constructor BuildForm(); @@ -232,7 +233,8 @@ m_lockButton = new ButtonWidget(); m_lockButton.Location = new System.Drawing.Point(4,4); - m_lockButton.ImageName = m_basePath + @"\Plugins\Whiteboard\" + @"\images\icons\lock_open.png"; + m_lockButton.ImageName = Path.Combine( + Path.Combine(m_pluginDirectory,@"Whiteboard"),@"images\icons\lock_open.png"); m_lockButton.WidgetSize = new System.Drawing.Size(16,16); m_lockButton.CountHeight = true; m_lockButton.CountWidth = true; @@ -242,7 +244,8 @@ m_paletteButton = new ButtonWidget(); m_paletteButton.Location = new System.Drawing.Point(24,4); - m_paletteButton.ImageName = m_basePath + @"\Plugins\Whiteboard\" + @"\images\icons\palette.png"; + m_paletteButton.ImageName = Path.Combine( + Path.Combine(m_pluginDirectory,@"Whiteboard"),@"images\icons\palette.png"); m_paletteButton.WidgetSize = new System.Drawing.Size(16,16); m_paletteButton.CountHeight = true; m_paletteButton.CountWidth = true; @@ -252,7 +255,8 @@ m_hotspotButton = new ButtonWidget(); m_hotspotButton.Location = new System.Drawing.Point(4,44); - m_hotspotButton.ImageName = m_basePath + @"\Plugins\Whiteboard\" + @"\images\icons\flag_red.png"; + m_hotspotButton.ImageName = Path.Combine( + Path.Combine(m_pluginDirectory,@"Whiteboard"),@"images\icons\flag_red.png"); m_hotspotButton.WidgetSize = new System.Drawing.Size(16,16); m_hotspotButton.CountHeight = true; m_hotspotButton.CountWidth = true; @@ -262,7 +266,8 @@ m_postitButton = new ButtonWidget(); m_postitButton.Location = new System.Drawing.Point(24,44); - m_postitButton.ImageName = m_basePath + @"\Plugins\Whiteboard\" + @"\images\icons\comment.png"; + m_postitButton.ImageName = Path.Combine( + Path.Combine(m_pluginDirectory,@"Whiteboard"),@"images\icons\comment.png"); m_postitButton.WidgetSize = new System.Drawing.Size(16,16); m_postitButton.CountHeight = true; m_postitButton.CountWidth = true; @@ -272,7 +277,8 @@ m_polygonButton = new ButtonWidget(); m_polygonButton.Location = new System.Drawing.Point(44,44); - m_polygonButton.ImageName = m_basePath + @"\Plugins\Whiteboard\" + @"\images\icons\shape_handles.png"; + m_polygonButton.ImageName = Path.Combine( + Path.Combine(m_pluginDirectory,@"Whiteboard"),@"images\icons\shape_handles.png"); m_polygonButton.WidgetSize = new System.Drawing.Size(16,16); m_polygonButton.CountHeight = true; m_polygonButton.CountWidth = true; @@ -282,7 +288,8 @@ m_polylineButton = new ButtonWidget(); m_polylineButton.Location = new System.Drawing.Point(64,44); - m_polylineButton.ImageName = m_basePath + @"\Plugins\Whiteboard\" + @"\images\icons\chart_line.png"; + m_polylineButton.ImageName = Path.Combine( + Path.Combine(m_pluginDirectory,@"Whiteboard\"),@"images\icons\chart_line.png"); m_polylineButton.WidgetSize = new System.Drawing.Size(16,16); m_polylineButton.CountHeight = true; m_polylineButton.CountWidth = true; @@ -292,7 +299,8 @@ m_freehandButton = new ButtonWidget(); m_freehandButton.Location = new System.Drawing.Point(84,44); - m_freehandButton.ImageName = m_basePath + @"\Plugins\Whiteboard\" + @"\images\icons\pencil.png"; + m_freehandButton.ImageName = Path.Combine( + Path.Combine(m_pluginDirectory,@"Whiteboard"),@"images\icons\pencil.png"); m_freehandButton.WidgetSize = new System.Drawing.Size(16,16); m_freehandButton.CountHeight = true; m_freehandButton.CountWidth = true; @@ -336,9 +344,9 @@ { m_whiteboardLayer.DrawLock = !m_whiteboardLayer.DrawLock; if (m_whiteboardLayer.DrawLock) - m_lockButton.ImageName = m_basePath + @"\Plugins\Whiteboard\" + @"\images\icons\lock_edit.png"; + m_lockButton.ImageName = m_pluginDirectory + @"\Plugins\Whiteboard\" + @"\images\icons\lock_edit.png"; else - m_lockButton.ImageName = m_basePath + @"\Plugins\Whiteboard\" + @"\images\icons\lock_open.png"; + m_lockButton.ImageName = m_pluginDirectory + @"\Plugins\Whiteboard\" + @"\images\icons\lock_open.png"; } Logger.Write(1, "DRAW", "", "Lock Button Pressed"); Modified: branches/josepharmbruster/WorldWind/DstilePlugin/DstileGUI.csproj =================================================================== --- branches/josepharmbruster/WorldWind/DstilePlugin/DstileGUI.csproj 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/DstilePlugin/DstileGUI.csproj 2009-03-13 01:03:16 UTC (rev 4068) @@ -135,6 +135,10 @@ </EmbeddedResource> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\PluginEngine\PluginEngine.csproj"> + <Project>{23E64765-2FB2-4E57-9251-3CE546B06462}</Project> + <Name>PluginEngine</Name> + </ProjectReference> <ProjectReference Include="..\PluginSDK\PluginSDK.csproj"> <Project>{30178337-6BBE-45A0-B7DF-73B2A46F06EE}</Project> <Name>PluginSDK</Name> Modified: branches/josepharmbruster/WorldWind/NavigationPanel/NavigationPanel.csproj =================================================================== --- branches/josepharmbruster/WorldWind/NavigationPanel/NavigationPanel.csproj 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/NavigationPanel/NavigationPanel.csproj 2009-03-13 01:03:16 UTC (rev 4068) @@ -48,6 +48,12 @@ <Compile Include="Multispectral\GeoPortal3D\OldWidgets\TextLabel.cs" /> <Compile Include="Multispectral\GeoPortal3D\OldWidgets\VisibleChangedHandler.cs" /> </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\PluginEngine\PluginEngine.csproj"> + <Project>{23E64765-2FB2-4E57-9251-3CE546B06462}</Project> + <Name>PluginEngine</Name> + </ProjectReference> + </ItemGroup> <Import Condition="" Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <PropertyGroup> <PostBuildEvent>mkdir "$(SolutionDir)\bin\Debug\Plugins\NavigationPanel\" Modified: branches/josepharmbruster/WorldWind/OgrVectorImporter/OGRVectorImporterPlugin.cs =================================================================== --- branches/josepharmbruster/WorldWind/OgrVectorImporter/OGRVectorImporterPlugin.cs 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/OgrVectorImporter/OGRVectorImporterPlugin.cs 2009-03-13 01:03:16 UTC (rev 4068) @@ -21,7 +21,6 @@ using System.Globalization; using System.Text.RegularExpressions; using WorldWind; -using WorldWind.PluginEngine; using WorldWind.Renderable; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; Modified: branches/josepharmbruster/WorldWind/OgrVectorImporter/OgrVectorImporter.csproj =================================================================== --- branches/josepharmbruster/WorldWind/OgrVectorImporter/OgrVectorImporter.csproj 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/OgrVectorImporter/OgrVectorImporter.csproj 2009-03-13 01:03:16 UTC (rev 4068) @@ -111,6 +111,12 @@ <Compile Include="VectorStyleParameters.cs" /> <Compile Include="WaitMessage.cs" /> </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\PluginEngine\PluginEngine.csproj"> + <Project>{23E64765-2FB2-4E57-9251-3CE546B06462}</Project> + <Name>PluginEngine</Name> + </ProjectReference> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. Modified: branches/josepharmbruster/WorldWind/OgrVectorImporter/OgrVectorImporterGUI.cs =================================================================== --- branches/josepharmbruster/WorldWind/OgrVectorImporter/OgrVectorImporterGUI.cs 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/OgrVectorImporter/OgrVectorImporterGUI.cs 2009-03-13 01:03:16 UTC (rev 4068) @@ -5,7 +5,6 @@ using System.IO; using System.Drawing; using WorldWind; -using WorldWind.PluginEngine; using WorldWind.Renderable; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; Modified: branches/josepharmbruster/WorldWind/PluginEngine/MainApplication.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginEngine/MainApplication.cs 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/PluginEngine/MainApplication.cs 2009-03-13 01:03:16 UTC (rev 4068) @@ -1,15 +1,14 @@ using System; using System.Collections.Generic; +using System.Drawing; using System.Text; using System.Windows.Forms; namespace WorldWind { - public interface MainApplication + public interface IMainApplication { WorldWind.WorldWindow WorldWindow { get; } - void SetStatusText(string text); - string DirectoryPath { get; } WorldWind.WorldWindSettings Settings { get; } float VerticalExaggeration { get; set; } @@ -17,8 +16,17 @@ MenuItem ToolsMenu { get; } MenuItem ViewMenu { get; } MenuItem PluginsMenu { get; } - string[] CmdArgs { get; } + string[] CommandLineArguments { get; } string Release { get; } + string DirectoryPath { get; } void BrowseTo(string url); + void QuickInstall(string path); + FormWindowState WindowState { get; set;} + System.Drawing.Size ClientSize { get; set;} + RightToLeft RightToLeft { get; } + Point Location { get; set; } + Size Size { get; set; } + Form ParentForm { get; } + void SetViewPosition(double degreesLatitude, double degreesLongitude, double metersElevation); } } Modified: branches/josepharmbruster/WorldWind/PluginEngine/Plugin.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginEngine/Plugin.cs 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/PluginEngine/Plugin.cs 2009-03-13 01:03:16 UTC (rev 4068) @@ -1,5 +1,4 @@ using System; -using WorldWind; namespace WorldWind.PluginEngine { @@ -12,7 +11,7 @@ /// <summary> /// Handle to the World Wind Application object /// </summary> - protected MainApplication m_Application; + protected IMainApplication m_Application; /// <summary> /// The directory from which this plugin was loaded. @@ -29,7 +28,7 @@ /// Deprecated: Use ParentApplication property instead! /// TODO: Remove this to avoid name collision /// </summary> - public virtual MainApplication Application + public virtual IMainApplication Application { get { @@ -40,7 +39,7 @@ /// <summary> /// Reference to the World Wind main application object. /// </summary> - public virtual MainApplication ParentApplication + public virtual IMainApplication ParentApplication { get { @@ -91,8 +90,7 @@ /// Base class load, calls Load. /// </summary> /// <param name="parent"></param> - /// <param name="pluginDirectory"></param> - public virtual void PluginLoad( MainApplication parent, string pluginDirectory ) + public virtual void PluginLoad( IMainApplication parent, string pluginDirectory ) { if(m_isLoaded) // Already loaded Modified: branches/josepharmbruster/WorldWind/PluginEngine/PluginCompiler.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginEngine/PluginCompiler.cs 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/PluginEngine/PluginCompiler.cs 2009-03-13 01:03:16 UTC (rev 4068) @@ -3,6 +3,7 @@ using System.IO; using System.Text; using System.Collections; +using System.Collections.Generic; using System.Collections.Specialized; using System.CodeDom; using System.CodeDom.Compiler; @@ -15,18 +16,61 @@ namespace WorldWind.PluginEngine { /// <summary> - /// Loads plug-in scripts, compiles and executes them + /// Responsible for loading plugin scripts, compiling and executing them. /// </summary> public class PluginCompiler { - MainApplication worldWind; - const string LogCategory = "PLUG"; - Hashtable codeDomProviders = new Hashtable(); // File Extension -> Compiler table - CompilerParameters cp = new CompilerParameters(); - ArrayList m_plugins = new ArrayList(); - StringCollection m_worldWindReferencesList = new StringCollection(); - string m_pluginRootDirectory; + /// <summary> + /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginCompiler"/> class. + /// </summary> + /// <param name="worldWind">main application instance</param> + /// <param name="pluginDirectory">root path to plugins directory</param> + public PluginCompiler(IMainApplication worldWind, string pluginDirectory) + { + this.m_worldWind = worldWind; + // Add all available code dom providers + foreach (CompilerInfo compilerInfo in CodeDomProvider.GetAllCompilerInfo()) + { + try + { + CodeDomProvider codeDomProvider = compilerInfo.CreateProvider(); + codeDomProviders.Add("." + codeDomProvider.FileExtension, codeDomProvider); + } + catch (Exception e) + { + Log.Write(Log.Levels.Error, e.Message); + } + } + + // Setup compiler parameters + m_compilerParameters.GenerateInMemory = true; + m_compilerParameters.GenerateExecutable = false; + m_compilerParameters.IncludeDebugInformation = false; + + // Load all assemblies WW has a reference to + AssemblyName[] assemblyNames = Assembly.GetExecutingAssembly().GetReferencedAssemblies(); + foreach (AssemblyName assemblyName in assemblyNames) + Assembly.Load(assemblyName); + + // Reference all assemblies WW has loaded + Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); + foreach (Assembly assembly in assemblies) + { + try + { + if (assembly.Location.Length > 0) + m_worldWindReferencesList.Add(assembly.Location); + } + catch (NotSupportedException) + { + // In-memory compiled assembly etc. + } + } + + m_pluginRootDirectory = pluginDirectory; + } + public string PluginRootDirectory { get @@ -51,7 +95,7 @@ /// <summary> /// The list of discovered plugins. /// </summary> - public ArrayList Plugins + public List<PluginInfo> Plugins { get { @@ -59,79 +103,25 @@ } } - /// <summary> - /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginCompiler"/> class. - /// </summary> - /// <param name="worldWind"></param> - /// <param name="pluginDirectory"></param> - public PluginCompiler( MainApplication worldWind, string pluginDirectory ) - { - this.worldWind = worldWind; - // Add the available codeDomProviders - // TODO: Enumerate codeDomProviders (easier in .net 2.0) - AddCodeProvider(new Microsoft.CSharp.CSharpCodeProvider() ); - AddCodeProvider(new Microsoft.VisualBasic.VBCodeProvider() ); - AddCodeProvider(new Microsoft.JScript.JScriptCodeProvider() ); - - // Setup compiler parameters - cp.GenerateExecutable = false; - cp.GenerateInMemory = true; - cp.IncludeDebugInformation = false; - - // Load all assemblies WW has a reference to - AssemblyName[] assemblyNames = Assembly.GetExecutingAssembly().GetReferencedAssemblies(); - foreach(AssemblyName assemblyName in assemblyNames) - Assembly.Load(assemblyName); - - // Reference all assemblies WW has loaded - Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); - foreach(Assembly assembly in assemblies) - { - try - { - if(assembly.Location.Length > 0) - m_worldWindReferencesList.Add(assembly.Location); - } - catch(NotSupportedException) - { - // In-memory compiled assembly etc. - } - } - - PluginRootDirectory = pluginDirectory; - } - /// <summary> - /// Adds a compiler to the list of available codeDomProviders - /// </summary> - public void AddCodeProvider( CodeDomProvider cdp ) - { - // Add leading dot since that's what Path.GetExtension uses - codeDomProviders.Add("."+cdp.FileExtension, cdp); - } - - /// <summary> /// Scan for plugins inside an assembly. /// </summary> public void FindPlugins( Assembly assembly ) { - foreach( Type t in assembly.GetTypes() ) + foreach( Type type in assembly.GetTypes() ) { - if(!t.IsClass) + if(!type.IsClass || !type.IsPublic) continue; - if(!t.IsPublic) + if(type.BaseType!=typeof(Plugin)) continue; - if(t.BaseType!=typeof(Plugin)) - continue; - try { - PluginInfo pi = new PluginInfo(this.worldWind); - pi.Plugin = (Plugin) assembly.CreateInstance( t.ToString() ); - pi.Name = t.Name; + PluginInfo pi = new PluginInfo(m_worldWind.Settings); + pi.Plugin = (Plugin) assembly.CreateInstance( type.ToString() ); + pi.Name = type.Name; pi.Description = "World Wind internally loaded plugin."; m_plugins.Add(pi); } @@ -181,7 +171,7 @@ string extension = Path.GetExtension(filename).ToLower(); if(HasCompiler(extension) || IsPreCompiled(extension)) { - PluginInfo plugin = new PluginInfo(this.worldWind); + PluginInfo plugin = new PluginInfo(m_worldWind.Settings); plugin.FullPath = filename; m_plugins.Add(plugin); } @@ -201,7 +191,6 @@ { // Compile Log.Write(Log.Levels.Debug, LogCategory, "loading "+pi.Name+" ..."); - worldWind.SetStatusText("Initializing plugin " + pi.Name); Load(pi); } catch(Exception caught) @@ -214,7 +203,7 @@ // Disable automatic load of this plugin on startup pi.IsLoadedAtStartup = false; - worldWind.SetStatusText(message); + //TODO: Report error to user: message } } } @@ -264,11 +253,11 @@ pi.Plugin = GetPluginInterface(asm); } - string pluginPath = this.worldWind.DirectoryPath; + string pluginPath = m_pluginRootDirectory; if( pi.FullPath != null && pi.FullPath.Length > 0) pluginPath = Path.GetDirectoryName(pi.FullPath); - pi.Plugin.PluginLoad(worldWind, pluginPath); + pi.Plugin.PluginLoad(m_worldWind, pluginPath); } /// <summary> @@ -323,24 +312,24 @@ if(cdp is Microsoft.JScript.JScriptCodeProvider) // JSCript doesn't support unsafe code - cp.CompilerOptions = ""; + m_compilerParameters.CompilerOptions = ""; else - cp.CompilerOptions = "/unsafe"; + m_compilerParameters.CompilerOptions = "/unsafe"; // Add references - cp.ReferencedAssemblies.Clear(); + m_compilerParameters.ReferencedAssemblies.Clear(); foreach( string reference in m_worldWindReferencesList) - cp.ReferencedAssemblies.Add(reference); + m_compilerParameters.ReferencedAssemblies.Add(reference); // Add reference to core functions for VB.Net users if(cdp is Microsoft.VisualBasic.VBCodeProvider) - cp.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll"); + m_compilerParameters.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll"); // Add references specified in the plugin foreach( string reference in pi.References.Split(',')) AddCompilerReference( pi.FullPath, reference.Trim() ); - CompilerResults cr = cdp.CompileAssemblyFromFile( cp, pi.FullPath ); + CompilerResults cr = cdp.CompileAssemblyFromFile( m_compilerParameters, pi.FullPath ); if(cr.Errors.HasErrors || cr.Errors.HasWarnings) { // Handle compiler errors @@ -385,7 +374,7 @@ throw new ApplicationException("Search for required library '" + assemblyName + "' failed."); } - cp.ReferencedAssemblies.Add( referencedAssembly.Location ); + m_compilerParameters.ReferencedAssemblies.Add( referencedAssembly.Location ); } catch(Exception caught) { @@ -396,23 +385,20 @@ /// <summary> /// Looks for class derived from Plugin and returns an instance of this class. /// </summary> - static Plugin GetPluginInterface(Assembly asm) + static Plugin GetPluginInterface(Assembly assembly) { - foreach( Type t in asm.GetTypes() ) + foreach( Type type in assembly.GetTypes() ) { - if(!t.IsClass) + if(!type.IsClass || !type.IsPublic) continue; - if(!t.IsPublic) + // Replaced to support VisualEsse + if (!type.IsSubclassOf(typeof(Plugin))) continue; - if(t.BaseType!=typeof(Plugin)) - continue; - try { - Plugin pluginInstance = (Plugin) asm.CreateInstance( t.ToString() ); - return pluginInstance; + return (Plugin)assembly.CreateInstance(type.ToString()); } catch(MissingMethodException) { @@ -426,5 +412,13 @@ throw new ArgumentException( "Plugin does not derive from base class Plugin." ); } + + IMainApplication m_worldWind; + const string LogCategory = "PLUGINCOMPILER"; + Hashtable codeDomProviders = new Hashtable(); // File Extension -> Compiler table + CompilerParameters m_compilerParameters = new CompilerParameters(); + List<PluginInfo> m_plugins = new List<PluginInfo>(); + StringCollection m_worldWindReferencesList = new StringCollection(); + private string m_pluginRootDirectory; } } \ No newline at end of file Modified: branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.cs 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.cs 2009-03-13 01:03:16 UTC (rev 4068) @@ -1,449 +1,254 @@ using System; -using System.IO; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; using System.Diagnostics; using System.Drawing; -using System.Collections; -using System.ComponentModel; +using System.IO; +using System.Text; using System.Windows.Forms; +using Utility; + namespace WorldWind.PluginEngine { - /// <summary> - /// Plugin manager dialog. - /// </summary> - public class PluginDialog : System.Windows.Forms.Form - { - private PluginListView listView; - private System.Windows.Forms.ColumnHeader columnHeader1; - private System.Windows.Forms.ColumnHeader columnHeader2; - private PluginCompiler compiler; - private System.Windows.Forms.Button buttonLoad; - private System.Windows.Forms.Button buttonUnload; - private System.Windows.Forms.ImageList imageList; - private System.Windows.Forms.TextBox description; - private System.Windows.Forms.LinkLabel webSite; - private System.Windows.Forms.Label labelDescription; - private System.Windows.Forms.Label labelWebSite; - private System.Windows.Forms.Label labelDeveloper; - private System.Windows.Forms.Label developer; - private System.Windows.Forms.Button buttonInstall; - private System.Windows.Forms.Button buttonUninstall; - private System.ComponentModel.IContainer components; + public partial class PluginDialog : Form + { + /// <summary> + /// Constructur for the plugin dialog box. + /// </summary> + /// <param name="compiler">plugin compiler to use for dialog instance</param> + public PluginDialog(PluginCompiler compiler) + { + InitializeComponent(); + this._compiler = compiler; + } - /// <summary> - /// On/Off images for items. - /// </summary> - public ImageList ImageList - { - get - { - return imageList; - } - } + /// <summary> + /// Clear the plugins list view and populate it with the plugins + /// that are registered iwth the plugin compiler + /// </summary> + private void RefreshPluginList() + { + _compiler.FindPlugins(); + listView.Items.Clear(); + foreach (PluginInfo plugin in _compiler.Plugins) + { + listView.Items.Add(new PluginListItem(plugin)); + } + listView.Invalidate(); + } - /// <summary> - /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginDialog"/> class. - /// </summary> - /// <param name="compiler"></param> - public PluginDialog(PluginCompiler compiler) - { - // - // Required for Windows Form Designer support - // - InitializeComponent(); + /// <summary> + /// Event fired when the Plugin Dialog box loads + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void PluginDialog_Load(object sender, EventArgs e) + { + RefreshPluginList(); - this.compiler = compiler; - } + listView_SelectedIndexChanged(this, EventArgs.Empty); - /// <summary> - /// Clean up any resources being used. - /// </summary> - protected override void Dispose( bool disposing ) - { - if( disposing ) - { - if(components != null) - { - components.Dispose(); - } - } - base.Dispose( disposing ); - } + UpdateUserInterface(); + } - #region Windows Form Designer generated code - /// <summary> - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// </summary> - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(PluginDialog)); - this.listView = new WorldWind.PluginEngine.PluginListView(); - this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); - this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); - this.buttonLoad = new System.Windows.Forms.Button(); - this.buttonUnload = new System.Windows.Forms.Button(); - this.imageList = new System.Windows.Forms.ImageList(this.components); - this.description = new System.Windows.Forms.TextBox(); - this.webSite = new System.Windows.Forms.LinkLabel(); - this.labelDescription = new System.Windows.Forms.Label(); - this.labelWebSite = new System.Windows.Forms.Label(); - this.labelDeveloper = new System.Windows.Forms.Label(); - this.developer = new System.Windows.Forms.Label(); - this.buttonInstall = new System.Windows.Forms.Button(); - this.buttonUninstall = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // listView - // - this.listView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeader1, - this.columnHeader2}); - this.listView.FullRowSelect = true; - this.listView.GridLines = true; - this.listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.listView.Location = new System.Drawing.Point(8, 8); - this.listView.Name = "listView"; - this.listView.Size = new System.Drawing.Size(231, 160); - this.listView.TabIndex = 0; - this.listView.View = System.Windows.Forms.View.Details; - this.listView.DoubleClick += new System.EventHandler(this.listView_DoubleClick); - this.listView.SelectedIndexChanged += new System.EventHandler(this.listView_SelectedIndexChanged); - // - // columnHeader1 - // - this.columnHeader1.Text = "Available plugins"; - this.columnHeader1.Width = 163; - // - // columnHeader2 - // - this.columnHeader2.Text = "Startup"; - this.columnHeader2.Width = 47; - // - // buttonLoad - // - this.buttonLoad.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonLoad.Location = new System.Drawing.Point(248, 8); - this.buttonLoad.Name = "buttonLoad"; - this.buttonLoad.TabIndex = 1; - this.buttonLoad.Text = "&Load"; - this.buttonLoad.Click += new System.EventHandler(this.buttonLoad_Click); - // - // buttonUnload - // - this.buttonUnload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonUnload.Location = new System.Drawing.Point(248, 40); - this.buttonUnload.Name = "buttonUnload"; - this.buttonUnload.TabIndex = 2; - this.buttonUnload.Text = "&Unload"; - this.buttonUnload.Click += new System.EventHandler(this.buttonUnload_Click); - // - // imageList - // - this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit; - this.imageList.ImageSize = new System.Drawing.Size(16, 11); - this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream"))); - this.imageList.TransparentColor = System.Drawing.Color.Transparent; - // - // description - // - this.description.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.description.Location = new System.Drawing.Point(24, 195); - this.description.Multiline = true; - this.description.Name = "description"; - this.description.ReadOnly = true; - this.description.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.description.Size = new System.Drawing.Size(288, 48); - this.description.TabIndex = 6; - this.description.Text = ""; - // - // webSite - // - this.webSite.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.webSite.Location = new System.Drawing.Point(24, 312); - this.webSite.Name = "webSite"; - this.webSite.Size = new System.Drawing.Size(288, 16); - this.webSite.TabIndex = 10; - this.webSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.webSite_LinkClicked); - // - // labelDescription - // - this.labelDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.labelDescription.Location = new System.Drawing.Point(10, 179); - this.labelDescription.Name = "labelDescription"; - this.labelDescription.Size = new System.Drawing.Size(100, 16); - this.labelDescription.TabIndex = 5; - this.labelDescription.Text = "Description:"; - // - // labelWebSite - // - this.labelWebSite.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.labelWebSite.Location = new System.Drawing.Point(10, 296); - this.labelWebSite.Name = "labelWebSite"; - this.labelWebSite.Size = new System.Drawing.Size(56, 16); - this.labelWebSite.TabIndex = 9; - this.labelWebSite.Text = "Web Site:"; - // - // labelDeveloper - // - this.labelDeveloper.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.labelDeveloper.Location = new System.Drawing.Point(10, 253); - this.labelDeveloper.Name = "labelDeveloper"; - this.labelDeveloper.Size = new System.Drawing.Size(62, 16); - this.labelDeveloper.TabIndex = 7; - this.labelDeveloper.Text = "Developer:"; - // - // developer - // - this.developer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.developer.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); - this.developer.Location = new System.Drawing.Point(24, 271); - this.developer.Name = "developer"; - this.developer.Size = new System.Drawing.Size(296, 16); - this.developer.TabIndex = 8; - // - // buttonInstall - // - this.buttonInstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonInstall.Location = new System.Drawing.Point(248, 88); - this.buttonInstall.Name = "buttonInstall"; - this.buttonInstall.TabIndex = 3; - this.buttonInstall.Text = "&Install"; - this.buttonInstall.Click += new System.EventHandler(this.buttonInstall_Click); - // - // buttonUninstall - // - this.buttonUninstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonUninstall.Location = new System.Drawing.Point(248, 120); - this.buttonUninstall.Name = "buttonUninstall"; - this.buttonUninstall.TabIndex = 4; - this.buttonUninstall.Text = "&Uninstall"; - this.buttonUninstall.Click += new System.EventHandler(this.buttonUninstall_Click); - // - // PluginDialog - // - this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); - this.ClientSize = new System.Drawing.Size(328, 342); - this.Controls.Add(this.buttonUninstall); - this.Controls.Add(this.buttonInstall); - this.Controls.Add(this.developer); - this.Controls.Add(this.labelDeveloper); - this.Controls.Add(this.labelWebSite); - this.Controls.Add(this.labelDescription); - this.Controls.Add(this.webSite); - this.Controls.Add(this.description); - this.Controls.Add(this.buttonUnload); - this.Controls.Add(this.buttonLoad); - this.Controls.Add(this.listView); - this.MinimumSize = new System.Drawing.Size(336, 272); - this.Name = "PluginDialog"; - this.Text = "Plugin Load/Unload"; - this.Load += new System.EventHandler(this.PluginDialog_Load); - this.ResumeLayout(false); + /// <summary> + /// Event fired when the Load button is pressed + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void buttonLoad_Click(object sender, EventArgs e) + { + foreach (PluginListItem pluginListItem in listView.SelectedItems) + PluginLoad(pluginListItem); - } - #endregion + UpdateUserInterface(); + } - /// <summary> - /// Fill the list view with currently installed plugins. - /// </summary> - void AddPluginList() - { - listView.Items.Clear(); - foreach (PluginInfo pi in compiler.Plugins) - { - PluginListItem li = new PluginListItem(pi); - listView.Items.Add(li); - } - } + /// <summary> + /// Event fired when the Unload buttons is pressed + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void buttonUnload_Click(object sender, EventArgs e) + { + foreach (PluginListItem pluginListItem in listView.SelectedItems) + PluginUnload(pluginListItem); - private void PluginDialog_Load(object sender, System.EventArgs e) - { - AddPluginList(); - - //Force UI state update - listView_SelectedIndexChanged(this,EventArgs.Empty); - UpdateUIStates(); - } + UpdateUserInterface(); + } - /// <summary> - /// Unload selected plugins. - /// </summary> - private void buttonUnload_Click(object sender, System.EventArgs e) - { - foreach(PluginListItem pi in listView.SelectedItems) - PluginUnload(pi); - listView.Invalidate(); - UpdateUIStates(); - } + /// <summary> + /// Load the provided plugin + /// </summary> + /// <param name="pi">plugin list item that should be loaded</param> + private void PluginLoad(PluginListItem pluginListItem) + { + try + { + _compiler.Load(pluginListItem.PluginInfo); + } + catch (Exception exception) + { + string message = string.Format( + "Error loading plugin: {0} \n {1}", + pluginListItem.Name, + exception.Message); + Log.Write(0, "PLUGIN_DIALOG", message); + MessageBox.Show(message,"Plugin Load Error",MessageBoxButtons.OK,MessageBoxIcon.Error); + } + } - /// <summary> - /// Load selected plugins. - /// </summary> - private void buttonLoad_Click(object sender, System.EventArgs e) - { - foreach(PluginListItem pi in listView.SelectedItems) - PluginLoad(pi); - listView.Invalidate(); - UpdateUIStates(); - } + /// <summary> + /// Unload the provided plugin + /// </summary> + /// <param name="pi">plugin list item that should be unloaded</param> + private void PluginUnload(PluginListItem pluginListItem) + { + try + { + _compiler.Unload(pluginListItem.PluginInfo); + } + catch (Exception exception) + { + string message = string.Format( + "Error unloading plugin: {0} \n {1}", + pluginListItem.Name, + exception.Message); + MessageBox.Show(message,"Plugin Unload Error",MessageBoxButtons.OK,MessageBoxIcon.Error); + } + } - /// <summary> - /// Load plugin and display message on failure. - /// </summary> - private void PluginLoad(PluginListItem pi) - { - try - { - compiler.Load(pi.PluginInfo); - } - catch(Exception caught) - { - MessageBox.Show("The error was:\n\n" + caught.Message, pi.Name + - " plugin failed to load.", - MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } + /// <summary> + /// Updates the state of each gui control to reflect the current state + /// </summary> + private void UpdateUserInterface() + { + bool isItemSelected = listView.SelectedItems.Count > 0; + buttonUninstall.Enabled = isItemSelected; + if (!isItemSelected) + { + buttonLoad.Enabled = false; + buttonUnload.Enabled = false; + return; + } - /// <summary> - /// Unload plugin and display message on failure. - /// </summary> - public void PluginUnload(PluginListItem pi) - { - try - { - compiler.Unload(pi.PluginInfo); - } - catch(Exception caught) - { - MessageBox.Show("The error was:\n\n" + caught.Message, pi.Name + - " failed to unload.", - MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } + PluginListItem item = (PluginListItem)listView.SelectedItems[0]; + buttonLoad.Enabled = !item.PluginInfo.IsCurrentlyLoaded; + buttonUnload.Enabled =item.PluginInfo.IsCurrentlyLoaded; - /// <summary> - /// Updates enabled states of controls to reflect selection. - /// </summary> - void UpdateUIStates() - { - bool isItemSelected = listView.SelectedItems.Count > 0; - buttonUninstall.Enabled = isItemSelected; - if(!isItemSelected) - { - buttonLoad.Enabled = false; - buttonUnload.Enabled = false; - return; - } + listView.Invalidate(); + } - PluginListItem item = (PluginListItem)listView.SelectedItems[0]; - buttonLoad.Enabled = !item.PluginInfo.IsCurrentlyLoaded; - buttonUnload.Enabled = item.PluginInfo.IsCurrentlyLoaded; - } + /// <summary> + /// Event fired when user selects a specific row within the listview + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void listView_SelectedIndexChanged(object sender, EventArgs e) + { + description.Clear(); + developer.ResetText(); + webSite.ResetText(); - private void listView_SelectedIndexChanged(object sender, System.EventArgs e) - { - description.Text = ""; - developer.Text = ""; - webSite.Text = ""; + UpdateUserInterface(); - UpdateUIStates(); + if (listView.SelectedItems.Count != 1) + return; - if(listView.SelectedItems.Count != 1) - return; + PluginListItem item = (PluginListItem)listView.SelectedItems[0]; - PluginListItem item = (PluginListItem)listView.SelectedItems[0]; + description.Text = item.PluginInfo.Description; + developer.Text = item.PluginInfo.Developer; + webSite.Text = item.PluginInfo.WebSite; + } - description.Text = item.PluginInfo.Description; - developer.Text = item.PluginInfo.Developer; - webSite.Text = item.PluginInfo.WebSite; - } + /// <summary> + /// Event fired when the user clicks on the provided website link + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void webSite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + if (webSite.Text == null || webSite.Text.Length <= 0) + return; - private void webSite_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) - { - if(webSite.Text == null || webSite.Text.Length<=0) - return; + Process.Start(webSite.Text); + } - Process.Start(webSite.Text); - } + /// <summary> + /// Event fired when the user selects the install button + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void buttonInstall_Click(object sender, EventArgs e) + { + Form installDialog = new PluginInstallDialog(_compiler, this.Icon); + installDialog.ShowDialog(); - private void buttonInstall_Click(object sender, System.EventArgs e) - { - Form installDialog = new PluginInstallDialog(compiler); - installDialog.Icon = this.Icon; - installDialog.ShowDialog(); + RefreshPluginList(); + } - // Rescan for plugins - compiler.FindPlugins(); - AddPluginList(); - } + /// <summary> + /// Event fired when the users selects the uninstall button + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void buttonUninstall_Click(object sender, EventArgs e) + { + foreach (PluginListItem pluginListItem in listView.SelectedItems) + { + string fullPath = pluginListItem.PluginInfo.FullPath; + if (!File.Exists(fullPath)) + { + // Ignore internal plugins + MessageBox.Show("Plugin '" + pluginListItem.Name + "' is inside worldwind.exe and cannot be uninstalled.", + "Uninstall", + MessageBoxButtons.OK, + MessageBoxIcon.Information); + continue; + } - /// <summary> - /// Uninstall/remove plugins - /// </summary> - private void buttonUninstall_Click(object sender, System.EventArgs e) - { - foreach(PluginListItem pi in listView.SelectedItems) - { - string fullPath = pi.PluginInfo.FullPath; - if(!File.Exists(fullPath)) - { - // Ignore internal plugins - MessageBox.Show("Plugin '" + pi.Name + "' is inside worldwind.exe and cannot be uninstalled.", - "Uninstall", - MessageBoxButtons.OK, - MessageBoxIcon.Information); - continue; - } + string msg = string.Format("Do you really want to uninstall {0}?", pluginListItem.Name); + if (MessageBox.Show(msg, "Delete plugin", MessageBoxButtons.YesNo, MessageBoxIcon.Question, + MessageBoxDefaultButton.Button2) != DialogResult.Yes) + continue; - // Show uninstall warning - string msg = string.Format("Do you really want to uninstall {0}?", pi.Name ); - if( MessageBox.Show(msg, "Delete plugin", MessageBoxButtons.YesNo, MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2) != DialogResult.Yes) - continue; + try + { + _compiler.Uninstall(pluginListItem.PluginInfo); + RefreshPluginList(); + } + catch (Exception caught) + { + MessageBox.Show("Uninstall failed. The error was:\n\n" + caught.Message, pluginListItem.Name + + " plugin failed to uninstall.", + MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } - try - { - compiler.Uninstall( pi.PluginInfo ); + UpdateUserInterface(); + } - // Remove if from the plugin list - listView.Items.Remove(pi); - } - catch(Exception caught) - { - MessageBox.Show("Uninstall failed. The error was:\n\n" + caught.Message, pi.Name + - " plugin failed to uninstall.", - MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } + /// <summary> + /// Event fired when the plugins list view is double clicked. + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void listView_DoubleClick(object sender, EventArgs e) + { + foreach (PluginListItem pluginListItem in listView.SelectedItems) + { + if (pluginListItem.PluginInfo.IsCurrentlyLoaded) + PluginUnload(pluginListItem); + else + PluginLoad(pluginListItem); + } + UpdateUserInterface(); + } - UpdateUIStates(); - } - - /// <summary> - /// Invert state of double clicked item (load/unload) - /// </summary> - private void listView_DoubleClick(object sender, System.EventArgs e) - { - foreach(PluginListItem pi in listView.SelectedItems) - { - if(pi.PluginInfo.IsCurrentlyLoaded) - PluginUnload(pi); - else - PluginLoad(pi); - } - listView.Invalidate(); - UpdateUIStates(); - } - } -} + private PluginCompiler _compiler; + } +} \ No newline at end of file Modified: branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.resx =================================================================== --- branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.resx 2009-03-10 00:22:48 UTC (rev 4067) +++ branches/josepharmbruster/WorldWind/PluginEngine/PluginDialog.resx 2009-03-13 01:03:16 UTC (rev 4068) @@ -3,7 +3,7 @@ <!-- Microsoft ResX Schema - Version 1.3 + Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the @@ -14,16 +14,17 @@ ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">1.3</resheader> + <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1">this is my long string</data> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - [base64 mime encoded serialized .NET Framework object] + <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - [base64 mime encoded string representing a byte array form of the .NET Framework object] + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple @@ -35,7 +36,7 @@ Classes that don't support this are serialized and stored with the mimetype set. - The mimetype is used forserialized objects, and tells the + The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: @@ -45,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -59,18 +60,37 @@ : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> @@ -89,219 +109,72 @@ <value>text/microsoft-resx</value> </resheader> <resheader name="version"> - <value>1.3</value> + <value>2.0</value> </resheader> <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> - <data name="listView.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="listView.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="listView.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="columnHeader1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="columnHeader1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="columnHeader2.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="columnHeader2.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="buttonLoad.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> ... [truncated message content] |
From: <joe...@us...> - 2009-03-10 00:23:05
|
Revision: 4067 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4067&view=rev Author: joearmbruster Date: 2009-03-10 00:22:48 +0000 (Tue, 10 Mar 2009) Log Message: ----------- removed missing resource from worldwind project Modified Paths: -------------- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj Modified: branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-03-10 00:11:36 UTC (rev 4066) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-03-10 00:22:48 UTC (rev 4067) @@ -551,9 +551,6 @@ <SubType>Designer</SubType> </EmbeddedResource> </ItemGroup> - <ItemGroup> - <None Include="Resources\gradient.png" /> - </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <PropertyGroup> <PreBuildEvent> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-03-10 00:11:45
|
Revision: 4066 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4066&view=rev Author: joearmbruster Date: 2009-03-10 00:11:36 +0000 (Tue, 10 Mar 2009) Log Message: ----------- Bull noticed an error message on his Windows 7 box when attempting to initialize the VJSharpCodeProvider. Rather than cause a fatal exception i'm going to catch and log it. Modified Paths: -------------- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginCompiler.cs Modified: branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginCompiler.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginCompiler.cs 2009-03-05 03:01:29 UTC (rev 4065) +++ branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginCompiler.cs 2009-03-10 00:11:36 UTC (rev 4066) @@ -32,8 +32,15 @@ // Add all available code dom providers foreach (CompilerInfo compilerInfo in CodeDomProvider.GetAllCompilerInfo()) { - CodeDomProvider codeDomProvider = compilerInfo.CreateProvider(); - codeDomProviders.Add("." + codeDomProvider.FileExtension, codeDomProvider); + try + { + CodeDomProvider codeDomProvider = compilerInfo.CreateProvider(); + codeDomProviders.Add("." + codeDomProvider.FileExtension, codeDomProvider); + } + catch (Exception e) + { + Log.Write(Log.Levels.Error, e.Message); + } } // Setup compiler parameters This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-03-05 03:01:38
|
Revision: 4065 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4065&view=rev Author: joearmbruster Date: 2009-03-05 03:01:29 +0000 (Thu, 05 Mar 2009) Log Message: ----------- moving several more plugins into the plugins folder Modified Paths: -------------- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj Modified: branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-03-05 02:51:52 UTC (rev 4064) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-03-05 03:01:29 UTC (rev 4065) @@ -282,6 +282,7 @@ <Compile Include="PluginEngine\PluginListView.cs"> <SubType>Component</SubType> </Compile> + <Compile Include="Plugins\Anaglyph.cs" /> <Compile Include="Plugins\Atmosphere.cs" /> <Compile Include="Plugins\BMNG\BMNG.cs"> <SubType>Form</SubType> @@ -293,6 +294,14 @@ <Compile Include="Plugins\Compass\CompassRose.cs" /> <Compile Include="Plugins\DynamicCloudLayer.cs" /> <Compile Include="Plugins\DynamicClouds.cs" /> + <Compile Include="Plugins\FlickrPlugin.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Plugins\FloodLevel.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Plugins\GeoRSS.cs" /> + <Compile Include="Plugins\GlobeCursor.cs" /> <Compile Include="Plugins\GPSPlugin\CSVParser.cs" /> <Compile Include="Plugins\GPSPlugin\GPSTracker.cs"> <SubType>Form</SubType> @@ -323,6 +332,33 @@ <Compile Include="Plugins\GPSPlugin\POIName.cs"> <SubType>Form</SubType> </Compile> + <Compile Include="Plugins\KMLImporter.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Plugins\MeasureTool.cs" /> + <Compile Include="Plugins\MeasureToolNG.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Plugins\MovieRecorder.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Plugins\NrlMryAboutDialog.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Plugins\NRLWeather.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Plugins\ScaleBarLegend.cs" /> + <Compile Include="Plugins\ShapeFileInfoTool.cs" /> + <Compile Include="Plugins\ShapeFileLoader.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Plugins\shapelib.cs" /> + <Compile Include="Plugins\SpacePilot.cs" /> + <Compile Include="Plugins\Stars3D.cs" /> + <Compile Include="Plugins\WavingFlags.cs" /> + <Compile Include="Plugins\WhiteboardPlugin.cs" /> + <Compile Include="Plugins\WiimoteHeadTracker.cs" /> <Compile Include="Properties\Resources.Designer.cs"> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> @@ -459,6 +495,14 @@ <DependentUpon>BmngAboutDialog.cs</DependentUpon> <SubType>Designer</SubType> </EmbeddedResource> + <EmbeddedResource Include="Plugins\FlickrPlugin.resx"> + <DependentUpon>FlickrPlugin.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Plugins\FloodLevel.resx"> + <DependentUpon>FloodLevel.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> <EmbeddedResource Include="Plugins\GPSPlugin\GPSTracker.resx"> <DependentUpon>GPSTracker.cs</DependentUpon> <SubType>Designer</SubType> @@ -478,6 +522,25 @@ <EmbeddedResource Include="Plugins\GPSPlugin\POIName.resx"> <SubType>Designer</SubType> </EmbeddedResource> + <EmbeddedResource Include="Plugins\MeasureToolNG.resx"> + <DependentUpon>MeasureToolNG.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Plugins\MovieRecorder.resx"> + <DependentUpon>MovieRecorder.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Plugins\NrlMryAboutDialog.resx"> + <DependentUpon>NrlMryAboutDialog.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Plugins\NRLWeather.resx"> + <DependentUpon>NRLWeather.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Plugins\ShapeFileLoader.resx"> + <SubType>Designer</SubType> + </EmbeddedResource> <EmbeddedResource Include="Shaders\clouds.fx" /> <EmbeddedResource Include="Splash.resx"> <SubType>Designer</SubType> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-03-05 02:22:26
|
Revision: 4063 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4063&view=rev Author: joearmbruster Date: 2009-03-05 02:22:22 +0000 (Thu, 05 Mar 2009) Log Message: ----------- first commit at organizing builtin plugins into a distinct folder structure namespaces have been adjusted to match that of the plugins location in the tree Modified Paths: -------------- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.cs branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj Removed Paths: ------------- branches/josepharmbruster/WorldWind/WorldWind/BMNG.cs branches/josepharmbruster/WorldWind/WorldWind/BMNG.resx branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.cs branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.resx branches/josepharmbruster/WorldWind/WorldWind/Compass3D.cs branches/josepharmbruster/WorldWind/WorldWind/CompassRose.cs branches/josepharmbruster/WorldWind/WorldWind/GpsPlugin/ Deleted: branches/josepharmbruster/WorldWind/WorldWind/BMNG.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/BMNG.cs 2009-03-05 02:21:34 UTC (rev 4062) +++ branches/josepharmbruster/WorldWind/WorldWind/BMNG.cs 2009-03-05 02:22:22 UTC (rev 4063) @@ -1,723 +0,0 @@ -using System; -using System.IO; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; - -namespace NASA.Plugins -{ - /// <summary> - /// Summary description for BMNG. - /// </summary> - public class BMNG : System.Windows.Forms.Form - { - private System.Windows.Forms.ComboBox comboBoxBmngVersion; - private System.Windows.Forms.TrackBar trackBarMonth; - private System.Windows.Forms.StatusBar statusBarMonth; - private System.Windows.Forms.MainMenu mainMenu1; - private System.Windows.Forms.MenuItem menuItemHelp; - private System.Windows.Forms.MenuItem menuItemAbout; - - WorldWind.Renderable.RenderableObjectList m_BlueMarbleList = null; - WorldWind.Renderable.RenderableObjectList m_ShadedList = null; - WorldWind.Renderable.RenderableObjectList m_ShadedBathyList = null; - - WorldWind.Renderable.ImageLayer m_BlueMarbleBase = null; - WorldWind.Renderable.QuadTileSet m_BlueMarbleTiled = null; - WorldWind.Renderable.RenderableObjectList m_RenderableList = new WorldWind.Renderable.RenderableObjectList("The Blue Marble"); - - WorldWind.Renderable.RenderableObjectList[,] m_RenderableLayers = new WorldWind.Renderable.RenderableObjectList[3, 12]; - WorldWind.Renderable.ImageLayer[,] m_ImageLayers = new WorldWind.Renderable.ImageLayer[3, 12]; - WorldWind.Renderable.QuadTileSet[,] m_QuadTileLayers = new WorldWind.Renderable.QuadTileSet[3, 12]; - public WorldWind.WorldWindow m_WorldWindow = null; - public MenuItem m_MenuItem; - - private Timer timer; - private IContainer components; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.Label label7; - private System.Windows.Forms.Label label8; - private System.Windows.Forms.Label label9; - private System.Windows.Forms.Label label10; - private System.Windows.Forms.Label label12; - private System.Windows.Forms.Label label13; - private System.Windows.Forms.Label label14; - private ToolTip toolTip1; - string m_BmngBaseImageUrl = "http://worldwind28.arc.nasa.gov/public/"; - - public BMNG(WorldWind.WorldWindow worldWindow, MenuItem menuItem) - { - // - // Required for Windows Form Designer support - // - InitializeComponent(); - - this.m_MenuItem = menuItem; // Plugin menu item ref - - comboBoxBmngVersion.SelectedIndex = WorldWind.World.Settings.BmngVersion; - - m_WorldWindow = worldWindow; - m_RenderableList.ShowOnlyOneLayer = true; - bool foundImagesObject = false; - lock (m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects.SyncRoot) - { - foreach (WorldWind.Renderable.RenderableObject ro in m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects) - { - if (ro is WorldWind.Renderable.RenderableObjectList && (ro.Name == "Images")) // SF FIX: don't add to layers called 'xxxx images'! - { - WorldWind.Renderable.RenderableObjectList imagesList = ro as WorldWind.Renderable.RenderableObjectList; - imagesList.ChildObjects.Insert(0, m_RenderableList); - foundImagesObject = true; - break; - } - } - } - - if (!foundImagesObject) - { - m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects.Add(m_RenderableList); - } - - m_BlueMarbleBase = new WorldWind.Renderable.ImageLayer( - "Blue Marble Base Image", - m_WorldWindow.CurrentWorld, - 0, - null, - -90, 90, -180, 180, 1.0f, null); - m_BlueMarbleBase.ImageUrl = "http://worldwind.arc.nasa.gov/downloads/land_shallow_topo_2048.dds"; - - WorldWind.ImageStore ia = new WorldWind.NltImageStore("106", "http://nww.terraserver-usa.com/nwwtile.ashx"); - ia.DataDirectory = null; - ia.LevelZeroTileSizeDegrees = 36.0; - ia.LevelZeroTileSizeDegrees = 4; - ia.ImageExtension = "jpg"; - ia.CacheDirectory = String.Format("{0}\\Blue Marble", m_WorldWindow.Cache.CacheDirectory); - - WorldWind.ImageStore[] ias = new WorldWind.ImageStore[1]; - ias[0] = ia; - m_BlueMarbleTiled = new WorldWind.Renderable.QuadTileSet( - "Blue Marble Tiled", - m_WorldWindow.CurrentWorld, - 0, - 90, - -90, - -180, - 180, - true, - ias - ); - m_BlueMarbleTiled.ServerLogoFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "\\Data\\Icons\\Interface\\meatball.png"; - - m_BlueMarbleList = new WorldWind.Renderable.RenderableObjectList("Blue Marble"); - m_BlueMarbleList.IsOn = false; - m_BlueMarbleList.Add(m_BlueMarbleBase); - m_BlueMarbleList.Add(m_BlueMarbleTiled); - - m_ShadedList = new WorldWind.Renderable.RenderableObjectList("BMNG"); - m_ShadedList.ShowOnlyOneLayer = true; - m_ShadedList.IsOn = false; - - for (int i = 0; i < 12; i++) - { - m_ImageLayers[0, i] = new WorldWind.Renderable.ImageLayer( - String.Format("Base Image - {0}.2004", i + 1), - m_WorldWindow.CurrentWorld, - 0, - null, - -90, 90, -180, 180, 1.0f, null); - m_ImageLayers[0, i].ImageUrl = String.Format("{0}world.topo.2004{1:D2}.jpg", m_BmngBaseImageUrl, i + 1); - - WorldWind.NltImageStore imageStore = new WorldWind.NltImageStore(String.Format("bmng.topo.2004{0:D2}", i + 1), "http://worldwind25.arc.nasa.gov/tile/tile.aspx"); - imageStore.DataDirectory = null; - imageStore.LevelZeroTileSizeDegrees = 36.0; - imageStore.LevelCount = 5; - imageStore.ImageExtension = "jpg"; - imageStore.CacheDirectory = String.Format("{0}\\BMNG\\{1}", m_WorldWindow.Cache.CacheDirectory, String.Format("BMNG (Shaded) Tiled - {0}.2004", i + 1)); - - ias = new WorldWind.ImageStore[1]; - ias[0] = imageStore; - - m_QuadTileLayers[0, i] = new WorldWind.Renderable.QuadTileSet( - String.Format("Tiled - {0}.2004", i + 1), - m_WorldWindow.CurrentWorld, - 0, - 90, -90, -180, 180, - true, - ias); - - m_QuadTileLayers[0, i].ServerLogoFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "\\Data\\Icons\\Interface\\meatball.png"; - - m_RenderableLayers[0, i] = new WorldWind.Renderable.RenderableObjectList(String.Format("{0}.2004", i + 1)); - m_RenderableLayers[0, i].IsOn = false; - - m_RenderableLayers[0, i].Add(m_ImageLayers[0, i]); - m_RenderableLayers[0, i].Add(m_QuadTileLayers[0, i]); - m_ShadedList.Add(m_RenderableLayers[0, i]); - } - - m_ShadedBathyList = new WorldWind.Renderable.RenderableObjectList("BMNG (Bathymetry)"); - m_ShadedBathyList.ShowOnlyOneLayer = true; - m_ShadedBathyList.IsOn = false; - - for (int i = 0; i < 12; i++) - { - m_ImageLayers[1, i] = new WorldWind.Renderable.ImageLayer( - String.Format("Base Image - {0}.2004", i + 1), - m_WorldWindow.CurrentWorld, - 0, - String.Format("{0}\\Data\\Earth\\BmngBathy\\world.topo.bathy.2004{1:D2}.jpg", Path.GetDirectoryName(Application.ExecutablePath), i + 1), - -90, 90, -180, 180, 1.0f, null); - - // m_ImageLayers[1, i].ImageUrl = String.Format("{0}world.topo.bathy.2004{1:D2}.jpg", m_BmngBaseImageUrl, i+1); - - WorldWind.NltImageStore imageStore = new WorldWind.NltImageStore(String.Format("bmng.topo.bathy.2004{0:D2}", i + 1), "http://worldwind25.arc.nasa.gov/tile/tile.aspx"); - imageStore.DataDirectory = null; - imageStore.LevelZeroTileSizeDegrees = 36.0; - imageStore.LevelCount = 5; - imageStore.ImageExtension = "jpg"; - imageStore.CacheDirectory = String.Format("{0}\\BMNG\\{1}", m_WorldWindow.Cache.CacheDirectory, String.Format("BMNG (Shaded + Bathymetry) Tiled - {0}.2004", i + 1)); - - ias = new WorldWind.ImageStore[1]; - ias[0] = imageStore; - - m_QuadTileLayers[1, i] = new WorldWind.Renderable.QuadTileSet( - String.Format("Tiled - {0}.2004", i + 1), - m_WorldWindow.CurrentWorld, - 0, - 90, -90, -180, 180, true, ias); - - m_QuadTileLayers[0, i].ServerLogoFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "\\Data\\Icons\\Interface\\meatball.png"; - - m_RenderableLayers[1, i] = new WorldWind.Renderable.RenderableObjectList(String.Format("{0}.2004", i + 1)); - m_RenderableLayers[1, i].IsOn = false; - - m_RenderableLayers[1, i].Add(m_ImageLayers[1, i]); - m_RenderableLayers[1, i].Add(m_QuadTileLayers[1, i]); - m_ShadedBathyList.Add(m_RenderableLayers[1, i]); - } - - /* m_UnShadedList = new WorldWind.Renderable.RenderableObjectList("BMNG (UnShaded)"); - m_UnShadedList.ShowOnlyOneLayer = true; - m_UnShadedList.IsOn = false; - - for(int i = 0; i < 12; i++) - { - m_ImageLayers[2, i] = new WorldWind.Renderable.ImageLayer( - String.Format("Base Image - {0}.2004 un", i+1), - m_WorldWindow.CurrentWorld, - 0, - null, - -90, 90, -180, 180, 1.0f, m_WorldWindow.CurrentWorld.TerrainAccessor); - - m_ImageLayers[2, i].ImageUrl = String.Format("{0}world.2004{1:D2}.jpg", m_BmngBaseImageUrl, i+1); - m_ImageLayers[2, i].IsOn = false; - - m_QuadTileLayers[2, i] = new WorldWind.Renderable.QuadTileSet( - String.Format("Tiled - {0}.2004", i+1), - m_WorldWindow.CurrentWorld, - 0, - 90, -90, -180, 180, m_WorldWindow.CurrentWorld.TerrainAccessor, - new WorldWind.ImageAccessor( - null, 512, 36.0, 5, "jpg", - String.Format("{0}\\BMNG\\{1}", m_WorldWindow.Cache.CacheDirectory, String.Format("BMNG (UnShaded) Tiled - {0}.2004", i+1)), - new WorldWind.ImageTileService( - String.Format("bmng.2004{0:D2}", i+1), "http://worldwind28.arc.nasa.gov/TestWebApp/WebForm1.aspx", - Path.GetDirectoryName(Application.ExecutablePath) + "\\Data\\Icons\\Interface\\meatball.png") - )); - - m_RenderableLayers[2, i] = new WorldWind.Renderable.RenderableObjectList(String.Format("{0}.2004", i+1)); - m_RenderableLayers[2, i].IsOn = false; - - m_RenderableLayers[2, i].Add(m_ImageLayers[1, i]); - m_RenderableLayers[2, i].Add(m_QuadTileLayers[1, i]); - m_UnShadedList.Add(m_RenderableLayers[2, i]); - }*/ - - m_RenderableList.Add(m_BlueMarbleList); - m_RenderableList.Add(m_ShadedList); - m_RenderableList.Add(m_ShadedBathyList); - // m_RenderableList.Add(m_UnShadedList); - - this.trackBarMonth.Value = System.DateTime.Now.Month - 1; - - timer = new Timer(); - timer.Interval = 1000; - timer.Tick += new EventHandler(timer_Tick); - timer.Start(); - } - - protected override void OnClosing(CancelEventArgs e) - { - e.Cancel = true; - this.Visible = false; - this.m_MenuItem.Checked = false; - base.OnClosing(e); - } - - - /// <summary> - /// Clean up any resources being used. - /// </summary> - protected override void Dispose(bool disposing) - { - if (disposing) - { - if (components != null) - { - components.Dispose(); - } - } - - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - /// <summary> - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// </summary> - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.comboBoxBmngVersion = new System.Windows.Forms.ComboBox(); - this.trackBarMonth = new System.Windows.Forms.TrackBar(); - this.statusBarMonth = new System.Windows.Forms.StatusBar(); - this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components); - this.menuItemHelp = new System.Windows.Forms.MenuItem(); - this.menuItemAbout = new System.Windows.Forms.MenuItem(); - this.label2 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.label4 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); - this.label7 = new System.Windows.Forms.Label(); - this.label8 = new System.Windows.Forms.Label(); - this.label9 = new System.Windows.Forms.Label(); - this.label10 = new System.Windows.Forms.Label(); - this.label12 = new System.Windows.Forms.Label(); - this.label13 = new System.Windows.Forms.Label(); - this.label14 = new System.Windows.Forms.Label(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - ((System.ComponentModel.ISupportInitialize)(this.trackBarMonth)).BeginInit(); - this.SuspendLayout(); - // - // comboBoxBmngVersion - // - this.comboBoxBmngVersion.Items.AddRange(new object[] { - "BMNG", - "BMNG (Bathymetry)", - "Blue Marble (Original)"}); - this.comboBoxBmngVersion.Location = new System.Drawing.Point(8, 8); - this.comboBoxBmngVersion.Name = "comboBoxBmngVersion"; - this.comboBoxBmngVersion.Size = new System.Drawing.Size(344, 21); - this.comboBoxBmngVersion.TabIndex = 0; - this.toolTip1.SetToolTip(this.comboBoxBmngVersion, "Select Base Imagery to display."); - this.comboBoxBmngVersion.SelectedIndexChanged += new System.EventHandler(this.comboBoxBmngVersion_SelectedIndexChanged); - // - // trackBarMonth - // - this.trackBarMonth.Location = new System.Drawing.Point(8, 32); - this.trackBarMonth.Maximum = 11; - this.trackBarMonth.Name = "trackBarMonth"; - this.trackBarMonth.Size = new System.Drawing.Size(352, 42); - this.trackBarMonth.TabIndex = 1; - this.toolTip1.SetToolTip(this.trackBarMonth, "Select Month of Base imagery to display. Note this is set to your system date by" + - " default."); - this.trackBarMonth.Value = 1; - this.trackBarMonth.Scroll += new System.EventHandler(this.trackBarMonth_Scroll); - // - // statusBarMonth - // - this.statusBarMonth.Location = new System.Drawing.Point(0, 101); - this.statusBarMonth.Name = "statusBarMonth"; - this.statusBarMonth.Size = new System.Drawing.Size(362, 22); - this.statusBarMonth.SizingGrip = false; - this.statusBarMonth.TabIndex = 2; - // - // mainMenu1 - // - this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { - this.menuItemHelp}); - // - // menuItemHelp - // - this.menuItemHelp.Index = 0; - this.menuItemHelp.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { - this.menuItemAbout}); - this.menuItemHelp.Text = "Help"; - // - // menuItemAbout - // - this.menuItemAbout.Index = 0; - this.menuItemAbout.Text = "About"; - this.menuItemAbout.Click += new System.EventHandler(this.menuItemAbout_Click); - // - // label2 - // - this.label2.Location = new System.Drawing.Point(8, 80); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(32, 23); - this.label2.TabIndex = 4; - this.label2.Text = "Jan"; - this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // - // label3 - // - this.label3.Location = new System.Drawing.Point(40, 80); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(24, 23); - this.label3.TabIndex = 5; - this.label3.Text = "Feb"; - // - // label4 - // - this.label4.Location = new System.Drawing.Point(64, 80); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(32, 23); - this.label4.TabIndex = 6; - this.label4.Text = "Mar"; - this.label4.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // - // label5 - // - this.label5.Location = new System.Drawing.Point(96, 80); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(32, 23); - this.label5.TabIndex = 7; - this.label5.Text = "Apr"; - this.label5.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // - // label6 - // - this.label6.Location = new System.Drawing.Point(128, 80); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(32, 23); - this.label6.TabIndex = 8; - this.label6.Text = "May"; - // - // label7 - // - this.label7.Location = new System.Drawing.Point(160, 80); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(24, 23); - this.label7.TabIndex = 9; - this.label7.Text = "Jun"; - this.label7.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // - // label8 - // - this.label8.Location = new System.Drawing.Point(192, 80); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(24, 23); - this.label8.TabIndex = 10; - this.label8.Text = "Jul"; - // - // label9 - // - this.label9.Location = new System.Drawing.Point(216, 80); - this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(24, 23); - this.label9.TabIndex = 11; - this.label9.Text = "Aug"; - // - // label10 - // - this.label10.Location = new System.Drawing.Point(248, 80); - this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(24, 23); - this.label10.TabIndex = 12; - this.label10.Text = "Sep"; - // - // label12 - // - this.label12.Location = new System.Drawing.Point(280, 80); - this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(24, 23); - this.label12.TabIndex = 13; - this.label12.Text = "Oct"; - // - // label13 - // - this.label13.Location = new System.Drawing.Point(304, 80); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(24, 23); - this.label13.TabIndex = 14; - this.label13.Text = "Nov"; - // - // label14 - // - this.label14.Location = new System.Drawing.Point(336, 80); - this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(24, 23); - this.label14.TabIndex = 15; - this.label14.Text = "Dec"; - // - // BMNG - // - this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); - this.ClientSize = new System.Drawing.Size(362, 123); - this.Controls.Add(this.label14); - this.Controls.Add(this.label13); - this.Controls.Add(this.label10); - this.Controls.Add(this.label9); - this.Controls.Add(this.label8); - this.Controls.Add(this.label7); - this.Controls.Add(this.label6); - this.Controls.Add(this.label5); - this.Controls.Add(this.label4); - this.Controls.Add(this.label3); - this.Controls.Add(this.label2); - this.Controls.Add(this.statusBarMonth); - this.Controls.Add(this.trackBarMonth); - this.Controls.Add(this.comboBoxBmngVersion); - this.Controls.Add(this.label12); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; - this.Menu = this.mainMenu1; - this.Name = "BMNG"; - this.Text = "Blue Marble Next-Generation Plugin v1.0"; - ((System.ComponentModel.ISupportInitialize)(this.trackBarMonth)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - #endregion - - BmngAboutDialog m_BmngAboutDialog = null; - private void menuItemAbout_Click(object sender, System.EventArgs e) - { - if (m_BmngAboutDialog == null) - { - m_BmngAboutDialog = new BmngAboutDialog(); - m_BmngAboutDialog.Owner = this; - } - - m_BmngAboutDialog.ShowDialog(); - - - } - - private void trackBarMonth_Scroll(object sender, System.EventArgs e) - { - try - { - - } - catch - { } - } - - private string GetMonth(int month) - { - switch (month) - { - case 1: - return "January"; - case 2: - return "February"; - case 3: - return "March"; - case 4: - return "April"; - case 5: - return "May"; - case 6: - return "June"; - case 7: - return "July"; - case 8: - return "August"; - case 9: - return "September"; - case 10: - return "October"; - case 11: - return "November"; - default: - return "December"; - } - } - - private void comboBoxBmngVersion_SelectedIndexChanged(object sender, System.EventArgs e) - { - WorldWind.World.Settings.BmngVersion = comboBoxBmngVersion.SelectedIndex; - } - - int m_CurrentMonth = -1; - int m_CurrentVersion = -1; - - private void TurnOffLayers() - { - if (m_ImageLayers == null || m_QuadTileLayers == null) - { - return; - } - - for (int i = 0; i < 2; i++) - { - for (int j = 0; j < 12; j++) - { - if (m_RenderableLayers[i, j].IsOn) - { - m_RenderableLayers[i, j].IsOn = false; - } - } - } - } - - private void setMonthLabelsAndSlider(bool enabled) - { - this.trackBarMonth.Visible = enabled; - label2.Visible = enabled; - label3.Visible = enabled; - label4.Visible = enabled; - label5.Visible = enabled; - label6.Visible = enabled; - label7.Visible = enabled; - label8.Visible = enabled; - label9.Visible = enabled; - label10.Visible = enabled; - label12.Visible = enabled; - label13.Visible = enabled; - label14.Visible = enabled; - - if (enabled) - { - this.Height = 168; - } - else - { - this.Height = 120; - } - } - - private void timer_Tick(object sender, EventArgs e) - { - try - { - //Added TimeKeeper based Modis Month - //if (WorldWind.TimeKeeper.CurrentTimeUtc.Month != trackBarMonth.Value) - // trackBarMonth.Value = WorldWind.TimeKeeper.CurrentTimeUtc.Month-1; - - - if (m_CurrentMonth != trackBarMonth.Value) - { - TurnOffLayers(); - - for (int i = 0; i < 2; i++) - { - m_RenderableLayers[i, trackBarMonth.Value].IsOn = true; - } - - m_CurrentMonth = trackBarMonth.Value; - this.statusBarMonth.Text = GetMonth(trackBarMonth.Value + 1) + " - 2004"; - } - - if (m_CurrentVersion != comboBoxBmngVersion.SelectedIndex) - { - m_CurrentVersion = comboBoxBmngVersion.SelectedIndex; - - if (m_BlueMarbleList.IsOn) - m_BlueMarbleList.IsOn = false; - - if (m_ShadedList.IsOn) - m_ShadedList.IsOn = false; - - if (m_ShadedBathyList.IsOn) - m_ShadedBathyList.IsOn = false; - - - if (comboBoxBmngVersion.SelectedIndex == 2)//3) - { - // show blue marble (original) - m_BlueMarbleList.IsOn = true; - this.statusBarMonth.Text = ""; - setMonthLabelsAndSlider(false); - } - else - { - setMonthLabelsAndSlider(true); - switch (comboBoxBmngVersion.SelectedIndex) - { - case 0: - m_ShadedList.IsOn = true; - break; - case 1: - m_ShadedBathyList.IsOn = true; - break; - // case 2: - // m_UnShadedList.IsOn = true; - // break; - default: - break; - - } - - } - - } - } - catch - { } - } - } - - public class BmngLoader : WorldWind.PluginEngine.Plugin - { - BMNG m_BmngForm = null; - MenuItem m_MenuItem; - WorldWind.WindowsControlMenuButton m_ToolbarItem; - - public override void Load() - { - if (ParentApplication.WorldWindow.CurrentWorld.Name.IndexOf("Earth") >= 0) - { - m_MenuItem = new MenuItem("Blue Marble"); - m_MenuItem.Click += new EventHandler(menuItemClicked); - ParentApplication.PluginsMenu.MenuItems.Add(m_MenuItem); - - m_BmngForm = new BMNG(ParentApplication.WorldWindow, m_MenuItem); - m_BmngForm.Owner = ParentApplication; - - m_ToolbarItem = new WorldWind.WindowsControlMenuButton( - "NASA Blue Marble", - Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\Data\\Icons\\Interface\\bmng.png", - m_BmngForm); - - ParentApplication.WorldWindow.MenuBar.AddToolsMenuButton(m_ToolbarItem); - - base.Load(); - } - } - - public override void Unload() - { - if (m_BmngForm != null) - { - m_BmngForm.Dispose(); - m_BmngForm = null; - ParentApplication.PluginsMenu.MenuItems.Remove(m_MenuItem); - } - - base.Unload(); - } - - private void menuItemClicked(object sender, System.EventArgs e) - { - if (m_BmngForm.Visible) - { - m_BmngForm.Visible = false; - m_MenuItem.Checked = false; - } - else - { - m_BmngForm.Visible = true; - m_MenuItem.Checked = true; - } - } - } -} \ No newline at end of file Deleted: branches/josepharmbruster/WorldWind/WorldWind/BMNG.resx =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/BMNG.resx 2009-03-05 02:21:34 UTC (rev 4062) +++ branches/josepharmbruster/WorldWind/WorldWind/BMNG.resx 2009-03-05 02:22:22 UTC (rev 4063) @@ -1,126 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<root> - <!-- - Microsoft ResX Schema - - Version 2.0 - - The primary goals of this format is to allow a simple XML format - that is mostly human readable. The generation and parsing of the - various data types are done through the TypeConverter classes - associated with the data types. - - Example: - - ... ado.net/XML headers & schema ... - <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">2.0</resheader> - <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> - <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> - <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> - <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - <value>[base64 mime encoded serialized .NET Framework object]</value> - </data> - <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> - <comment>This is a comment</comment> - </data> - - There are any number of "resheader" rows that contain simple - name/value pairs. - - Each data row contains a name, and value. The row also contains a - type or mimetype. Type corresponds to a .NET class that support - text/value conversion through the TypeConverter architecture. - Classes that don't support this are serialized and stored with the - mimetype set. - - The mimetype is used for serialized objects, and tells the - ResXResourceReader how to depersist the object. This is currently not - extensible. For a given mimetype the value must be set accordingly: - - Note - application/x-microsoft.net.object.binary.base64 is the format - that the ResXResourceWriter will generate, however the reader can - read any of the formats listed below. - - mimetype: application/x-microsoft.net.object.binary.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.soap.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Soap.SoapFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.bytearray.base64 - value : The object must be serialized into a byte array - : using a System.ComponentModel.TypeConverter - : and then encoded with base64 encoding. - --> - <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> - <xsd:element name="root" msdata:IsDataSet="true"> - <xsd:complexType> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="metadata"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" /> - </xsd:sequence> - <xsd:attribute name="name" use="required" type="xsd:string" /> - <xsd:attribute name="type" type="xsd:string" /> - <xsd:attribute name="mimetype" type="xsd:string" /> - <xsd:attribute ref="xml:space" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="assembly"> - <xsd:complexType> - <xsd:attribute name="alias" type="xsd:string" /> - <xsd:attribute name="name" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="data"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> - <xsd:attribute ref="xml:space" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="resheader"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" /> - </xsd:complexType> - </xsd:element> - </xsd:choice> - </xsd:complexType> - </xsd:element> - </xsd:schema> - <resheader name="resmimetype"> - <value>text/microsoft-resx</value> - </resheader> - <resheader name="version"> - <value>2.0</value> - </resheader> - <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> - <value>126, 17</value> - </metadata> - <metadata name="mainMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> - <value>17, 17</value> - </metadata> -</root> \ No newline at end of file Deleted: branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.cs 2009-03-05 02:21:34 UTC (rev 4062) +++ branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.cs 2009-03-05 02:22:22 UTC (rev 4063) @@ -1,186 +0,0 @@ -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; - -namespace NASA.Plugins -{ - /// <summary> - /// Summary description for BmngAboutDialog. - /// </summary> - public class BmngAboutDialog : System.Windows.Forms.Form - { - private System.Windows.Forms.PictureBox pictureBox1; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.LinkLabel linkLabel1; - private System.Windows.Forms.LinkLabel linkLabel2; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.LinkLabel linkLabel3; - /// <summary> - /// Required designer variable. - /// </summary> - private System.ComponentModel.Container components = null; - - public BmngAboutDialog() - { - // - // Required for Windows Form Designer support - // - InitializeComponent(); - - // - // TODO: Add any constructor code after InitializeComponent call - // - } - - /// <summary> - /// Clean up any resources being used. - /// </summary> - protected override void Dispose( bool disposing ) - { - if( disposing ) - { - if(components != null) - { - components.Dispose(); - } - } - base.Dispose( disposing ); - } - - #region Windows Form Designer generated code - /// <summary> - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// </summary> - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BmngAboutDialog)); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.linkLabel1 = new System.Windows.Forms.LinkLabel(); - this.linkLabel2 = new System.Windows.Forms.LinkLabel(); - this.label4 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.linkLabel3 = new System.Windows.Forms.LinkLabel(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.SuspendLayout(); - // - // pictureBox1 - // - this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); - this.pictureBox1.Location = new System.Drawing.Point(8, 8); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(128, 128); - this.pictureBox1.TabIndex = 0; - this.pictureBox1.TabStop = false; - // - // label1 - // - this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label1.Location = new System.Drawing.Point(144, 8); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(216, 23); - this.label1.TabIndex = 1; - this.label1.Text = "Blue Marble Next-Generation Plugin"; - // - // label2 - // - this.label2.Location = new System.Drawing.Point(144, 32); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(216, 23); - this.label2.TabIndex = 2; - this.label2.Text = "Source Imagery Prepared By:"; - // - // label3 - // - this.label3.Location = new System.Drawing.Point(144, 80); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(208, 23); - this.label3.TabIndex = 3; - this.label3.Text = "Plugin and Web Services Provided By:"; - // - // linkLabel1 - // - this.linkLabel1.LinkColor = System.Drawing.SystemColors.GradientActiveCaption; - this.linkLabel1.Location = new System.Drawing.Point(144, 56); - this.linkLabel1.Name = "linkLabel1"; - this.linkLabel1.Size = new System.Drawing.Size(216, 23); - this.linkLabel1.TabIndex = 4; - this.linkLabel1.TabStop = true; - this.linkLabel1.Text = "http://bluemarble.nasa.gov"; - // - // linkLabel2 - // - this.linkLabel2.LinkColor = System.Drawing.SystemColors.GradientActiveCaption; - this.linkLabel2.Location = new System.Drawing.Point(144, 104); - this.linkLabel2.Name = "linkLabel2"; - this.linkLabel2.Size = new System.Drawing.Size(200, 23); - this.linkLabel2.TabIndex = 5; - this.linkLabel2.TabStop = true; - this.linkLabel2.Text = "http://worldwind.arc.nasa.gov"; - // - // label4 - // - this.label4.Location = new System.Drawing.Point(8, 144); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(232, 24); - this.label4.TabIndex = 6; - this.label4.Text = "For Questions or Comments, Please Contact:"; - // - // label5 - // - this.label5.Location = new System.Drawing.Point(232, 136); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(80, 24); - this.label5.TabIndex = 7; - this.label5.Text = "Randy Kim"; - // - // linkLabel3 - // - this.linkLabel3.LinkColor = System.Drawing.SystemColors.GradientActiveCaption; - this.linkLabel3.Location = new System.Drawing.Point(232, 160); - this.linkLabel3.Name = "linkLabel3"; - this.linkLabel3.Size = new System.Drawing.Size(128, 23); - this.linkLabel3.TabIndex = 8; - this.linkLabel3.TabStop = true; - this.linkLabel3.Text = "rk...@ma..."; - this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel3_LinkClicked); - // - // BmngAboutDialog - // - this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(111)))), ((int)(((byte)(111)))), ((int)(((byte)(111))))); - this.ClientSize = new System.Drawing.Size(362, 184); - this.Controls.Add(this.linkLabel3); - this.Controls.Add(this.label5); - this.Controls.Add(this.label4); - this.Controls.Add(this.linkLabel2); - this.Controls.Add(this.linkLabel1); - this.Controls.Add(this.label3); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Controls.Add(this.pictureBox1); - this.ForeColor = System.Drawing.Color.White; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; - this.Name = "BmngAboutDialog"; - this.Text = "Blue Marble Next-Generation About Dialog"; - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.ResumeLayout(false); - - } - #endregion - - private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - - } - } -} Deleted: branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.resx =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.resx 2009-03-05 02:21:34 UTC (rev 4062) +++ branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.resx 2009-03-05 02:22:22 UTC (rev 4063) @@ -1,194 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<root> - <!-- - Microsoft ResX Schema - - Version 2.0 - - The primary goals of this format is to allow a simple XML format - that is mostly human readable. The generation and parsing of the - various data types are done through the TypeConverter classes - associated with the data types. - - Example: - - ... ado.net/XML headers & schema ... - <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">2.0</resheader> - <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> - <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> - <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> - <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - <value>[base64 mime encoded serialized .NET Framework object]</value> - </data> - <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> - <comment>This is a comment</comment> - </data> - - There are any number of "resheader" rows that contain simple - name/value pairs. - - Each data row contains a name, and value. The row also contains a - type or mimetype. Type corresponds to a .NET class that support - text/value conversion through the TypeConverter architecture. - Classes that don't support this are serialized and stored with the - mimetype set. - - The mimetype is used for serialized objects, and tells the - ResXResourceReader how to depersist the object. This is currently not - extensible. For a given mimetype the value must be set accordingly: - - Note - application/x-microsoft.net.object.binary.base64 is the format - that the ResXResourceWriter will generate, however the reader can - read any of the formats listed below. - - mimetype: application/x-microsoft.net.object.binary.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.soap.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Soap.SoapFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.bytearray.base64 - value : The object must be serialized into a byte array - : using a System.ComponentModel.TypeConverter - : and then encoded with base64 encoding. - --> - <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> - <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> - <xsd:element name="root" msdata:IsDataSet="true"> - <xsd:complexType> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="metadata"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" /> - </xsd:sequence> - <xsd:attribute name="name" use="required" type="xsd:string" /> - <xsd:attribute name="type" type="xsd:string" /> - <xsd:attribute name="mimetype" type="xsd:string" /> - <xsd:attribute ref="xml:space" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="assembly"> - <xsd:complexType> - <xsd:attribute name="alias" type="xsd:string" /> - <xsd:attribute name="name" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="data"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> - <xsd:attribute ref="xml:space" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="resheader"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" /> - </xsd:complexType> - </xsd:element> - </xsd:choice> - </xsd:complexType> - </xsd:element> - </xsd:schema> - <resheader name="resmimetype"> - <value>text/microsoft-resx</value> - </resheader> - <resheader name="version"> - <value>2.0</value> - </resheader> - <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> - <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value> - iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEwAA - CxMBAJqcGAAAD4hJREFUeF7tXWvLZlUZtl9QvyD6A0FfA6GEIklEsQPl4CBFgZRl9SGTiMQwJywrrPlQ - OtEBK8YODMVAiVgyCZWWRWEHrSynQDSbtLLD7r32eL3cz/2ute51fvaeZ214eN95n73XXmtd133dh7X2 - nudN03TeOHZ4BkCA8dndORjg77gBDAIMAuyu/A3Xtxf/jUnYbQMYBBguYLctYNcVcCjAUIChALusAkMB - hgIMBRgKsONWMAgwCLCzrnBnB77LVi/HPgiw4+qXRIDVrZq/9cR0Xq3P6gZvd3jeC5IihXaT7c8I9bca - 2BGk2ZDR9sNucodVEcAHfE/Qffdi35qg1LDRxRLAUqVaoL/khnsmfGq1tzZVWAQBLLA3JjVCmlPArE0A - ee+gq2po1TFNP/nSCyZ8uhMgBeyWwKeQpPTcJRJhKwTIAb908pdyvTX2GKutdQ7BR3vdFMCaANf3SwEP - /bj00z+sEif0VgMdnBJ8/FwsAVoD/6L33TXhE3sfgP/I489MVx77yfSCa05GX2dlDJoMtSycwOqAVIPf - jQAp1h8LSsl513zl59Mt3334AJD4myYGACcB8DOFOFYfnapXgQWudiX4tP4uBFga+CFQQAwfwPjOAjTn - +9oqkAJ+cwKsCfwc8GpdU6t2EAO+tP6mBFgC+JZc1/DnLUiQU1XMAb8ZAWLBrzV5vnY+eOKhCdLtq/Qd - O/VoE1nPHZdv3qywIBZ8bf1NCLAU8AkCAjcQoVYalwtu7HWpgWEJ+NUJEAv+XHyoXNL1tQc3AKmPkXso - Qsx5rfseIkFojnWk70r7tJpUKwT1Av/lN5+avv7A6Tkv54Hf737o8dnSpdwDfPytNWAt2ndlB7ngu6Sf - ROhOgNzJgmUCeBwAHDk7pR0/8e8H/vDU/vfw/Uuw5tzx4rpYowpZfgj8qi4gprMlk0HwLYuG1QN8kOTJ - p5+dSbJmIpRYvQV+VwKUgI8SLA78TGkH7gKuoQYRoDA19w3EjsNHAMvqY8CvSgBXcCE7Hztg13mQdgCZ - 2wZLuVAFkCKnHYC/LSWR8xgD/MZSr5FDVosB5H0OBDAFET8kHUcscD6Q8He4AxxwJ9sCM4d8jAdSwZ/B - 7U2AmuBj4JB9SLieOFi1dgkEOTTJsGQoCtRgG5KeQ4AU4LnLhzh0JYDLX+UMWF4Dq3XJP8CWpV78LgPF - kIXjO+T8OFot8pSOG9e/8MovTV981VvmrVuxH1f6GCJBNRfQAnxMAoIvABsq95IIJEHs5DO4XEoBiP1+ - /puPT9deel006NLnb8RdlvnX3BHUigAs8FiVPn5vLQDpduAG4GLgFpYQF1x12fXT786/sBj8GP9fNQuo - 7fsJlKUAsdYeOg+k2XZccPnrbpp++rJLkoHXPj/W9zevBNYABm34YoBa7bMdWD9IADXoGRyWAO8DP9b6 - mylATXBAAETsNdv0tQUSsHDUkgT08bkWr3f1pgZ+OmWv8mxgraKPK91DtN6DALwHgsIWSkDgc3w8Qf/e - Ba+frnrN9fs7ep2xV0Tw18wF1AYKlphSCKp1/5okQDr3qVe/PSu4k+kf2tgf33MRfIn1N3EBtQCQ7bCW - 36LtUJulJDj/0NHkPB6Au1wD0kLd11LrXw0BUAcoWQsoIQ4Dw5QUEYEdpDq2eMPz4Bq0UuBvaM81hsUR - oGSiQ9eiWocjBYRafWF2YNUJIPM3XvyebJnHtboGACV48eHbvfFPqfxXV4Bak67b4YJQ6nJwrf6QBC4V - uugNt2TJPK0eFk/ySMVACRhBozWG1Mpf0y1hVmdLvkcqGCoJl7Qdcy0rhihMEbCSNI7AA+QTrzi84S5c - /t7Xx1IVqLoWEDORuedwKXcbbgB9BlBH3n10+t+ZM9PTN9yU7N+1xaNNyLskEfw9AseUOVoMAVI6nXMu - 3UDv1TtIvAzMAD5I8LfD8at0ABY+HsrBsSOwk/UAqECM5FuZQEIJYD61mgLkgJp6DXxwj6ogLBOAaYk/ - 87Z3TX9/7/un/z52evrPr3494d9/feXFsxo88/Fbp2fvuXdDGXA9AjsJLH4HoaS/T5H8mGwghQRNCQCr - RQ4fOvROH981iMKxCQSH6yEPLu2G7hV6EgjWCbA06AD4X986OVu97wAhcPz7/r3NK3tkAMAuKf/RXT/e - UI6nLnvjTCR55DzAUuIGmhIAbGXw5Js8l0Xra2QKxmcAXJYQQwIZQxB0X84OmQ8Br8d0/y/+5JVxneLR - leg2cgLdRRMAQDGA85HAtdVbXiNVgiD79ghaivPRL5yaLd0q1PjAh5X/47Ofmz+/+cGDG0NypYmQfLmr - B4oCVxE6Uvc0rJ4AAE0P2kcAEAoq4JJzuojQ5EKuYyp0lHXZFkCHi0B8wAIN0kIcGIMmANyADvS+9v1N - yXf11Xr2oWYgWMcFGLt+LQXAJGjpCxGAKqBJQzCC5rX3JYK3EAnwveu47c6D7wlikQj9JXCwepBElnih - OiSv1b/UQHf7ClCBAJgUKeshAmAiXc8K8HlB+O2Q70ZQFyIALN13wMp1RZIxCwgJq5eBJNI7pn9c2UTb - 8tlG171SgsFzhgCS+RYBQBYchz98cvbp917+jv15BMD4+A6Qg+kbiQDQEL0j7//YNzZ9u6sdSL58pxB+ - /+3PHnZaPSWbaxpoDwCH4pWUYHBVBODWbR84lNEQAeB/AbosxiAP54EIG9+FjsduPFvDRzuyQAOwSC5L - qvn9Vz9xfHrwokNzfQB1Amn10l9DPXjAdVguK7bquSoCYHL5FK/PsvhYN7/HNb7iDC1YRta0bp1jy/uh - D6FCVKiPbAdKAsDZBxDvib884Vy1BJg8GCyyuukjWmzVc3UEsCwMEb5UgD9efa0ZuXMSAToBue/m24NG - HNr3Z9Uv/vnl4xtuBIEjMwdXFC8zFAmsVAXd2dhgcHUEgOVZrgD+lIcVtcMKeXznjrOBGO4hrc7FBOsd - QfJpI0kw2R9XXg/fruWbTyKhHZm9WMWrmGciV0mAmDKxRQD4WtTR7/z22cfHcTA7gGVxh69PBlxAudwC - QED+juxAZg8gni/b0OSSUT/7xp8hmbJIiv6ukgDoOPLqmIMWR8B1nd1KqUL3iNlkgsxApna/v/C1wWoe - rZ2WLtO/mPHqc6xgcFUEuOTI3fMeN5ZiXRU3PQFXf+ib3oDNCqSsCXcFg/DXmHTXw5ko8KDQA1XwpXGI - AeDiaL0xhbBQP61gcPsEwPpjoBgkJ0D7c+m/fZMQ8oMyt6blQVpxDT9WuqWDQVz352N3bJRxoQBaeXzt - QlVIEFYKOTbZL/l7KOuwgkFJgJSl4C77AZC+ITBz+XPugsUqWugIEUAGkzK3lpW0lGAQ/dVbtH555OhG - lRLtSeLJvkuwAKokSai4UxIMLpIAsBZMJKJkmY8jX4eMSmuyZNwXCMlJkwGdfsbPSun4FJB+JBvFpFAt - QZNWP02kQQ0FdDJLcBlDaFfyoghA4BEta/A5MNer2i0/qSfPZTG0MGYYmLSQr2Z/ALKsKqLfyPNTDtc7 - BlyguoJOy0WxHz4SLIYAct0b8v6RD3x+Lui4Pjpm4OtdfOfj7zJ/xr9ZMJLX8BwWXvhUka/d05/8zEZq - xzIuJh3tQz0g9/idW9LwHX4H4XyvmGc1k9fw/jqgixm37LvLHW6dAHplDWlT6n6/nPOtHJmW5arMwdfL - TSH6CZyU1bhQ3/mGspzxxVxTkgEUB4GuJdWYTvc8h9G1BFT7+tiHMHL73eJJY/alxPqzCeACHh3JnaCW - 10FiAQA+V1x3/IDV91ArKJUrl0/d+mXtCE5NAbMIoMHfeM684H2ALUkAP67LuK2tXo4HgZ8rBfS5sJj6 - /9YUQL6d4sCbJhZIAO3rEeEfetOtXWIUggQCWsUcnsu3lMSUqEvlP0sBfDLDzrS05NS2sdlDKhaWlbF4 - g7ig5StgZD/liqLuP+sT8u/cKQTFsPo4COBRHNTwZTUPET58vVyBRExQK9IPEZNVQ5anXSTQf4uxfr0K - mOP/myjAtoNB65k7vXXcVZRKVZqY830EsMjj+76G9a+eAFIi9QMYsHpuxdaTqKuO1ssfYgCW58DfM8KH - AiCowz2tVT0dOIbeijIIsCf/zK/1Axgo8ITerIGJ1mVaq6iUSgIZAPJtpzEPfMD3W+lhLfCbKUBPN6CL - OlhoigVLKkErArAvcDUpChAaw+oJ4IpuMUGxwQ8mR79ZI+flCmgH1paSd8eSS5+XEwO47lUT/KoKwMY2 - OuiJ0l3WBlJY0scJ0ZLfs6iTS4Ba5eD9dDs37FfXzWqtFxRC/w7d98DCRMXCENVBS74v0MsFqsZ1+n8s - 45K0bhsBYu4TQJXwr/iGkOd6lEMCWL7lg995230bj1lbr1CrAWRuG9qlQP5D44uNDWrLf3UXINcFYlyB - qyjiigN0ORfP8On36XAjZy5oMddxD1/MuTyHbxt17ewF8eWSNcbuK06VLvuGKrjVXIDrHXQpGQEmWBNA - +3vfWzO5eSMFHOtclzwDIICGTyh4ZAnY8v38P4xwPkji2wK+agKkkECCArDl07tWbm8BWvN7AAWygnjc - LcRX2vI/n8DfYwJbqyTtiskWGwP4VCCVBPJNWmuI8muSS7bVEvxmMYBeJk5ZKdSvUXO9Qg0WY62UhQDB - tTFVuVagxrbbGvwuBND1gdDgAT736YUKO/SXsi1uroyd3Bhpjm2r1XnnJAF8rkCCDxLolzbETHKJKsS0 - 3/McXy2mlu/f2MlVqxCUWyRCcMe3ablSvJ4Tv4R79QK/mwuw6gOM9FNfmWo9NbsEMFP7kFuFzVWGqqVg - qxN6cHK7VuruXO60SZ3gnuen/i8nlhJb85vzfVcCyIDwwO7ihHUDbrLc63yXbV09SLMN8LfmAjT4qTUC - AMJdNj3AaX2PbYHflQAcpAv8lDqBBGMNqZxFnm2C340AMeDnksCa4KV+v23gu6WBKeDnrCAuFeBQv5YC - fnMFcIFvDf5cJkHvFC8mK2iSBfjSPWsCvAWQhAxhqYrQs7gTA3wzF+AaKAI/y/J9xaK1K8JSge9KAAv8 - WYbEYZ2/VCu3lnH1OFMstdW51V2ABZ7r+5Q1hKUrguXmWgGZ2+7WCZDa8SXGCTGkTx1nr/O3RoAaA9wm - GWJA5zk1xtqqjeoEaNVRX7uxQJTEDbH3SHVvvefKdb9kApRMxrh2StqB3Wu+FtmpXoMf90l8NGxM2DKt - uASXoQB7dYiSCVz7tTs9+LWDV6P/gwBDAXZbAmtY0ZrbGAowFGAowJotuLTvQwGGAgwFKLWiNV8/FGAo - wFCANVtwad+HAgwFGApQakVrvn4owI4rwP8BfntWW3lGqn8AAAAASUVORK5CYII= -</value> - </data> -</root> \ No newline at end of file Deleted: branches/josepharmbruster/WorldWind/WorldWind/Compass3D.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/Compass3D.cs 2009-03-05 02:21:34 UTC (rev 4062) +++ branches/josepharmbruster/WorldWind/WorldWind/Compass3D.cs 2009-03-05 02:22:22 UTC (rev 4063) @@ -1,591 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using WorldWind; -using WorldWind.NewWidgets; - -using Microsoft.DirectX; -using Microsoft.DirectX.Direct3D; - -namespace NASA.Plugins -{ - public class Compass3D : WorldWind.PluginEngine.Plugin - { - string basePath = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath); - FormWidget m_form = null; - Compass3DWidget m_compass = null; - System.Windows.Forms.MenuItem m_menuItem = null; - WorldWind.NewWidgets.WidgetMenuButton m_toolbarItem = null; - - public override void Load() - { - m_menuItem = new System.Windows.Forms.MenuItem("Compass"); - m_menuItem.Click += new EventHandler(m_menuItem_Click); - m_menuItem.Checked = World.Settings.ShowCompass; - ParentApplication.ToolsMenu.MenuItems.Add(m_menuItem); - - m_form = new FormWidget("Compass"); - m_form.ClientSize = new System.Drawing.Size(200, 200); - m_form.Location = new System.Drawing.Point(0, 400); - m_form.BackgroundColor = World.Settings.WidgetBackgroundColor; - m_form.AutoHideHeader = true; - m_form.... [truncated message content] |
From: <joe...@us...> - 2009-03-05 02:21:38
|
Revision: 4062 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4062&view=rev Author: joearmbruster Date: 2009-03-05 02:21:34 +0000 (Thu, 05 Mar 2009) Log Message: ----------- first commit at organizing builtin plugins into a distinct folder structure namespaces have been adjusted to match that of the plugins location in the tree Modified Paths: -------------- branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/CSVParser.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTracker.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.COM.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.File.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.GPSPosition.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.GPSSource.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.NMEA.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.PlaybackControl.Designer.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.PlaybackControl.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.RenderInformation.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.UDPTCP.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GPSTrackerPlugin.WorldWind.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GpsTrackerPlugin.SourceSetup.Designer.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/GpsTrackerPlugin.SourceSetup.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/MessageMonitor.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/POIName.cs Added Paths: ----------- branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/ branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.resx branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BmngAboutDialog.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BmngAboutDialog.resx branches/josepharmbruster/WorldWind/WorldWind/Plugins/Compass/ branches/josepharmbruster/WorldWind/WorldWind/Plugins/Compass/Compass3D.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/Compass/CompassRose.cs branches/josepharmbruster/WorldWind/WorldWind/Plugins/GpsPlugin/ Copied: branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.cs (from rev 4058, branches/josepharmbruster/WorldWind/WorldWind/BMNG.cs) =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.cs (rev 0) +++ branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.cs 2009-03-05 02:21:34 UTC (rev 4062) @@ -0,0 +1,723 @@ +using System; +using System.IO; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; + +namespace NASA.Plugins.BMNG +{ + /// <summary> + /// Summary description for BMNG. + /// </summary> + public class BMNG : System.Windows.Forms.Form + { + private System.Windows.Forms.ComboBox comboBoxBmngVersion; + private System.Windows.Forms.TrackBar trackBarMonth; + private System.Windows.Forms.StatusBar statusBarMonth; + private System.Windows.Forms.MainMenu mainMenu1; + private System.Windows.Forms.MenuItem menuItemHelp; + private System.Windows.Forms.MenuItem menuItemAbout; + + WorldWind.Renderable.RenderableObjectList m_BlueMarbleList = null; + WorldWind.Renderable.RenderableObjectList m_ShadedList = null; + WorldWind.Renderable.RenderableObjectList m_ShadedBathyList = null; + + WorldWind.Renderable.ImageLayer m_BlueMarbleBase = null; + WorldWind.Renderable.QuadTileSet m_BlueMarbleTiled = null; + WorldWind.Renderable.RenderableObjectList m_RenderableList = new WorldWind.Renderable.RenderableObjectList("The Blue Marble"); + + WorldWind.Renderable.RenderableObjectList[,] m_RenderableLayers = new WorldWind.Renderable.RenderableObjectList[3, 12]; + WorldWind.Renderable.ImageLayer[,] m_ImageLayers = new WorldWind.Renderable.ImageLayer[3, 12]; + WorldWind.Renderable.QuadTileSet[,] m_QuadTileLayers = new WorldWind.Renderable.QuadTileSet[3, 12]; + public WorldWind.WorldWindow m_WorldWindow = null; + public MenuItem m_MenuItem; + + private Timer timer; + private IContainer components; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label14; + private ToolTip toolTip1; + string m_BmngBaseImageUrl = "http://worldwind28.arc.nasa.gov/public/"; + + public BMNG(WorldWind.WorldWindow worldWindow, MenuItem menuItem) + { + // + // Required for Windows Form Designer support + // + InitializeComponent(); + + this.m_MenuItem = menuItem; // Plugin menu item ref + + comboBoxBmngVersion.SelectedIndex = WorldWind.World.Settings.BmngVersion; + + m_WorldWindow = worldWindow; + m_RenderableList.ShowOnlyOneLayer = true; + bool foundImagesObject = false; + lock (m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects.SyncRoot) + { + foreach (WorldWind.Renderable.RenderableObject ro in m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects) + { + if (ro is WorldWind.Renderable.RenderableObjectList && (ro.Name == "Images")) // SF FIX: don't add to layers called 'xxxx images'! + { + WorldWind.Renderable.RenderableObjectList imagesList = ro as WorldWind.Renderable.RenderableObjectList; + imagesList.ChildObjects.Insert(0, m_RenderableList); + foundImagesObject = true; + break; + } + } + } + + if (!foundImagesObject) + { + m_WorldWindow.CurrentWorld.RenderableObjects.ChildObjects.Add(m_RenderableList); + } + + m_BlueMarbleBase = new WorldWind.Renderable.ImageLayer( + "Blue Marble Base Image", + m_WorldWindow.CurrentWorld, + 0, + null, + -90, 90, -180, 180, 1.0f, null); + m_BlueMarbleBase.ImageUrl = "http://worldwind.arc.nasa.gov/downloads/land_shallow_topo_2048.dds"; + + WorldWind.ImageStore ia = new WorldWind.NltImageStore("106", "http://nww.terraserver-usa.com/nwwtile.ashx"); + ia.DataDirectory = null; + ia.LevelZeroTileSizeDegrees = 36.0; + ia.LevelZeroTileSizeDegrees = 4; + ia.ImageExtension = "jpg"; + ia.CacheDirectory = String.Format("{0}\\Blue Marble", m_WorldWindow.Cache.CacheDirectory); + + WorldWind.ImageStore[] ias = new WorldWind.ImageStore[1]; + ias[0] = ia; + m_BlueMarbleTiled = new WorldWind.Renderable.QuadTileSet( + "Blue Marble Tiled", + m_WorldWindow.CurrentWorld, + 0, + 90, + -90, + -180, + 180, + true, + ias + ); + m_BlueMarbleTiled.ServerLogoFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "\\Data\\Icons\\Interface\\meatball.png"; + + m_BlueMarbleList = new WorldWind.Renderable.RenderableObjectList("Blue Marble"); + m_BlueMarbleList.IsOn = false; + m_BlueMarbleList.Add(m_BlueMarbleBase); + m_BlueMarbleList.Add(m_BlueMarbleTiled); + + m_ShadedList = new WorldWind.Renderable.RenderableObjectList("BMNG"); + m_ShadedList.ShowOnlyOneLayer = true; + m_ShadedList.IsOn = false; + + for (int i = 0; i < 12; i++) + { + m_ImageLayers[0, i] = new WorldWind.Renderable.ImageLayer( + String.Format("Base Image - {0}.2004", i + 1), + m_WorldWindow.CurrentWorld, + 0, + null, + -90, 90, -180, 180, 1.0f, null); + m_ImageLayers[0, i].ImageUrl = String.Format("{0}world.topo.2004{1:D2}.jpg", m_BmngBaseImageUrl, i + 1); + + WorldWind.NltImageStore imageStore = new WorldWind.NltImageStore(String.Format("bmng.topo.2004{0:D2}", i + 1), "http://worldwind25.arc.nasa.gov/tile/tile.aspx"); + imageStore.DataDirectory = null; + imageStore.LevelZeroTileSizeDegrees = 36.0; + imageStore.LevelCount = 5; + imageStore.ImageExtension = "jpg"; + imageStore.CacheDirectory = String.Format("{0}\\BMNG\\{1}", m_WorldWindow.Cache.CacheDirectory, String.Format("BMNG (Shaded) Tiled - {0}.2004", i + 1)); + + ias = new WorldWind.ImageStore[1]; + ias[0] = imageStore; + + m_QuadTileLayers[0, i] = new WorldWind.Renderable.QuadTileSet( + String.Format("Tiled - {0}.2004", i + 1), + m_WorldWindow.CurrentWorld, + 0, + 90, -90, -180, 180, + true, + ias); + + m_QuadTileLayers[0, i].ServerLogoFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "\\Data\\Icons\\Interface\\meatball.png"; + + m_RenderableLayers[0, i] = new WorldWind.Renderable.RenderableObjectList(String.Format("{0}.2004", i + 1)); + m_RenderableLayers[0, i].IsOn = false; + + m_RenderableLayers[0, i].Add(m_ImageLayers[0, i]); + m_RenderableLayers[0, i].Add(m_QuadTileLayers[0, i]); + m_ShadedList.Add(m_RenderableLayers[0, i]); + } + + m_ShadedBathyList = new WorldWind.Renderable.RenderableObjectList("BMNG (Bathymetry)"); + m_ShadedBathyList.ShowOnlyOneLayer = true; + m_ShadedBathyList.IsOn = false; + + for (int i = 0; i < 12; i++) + { + m_ImageLayers[1, i] = new WorldWind.Renderable.ImageLayer( + String.Format("Base Image - {0}.2004", i + 1), + m_WorldWindow.CurrentWorld, + 0, + String.Format("{0}\\Data\\Earth\\BmngBathy\\world.topo.bathy.2004{1:D2}.jpg", Path.GetDirectoryName(Application.ExecutablePath), i + 1), + -90, 90, -180, 180, 1.0f, null); + + // m_ImageLayers[1, i].ImageUrl = String.Format("{0}world.topo.bathy.2004{1:D2}.jpg", m_BmngBaseImageUrl, i+1); + + WorldWind.NltImageStore imageStore = new WorldWind.NltImageStore(String.Format("bmng.topo.bathy.2004{0:D2}", i + 1), "http://worldwind25.arc.nasa.gov/tile/tile.aspx"); + imageStore.DataDirectory = null; + imageStore.LevelZeroTileSizeDegrees = 36.0; + imageStore.LevelCount = 5; + imageStore.ImageExtension = "jpg"; + imageStore.CacheDirectory = String.Format("{0}\\BMNG\\{1}", m_WorldWindow.Cache.CacheDirectory, String.Format("BMNG (Shaded + Bathymetry) Tiled - {0}.2004", i + 1)); + + ias = new WorldWind.ImageStore[1]; + ias[0] = imageStore; + + m_QuadTileLayers[1, i] = new WorldWind.Renderable.QuadTileSet( + String.Format("Tiled - {0}.2004", i + 1), + m_WorldWindow.CurrentWorld, + 0, + 90, -90, -180, 180, true, ias); + + m_QuadTileLayers[0, i].ServerLogoFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "\\Data\\Icons\\Interface\\meatball.png"; + + m_RenderableLayers[1, i] = new WorldWind.Renderable.RenderableObjectList(String.Format("{0}.2004", i + 1)); + m_RenderableLayers[1, i].IsOn = false; + + m_RenderableLayers[1, i].Add(m_ImageLayers[1, i]); + m_RenderableLayers[1, i].Add(m_QuadTileLayers[1, i]); + m_ShadedBathyList.Add(m_RenderableLayers[1, i]); + } + + /* m_UnShadedList = new WorldWind.Renderable.RenderableObjectList("BMNG (UnShaded)"); + m_UnShadedList.ShowOnlyOneLayer = true; + m_UnShadedList.IsOn = false; + + for(int i = 0; i < 12; i++) + { + m_ImageLayers[2, i] = new WorldWind.Renderable.ImageLayer( + String.Format("Base Image - {0}.2004 un", i+1), + m_WorldWindow.CurrentWorld, + 0, + null, + -90, 90, -180, 180, 1.0f, m_WorldWindow.CurrentWorld.TerrainAccessor); + + m_ImageLayers[2, i].ImageUrl = String.Format("{0}world.2004{1:D2}.jpg", m_BmngBaseImageUrl, i+1); + m_ImageLayers[2, i].IsOn = false; + + m_QuadTileLayers[2, i] = new WorldWind.Renderable.QuadTileSet( + String.Format("Tiled - {0}.2004", i+1), + m_WorldWindow.CurrentWorld, + 0, + 90, -90, -180, 180, m_WorldWindow.CurrentWorld.TerrainAccessor, + new WorldWind.ImageAccessor( + null, 512, 36.0, 5, "jpg", + String.Format("{0}\\BMNG\\{1}", m_WorldWindow.Cache.CacheDirectory, String.Format("BMNG (UnShaded) Tiled - {0}.2004", i+1)), + new WorldWind.ImageTileService( + String.Format("bmng.2004{0:D2}", i+1), "http://worldwind28.arc.nasa.gov/TestWebApp/WebForm1.aspx", + Path.GetDirectoryName(Application.ExecutablePath) + "\\Data\\Icons\\Interface\\meatball.png") + )); + + m_RenderableLayers[2, i] = new WorldWind.Renderable.RenderableObjectList(String.Format("{0}.2004", i+1)); + m_RenderableLayers[2, i].IsOn = false; + + m_RenderableLayers[2, i].Add(m_ImageLayers[1, i]); + m_RenderableLayers[2, i].Add(m_QuadTileLayers[1, i]); + m_UnShadedList.Add(m_RenderableLayers[2, i]); + }*/ + + m_RenderableList.Add(m_BlueMarbleList); + m_RenderableList.Add(m_ShadedList); + m_RenderableList.Add(m_ShadedBathyList); + // m_RenderableList.Add(m_UnShadedList); + + this.trackBarMonth.Value = System.DateTime.Now.Month - 1; + + timer = new Timer(); + timer.Interval = 1000; + timer.Tick += new EventHandler(timer_Tick); + timer.Start(); + } + + protected override void OnClosing(CancelEventArgs e) + { + e.Cancel = true; + this.Visible = false; + this.m_MenuItem.Checked = false; + base.OnClosing(e); + } + + + /// <summary> + /// Clean up any resources being used. + /// </summary> + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) + { + components.Dispose(); + } + } + + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.comboBoxBmngVersion = new System.Windows.Forms.ComboBox(); + this.trackBarMonth = new System.Windows.Forms.TrackBar(); + this.statusBarMonth = new System.Windows.Forms.StatusBar(); + this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components); + this.menuItemHelp = new System.Windows.Forms.MenuItem(); + this.menuItemAbout = new System.Windows.Forms.MenuItem(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + ((System.ComponentModel.ISupportInitialize)(this.trackBarMonth)).BeginInit(); + this.SuspendLayout(); + // + // comboBoxBmngVersion + // + this.comboBoxBmngVersion.Items.AddRange(new object[] { + "BMNG", + "BMNG (Bathymetry)", + "Blue Marble (Original)"}); + this.comboBoxBmngVersion.Location = new System.Drawing.Point(8, 8); + this.comboBoxBmngVersion.Name = "comboBoxBmngVersion"; + this.comboBoxBmngVersion.Size = new System.Drawing.Size(344, 21); + this.comboBoxBmngVersion.TabIndex = 0; + this.toolTip1.SetToolTip(this.comboBoxBmngVersion, "Select Base Imagery to display."); + this.comboBoxBmngVersion.SelectedIndexChanged += new System.EventHandler(this.comboBoxBmngVersion_SelectedIndexChanged); + // + // trackBarMonth + // + this.trackBarMonth.Location = new System.Drawing.Point(8, 32); + this.trackBarMonth.Maximum = 11; + this.trackBarMonth.Name = "trackBarMonth"; + this.trackBarMonth.Size = new System.Drawing.Size(352, 42); + this.trackBarMonth.TabIndex = 1; + this.toolTip1.SetToolTip(this.trackBarMonth, "Select Month of Base imagery to display. Note this is set to your system date by" + + " default."); + this.trackBarMonth.Value = 1; + this.trackBarMonth.Scroll += new System.EventHandler(this.trackBarMonth_Scroll); + // + // statusBarMonth + // + this.statusBarMonth.Location = new System.Drawing.Point(0, 101); + this.statusBarMonth.Name = "statusBarMonth"; + this.statusBarMonth.Size = new System.Drawing.Size(362, 22); + this.statusBarMonth.SizingGrip = false; + this.statusBarMonth.TabIndex = 2; + // + // mainMenu1 + // + this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuItemHelp}); + // + // menuItemHelp + // + this.menuItemHelp.Index = 0; + this.menuItemHelp.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuItemAbout}); + this.menuItemHelp.Text = "Help"; + // + // menuItemAbout + // + this.menuItemAbout.Index = 0; + this.menuItemAbout.Text = "About"; + this.menuItemAbout.Click += new System.EventHandler(this.menuItemAbout_Click); + // + // label2 + // + this.label2.Location = new System.Drawing.Point(8, 80); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(32, 23); + this.label2.TabIndex = 4; + this.label2.Text = "Jan"; + this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label3 + // + this.label3.Location = new System.Drawing.Point(40, 80); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(24, 23); + this.label3.TabIndex = 5; + this.label3.Text = "Feb"; + // + // label4 + // + this.label4.Location = new System.Drawing.Point(64, 80); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(32, 23); + this.label4.TabIndex = 6; + this.label4.Text = "Mar"; + this.label4.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label5 + // + this.label5.Location = new System.Drawing.Point(96, 80); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(32, 23); + this.label5.TabIndex = 7; + this.label5.Text = "Apr"; + this.label5.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label6 + // + this.label6.Location = new System.Drawing.Point(128, 80); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(32, 23); + this.label6.TabIndex = 8; + this.label6.Text = "May"; + // + // label7 + // + this.label7.Location = new System.Drawing.Point(160, 80); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(24, 23); + this.label7.TabIndex = 9; + this.label7.Text = "Jun"; + this.label7.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // label8 + // + this.label8.Location = new System.Drawing.Point(192, 80); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(24, 23); + this.label8.TabIndex = 10; + this.label8.Text = "Jul"; + // + // label9 + // + this.label9.Location = new System.Drawing.Point(216, 80); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(24, 23); + this.label9.TabIndex = 11; + this.label9.Text = "Aug"; + // + // label10 + // + this.label10.Location = new System.Drawing.Point(248, 80); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(24, 23); + this.label10.TabIndex = 12; + this.label10.Text = "Sep"; + // + // label12 + // + this.label12.Location = new System.Drawing.Point(280, 80); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(24, 23); + this.label12.TabIndex = 13; + this.label12.Text = "Oct"; + // + // label13 + // + this.label13.Location = new System.Drawing.Point(304, 80); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(24, 23); + this.label13.TabIndex = 14; + this.label13.Text = "Nov"; + // + // label14 + // + this.label14.Location = new System.Drawing.Point(336, 80); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(24, 23); + this.label14.TabIndex = 15; + this.label14.Text = "Dec"; + // + // BMNG + // + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.ClientSize = new System.Drawing.Size(362, 123); + this.Controls.Add(this.label14); + this.Controls.Add(this.label13); + this.Controls.Add(this.label10); + this.Controls.Add(this.label9); + this.Controls.Add(this.label8); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.statusBarMonth); + this.Controls.Add(this.trackBarMonth); + this.Controls.Add(this.comboBoxBmngVersion); + this.Controls.Add(this.label12); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Menu = this.mainMenu1; + this.Name = "BMNG"; + this.Text = "Blue Marble Next-Generation Plugin v1.0"; + ((System.ComponentModel.ISupportInitialize)(this.trackBarMonth)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + #endregion + + BmngAboutDialog m_BmngAboutDialog = null; + private void menuItemAbout_Click(object sender, System.EventArgs e) + { + if (m_BmngAboutDialog == null) + { + m_BmngAboutDialog = new BmngAboutDialog(); + m_BmngAboutDialog.Owner = this; + } + + m_BmngAboutDialog.ShowDialog(); + + + } + + private void trackBarMonth_Scroll(object sender, System.EventArgs e) + { + try + { + + } + catch + { } + } + + private string GetMonth(int month) + { + switch (month) + { + case 1: + return "January"; + case 2: + return "February"; + case 3: + return "March"; + case 4: + return "April"; + case 5: + return "May"; + case 6: + return "June"; + case 7: + return "July"; + case 8: + return "August"; + case 9: + return "September"; + case 10: + return "October"; + case 11: + return "November"; + default: + return "December"; + } + } + + private void comboBoxBmngVersion_SelectedIndexChanged(object sender, System.EventArgs e) + { + WorldWind.World.Settings.BmngVersion = comboBoxBmngVersion.SelectedIndex; + } + + int m_CurrentMonth = -1; + int m_CurrentVersion = -1; + + private void TurnOffLayers() + { + if (m_ImageLayers == null || m_QuadTileLayers == null) + { + return; + } + + for (int i = 0; i < 2; i++) + { + for (int j = 0; j < 12; j++) + { + if (m_RenderableLayers[i, j].IsOn) + { + m_RenderableLayers[i, j].IsOn = false; + } + } + } + } + + private void setMonthLabelsAndSlider(bool enabled) + { + this.trackBarMonth.Visible = enabled; + label2.Visible = enabled; + label3.Visible = enabled; + label4.Visible = enabled; + label5.Visible = enabled; + label6.Visible = enabled; + label7.Visible = enabled; + label8.Visible = enabled; + label9.Visible = enabled; + label10.Visible = enabled; + label12.Visible = enabled; + label13.Visible = enabled; + label14.Visible = enabled; + + if (enabled) + { + this.Height = 168; + } + else + { + this.Height = 120; + } + } + + private void timer_Tick(object sender, EventArgs e) + { + try + { + //Added TimeKeeper based Modis Month + //if (WorldWind.TimeKeeper.CurrentTimeUtc.Month != trackBarMonth.Value) + // trackBarMonth.Value = WorldWind.TimeKeeper.CurrentTimeUtc.Month-1; + + + if (m_CurrentMonth != trackBarMonth.Value) + { + TurnOffLayers(); + + for (int i = 0; i < 2; i++) + { + m_RenderableLayers[i, trackBarMonth.Value].IsOn = true; + } + + m_CurrentMonth = trackBarMonth.Value; + this.statusBarMonth.Text = GetMonth(trackBarMonth.Value + 1) + " - 2004"; + } + + if (m_CurrentVersion != comboBoxBmngVersion.SelectedIndex) + { + m_CurrentVersion = comboBoxBmngVersion.SelectedIndex; + + if (m_BlueMarbleList.IsOn) + m_BlueMarbleList.IsOn = false; + + if (m_ShadedList.IsOn) + m_ShadedList.IsOn = false; + + if (m_ShadedBathyList.IsOn) + m_ShadedBathyList.IsOn = false; + + + if (comboBoxBmngVersion.SelectedIndex == 2)//3) + { + // show blue marble (original) + m_BlueMarbleList.IsOn = true; + this.statusBarMonth.Text = ""; + setMonthLabelsAndSlider(false); + } + else + { + setMonthLabelsAndSlider(true); + switch (comboBoxBmngVersion.SelectedIndex) + { + case 0: + m_ShadedList.IsOn = true; + break; + case 1: + m_ShadedBathyList.IsOn = true; + break; + // case 2: + // m_UnShadedList.IsOn = true; + // break; + default: + break; + + } + + } + + } + } + catch + { } + } + } + + public class BmngLoader : WorldWind.PluginEngine.Plugin + { + BMNG m_BmngForm = null; + MenuItem m_MenuItem; + WorldWind.WindowsControlMenuButton m_ToolbarItem; + + public override void Load() + { + if (ParentApplication.WorldWindow.CurrentWorld.Name.IndexOf("Earth") >= 0) + { + m_MenuItem = new MenuItem("Blue Marble"); + m_MenuItem.Click += new EventHandler(menuItemClicked); + ParentApplication.PluginsMenu.MenuItems.Add(m_MenuItem); + + m_BmngForm = new BMNG(ParentApplication.WorldWindow, m_MenuItem); + m_BmngForm.Owner = ParentApplication; + + m_ToolbarItem = new WorldWind.WindowsControlMenuButton( + "NASA Blue Marble", + Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\Data\\Icons\\Interface\\bmng.png", + m_BmngForm); + + ParentApplication.WorldWindow.MenuBar.AddToolsMenuButton(m_ToolbarItem); + + base.Load(); + } + } + + public override void Unload() + { + if (m_BmngForm != null) + { + m_BmngForm.Dispose(); + m_BmngForm = null; + ParentApplication.PluginsMenu.MenuItems.Remove(m_MenuItem); + } + + base.Unload(); + } + + private void menuItemClicked(object sender, System.EventArgs e) + { + if (m_BmngForm.Visible) + { + m_BmngForm.Visible = false; + m_MenuItem.Checked = false; + } + else + { + m_BmngForm.Visible = true; + m_MenuItem.Checked = true; + } + } + } +} \ No newline at end of file Property changes on: branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.resx (from rev 4058, branches/josepharmbruster/WorldWind/WorldWind/BMNG.resx) =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.resx (rev 0) +++ branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.resx 2009-03-05 02:21:34 UTC (rev 4062) @@ -0,0 +1,126 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>126, 17</value> + </metadata> + <metadata name="mainMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <value>17, 17</value> + </metadata> +</root> \ No newline at end of file Property changes on: branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BMNG.resx ___________________________________________________________________ Added: svn:mergeinfo + Copied: branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BmngAboutDialog.cs (from rev 4058, branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.cs) =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BmngAboutDialog.cs (rev 0) +++ branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BmngAboutDialog.cs 2009-03-05 02:21:34 UTC (rev 4062) @@ -0,0 +1,186 @@ +using System; +using System.Drawing; +using System.Collections; +using System.ComponentModel; +using System.Windows.Forms; + +namespace NASA.Plugins.BMNG +{ + /// <summary> + /// Summary description for BmngAboutDialog. + /// </summary> + public class BmngAboutDialog : System.Windows.Forms.Form + { + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.LinkLabel linkLabel3; + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.Container components = null; + + public BmngAboutDialog() + { + // + // Required for Windows Form Designer support + // + InitializeComponent(); + + // + // TODO: Add any constructor code after InitializeComponent call + // + } + + /// <summary> + /// Clean up any resources being used. + /// </summary> + protected override void Dispose( bool disposing ) + { + if( disposing ) + { + if(components != null) + { + components.Dispose(); + } + } + base.Dispose( disposing ); + } + + #region Windows Form Designer generated code + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BmngAboutDialog)); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.linkLabel3 = new System.Windows.Forms.LinkLabel(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(8, 8); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(128, 128); + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // + // label1 + // + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(144, 8); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(216, 23); + this.label1.TabIndex = 1; + this.label1.Text = "Blue Marble Next-Generation Plugin"; + // + // label2 + // + this.label2.Location = new System.Drawing.Point(144, 32); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(216, 23); + this.label2.TabIndex = 2; + this.label2.Text = "Source Imagery Prepared By:"; + // + // label3 + // + this.label3.Location = new System.Drawing.Point(144, 80); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(208, 23); + this.label3.TabIndex = 3; + this.label3.Text = "Plugin and Web Services Provided By:"; + // + // linkLabel1 + // + this.linkLabel1.LinkColor = System.Drawing.SystemColors.GradientActiveCaption; + this.linkLabel1.Location = new System.Drawing.Point(144, 56); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(216, 23); + this.linkLabel1.TabIndex = 4; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "http://bluemarble.nasa.gov"; + // + // linkLabel2 + // + this.linkLabel2.LinkColor = System.Drawing.SystemColors.GradientActiveCaption; + this.linkLabel2.Location = new System.Drawing.Point(144, 104); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(200, 23); + this.linkLabel2.TabIndex = 5; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "http://worldwind.arc.nasa.gov"; + // + // label4 + // + this.label4.Location = new System.Drawing.Point(8, 144); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(232, 24); + this.label4.TabIndex = 6; + this.label4.Text = "For Questions or Comments, Please Contact:"; + // + // label5 + // + this.label5.Location = new System.Drawing.Point(232, 136); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(80, 24); + this.label5.TabIndex = 7; + this.label5.Text = "Randy Kim"; + // + // linkLabel3 + // + this.linkLabel3.LinkColor = System.Drawing.SystemColors.GradientActiveCaption; + this.linkLabel3.Location = new System.Drawing.Point(232, 160); + this.linkLabel3.Name = "linkLabel3"; + this.linkLabel3.Size = new System.Drawing.Size(128, 23); + this.linkLabel3.TabIndex = 8; + this.linkLabel3.TabStop = true; + this.linkLabel3.Text = "rk...@ma..."; + this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel3_LinkClicked); + // + // BmngAboutDialog + // + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(111)))), ((int)(((byte)(111)))), ((int)(((byte)(111))))); + this.ClientSize = new System.Drawing.Size(362, 184); + this.Controls.Add(this.linkLabel3); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.linkLabel2); + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.pictureBox1); + this.ForeColor = System.Drawing.Color.White; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "BmngAboutDialog"; + this.Text = "Blue Marble Next-Generation About Dialog"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + + } + #endregion + + private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + + } + } +} Property changes on: branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BmngAboutDialog.cs ___________________________________________________________________ Added: svn:mergeinfo + Copied: branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BmngAboutDialog.resx (from rev 4058, branches/josepharmbruster/WorldWind/WorldWind/BmngAboutDialog.resx) =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BmngAboutDialog.resx (rev 0) +++ branches/josepharmbruster/WorldWind/WorldWind/Plugins/BMNG/BmngAboutDialog.resx 2009-03-05 02:21:34 UTC (rev 4062) @@ -0,0 +1,194 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value> + iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEwAA + CxMBAJqcGAAAD4hJREFUeF7tXWvLZlUZtl9QvyD6A0FfA6GEIklEsQPl4CBFgZRl9SGTiMQwJywrrPlQ + OtEBK8YODMVAiVgyCZWWRWEHrSynQDSbtLLD7r32eL3cz/2ute51fvaeZ214eN95n73XXmtd133dh7X2 + nudN03TeOHZ4BkCA8dndORjg77gBDAIMAuyu/A3Xtxf/jUnYbQMYBBguYLctYNcVcCjAUIChALusAkMB + hgIMBRgKsONWMAgwCLCzrnBnB77LVi/HPgiw4+qXRIDVrZq/9cR0Xq3P6gZvd3jeC5IihXaT7c8I9bca + 2BGk2ZDR9sNucodVEcAHfE/Qffdi35qg1LDRxRLAUqVaoL/khnsmfGq1tzZVWAQBLLA3JjVCmlPArE0A + ee+gq2po1TFNP/nSCyZ8uhMgBeyWwKeQpPTcJRJhKwTIAb908pdyvTX2GKutdQ7BR3vdFMCaANf3SwEP + /bj00z+sEif0VgMdnBJ8/FwsAVoD/6L33TXhE3sfgP/I489MVx77yfSCa05GX2dlDJoMtSycwOqAVIPf + jQAp1h8LSsl513zl59Mt3334AJD4myYGACcB8DOFOFYfnapXgQWudiX4tP4uBFga+CFQQAwfwPjOAjTn + +9oqkAJ+cwKsCfwc8GpdU6t2EAO+tP6mBFgC+JZc1/DnLUiQU1XMAb8ZAWLBrzV5vnY+eOKhCdLtq/Qd + O/VoE1nPHZdv3qywIBZ8bf1NCLAU8AkCAjcQoVYalwtu7HWpgWEJ+NUJEAv+XHyoXNL1tQc3AKmPkXso + Qsx5rfseIkFojnWk70r7tJpUKwT1Av/lN5+avv7A6Tkv54Hf737o8dnSpdwDfPytNWAt2ndlB7ngu6Sf + ROhOgNzJgmUCeBwAHDk7pR0/8e8H/vDU/vfw/Uuw5tzx4rpYowpZfgj8qi4gprMlk0HwLYuG1QN8kOTJ + p5+dSbJmIpRYvQV+VwKUgI8SLA78TGkH7gKuoQYRoDA19w3EjsNHAMvqY8CvSgBXcCE7Hztg13mQdgCZ + 2wZLuVAFkCKnHYC/LSWR8xgD/MZSr5FDVosB5H0OBDAFET8kHUcscD6Q8He4AxxwJ9sCM4d8jAdSwZ/B + 7U2AmuBj4JB9SLieOFi1dgkEOTTJsGQoCtRgG5KeQ4AU4LnLhzh0JYDLX+UMWF4Dq3XJP8CWpV78LgPF + kIXjO+T8OFot8pSOG9e/8MovTV981VvmrVuxH1f6GCJBNRfQAnxMAoIvABsq95IIJEHs5DO4XEoBiP1+ + /puPT9deel006NLnb8RdlvnX3BHUigAs8FiVPn5vLQDpduAG4GLgFpYQF1x12fXT786/sBj8GP9fNQuo + 7fsJlKUAsdYeOg+k2XZccPnrbpp++rJLkoHXPj/W9zevBNYABm34YoBa7bMdWD9IADXoGRyWAO8DP9b6 + mylATXBAAETsNdv0tQUSsHDUkgT08bkWr3f1pgZ+OmWv8mxgraKPK91DtN6DALwHgsIWSkDgc3w8Qf/e + Ba+frnrN9fs7ep2xV0Tw18wF1AYKlphSCKp1/5okQDr3qVe/PSu4k+kf2tgf33MRfIn1N3EBtQCQ7bCW + 36LtUJulJDj/0NHkPB6Au1wD0kLd11LrXw0BUAcoWQsoIQ4Dw5QUEYEdpDq2eMPz4Bq0UuBvaM81hsUR + oGSiQ9eiWocjBYRafWF2YNUJIPM3XvyebJnHtboGACV48eHbvfFPqfxXV4Bak67b4YJQ6nJwrf6QBC4V + uugNt2TJPK0eFk/ySMVACRhBozWG1Mpf0y1hVmdLvkcqGCoJl7Qdcy0rhihMEbCSNI7AA+QTrzi84S5c + /t7Xx1IVqLoWEDORuedwKXcbbgB9BlBH3n10+t+ZM9PTN9yU7N+1xaNNyLskEfw9AseUOVoMAVI6nXMu + 3UDv1TtIvAzMAD5I8LfD8at0ABY+HsrBsSOwk/UAqECM5FuZQEIJYD61mgLkgJp6DXxwj6ogLBOAaYk/ + 87Z3TX9/7/un/z52evrPr3494d9/feXFsxo88/Fbp2fvuXdDGXA9AjsJLH4HoaS/T5H8mGwghQRNCQCr + RQ4fOvROH981iMKxCQSH6yEPLu2G7hV6EgjWCbA06AD4X986OVu97wAhcPz7/r3NK3tkAMAuKf/RXT/e + UI6nLnvjTCR55DzAUuIGmhIAbGXw5Js8l0Xra2QKxmcAXJYQQwIZQxB0X84OmQ8Br8d0/y/+5JVxneLR + leg2cgLdRRMAQDGA85HAtdVbXiNVgiD79ghaivPRL5yaLd0q1PjAh5X/47Ofmz+/+cGDG0NypYmQfLmr + B4oCVxE6Uvc0rJ4AAE0P2kcAEAoq4JJzuojQ5EKuYyp0lHXZFkCHi0B8wAIN0kIcGIMmANyADvS+9v1N + yXf11Xr2oWYgWMcFGLt+LQXAJGjpCxGAKqBJQzCC5rX3JYK3EAnwveu47c6D7wlikQj9JXCwepBElnih + OiSv1b/UQHf7ClCBAJgUKeshAmAiXc8K8HlB+O2Q70ZQFyIALN13wMp1RZIxCwgJq5eBJNI7pn9c2UTb + 8tlG171SgsFzhgCS+RYBQBYchz98cvbp917+jv15BMD4+A6Qg+kbiQDQEL0j7//YNzZ9u6sdSL58pxB+ + /+3PHnZaPSWbaxpoDwCH4pWUYHBVBODWbR84lNEQAeB/AbosxiAP54EIG9+FjsduPFvDRzuyQAOwSC5L + qvn9Vz9xfHrwokNzfQB1Amn10l9DPXjAdVguK7bquSoCYHL5FK/PsvhYN7/HNb7iDC1YRta0bp1jy/uh + D6FCVKiPbAdKAsDZBxDvib884Vy1BJg8GCyyuukjWmzVc3UEsCwMEb5UgD9efa0ZuXMSAToBue/m24NG + HNr3Z9Uv/vnl4xtuBIEjMwdXFC8zFAmsVAXd2dhgcHUEgOVZrgD+lIcVtcMKeXznjrOBGO4hrc7FBOsd + QfJpI0kw2R9XXg/fruWbTyKhHZm9WMWrmGciV0mAmDKxRQD4WtTR7/z22cfHcTA7gGVxh69PBlxAudwC + QED+juxAZg8gni/b0OSSUT/7xp8hmbJIiv6ukgDoOPLqmIMWR8B1nd1KqUL3iNlkgsxApna/v/C1wWoe + rZ2WLtO/mPHqc6xgcFUEuOTI3fMeN5ZiXRU3PQFXf+ib3oDNCqSsCXcFg/DXmHTXw5ko8KDQA1XwpXGI + AeDiaL0xhbBQP61gcPsEwPpjoBgkJ0D7c+m/fZMQ8oMyt6blQVpxDT9WuqWDQVz352N3bJRxoQBaeXzt + QlVIEFYKOTbZL/l7KOuwgkFJgJSl4C77AZC+ITBz+XPugsUqWugIEUAGkzK3lpW0lGAQ/dVbtH555OhG + lRLtSeLJvkuwAKokSai4UxIMLpIAsBZMJKJkmY8jX4eMSmuyZNwXCMlJkwGdfsbPSun4FJB+JBvFpFAt + QZNWP02kQQ0FdDJLcBlDaFfyoghA4BEta/A5MNer2i0/qSfPZTG0MGYYmLSQr2Z/ALKsKqLfyPNTDtc7 + BlyguoJOy0WxHz4SLIYAct0b8v6RD3x+Lui4Pjpm4OtdfOfj7zJ/xr9ZMJLX8BwWXvhUka/d05/8zEZq + xzIuJh3tQz0g9/idW9LwHX4H4XyvmGc1k9fw/jqgixm37LvLHW6dAHplDWlT6n6/nPOtHJmW5arMwdfL + TSH6CZyU1bhQ3/mGspzxxVxTkgEUB4GuJdWYTvc8h9G1BFT7+tiHMHL73eJJY/alxPqzCeACHh3JnaCW + 10FiAQA+V1x3/IDV91ArKJUrl0/d+mXtCE5NAbMIoMHfeM684H2ALUkAP67LuK2tXo4HgZ8rBfS5sJj6 + /9YUQL6d4sCbJhZIAO3rEeEfetOtXWIUggQCWsUcnsu3lMSUqEvlP0sBfDLDzrS05NS2sdlDKhaWlbF4 + g7ig5StgZD/liqLuP+sT8u/cKQTFsPo4COBRHNTwZTUPET58vVyBRExQK9IPEZNVQ5anXSTQf4uxfr0K + mOP/myjAtoNB65k7vXXcVZRKVZqY830EsMjj+76G9a+eAFIi9QMYsHpuxdaTqKuO1ssfYgCW58DfM8KH + AiCowz2tVT0dOIbeijIIsCf/zK/1Axgo8ITerIGJ1mVaq6iUSgIZAPJtpzEPfMD3W+lhLfCbKUBPN6CL + OlhoigVLKkErArAvcDUpChAaw+oJ4IpuMUGxwQ8mR79ZI+flCmgH1paSd8eSS5+XEwO47lUT/KoKwMY2 + OuiJ0l3WBlJY0scJ0ZLfs6iTS4Ba5eD9dDs37FfXzWqtFxRC/w7d98DCRMXCENVBS74v0MsFqsZ1+n8s + 45K0bhsBYu4TQJXwr/iGkOd6lEMCWL7lg995230bj1lbr1CrAWRuG9qlQP5D44uNDWrLf3UXINcFYlyB + qyjiigN0ORfP8On36XAjZy5oMddxD1/MuTyHbxt17ewF8eWSNcbuK06VLvuGKrjVXIDrHXQpGQ... [truncated message content] |
From: <joe...@us...> - 2009-03-05 01:48:54
|
Revision: 4061 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4061&view=rev Author: joearmbruster Date: 2009-03-05 01:48:51 +0000 (Thu, 05 Mar 2009) Log Message: ----------- creating a location to store internal plugins Added Paths: ----------- branches/josepharmbruster/WorldWind/WorldWind/Plugins/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-02-27 02:16:49
|
Revision: 4060 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4060&view=rev Author: joearmbruster Date: 2009-02-27 02:16:44 +0000 (Fri, 27 Feb 2009) Log Message: ----------- cleaned up some code around process file, the code was creating a temporary place to perform an uncompress, performing the uncompress and cleaning things up as opposed to just uncompressing in place Modified Paths: -------------- branches/josepharmbruster/WorldWind/PluginSDK/Terrain/TerrainDownloadRequest.cs Modified: branches/josepharmbruster/WorldWind/PluginSDK/Terrain/TerrainDownloadRequest.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginSDK/Terrain/TerrainDownloadRequest.cs 2009-02-27 02:04:56 UTC (rev 4059) +++ branches/josepharmbruster/WorldWind/PluginSDK/Terrain/TerrainDownloadRequest.cs 2009-02-27 02:16:44 UTC (rev 4060) @@ -99,37 +99,17 @@ { if (download.ContentType == ContentTypeZip) { - string compressedPath = download.SavedFilePath + ".zip"; - - DirectoryInfo tempDirectory = new DirectoryInfo(Path.GetDirectoryName(compressedPath) + "\\" + System.DateTime.Now.Ticks.ToString()); - tempDirectory.Create(); - - string tempFullPath = Path.Combine(tempDirectory.FullName, Path.GetFileNameWithoutExtension(download.SavedFilePath)); - - // Remove any old temporary file - if (File.Exists(compressedPath)) - File.Delete(compressedPath); - - if (File.Exists(tempFullPath)) - File.Delete(tempFullPath); - - if (File.Exists(SaveFilePath)) - File.Delete(SaveFilePath); - - File.Move(download.SavedFilePath, compressedPath); - + string compressedPath = download.SavedFilePath; + string outputPath = System.IO.Path.GetDirectoryName(compressedPath); FastZip fastZip = new FastZip(); fastZip.ExtractZip( compressedPath, - tempDirectory.FullName, + outputPath, ""); - File.Move(tempFullPath, SaveFilePath); - try { File.Delete(compressedPath); - tempDirectory.Delete(); } catch { } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-02-27 02:05:09
|
Revision: 4059 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4059&view=rev Author: joearmbruster Date: 2009-02-27 02:04:56 +0000 (Fri, 27 Feb 2009) Log Message: ----------- adding missing file from plugin dialog revamping Added Paths: ----------- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.Designer.cs Added: branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.Designer.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.Designer.cs (rev 0) +++ branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.Designer.cs 2009-02-27 02:04:56 UTC (rev 4059) @@ -0,0 +1,220 @@ +using WorldWind.PluginEngine; + +namespace WorldWind.PluginEngine +{ + partial class PluginDialog + { + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(PluginDialog)); + this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); + this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); + this.buttonLoad = new System.Windows.Forms.Button(); + this.buttonUnload = new System.Windows.Forms.Button(); + this.imageList = new System.Windows.Forms.ImageList(this.components); + this.listView = new WorldWind.PluginEngine.PluginListView(imageList); + this.description = new System.Windows.Forms.TextBox(); + this.webSite = new System.Windows.Forms.LinkLabel(); + this.labelDescription = new System.Windows.Forms.Label(); + this.labelWebSite = new System.Windows.Forms.Label(); + this.labelDeveloper = new System.Windows.Forms.Label(); + this.developer = new System.Windows.Forms.Label(); + this.buttonInstall = new System.Windows.Forms.Button(); + this.buttonUninstall = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // listView + // + this.listView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2}); + this.listView.FullRowSelect = true; + this.listView.GridLines = true; + this.listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.listView.Location = new System.Drawing.Point(8, 8); + this.listView.Name = "listView"; + this.listView.Size = new System.Drawing.Size(231, 160); + this.listView.TabIndex = 0; + this.listView.View = System.Windows.Forms.View.Details; + this.listView.DoubleClick += new System.EventHandler(this.listView_DoubleClick); + this.listView.SelectedIndexChanged += new System.EventHandler(this.listView_SelectedIndexChanged); + // + // columnHeader1 + // + this.columnHeader1.Text = "Available plugins"; + this.columnHeader1.Width = 163; + // + // columnHeader2 + // + this.columnHeader2.Text = "Startup"; + this.columnHeader2.Width = 47; + // + // buttonLoad + // + this.buttonLoad.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonLoad.Location = new System.Drawing.Point(248, 8); + this.buttonLoad.Name = "buttonLoad"; + this.buttonLoad.TabIndex = 1; + this.buttonLoad.Text = "&Load"; + this.buttonLoad.Click += new System.EventHandler(this.buttonLoad_Click); + // + // buttonUnload + // + this.buttonUnload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonUnload.Location = new System.Drawing.Point(248, 40); + this.buttonUnload.Name = "buttonUnload"; + this.buttonUnload.TabIndex = 2; + this.buttonUnload.Text = "&Unload"; + this.buttonUnload.Click += new System.EventHandler(this.buttonUnload_Click); + // + // imageList + // + this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit; + this.imageList.ImageSize = new System.Drawing.Size(16, 11); + this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream"))); + this.imageList.TransparentColor = System.Drawing.Color.Transparent; + // + // description + // + this.description.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.description.Location = new System.Drawing.Point(24, 195); + this.description.Multiline = true; + this.description.Name = "description"; + this.description.ReadOnly = true; + this.description.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.description.Size = new System.Drawing.Size(288, 48); + this.description.TabIndex = 6; + this.description.Text = ""; + // + // webSite + // + this.webSite.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.webSite.Location = new System.Drawing.Point(24, 312); + this.webSite.Name = "webSite"; + this.webSite.Size = new System.Drawing.Size(288, 16); + this.webSite.TabIndex = 10; + this.webSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.webSite_LinkClicked); + // + // labelDescription + // + this.labelDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelDescription.Location = new System.Drawing.Point(10, 179); + this.labelDescription.Name = "labelDescription"; + this.labelDescription.Size = new System.Drawing.Size(100, 16); + this.labelDescription.TabIndex = 5; + this.labelDescription.Text = "Description:"; + // + // labelWebSite + // + this.labelWebSite.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelWebSite.Location = new System.Drawing.Point(10, 296); + this.labelWebSite.Name = "labelWebSite"; + this.labelWebSite.Size = new System.Drawing.Size(56, 16); + this.labelWebSite.TabIndex = 9; + this.labelWebSite.Text = "Web Site:"; + // + // labelDeveloper + // + this.labelDeveloper.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.labelDeveloper.Location = new System.Drawing.Point(10, 253); + this.labelDeveloper.Name = "labelDeveloper"; + this.labelDeveloper.Size = new System.Drawing.Size(62, 16); + this.labelDeveloper.TabIndex = 7; + this.labelDeveloper.Text = "Developer:"; + // + // developer + // + this.developer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.developer.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); + this.developer.Location = new System.Drawing.Point(24, 271); + this.developer.Name = "developer"; + this.developer.Size = new System.Drawing.Size(296, 16); + this.developer.TabIndex = 8; + // + // buttonInstall + // + this.buttonInstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonInstall.Location = new System.Drawing.Point(248, 88); + this.buttonInstall.Name = "buttonInstall"; + this.buttonInstall.TabIndex = 3; + this.buttonInstall.Text = "&Install"; + this.buttonInstall.Click += new System.EventHandler(this.buttonInstall_Click); + // + // buttonUninstall + // + this.buttonUninstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonUninstall.Location = new System.Drawing.Point(248, 120); + this.buttonUninstall.Name = "buttonUninstall"; + this.buttonUninstall.TabIndex = 4; + this.buttonUninstall.Text = "&Uninstall"; + this.buttonUninstall.Click += new System.EventHandler(this.buttonUninstall_Click); + // + // PluginDialog + // + this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); + this.ClientSize = new System.Drawing.Size(328, 342); + this.Controls.Add(this.buttonUninstall); + this.Controls.Add(this.buttonInstall); + this.Controls.Add(this.developer); + this.Controls.Add(this.labelDeveloper); + this.Controls.Add(this.labelWebSite); + this.Controls.Add(this.labelDescription); + this.Controls.Add(this.webSite); + this.Controls.Add(this.description); + this.Controls.Add(this.buttonUnload); + this.Controls.Add(this.buttonLoad); + this.Controls.Add(this.listView); + this.MinimumSize = new System.Drawing.Size(336, 272); + this.Name = "PluginDialog"; + this.Text = "Plugin Load/Unload"; + this.Load += new System.EventHandler(this.PluginDialog_Load); + this.ResumeLayout(false); + + } + #endregion + + + + private PluginListView listView; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + private PluginCompiler compiler; + private System.Windows.Forms.Button buttonLoad; + private System.Windows.Forms.Button buttonUnload; + private System.Windows.Forms.ImageList imageList; + private System.Windows.Forms.TextBox description; + private System.Windows.Forms.LinkLabel webSite; + private System.Windows.Forms.Label labelDescription; + private System.Windows.Forms.Label labelWebSite; + private System.Windows.Forms.Label labelDeveloper; + private System.Windows.Forms.Label developer; + private System.Windows.Forms.Button buttonInstall; + private System.Windows.Forms.Button buttonUninstall; + private System.ComponentModel.IContainer components; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-02-26 02:52:07
|
Revision: 4057 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4057&view=rev Author: joearmbruster Date: 2009-02-26 01:41:51 +0000 (Thu, 26 Feb 2009) Log Message: ----------- - renamed a few variables and completed some comments - implemented plugincompiler TODO: Enumerate codeDomProviders (easier in .net 2.0) Modified Paths: -------------- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginCompiler.cs branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListItem.cs branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListView.cs branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj Modified: branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginCompiler.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginCompiler.cs 2009-02-25 03:41:57 UTC (rev 4056) +++ branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginCompiler.cs 2009-02-26 01:41:51 UTC (rev 4057) @@ -3,6 +3,7 @@ using System.IO; using System.Text; using System.Collections; +using System.Collections.Generic; using System.Collections.Specialized; using System.CodeDom; using System.CodeDom.Compiler; @@ -15,18 +16,54 @@ namespace WorldWind.PluginEngine { /// <summary> - /// Loads plug-in scripts, compiles and executes them + /// Responsible for loading plugin scripts, compiling and executing them. /// </summary> public class PluginCompiler { - MainApplication worldWind; - const string LogCategory = "PLUG"; - Hashtable codeDomProviders = new Hashtable(); // File Extension -> Compiler table - CompilerParameters cp = new CompilerParameters(); - ArrayList m_plugins = new ArrayList(); - StringCollection m_worldWindReferencesList = new StringCollection(); - string m_pluginRootDirectory; + /// <summary> + /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginCompiler"/> class. + /// </summary> + /// <param name="worldWind">main application instance</param> + /// <param name="pluginDirectory">root path to plugins directory</param> + public PluginCompiler(MainApplication worldWind, string pluginDirectory) + { + this.m_worldWind = worldWind; + // Add all available code dom providers + foreach (CompilerInfo compilerInfo in CodeDomProvider.GetAllCompilerInfo()) + { + CodeDomProvider codeDomProvider = compilerInfo.CreateProvider(); + codeDomProviders.Add("." + codeDomProvider.FileExtension, codeDomProvider); + } + + // Setup compiler parameters + m_compilerParameters.GenerateInMemory = true; + m_compilerParameters.GenerateExecutable = false; + m_compilerParameters.IncludeDebugInformation = false; + + // Load all assemblies WW has a reference to + AssemblyName[] assemblyNames = Assembly.GetExecutingAssembly().GetReferencedAssemblies(); + foreach (AssemblyName assemblyName in assemblyNames) + Assembly.Load(assemblyName); + + // Reference all assemblies WW has loaded + Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); + foreach (Assembly assembly in assemblies) + { + try + { + if (assembly.Location.Length > 0) + m_worldWindReferencesList.Add(assembly.Location); + } + catch (NotSupportedException) + { + // In-memory compiled assembly etc. + } + } + + m_pluginRootDirectory = pluginDirectory; + } + public string PluginRootDirectory { get @@ -51,7 +88,7 @@ /// <summary> /// The list of discovered plugins. /// </summary> - public ArrayList Plugins + public List<PluginInfo> Plugins { get { @@ -59,79 +96,25 @@ } } - /// <summary> - /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginCompiler"/> class. - /// </summary> - /// <param name="worldWind"></param> - /// <param name="pluginDirectory"></param> - public PluginCompiler( MainApplication worldWind, string pluginDirectory ) - { - this.worldWind = worldWind; - // Add the available codeDomProviders - // TODO: Enumerate codeDomProviders (easier in .net 2.0) - AddCodeProvider(new Microsoft.CSharp.CSharpCodeProvider() ); - AddCodeProvider(new Microsoft.VisualBasic.VBCodeProvider() ); - AddCodeProvider(new Microsoft.JScript.JScriptCodeProvider() ); - - // Setup compiler parameters - cp.GenerateExecutable = false; - cp.GenerateInMemory = true; - cp.IncludeDebugInformation = false; - - // Load all assemblies WW has a reference to - AssemblyName[] assemblyNames = Assembly.GetExecutingAssembly().GetReferencedAssemblies(); - foreach(AssemblyName assemblyName in assemblyNames) - Assembly.Load(assemblyName); - - // Reference all assemblies WW has loaded - Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); - foreach(Assembly assembly in assemblies) - { - try - { - if(assembly.Location.Length > 0) - m_worldWindReferencesList.Add(assembly.Location); - } - catch(NotSupportedException) - { - // In-memory compiled assembly etc. - } - } - - PluginRootDirectory = pluginDirectory; - } - /// <summary> - /// Adds a compiler to the list of available codeDomProviders - /// </summary> - public void AddCodeProvider( CodeDomProvider cdp ) - { - // Add leading dot since that's what Path.GetExtension uses - codeDomProviders.Add("."+cdp.FileExtension, cdp); - } - - /// <summary> /// Scan for plugins inside an assembly. /// </summary> public void FindPlugins( Assembly assembly ) { - foreach( Type t in assembly.GetTypes() ) + foreach( Type type in assembly.GetTypes() ) { - if(!t.IsClass) + if(!type.IsClass || !type.IsPublic) continue; - if(!t.IsPublic) + if(type.BaseType!=typeof(Plugin)) continue; - if(t.BaseType!=typeof(Plugin)) - continue; - try { PluginInfo pi = new PluginInfo(); - pi.Plugin = (Plugin) assembly.CreateInstance( t.ToString() ); - pi.Name = t.Name; + pi.Plugin = (Plugin) assembly.CreateInstance( type.ToString() ); + pi.Name = type.Name; pi.Description = "World Wind internally loaded plugin."; m_plugins.Add(pi); } @@ -267,7 +250,7 @@ if( pi.FullPath != null && pi.FullPath.Length > 0) pluginPath = Path.GetDirectoryName(pi.FullPath); - pi.Plugin.PluginLoad(worldWind, pluginPath); + pi.Plugin.PluginLoad(m_worldWind, pluginPath); } /// <summary> @@ -322,24 +305,24 @@ if(cdp is Microsoft.JScript.JScriptCodeProvider) // JSCript doesn't support unsafe code - cp.CompilerOptions = ""; + m_compilerParameters.CompilerOptions = ""; else - cp.CompilerOptions = "/unsafe"; + m_compilerParameters.CompilerOptions = "/unsafe"; // Add references - cp.ReferencedAssemblies.Clear(); + m_compilerParameters.ReferencedAssemblies.Clear(); foreach( string reference in m_worldWindReferencesList) - cp.ReferencedAssemblies.Add(reference); + m_compilerParameters.ReferencedAssemblies.Add(reference); // Add reference to core functions for VB.Net users if(cdp is Microsoft.VisualBasic.VBCodeProvider) - cp.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll"); + m_compilerParameters.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll"); // Add references specified in the plugin foreach( string reference in pi.References.Split(',')) AddCompilerReference( pi.FullPath, reference.Trim() ); - CompilerResults cr = cdp.CompileAssemblyFromFile( cp, pi.FullPath ); + CompilerResults cr = cdp.CompileAssemblyFromFile( m_compilerParameters, pi.FullPath ); if(cr.Errors.HasErrors || cr.Errors.HasWarnings) { // Handle compiler errors @@ -384,7 +367,7 @@ throw new ApplicationException("Search for required library '" + assemblyName + "' failed."); } - cp.ReferencedAssemblies.Add( referencedAssembly.Location ); + m_compilerParameters.ReferencedAssemblies.Add( referencedAssembly.Location ); } catch(Exception caught) { @@ -395,24 +378,20 @@ /// <summary> /// Looks for class derived from Plugin and returns an instance of this class. /// </summary> - static Plugin GetPluginInterface(Assembly asm) + static Plugin GetPluginInterface(Assembly assembly) { - foreach( Type t in asm.GetTypes() ) + foreach( Type type in assembly.GetTypes() ) { - if(!t.IsClass) + if(!type.IsClass || !type.IsPublic) continue; - if(!t.IsPublic) - continue; - // Replaced to support VisualEsse - if (!t.IsSubclassOf(typeof(Plugin))) + if (!type.IsSubclassOf(typeof(Plugin))) continue; try { - Plugin pluginInstance = (Plugin) asm.CreateInstance( t.ToString() ); - return pluginInstance; + return (Plugin)assembly.CreateInstance(type.ToString()); } catch(MissingMethodException) { @@ -426,5 +405,13 @@ throw new ArgumentException( "Plugin does not derive from base class Plugin." ); } + + MainApplication m_worldWind; + const string LogCategory = "PLUGINCOMPILER"; + Hashtable codeDomProviders = new Hashtable(); // File Extension -> Compiler table + CompilerParameters m_compilerParameters = new CompilerParameters(); + List<PluginInfo> m_plugins = new List<PluginInfo>(); + StringCollection m_worldWindReferencesList = new StringCollection(); + private string m_pluginRootDirectory; } } \ No newline at end of file Modified: branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListItem.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListItem.cs 2009-02-25 03:41:57 UTC (rev 4056) +++ branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListItem.cs 2009-02-26 01:41:51 UTC (rev 4057) @@ -1,17 +1,14 @@ -using System; using System.Windows.Forms; namespace WorldWind.PluginEngine { /// <summary> - /// Listview item in the plugin dialog. + /// Listview item used within the plugin dialog. /// </summary> public class PluginListItem : ListViewItem { - PluginInfo pluginInfo; - /// <summary> - /// Plugin information container. + /// Plugin information container /// </summary> public PluginInfo PluginInfo { @@ -22,7 +19,7 @@ } /// <summary> - /// Plugin name. + /// Plugin name property /// </summary> public new string Name { @@ -35,11 +32,13 @@ /// <summary> /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginListItem"/> class. /// </summary> - public PluginListItem(PluginInfo pi) + public PluginListItem(PluginInfo pluginInfo) { - this.pluginInfo = pi; - this.Text = pi.Name; - this.Checked = pi.IsLoadedAtStartup; + this.pluginInfo = pluginInfo; + this.Text = pluginInfo.Name; + this.Checked = pluginInfo.IsLoadedAtStartup; } + + private PluginInfo pluginInfo; } } Modified: branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListView.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListView.cs 2009-02-25 03:41:57 UTC (rev 4056) +++ branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListView.cs 2009-02-26 01:41:51 UTC (rev 4057) @@ -7,11 +7,10 @@ namespace WorldWind.PluginEngine { /// <summary> - /// The list view in the plugin dialog. + /// The list view used within the plugin dialog. /// </summary> public class PluginListView : ListView { - ImageList imageList; /// <summary> /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginListView"/> class. @@ -141,5 +140,7 @@ ButtonState state = item.PluginInfo.IsLoadedAtStartup ? ButtonState.Checked : ButtonState.Normal; ControlPaint.DrawCheckBox(e.Graphics, bounds, state); } + + private ImageList imageList; } } Modified: branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-02-25 03:41:57 UTC (rev 4056) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-02-26 01:41:51 UTC (rev 4057) @@ -332,9 +332,7 @@ <Compile Include="PlaceListSettings.cs"> <SubType>Code</SubType> </Compile> - <Compile Include="PluginEngine\NativeMethods.cs"> - <SubType>Code</SubType> - </Compile> + <Compile Include="PluginEngine\NativeMethods.cs" /> <Compile Include="PluginEngine\PluginDialog.cs"> <SubType>Form</SubType> </Compile> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-02-25 03:42:01
|
Revision: 4056 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4056&view=rev Author: joearmbruster Date: 2009-02-25 03:41:57 +0000 (Wed, 25 Feb 2009) Log Message: ----------- Re-implemented the plugin dialog using the designer. The functionality, look and feel are without change. Did a slight amount of refactoring along the way. Modified Paths: -------------- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.cs branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.resx branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginInstallDialog.cs branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListView.cs branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj Modified: branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.cs 2009-02-24 04:59:57 UTC (rev 4055) +++ branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.cs 2009-02-25 03:41:57 UTC (rev 4056) @@ -1,449 +1,254 @@ using System; -using System.IO; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; using System.Diagnostics; using System.Drawing; -using System.Collections; -using System.ComponentModel; +using System.IO; +using System.Text; using System.Windows.Forms; +using Utility; + namespace WorldWind.PluginEngine { - /// <summary> - /// Plugin manager dialog. - /// </summary> - public class PluginDialog : System.Windows.Forms.Form - { - private PluginListView listView; - private System.Windows.Forms.ColumnHeader columnHeader1; - private System.Windows.Forms.ColumnHeader columnHeader2; - private PluginCompiler compiler; - private System.Windows.Forms.Button buttonLoad; - private System.Windows.Forms.Button buttonUnload; - private System.Windows.Forms.ImageList imageList; - private System.Windows.Forms.TextBox description; - private System.Windows.Forms.LinkLabel webSite; - private System.Windows.Forms.Label labelDescription; - private System.Windows.Forms.Label labelWebSite; - private System.Windows.Forms.Label labelDeveloper; - private System.Windows.Forms.Label developer; - private System.Windows.Forms.Button buttonInstall; - private System.Windows.Forms.Button buttonUninstall; - private System.ComponentModel.IContainer components; + public partial class PluginDialog : Form + { + /// <summary> + /// Constructur for the plugin dialog box. + /// </summary> + /// <param name="compiler">plugin compiler to use for dialog instance</param> + public PluginDialog(PluginCompiler compiler) + { + InitializeComponent(); + this._compiler = compiler; + } - /// <summary> - /// On/Off images for items. - /// </summary> - public ImageList ImageList - { - get - { - return imageList; - } - } + /// <summary> + /// Clear the plugins list view and populate it with the plugins + /// that are registered iwth the plugin compiler + /// </summary> + private void RefreshPluginList() + { + _compiler.FindPlugins(); + listView.Items.Clear(); + foreach (PluginInfo plugin in _compiler.Plugins) + { + listView.Items.Add(new PluginListItem(plugin)); + } + listView.Invalidate(); + } - /// <summary> - /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginDialog"/> class. - /// </summary> - /// <param name="compiler"></param> - public PluginDialog(PluginCompiler compiler) - { - // - // Required for Windows Form Designer support - // - InitializeComponent(); + /// <summary> + /// Event fired when the Plugin Dialog box loads + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void PluginDialog_Load(object sender, EventArgs e) + { + RefreshPluginList(); - this.compiler = compiler; - } + listView_SelectedIndexChanged(this, EventArgs.Empty); - /// <summary> - /// Clean up any resources being used. - /// </summary> - protected override void Dispose( bool disposing ) - { - if( disposing ) - { - if(components != null) - { - components.Dispose(); - } - } - base.Dispose( disposing ); - } + UpdateUserInterface(); + } - #region Windows Form Designer generated code - /// <summary> - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// </summary> - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(PluginDialog)); - this.listView = new WorldWind.PluginEngine.PluginListView(); - this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); - this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); - this.buttonLoad = new System.Windows.Forms.Button(); - this.buttonUnload = new System.Windows.Forms.Button(); - this.imageList = new System.Windows.Forms.ImageList(this.components); - this.description = new System.Windows.Forms.TextBox(); - this.webSite = new System.Windows.Forms.LinkLabel(); - this.labelDescription = new System.Windows.Forms.Label(); - this.labelWebSite = new System.Windows.Forms.Label(); - this.labelDeveloper = new System.Windows.Forms.Label(); - this.developer = new System.Windows.Forms.Label(); - this.buttonInstall = new System.Windows.Forms.Button(); - this.buttonUninstall = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // listView - // - this.listView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.listView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeader1, - this.columnHeader2}); - this.listView.FullRowSelect = true; - this.listView.GridLines = true; - this.listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; - this.listView.Location = new System.Drawing.Point(8, 8); - this.listView.Name = "listView"; - this.listView.Size = new System.Drawing.Size(231, 160); - this.listView.TabIndex = 0; - this.listView.View = System.Windows.Forms.View.Details; - this.listView.DoubleClick += new System.EventHandler(this.listView_DoubleClick); - this.listView.SelectedIndexChanged += new System.EventHandler(this.listView_SelectedIndexChanged); - // - // columnHeader1 - // - this.columnHeader1.Text = "Available plugins"; - this.columnHeader1.Width = 163; - // - // columnHeader2 - // - this.columnHeader2.Text = "Startup"; - this.columnHeader2.Width = 47; - // - // buttonLoad - // - this.buttonLoad.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonLoad.Location = new System.Drawing.Point(248, 8); - this.buttonLoad.Name = "buttonLoad"; - this.buttonLoad.TabIndex = 1; - this.buttonLoad.Text = "&Load"; - this.buttonLoad.Click += new System.EventHandler(this.buttonLoad_Click); - // - // buttonUnload - // - this.buttonUnload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonUnload.Location = new System.Drawing.Point(248, 40); - this.buttonUnload.Name = "buttonUnload"; - this.buttonUnload.TabIndex = 2; - this.buttonUnload.Text = "&Unload"; - this.buttonUnload.Click += new System.EventHandler(this.buttonUnload_Click); - // - // imageList - // - this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit; - this.imageList.ImageSize = new System.Drawing.Size(16, 11); - this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream"))); - this.imageList.TransparentColor = System.Drawing.Color.Transparent; - // - // description - // - this.description.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.description.Location = new System.Drawing.Point(24, 195); - this.description.Multiline = true; - this.description.Name = "description"; - this.description.ReadOnly = true; - this.description.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.description.Size = new System.Drawing.Size(288, 48); - this.description.TabIndex = 6; - this.description.Text = ""; - // - // webSite - // - this.webSite.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.webSite.Location = new System.Drawing.Point(24, 312); - this.webSite.Name = "webSite"; - this.webSite.Size = new System.Drawing.Size(288, 16); - this.webSite.TabIndex = 10; - this.webSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.webSite_LinkClicked); - // - // labelDescription - // - this.labelDescription.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.labelDescription.Location = new System.Drawing.Point(10, 179); - this.labelDescription.Name = "labelDescription"; - this.labelDescription.Size = new System.Drawing.Size(100, 16); - this.labelDescription.TabIndex = 5; - this.labelDescription.Text = "Description:"; - // - // labelWebSite - // - this.labelWebSite.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.labelWebSite.Location = new System.Drawing.Point(10, 296); - this.labelWebSite.Name = "labelWebSite"; - this.labelWebSite.Size = new System.Drawing.Size(56, 16); - this.labelWebSite.TabIndex = 9; - this.labelWebSite.Text = "Web Site:"; - // - // labelDeveloper - // - this.labelDeveloper.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.labelDeveloper.Location = new System.Drawing.Point(10, 253); - this.labelDeveloper.Name = "labelDeveloper"; - this.labelDeveloper.Size = new System.Drawing.Size(62, 16); - this.labelDeveloper.TabIndex = 7; - this.labelDeveloper.Text = "Developer:"; - // - // developer - // - this.developer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.developer.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); - this.developer.Location = new System.Drawing.Point(24, 271); - this.developer.Name = "developer"; - this.developer.Size = new System.Drawing.Size(296, 16); - this.developer.TabIndex = 8; - // - // buttonInstall - // - this.buttonInstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonInstall.Location = new System.Drawing.Point(248, 88); - this.buttonInstall.Name = "buttonInstall"; - this.buttonInstall.TabIndex = 3; - this.buttonInstall.Text = "&Install"; - this.buttonInstall.Click += new System.EventHandler(this.buttonInstall_Click); - // - // buttonUninstall - // - this.buttonUninstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonUninstall.Location = new System.Drawing.Point(248, 120); - this.buttonUninstall.Name = "buttonUninstall"; - this.buttonUninstall.TabIndex = 4; - this.buttonUninstall.Text = "&Uninstall"; - this.buttonUninstall.Click += new System.EventHandler(this.buttonUninstall_Click); - // - // PluginDialog - // - this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); - this.ClientSize = new System.Drawing.Size(328, 342); - this.Controls.Add(this.buttonUninstall); - this.Controls.Add(this.buttonInstall); - this.Controls.Add(this.developer); - this.Controls.Add(this.labelDeveloper); - this.Controls.Add(this.labelWebSite); - this.Controls.Add(this.labelDescription); - this.Controls.Add(this.webSite); - this.Controls.Add(this.description); - this.Controls.Add(this.buttonUnload); - this.Controls.Add(this.buttonLoad); - this.Controls.Add(this.listView); - this.MinimumSize = new System.Drawing.Size(336, 272); - this.Name = "PluginDialog"; - this.Text = "Plugin Load/Unload"; - this.Load += new System.EventHandler(this.PluginDialog_Load); - this.ResumeLayout(false); + /// <summary> + /// Event fired when the Load button is pressed + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void buttonLoad_Click(object sender, EventArgs e) + { + foreach (PluginListItem pluginListItem in listView.SelectedItems) + PluginLoad(pluginListItem); - } - #endregion + UpdateUserInterface(); + } - /// <summary> - /// Fill the list view with currently installed plugins. - /// </summary> - void AddPluginList() - { - listView.Items.Clear(); - foreach (PluginInfo pi in compiler.Plugins) - { - PluginListItem li = new PluginListItem(pi); - listView.Items.Add(li); - } - } + /// <summary> + /// Event fired when the Unload buttons is pressed + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void buttonUnload_Click(object sender, EventArgs e) + { + foreach (PluginListItem pluginListItem in listView.SelectedItems) + PluginUnload(pluginListItem); - private void PluginDialog_Load(object sender, System.EventArgs e) - { - AddPluginList(); - - //Force UI state update - listView_SelectedIndexChanged(this,EventArgs.Empty); - UpdateUIStates(); - } + UpdateUserInterface(); + } - /// <summary> - /// Unload selected plugins. - /// </summary> - private void buttonUnload_Click(object sender, System.EventArgs e) - { - foreach(PluginListItem pi in listView.SelectedItems) - PluginUnload(pi); - listView.Invalidate(); - UpdateUIStates(); - } + /// <summary> + /// Load the provided plugin + /// </summary> + /// <param name="pi">plugin list item that should be loaded</param> + private void PluginLoad(PluginListItem pluginListItem) + { + try + { + _compiler.Load(pluginListItem.PluginInfo); + } + catch (Exception exception) + { + string message = string.Format( + "Error loading plugin: {0} \n {1}", + pluginListItem.Name, + exception.Message); + Log.Write(0, "PLUGIN_DIALOG", message); + MessageBox.Show(message,"Plugin Load Error",MessageBoxButtons.OK,MessageBoxIcon.Error); + } + } - /// <summary> - /// Load selected plugins. - /// </summary> - private void buttonLoad_Click(object sender, System.EventArgs e) - { - foreach(PluginListItem pi in listView.SelectedItems) - PluginLoad(pi); - listView.Invalidate(); - UpdateUIStates(); - } + /// <summary> + /// Unload the provided plugin + /// </summary> + /// <param name="pi">plugin list item that should be unloaded</param> + private void PluginUnload(PluginListItem pluginListItem) + { + try + { + _compiler.Unload(pluginListItem.PluginInfo); + } + catch (Exception exception) + { + string message = string.Format( + "Error unloading plugin: {0} \n {1}", + pluginListItem.Name, + exception.Message); + MessageBox.Show(message,"Plugin Unload Error",MessageBoxButtons.OK,MessageBoxIcon.Error); + } + } - /// <summary> - /// Load plugin and display message on failure. - /// </summary> - private void PluginLoad(PluginListItem pi) - { - try - { - compiler.Load(pi.PluginInfo); - } - catch(Exception caught) - { - MessageBox.Show("The error was:\n\n" + caught.Message, pi.Name + - " plugin failed to load.", - MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } + /// <summary> + /// Updates the state of each gui control to reflect the current state + /// </summary> + private void UpdateUserInterface() + { + bool isItemSelected = listView.SelectedItems.Count > 0; + buttonUninstall.Enabled = isItemSelected; + if (!isItemSelected) + { + buttonLoad.Enabled = false; + buttonUnload.Enabled = false; + return; + } - /// <summary> - /// Unload plugin and display message on failure. - /// </summary> - public void PluginUnload(PluginListItem pi) - { - try - { - compiler.Unload(pi.PluginInfo); - } - catch(Exception caught) - { - MessageBox.Show("The error was:\n\n" + caught.Message, pi.Name + - " failed to unload.", - MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } + PluginListItem item = (PluginListItem)listView.SelectedItems[0]; + buttonLoad.Enabled = !item.PluginInfo.IsCurrentlyLoaded; + buttonUnload.Enabled =item.PluginInfo.IsCurrentlyLoaded; - /// <summary> - /// Updates enabled states of controls to reflect selection. - /// </summary> - void UpdateUIStates() - { - bool isItemSelected = listView.SelectedItems.Count > 0; - buttonUninstall.Enabled = isItemSelected; - if(!isItemSelected) - { - buttonLoad.Enabled = false; - buttonUnload.Enabled = false; - return; - } + listView.Invalidate(); + } - PluginListItem item = (PluginListItem)listView.SelectedItems[0]; - buttonLoad.Enabled = !item.PluginInfo.IsCurrentlyLoaded; - buttonUnload.Enabled = item.PluginInfo.IsCurrentlyLoaded; - } + /// <summary> + /// Event fired when user selects a specific row within the listview + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void listView_SelectedIndexChanged(object sender, EventArgs e) + { + description.Clear(); + developer.ResetText(); + webSite.ResetText(); - private void listView_SelectedIndexChanged(object sender, System.EventArgs e) - { - description.Text = ""; - developer.Text = ""; - webSite.Text = ""; + UpdateUserInterface(); - UpdateUIStates(); + if (listView.SelectedItems.Count != 1) + return; - if(listView.SelectedItems.Count != 1) - return; + PluginListItem item = (PluginListItem)listView.SelectedItems[0]; - PluginListItem item = (PluginListItem)listView.SelectedItems[0]; + description.Text = item.PluginInfo.Description; + developer.Text = item.PluginInfo.Developer; + webSite.Text = item.PluginInfo.WebSite; + } - description.Text = item.PluginInfo.Description; - developer.Text = item.PluginInfo.Developer; - webSite.Text = item.PluginInfo.WebSite; - } + /// <summary> + /// Event fired when the user clicks on the provided website link + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void webSite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + if (webSite.Text == null || webSite.Text.Length <= 0) + return; - private void webSite_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e) - { - if(webSite.Text == null || webSite.Text.Length<=0) - return; + Process.Start(webSite.Text); + } - Process.Start(webSite.Text); - } + /// <summary> + /// Event fired when the user selects the install button + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void buttonInstall_Click(object sender, EventArgs e) + { + Form installDialog = new PluginInstallDialog(_compiler, this.Icon); + installDialog.ShowDialog(); - private void buttonInstall_Click(object sender, System.EventArgs e) - { - Form installDialog = new PluginInstallDialog(compiler); - installDialog.Icon = this.Icon; - installDialog.ShowDialog(); + RefreshPluginList(); + } - // Rescan for plugins - compiler.FindPlugins(); - AddPluginList(); - } + /// <summary> + /// Event fired when the users selects the uninstall button + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void buttonUninstall_Click(object sender, EventArgs e) + { + foreach (PluginListItem pluginListItem in listView.SelectedItems) + { + string fullPath = pluginListItem.PluginInfo.FullPath; + if (!File.Exists(fullPath)) + { + // Ignore internal plugins + MessageBox.Show("Plugin '" + pluginListItem.Name + "' is inside worldwind.exe and cannot be uninstalled.", + "Uninstall", + MessageBoxButtons.OK, + MessageBoxIcon.Information); + continue; + } - /// <summary> - /// Uninstall/remove plugins - /// </summary> - private void buttonUninstall_Click(object sender, System.EventArgs e) - { - foreach(PluginListItem pi in listView.SelectedItems) - { - string fullPath = pi.PluginInfo.FullPath; - if(!File.Exists(fullPath)) - { - // Ignore internal plugins - MessageBox.Show("Plugin '" + pi.Name + "' is inside worldwind.exe and cannot be uninstalled.", - "Uninstall", - MessageBoxButtons.OK, - MessageBoxIcon.Information); - continue; - } + string msg = string.Format("Do you really want to uninstall {0}?", pluginListItem.Name); + if (MessageBox.Show(msg, "Delete plugin", MessageBoxButtons.YesNo, MessageBoxIcon.Question, + MessageBoxDefaultButton.Button2) != DialogResult.Yes) + continue; - // Show uninstall warning - string msg = string.Format("Do you really want to uninstall {0}?", pi.Name ); - if( MessageBox.Show(msg, "Delete plugin", MessageBoxButtons.YesNo, MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2) != DialogResult.Yes) - continue; + try + { + _compiler.Uninstall(pluginListItem.PluginInfo); + RefreshPluginList(); + } + catch (Exception caught) + { + MessageBox.Show("Uninstall failed. The error was:\n\n" + caught.Message, pluginListItem.Name + + " plugin failed to uninstall.", + MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } - try - { - compiler.Uninstall( pi.PluginInfo ); + UpdateUserInterface(); + } - // Remove if from the plugin list - listView.Items.Remove(pi); - } - catch(Exception caught) - { - MessageBox.Show("Uninstall failed. The error was:\n\n" + caught.Message, pi.Name + - " plugin failed to uninstall.", - MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } + /// <summary> + /// Event fired when the plugins list view is double clicked. + /// </summary> + /// <param name="sender">sender</param> + /// <param name="e">event arguments</param> + private void listView_DoubleClick(object sender, EventArgs e) + { + foreach (PluginListItem pluginListItem in listView.SelectedItems) + { + if (pluginListItem.PluginInfo.IsCurrentlyLoaded) + PluginUnload(pluginListItem); + else + PluginLoad(pluginListItem); + } + UpdateUserInterface(); + } - UpdateUIStates(); - } - - /// <summary> - /// Invert state of double clicked item (load/unload) - /// </summary> - private void listView_DoubleClick(object sender, System.EventArgs e) - { - foreach(PluginListItem pi in listView.SelectedItems) - { - if(pi.PluginInfo.IsCurrentlyLoaded) - PluginUnload(pi); - else - PluginLoad(pi); - } - listView.Invalidate(); - UpdateUIStates(); - } - } -} + private PluginCompiler _compiler; + } +} \ No newline at end of file Modified: branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.resx =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.resx 2009-02-24 04:59:57 UTC (rev 4055) +++ branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginDialog.resx 2009-02-25 03:41:57 UTC (rev 4056) @@ -3,7 +3,7 @@ <!-- Microsoft ResX Schema - Version 1.3 + Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the @@ -14,16 +14,17 @@ ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">1.3</resheader> + <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1">this is my long string</data> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - [base64 mime encoded serialized .NET Framework object] + <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - [base64 mime encoded string representing a byte array form of the .NET Framework object] + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple @@ -35,7 +36,7 @@ Classes that don't support this are serialized and stored with the mimetype set. - The mimetype is used forserialized objects, and tells the + The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: @@ -45,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -59,18 +60,37 @@ : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> @@ -89,219 +109,72 @@ <value>text/microsoft-resx</value> </resheader> <resheader name="version"> - <value>1.3</value> + <value>2.0</value> </resheader> <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> - <data name="listView.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="listView.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="listView.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="columnHeader1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="columnHeader1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="columnHeader2.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="columnHeader2.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="buttonLoad.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="buttonLoad.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="buttonLoad.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="buttonUnload.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="buttonUnload.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="buttonUnload.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="imageList.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="imageList.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="imageList.Location" type="System.Drawing.Point, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> + <metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>17, 17</value> - </data> + </metadata> <data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> <value> - AAEAAAD/////AQAAAAAAAAAMAgAAAFpTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0xLjAuNTAw - MC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZT - eXN0ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMA - AACGCwAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABEAEAAQsBAAT/ASEBEAj/AUIBTQE2BwABNgMAASgD - AAFAAwABCwMAAQEBAAEgBgABCxIAASgBewEgAf0BIAFNARwB/QEcAToBGQH+ARwBOgEZAf4BHAE6ARkB - /gEcAToBGQH+ARwBOgEZAf4BHAE6ARkB/gEcAToBGQH+ARwBOgEZAf4BHAE6ARkB/gEcAToBGQH+ARwB - OgEZAf4BHAE6ARkB/gEcATQBGQH+ARsBNAEYAf4BYQFqAWYB/QFAAUQBQgH9ATEBNAEyAf4BMQE0ATIB - /gExATQBMgH+ATEBNAEyAf4BMQE0ATIB/gExATQBMgH+ATEBNAEyAf4BMQE0ATIB/gExATQBMgH+ATEB - NAEyAf4BMQE0ATIB/gExATQBMgH+AS0BLwEuAf4BLgIvAf6AAAFkAbgBXQH/ATkBmgE0Af8BLAF4ASkB - /wEsAXgBKQH/ASwBeAEpAf8BLAF4ASkB/wEsAXgBKQH/ASwBeAEpAf8BLAF4ASkB/wEsAXgBKQH/ASwB - eAEpAf8BLAF4ASkB/wEsAXgBKQH/ASwBeAEpAf8BHwFZARwB/wEMASgBCQH/AYoBlQGRAf8BYAFtAWkB - /wFLAVUBUQH/AUsBVQFRAf8BSwFVAVEB/wFLAVUBUQH/AUsBVQFRAf8BSwFVAVEB/wFLAVUBUQH/AUsB - VQFRAf8BSwFVAVEB/wFLAVUBUQH/AUsBVQFRAf8BSwFVAVEB/wE4AT8BPQH/ARsBHgEdAf+AAAGRAdIB - igH/AXYByQFxAf8BXAG9AVkB/wFcAb0BWQH/AVwBvQFZAf8BXAG9AVkB/wFcAb0BWQH/AVwBvQFZAf8B - XAG9AVkB/wFcAb0BWQH/AVwBvQFZAf8BXAG9AVkB/wFcAb0BWQH/AVkBuwFVAf8BOwGJATQB/wEUATUB - DwH/AaMBrAGpAf8BhAGQAYsB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8B - ZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFOAVgB - VAH/AR8BIwEiAf+AAAGeAd8BlAH/AYkB2QGBAf8BdwHVAXMB/wF9AdgBewH/AX0B2AF7Af8BfQHYAXsB - /wF9AdgBewH/AX0B2AF7Af8BfQHYAXsB/wF9AdgBewH/AX0B2AF7Af8BfQHYAXsB/wF6AdYBdwH/AXAB - 0gFnAf8BSgGaAT4B/wEaATsBEwH/AaUBrQGqAf8BhwGSAY4B/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB - /wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkB - dwFyAf8BaQF3AXIB/wFPAVoBVgH/ASABJAEiAf+AAAGpAeoBmwH/AZYB5gGJAf8BiAHkAX4B/wGSAecB - jwH/AZcB6QGYAf8BlwHpAZgB/wGXAekBmAH/AZcB6QGYAf8BlwHpAZgB/wGXAekBmAH/AZcB6QGYAf8B - lQHoAZQB/wGMAeUBhQH/AYAB4QFyAf8BWAGnAUcB/wEfAUIBFwH/AaUBrQGqAf8BhwGSAY4B/wFpAXcB - cgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8B - aQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFPAVoBVgH/ASABJAEiAf+AAAGzAfQBoQH/AaEB - 8QGRAf8BlQHwAYYB/wGgAfMBmQH/AakB9QGpAf8BrQH2AbAB/wGtAfYBsAH/Aa0B9gGwAf8BrQH2AbAB - /wGtAfYBsAH/AasB9QGsAf8BowHzAZ8B/wGYAfEBjQH/AY4B7wF7Af8BYwGzAU8B/wEkAUcBGgH/AaUB - rQGqAf8BhwGSAY4B/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB - /wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFPAVoBVgH/ASAB - JAEiAf+AAAG5AfsBpQH/AaoB+gGVAf8BngH6AYwB/wGoAfsBnQH/Aa8B+wGqAf8BsQH7Aa4B/wGxAfsB - rgH/AbEB+wGuAf8BsQH7Aa4B/wGxAfsBrgH/AbAB+wGsAf8BqwH7AaMB/wGiAfoBkgH/AZgB+QGBAf8B - awG8AVMB/wEoAUsBHAH/AaUBrQGqAf8BhwGSAY4B/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcB - cgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8B - aQF3AXIB/wFPAVoBVgH/ASABJAEiAf+AAAG9Af8BpgH/Aa4B/wGXAf8BowH/AY4B/wGqAf8BmgH/AawB - /wGeAf8BrAH/AZ4B/wGsAf8BngH/AawB/wGeAf8BrAH/AZ4B/wGsAf8BngH/AawB/wGeAf8BqwH/AZwB - /wGmAf8BkwH/AZ0B/wGDAf8BcAHBAVYB/wEqAU0BHQH/AaUBrQGqAf8BhwGSAY4B/wFpAXcBcgH/AWkB - dwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB - /wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFPAVoBVgH/ASABJAEiAf+AAAG2AfoBngH/AaYB+gGNAf8B - lwH5AX4B/wGZAfkBggH/AZkB+QGCAf8BmQH5AYIB/wGZAfkBggH/AZkB+QGCAf8BmQH5AYIB/wGZAfkB - ggH/AZkB+QGCAf8BmQH5AYIB/wGYAfkBfwH/AZMB+AF2Af8BaAHBAUsB/wEnAU4BGQH/AaYBrgGsAf8B - iQGUAZAB/wFrAXkBdAH/AWsBeQF0Af8BawF5AXQB/wFrAXkBdAH/AWsBeQF0Af8BawF5AXQB/wFrAXkB - dAH/AWsBeQF0Af8BawF5AXQB/wFrAXkBdAH/AWsBeQF0Af8BawF5AXQB/wFSAVwBWQH/ASEBJgEkAf+A - AAGzAe8BoAH/AaQB7AGQAf8BkAHoAXgB/wGQAegBeAH/AZAB6AF4Af8BkAHoAXgB/wGQAegBeAH/AZAB - 6AF4Af8BkAHoAXgB/wGQAegBeAH/AZAB6AF4Af8BkAHoAXgB/wGQAegBeAH/AY8B6AF2Af8BZgHeAUEB - /wEuAXEBFwH/AbcBvQG7Af8BowGrAagB/wGLAZYBkgH/AYsBlgGSAf8BiwGWAZIB/wGLAZYBkgH/AYsB - lgGSAf8BiwGWAZIB/wGLAZYBkgH/AYsBlgGSAf8BiwGWAZIB/wGLAZYBkgH/AYsBlgGSAf8BiwGWAZIB - /wFpAXcBcgH/ATYBPQE7Af+AAAGqAdgBmgH+AZoB0wGGAf4BigHQAXMB/gGKAdABcwH+AYoB0AFzAf4B - igHQAXMB/gGKAdABcwH+AYoB0AFzAf4BigHQAXMB/gGKAdABcwH+AYoB0AFzAf4BigHQAXMB/gGKAdAB - cwH+AYoB0AFzAf4BdQHKAVgB/gFCAa0BGgH9AbcBuwG5Af4BqQGuAasB/gGcAaIBnwH+AZwBogGfAf4B - nAGiAZ8B/gGcAaIBnwH+AZwBogGfAf4BnAGiAZ8B/gGcAaIBnwH+AZwBogGfAf4BnAGiAZ8B/gGcAaIB - nwH+AZwBogGfAf4BnAGiAZ8B/gGLAZMBkAH+AWQBbQFpAf2AAAFCAU0BPgcAAT4DAAEoAwABQAMAAQsD - AAEBAQABAQUAAVgXAAP/bwAL + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACG + CwAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABEAEAAQsBAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABCwMAAQEBAAEgBgABCxIAASoBdwEiAf0BIgFLAR4B/QEcAToBGQH+ARwBOgEZAf4BHAE6ARkB/gEc + AToBGQH+ARwBOgEZAf4BHAE6ARkB/gEcAToBGQH+ARwBOgEZAf4BHAE6ARkB/gEcAToBGQH+ARwBOgEZ + Af4BHAE6ARkB/gEcATQBGQH+ARsBNAEYAf4BXQFmAWIB/QFAAUIBQAH9ATEBNAEyAf4BMQE0ATIB/gEx + ATQBMgH+ATEBNAEyAf4BMQE0ATIB/gExATQBMgH+ATEBNAEyAf4BMQE0ATIB/gExATQBMgH+ATEBNAEy + Af4BMQE0ATIB/gExATQBMgH+AS0BLwEuAf4BLgIvAf6AAAFiAbgBWwH/ATcBmgEyAf8BKgF2AScB/wEq + AXYBJwH/ASoBdgEnAf8BKgF2AScB/wEqAXYBJwH/ASoBdgEnAf8BKgF2AScB/wEqAXYBJwH/ASoBdgEn + Af8BKgF2AScB/wEqAXYBJwH/ASoBdgEnAf8BHQFXARoB/wEKASYBBwH/AYoBlQGRAf8BXgFrAWcB/wFJ + AVMBTwH/AUkBUwFPAf8BSQFTAU8B/wFJAVMBTwH/AUkBUwFPAf8BSQFTAU8B/wFJAVMBTwH/AUkBUwFP + Af8BSQFTAU8B/wFJAVMBTwH/AUkBUwFPAf8BSQFTAU8B/wE2AT0BOwH/ARkBHAEbAf+AAAGRAdIBigH/ + AXQByQFvAf8BWgG9AVcB/wFaAb0BVwH/AVoBvQFXAf8BWgG9AVcB/wFaAb0BVwH/AVoBvQFXAf8BWgG9 + AVcB/wFaAb0BVwH/AVoBvQFXAf8BWgG9AVcB/wFaAb0BVwH/AVcBuwFTAf8BOQGJATIB/wESATMBDQH/ + AaMBrAGpAf8BhAGQAYsB/wFlAXMBbgH/AWUBcwFuAf8BZQFzAW4B/wFlAXMBbgH/AWUBcwFuAf8BZQFz + AW4B/wFlAXMBbgH/AWUBcwFuAf8BZQFzAW4B/wFlAXMBbgH/AWUBcwFuAf8BZQFzAW4B/wFMAVYBUgH/ + AR0BIQEgAf+AAAGeAd8BlAH/AYkB2QGBAf8BdQHVAXEB/wF7AdgBeQH/AXsB2AF5Af8BewHYAXkB/wF7 + AdgBeQH/AXsB2AF5Af8BewHYAXkB/wF7AdgBeQH/AXsB2AF5Af8BewHYAXkB/wF4AdYBdQH/AW4B0gFl + Af8BSAGaATwB/wEYATkBEQH/AaUBrQGqAf8BhwGSAY4B/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFn + AXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFw + Af8BZwF1AXAB/wFNAVgBVAH/AR4BIgEgAf+AAAGpAeoBmwH/AZYB5gGJAf8BiAHkAXwB/wGSAecBjwH/ + AZcB6QGYAf8BlwHpAZgB/wGXAekBmAH/AZcB6QGYAf8BlwHpAZgB/wGXAekBmAH/AZcB6QGYAf8BlQHo + AZQB/wGMAeUBhQH/AYAB4QFwAf8BVgGnAUUB/wEdAUABFQH/AaUBrQGqAf8BhwGSAY4B/wFnAXUBcAH/ + AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1 + AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFNAVgBVAH/AR4BIgEgAf+AAAGzAfQBoQH/AaEB8QGR + Af8BlQHwAYYB/wGgAfMBmQH/AakB9QGpAf8BrQH2AbAB/wGtAfYBsAH/Aa0B9gGwAf8BrQH2AbAB/wGt + AfYBsAH/AasB9QGsAf8BowHzAZ8B/wGYAfEBjQH/AY4B7wF5Af8BYQGzAU0B/wEiAUUBGAH/AaUBrQGq + Af8BhwGSAY4B/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFn + AXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFNAVgBVAH/AR4BIgEg + Af+AAAG5AfsBpQH/AaoB+gGVAf8BngH6AYwB/wGoAfsBnQH/Aa8B+wGqAf8BsQH7Aa4B/wGxAfsBrgH/ + AbEB+wGuAf8BsQH7Aa4B/wGxAfsBrgH/AbAB+wGsAf8BqwH7AaMB/wGiAfoBkgH/AZgB+QGBAf8BaQG8 + AVEB/wEmAUkBGgH/AaUBrQGqAf8BhwGSAY4B/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/ + AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1 + AXAB/wFNAVgBVAH/AR4BIgEgAf+AAAG9Af8BpgH/Aa4B/wGXAf8BowH/AY4B/wGqAf8BmgH/AawB/wGe + Af8BrAH/AZ4B/wGsAf8BngH/AawB/wGeAf8BrAH/AZ4B/wGsAf8BngH/AawB/wGeAf8BqwH/AZwB/wGm + Af8BkwH/AZ0B/wGDAf8BbgHBAVQB/wEoAUsBGwH/AaUBrQGqAf8BhwGSAY4B/wFnAXUBcAH/AWcBdQFw + Af8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFnAXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFn + AXUBcAH/AWcBdQFwAf8BZwF1AXAB/wFNAVgBVAH/AR4BIgEgAf+AAAG2AfoBngH/AaYB+gGNAf8BlwH5 + AXwB/wGZAfkBggH/AZkB+QGCAf8BmQH5AYIB/wGZAfkBggH/AZkB+QGCAf8BmQH5AYIB/wGZAfkBggH/ + AZkB+QGCAf8BmQH5AYIB/wGYAfkBfQH/AZMB+AF0Af8BZgHBAUkB/wElAUwBFwH/AaYBrgGsAf8BiQGU + AZAB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/ + AWkBdwFyAf8BaQF3AXIB/wFpAXcBcgH/AWkBdwFyAf8BaQF3AXIB/wFQAVoBVwH/AR8BJAEiAf+AAAGz + Ae8BoAH/AaQB7AGQAf8BkAHoAXYB/wGQAegBdgH/AZAB6AF2Af8BkAHoAXYB/wGQAegBdgH/AZAB6AF2 + Af8BkAHoAXYB/wGQAegBdgH/AZAB6AF2Af8BkAHoAXYB/wGQAegBdgH/AY8B6AF0Af8BZAHeAT8B/wEs + AW8BFQH/AbcBvQG7Af8BowGrAagB/wGLAZYBkgH/AYsBlgGSAf8BiwGWAZIB/wGLAZYBkgH/AYsBlgGS + Af8BiwGWAZIB/wGLAZYBkgH/AYsBlgGSAf8BiwGWAZIB/wGLAZYBkgH/AYsBlgGSAf8BiwGWAZIB/wFn + AXUBcAH/ATQBOwE5Af+AAAGmAdQBlgH+AZYBzwGCAf4BhgHMAXMB/gGGAcwBcwH+AYYBzAFzAf4BhgHM + AXMB/gGGAcwBcwH+AYYBzAFzAf4BhgHMAXMB/gGGAcwBcwH+AYYBzAFzAf4BhgHMAXMB/gGGAcwBcwH+ + AYYBzAFzAf4BdQHGAVgB/gFAAasBHAH9AbMBtwG1Af4BpQGqAacB/gGYAZ4BmwH+AZgBngGbAf4BmAGe + AZsB/gGYAZ4BmwH+AZgBngGbAf4BmAGeAZsB/gGYAZ4BmwH+AZgBngGbAf4BmAGeAZsB/gGYAZ4BmwH+ + AZgBngGbAf4BmAGeAZsB/gGHAY8BjAH+AWABaQFlAf2AAAFCAU0BPgcAAT4DAAEoAwABQAMAAQsDAAEB + AQABAQUAAVgXAAP/WQAL </value> </data> - <data name="description.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="description.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="description.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="webSite.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="webSite.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="webSite.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="labelDescription.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="labelDescription.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="labelDescription.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="labelWebSite.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="labelWebSite.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="labelWebSite.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="labelDeveloper.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="labelDeveloper.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="labelDeveloper.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="developer.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="developer.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="developer.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="buttonInstall.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="buttonInstall.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="buttonInstall.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="buttonUninstall.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="buttonUninstall.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="buttonUninstall.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> - <data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>(Default)</value> - </data> - <data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="$this.Name"> - <value>PluginDialog</value> - </data> - <data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>False</value> - </data> - <data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> - <value>8, 8</value> - </data> - <data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </data> - <data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>80</value> - </data> - <data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>True</value> - </data> - <data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - <value>Private</value> - </data> </root> \ No newline at end of file Modified: branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginInstallDialog.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginInstallDialog.cs 2009-02-24 04:59:57 UTC (rev 4055) +++ branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginInstallDialog.cs 2009-02-25 03:41:57 UTC (rev 4056) @@ -31,7 +31,7 @@ /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginInstallDialog"/> class. /// </summary> /// <param name="compiler"></param> - public PluginInstallDialog(PluginCompiler compiler) + public PluginInstallDialog(PluginCompiler compiler, Icon icon) { // // Required for Windows Form Designer support @@ -39,6 +39,7 @@ InitializeComponent(); m_compiler = compiler; + Icon = icon; } /// <summary> Modified: branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListView.cs =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListView.cs 2009-02-24 04:59:57 UTC (rev 4055) +++ branches/josepharmbruster/WorldWind/WorldWind/PluginEngine/PluginListView.cs 2009-02-25 03:41:57 UTC (rev 4056) @@ -16,10 +16,11 @@ /// <summary> /// Initializes a new instance of the <see cref= "T:WorldWind.PluginEngine.PluginListView"/> class. /// </summary> - public PluginListView() + public PluginListView(ImageList imageList) { this.View = View.Details; - this.ResizeRedraw = true; + this.ResizeRedraw = true; + this.imageList = imageList; } protected override CreateParams CreateParams @@ -121,8 +122,7 @@ // IsRunnning bitmap const int imageWidth = 16+3; - if(imageList==null) - imageList = ((PluginDialog)Parent).ImageList; + if(imageList!=null) { int imageIndex = item.PluginInfo.IsCurrentlyLoaded ? 0 : 1; Modified: branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj =================================================================== --- branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-02-24 04:59:57 UTC (rev 4055) +++ branches/josepharmbruster/WorldWind/WorldWind/WorldWind.csproj 2009-02-25 03:41:57 UTC (rev 4056) @@ -335,15 +335,18 @@ <Compile Include="PluginEngine\NativeMethods.cs"> <SubType>Code</SubType> </Compile> + <Compile Include="PluginEngine\PluginDialog.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="PluginEngine\PluginDialog.Designer.cs"> + <DependentUpon>PluginDialog.cs</DependentUpon> + </Compile> <Compile Include="PluginEngine\Plugin.cs"> <SubType>Code</SubType> </Compile> <Compile Include="PluginEngine\PluginCompiler.cs"> <SubType>Code</SubType> </Compile> - <Compile Include="PluginEngine\PluginDialog.cs"> - <SubType>Form</SubType> - </Compile> <Compile Include="PluginEngine\PluginInfo.cs"> <SubType>Code</SubType> </Compile> @@ -491,9 +494,6 @@ <DependentUpon>PlaceFinder.cs</DependentUpon> <SubType>Designer</SubType> </EmbeddedResource> - <EmbeddedResource Include="PluginEngine\PluginDialog.resx"> - <DependentUpon>PluginDialog.cs</DependentUpon> - </EmbeddedResource> <EmbeddedResource Include="PluginEngine\PluginInstallDialog.resx"> <DependentUpon>PluginInstallDialog.cs</DependentUpon> </EmbeddedResource> @@ -555,6 +555,10 @@ <DependentUpon>MovieRecorder.cs</DependentUpon> <SubType>Designer</SubType> </EmbeddedResource> + <EmbeddedResource Include="PluginEngine\PluginDialog.resx"> + <SubType>Designer</SubType> + <DependentUpon>PluginDialog.cs</DependentUpon> + </EmbeddedResource> <EmbeddedResource Include="Shaders\clouds.fx" /> <EmbeddedResource Include="Splash.resx"> <SubType>Designer</SubType> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-02-24 05:00:04
|
Revision: 4055 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4055&view=rev Author: joearmbruster Date: 2009-02-24 04:59:57 +0000 (Tue, 24 Feb 2009) Log Message: ----------- removed performance timer from plugin sdk and placed it in utilities instead Modified Paths: -------------- branches/josepharmbruster/WorldWind/PluginSDK/PluginSDK.csproj branches/josepharmbruster/WorldWind/Utilities/Utilities.csproj Added Paths: ----------- branches/josepharmbruster/WorldWind/Utilities/PerformanceTimer.cs Removed Paths: ------------- branches/josepharmbruster/WorldWind/PluginSDK/PerformanceTimer.cs Deleted: branches/josepharmbruster/WorldWind/PluginSDK/PerformanceTimer.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginSDK/PerformanceTimer.cs 2009-02-24 04:56:11 UTC (rev 4054) +++ branches/josepharmbruster/WorldWind/PluginSDK/PerformanceTimer.cs 2009-02-24 04:59:57 UTC (rev 4055) @@ -1,38 +0,0 @@ -using System; -using System.Diagnostics; - -namespace WorldWind -{ - /// <summary> - /// Utility class that provides a simple interface to high-performance - /// timing, if supported by the underlying hardware. - /// </summary> - public sealed class PerformanceTimer - { - private PerformanceTimer() - { - } - - /// <summary> - /// Perform initialization of timer - /// </summary> - static PerformanceTimer() - { - _stopWatch.Start(); - } - - /// <summary> - /// Return the total elapsed time - /// </summary> - /// <returns>total elapsed time in milliseconds</returns> - public static long ElapsedMilliseconds - { - get - { - return _stopWatch.ElapsedMilliseconds; - } - } - - private static Stopwatch _stopWatch = new Stopwatch(); - } -} Modified: branches/josepharmbruster/WorldWind/PluginSDK/PluginSDK.csproj =================================================================== --- branches/josepharmbruster/WorldWind/PluginSDK/PluginSDK.csproj 2009-02-24 04:56:11 UTC (rev 4054) +++ branches/josepharmbruster/WorldWind/PluginSDK/PluginSDK.csproj 2009-02-24 04:59:57 UTC (rev 4055) @@ -301,9 +301,6 @@ <Compile Include="PathList.cs"> <SubType>Code</SubType> </Compile> - <Compile Include="PerformanceTimer.cs"> - <SubType>Code</SubType> - </Compile> <Compile Include="Point2d.cs"> <SubType>Code</SubType> </Compile> Copied: branches/josepharmbruster/WorldWind/Utilities/PerformanceTimer.cs (from rev 4054, branches/josepharmbruster/WorldWind/PluginSDK/PerformanceTimer.cs) =================================================================== --- branches/josepharmbruster/WorldWind/Utilities/PerformanceTimer.cs (rev 0) +++ branches/josepharmbruster/WorldWind/Utilities/PerformanceTimer.cs 2009-02-24 04:59:57 UTC (rev 4055) @@ -0,0 +1,38 @@ +using System; +using System.Diagnostics; + +namespace WorldWind +{ + /// <summary> + /// Utility class that provides a simple interface to high-performance + /// timing, if supported by the underlying hardware. + /// </summary> + public sealed class PerformanceTimer + { + private PerformanceTimer() + { + } + + /// <summary> + /// Perform initialization of timer + /// </summary> + static PerformanceTimer() + { + _stopWatch.Start(); + } + + /// <summary> + /// Return the total elapsed time + /// </summary> + /// <returns>total elapsed time in milliseconds</returns> + public static long ElapsedMilliseconds + { + get + { + return _stopWatch.ElapsedMilliseconds; + } + } + + private static Stopwatch _stopWatch = new Stopwatch(); + } +} Property changes on: branches/josepharmbruster/WorldWind/Utilities/PerformanceTimer.cs ___________________________________________________________________ Added: svn:mergeinfo + Modified: branches/josepharmbruster/WorldWind/Utilities/Utilities.csproj =================================================================== --- branches/josepharmbruster/WorldWind/Utilities/Utilities.csproj 2009-02-24 04:56:11 UTC (rev 4054) +++ branches/josepharmbruster/WorldWind/Utilities/Utilities.csproj 2009-02-24 04:59:57 UTC (rev 4055) @@ -104,6 +104,7 @@ <Compile Include="Log.cs"> <SubType>Code</SubType> </Compile> + <Compile Include="PerformanceTimer.cs" /> <Compile Include="Win32Message.cs"> <SubType>Code</SubType> </Compile> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <joe...@us...> - 2009-02-24 04:56:16
|
Revision: 4054 http://nasa-exp.svn.sourceforge.net/nasa-exp/?rev=4054&view=rev Author: joearmbruster Date: 2009-02-24 04:56:11 +0000 (Tue, 24 Feb 2009) Log Message: ----------- performance counter now uses the system diagnostics stopwatch as opposed to the queryperformancecounter that required interop services simplified the tick code that was found within drawargs and worldwindow Modified Paths: -------------- branches/josepharmbruster/WorldWind/PluginSDK/DrawArgs.cs branches/josepharmbruster/WorldWind/PluginSDK/PerformanceTimer.cs branches/josepharmbruster/WorldWind/PluginSDK/WorldWindow/WorldWindow.cs Modified: branches/josepharmbruster/WorldWind/PluginSDK/DrawArgs.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginSDK/DrawArgs.cs 2009-02-23 00:52:49 UTC (rev 4053) +++ branches/josepharmbruster/WorldWind/PluginSDK/DrawArgs.cs 2009-02-24 04:56:11 UTC (rev 4054) @@ -264,9 +264,8 @@ { // Calculate frame time long previousFrameStartTicks = CurrentFrameStartTicks; - PerformanceTimer.QueryPerformanceCounter(ref CurrentFrameStartTicks); - LastFrameSecondsElapsed = (CurrentFrameStartTicks - previousFrameStartTicks) / - (float)PerformanceTimer.TicksPerSecond; + CurrentFrameStartTicks = PerformanceTimer.ElapsedMilliseconds; + LastFrameSecondsElapsed = (float)((CurrentFrameStartTicks - previousFrameStartTicks) / 1000.0); // Display the render device.Present(); @@ -398,10 +397,8 @@ { get { - long curTicks = 0; - PerformanceTimer.QueryPerformanceCounter( ref curTicks ); - float elapsedSeconds = (curTicks - CurrentFrameStartTicks)/(float)PerformanceTimer.TicksPerSecond; - return elapsedSeconds; + long currentTicks = PerformanceTimer.ElapsedMilliseconds; + return (float)((currentTicks - CurrentFrameStartTicks) / 1000.0); } } Modified: branches/josepharmbruster/WorldWind/PluginSDK/PerformanceTimer.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginSDK/PerformanceTimer.cs 2009-02-23 00:52:49 UTC (rev 4053) +++ branches/josepharmbruster/WorldWind/PluginSDK/PerformanceTimer.cs 2009-02-24 04:56:11 UTC (rev 4054) @@ -1,49 +1,38 @@ using System; -using System.Runtime.InteropServices; +using System.Diagnostics; namespace WorldWind { + /// <summary> + /// Utility class that provides a simple interface to high-performance + /// timing, if supported by the underlying hardware. + /// </summary> public sealed class PerformanceTimer { - #region Instance Data - - public static long TicksPerSecond; - #endregion - - #region Creation - - /// <summary> - /// Static class - /// </summary> - private PerformanceTimer() - { + private PerformanceTimer() + { } - /// <summary> - /// Static constructor - /// </summary> + /// <summary> + /// Perform initialization of timer + /// </summary> static PerformanceTimer() { - // Read timer frequency - long tickFrequency = 0; - if (!QueryPerformanceFrequency(ref tickFrequency)) - throw new NotSupportedException("The machine doesn't appear to support high resolution timer."); - TicksPerSecond = tickFrequency; - - System.Diagnostics.Debug.WriteLine("tickFrequency = " + tickFrequency); + _stopWatch.Start(); } - #endregion - #region High Resolution Timer functions + /// <summary> + /// Return the total elapsed time + /// </summary> + /// <returns>total elapsed time in milliseconds</returns> + public static long ElapsedMilliseconds + { + get + { + return _stopWatch.ElapsedMilliseconds; + } + } - [System.Security.SuppressUnmanagedCodeSecurity] - [DllImport("kernel32")] - private static extern bool QueryPerformanceFrequency(ref long PerformanceFrequency); - - [System.Security.SuppressUnmanagedCodeSecurity] - [DllImport("kernel32")] - public static extern bool QueryPerformanceCounter(ref long PerformanceCount); - - #endregion - } + private static Stopwatch _stopWatch = new Stopwatch(); + } } Modified: branches/josepharmbruster/WorldWind/PluginSDK/WorldWindow/WorldWindow.cs =================================================================== --- branches/josepharmbruster/WorldWind/PluginSDK/WorldWindow/WorldWindow.cs 2009-02-23 00:52:49 UTC (rev 4053) +++ branches/josepharmbruster/WorldWind/PluginSDK/WorldWindow/WorldWindow.cs 2009-02-24 04:56:11 UTC (rev 4054) @@ -932,8 +932,7 @@ { using (new DirectXProfilerEvent("WorldWindow::Render")) { - long startTicks = 0; - PerformanceTimer.QueryPerformanceCounter(ref startTicks); + long startTicks = PerformanceTimer.ElapsedMilliseconds; try { @@ -1012,7 +1011,7 @@ frameCounter++; if (frameCounter == 30) { - fps = frameCounter / (float)(DrawArgs.CurrentFrameStartTicks - lastFpsUpdateTime) * PerformanceTimer.TicksPerSecond; + fps = frameCounter / ((float)(DrawArgs.CurrentFrameStartTicks - lastFpsUpdateTime) / (float)1000.0); frameCounter = 0; lastFpsUpdateTime = DrawArgs.CurrentFrameStartTicks; } @@ -1080,9 +1079,8 @@ if (World.Settings.ShowFpsGraph) { - long endTicks = 0; - PerformanceTimer.QueryPerformanceCounter(ref endTicks); - float elapsedMilliSeconds = 1000.0f / (1000.0f * (float)(endTicks - startTicks) / PerformanceTimer.TicksPerSecond); + long endTicks = PerformanceTimer.ElapsedMilliseconds; + float elapsedMilliSeconds = (float)(endTicks - startTicks); m_FrameTimes.Add(elapsedMilliSeconds); } this.drawArgs.EndRender(); @@ -1978,16 +1976,14 @@ m_WorkerThread.Priority = System.Threading.ThreadPriority.Normal; } - long startTicks = 0; - PerformanceTimer.QueryPerformanceCounter(ref startTicks); + long startTicks = PerformanceTimer.ElapsedMilliseconds; DataStore.Update(); m_World.Update(this.drawArgs); - long endTicks = 0; - PerformanceTimer.QueryPerformanceCounter(ref endTicks); - float elapsedMilliSeconds = 1000 * (float)(endTicks - startTicks) / PerformanceTimer.TicksPerSecond; + long endTicks = PerformanceTimer.ElapsedMilliseconds; + float elapsedMilliSeconds = (float)(endTicks - startTicks); float remaining = refreshIntervalMs - elapsedMilliSeconds; if (remaining > 0) Thread.Sleep((int)remaining); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |