;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME: ; imprime ; ; PURPOSE: ; visualise puis imprime eventuellement un fichier Postcript. ; depuis rhodes, le LODYC ou L''IPSL vers les imprimantes du LODYC ou ; de l''IPSL. si le ; fichier n''est pas ds le repertoire courant, on va voir s''il est ; sur gaya dans POSTSCRIPT, si oui, on se propose de le rammener. ; ; CATEGORY: ; traitement fichiers ; ; CALLING SEQUENCE: ; imprime [,nomfichier] ; ; INPUTS: ; ; nomfichier: nom du fichier a imprimer. si nomfichier n''est ; pas precise on prend le dernier postscript cree ds le ; repertoire courant. ; ; KEYWORD PARAMETERS: ; ; /TRANS:imprime -si on le desire- sur un transparant ; ; /NB: obsolete ; ; COMMON BLOCKS: ; common.pro ; ; SIDE EFFECTS: ; ; dans le cas ou le fichier est imprime, il y a possibilite de faire ; un archivage sur gaya ds le repertoire POSTSCRIPT. l''archivage se ; fait en fonction de la valeur de sauveps (variable globale) : ; sauveps=1 : achivage automatique ; sauveps=0 : on n''archive pas ; sauveps a une autre valeur: on demande si on veut archiver a ; chaque ps imprime. ; ; le nom du ps archive est le suivant: ; un numero lorsque le ps s''appelle idl.ps ; son nom ds les autres cas. ; ce nom et la date apparaissent en bas a gauche du ps (ainsi que la ; date de creation) ; ; Rq: avant d''etre envoye sur gaya le fichier est zippe. ; ; Dans le cas ou loginipsl est definit et la machipsl ne l''est ; pas, on passe par la liaison ATM (bcp plus rapide) pour rappatrier le ; fichier en local, sur le repertoire temporaire, avant de l''imprimer. ; ; RESTRICTIONS: verifier que rhodes est bien declare ds vos .rhosts en ; local. ; sur rhodes ds le .rhosts il faut : ; 192.168.111.64 ipsllogin ; a l''ipsl ds le .rhosts il faut : ; rhodes-atm idrislogin ; ; EXAMPLE: ; ; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr) ; 21/12/98 ; 25/8/19999 utilisation des widgets ; 8/9/1999 utilisation de cw_bgroup ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ PRO imprime_event, event @common ; quel est le type d''evenement? widget_control, event.id, get_uvalue=uval ; case sur le type d''evenement case uval.name OF ;------------------------------------------------------------ ; visualisation du Postscript ;------------------------------------------------------------ 'Visualiser':BEGIN if key_portrait EQ 1 then sens = 'portrait' ELSE sens = 'seascape' case event.value of 'Ghostview':spawn,'ghostview -a4 -quiet -'+sens+' '+psdir+uval.nomfich 'Ghostscript':spawn,'gs -sPAPERSIZE=a4 -q '+psdir+uval.nomfich 'Kghostview':spawn,'kghostview '+psdir+uval.nomfich endcase end 'Imprimer':BEGIN ;------------------------------------------------------------ ; sauvegarde eventuelle sur gaya, lorsque sauveps ne 0 et que le ; fichier vient d''etre cree ;------------------------------------------------------------ cd, current = olddir cd, psdir spawn,'which "ls"' , ls spawn,ls[n_elements(ls)-1]+' -t *ps' , nomps nomps=nomps[n_elements(nomps)-1] cd, olddir if sauveps NE 0 AND nomps[0] EQ uval.nomfich then begin ;------------------------------------------------------------ ; ds le cas ou sauveps ne 0 et ne 1 on pause une question pour savoir ; si on doit le sauver ;------------------------------------------------------------ if sauveps NE 1 then begin onsauve = report('Voulez-vous sauver le Postscript ?', /defaul_no, /question) if onsauve EQ 0 THEN GOTO, passauver endif ;------------------------------------------------------------ ; on change de nom qd le fichier s''appelle idl.ps ;------------------------------------------------------------ ; qd le fichier s''appelle idl.ps if uval.nomfich eq 'idl.ps' then begin ; on recupere le numero du dernier fichier sauvegarde restore,'derniernumps.dat' ; on lui change de nom : idl.ps en numero.ps spawn, 'cp '+psdir+uval.nomfich+' '+psdir+strtrim(numfichps, 1)+'.ps' nomfichgaya = strtrim(numfichps, 1)+'.ps' ; on incremente le numero numfichps = numfichps+1 save,numfichps,filename='derniernumps.dat' ENDIF ELSE nomfichgaya = uval.nomfich ;------------------------------------------------------------ ; on gzip, on envoie sur gaya ;------------------------------------------------------------ spawn, 'gzip '+psdir+nomfichgaya ; on zip spawn, 'maiaput '+psdir+nomfichgaya+'.gz POSTSCRIPT/'+nomfichgaya+'.gz' ; envoie sur gaya if uval.nomfich eq 'idl.ps' then spawn, '\rm '+psdir+nomfichgaya+'.gz' $ ; on efface le fichier zipe ELSE spawn, 'gunzip '+psdir+nomfichgaya+'.gz' ; on dezipe ;------------------------------------------------------------ endif passauver: ;------------------------------------------------------------ ; selection de l''imprimante ;------------------------------------------------------------ case event.value of 'Phaser 740 T26':imprimante = 'ph26' 'Phaser 740 trans T26':imprimante = 'ph26T' 'Phaser 740 R/V T26':imprimante = 'ph26RV' 'HP Laser Jet Tour 26':imprimante = 'hpl26' 'HP Laser Jet Tour 26 R/V':imprimante = 'hpl26RV' 'sparc T26':imprimante = 'sparc' 'Phaser 740 T15':imprimante = 'ph15' 'Phaser 740 trans T15':imprimante = 'ph15T' 'Phaser 740 R/V T15':imprimante = 'ph15RV' 'HP Laser Jet Tour 15':imprimante = 'hpl15' 'HP Laser Jet Tour 15 R/V':imprimante = 'hpl15RV' 'sparc T15':imprimante = 'sparc2' 'CX T15':BEGIN & imprimante = 'CX' & GOTO, lodyc & end 'CX-trans T15':BEGIN & imprimante = 'CXtrans' & GOTO, lodyc & END 'SUN IPSL':imprimante = 'SUN' 'QMS-IPSL':imprimante = 'QMS' 'QMS-trans-IPSL':imprimante = 'QMS-trans' ELSE: endcase ;------------------------------------------------------------ ; ou je suis ??? ;------------------------------------------------------------ spawn, 'hostname', hostname & hostname = hostname[n_elements(hostname)-1] if hostname EQ 'rhodes' then domainname = 'idris.fr' $ ELSE spawn, 'domainname', domainname domainname = domainname[n_elements(domainname)-1] if domainname NE 'lodyc.jussieu.fr' AND domainname NE 'ipsl.jussieu.fr' $ AND domainname NE 'idris.fr' then return if domainname EQ 'lodyc.jussieu.fr' then GOTO, lodyc ;------------------------------------------------------------ ; choix du reseau surlequel on renvoie : IPSL ou LODYC et ; specification du login, de la machine et du repertoire temporel ds ; les 2 cas ;------------------------------------------------------------ if domainname EQ 'ipsl.jussieu.fr' then begin machipsl = hostname spawn, 'whoami', loginipsl & loginipsl = loginipsl[n_elements(loginipsl)-1] endif if n_elements(loginipsl) NE 0 THEN BEGIN if loginipsl Eq '' THEN GOTO, lodyc login = loginipsl ; si on a un login a l''ipsl et que machipsl n''est pas stipule ; alors on utilise la liaison ATM entre perouse et rhodes. if n_elements(machipsl) EQ 0 then machine = '192.168.111.64' $ ELSE BEGIN if machipsl EQ '' then machine = '192.168.111.64' $ ELSE machine = machipsl+'.ipsl.jussieu.fr' ENDELSE reptemp = '/temp/'+login+'/' ENDIF ELSE BEGIN lodyc: if domainname EQ 'lodyc.jussieu.fr' then begin machlodyc = hostname spawn, 'whoami', loginlodyc & loginlodyc = loginlodyc[n_elements(loginlodyc)-1] endif if n_elements(loginlodyc) EQ 0 THEN BEGIN loginlodyc = xquestion('Quel est votre login au LODYC ?') ENDIF login = loginlodyc machine = machlodyc+'.lodyc.jussieu.fr' reptemp = '/usr/temp/'+login+'/' ; on change le nom des imprimantes qd on est sur le reseau du lodyc case imprimante of 'SUN':imprimante = 'sun-ipsl' 'QMS':imprimante = 'qms-ipsl' 'QMS-trans': imprimante = 'qmst-ipsl' ELSE: endcase ENDELSE ;------------------------------------------------------------ ; je suis deja sur le bon reseau ou il faut faire des rsh? ;------------------------------------------------------------ spawn, 'whoami', whoami & whoami = whoami[n_elements(whoami)-1] if whoami EQ login then BEGIN spawn,'lpr -P'+imprimante+' '+psdir+uval.nomfich spawn,'lpq -P'+imprimante+' -l', info ENDIF ELSE BEGIN ;------------------------------------------------------------ ; copie du Postscript sur le repertoire temporel a jussieu ;------------------------------------------------------------ spawn,'rcp '+psdir+uval.nomfich+' '+login+'@'+machine+':'+reptemp+'.' ;------------------------------------------------------------ ; impression puis destruction du Postscript ;------------------------------------------------------------ ; print, 'rsh '+machine+' -l '+login+' lpr -P'+imprimante+' '+reptemp+uval.nomfich spawn,'rsh '+machine+' -l '+login+' lpr -P'+imprimante+' '+reptemp+uval.nomfich ;------------------------------------------------------------ ; squate de l'imprimante utilisee ;------------------------------------------------------------ ; print, 'rsh '+machine+' -l '+login+' lpq -P'+imprimante+' -l' spawn,'rsh '+machine+' -l '+login+' lpq -P'+imprimante+' -l', info ; ENDELSE xdisplayfile, 'bidon', text = info, title = 'Info impression '+uval.nomfich $ , height = n_elements(info) < 24 widget_control, event.top, /destroy ; on tue le widget END 'quit':widget_control, event.top, /destroy ; on tue le widget endcase return end pro imprime,nomfichier,TRANS=trans, NB = nb ; thisOS = strupcase(strmid(!version.os_family, 0, 3)) CASE thisOS OF 'MAC':return 'WIN':return ELSE: ENDCASE ; @common ;------------------------------------------------------------ ; attribution du nom du fichier a imprimer ;------------------------------------------------------------ CASE N_PARAMS() OF 0: BEGIN cd, current = olddir cd, psdir spawn,'which "ls"' , ls spawn,ls[n_elements(ls)-1]+' -t *ps' , nomfich nomfich=nomfich[n_elements(ls)-1] cd, olddir END 1: nomfich=nomfichier else: BEGIN ras = report('Mauvais nombre de parametre dans l''appel de IMPRIME') return END endcase ;------------------------------------------------------------ ; on verifie que le fichier est ds le reertoire courant. ; si il n''y est pas et on va voir s''il est sur gaya. ;------------------------------------------------------------ quelsfichiers = findfile(psdir+nomfich) IF quelsfichiers[0] EQ '' THEN BEGIN ; il faut aller chercher le fichier sur gaya spawn, 'whoami', whoami ; login a l''idris ; le fichier zippe existe sur gaya ? spawn,'rsh '+whoami+'@gaya.idris.fr ls POSTSCRIPT/'+nomfich+'.gz', resultat if resultat[n_elements(resultat)-1] NE '' then BEGIN ; s''il existe on le rappatrie gaya = report('le postscript est archive sur gaya. faire le gayaget?', /question, /defualt_no) if gaya EQ 0 then return print, 'gayaget POSTSCRIPT/'+nomfich+'.gz '+nomfich+'.gz ...' spawn, 'gayaget POSTSCRIPT/'+nomfich+'.gz '+nomfich+'.gz' ; on le rappatrie sur rhodes spawn, 'gunzip '+nomfich+'.gz ' ; on le dezippe ENDIF ELSE BEGIN print, 'le fichier '+nomfich+' n''existe pas' print, 'le fichier '+nomfich+'.gz n''existe pas sur gaya ds le repertoire POSTSCRIPT' return ENDELSE ENDIF ;------------------------------------------------------------ ;------------------------------------------------------------ base = widget_base(/row, title = 'fichier Postscript: '+nomfich) rien = cw_bgroup(base, ['Kghostview', 'Ghostview', 'Ghostscript'], /frame, label_top = 'Visualiser' $ , uvalue = {name:'Visualiser', nomfich:nomfich}, /column, /return_name) rien = cw_bgroup(base, ['Phaser 740 T26','Phaser 740 trans T26', 'Phaser 740 R/V T26' $ , 'HP Laser Jet Tour 26', 'HP Laser Jet Tour 26 R/V' $ , 'sparc T26', 'Phaser 740 T15', 'Phaser 740 trans T15' $ , 'Phaser 740 R/V T15', 'CX T15', 'CX-trans T15'$ , 'HP Laser Jet Tour 15', 'HP Laser Jet Tour 15 R/V', 'sparc T15' $ , 'SUN IPSL', 'QMS-IPSL', 'QMS-trans-IPSL'], /frame $ , label_top = 'Imprimer', uvalue = {name:'Imprimer', nomfich:nomfich} $ , /column, /return_name) rien = widget_button(base,value='quit', uvalue={name:'quit'}) ;------------------------------------------------------------ ;execution de la fentre de base et des sous-fenetres widget_control,base,/realize ;------------------------------------------------------------ xmanager,'imprime',base, /no_block ;------------------------------------------------------------ return end