Re: command output from script-fu-server

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Hi,
>
> I have attached a small patch for script-fu-server that makes the
> server return to the clients the output of the commands executed, just
> like the script-fu-console does.
>
> Is the patch ok? Any chance to apply it the mainline? Should I make a
> bug-report and attach the patch to it?
>
> Thanx,
>
> Ionutz

This is great stuff. If we had had this a year ago, it would have
saved me a *lot* of ugly hacking about developing the client side
gimp-mode for Emacs. (If you wanna know, this was done by
wrapping the code to be sent
inside scheme code that wrote back to a file, with stuff such as
tracing and the various write and display functions not working).
The other implementation I did to interact with GIMP was with GIMP as
a subprocess as
a batch program; this is quite crude and does not work under that other OS
I have to use at work.

Attached is a small python program (my first) I wrote this morning that gives
a simple REPL interface to the script-fu server based on your
patch, you might want to use that for testing if your patch works. So
far it is going strong.

I very much like to see this one implemented, and am working on
rewriting parts of gimp-mode for Emacs to use this facility. Even
though the script-fu server apparently was not intended for actual
use, its usefulness at least for developing script-fu inside an editor
of choice
is greatly enhanced with these additions.

It is looking promising.

Regards,
Niels.

-- 
http://niels.kicks-ass.org
#!/usr/bin/env python
import sys
import optparse
from socket import *
p = optparse.OptionParser(version="%prog 0.1")
p.add_option ("-p", "--port", type="int")
p.add_option ("-s", "--server", type="string")
p.set_defaults(port=10008,
               server="127.0.0.1")
opt, args = p.parse_args()

s = socket(AF_INET, SOCK_STREAM)
s.connect((opt.server, opt.port))

print "Welcome to GimpClient, Version 0.1"
print "Connected to server", opt.server, 'on port', opt.port, '\n'
print 60 * "-"

while (1):
    inp = raw_input("> ")
    if (inp == ',quit'):
        s.close()
        exit()
    length = len(inp)
    if length > 65535:
        print 'Input too long'
    else:
        high = length / 256
        low = length % 256
        pre = "G" + chr(high) + chr(low) 
        s.send(pre + inp)

        magic = s.recv(1)[0]    
        error = ord(s.recv(1)[0])
        hbyte = ord(s.recv(1)[0])
        lbyte = ord(s.recv(1)[0])
        rlength = hbyte << 8 | lbyte
        tm = ''
        while (len(tm) < rlength):
            tm += s.recv(rlength - len(tm))
        print tm

s.close()
_______________________________________________
Gimp-developer mailing list
Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux