JKISoftware / JKI-State-Machine-Objects

Object-oriented framework for LabVIEW based on the JKI State Machine
BSD 3-Clause "New" or "Revised" License
96 stars 55 forks source link

SMO Editor deleted some of my code #57

Open wireddown opened 6 years ago

wireddown commented 6 years ago

The JKI SMO Editor removes the Typedefs from my SMO when I add a public method.

  1. Create a blank Project
  2. Use the SMO Editor to add a BasicByRefWithEvents SMO
  3. Confirm you can run the TestLauncher VI ✅
  4. Use the SMO Editor to add a public method
  5. Observe an error dialog appears ❌
  6. Observe the Typedefs folder is now empty ❌

Usually, when a tool's operations on user data can fail, they can be rolled back by the tool. It would be helpful if these workflows were made transactional: apply-or-noop.

Add a public method

JKI.SMO.Editor.AddPublicMethod

Error dialog

JKI.SMO.Editor.AddPublicMethod.ErrorDialog

Empty Typedefs folder

LabVIEW.ProjectWindow

Error text

Error 8 occurred at Invoke Node in ProjectItem.JKI SMO.lvclass:New PublicEvents--DataCluster.vi->ProjectItem.JKI SMO.lvclass:Add New Event.vi:690001->ProjectItem.JKI SMO.lvclass:Add ProtectedEvents--DataCluster.vi->JKI SMO Editor.lvclass:AddEvent.vi

Possible reason(s):

LabVIEW: (Hex 0x8) File permission error. You do not have the correct permissions for the file.

Method Name: Save:Instrument

Before / after projects

Software

JKI SMO Editor v2.0.1.4 by JKI
Released On: Wed, 27 Apr 2016 08:59:07 -0700
Author: JKI
Copyright: Copyright (c) 2016, JKI
Compatible LabVIEW Versions: >= 2013.
Compatible OS Versions: ALL.
Repository Name: JKI Package Network

Release Notes:
- Changed Public Method to use Private Events to message Process.
- Event can now be empty (boolean placeholder)
- Event that contains only one control will not wrap into a cluster

This Package depends on these other packages:
jki_lib_state_machine >= 2.0.0
OpenG Array Library >= 4.1.1.14
OpenG Error Library >= 4.2.0.23
OpenG File Library >= 4.0.1.22
OpenG LabVIEW Data Library >= 4.2.0.21
OpenG String Library >= 4.1.0.12
OpenG Variant Configuration File Library >= 4.0.0.5
JKI SMO Templates >= 1.0.0.5
JKI State Machine Objects (SMO) >= 1.0.0.11
francois-normandin commented 6 years ago

I have to congratulate you on the detailed bug report.

You've pointed to a very important missing feature in the tool: transaction begin and undo. At this time, they are non-existent.

The SMO Editor is not part of this open-source project and is currently not published. I know that JKI's intent was to open source it as well so that the community can propose improvements. The code for the editor is not password protected, so it can de inspected and debugged. (If interested, the main VI is located at \project\SMO Edition.vi)

The type of errors you are seeing looks like they are from disk permission errors. I am not well versed in LV for MacOS, so I'll let others chip in with comments. (I've never seen the sequence of errors you describe in the Windows version... although similar errors would probably produce similar results because of the absence of transaction wrappers.)

ImreSzebelledi commented 5 years ago

Regarding the editor: Do you personally use it Francois? A find it a little cumbersome to use even if I like the SMO framework a lot.

francois-normandin commented 5 years ago

I have to admit that I don't use the SMO Editor in its current state. I personally always start from a blank object and inherit from SMO Base, then grow it manually. I spend way more time in the object architecture than in creating methods, so even though it is fastidious to repeat the same patterns by hand, I found that it still worked for me.

I heard that many people use openGDS to script their methods and accessors for SMO (and other frameworks).