EVE Planetary Planner

Been crashing on startup for me too, I noticed it was when the app tries to load the news bar at the top.
If you firewall the app connecting to 87.237.34.105 (ccp)
you get the error
Failed to fetch the news from http://community.eveonline.com/news/news-channels/eve-online-news/. The operation has timed out

But it does at least work

1 Like

Youā€™re a wizard.
This saved me too, thanks heaps.

The app has not been updated since the news pages changed location. Which is what creates the problem.
Looks like this has slowed to a crawl again.

Hey Guys,

Thanks for the feedback.
I have been really busy lately, and it looks like it is not going to change anytime soon.
Familly and Job are still a priority.

Still, I just saw that the tool was crashing on startup.
So I made a quick fix for that.

If you start the tool it should get the new version automatically.

Long story short, CCP changed the format of their News page that I was parsing and that caused the tool too crash.

Iā€™ll see if I can take time from time to time to work on this.
I cannot make any promises.
But I will try.

I still love this tool and do not want to let it rust away.

1 Like

After investigating a bit, I found a reliable way to get the EVE News without parsing involved.
For good measure I also added the Dev Blog news.
I improved the reliability of the ticker so it would not blow up if the news are not available anymore in the future again.

I also implemented the About popup.

I will see if I can get some work done on the tool during the holiday. I might be able to complete a feature or two.

1 Like

I have been working on the new EVE EPI (ESI) today.
Got to say that while it is a nice API for anonymous data (the tool has been using it for quite some time now to get Market data), getting it to work with authentication in WPF is not the most straight forward nor nicest thingā€¦

I managed to get the Authentication to work.
But it looks like the CCP EVE Online authentication website does not work well on the WPF WebBrowser as it throws some script exception and has some layout issue.

I managed to silence the exceptions, but the layout there is nothing I can do about it.

As a result, it looks like someone is trying to get your credentials for nefarious purposeā€¦

I am not sure how people are going to react to that.

But as I said, there is nothing I can do about it on my side.
So tomorrow I will continue to work on the API and try to get the information I was getting before from it.

CCP, the ball is yours.

1 Like

Version 8.1.0.0 is available.

You canā€™t say I did not keep my word this time.

So here is the list of things I fixed/improved in the latest version:

  • Improved many UI elements layout
  • Improved Collapse/Expand handling for UI elements
  • Removed trash icon, replaced with a red remove icon in the top-right corner for planets/structures
  • Added support to drag the production plan and planet plan directly with the mouse (in case you find the scrollbars to be too small). Just click on the plan background and move it around.
  • Full ESI API support. You will need to set again your api credentials since the authentication mechanism is completely different now. Also, do not be alarmed by the weird looking browser UI, itā€™s the way it shows in a WPF WebBrowser. Nothing I can do about it. But at least is works!
  • The planet plan is now loaded from the ESI API. (Note: I could not fully test the accuracy because PI is now reserved for Omega and I do not play as Omega at the moment. Also, the ESI API is cached to 10 minutes, so you might need to wait a few minutes for your ingame changes to appear on the API)
  • The load Planet Plan from API popup will now automatically close when the loading is done.

As usual, if you find any issues, you can contact me ingame, or here on the forums.

Iā€™ll try to fix some of the other issues I have on my list as well as a couple of features that have been disabled by the end of my vacation.

2 Likes

Version 8.1.0.1 is now available for download/auto-patch.

Fixed an issue that could cause a crash sometime when expanding a planet.

Slightly increased the width of the Factory structure to be able to show its full name.

Fixed an issue that could cause Multi-Routes to appear after the structures they link instead of in-between.

Routes should now align properly with their highest linked structure. No more tangled lines!

1 Like

Version 8.1.02 is now available.

Fixed a layout issue on Planets

The Product Data window should not open automatically anymore if it was closed when the EVE Planetary Planner is closed

The Drag corner is gone! The following windows/popups can now be resized directly from their borders/corners:

  • EVE Planetary Planner main window
  • Planets Data
  • Warning / Error
  • Register API

Fixed a bug that could cause the settings to not load is the pln file fails to load.

Fixed a bug that caused the routes loaded from the API to reset their quantity to 0 if the extractors do not have a quantity set.

Fixed a bug causing some planets to be beyond the scroll bar bottom when expanding/collapsing planets.

Expanding a structure will now bring it to the front so its content does not get overlapped by other structures.

1 Like

Version 8.1.0.4 is now available.

Fixed some layout issues in the Tools tab.
Fixed a bug leaving the list of Regions empty when starting the tool the first time.
Fixed an issue with a missing dll when trying to add an API.
Added support to update the planet Products icon when changing an Extractor/Facility product.
Fixed an issue with the Planets Plan scrollbars not appearing when needed.
Improved API Market data loading.
Updated Systems.xml to include NPC stations.

1 Like

Beta 8.1.5 is out.

Increased height of Time control for Duration Until Next on the Tools page so we can better see the numbers.
Slowed-down the loading of Market data until I fix an issue with how the data is loaded to avoid an Exception.

1 Like

Family and job are still a priority??? Get yourself together for God Sake!!

Yeah I know I am a big let down.
But
I have a brand new feature coming soon.
Probably this Saturday.
After that I will have to go on semi-hiatus again as I really need to pick up work on some other projects.
So stay tuned and PI safe!

2 Likes

Bro many times after work I just have some energy left to only softly play around in my skill queue or fitting window. RL first!

Version 8.2 available

Fixed a couple of minor bugs and layout issues.
Silenced the javascript warning during the ESI API Authentication.

Added a brand new feature: Market History
You can access it through the Aura menu at the bottom of the tool:

![Aura menu](upload://baQYoKb6rwaUlr0yJ8F70XKlXrK.png

It will then open the following popup:

![Aura menu](upload://6AKBAFozX1xPS5a9y4ZH6SqP7uX.png

There you can select the component you want to lookup.

Notes:

  • The components are limited to what the tool is using by default. Meaning that if you changed your version of the PlanetaryInteraction.xml, you will not see what you added in the Market History.
  • The Market History is collected automatically daily, but as it runs from my personal computer, if I do not start it in the morning, it is possible the data might not be collected, or late, for a day. For example if I go on vacation.
  • The data is available at the System , Region and Universe level. For Universe, leave the Price In field empty
  • At the universe level I am showing the lowest Sell, highest buy price. But I am not sure the information is actually useful. So feedback would be welcomed. If you think there is a better range you would prefer (ex: average of Sell vs average of buy), you are welcomed to discussed it here.
  • You can mouse over the chart and the related data for the day will show underneath.
  • I will cover a period of 1 year. Right now there is not much data because I started the collection just some time ago.
1 Like

I thought of a feature I would very much like. Currently during PI I often end up with incorrect mineral values, Iā€™ll have 500k of X material and 60k of Y material (just as an example) and need an equivalent amount of both to make Z product. I then make more extractors of Y to compensate.

Usually this issue is due to material X having a green spot on the planet and material Y running low. It would be nice to know how many extra extractors running at different spots to make up for Xā€™s excess. I know I can sit down and do the math quickly to see what I would have to do but this would take some time during my already short amount of time I get to play. It might be easier if I could plug in the variables (receiving X amount of X good and Y of Y) then have it tell me I need W amount to make up the different in order to get an even amount of Z.

Version 8.2.1 is available.
Fixed a connection Issue when getting Market History data.

1 Like

Version 8.2.2 is available.

Updated data for POS Fuel

Added support for multiline description. Ex: POS Fuel requires product from ice, so in the description it says what type of ice it can be extracted from.

Improved Images Resources version handling

1 Like

Hi, Iā€™ve tried it twice now and found it crashes, often. From my application log:

Crash 1

Application: EVEPlanetaryPlanner.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.NullReferenceException
at EVEPlanetaryPlanner.MainWindow.GetTypesToPort(System.Collections.Generic.Dictionary`2<PlanetType,Boolean> ByRef)
at EVEPlanetaryPlanner.MainWindow.bttn_PortToReverseLookup_Click(System.Object, System.Windows.RoutedEventArgs)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
at System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject, System.Windows.RoutedEventArgs)
at System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs)
at EVEPlanetaryPlanner.TextButton.RaiseValueChangedEvent()
at EVEPlanetaryPlanner.TextButton.UserControl_MouseUp(System.Object, System.Windows.Input.MouseButtonEventArgs)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(System.Delegate, System.Object)
at System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate, System.Object)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
at System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject, System.Windows.RoutedEventArgs)
at System.Windows.UIElement.RaiseTrustedEvent(System.Windows.RoutedEventArgs)
at System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs, Boolean)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(System.Windows.Input.InputEventArgs)
at System.Windows.Input.InputProviderSite.ReportInput(System.Windows.Input.InputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr, System.Windows.Input.InputMode, Int32, System.Windows.Input.RawMouseActions, Int32, Int32, Int32)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr, MS.Internal.Interop.WindowMessage, IntPtr, IntPtr, Boolean ByRef)
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
at System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
at System.Windows.Application.RunDispatcher(System.Object)
at System.Windows.Application.RunInternal(System.Windows.Window)
at System.Windows.Application.Run(System.Windows.Window)
at EVEPlanetaryPlanner.App.Main()

Crash 2

Application: EVEPlanetaryPlanner.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.OverflowException
at System.Number.ParseInt32(System.String, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo)
at EVEPlanetaryPlanner.ExtractorUI.get_LatestQuantity()
at EVEPlanetaryPlanner.ExtractorUI.Validate()
at EVEPlanetaryPlanner.PlanetUI.Validate()
at EVEPlanetaryPlanner.PlanetUI.UpdateStructureConsumption()
at EVEPlanetaryPlanner.AnimatedControlValidated.OnUpdated()
at EVEPlanetaryPlanner.ExtractorUI.txtBx_Quantity_TextChanged(System.Object, System.EventArgs)
at System.Windows.Controls.TextChangedEventArgs.InvokeEventHandler(System.Delegate, System.Object)
at System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate, System.Object)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
at System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject, System.Windows.RoutedEventArgs)
at System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs)
at System.Windows.Controls.Primitives.TextBoxBase.OnTextChanged(System.Windows.Controls.TextChangedEventArgs)
at System.Windows.Controls.Primitives.TextBoxBase.OnTextContainerChanged(System.Object, System.Windows.Documents.TextContainerChangedEventArgs)
at System.Windows.Controls.TextBox.OnTextContainerChanged(System.Object, System.Windows.Documents.TextContainerChangedEventArgs)
at System.Windows.Documents.TextContainerChangedEventHandler.Invoke(System.Object, System.Windows.Documents.TextContainerChangedEventArgs)
at System.Windows.Documents.TextContainer.EndChange(Boolean)
at System.Windows.Documents.TextContainer.System.Windows.Documents.ITextContainer.EndChange(Boolean)
at System.Windows.Documents.TextRangeBase.EndChange(System.Windows.Documents.ITextRange, Boolean, Boolean)
at System.Windows.Documents.TextRange.System.Windows.Documents.ITextRange.EndChange(Boolean, Boolean)
at System.Windows.Documents.TextRange+ChangeBlock.System.IDisposable.Dispose()
at System.Windows.Controls.TextBox.OnTextPropertyChanged(System.String, System.String)
at System.Windows.Controls.TextBox.OnTextPropertyChanged(System.Windows.DependencyObject, System.Windows.DependencyPropertyChangedEventArgs)
at System.Windows.DependencyObject.OnPropertyChanged(System.Windows.DependencyPropertyChangedEventArgs)
at System.Windows.FrameworkElement.OnPropertyChanged(System.Windows.DependencyPropertyChangedEventArgs)
at System.Windows.Controls.TextBox.OnPropertyChanged(System.Windows.DependencyPropertyChangedEventArgs)
at System.Windows.DependencyObject.NotifyPropertyChange(System.Windows.DependencyPropertyChangedEventArgs)
at System.Windows.DependencyObject.UpdateEffectiveValue(System.Windows.EntryIndex, System.Windows.DependencyProperty, System.Windows.PropertyMetadata, System.Windows.EffectiveValueEntry, System.Windows.EffectiveValueEntry ByRef, Boolean, Boolean, System.Windows.OperationType)
at System.Windows.DependencyObject.SetValueCommon(System.Windows.DependencyProperty, System.Object, System.Windows.PropertyMetadata, Boolean, Boolean, System.Windows.OperationType, Boolean)
at System.Windows.DependencyObject.SetValue(System.Windows.DependencyProperty, System.Object)
at EVEPlanetaryPlanner.TextBoxMaskBehavior.TextBox_PreviewTextInput(System.Object, System.Windows.Input.TextCompositionEventArgs)
at System.Windows.Input.TextCompositionEventArgs.InvokeEventHandler(System.Delegate, System.Object)
at System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate, System.Object)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(System.Object, System.Windows.RoutedEventArgs, Boolean)
at System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject, System.Windows.RoutedEventArgs)
at System.Windows.UIElement.RaiseTrustedEvent(System.Windows.RoutedEventArgs)
at System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs, Boolean)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(System.Windows.Input.InputEventArgs)
at System.Windows.Input.TextCompositionManager.UnsafeCompleteComposition(System.Windows.Input.TextComposition)
at System.Windows.Input.TextCompositionManager.PostProcessInput(System.Object, System.Windows.Input.ProcessInputEventArgs)
at System.Windows.Input.InputManager.RaiseProcessInputEventHandlers(System.Windows.Input.ProcessInputEventHandler, System.Windows.Input.ProcessInputEventArgs)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(System.Windows.Input.InputEventArgs)
at System.Windows.Input.TextCompositionManager.UnsafeStartComposition(System.Windows.Input.TextComposition)
at System.Windows.Input.TextCompositionManager.PostProcessInput(System.Object, System.Windows.Input.ProcessInputEventArgs)
at System.Windows.Input.InputManager.RaiseProcessInputEventHandlers(System.Windows.Input.ProcessInputEventHandler, System.Windows.Input.ProcessInputEventArgs)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(System.Windows.Input.InputEventArgs)
at System.Windows.Input.InputProviderSite.ReportInput(System.Windows.Input.InputReport)
at System.Windows.Interop.HwndKeyboardInputProvider.ProcessTextInputAction(IntPtr, MS.Internal.Interop.WindowMessage, IntPtr, IntPtr, Boolean ByRef)
at System.Windows.Interop.HwndSource.OnPreprocessMessage(System.Object)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
at System.Windows.Threading.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority, System.Delegate, System.Object)
at System.Windows.Interop.HwndSource.OnPreprocessMessageThunk(System.Windows.Interop.MSG ByRef, Boolean ByRef)
at System.Windows.Interop.HwndSource+WeakEventPreprocessMessage.OnPreprocessMessage(System.Windows.Interop.MSG ByRef, Boolean ByRef)
at System.Windows.Interop.ComponentDispatcherThread.RaiseThreadMessage(System.Windows.Interop.MSG ByRef)
at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
at System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
at System.Windows.Application.RunDispatcher(System.Object)
at System.Windows.Application.RunInternal(System.Windows.Window)
at System.Windows.Application.Run(System.Windows.Window)
at EVEPlanetaryPlanner.App.Main()

The first time Iā€™m not really sure what I did to cause it.

The second time it seems I was overly zealous inputting the ā€˜amountā€™ for an extractor in the Planet Planning section.

Also attempting to follow the HowTo is a bit of a struggle, as youā€™ve completely changed the UI so none of the screenshots match with what Iā€™m seeing on screen (afaict).

It looks like it could be really useful, but Iā€™m struggling to make it work/run stable.

Regards,
Cypr3ss.

First, thanks for the report.

When you say ā€˜overly zealousā€™, can you get more specific into what you actually set as input?
From what I see of Crash 2, it looks like it failed to parse the number you set.
it could be because you use . or , as numeral separator.
The tool is supposed to handle it properly, but a bug is still possible.

Crash 1 seems unrelated to crash 2. But still the stack trace you provided will help me greatly to locate where it failed and then backtrack from there to what could have gone wrong.

I know the HowTo is not up to date.
I have plans to change this.
But I am working on several projects at once and real life is busy.
Itā€™s on my todo list, just not high priority at the moment.

1 Like