spdegabrielle
2021-12-8 13:13:17

I’ve set the next one to 6pm utc to try capture americas and Europe


phillip
2021-12-8 23:14:48

nice, ty @alexharsanyi. Im struggling to understand how I can set custom length/width/top/left. I overrode the place-children but its not straight forward. If I add multiple items to a pane it throws errors. Yet, I can’t use this concept at the frame level to place the panes with a single control where I want.


alexharsanyi
2021-12-8 23:31:21

I don’t fully understand what you are trying to do, and maybe you already know this, but just in case, here are a few things to keep in mind:

place-children is a method on a container (panel% ) and it is used by the container to place its children inside its own area. It cannot be used by a widget to place itself anywhere it wants to. • there is a corresponding container-size method, which the container must provide, to inform its parent on how much area it needs from the parent To implement custom placement for items, you will need to create a new container where this custom placement takes place. Items are added to a container when a widget specifies the container as the parent field, and the order in which they are added is kept. Your container will probably need to have some set-widget-location method which stores the placement info for a widget inside the container. Than, container-size and place-children will need to use that information.

However, I am curious as to why do you want to implement this manual placement mode? This places the burden on the user to calculate appropiate sizes and location for each widget, and manually update those if they need to add another widget to the panel. I personally found it easier to have automatic layout, and just have to specify minimum dimensions and spacing/borders sizes between items….


phillip
2021-12-8 23:34:16

Thank you for this. Automatic layout does seem great but a bit of a paradigm shift from say java swing or vb where I can easily place controls based on top/left/width/height. If I want to dynamically render controls from positions stored in a db with that construct its hard to replicate with automatic layout.

I followed along with your approach here on how to do it. I was trying to leverage your place-children and just manually set the position but it didn’t take. I think I’m failing on the inputs/outputs to make it successful.


alexharsanyi
2021-12-8 23:40:07

What error did you get?


phillip
2021-12-9 00:37:56

container-redraw: result from place-children is not a list of length 2 (matching the input list length) whose elements are lists of length 4 of exact integers result: '((0 0 0 0)) context...: /Applications/Racket v8.3/collects/racket/private/map.rkt:267:2: gen-for-each [repeats 1 more time]


phillip
2021-12-9 00:39:01

Id be happy to pay for an example or donate to charity for anyone who can help me achieve this


alexharsanyi
2021-12-9 00:50:04

Place-children receives a list of desired item sizes and must return a list of item positions and sizes. Each item in the output list is itself a list with the x, y, width and height of the item. Also place-children must place all the children of the container, I.e it must output the same number of elements as it’s input list of items (this is what the error message means: you output the placement for a single item, instead of both the items added to the container)


zac
2021-12-9 01:11:45

@zac has joined the channel