To be even more specific, most of what I do would have to do with NSCoding and storing NSAttributedString attributes—most of which are part of AppKit, not Foundation.
On Tue, Nov 3, 2020, at 5:39 PM, Gustavo Tavares wrote: > Confirming, I just need headless so that I have access to the AppKit > functions I call. > > I don’t need any output whatsoever. > > On Tue, Nov 3, 2020, at 5:22 PM, Gregory Casamento wrote: >> >> Gustavo, >> >> What is your true aim here? If having a "headless" application is all you >> really need, so that you have access to AppKit functions then that is pretty >> easy. You don't need to have a gui model (xib, nib, gorm, etc) attached to >> the application. >> >> I like the idea of a no-op or null backend as this might allow us some other >> freedoms with respect to testing. >> >> On Tue, Nov 3, 2020 at 3:53 PM Gustavo Tavares <[email protected]> >> wrote: >>> __ >>> Yes, Fred, Greg, >>> >>> This is exactly what I need and was looking at doing just that. I did some >>> no-op classes but I have very little experience with there system to do so >>> immediately. >>> >>> It doesn’t look like a lot of files but I might be wrong. There are a lot >>> of subtle interactions that I have already bumped into. >>> >>> For example, right now, I’m still working through the call to >>> +[NSProcessInfo initalizeWithArguments:count:environment:] (I think I have >>> the name right but I didn’t look it up on my phone. >>> >>> Calling this didn’t solve my problem immediately. >>> >>> As for testing it’s pretty wonderful. I already have some tests running by >>> enclosing them in a framework (Marcel WeiHer does this in MPWTest) >>> >>> The use case as a server backend is compelling too because you can save and >>> interact with User preferences for Font, Color, Theme, etc on the backend >>> just as you would on a frontend. >>> >>> >>> On Tue, Nov 3, 2020, at 4:19 PM, Gregory Casamento wrote: >>>> This is a really interesting notion. Would the no-op backend (I think we >>>> need a better name) be able to print, or output postscript? Would it be >>>> possible to use it for testing GUI in some way? >>>> >>>> GC >>>> >>>> >>>> On Tue, Nov 3, 2020 at 12:06 PM Fred Kiefer <[email protected]> wrote: >>>>> Your problem got me thinking. Would it help you if we offered a „no-op“ >>>>> backend for GNUstep? That is a backend where both the window and the >>>>> drawing system would be implemented as no-operations. >>>>> >>>>> We could try to get this done as a special GNUstep back configuration. >>>>> Most likely we could cheat here by reusing the gsc classes as a real >>>>> drawing backend, which of course would not draw but raise >>>>> subclassResponsibility:. That means we only need code for the >>>>> window/event part and a lot of configuration to switch all the extra >>>>> libraries off. >>>>> >>>>> Cheers, >>>>> Fred >>>>> >>>>> >>>>> > Am 03.11.2020 um 16:02 schrieb Gustavo Tavares <[email protected]>: >>>>> > >>>>> > Thank you! This is great. >>>>> > >>>>> > I think I'm going to make some sort of >>>>> > subclass—NSCommandLineApplication. >>>>> > >>>>> > I did implement some of the backend classes in a -doNothingMethod { ; } >>>>> > style: GSFontInfo / GSFontEnumerator. >>>>> > >>>>> > Previously I just tried running X11 and calling it a day—but that >>>>> > didn't work. So goes the rabbit hole... >>>>> > >>>>> > Looks like it will be fun though. Just gotta love Objective-C :) >>>>> > >>>>> > Gustabo >>>>> > >>>>> > >>>>> > On Mon, Nov 2, 2020, at 11:20 PM, Ivan Vučica wrote: >>>>> >> Based on >>>>> >> https://github.com/gnustep/libs-base/blob/3752016/Source/NSProcessInfo.m#L140-L154, >>>>> >> this comes from >>>>> >> https://github.com/gnustep/libs-base/blob/3752016/Source/NSProcessInfo.m#L919 >>>>> >> or >>>>> >> https://github.com/gnustep/libs-base/blob/3752016/Source/NSProcessInfo.m#L1021. >>>>> >> >>>>> >> If these were GUI apps, I’d recommend calling NSApplicationMain which >>>>> >> takes argc and argv and sorts this out for you – in fact, that’s >>>>> >> ideally exactly what you should do if you’re using any GUI methods. >>>>> >> You’re saying you’re using certain GUI classes on the server; if you >>>>> >> believe they will actually behave correctly in a server environment >>>>> >> without gnustep-back (not a given; hypothetically, NSColor could >>>>> >> heavily depend on Opal’s CGColorRef), you may be able to call >>>>> >> NSProcessInfo +initializeWithArguments:..., too. >>>>> >> >>>>> >> Otherwise study >>>>> >> https://github.com/gnustep/libs-gui/blob/0ccdb278d4cc8ad60f033892a5105e0532261838/Source/Functions.m#L63 >>>>> >> carefully, but don’t be surprised if lack of x11 breaks GUI classes. >>>>> >> You break it (into pieces), you get to pick up those pieces and glue >>>>> >> them together :) >>>>> >> >>>>> >> (Yes, I noticed you said you went ahead and removed some >>>>> >> backend-dependent code. This sounds like it’ll be a lot of fun…) >>>>> >> >>>>> >> Ivan Vučica >>>>> >> >>>>> >> From: Gustavo Tavares >>>>> >> Sent: Tuesday 3 November 2020 02:13 >>>>> >> To: GNUstep Discuss >>>>> >> Subject: What function sets up the GNUstep environment? >>>>> >> >>>>> >> >>>>> >> Hi! >>>>> >> >>>>> >> Was wondering what function sets up a GNUstep environemtnt? >>>>> >> >>>>> >> Getting this error: >>>>> >> >>>>> >> GNUSTEP Internal Error: >>>>> >> The private GNUstep function to establish the argv and environment >>>>> >> variables was not called. >>>>> >> >>>>> >> Mismatched library versions between GNUstep Foundation (base) and >>>>> >> AppKit >>>>> >> (gui) is most often the cause of this message. Please be sure you >>>>> >> are using known compatible versions and not a mismatched set. >>>>> >> Generally, >>>>> >> we recommend you use versions of base and gui which were released >>>>> >> together. >>>>> >> >>>>> >> For more detailed assistance, please report the error to >>>>> >> [email protected]. >>>>> >> >>>>> >> --- >>>>> >> >>>>> >> For context—I built a seperate framework that extracts some "GUI" >>>>> >> classes with the intention to use them semantically on a server. (Such >>>>> >> as NSImage, NSColor, NSFont...) >>>>> >> I already went through the business of overriding / deleting some of >>>>> >> the backend functions so that the classes would be "initalized" and >>>>> >> wouldn't need to be rendered to screen. >>>>> >> >>>>> >> Stuck here. >>>>> >> >>>>> >> Where should I look? >>>>> >> >>>>> >> >>>>> >> Thank you, >>>>> >> G >>>>> >>>>> >>>> >>>> >>>> -- >>>> Gregory Casamento >>>> GNUstep Lead Developer / OLC, Principal Consultant >>>> http://www.gnustep.org - http://heronsperch.blogspot.com >>>> https://www.patreon.com/bePatron?u=352392 - Become a Patron >>>> https://gf.me/u/x8m3sx - My GNUstep GoFundMe >>>> https://teespring.com/stores/gnustep - Store >>> >> >> >> -- >> Gregory Casamento >> GNUstep Lead Developer / OLC, Principal Consultant >> http://www.gnustep.org - http://heronsperch.blogspot.com >> https://www.patreon.com/bePatron?u=352392 - Become a Patron >> https://gf.me/u/x8m3sx - My GNUstep GoFundMe >> https://teespring.com/stores/gnustep - Store >
