It is currently Sun Jun 30, 2024 5:43 am


All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 13 posts ] 
Author Message
 Post subject: Modify "Save as+export script to prevent overwriting
PostPosted: Sat Dec 08, 2012 1:33 pm  (#1) 
Offline
GimpChat Member

Joined: Apr 12, 2010
Posts: 5870
I love this script make me spare a lot of time

Only problem
1) the script as default preserve and reuse the last name used to save AS +export
2) the script do not give warning but overwrite

The combination make easy overwrite files if distract, will be possible

1 ) Let pop out the warning about overwriting requiring to confirm

or even

2 ) automatically rename (ie adding to the name , if already used ,a prefix as a progressive number )

PLEASE NOTE even if are on the same file are 2 scripts, the first "save+ export" is fine as it is, it should overwrite with a updated version (this one works only on image already saved as XCF )

It is in the second script "Save AS + Export" that will be useful a warning about overwriting

Here the script
; save_and_export.scm
; by Rob Antonishen
; http://silent9.com

; Version 1.2 (20091005)

; Changes:
; v1.1 added messagebox handler
; v1.2 added second script to allow save of xcf files or save-as to allow specifying the xcf

; Description
; Saves the current XCF file as well as a png and jpg in the
; same directory with the same name  It uses the defaults for png and jpg
; and will overwrite any file already there.
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; GNU General Public License for more details.
;
; The GNU Public License is available at
; http://www.gnu.org/copyleft/gpl.html

(define (save-as-and-export img inLayer inDir inFileRoot exportpng? exportjpg?)
  (let*
    (
      (shortname (string-append inFileRoot ".xcf"))
      (fullname (string-append inDir DIR-SEPARATOR shortname))
      (realfullname (car (gimp-image-get-filename img)))
      (dupimage (car (gimp-image-duplicate img)))
      (temp 0)
     )

    ;save the xcf file
    (gimp-progress-set-text (string-append "Saving: " shortname))
    (gimp-xcf-save 0 img (car (gimp-image-get-active-drawable img)) fullname shortname)

    ;reload the xcf - this is necessary if the original file was not an xcf or if the filname/path was changed!
    (set! temp (car (gimp-file-load RUN-NONINTERACTIVE fullname shortname)))
    (gimp-displays-reconnect img temp)
    (gimp-image-clean-all temp)

    ;remove filename from fullname to get the path
    (set! fullname (substring fullname 0 (- (string-length fullname) (string-length shortname))))
     
    ;strip old extension
    (while (not (string=? (substring shortname (- (string-length shortname) 1)) "."))
      (set! shortname (substring shortname 0 (- (string-length shortname) 1)))
    )
    (set! shortname (substring shortname 0 (- (string-length shortname) 1)))
       
    (gimp-image-merge-visible-layers dupimage CLIP-TO-IMAGE)
       
    (when (equal? exportpng? TRUE)
      ;save the png file
      (gimp-progress-set-text (string-append "Saving: " (string-append shortname ".png")))
      (file-png-save-defaults RUN-NONINTERACTIVE dupimage (car (gimp-image-get-active-drawable dupimage))
                      (string-append fullname shortname ".png")
                      (string-append shortname ".png")))

    (when (equal? exportjpg? TRUE)
      ;save the jpeg file
      (gimp-progress-set-text (string-append "Saving: " (string-append shortname ".jpg")))
      (gimp-file-save RUN-NONINTERACTIVE dupimage (car (gimp-image-get-active-drawable dupimage))
                      (string-append fullname shortname ".jpg")
                      (string-append shortname ".jpg")))
           
    ;clean up
    (gimp-image-delete dupimage)
  )
)

(script-fu-register "save-as-and-export"
                  "<Image>/File/Save/Save-As XCF and Export..."
                     "Saves the current file as a specified XCF and exports a png and jpg as selected."
                     "Rob Antonishen"
                     "Rob Antonishen"
                     "Sept 2009"
                     "RGB* GRAY* INDEXED"
                     SF-IMAGE      "image"      0
                     SF-DRAWABLE   "drawable"   0
                SF-DIRNAME    "Save-as Directory" ""
                SF-STRING     "Save-as filename (without .xcf)" "filename"
                     SF-TOGGLE     "Export a png" TRUE
                     SF-TOGGLE     "Export a jpg" TRUE
)            

(define (save-and-export img inLayer exportpng? exportjpg?)
  (let*
    (
      (shortname (car (gimp-image-get-name img)))
      (fullname (car (gimp-image-get-filename img)))
      (handler (car (gimp-message-get-handler)))
    )

    (gimp-message-set-handler MESSAGE-BOX)

    (if (= (string-length fullname) 0)
      (gimp-message "The file must be saved before a backup can be made.")
      (if (not (string-ci=? (substring shortname (- (string-length shortname) 4)) ".xcf"))
        (gimp-message "The file must be an xcf.")
        (save-as-and-export img inLayer
                        (substring fullname 0 (- (string-length fullname) (string-length shortname)))
                        (substring shortname 0 (- (string-length shortname) 4))
                        exportpng? exportjpg?)
      )
    )
    (gimp-message-set-handler handler)
  )
)

(script-fu-register "save-and-export"
                  "<Image>/File/Save/Save XCF and Export..."
                     "Re-saves the current XCF and exports a png and jpg as selected."
                     "Rob Antonishen"
                     "Rob Antonishen"
                     "Sept 2009"
                     "RGB* GRAY* INDEXED"
                     SF-IMAGE      "image"      0
                     SF-DRAWABLE   "drawable"   0
                     SF-TOGGLE     "Export a png" TRUE
                     SF-TOGGLE     "Export a jpg" TRUE
)

_________________
My 3D Gallery on Deviantart http://photocomix2.deviantart.com/
Main gallery http://www.flickriver.com/photos/photocomix-mandala/
Mandala and simmetry http://www.flickriver.com/photos/photocomix_mandala/

Image

Mrs Wilbress


Share on Facebook Share on Twitter Share on Orkut Share on Digg Share on MySpace Share on Delicious Share on Technorati
Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Mon Dec 10, 2012 6:53 am  (#2) 
Offline
GimpChat Member

Joined: Apr 12, 2010
Posts: 5870
:bump

_________________
My 3D Gallery on Deviantart http://photocomix2.deviantart.com/
Main gallery http://www.flickriver.com/photos/photocomix-mandala/
Mandala and simmetry http://www.flickriver.com/photos/photocomix_mandala/

Image

Mrs Wilbress


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Mon Dec 10, 2012 3:38 pm  (#3) 
Offline
Script Coder
User avatar

Joined: Apr 23, 2010
Posts: 1553
Location: not from Guildford after all
PhotoComix wrote:
1 ) Let pop out the warning about overwriting requiring to confirm

Not possible (with Script-fu).
PhotoComix wrote:
2 ) automatically rename (ie adding to the name , if already used ,a prefix as a progressive number )

Would you want both the XCF and PNG/JPG files renamed? Or the XCF overwritten and the PNG/JPG renamed? What if the XCF exists and the PNG/JPG does not, would still you want the PNG/JPG renamed? You need to provide more detail about what you want.

_________________
Any sufficiently primitive technology is indistinguishable from a rock.


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Tue Dec 11, 2012 4:37 pm  (#4) 
Offline
GimpChat Member

Joined: Apr 12, 2010
Posts: 5870
Quote:
Would you want both the XCF and PNG/JPG files renamed? Or the XCF overwritten and the PNG/JPG renamed?


I would like everything renamed, xcf, png and jpg

Quote:
What if the XCF exists and the PNG/JPG does not, would still you want the PNG/JPG renamed?


the other script (save+export) should be used in case the xcf does already exist, and to update/overwrite
Instead Save as+export should avoid to overwrite, so rename everything , this also if the jpg and png do not exist ,( because the identical name is good for search or organize the archives )
(

_________________
My 3D Gallery on Deviantart http://photocomix2.deviantart.com/
Main gallery http://www.flickriver.com/photos/photocomix-mandala/
Mandala and simmetry http://www.flickriver.com/photos/photocomix_mandala/

Image

Mrs Wilbress


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Tue Dec 11, 2012 6:11 pm  (#5) 
Offline
Global Moderator
User avatar

Joined: Nov 16, 2011
Posts: 5128
Location: Metro Vancouver, BC
If you worry about an overwrite with "Save-As XCF and Export", uncheck "Export a png" and "Export a jpg" (use as default). This way you cannot overwrite or duplicate unless you choose.

_________________
Image
Gimp 2.8.18, Linux, median user
Gimp Chat Tutorials Index
Spirit Bear (Kermode)


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Tue Dec 11, 2012 6:28 pm  (#6) 
Offline
GimpChat Member

Joined: Apr 12, 2010
Posts: 5870
i don't want overwrite not even the xcf i dont want overwrite nothing , i need to rename

i don't mind much the risk of a few superfluos copy instead i fear much delete work by accident
(and alas it happened with this script )

_________________
My 3D Gallery on Deviantart http://photocomix2.deviantart.com/
Main gallery http://www.flickriver.com/photos/photocomix-mandala/
Mandala and simmetry http://www.flickriver.com/photos/photocomix_mandala/

Image

Mrs Wilbress


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Wed Dec 12, 2012 4:28 am  (#7) 
Offline
Script Coder
User avatar

Joined: Apr 23, 2010
Posts: 1553
Location: not from Guildford after all
I will probably not have time to work on this until after the holidays and I would defer to RobA anyway as it is his script (I don't particularly enjoy working on other people's scripts). If nobody has provided a solution beforehand, contact me at the beginning of next year and I will address this.

_________________
Any sufficiently primitive technology is indistinguishable from a rock.


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Wed Dec 12, 2012 10:17 am  (#8) 
Offline
GimpChat Member

Joined: Apr 12, 2010
Posts: 5870
ok thanks !

_________________
My 3D Gallery on Deviantart http://photocomix2.deviantart.com/
Main gallery http://www.flickriver.com/photos/photocomix-mandala/
Mandala and simmetry http://www.flickriver.com/photos/photocomix_mandala/

Image

Mrs Wilbress


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Fri Dec 14, 2012 2:54 pm  (#9) 
Offline
Script Coder
User avatar

Joined: Jul 14, 2010
Posts: 697
(grumble - having server errors trying to reply..)

Have you considered using my backup working script instead? http://registry.gimp.org/node/14246

This script save a backup copy of your active image as [imagename-ext]-YYYY-MM-DD-HH-MM.xcfgz in the same directory as your active image everytime you call it, and leaves your existing file's name unchanged...

Or do you need the jpg/png export as well? It might be easier to just add that to the backup working script...

-Rob A>

_________________
Image
Fantasy Cartography and Mapping by RobA


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Fri Dec 14, 2012 4:48 pm  (#10) 
Offline
GimpChat Member

Joined: Apr 12, 2010
Posts: 5870
i need also the png\jpg export

_________________
My 3D Gallery on Deviantart http://photocomix2.deviantart.com/
Main gallery http://www.flickriver.com/photos/photocomix-mandala/
Mandala and simmetry http://www.flickriver.com/photos/photocomix_mandala/

Image

Mrs Wilbress


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Fri Dec 14, 2012 6:49 pm  (#11) 
Offline
GimpChat Member

Joined: Apr 12, 2010
Posts: 5870
Maybe a weird idea :
my problem is that the last name used to save is preserved and reused by default, would be no possible instead assign by default a different, random name ?

In any case the name proposed should be replaced , but a random name will avoid the risk of overwriting (at worst image will be saved7exported with a not hintful name )

_________________
My 3D Gallery on Deviantart http://photocomix2.deviantart.com/
Main gallery http://www.flickriver.com/photos/photocomix-mandala/
Mandala and simmetry http://www.flickriver.com/photos/photocomix_mandala/

Image

Mrs Wilbress


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Tue Dec 18, 2012 3:40 pm  (#12) 
Offline
Script Coder
User avatar

Joined: Jul 14, 2010
Posts: 697
Try this quick modification of the backup script. The only thing it does not do is delete the png and jpg files (if maxbackups is set to something other than 0):

; backup_working.scm
; by Rob Antonishen
; http://silent9.com

; Version 1.3 (20120301)

; Changes:
; 1.1 changes to use xcfgz compressed files
; 1.2 added option to limit the number of files backed up. 
; This has changed the naming convention to include the original extension
; 1.3 added option to also export a png and/or jpeg file

; Description
; Saves a backup copy as [imagename-ext]-YYYY-MM-DD-HH-MM.XCFGZ
; It will appear in the File menu.  and can easily accessed with Alt-F, B
; License:
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
; GNU General Public License for more details.
;
; The GNU Public License is available at
; http://www.gnu.org/copyleft/gpl.html

(define (backup-working img inLayer exportpng? exportjpg?)
  (let*
    (
      (timestamp (unbreakupstr
                   (append (list (number->string (+ 1900 (car (time))))) ; year
                           (map (lambda (x) (string-append (make-string (- 2 (string-length (number->string x))) #\0) (number->string x))) ; pad to two characters
                             (append (list  (+ 1  (cadr (time)))) (butlast (cddr (time)))))) "-")) ; month is 0 referenced when (time) returns it
      (filename "")
      (extension "")
      (dirname "")
      (dupimage (car (gimp-image-duplicate img)))
      (maxbackups 0)  ; Change this to define the number of backup files to keep!!!
      (filelist "")
   )
   
    ;;helper defines
    (define split
      (lambda (ls)
        (letrec ((split-h (lambda (ls ls1 ls2)
                            (cond
                              ((or (null? ls) (null? (cdr ls)))
                               (cons (reverse ls2) ls1))
                              (else (split-h (cddr ls)
                                      (cdr ls1) (cons (car ls1) ls2)))))))
          (split-h ls ls '()))))
         
    (define merge
      (lambda (pred ls1 ls2)
        (cond
          ((null? ls1) ls2)
          ((null? ls2) ls1)
          ((pred (car ls1) (car ls2))
           (cons (car ls1) (merge pred (cdr ls1) ls2)))
          (else (cons (car ls2) (merge pred ls1 (cdr ls2)))))))

    ;pred is the comparison, i.e. <= for an ascending numeric list, or
    ;string<=? for a case sensitive alphabetical sort,
    ;string-ci<=? for a case insensitive alphabetical sort,
    (define merge-sort
      (lambda (pred ls)
        (cond
          ((null? ls) ls)
          ((null? (cdr ls)) ls)
          (else (let ((splits (split ls)))
                  (merge pred
                    (merge-sort pred (car splits))
                    (merge-sort pred (cdr splits))))))))
                   
    (define get-n-items
      (lambda (lst num)
        (if (> num 0)
          (cons (car lst) (get-n-items (cdr lst) (- num 1)))
          '()))) ;'

   (define slice
     (lambda (lst start count)
        (if (> start 1)
          (slice (cdr lst) (- start 1) count)
          (get-n-items lst count))))
   
    ; It Starts Here....
    ;---------------------
    (if (= (string-length (car (gimp-image-get-filename img))) 0)
      (gimp-message "The file must be saved before a backup can be made.")
      (begin
        (set! filename (unbreakupstr (butlast (strbreakup (car (gimp-image-get-name img)) ".")) "."))
        (set! extension (car (last (strbreakup (car (gimp-image-get-name img)) "."))))
        (set! dirname (unbreakupstr (butlast (strbreakup (car (gimp-image-get-filename img)) DIR-SEPARATOR)) DIR-SEPARATOR))

        ;update progressbar text
        (gimp-progress-set-text (string-append "Backing up as: " filename "-" extension "-" timestamp ".xcfgz"))
       
        ;save file
        (gimp-xcf-save 0 dupimage (car (gimp-image-get-active-drawable dupimage))
          (string-append dirname DIR-SEPARATOR filename "-" extension "-" timestamp ".xcfgz")
          (string-append filename "-" extension "-" timestamp ".xcfgz"))
      
      ;flatten duplicate
      (gimp-image-merge-visible-layers dupimage CLIP-TO-IMAGE)

       (when (equal? exportpng? TRUE)
        ;save the png file
        (gimp-progress-set-text (string-append "Saving: " filename "-" extension "-" timestamp ".png"))
        (file-png-save-defaults RUN-NONINTERACTIVE dupimage (car (gimp-image-get-active-drawable dupimage))
         (string-append dirname DIR-SEPARATOR filename "-" extension "-" timestamp ".png")
         (string-append filename "-" extension "-" timestamp ".png")))

      (when (equal? exportjpg? TRUE)
        ;save the jpeg file
        (gimp-progress-set-text (string-append "Saving: " filename "-" extension "-" timestamp ".jpg"))
        (file-png-save-defaults RUN-NONINTERACTIVE dupimage (car (gimp-image-get-active-drawable dupimage))
         (string-append dirname DIR-SEPARATOR filename "-" extension "-" timestamp ".jpg")
         (string-append filename "-" extension "-" timestamp ".jpg")))
      )
    )
           
    ;clean up
    (gimp-image-delete dupimage)
   
    ;delete extra backups
    (when (> maxbackups 0)
      (set! filelist (merge-sort string<=? (cadr (file-glob (string-append dirname DIR-SEPARATOR filename "-" extension "-*.xcfgz") 0))))
      (set! filelist (slice filelist 0 (max (- (length filelist) maxbackups) 0)))
      (map (lambda (x) (file-delete x)) filelist)
    )   
  )
)

(script-fu-register "backup-working"
                  "<Image>/File/Save a _Backup"
               "Saves a backup copy as [imagename-ext]-YYYY-MM-DD-HH-MM.XCFGZ"
               "Rob Antonishen"
               "Rob Antonishen"
               "March 2012"
               "*"
               SF-IMAGE      "image"      0
               SF-DRAWABLE   "drawable"   0
                SF-TOGGLE     "Also export a png" FALSE
                  SF-TOGGLE     "Also export a jpg" FALSE
)            

_________________
Image
Fantasy Cartography and Mapping by RobA


Top
 Post subject: Re: Modify "Save as+export script to prevent overwriting
PostPosted: Thu Dec 20, 2012 1:33 pm  (#13) 
Offline
GimpChat Member

Joined: Apr 12, 2010
Posts: 5870
OOOPPSS ... i didn't see your post

installing now

_________________
My 3D Gallery on Deviantart http://photocomix2.deviantart.com/
Main gallery http://www.flickriver.com/photos/photocomix-mandala/
Mandala and simmetry http://www.flickriver.com/photos/photocomix_mandala/

Image

Mrs Wilbress


Top
Post new topic Reply to topic  [ 13 posts ] 

All times are UTC - 5 hours [ DST ]


   Similar Topics   Replies 
No new posts Attachment(s) Shortening mouse/keystrokes save/export script or method to implement?

41

No new posts Attachment(s) Batch export all opened images script for GIMP [Update]

13

No new posts Attachment(s) Prevent fit to page on print

1

No new posts Attachment(s) Prevent dialogs from undocking globally?

3

No new posts GMIC Montage - how to prevent resizing

2



* Login  



Powered by phpBB3 © phpBB Group