|
From: | Gregory Casamento |
Subject: | Re: What function sets up the GNUstep environment? |
Date: | Tue, 3 Nov 2020 16:42:52 -0500 |
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 <mucholove@fastmail.com> 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?GCOn Tue, Nov 3, 2020 at 12:06 PM Fred Kiefer <fredkiefer@gmx.de> 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 <mucholove@fastmail.com>:>> 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 bug-gnustep@gnu.org.>>>> --->>>> 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--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 Patronhttps://gf.me/u/x8m3sx - My GNUstep GoFundMe
[Prev in Thread] | Current Thread | [Next in Thread] |