Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  nodelist  faq  login

PURGE COMPLETE.


programming / comp.lang.smalltalk.dolphin / Origins of FramingLayout?

SubjectAuthor
* Origins of FramingLayout?Joe Betz
`* Re: Origins of FramingLayout?danie...@gmail.com
 `* Re: Origins of FramingLayout?Joe Betz
  `* Re: Origins of FramingLayout?danie...@gmail.com
   `- Re: Origins of FramingLayout?Joe Betz

1
Subject: Origins of FramingLayout?
From: Joe Betz
Newsgroups: comp.lang.smalltalk.dolphin
Date: Thu, 21 Apr 2022 15:37 UTC
X-Received: by 2002:a05:620a:2552:b0:67b:32e2:2400 with SMTP id s18-20020a05620a255200b0067b32e22400mr2691qko.768.1650555437667;
Thu, 21 Apr 2022 08:37:17 -0700 (PDT)
X-Received: by 2002:a05:6870:348c:b0:e2:6df1:b1db with SMTP id
n12-20020a056870348c00b000e26df1b1dbmr4142321oah.33.1650555437421; Thu, 21
Apr 2022 08:37:17 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.smalltalk.dolphin
Date: Thu, 21 Apr 2022 08:37:17 -0700 (PDT)
Injection-Info: google-groups.googlegroups.com; posting-host=5.48.59.174; posting-account=P1X3VgoAAADgSty0b3mKYJl_KPjmW842
NNTP-Posting-Host: 5.48.59.174
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <789de3b8-1368-4090-bedc-58c4c5e4f7c8n@googlegroups.com>
Subject: Origins of FramingLayout?
From: joebet...@gmail.com (Joe Betz)
Injection-Date: Thu, 21 Apr 2022 15:37:17 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 8
View all headers
Does anyone know where FramingLayout originates from? Was it ported from another Smalltalk or another programming language, or is it original to Dolphin?

I'm trying to use it for laying out objects within a GdiplusDoubleBufferedView and having issues trying to extend its behavior, so I started formalizing it in Agda to better understand how it works. That got me curious about its history and whether there are other applications that are more similar to my use case that I could use as examples.


Subject: Re: Origins of FramingLayout?
From: danie...@gmail.com
Newsgroups: comp.lang.smalltalk.dolphin
Date: Fri, 22 Apr 2022 20:16 UTC
References: 1
X-Received: by 2002:a05:6214:ca3:b0:452:615a:76a0 with SMTP id s3-20020a0562140ca300b00452615a76a0mr3331946qvs.70.1650658604122;
Fri, 22 Apr 2022 13:16:44 -0700 (PDT)
X-Received: by 2002:a05:6808:21a1:b0:322:b5a1:b261 with SMTP id
be33-20020a05680821a100b00322b5a1b261mr7621660oib.211.1650658603843; Fri, 22
Apr 2022 13:16:43 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.smalltalk.dolphin
Date: Fri, 22 Apr 2022 13:16:43 -0700 (PDT)
In-Reply-To: <789de3b8-1368-4090-bedc-58c4c5e4f7c8n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:37a8:52b0:ad11:2337:b297:f7c9;
posting-account=T9QyoQoAAADOKeQdWgBWNEPoknBuEcQZ
NNTP-Posting-Host: 2600:1700:37a8:52b0:ad11:2337:b297:f7c9
References: <789de3b8-1368-4090-bedc-58c4c5e4f7c8n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1ca1e966-718e-4d94-97e8-3196a07660a8n@googlegroups.com>
Subject: Re: Origins of FramingLayout?
From: daniels...@gmail.com (danie...@gmail.com)
Injection-Date: Fri, 22 Apr 2022 20:16:44 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 19
View all headers
From the tiny bit I played with it a while ago, Apple's Auto Layout (in native Cocoa iOS/macOS applications) uses a similar but dramatically more powerful concept of constraints between the properties of views. On an implementation level it must be significantly more complicated, and may work very differently, I don't know, but I recall coming to Dolphin and recognizing FramingLayout as at least somewhat similar (then being disappointed at the comparative lack of flexibility...). I think Auto Layout would make for an excellent *aspirational* example, if perhaps not a practical target to fully emulate.

On Thursday, April 21, 2022 at 11:37:18 AM UTC-4, joeb...@gmail.com wrote:
Does anyone know where FramingLayout originates from? Was it ported from another Smalltalk or another programming language, or is it original to Dolphin?

I'm trying to use it for laying out objects within a GdiplusDoubleBufferedView and having issues trying to extend its behavior, so I started formalizing it in Agda to better understand how it works. That got me curious about its history and whether there are other applications that are more similar to my use case that I could use as examples.


Subject: Re: Origins of FramingLayout?
From: Joe Betz
Newsgroups: comp.lang.smalltalk.dolphin
Date: Sat, 23 Apr 2022 15:11 UTC
References: 1 2
X-Received: by 2002:a05:6214:c23:b0:446:64d2:260c with SMTP id a3-20020a0562140c2300b0044664d2260cmr7175207qvd.26.1650726675484;
Sat, 23 Apr 2022 08:11:15 -0700 (PDT)
X-Received: by 2002:a05:6870:d254:b0:db:12b5:da3 with SMTP id
h20-20020a056870d25400b000db12b50da3mr8290073oac.211.1650726675214; Sat, 23
Apr 2022 08:11:15 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.smalltalk.dolphin
Date: Sat, 23 Apr 2022 08:11:14 -0700 (PDT)
In-Reply-To: <1ca1e966-718e-4d94-97e8-3196a07660a8n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=5.48.59.174; posting-account=P1X3VgoAAADgSty0b3mKYJl_KPjmW842
NNTP-Posting-Host: 5.48.59.174
References: <789de3b8-1368-4090-bedc-58c4c5e4f7c8n@googlegroups.com> <1ca1e966-718e-4d94-97e8-3196a07660a8n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ed6fee0b-fd6b-4b1f-933b-1295071ac2d4n@googlegroups.com>
Subject: Re: Origins of FramingLayout?
From: joebet...@gmail.com (Joe Betz)
Injection-Date: Sat, 23 Apr 2022 15:11:15 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 15
View all headers
I think Auto Layout would make for an excellent *aspirational* example, if perhaps not a practical target to fully emulate.

Yes, thank you! That's exactly what I needed. Because now it's obvious both what I want and why FramingLayout isn't it.

I was trying to extend FramingLayout to be able to express things like "the bottom frame of X is equal to the height of its content" and "the top frame of X is the bottom frame of Y" and not coming up with satisfying solutions with the existing mechanisms. I did some research on Apple's Auto Layout and even though it's closed source there seems to be plenty of the underlying constraint solving algorithm, including an implementation in Squeak, which looks far more sane than what I was doing.

Now I'm left in that bittersweet state of having a clear idea of what I want and a whole new domain to learn in order to implement it. :}


Subject: Re: Origins of FramingLayout?
From: danie...@gmail.com
Newsgroups: comp.lang.smalltalk.dolphin
Date: Sun, 24 Apr 2022 20:21 UTC
References: 1 2 3
X-Received: by 2002:a05:6214:27e5:b0:44f:6273:c2f3 with SMTP id jt5-20020a05621427e500b0044f6273c2f3mr10623274qvb.127.1650831677132;
Sun, 24 Apr 2022 13:21:17 -0700 (PDT)
X-Received: by 2002:a05:6808:168b:b0:2f7:338b:7a55 with SMTP id
bb11-20020a056808168b00b002f7338b7a55mr11646331oib.133.1650831676860; Sun, 24
Apr 2022 13:21:16 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.smalltalk.dolphin
Date: Sun, 24 Apr 2022 13:21:16 -0700 (PDT)
In-Reply-To: <ed6fee0b-fd6b-4b1f-933b-1295071ac2d4n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:37a8:52b0:19cd:3b23:6c4a:c1cf;
posting-account=T9QyoQoAAADOKeQdWgBWNEPoknBuEcQZ
NNTP-Posting-Host: 2600:1700:37a8:52b0:19cd:3b23:6c4a:c1cf
References: <789de3b8-1368-4090-bedc-58c4c5e4f7c8n@googlegroups.com>
<1ca1e966-718e-4d94-97e8-3196a07660a8n@googlegroups.com> <ed6fee0b-fd6b-4b1f-933b-1295071ac2d4n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <58e5f6ea-35d2-458b-805a-768b37fae97en@googlegroups.com>
Subject: Re: Origins of FramingLayout?
From: daniels...@gmail.com (danie...@gmail.com)
Injection-Date: Sun, 24 Apr 2022 20:21:17 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
View all headers
Because now it's obvious both what I want and why FramingLayout isn't it.

That was pretty much my reaction to FramingLayout, having already seen Auto Layout, yes :).

express things like "the bottom frame of X is equal to the height of its content"

I actually did this—there is already a "preferred extent" mechanism (see #usePreferredExtent, #preferredExtent, #calculateExtent:), which the simpler LayoutManagers "propagate" correctly (that is, a container's preferred extent is based on its contents). It isn't particularly difficult to add #preferredView{Top|Right|Bottom|Left} modes to FramingConstraints—analogous to #fixedViewWhatever but based on the preferredExtent. I'll have to see about contributing those changes at some point, along with filling in some gaps in controls knowing how to calculate their preferredExtent. Note that FramingLayout itself I believe does *not* know how to calculate the preferred extent of its own container, so you can only have one level of it and have everything calculate nicely.

"the top frame of X is the bottom frame of Y"

This is halfway possible as long as X and Y are immediate siblings (a View's collection of subviews is ordered, this is baked in to Win32)—there's a #fixedPrevious{Top|Right|Bottom|Left} constraint. However it can only propagate forwards, not backwards (there is no #fixedNextWhatever), and more complex interrelationships are not possible. This is the point at which the problem outgrows FramingLayout's simple, single-pass algorithm, and a proper constraint solver like Auto Layout becomes necessary.

On Saturday, April 23, 2022 at 11:11:15 AM UTC-4, joeb...@gmail.com wrote:
I think Auto Layout would make for an excellent *aspirational* example, if perhaps not a practical target to fully emulate.
Yes, thank you! That's exactly what I needed. Because now it's obvious both what I want and why FramingLayout isn't it.

I was trying to extend FramingLayout to be able to express things like "the bottom frame of X is equal to the height of its content" and "the top frame of X is the bottom frame of Y" and not coming up with satisfying solutions with the existing mechanisms. I did some research on Apple's Auto Layout and even though it's closed source there seems to be plenty of the underlying constraint solving algorithm, including an implementation in Squeak, which looks far more sane than what I was doing.

Now I'm left in that bittersweet state of having a clear idea of what I want and a whole new domain to learn in order to implement it. :}


Subject: Re: Origins of FramingLayout?
From: Joe Betz
Newsgroups: comp.lang.smalltalk.dolphin
Date: Thu, 26 May 2022 01:20 UTC
References: 1 2 3 4
X-Received: by 2002:ac8:7e90:0:b0:2fa:f5f6:d0c4 with SMTP id w16-20020ac87e90000000b002faf5f6d0c4mr4745806qtj.635.1653528038999;
Wed, 25 May 2022 18:20:38 -0700 (PDT)
X-Received: by 2002:a05:6870:430d:b0:f2:d28b:3444 with SMTP id
w13-20020a056870430d00b000f2d28b3444mr612571oah.211.1653528038700; Wed, 25
May 2022 18:20:38 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!news.mixmin.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.smalltalk.dolphin
Date: Wed, 25 May 2022 18:20:38 -0700 (PDT)
In-Reply-To: <58e5f6ea-35d2-458b-805a-768b37fae97en@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:861:51c3:bae0:8842:ea09:98ad:5b74;
posting-account=P1X3VgoAAADgSty0b3mKYJl_KPjmW842
NNTP-Posting-Host: 2001:861:51c3:bae0:8842:ea09:98ad:5b74
References: <789de3b8-1368-4090-bedc-58c4c5e4f7c8n@googlegroups.com>
<1ca1e966-718e-4d94-97e8-3196a07660a8n@googlegroups.com> <ed6fee0b-fd6b-4b1f-933b-1295071ac2d4n@googlegroups.com>
<58e5f6ea-35d2-458b-805a-768b37fae97en@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <75c6fafa-2086-40f5-a7be-5d049e3b08can@googlegroups.com>
Subject: Re: Origins of FramingLayout?
From: joebet...@gmail.com (Joe Betz)
Injection-Date: Thu, 26 May 2022 01:20:38 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
View all headers
On Sunday, April 24, 2022 at 10:21:17 PM UTC+2, danie...@gmail.com wrote:
Because now it's obvious both what I want and why FramingLayout isn't it.
That was pretty much my reaction to FramingLayout, having already seen Auto Layout, yes :).

It was actually really really easy to integrate Auto Layout into my UI framework. I mean stupidly easy. It was basically filing in the Squeak implementation, making a few tweaks for Dolphin, then building up a layout DSL on top of the primitives. It only took maybe an hour or two tops, and now I can say things like `title above: lastMessage; leftAlign: lastMessage; maxHeight: 30`. It's wonderful.

It's also infuriating to think that this solution has existed for literal decades and only Apple has bothered to use it. I mean, it's just rectangles on a 2D layout, it's really not that complicated. And certainly not 1/100th as complicated as HTML/CSS make it seem.

The only thing you lose by ditching Dolphin's Layout system is the ability for a non-programmer to fiddle with things. But so what? That's basically the justification for Java / Smalltalk--, allowing non-programmers to fiddle with software. <disgust>



1
rocksolid light 0.7.2
clearneti2ptor