Great to hear your first tests and experiments are moving along well. Like Edward said, I think it's a great idea and am looking forward to help you make it happen in the coming days :)
fun fact: While writing the server, i've always tried to make it client-agnostic and flexible, to encourage people to write clients for it: so i'm super happy about your idea about adding this mode of using Leo itself: as a client for remote usage! I've still to finish the update i'm currently making for nav & tag panes in leointeg, (big update coming soon) but i'm almost done, probably a day or two. ...then i'll try to make the the needed additions to leoserver (to accommodate your project) as I move forward this week. And play with it to try it out and make it work nicely with whatever helps make it work. I'm still pretty sure the send-whole-outline / receive-whole-outline kinda commands are pretty much what's missing on the server to make the whose thing work. Of course a better nomenclature and parameter names are to be chosen - (just throwing ideas out ) Eager to read your thoughts in this forum as you continue to try out things for those features in the meantime :) Félix On Sunday, March 13, 2022 at 11:59:38 PM UTC-4 [email protected] wrote: > @Edward suggested looking at Tom Brown's leocloud plugin, and I have done > that. It looks like classic Tom Brown work - a somewhat abstract but > relatively simple system, with just enough concrete instantiations to help > with getting experience and guiding future development. > > I don't see it as having direct relevance to this project, though it might > be useful as an adjunct. It can check to see if a file has changed on a > remote system, and restore it if desired. The file system instantiation > wouldn't work (as is) on the remote file system, and trying to go through > git would be cumbersome for what I'm trying to do. And you would still > have to transfer the file contents from machine to machine anyway. > > On Sunday, March 13, 2022 at 11:51:06 PM UTC-4 [email protected] wrote: > >> This works - the little client script together with the monkey-patched >> leoserver was able to transfer an outline from my desktop to the laptop. >> However, the outline wasn't actually getting inserted into the new >> outline. I had to actually go through that clipboard to make that happen. >> I don't understand that, but it seems like a minor matter. >> >> So we have the beginnings of a little system here. More error handling, >> the complementary save function, and a way to set and track the filename of >> the file so it can be saved from the remote to the right file on the host: >> then we'll be in business. >> >> What I like about this approach is its basic simplicity. Minor >> extensions to leoserver, which won't necessarily even require changes to >> leoserver.py itself, and a user-initiated script or two on the remote >> computer, nothing too complex, thanks to Felix's work on leoserver. We do >> need to have the user start the server on the host machine, but we can't >> avoid that unless we can get Leo to start a server on startup. I don't >> imagine we really want that, do we? But the user could write a batch file >> that starts both Leo and the server, with --persist of course. >> >> On Sunday, March 13, 2022 at 6:21:36 PM UTC-4 [email protected] wrote: >> >>> Continuing the previous discussion (Using a Leo Outline On Another >>> Computer? <https://groups.google.com/g/leo-editor/c/lbrgq0YBG-0>), we >>> don't even have to change leoserver. Instead, we can import it and monkey >>> patch it. Basically, import leo.core.leoserver, and then add the following: >>> >>> SetEncoder = leoserver.SetEncoder >>> InternalServerError = leoserver.InternalServerError >>> ServerError = leoserver.ServerError >>> TerminateServer = leoserver.TerminateServer >>> ServerExternalFilesController = leoserver.ServerExternalFilesController >>> LeoServer = leoserver.LeoServer >>> main = leoserver.main >>> leoserver.wsHost = "10.0.0.58" # If we want to change the default >>> >>> def send_outline(self, param): >>> filename = param.get('path', '') >>> result = '' >>> if filename and os.path.exists(filename): >>> with open(filename, encoding = 'utf-8') as f: >>> result = f.read() >>> >>> data = {"outline": result} >>> return self._make_response(data) >>> >>> LeoServer.send_outline = send_outline >>> >>> Of course, we could add other new methods the same way. This approach >>> works with my little test client. >>> >> -- You received this message because you are subscribed to the Google Groups "leo-editor" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/leo-editor/f7ece9f0-4bd6-4027-80f9-7fc323c3ac63n%40googlegroups.com.
