Coder Social home page Coder Social logo

enviraldesign / td-ubergui Goto Github PK

View Code? Open in Web Editor NEW
70.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 Introduction

UberGui V4 ( TD 2021.12380 )

Supporting this work

If you want to support this project, and others like it please check out my patreon, and github sponsor pages on the right!

UberGui is a lightweight multi-threaded, webRender UI module for TouchDesigner projects. The aim is to solve the trifecta of challenges building UI's in TouchDesigner often poses: being fast, feature rich, and visually appealing.

Additionally, UberGui is built as a layer of abstraction directly on top of Custom Parameters, so you can use this in existing projects with little to no additional refactoring.

Fast, Beautiful, with TouchDesigner-centric features.

Performance

UberGui uses the webRender TOP in TD which runs a separate threaded instance of an embedded chromium browser. You can spawn many UG UI's and each will run independently of the main TouchDesigner TOE. Keeping your UI's from bogging down your real-time projects.

Both real time performance when many parameters are animated AND the speed in which a totally new ui is generated is very fast.

ubergui performance animated

ubergui performance slider

Resting performance is very low, just the cost of the web render TOP. NOTE: You can even disable the "Enable Thread" parameter, when you want to fully shut down the cook times of UG, for example when a certain window is not open, or part of the software not visible.

ubergui performance resting

Aesthetic

Since UberGui is built on html/css we have a massive array of pre existing tech and styling options to leverage to build out compelling UIs. For this tool, I've exposed many of these css styling variables to TD, through a custom parameter styles page. You can modify/expose as many others as you'd like very easily with the parameter injection find/replace method.

ubergui colors

You can also change the horizontal alignment of several elements from the styles page.

ubergui colors

Features

UberGui is built to layer directly on top of existing projects that utilize Custom Parameters, and is intended to be a visual and functional extension of that feature set in TouchDesigner.

That said, it does offer many additional ways to manipulate and set numerical values that can speed up workflows and improve the experience greatly. Those features are covered below.

Using UberGui

Initial Setup

The fastest way to get going is to just download the Tox file in this repo, and drag it into your project. If you haven't used UberGui before, I suggest cloning the entire repo or downloading a zip file, and opening the UberGui_V4_Release.toe file to see how to use it with examples.

Input Mode

UberGui supports operation via mouse, and via touchscreen. Switching is handled automatically in the background, so you can switch between them seamlessly.

Page Filtering

UberGui by default is looking for any custom parameter pages on your source object. If you have some custom pages you wish to have visible, and others not - you can use the other page filtering mode in the config page, which will only show pages named with all upper case characters.

ubergui page filtering

Scroll Speed

If scrolling or touch interactions are too fast or too slow, you can change the speed and acceleration below:

ubergui scroll speed


Adjusting Values via Sliders

You can adjust the value of any type of numerical parameter just dragging left and right. The min/max ranges of the parameter will determine the range. Menu parameters can also be treated like a slider.

ubergui slider adjustment


Manual Entry via Field

Double clicking on any field will launch an editable field that you can type values into. Most parameters have this ability, but some do not (like the Menu parameter).

ubergui field entry1

You may also tab to next for quick entry of several values either in a parameter tuple row or simply down the line. Each tab press will launch a field in the next parameter, if it supports a field.

ubergui tab through

You can also left click on any label, to automatically enter field entry mode for it's parameter (if supported).

ubergui field entry 2

You can also type in valid python expressions (in TD math is imported by default for us). These will not be set to the TD expression mode of the parameter, it will simply be evaluated when set.

ubergui field entry expr

You are able to evaluate expressions using many of the common measurement units as well (the assumed default unit cm).

ubergui field entry units


Scroll Wheel

Depending on where your mouse is inside the UI, the scroll wheel will perform one of two functions generally.

When scrolling inside a parameter slider on the right half of the UI, it will adjust the parameter value in increments ( ctrl and shift will scale the increments accordingly )

ubergui slider scroll

When scrolling on the left side of the UI, this will scroll vertically through your UI if there is a scroll bar.

ubergui slider scroll down


Parameter Reset

Right Clicking on any parameter label will reset the value to it's TD parameter set default.

right click reset


Auxiliary UI

Menu and Color parameters have special auxiliary UI that will launch over top of UberGui to make it easier to choose a value. You'll see the triple dot icon to the right when this is the case. (file and folder parameters use this icon as well, but they simply launch TouchDesigner's built in picker.)

ubergui aux ui

You can take advantage of the tool-tips overlay, if you include a table DAT in the source object, that contains descriptions of each parameter.

ubergui tooltips

This is also where you'd specify special functionality for certain types of parameters in the third and fourth columns.

ubergui override config


Touch Screen support

Touch Screens are supported as well, switching happens automatically as you use different inputs.

Scrolling is easy, just drag up and down on the left side of UberGui. You can also use the scrollbar in touch screen mode.

ubergui tooltips

Using a slider is simple, just drag left or right.

ubergui touch sliders

To reset a parameter tuplet to it's default value(s), just long press on the label. NOTE: You can change the global delay for long press in the config page of UG.

ubergui touch reset fields

To enter field mode, just quickly tap any field, or tap the parameter name to the left.

ubergui touch field entry2

ubergui touch field entry2


Other Features

Parameters that have read only enabled, or who's parameter mode is set to expression, export, or bind will show as follows, and not be editable via UberGui with the exception of Bound parameters.

ubergui read only

Disabled parameters will simply be excluded from the UI all together.

td-ubergui's People

Contributors

enviraldesign avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

td-ubergui's Issues

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.

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

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

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.

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'

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.

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!

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

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.

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)

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

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: 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

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: 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

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'

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.

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.

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?)

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

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..

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.

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

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

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

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?

2023 support?

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

RFE: collapsable pages

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

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)

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

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.