Coder Social home page Coder Social logo

enviraldesign / td-ubergui Goto Github PK

View Code? Open in Web Editor NEW
71.0 9.0 5.0 9.19 MB

UberGui is a lightweight multi-threaded, webRender UI module for TouchDesigner

License: MIT License

CSS 7.34% JavaScript 12.11% Python 80.55%
touchdesigner ui python webrender

td-ubergui's Issues

Field editing binded pars

Hi Lucas

I think this might be the same issue as someone else reported. Editing binded parameters via slider/buttons works perfectly,
the issue is when you double click to edit a par, you get the value of the "constant mode" in the field

Open your demo file, load the custom OP example

drag the Bind slider to e.g: 0.5

double click the slider/value to edit the value manually

-> the field will show 0.0 (and NOT 0.5)

RFE: Accept list of input Operators

It would be amazing if I could point UBERGui at a list of operators for input/output and assemble parameters from all of the containers into a single scollable UI. I've been trying to figure out the best way to assemble a paramInspector for both toxes and associated post effects, and I think this would be a beautiful solution

RFE: option to resize or disable help overlay

The help feature is really cool, but I could image scenarios in which it is undesired, and when interacting with a multitouch surface, the insidePanel hover triggers a bit wildly. The option to hide or scale this feature would be a nice touch (pun i guess intended?)

make relative paths possible in OP parameters.

Awesome, thanks for checking that out. I notice that when referencing an operator in these data types, it returns an absolute path, which is cool, but it doesn't seem like one can evaluate relative paths this way. for example, if i put op('simple_thing') into a comp, it comes back none, and things like parent() won't work either. Is it possible to make these kinds of relative references evaluate from the position of the input OP? Even if the python reference breaks, it would be cool to be able to use relative path expressions and have them evaluate to absolute paths in UberGUI

Originally posted by @drmbt in #2 (comment)

RFE: Page Filtering mode

latest stable build, fresh pull from the git:

creating a new base with customPars and pointing the i/o from UberGUI returns a blank screen. It would appear that UberGUI requires an isupper() condition to be met in the name of customPages, this doesn't seem to be documented anywhere, but should be noted if anyone expects to plug pre-existing components into the GUI without some amount of confusion

I'm not sure why this is absolutely necessary, but maybe its in place to prevent something else from breaking. Would be great if all caps wasn't necessary, as it would require a lot of work, albeit rather simple renaming, to integrate this into a system that doesn't already have those naming conventions in place

More touchscreen issues

Hey again
this behaves much better, but I'm still having touchscreen issues

ISSUE 1
open your demo file and scroll down to "Numeric special"
touch RGB color pick "..." > dont change anything in the popup picker > try to close it by touching outside. If it closes open the color picker again and try to close it ...
At some point (rather sooner than later) I get stuck in the opened popup picker and cant close it. If that happens , the only way to close it is to select a new color (or move the mouse)

ISSUE 2:
open "RGB" picker by touching the blue "..."
changeit to red
touch outside to close color picker

touch "RGBA" ".."
-> color picker opens with the correct color (orange) but if you click in the big square to pick a new orange tone the hue will jump to the hue of the previou(RGB) par (red)

picking mode in touch context inconsistent

The way picking works seems to be really inconsistent; I suspect this has something to do with you're checking for IsPickingDataValid and didMove. The result is that certain data types like pulse and momentary can't be triggered at all from multitouch, and the interface often gets stuck thinking you're still interacting with the left half of the ui when you're trying to work with individial parameters on the right. Parameters still need to be double clicked to engage with mtouch, which is unintuitive, and doesn't work very consistently so it feels clunky. I suspect this is because unlike using a touchscreen on regular sliders, this UI needs to know what is being hovered over before it engages, and that extra layer of abstraction is borking something

2023 support?

Hi Lucas, is there a plan for a TD2023 supported version?

Errant print statement in extension

looks like its line 369 in UG4 is a print statement that was driving me nuts because I wasn't sure where in my project it was coming from. If that needs to hit the textport, is debug a better option?

First touch after mouse movement no recognised

On a touchscreen, the first touch after moving the mouse is not recognized

And touching and moving a slider and then selecting and moving a different slider will actually move the previous slider/par

RFE: Allow Bind mode

Hi Lucas

I appreciate the read-only mode for parameters in expression mode.

But imho bind mode should NOT be read-only. In my testing it worked perfectly (I was binding to a dependDict holding parameter presets)

Could you please re-enable parameters in bind mode (or provide a setting which pars modes will be read-only)

Also, is there a way to set the text colors for expression, read only and export mode?
Thanks!

Unified Mouse/Touch mode.

Touchmode de-activates the ability to interface with the GUI via a mouse, which is problematic for mixed mode use cases... even when interacting with a touch screen, I'm almost always going to also want to be able to use a mouse as well. I see no reason to deactivate panelexec_interact_mouse_scroll while in Touch mode for example, but I suspect the ultimate solution lies in a unified mode using the mtouchinDAT with Include Mouse activated, possibly combined with a panel chop. I know this gets messy, and is one of the reasons touch developement in TD is so difficult. Just figured I'd report my experience, I think for this to feel good as a touchscreen interface, one needs to be able to adjust slider values with a single click touch interaction. Double clicking will be too difficult to consistently engage an interaction without the logic being confused by subtle movements due to the inaccuracy of a user's second click

RFE: Handle header type pars

I think I only have one RFE remaining. Currently "header type" pars are rendered as editable strings. Imho these should get their own (header like) styling. Or, as a quick fix, those could be just rendered as headers.

RFE: drag and drop callbacks

this is probably something that should wait for the next stable to drop, which should be any day now, but I'd imagine it wouldn't be too difficult to implement a drag/drop from the left half initParName, or the ability to receive drop arguments in those object fields you fixed. The new drag/drop callbacks system Ivan built is great (still experimental for now), would love it if i could access those pars still on click/drag or even hover. In the meantime if i wanted to get hacky, is there a best place if i wanted to grab that par/tuplet now? Is 'initParName' or 'forcedParName' in the 'chopexec_lselect' storage the best place to access that? A lot of the GUIs I've been building lately are grabbing this info from parameterCOMPs, your solution would be much more elegant for my use cases if I could access that info directly

Question: How to set drop down menu colors

Hey Lucas ,

is there a way to configure the dropdown options:

  • bg colors
  • spacing
  • scrollbar colors and size?
  • overall width and height

Also it's a bit weird that the dropdowns rollover color is controlled by accentinteractcolor and not via hovercolor

cheers
Achim

RFE: Ignore expr mode params or fully support those

Right now I can edit a param that is in expression mode, but that will put the param into constant mode. But for the end user of the gui this is not transparent, so he might easily break stuff

Maybe it would be better to (optionally) ignore parameters that are in expression (or export) mode

Or to fully support editing parameters that are in expression mode, i.e. to not change them to constant mode

Default value of binding parameter

Hi, Lucas!
Thanks for your great soft!
When I try to edit parameter, that have bind expression, the value set to default of that parameter in UberGUI interface.

Certain par styles set to None can't be edited directly in interface

Certain par types that take a string path, such as Op, OBJ, MAT, SOP. DAT, CHOP, Python, TOP. COMP etc. can't be interacted with until something has been assigned manually via the network editor parameter... once a value has been entered there, it can be double click edited as expected, but if the starting value is 'None', no interaction takes effect. This is easily reproduced by monitoring the 'Heavy' example and engaging the UI for such parameters

Scrolling Parameter RFEs

It would be great if part of the Style page a scroll wheel speed modifier were implemented. While I can traverse all the parameters in 'Heavy' in the Parameters Inspector with a single wheel scoll, it takes me 30 full scrolls to do the same thing in UberGUI, and a public multiplier would be helpful in dialing in a user facing interface and making it feel good

the two finger scroll actually feels pretty good for flicks on a laptop mouse pad, but two finger scroll doesn't work unless you let up off the pad the hovers freak out a bit, which isn't the expected behavior in a browser... that very well may be a limitation of TD tho

On a touch screen things break a bit. Increasing the Scroll Bar width makes it fairly navigable from a touch ui, but a two finger multi-touch scroll would be amazing. To that end, the ability to adjust the fill weight between the left and right part of the panel, and set the texts H orientation would be fantastic. Right now most elements can be interacted with via touch screen, but they require a double click on a new one, otherwise the parameter gets stuck on a recently interacted with parameter. This can be fixed by using a regular mouse to engage a new parameter. Obviously touchscreen functionality isn't a priority with this UI, but I figured feedback on how its functioning with one could be helpful.

Thanks again for releasing this, its a great contribution. Looking forward to spending some more time with it

Incompatible with latest experimental

From Yuri Spitzyn on facebook:

Great work, Lucas, thanks for sharing this with the community! As a bit of a feedback: for what it's worth the functionality seems to be broken by the latest touchdesigner update (2020.46540). The Web Render TOP inside the "container_UG_V4" comp simply displays a blank white rectangle now. This was checked on Windows 10 with the "UberGui_V4_Release.toe" network from the original Uber GUI github package.

New stable lselect_mouse error

spamming clicks on the left half of the interface returns some errors in converting string to float from the l_select chop. error looks like dis:

Traceback (most recent call last):
File "/project1/container_UG_V4/chopexec_interact_mouse_lselect", line 11, in onOffToOn
File "/project1/container_UG_V4/UG4", line 409, in Interact_LeftClick_Down
ValueError: could not convert string to float: '0.97666666666666677OklOSVQsWDowLFk6MDwvdGl0bGU%2BCjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPHN0eWxlPgoKOnJvb3QgewogIC0taG92ZXItdHJhbnNpdGlvbi10aW1lOiAwLjFzOwogIC8qLS1wYXJhbWV0ZXItcm93LWhlaWdodDogOyovCn0KCgpodG1sLCBib2R5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEzLDEzLDEzKTsKICBtYXJnaW46IDBwdDsKICB1c2VyLXNlbGVjdDogbm9uZTsKfQoKCi5kZWJ1ZyB7CiAgY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuNSk7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMHB0OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIHdpZHRoOiAxMDAlOwogIHotaW5kZXg6IDUwOwogIG9wYWNpdHk6IDAuMDsKfQoKCi5ibGFua2l0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEzLDEzLDEzKTsKICBwb3NpdGlvbjogZml4ZWQ7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwp9CgoKLyogd2lkdGggKi8KOjotd2Via2l0LXNjcm9sbGJhciB7CiAgd2lkdGg6IDEwcHg7CiAgYmFja2dyb3VuZDogcmdiKDEzLDEzLDEzKTsKfQoKLyogSGFuZGxlICovCjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogIGJhY2tncm91bmQ6IHJnYig3Niw3Niw3Nik7Cn0KCgouc3BhY2VyX3NlY3Rpb24gewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMnB4Owp9Ci5zcGFjZXJfaGVhZGVyIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDJweDsKfQoKCi5oZWFkZXJfY29udGFpbmVyIHsKICBmb250LWZhbWlseTogIkNhbGlicmkiOwogIGZvbnQtc2l6ZTogMTQuMHB0OwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIG1hcmdpbi1ib3R0b206IDJweDsKICBwYWRkaW5nLXJpZ2h0OiA0cHQ7CiAgcGFkZGluZy1sZWZ0OiA0cHQ7CiAgbWFyZ2luLXJpZ2h0OiAycHg7CiAgbWFyZ2luLWxlZnQ6IDJweDsKICBoZWlnaHQ6IDMwcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1MywxNTMsMTUzKTsKICBjb2xvcjogcmdiKDI2LDI2LDI2KTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBsaW5lLWhlaWdodDogMzBweDsKICBib3JkZXItcmFkaXVzOiAzcHg7Cn0KCi53aWRnZXRfY29udGFpbmVyIHsKICBoZWlnaHQ6IDI1cHg7CiAgZGlzcGxheTogZmxleDsKICBtYXJnaW4tcmlnaHQ6IDJweDsKICBtYXJnaW4tbGVmdDogMnB4OwogIG1hcmdpbi1ib3R0b206IDFweDsKfQoKCi53aWRnZXRfbGFiZWwgewogIGZvbnQtZmFtaWx5OiAiVGFob21hIjsKICBmb250LXNpemU6IDkuMHB0OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgY29sb3I6IHJnYigyMTcsMjE3LDIxNyk7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgcGFkZGluZy1yaWdodDogNHB0OwogIHBhZGRpbmctbGVmdDogNHB0OwogIGxpbmUtaGVpZ2h0OiAyNXB4OwogIG1hcmdpbi1yaWdodDogMXB4OwogIGhlaWdodDogMTAwJTsKICB3aWR0aDogNTAuMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI2LDI2LDI2KTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHRyYW5zaXRpb246IHZhcigtLWhvdmVyLXRyYW5zaXRpb24tdGltZSk7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4OwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsKfQoKCgoud2lkZ2V0X3Rvb2x0aXAgewogIGZvbnQtZmFtaWx5OiAiVGFob21hIjsKICBmb250LXNpemU6IDhwdDsKICBjb2xvcjogcmdiKDIwNCwyMDQsMjYpOwogIG9wYWNpdHk6IDA7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGxpbmUtaGVpZ2h0OiAyNXB4OwogIHdpZHRoOiAxNXB4OwogIHRyYW5zaXRpb246IHZhcigtLWhvdmVyLXRyYW5zaXRpb24tdGltZSk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IC0xNTsKfQoKLndpZGdldF9jb250YWluZXI6aG92ZXIgLndpZGdldF90b29sdGlwIHsKICBvcGFjaXR5OiAwOwp9Cgoud2lkZ2V0X3Rvb2x0aXA6aG92ZXIgewogIGZvbnQtc2l6ZTogMTRwdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTEsNTEsNTEpOwp9Cgoud2lkZ2V0X2xhYmVsOmhvdmVyIHsKYmFja2dyb3VuZC1jb2xvcjogcmdiKDUxLDUxLDUxKTsKfQoKLndpZGdldF9sYWJlbDphY3RpdmUgewpiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTAyLDEwMiwxMDIpOwp9Cgoud2lkZ2V0X2JvZHkgewogIG1hcmdpbjogMHB0OwogIHBhZGRpbmc6IDBwdDsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDUwLjAlOwogIGRpc3BsYXk6IGZsZXg7Cn0KCi53aWRnZXRfaXRlbSB7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI2LDI2LDI2KTsKICBib3JkZXItd2lkdGg6MHB0OwogIG92ZXJmbG93OiBoaWRkZW47CiAgcG9zaXRpb246cmVsYXRpdmU7CiAgdHJhbnNpdGlvbjogdmFyKC0taG92ZXItdHJhbnNpdGlvbi10aW1lKTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7Cn0KCi53aWRnZXRfSXRlbUNob29zZXIgewogIGZvbnQtZmFtaWx5OiAiVGFob21hIjsKICBmb250LXNpemU6IDkuMHB0OwogIGNvbG9yOiByZ2IoMjE3LDIxNywyMTcpOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBsaW5lLWhlaWdodDogMjVweDsKICBwYWRkaW5nOiAwcHQ7CiAgaGVpZ2h0OiAxMDAlOwogIGZsZXg6IDAgMCAyNXB4OwogIGJhY2tncm91bmQtY29sb3I6IHJnYigyNiwyNiwyNik7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBib3JkZXItd2lkdGg6MHB0OwogIGJvcmRlci1zdHlsZTogc29saWQ7CiAgYm9yZGVyLWNvbG9yOiByZ2IoMTUzLDc3LDApOwogIG92ZXJmbG93OiBoaWRkZW47CiAgcG9zaXRpb246cmVsYXRpdmU7CiAgbWFyZ2luLWxlZnQ6IDFwdDsKICBtYXJnaW4tc'

RFE: Render Color params as colors

I'd be great if there was an option to render RGB and RGBA parameters as a single "big color preview square" without any value sliders. Imho in that mode the "..." could be removed as well and clicking on the color preview would open the dropdown color picker

RFE: radio buttons

Hello Lucas, amazing work with UberGui!

I know the architecture is to make an abstraction layer over the Custom Parameters of COMP's, and that the Radio button option is not available natively in TD Custom Pars, but.. what do you think? is it something we can hope for?

For what I see, the menu par type is a good candidate, it generates a list of buttons already in UberGui implementation. What would be nice is to have an option to render that list of buttons directly instead of being "inside" the menu

cheers,
Rui

There is some sort of cooking issue on launch that prevents any interaction.

On the multi-touch side there are a few problems. There is some sort of cooking issue on launch that prevents any interaction. Diving into the network fixes it, as does force cooking uberGUI with recurse=True. The multitouch is smooth for the left part of the screen, but the scrollbar works opposite to how one might expect it to.

Alternative page grouping views

Awesome! The ability to preserve tabbed pages vs the current function of appending them to a single scrollable UI would be helpful as well

Originally posted by @drmbt in #5 (comment)

Also would be cool to be able to collapse groups of parameters based on page. This would require some different html div grouping, or maybe something simpler in TD side of things.

Errors in touchscreen mode

open UberGui_V4_Release.toe

load simple thing

touch the RGB "..."

nothing happens

touch RGB "..." again

Traceback (most recent call last):
  File "/project1/container_UG_V4/delayed_double_click", line 4
  File "/project1/container_UG_V4/UG4", line 1321, in Trigger_DelayedDoubleClick
  File "/project1/container_UG_V4/field/field", line 24, in Launch_Delayed
td.Error: File "/project1/container_UG_V4/field/delayed_launch", line 12
  File "/project1/container_UG_V4/field/field", line 47, in Launch
td.AttributeError: 'td.ParCollection' object has no attribute 'Rgbr_cp' Context:/project1/simple_thing
Results of run operation resulted in exception.

uberGUI doesn't always update read-only parameters reliably

I've noticed that uberGUI doesn't always update read-only parameters reliably. I have a base with string parameters being updated by an extension, and while they dependably update at the base level, and if they are not read-only, when read-only is engaged I'm not seeing the feedback updating in the UG string parameter.

RFE: collapsable pages

would be really neat to be able to double click the header of each page to collapse / expand that page :)

TD network navigation trigger ubergui errors

Hey Lucas,

finally found time to check it out. Great job!

Small issue here:

Open the toe file and press "u" key to get out of project 1 then press "Enter" key

Traceback (most recent call last):
File "/project1/container_UG_V4/keyboardin_hotkeys_callbacks", line 23, in onKey
File "/project1/container_UG_V4/UG4", line 1396, in Trigger_Enter
File "/project1/container_UG_V4/field/field", line 100, in Set
AttributeError: 'NoneType' object has no attribute 'val'

Make option for color picker color square, to be full wide

the idea here would be a styling option in UberGui that lets us configure color params, to be a full wide color swatch, with no value sliders/fields.

this will require a refactor of the javascript mouse() function, or maybe a clever work around to avoid doing that might be hiding certain types of elements but still having them present in the html..

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.