Thanks Patrick, Greg!

Hi everyone,

I have written a GNUmakefile. The main obstacle is the pasteboard functionality.

GNUstep implements the OpenStep/pre-10.5 OSX pasteboard (see the GNUstep docs <https://www.gnustep.org/resources/documentation/Developer/Gui/Reference/NSPasteboard.html> and the Apple docs <https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CopyandPaste/CopyandPaste.html>); I have no idea how it integrates with the system's clipboards. This pasteboard contains a single item, which may have multiple representations.

Modern macOS implements the post-10.6 OSX pasteboard (see the Apple docs <https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/PasteboardGuide106/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008099> - "Pasteboard Concepts" is the most important part), and OpenOutliner expects this to work. This pasteboard is a list of items (for example, if you copy a selection of a webpage which contains an image it should put a rich text and an image onto the pasteboard), each of which may have multiple representations. Additionally, it starts using Uniform Type Identifiers (UTIs) in order to refer to types rather than use the old pasteboard type strings (at least in 10.6 those old strings were still supported but were deprecated).

It looks kind of complicated to implement the new pasteboard API, so maybe we could try porting OpenOutliner to the old pasteboard API or temporarily disabling all the features which need the pasteboard. Do any of you have opinions on this?

The Uniform Type Identifiers framework, part of LaunchServices, seems to be implemented by Boron so we could probably do that. (However, that would make gnustep-gui depend on Boron, which may or may not be wanted.) We might want to implement in Boron the new Uniform Type Identifiers framework <https://developer.apple.com/documentation/uniformtypeidentifiers?language=objc> introduced in macOS 11 Big Sur, which is object-oriented (UTIs are of type `UTType*` rather than `NSString*`, and it provides an Objective-C API). Although OpenOutliner doesn't use the new UTI APIs, it would be useful to implement in case newer apps need it, and regardless it seems to be a cleaner API.

Thanks,

Ethan

On 4/25/25 08:01, Gregory Casamento wrote:
Ethan,

Mine is gcasa.  I would like to help a little if I can.  Also, expanding libs-xcode, if it needs it, to handle it.

Yours, GC

On Fri, Apr 25, 2025 at 4:11 AM Patrick Cardona <patrick.card...@ik.me> wrote:

    On 2025-04-24 18:50:21 +0200 Ethan C <echaroenpit...@gmail.com> wrote:

    Hello Ethan,

    > I started on the porting at
    https://github.com/ethanc8/OpenOutliner.

    Great!

    > You can
    > grep for "FIXME-GNUstep" for the things that don't work yet (the
    whole thing
    > doesn't compile yet). If you give me your GitHub username I can
    give you
    > commit access to my fork.

    Mine is: pcardona34

    >
    > On 4/24/25 08:14, Patrick Cardona wrote:
    >> Hello Ethan,
    >
    >> Thanks for this mention. I shall look at this.
    >
    >> On 2025-04-24 04:57:47 +0200 Ethan C <echaroenpit...@gmail.com>
    wrote:
    >
    >>> Hi everyone,
    >
    >>> David Chisnall recently mentioned on Lobsters
    >>>
    
<https://lobste.rs/s/btjtkr/what_software_do_you_dream_about_do_not#c_i2m53u>

    >>> a clone of OmniOutliner 3 he wrote in 2017, and said it would
    be easily
    >>> portable. Its source is on GitHub
    >>> <https://github.com/davidchisnall/OpenOutliner> if you want to
    look at it.
    >>>  From the README it looks like a decently complex application
    with lots
    >>> of functionality, so it could be quite useful to port it. See
    also Liam
    >>> Proven's comment about why he uses outliners
    >>>
    
<https://lobste.rs/s/btjtkr/what_software_do_you_dream_about_do_not#c_owdlc8>

    >>> to get an idea of what outliner users would want. I might take
    up this at
    >>> some point, but I doubt it as I am quite busy and have too
    many side
    >>> projects already :)
    >
    >>> Thanks,
    >
    >>> Ethan Charoenpitaks
    >
    >
    >

-- Patrick Cardona - France
    MUA: GNUMail - Hardware: Raspberry Pi pi400 Model
    OS: Debian 12 (RPI-OS Lite) - Desktop: GSDE




--
Gregory Casamento
GNUstep Lead Developer / Black Lotus, Principal Consultant
http://www.gnustep.org - http://heronsperch.blogspot.com
https://www.patreon.com/bePatron?u=352392 - Become a Patron
https://www.openhub.net/languages/objective_c
https://www.gofundme.com/f/cacao-linux-a-gnustep-reference-implementation

Reply via email to