-
Posts
421 -
Joined
-
Days Won
28
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by X___
-
I understand that NXG dropped units, is bug free and makes programming easy for those who will still need to program when it will be finally ready. Not that I could care less, but VIM, which were introduced in ODG (old gen) are challenged by them (this is of course not the only problem with units, but VIM being recent, this problem is). Take the scalar to string.vim that comes within vi.lib\Utility\Debug Log. If you feed it a numeric, it will work fine and spit out a string reflecting the value fed in. If you feed it a numeric with unit, it spits out garbage, as the cases in the VIM do not know how to handle units. Instead of treating the culprit as a "all other types not handled by the first few cases", it recognizes is as... a timestamp: The point is not so much that scalar to string.vim doesn't work as expected, but that you need to take this into account if you are writing VIMs and plan on using them with scalars with units (or any structure containing those), as they will not be recognized by the cases you will have written for scalars (which is how I discovered the problem). Some will say: well, obviously, since a scalar with unit is a different type than a scalar without. Shall the all-knowing among us be praised! I will argue that: - since VIM will in general have a garbage collection case, a scalar with unit might look like it is treated correctly by a VIM you do not check the internals of, but in fact will spit out garbage. Could be tricky to debug. - units are part of ODG, and the current VIM concept doesn't make it easy to handle them generically. Is it an easy thing to do? Maybe not. Anyway, programmer beware.
-
Is a baked-in Actor Framework on the drawing board?
X___ replied to Bob W Edwards's topic in Object-Oriented Programming
No interest in NXG from this neck of the woods would be the feedback to the Powers that Were. -
I believe a LabVIEW Jupyter kernel is out of the question without NI involvement. And it wouldn't address my use case, as I would want users to work with data in python. Moreover, I would for instance lose access to all the parallel job tools that I have access on my local cluster supporting Jupyter notebooks 🙂
-
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
Sure. But then you cannot move the elements independently. Unless you ungroup, move, regroup. A modular object (such as a Graph) should be moveable as a whole, but its components should ideally be moveable individually. I have no idea how NI does that with their native controls, but this is obviously feasible. This is for instance something that was completely destroyed in XControls (an XControlled-Graph is frozen solid if I recall my now forgotten attempts to expand Graphs, unless you rebuild the whole independent component grabing and moving, as I was told by NI). -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
just forgot to add that my comment about the lack of flexible grouping in LV referred to edit time behavior, which Wiebe's tool doesn't cover. Basically, we need to be able to group objects so as to be able to grab them and move them around as a whole (at edit time), but also be able to grab one inside the group and reposition it (ability which most graphical software provide; not sure about NXG). Essentially what one can do for members of a cluster, without the drawback I was illustrating above. -
I thought it might be helpful if I clarified my use case. Most of my development is LV-based, but I can hardly find anyone interested in working with that code (proprietary language, expensive, graphical, etc.) therefore, in order to be able to share and make what I do expandable by others, I need to interface it with something that is exactly the opposite. Jupyter notebooks are that thing today. What I am looking for is: 1) a way to send markdown text and graphing instructions to reproduce plots generated in LV (or plots that can't easily be produced in LV) in the Jupyter Notebook. The goal is to replace a custom-designed Notebook I based on a .NET rich text box control, which works fine, but is not interactive. 2) a way to pass data structures generated in LV (which the user will have extensive documentation about) to the Jupyter Notebook so that the user of the Notebook can do some processing on their own. 3) a way to send instructions (think custom scripting language) and data to LV. Point 3 is to some extent covered by your tool, as long as LV polls the kernel (and knows which variable to look for). Whether or not a better communication protocol (with user events?) can be designed is up. Points 1 and 2 are pretty much the same thing, the only difference being that 2) might involve bi-directional communication (LV sends data that is processed in the Notebook, which then sends back the result (see Point 3). The original use case, however, is merely to provide data for the user to do whatever they want with. A big unknown to me is whether it would make sense to have access to the Notebook structure within LV (cells, history, data).
-
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
For my particular (ultra-simple) application, that would be an overkill, as I already handle that with a custom-made handler. For the general case, that could certainly be a way to handle multi-component objects. But my question is whether what @The Q is describing above is something that can be done within the wizard (picking one of the controls of the multi-component control as the starting class and doing the weight lifting to add the references to the other controls). -
Sending moral support your way...
-
OK so the connection to a Jupyter notebook works, great. I can define a variable in the notebook and read its value in LV. Now how do I send something to the notebook from LV? 🙂
-
Let us know when it is posted on VIPM's package list.
-
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
I'm way above my head here, but are you saying that in principle the "clustering" of multiple control is just a convenience trick or is that bringing advantages (such as access to class properties via property nodes) that would be lost otherwise (defining a facade with multiple controls NOT bundled into a cluster)? Of course, what's missing for this to be even practical, is more flexible way of grouping objects in LabVIEW (that is, one that allows moving things within a group). Just to put my questions in context, I have developed a simple (well, relatively) way of adding a tip strip to graphs so that long plot names can be read without having the legend size explode. I was contemplating migrating it to a QControl, but the layout of a Graph (due to its accessory panels) can be quite random, and if everything (graph and tip strip) is put into a cluster, the problem I was raising above would potentially ruin the day in some UI cases. -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
Sure, but there are cases like this (vertical "scrollbar" over horizontal "scrollbar", but this works also for the opposite situation): You can "interlace" two XY Graphs and move their "accessory" panels and not have any problems using either one, no matter which one is on top or in the back: It's just something to keep in mind before being bitten late in the development process. -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
Unless I am mistaken, the composite control approach of using a cluster will potentially cause problems if such a control happens to be partially overlapping another control (on a VI panel). I tried to "dislocate" the large scrollbar QControl to emulate a moving subcomponent, and put a String control underneath the transparent part of the cluster (separate control) as illustrated below: Sure enough, this String control is inaccessible at runtime. Unless I am missing something, that's a caveat users may want to consider before embarking into complex control design... -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
Thanks. I'll keep an eye on it. -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
@The Q In the manual, you write (7.3 Methods): I don't see any example of a public method in the examples coming with the toolkit, so I am trying to figure out the intended use. My understanding is that if I want to add a method to a QControl (say, "Add Element"), I need to provide a VI which the user needs to use wherever they want to call that method, rather than having the convenience of using an Invoke Node and connecting the QControl refnum to it (which would be neat, as this would provide a built-in list of methods). Do I get the idea right? It sounds like a polymorphic VI for those methods could do the trick of providing a list of methods, and using VIs not shown as Icons would bring us close to an Invoke Node: The VI above has nothing to do with QControls, it's just borrowed from my own approach to the same problem (of native control enhancement), but it shows what I mean. If that makes sense, I wonder whether this is something that could be added to the Wizard? Something like "New Method from template" that would add a VI to (or create if there is none) a polymorphic VI and let the user define the number of parameters to use for that specific control (or fix that to one, I could live with either option)... -
@gb119 Outstanding work! Just getting started trying it, so bear with the basic comments: - The automated kernel path search on Windows fails to find ipython.exe located in C:\ProgramData\Anaconda3\Scripts\ipython.exe Since I have turned off "Enable automatic error handling dialogs" in Options, I couldn't figure out the problem until I dug down into the diagram (luckily that was trivial due to the nice code layout). Maybe a separate tab with an error indicator could help at that early stage? - Right now each LabVIEW code instance starts a new kernel and stops it upon quitting. This departs from the broader use case mentioned in your intro (remote kernel) and I am not sure whether that is because of the early nature of the project or because that would require a different design (clearly it would, but would it be fundamentally different?). In particular, the seduction for me would be to be able to interact with an existing Jupyter Notebook (having its own kernel already running) or better yet, spawn a Jupyter Notebook. Is that something you have in mind for the future? I'll go back to testing. Keep up this great stuff!
-
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
In retrospect, I believe this would be a nice UI tool to define (contextual) menus: starting from a pre-populated template, unchecking boxes would simply remove that item (or sub-menu) from the final control menu. -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
I think I understand what I was doing wrong: I was doing those tests (at least some of them) starting from an unsaved new project. You may want to check for that or strongly warn users against trying to use an unsaved project (you probably do, but even though I read the Getting Started Guide, I can't remember having registered this info). This being said, the sluggishness remains... -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
No issues with the examples. -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
All this being said, now I am completely unable to create a QControl, wherever I try to save it... -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
@flarn2006This is the Wizard's code. Not mine. -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
OK, so I must the nightmare of a developer, as I am facing the same new Qcontrol path nonsense again (with the random failure symptom as well to boot). Let me recap: - When choosing where to create the QControl, I typically want to choose a new folder, therefore I create one (*) by either typing the name of a new folder I haven't yet created, or using the "browse" button and creating one, opening the newly created folder and clicking "Select Current Folder" - The indicator labeled "The final path will be" then reads: "path of the newly created folder\LabVIEW\QControls" - obviously the next step fails (but does create the two additional folders (LabVIEW and subforder QControls). (*) Just for kicks, I tried to NOT create a new folder, and use the "QControls" top folder I have saved a few test QControls in and I then get the following error: That part seems to "work": the wizard requires an EMPTY folder to proceed. I looked at the Wizard VI that handles that part of the dialog (Update Save Location.vi), and it seems to be explaining part of my issues: - if the creation fails the first time, that VI will use the last two hierarchy levels of the "final path" and append them to the proposed creation path!? I am not sure I understand the reason for that, but I understand that it doubles down on a first failure... Since I can't reinitialize this indicator, the only option is to quit the Wizard and start over again. There must be a better approach... -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
Sounds like getting rid of the checkboxes would kill two birds with one stone... -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
I just mass-compiled the user.lib and vi.lib\QSI folders. Same symptom: when I select a category in the tree, it is highlighted right away, but it takes several seconds before the checkbox is checked (off or on). On a related topic, I am a bit confused by the disconnect between selecting an item and checking it off. For instance, in the snapshot below, I have the Array class checked off and the Boolean class selected (but not checked off). What would be the purpose of this? -
An Extensible, Object-Oriented Alternative to XControls
X___ replied to The Q's topic in User Interface
Nope, I tried it in LV 2018 32 bit to the same effect. That may have something to do with my setup (MBP core i7 16 GB SSD running LV 2018 in Windows 7 - VM in Parallels Desktop with 10 GB of dedicated RAM).