Giter Site home page Giter Site logo

cfcohen / trizbort Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jasonlautzenheiser/trizbort

1.0 0.0 0.0 13.44 MB

Trizbort, the Interactive Fiction Mapper

Home Page: http://www.trizbort.com

License: Other

C# 97.51% Perl 0.94% Batchfile 1.29% Python 0.26%

trizbort's Introduction

Trizbort

Trizbort is a simple tool used to create maps for interactive fiction.

Please use the primary repo instead of this one if you're looking for the current version of Trizbort.

Linux Mono

This fork is my attempt to make Trizbort compile and run more reliably on Linux. I'm new to C# & Mono, but I'm hoping to muddle through sufficiently to get it working, which mostly seems to be figuring out why the text isn't displaying in the main window and removing some Windows specific features that throw exceptions or otherwise behave poorly.

I've enabled issues on this repo to give us a place where we can discuss any outstanding bugs specifically related to the initial port and testing of the Linux (and MacOS?) version. I'll probably use it to track defects that I haven't been able to fix yet there as well. I encourage anyone who tests this build to report any problems that are present on Linux that are NOT present in Windows here as well. Problems present in Windows that are not related to Mono/Linux/MacOS should be reported in the primary repo. I'll disable the issues again once we've resolved all of the known issues.

My build procedure

Not being familar with Mono builds, and seeing a lot of conflicting information on the Internet, I lacked clear guidance on how to build Trizbort. This is what I eventually figured out and it completes with a "successful" build, although I've hack

First get a sufficiently up-to-date version of Mono. I'm running Ubunutu 20.10, and the default version seemed to be too old to work, because nuget complained that it needed version 2.12. The xbuild command also said to run msbuild instead, but there was no msbuild command. These commands resulted in bunch of new mono packages for me:

$ sudo apt install gnupg ca-certificates
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 \
  --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
$ echo "deb [arch=amd64] https://download.mono-project.com/repo/ubuntu stable-focal main" \
  | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
$ sudo apt update
$ sudo apt upgrade

Then clone the repo:

$ git clone https://github.com/cfcohen/trizbort Trizbort
$ cd Trizbort
$ git checkout linux

Install the required packages using the new version of nuget:

$ mkdir packages
$ cd packages
$ nuget install CommandLineParser -Version 2.6.0
$ nuget install Newtonsoft.Json -Version 12.0.2
$ nuget install PDFsharp-gdi -Version 1.50.5147
$ nuget install NUnit -Version 3.12
$ nuget install NUnit3TestAdapter -Version 3.17.0
$ nuget install Shouldly -Version 3.0.2.0

Build once to create the obj/x86/Debug directory:

$ cd ..
$ msbuild

This is the best hack I've found so far to cause the buld to run to completion.

$ touch obj/x86/Debug/Trizbort.exe.manifest
$ touch obj/x86/Debug/Trizbort.application
$ msbuild

I'm not sure why there's not a Trizbort.exe.manifest or Trizbort.application in the upstream repo. The msbuild command seems to require them, but obviously Jason seems to be building fine without them in Windows. If anyone knows why these are required under Linux and what to do about them, please let me know.

Finally, you should be able to run Trizbort with:

$ mono ./bin/Debug/Trizbort.exe

trizbort's People

Contributors

jasonlautzenheiser avatar andrewschultz avatar tymian avatar thepix avatar matthiaswatkins avatar genstein avatar dependabot[bot] avatar nyun0 avatar ainslec avatar cfcohen avatar mkhubbard avatar taradinoc avatar berkeleynerd avatar dfabulich avatar hlabrand avatar

Stargazers

Ryan Sherwood avatar

trizbort's Issues

Marking a connection as a "door" crashes.

Checking the checkbox for a "door" on a connection causes an exception and and immediate exit.

Unhandled Exception:
System.ArgumentException: A null reference or invalid value was found [GDI+ status: InvalidParameter]
  at System.Drawing.GDIPlus.CheckStatus (System.Drawing.Status status) [0x00098] in <345861cc94284a0bb0f2f2528d6cd247>:0 
  at System.Drawing.Graphics.Dispose () [0x0003a] in <345861cc94284a0bb0f2f2528d6cd247>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.Graphics.Dispose()
  at System.Drawing.Graphics.Finalize () [0x00000] in <345861cc94284a0bb0f2f2528d6cd247>:0 
System.MemberAccessException: Object is busy and cannot state allow this operation [GDI+ status: ObjectBusy]
  at System.Drawing.GDIPlus.CheckStatus (System.Drawing.Status status) [0x000d6] in <345861cc94284a0bb0f2f2528d6cd247>:0 
  at System.Drawing.Graphics.Dispose () [0x0003a] in <345861cc94284a0bb0f2f2528d6cd247>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.Graphics.Dispose()
  at System.Windows.Forms.XplatUIX11.PaintEventEnd (System.Windows.Forms.Message& msg, System.IntPtr handle, System.Boolean client, System.Windows.Forms.PaintEventArgs pevent) [0x00010] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.XplatUI.PaintEventEnd (System.Windows.Forms.Message& msg, System.IntPtr handle, System.Boolean client, System.Windows.Forms.PaintEventArgs pevent) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WmPaint (System.Windows.Forms.Message& m) [0x0008f] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x001a4] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ContainerControl.WndProc (System.Windows.Forms.Message& m) [0x00027] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.UserControl.WndProc (System.Windows.Forms.Message& m) [0x00025] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at Trizbort.UI.Controls.Canvas.WndProc (System.Windows.Forms.Message& m) [0x0001e] in <b0f85e845ba74be19b81293379b46981>:0 
  at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x00085] in <6d635ac3dc1c4424ad385ded79f1e868>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentException: A null reference or invalid value was found [GDI+ status: InvalidParameter]
  at System.Drawing.GDIPlus.CheckStatus (System.Drawing.Status status) [0x00098] in <345861cc94284a0bb0f2f2528d6cd247>:0 
  at System.Drawing.Graphics.Dispose () [0x0003a] in <345861cc94284a0bb0f2f2528d6cd247>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.Graphics.Dispose()
  at System.Drawing.Graphics.Finalize () [0x00000] in <345861cc94284a0bb0f2f2528d6cd247>:0 

Out of Range Exception in Statistics

While viewing the statistics has worked for me sometimes in the past, at least once I've generated this exception:

System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
  at System.Collections.Generic.List`1[T].get_Item (System.Int32 index) [0x00009] in <533173d24dae460899d2b10975534bb0>:0 
  at System.Collections.ObjectModel.Collection`1[T].get_Item (System.Int32 index) [0x00000] in <533173d24dae460899d2b10975534bb0>:0 
  at Trizbort.Domain.Application.MapStatistics+<>c.<get_UnlabeledConnections>b__63_0 (Trizbort.Domain.Elements.Connection p) [0x00028] in <b0f85e845ba74be19b81293379b46981>:0 
  at System.Linq.Enumerable.Count[TSource] (System.Collections.Generic.IEnumerable`1[T] source, System.Func`2[T,TResult] predicate) [0x0002e] in <5b415632df1f4365ae2242b1a257bb5b>:0 
  at Trizbort.Domain.Application.MapStatistics.get_UnlabeledConnections () [0x00010] in <b0f85e845ba74be19b81293379b46981>:0 
  at Trizbort.UI.MapStatisticsView.mapStatisticsString () [0x0020a] in <b0f85e845ba74be19b81293379b46981>:0 
  at Trizbort.UI.MapStatisticsView.MapStatisticsView_Load (System.Object sender, System.EventArgs e) [0x00001] in <b0f85e845ba74be19b81293379b46981>:0 
  at System.Windows.Forms.Form.OnLoad (System.EventArgs e) [0x0001f] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Form.OnLoadInternal (System.EventArgs e) [0x00023] in <6d635ac3dc1c4424ad385ded79f1e868>:0

Closing "Map Settings" dialog causes an exception.

Opening and then canceling the "Map Settings" dialog causes an exception. The problem appears to be related to this issue.

On my system, the erroneous section contains:

  <System.Windows.Forms.ApplicationConfigurationSection>
    <add key="DpiAwareness" value="PerMonitorV2" />
  </System.Windows.Forms.ApplicationConfigurationSection>

Removing the problematic section from the config in ./bin/Debug/Trizbort.exe.config solves the problem, so this is somehow a "build" problem. It could be worked around in a binary Linux distribution by hand-editing the config post-build, but obviously, a better solution would be to not add the section in the first place.

Here's the rather large exception:

System.Configuration.ConfigurationErrorsException: Unrecognized configuration section <System.Windows.Forms.ApplicationConfigurationSection> (/home/cory/Source/Trizbort/bin/Debug/Trizbort.exe.config line 34)
  at System.Configuration.ConfigInfo.ThrowException (System.String text, System.Xml.XmlReader reader) [0x00007] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.SectionGroupInfo.ReadContent (System.Xml.XmlReader reader, System.Configuration.Configuration config, System.Boolean overrideAllowed, System.Boolean root) [0x00135] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.SectionGroupInfo.ReadRootData (System.Xml.XmlReader reader, System.Configuration.Configuration config, System.Boolean overrideAllowed) [0x00007] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.Configuration.ReadConfigFile (System.Xml.XmlReader reader, System.String fileName) [0x000ce] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.Configuration.Load () [0x00043] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.Configuration.Init (System.Configuration.Internal.IConfigSystem system, System.String configPath, System.Configuration.Configuration parent) [0x0005d] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.Configuration..ctor (System.Configuration.InternalConfigurationSystem system, System.String locationSubPath) [0x00056] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.InternalConfigurationFactory.Create (System.Type typeConfigHost, System.Object[] hostInitConfigurationParams) [0x0000d] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.ConfigurationManager.OpenMappedExeConfiguration (System.Configuration.ExeConfigurationFileMap fileMap, System.Configuration.ConfigurationUserLevel userLevel) [0x00005] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.CustomizableFileSettingsProvider.LoadProperties (System.Configuration.ExeConfigurationFileMap exeMap, System.Configuration.SettingsPropertyCollection collection, System.Configuration.ConfigurationUserLevel level, System.String sectionGroupName, System.Boolean allowOverwrite, System.String groupName) [0x00000] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Configuration.CustomizableFileSettingsProvider.GetPropertyValues (System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection collection) [0x0002a] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Configuration.LocalFileSettingsProvider.GetPropertyValues (System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection properties) [0x00000] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Configuration.ApplicationSettingsBase.CacheValuesByProvider (System.Configuration.SettingsProvider provider) [0x0005b] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Configuration.ApplicationSettingsBase.set_Item (System.String propertyName, System.Object value) [0x00058] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at Trizbort.Properties.Settings.set_SettingsLastTabIndex (System.Int64 value) [0x00001] in <ff4dd0d639de4e7fb68468301564265d>:0 
  at Trizbort.UI.SettingsDialog.SettingsDialog_FormClosing (System.Object sender, System.Windows.Forms.FormClosingEventArgs e) [0x00011] in <ff4dd0d639de4e7fb68468301564265d>:0 
  at System.Windows.Forms.Form.OnFormClosing (System.Windows.Forms.FormClosingEventArgs e) [0x00019] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Form.FireClosingEvents (System.Windows.Forms.CloseReason reason, System.Boolean cancel) [0x0001b] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Form.RaiseCloseEvents (System.Boolean last_check, System.Boolean cancel) [0x0002d] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Form.set_DialogResult (System.Windows.Forms.DialogResult value) [0x0003c] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Form.set_DialogResult(System.Windows.Forms.DialogResult)
  at System.Windows.Forms.Button.OnClick (System.EventArgs e) [0x00028] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ButtonBase.OnMouseUp (System.Windows.Forms.MouseEventArgs mevent) [0x00069] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Button.OnMouseUp (System.Windows.Forms.MouseEventArgs mevent) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00078] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x001b4] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ButtonBase.WndProc (System.Windows.Forms.Message& m) [0x00037] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Button.WndProc (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x00085] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
System.Configuration.ConfigurationErrorsException: Unrecognized configuration section <System.Windows.Forms.ApplicationConfigurationSection> (/home/cory/Source/Trizbort/bin/Debug/Trizbort.exe.config line 34)
  at System.Configuration.ConfigInfo.ThrowException (System.String text, System.Xml.XmlReader reader) [0x00007] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.SectionGroupInfo.ReadContent (System.Xml.XmlReader reader, System.Configuration.Configuration config, System.Boolean overrideAllowed, System.Boolean root) [0x00135] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.SectionGroupInfo.ReadRootData (System.Xml.XmlReader reader, System.Configuration.Configuration config, System.Boolean overrideAllowed) [0x00007] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.Configuration.ReadConfigFile (System.Xml.XmlReader reader, System.String fileName) [0x000ce] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.Configuration.Load () [0x00043] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.Configuration.Init (System.Configuration.Internal.IConfigSystem system, System.String configPath, System.Configuration.Configuration parent) [0x0005d] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.Configuration..ctor (System.Configuration.InternalConfigurationSystem system, System.String locationSubPath) [0x00056] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.InternalConfigurationFactory.Create (System.Type typeConfigHost, System.Object[] hostInitConfigurationParams) [0x0000d] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.ConfigurationManager.OpenMappedExeConfiguration (System.Configuration.ExeConfigurationFileMap fileMap, System.Configuration.ConfigurationUserLevel userLevel) [0x00005] in <d7e9527b25d2424892e8504134a25d31>:0 
  at System.Configuration.CustomizableFileSettingsProvider.LoadProperties (System.Configuration.ExeConfigurationFileMap exeMap, System.Configuration.SettingsPropertyCollection collection, System.Configuration.ConfigurationUserLevel level, System.String sectionGroupName, System.Boolean allowOverwrite, System.String groupName) [0x00000] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Configuration.CustomizableFileSettingsProvider.GetPropertyValues (System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection collection) [0x0002a] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Configuration.LocalFileSettingsProvider.GetPropertyValues (System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection properties) [0x00000] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Configuration.ApplicationSettingsBase.CacheValuesByProvider (System.Configuration.SettingsProvider provider) [0x0005b] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at System.Configuration.ApplicationSettingsBase.set_Item (System.String propertyName, System.Object value) [0x00058] in <9c6e2cb7ddd8473fa420642ddcf7ce48>:0 
  at Trizbort.Properties.Settings.set_SettingsLastTabIndex (System.Int64 value) [0x00001] in <ff4dd0d639de4e7fb68468301564265d>:0 
  at Trizbort.UI.SettingsDialog.SettingsDialog_FormClosing (System.Object sender, System.Windows.Forms.FormClosingEventArgs e) [0x00011] in <ff4dd0d639de4e7fb68468301564265d>:0 
  at System.Windows.Forms.Form.OnFormClosing (System.Windows.Forms.FormClosingEventArgs e) [0x00019] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Form.FireClosingEvents (System.Windows.Forms.CloseReason reason, System.Boolean cancel) [0x0001b] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Form.FireClosingEvents(System.Windows.Forms.CloseReason,bool)
  at System.Windows.Forms.Application.Exit (System.ComponentModel.CancelEventArgs e) [0x0002e] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Application.Exit () [0x00005] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Application.OnThreadException (System.Exception t) [0x0005e] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.NativeWindow.OnThreadException (System.Exception e) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x00196] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.XplatUIX11.DispatchMessage (System.Windows.Forms.MSG& msg) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.XplatUI.DispatchMessage (System.Windows.Forms.MSG& msg) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Application.RunLoop (System.Boolean Modal, System.Windows.Forms.ApplicationContext context) [0x002ff] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Form.ShowDialog (System.Windows.Forms.IWin32Window owner) [0x001b7] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Form.ShowDialog () [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Form.ShowDialog()
  at Trizbort.Setup.Settings.ShowMapDialog () [0x0022c] in <ff4dd0d639de4e7fb68468301564265d>:0 
  at Trizbort.UI.MainForm.ProjectSettingsMenuItem_Click (System.Object sender, System.EventArgs e) [0x00001] in <ff4dd0d639de4e7fb68468301564265d>:0 
  at System.Windows.Forms.ToolStripItem.OnClick (System.EventArgs e) [0x00019] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripMenuItem.OnClick (System.EventArgs e) [0x00090] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripMenuItem.HandleClick (System.Int32 mouse_clicks, System.EventArgs e) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripItem.FireEvent (System.EventArgs e, System.Windows.Forms.ToolStripItemEventType met) [0x00054] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.ToolStripItem.FireEvent(System.EventArgs,System.Windows.Forms.ToolStripItemEventType)
  at System.Windows.Forms.ToolStrip.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) [0x00048] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripDropDown.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00078] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x001b4] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStrip.WndProc (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripDropDown.WndProc (System.Windows.Forms.Message& m) [0x00017] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr w<Param, System.IntPtr lParam) [0x00085] in <6d635ac3dc1c4424ad385ded79f1e868>:0 

Clicking on the NUM or CAPS in the bottom right corner crashes.

Clicking on the NUM or CAPS text in the bottom right corner causes Trizbort to crash. This is also certainly caused by the user32.dll calls to GetKeyState.

The exception generated is:

System.EntryPointNotFoundException: GetKeyState assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) Trizbort.Util.KeyboardHelper.GetKeyState(uint)
  at Trizbort.Util.KeyboardHelper.SetNumLockKey (System.Boolean newState) [0x00001] in <09eec2d9bccd49ad92343a6b647d2cfc>:0 
  at Trizbort.Domain.StatusBar.NumLockStatusWidget.ClickHandler () [0x0000b] in <09eec2d9bccd49ad92343a6b647d2cfc>:0 
  at Trizbort.Domain.StatusBar.Status.handleClick (System.Object sender, System.EventArgs e) [0x00031] in <09eec2d9bccd49ad92343a6b647d2cfc>:0 
  at System.Windows.Forms.ToolStripItem.OnClick (System.EventArgs e) [0x00019] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripItem.HandleClick (System.Int32 mouse_clicks, System.EventArgs e) [0x00029] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripItem.FireEvent (System.EventArgs e, System.Windows.Forms.ToolStripItemEventType met) [0x00054] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.ToolStripItem.FireEvent(System.EventArgs,System.Windows.Forms.ToolStripItemEventType)
  at System.Windows.Forms.ToolStrip.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) [0x00048] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00078] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x001b4] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStrip.WndProc (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.StatusStrip.WndProc (System.Windows.Forms.Message& m) [0x0011f] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x00085] in <6d635ac3dc1c4424ad385ded79f1e868>:0

Missing tooltip when hovering over rooms.

At first I thought that the problem with the missing room tooltips was that they just weren't being displayed at all. I've since learned that they are being displayed, just at a large offset from where they're supposed to be. On my monitor, if I move the Trizbort window very near the top of the screen, and hover over a room that is also very near the top of the main window, the tooltip will appear very near the bottom of my screen.

This smells like a screen coordinates versus window coordinate issue, with some small difference in how the Mono implementation of the Windows widgets works. I should probably try finding the code that positions the tooltip, and conditionally adjusting in under Linux to see if I can determine the pattern of what's different between the platforms.

The object position display checkboxes display "text".

The Windows version has arrow graphics in the object position tab of the room properties dialog. The Mono version has what seems to be "random" characters, but aren't actually... They're exactly what the code says they should be:

this.m_cCheckBox.Text = "o";
this.m_nwCheckBox.Text = "ã";
this.m_seCheckBox.Text = "æ";
this.m_nCheckBox.Text = "á";
this.m_sCheckBox.Text = "â";
this.m_neCheckBox.Text = "ä";
this.m_swCheckBox.Text = "å";
this.m_wCheckBox.Text = "ß";
this.m_eCheckBox.Text = "à";

I'm guessing that there's an implicit charset encoding that makes sense on Windows but isn't correct on other systems. A conversion to UTF-8 is probably in order here...

Things that work... (and other minor issues summary).

My overall assessment is that there are really only a few features that are missing. By FAR the most important is the mysterious lack of any text in the primary view.

This is my list of things that appear to work fine...

  • Saving a map as a specific file.
  • Opening a map from a file.
  • Opening a map from the web. (although the widget layout is bad)
  • Opening maps from the recent maps list.
  • Starting a new map.
  • Exporting a map as a PNG. (text still doesn't show)
  • Exporting a map as a JPG. (text still doesn't show)
  • Exporting a map as a BMP. (text still doesn't show)
  • Export as TADS.
  • Export as Inform 7.
  • Select all, select none, rectangular region select, grow and shrink selection with Shift-click.
  • Copy and paste of selections.
  • Deletion of selections.
  • All special selections.
  • Creating rooms works normally. (although the menu remains open after using the "R" key).
  • All darkness setting methods work.
  • Start and end rooms.
  • All room shapes from the menu, dialog or right click menu.
  • Joining rooms.
  • Setting colors on connections.
  • Reversing line directions.
  • Editing most settings in the connections dialog (text does not show).
  • Setting names, subtitles, and descriptions in the room dialog.
  • Editing room fill and border colors in the room dialog (probably other as well).
  • Setting regions from the room dialog and right click context menu.
  • All zoom and pan controls, including 50%, 100%, 200%, and Ctrl-mousewheel.
  • Reseting the view. Showing the entire map.
  • Disabling the mini map. Panning with the mini map.
  • Showing and hiding the grid. (although on my HiDPI monitor the lines so faint as to be nearly invisible)
  • Automap dialog opens. (I have not tested thoroughly, who has sample transcripts?)
  • Settings the "About" properties for the map.
  • Disabling the grid, origin, and grid snap. Changing the grid resolution.
  • Editing regions. Setting regions on rooms.
  • Adjusting resize handles, and snap distance.
  • Changing the colors of connections and grid.
  • Changing the fonts brings up the correct dialogs. (but text is not showing)
  • Opening the online help open correctly in my native Linux web browser.
  • Checking for updates reports no update. (no idea what it does when there is an update).
  • About dialog opens correctly.
  • Creation of new rooms with Ctrl- (although Room dialog pops up each time)
  • Both tool bar connection widgets. (although the widget layout is bad)

And some things that don't work fine and don't have individual tickets yet:

  • "Save" appears to always result in "Save As..."
  • Toggle text does not work. (or at least it's not possible to tell without text)
  • Drawing the validation Xs does not seem to be working.
  • The default colors don't show correctly in the room dialog?
  • Show FPS setting crashes on startup.

Exporting to PDF fails.

When exporting a map to PDF, it fails with:

There was a problem exporting the map:
Object reference not set to an instance of an object.

No exception was generated, but removing the catch exception block yielded:

System.NullReferenceException: Object reference not set to an instance of an object
  at Trizbort.UI.Controls.Canvas.Draw (PdfSharp.Drawing.XGraphics graphics, System.Boolean finalRender, System.Single width, System.Single height) [0x000d2] in <b0f85e845ba74be19b81293379b46981>:0 
  at (wrapper remoting-invoke-with-check) Trizbort.UI.Controls.Canvas.Draw(PdfSharp.Drawing.XGraphics,bool,single,single)
  at Trizbort.UI.MainForm.savePDF (System.String fileName) [0x000c2] in <b0f85e845ba74be19b81293379b46981>:0 
  at Trizbort.UI.MainForm.FileExportPDFMenuItem_Click (System.Object sender, System.EventArgs e) [0x0004a] in <b0f85e845ba74be19b81293379b46981>:0 
  at System.Windows.Forms.ToolStripItem.OnClick (System.EventArgs e) [0x00019] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripMenuItem.OnClick (System.EventArgs e) [0x00090] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripMenuItem.HandleClick (System.Int32 mouse_clicks, System.EventArgs e) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripItem.FireEvent (System.EventArgs e, System.Windows.Forms.ToolStripItemEventType met) [0x00054] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.ToolStripItem.FireEvent(System.EventArgs,System.Windows.Forms.ToolStripItemEventType)
  at System.Windows.Forms.ToolStrip.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) [0x00048] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripDropDown.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00078] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x001b4] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStrip.WndProc (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ToolStripDropDown.WndProc (System.Windows.Forms.Message& m) [0x00017] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x00085] in <6d635ac3dc1c4424ad385ded79f1e868>:0

Pasting Unicode text into text widgets causes a crash.

This bug sadly appears to be related to this bug in mono. I found this bug and then that ticket while investigating a related issue where unicode characters do not appear to be displaying correctly in general within the MonoTrizbort (which also seems to be a Mono WinForms bug).

The exception for pasting some European special characters in the room description text field was:

System.ExecutionEngineException: String conversion error: Illegal byte sequence encounted in the input.
  at (wrapper managed-to-native) System.Runtime.InteropServices.Marshal.PtrToStringAnsi(intptr)
  at System.Windows.Forms.XplatUIX11.TranslatePropertyToClipboard (System.IntPtr property) [0x000f2] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.XplatUIX11.UpdateMessageQueue (System.Windows.Forms.XEventQueue queue, System.Boolean allowIdle) [0x00918] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.XplatUIX11.ClipboardRetrieve (System.IntPtr handle, System.Int32 type, System.Windows.Forms.XplatUI+ClipboardToObject converter) [0x0002f] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.XplatUI.ClipboardRetrieve (System.IntPtr handle, System.Int32 type, System.Windows.Forms.XplatUI+ClipboardToObject converter) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Clipboard.GetDataObject (System.Boolean primary_selection) [0x00039] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Clipboard.GetDataObject () [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.TextBoxBase.Paste () [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.TextBox.paste_Click (System.Object sender, System.EventArgs e) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.MenuItem.OnClick (System.EventArgs e) [0x00019] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.MenuItem.PerformClick () [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.MenuItem.PerformClick()
  at System.Windows.Forms.MenuTracker.OnMouseUp (System.Windows.Forms.MouseEventArgs args) [0x000bf] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.ProcessActiveTracker (System.Windows.Forms.Message& m) [0x00091] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00015] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x001b4] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.ContainerControl.WndProc (System.Windows.Forms.Message& m) [0x00027] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Form.WndProc (System.Windows.Forms.Message& m) [0x00166] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in <6d635ac3dc1c4424ad385ded79f1e868>:0 
  at System.Windows.Forms.NativeWindow.WndProc (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x00085] in <6d635ac3dc1c4424ad385ded79f1e868>:0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.