Community Event / Creation TradeDangerous GUI front end

TDHelper the TradeDangerous GUI front end

I made this opensource graphical front end tool in C# for working with Oliver's awesome Trade Dangerous route planning tool. It started as a replacement for batch files and copying command lines, and quickly grew over a few versions to nearly complete support for most of Trade Dangerous' features. I hope it can be useful for anyone else who juggles multiple trade routes while also doing missions in between.

The only main requirements are:

*) .NET Framework 4.5 or above
*) A working and fully updated install of Trade Dangerous (Python 3.4 or above installed)

Here are a couple of screenshots (as of v1.0.6.4):
TDHelper_v1.0.6.4_SS1.png TDHelper_v1.0.6.4_SS2_mini.png

All released binary (compiled) archives are available on my Downloads repository: HERE. Suggestions and feedback are greatly appreciated.



Changelog:

Code:
v1.0.7.6
--------
* Fixed a bug in readNetLog() preventing quick-loading systems from the database on startup
* Fixed some bugs that caused index exceptions when deleting rows from the Pilot's Log
* Fixed the "C" button reordering the most recent systems in the recents dropdown
* Fixed the selection behavior of the top-left-corner selection button in the DataGridView
* We now prevent from updating the recent systems dropdown unless there are changes
* We now batch removal of rows from the Pilot's Log for a performance increase and stability improvement
* Lots of performance improvements when building or updating the Pilot's Log with systems


v1.0.7.5
--------
* The netLog path collection is now more resilient against errors and file timestamp shenanigans
* Fixed some more sorting bugs when loading the database and appending the most recent systems
* Fixed incorrect behavior in getMaddavoUpdates() when using "Force Prices" with the "Skip prices" checkbox
* Rewrite of readNetLog() and accompanying methods feeding the recent systems list-- this should alleviate many stubborn bugs


v1.0.7.4
--------
* Fixed a fatal index exception when deleting the last row in the Pilot's Log
* Fixed a bug in readNetLog() causing the recent systems updater to print duplicates of the recents array on startup
* Fixed some bugs in how readNetLog() sorts the recent systems array that resulted in improper ordering
* We now use the AppConfigLocal.xml to save our VerboseLogging setting, which should survive Elite Dangerous patches


v1.0.7.3
--------
* Added a Ctrl+Click handler to allow resetting the font in the Misc. Settings dialog
* Added a splash window when populating the database to let the user know we're working
* Added settings box for changing the font in TreeView to the Misc. Settings dialog
* Fixed TreeView unnecessarily making a sound when copying system/station names
* Fixed the TreeView cutting off the bottom of a list when resizing
* Fixed the Ctrl+Shift+C shortcut in TreeView grabbing the whole line instead of the System/Station
* Fixed a rare race condition in the recent systems updater that caused multiple updates to fire at once
* Fixed a bug that resulted in duplicates being inserted into the Pilot's Log when appending multiple systems
* Fixed some bugs in row insertion, now we generate a unique timestamp from the selected row
* Fixed the sort when inserting rows in Pilot's Log, entries shouldn't drop to the bottom anymore
* Fixed more bugs in the Pilot's Log and recent systems updater, they should no longer update unless they need to
* Improved performance when loading the pilot's log database by moving the work to a background thread
* Re-ordered the way database transactions are performed, should drastically increase insert/delete performance
* We now perform a database vacuum during potentially fragmenting procedures for ideal performance over time


v1.0.7.2
--------
* Fixed a bug in the circular text buffer that caused the output log to spaz out on large text dumps
* Fixed a bug that caused the recent systems list to fail while updating with new systems
* Fixed a bug that caused the Pilot's Log to constantly update unnecessarily

v1.0.7.1
--------
* Added a handler (Ctrl+C/Ctrl+Shift+C) to allow clipboard copying of the system or system/station name from nodes in the TreeView
* Added a context menu option for copying system names from the Pilot's Log to the src/dest boxes
* Added a Ctrl+Click handler to the config file selector to allow deleting non-default config files
* Fixed a bug that caused the Pilot's Log DataGridView to update unnecessarily
* Fixed a bug that caused the Pilot's Log to not retain the most recently visited entries in the list
* Fixed a Data Property Mismatch exception when switching config files from the config selection box
* Fixed the Padsize box not using the Padsize value from the config when loading alternate config files
* Fixed a bug in the worker delegate that was causing all price file imports to go to cleanUpdatedPricesFile() and fail
* Fixed a bug causing strange selection behavior in the Pilot's Log when selecting a cell after editing any other cell
* Fixed an exception when cancelling out of the Import button's path selection dialog when no .prices file is selected
* Fixed the Import button not asking for a path when the current path to the .prices file is blank
* We no longer switch to the Output pane when loading a config file
* The EDAPI import executed from the Import button will now open a console window for user input
* The Recent Systems dropdown in src/dest is now capped at the most recent 50 unique items to reduce clutter
* Rewrote the support code for the DataGrid--it should now be faster, safer, and lighter on resources
* Rewrote the recent systems list to integrate better with the Pilot's Log and to only read logs when necessary




Known Issues:

* There might be an issue preventing the recent systems dropdown from showing the most recently entered system under certain circumstances. See THIS post for a temporary solution until the next version is released.

* It is currently impossible to permanently remove entries from the Pilot's Log that are from the current netLog file. Please read the FAQ for more info on this issue.
 
Last edited:
Since I did get a little bit of interest in this..

I made this opensource front end tool in C# for working with Oliver's awesome Trade Dangerous route planning tool. It started as a replacement for batch files and copying command lines, and quickly grew over a few days to nearly full support for most use cases of the Run and Buy/Sell commands. I hope it can be useful for anyone else who juggles multiple trade routes while also doing missions in between.

I intend, in the near future, to implement quite a few useful features to try and bring it closer to parity with the other graphical tools like Quazil's and Slopey's. I'm working on support for station/commodity editing and tighter integration of the output into a gridview. The only primary requirements are a very recently updated working install of TradeDangerous from Oliver's GIT and a current install of Python 3.4+.

You can grab it from the Downloads on my Bitbucket GIT: https://bitbucket.org/WombatFromHell/trade-dangerous-helper.

Make sure you check frequently for new releases as I'm still in very active development mode at the moment. Suggestions and feedback are greatly appreciated.

I'll give this a try in a couple hours and let you know how I get on! Have some rep...
 
Great start there :) I notice it throws exception when pressing current system if the info is not in your netlog (I hadn't re-added verboselogging since last game update). Also no option to change --md value, which I personally like to have control over so I'm encouraged to visit systems with aging data and update them.
 
Hey, Love the UI you've got going so far, but I've had 2 issues with this so far, at first it was spitting an error about "--gpt=900" not being a valid argument, I then went and manually grabbed the latest version of TD, and put it where It needed to go, but now when I try to run any sort of trade search, it spits: "ERROR: Unable to load the Python 'requests' package. I've done some digging around in the TD files, and it doesn't look like there's a "requests package" even in TD's files. Maybe this is due to kfsone's 2/14 update?
 
Great start there :) I notice it throws exception when pressing current system if the info is not in your netlog (I hadn't re-added verboselogging since last game update). Also no option to change --md value, which I personally like to have control over so I'm encouraged to visit systems with aging data and update them.

Thanks for the catch there I'll double check on that particular bug. I'm in the process of testing a new version that should fix a great majority of those bugs. Hopefully I'll be able to release it in a few hours.
 
do "pip install requests" (pip is in python34\scripts if you don't already have that dir in your path)
Thank you, that fixed it. Hey Wombat, I have a suggestion, is it possible to get the Output screen to auto scroll with the new data? For example, when you update the database, it starts outputting for the updates and whatnot, but you have to scroll it down each time it spits results.

Also I noticed that almost all of the tooltips for the different fields you can fill in all pop up as "Minimum profit must be greater than this value" Padsizes, End Jumps, Start Jumps, Max LS Distance, pretty much all the tool-tips read as "Minimum profit must be greater than this value"
 
Last edited:
Thank you, that fixed it. Hey Wombat, I have a suggestion, is it possible to get the Output screen to auto scroll with the new data? For example, when you update the database, it starts outputting for the updates and whatnot, but you have to scroll it down each time it spits results.

Also I noticed that almost all of the tooltips for the different fields you can fill in all pop up as "Minimum profit must be greater than this value" Padsizes, End Jumps, Start Jumps, Max LS Distance, pretty much all the tool-tips read as "Minimum profit must be greater than this value"

Yes, I've already fixed that (mostly) in the new version coming out in a few hours.
 
I'm almost finished fixing the log file nullexception bug. Once I do that I'll push v1.02. Shouldn't be much longer.

(Edit: For various reasons it's taking me a bit longer to find a solution than I planned. I'll push the new version, and then release an update to it once I fix the bug. In the mean time try not to point the tool at a directory with no log files in it.)
 
Last edited:
Phew, finally pushed v1.02. Sorry for the wait. I'll be doing an update in the next few days to fix the lingering bugs. If anyone finds any new ones feel free to report it on the bug tracker.
 
I just pushed v1.03a with lots of new and very useful features for the text panes. A must have for running hauling missions between multiple stations. You can now push text from the output pane to the notes pane without copying/pasting. Lots of bug fixes to top it off.

Enjoy. :)
 
Just pushed v1.03b after I realized that buy/sell needed quite a bit more work. Also, more log file related bug fixes (like checking for VerboseLogging). It's quite a bit smarter about finding your current location/log file now.
 
would it be possible to have a check box or something next to each option so your can choose, ie if i just want the basic settings then i could uncheck the rest ( or if option is null then dont use it in the command line? )

Thanks
 
would it be possible to have a check box or something next to each option so your can choose, ie if i just want the basic settings then i could uncheck the rest ( or if option is null then dont use it in the command line? )

Thanks

As far as I'm aware all the non-critical options already do just that (where it makes sense) if you leave them blank or at 0. I did that mostly to save space in the UI. You can actually see it yourself if the command you use takes a few seconds to process as it'll show the command line used for that command before showing the output.

If you can point out any that I may have missed I'll make sure to fix it for the next release.
 
Thanks, so:

if i enter 0 in all options apart from Hops, Capacity, Credits, LadenLY, Insurance and Age. Padsizes still get passed, jumps defults to 1 along with prune score and prune hops and errors from trade/py because prune hops must be 2 or more.

Next one i cant add LY setting with a decimal point ie 12.83 only seems to take integers.

Thanks
 
When I add non integer jump ranges I get an exception thrown when trying to save settings 'Input string was not in correct format'. Current version as of today's date.
 
Three good catches, nice. I'll work on fixing them as soon as I can. The padsize option in particular gets handled differently due to parsing. I'll add more sanity checking to deal with it. The LY thing is a derp on my part. Oops. :)
 
Back
Top Bottom