DarkFenX/Pyfa — pull request #47 by blitzmann (2014-02-16 06:46:08+00:00)
Title: Notify of updates to pyfa

This pull request adds a new feature to satisfy issue #44: checking GitHub on every startup and comparing versions. If new version is found, notify user.

- Checks GitHub in another thread to avoid startup slowdown.
- If no internet connection, or data fetching fails for whatever reason, fails silently
- Notifies of both Stable and Pre-releases
- Notification contains summary of release, along with option to not show notification again, and a button that will open up default browser to the release page
- Added `UpdateSettings`:
- Suppress all update notifications (never show them)
- Suppress only Pre-release notifications
- Suppress individual notifications

Depends on expected data from GitHub:
- Tag name must begin with `v`. This is super important. Will not work otherwise. Likewise, the version after the `v` must be in the same format as pyfa's `config.version`. This is used as the basis for version comparison.
- Pre-release flag is used to mark pre-releases
- At this time, title of release is not used, but can be easily incorporated in the future depending on how @DarkFenX wants to handle it

Debugged thoroughly for Stable releases and I believe I've caught most edge cases in the logic. Pre-releases have not been debugged as extensively, and I did not implement version comparison for the rep-releases as planned (lack of time, no real benefit as this point, laziness, etc...). So, for example, I have not yet checked how this update notification would work if you were running off a pre-release and there was an update for a stable release. This is due to `config.version` not changing with pre-releases, among other logic. I figured it might be a tweak that can be performed on a later date after more discussion on how pre-releases should be handled.

Pictures:
Preferences:
![updateprefs](https://f.cloud.github.com/assets/3904767/2179766/c974a980-96d5-11e3-9102-8c0a47e02065.PNG)
Stable release notification:
![stable](https://f.cloud.github.com/assets/3904767/2179768/d2845052-96d5-11e3-9ce0-9fb5334b3aef.PNG)
Stable release with large summery text:
![stable-w-scrolling](https://f.cloud.github.com/assets/3904767/2179769/dc3e8bbc-96d5-11e3-84aa-d829a206ba5c.PNG)
Pre-release notification:
![prerelease](https://f.cloud.github.com/assets/3904767/2179770/e481c834-96d5-11e3-8df1-25ae3cb9358d.PNG)