home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 106 / EnigmaAmiga106CD.iso / software / grafica / jpegtool / jpegtool.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1999-08-23  |  21.2 KB  |  722 lines

  1. /*
  2.   $VER: JpegToolGUI.rexx 1.4 (23.08.99) Nils Görs
  3. */
  4.  
  5.  
  6. /* Informationen über das Ausgabefenster      */
  7. LeftBorder   = 10    /*Abstand linker Rand    */
  8. TopBorder    = 300   /*Abstand vom oberen Rand*/
  9. OutPutWidth  = 640   /*Breite des Fensters    */
  10. OutPutHeight = 150   /*Höhe des Fensters      */
  11.  
  12.  
  13. StandardPath = "ram:"
  14. PrefsFile = "Sys:Prefs/Presets/jpegtool.prefs"
  15.  
  16. OPTIONS RESULTS
  17.  
  18. PARSE ARG PubScreen
  19.  
  20. IF PubScreen == "?" THEN DO
  21.  OPTIONS PROMPT "PUBSCREEN/K: "
  22.  PARSE PULL PubScreen
  23. END
  24.  
  25.  
  26. CALL _InitAll
  27.  
  28. /*
  29. ** Beschreibung der Applikation
  30. */
  31. appname     = 'JpegToolGUI'
  32. applongname = 'JpegTool - ©99 by Nils Görs'
  33. appinfo     = 'graphical user interface for JpegTool'
  34. appversion  = '1.4'
  35. apprelease  = '3'
  36. appdate     = '23.08.99'
  37.  
  38. Holder = Prefs.3
  39. IF Prefs.3 = 4 THEN Holder = Prefs.3 * 2
  40. IF Prefs.3 = 3 THEN Holder = Prefs.3 + 1
  41.  
  42. _maintags:
  43. windowtags = WindowID(1),
  44.              PubScreenName(PubScreen),
  45.              WindowBackfillFB,
  46.              WindowTitle(appname appversion),
  47.              QuickHelpOn(HelpBool),
  48.              BeginMenu('Project'),
  49.          MenuItemC('H_QuickHelp',100),
  50.              MenuItem('?_About',101) ItemBarlabel,
  51.              MenuItem('S_Save',103) ItemBarlabel,
  52.              MenuItem('Q_Quit',102),
  53.          BeginMenu('Edit'),
  54.          MenuItem('D_Reset to Defaults',201),
  55.          MenuItem('L_Last Saved',202),
  56.            'HorizGroupA Space VertGroupA Space',
  57.                'LineArray',
  58.             'BeginLine',
  59.                 Text3('_From: ') 'TRAT_ID 1',
  60.                 StringGadget('',1) 'TRAT_Value 255',
  61.                 QuickHelp("specifies the images to convert"),
  62.                 GetFileButton(2),
  63.                 QuickHelp("select a file."),
  64.                 GetDrawerButton(21),
  65.                 QuickHelp("select a directory (including subdirs!) to convert."||NL||"To convert a directory you don't need to give a"||NL||"pattern anymore. A new directory in the destination"||NL||"drawer _won't_ be created!"),
  66.             'EndLine',
  67.         'SpaceS',
  68.             'BeginLine',
  69.                 Text3('_To: ') 'TRAT_ID 3',
  70.                 StringGadget('',3) 'TRAT_Value 255',
  71.                 QuickHelp("specifies the destination file"),
  72.                 GetFileButton(4),
  73.                  GetEntryButton(41),
  74.                  QuickHelp('List of all supported variables/placeholders.'),
  75.             'EndLine',
  76.         'SpaceS',
  77.             'BeginLine',
  78.                 Text3('_Destdatatype: ') 'TRAT_ID 5',
  79.                 StringGadget('',5) 'TRAT_Value 255',
  80.                 QuickHelp("Tells the program to create a datatypes object"NL"from a jpeg stream. To create an ilbm picture specify"NL"picture.datatype. This option requires picture datatype v43"NL"and datatypes.library v45! And, of course, the specified"NL"subclass of picturedt must be v43 compatible and provide an encoder."),
  81.                 GetEntryButton(6),
  82.             'EndLine',
  83.         'Space',
  84.             'BeginLine',
  85.                 Text3("_Quality") 'TRAT_ID 7',
  86.                 SliderGadget(1,100,Prefs.1,7),
  87.                 QuickHelp("quality of the jpeg stream to create."),
  88.                 'Space',
  89.                 Text3(Prefs.1'%') 'TRAT_MinWidth 4 TRAT_ID 77',
  90.             'EndLine',
  91.         'SpaceS',
  92.             'BeginLine',
  93.                 Text3("_Smoothing") 'TRAT_ID 8',
  94.                 SliderGadget(0,100,Prefs.2,8),
  95.                 QuickHelp("smoothing factor of the jpeg stream to create (0 = no smoothing)"),
  96.                 'Space',
  97.                 Text3(Prefs.2'%') 'TRAT_MinWidth 3 TRAT_ID 88',
  98.             'EndLine',
  99.         'SpaceS',
  100.             'BeginLine',
  101.                 Text3("Scalede_nom") 'TRAT_ID 9',
  102.                 SliderGadget(1,4,Prefs.3,9),
  103.                 QuickHelp("scaling denominator when decompressing a jpeg image."NL"Denominators supported are 1 (default), 2, 4 and 8."NL"Eg. if you want to have an image that is halve of"NL"the size of the original one specify 2."),
  104.                 'Space',
  105.                 Text3('1:'Holder) 'TRAT_MinWidth 3 TRAT_ID 99',
  106.             'EndLine',
  107.         'SpaceS',
  108.             'BeginLine',
  109.                 Text3("Scalenum") 'TRAT_ID 13',
  110.                 SliderGadget(1,1,1,13),
  111.                 QuickHelp("scaling numerator when decompressing a jpeg image."NL"The jpeg code only supports a value of 1 (default) currently."),
  112.                 'Space',
  113.                 Text3('1'),
  114.             'EndLine',
  115.         'Space',
  116.         'EndArray',
  117. ,
  118. NamedFrameBox('Options'),        
  119.         'LineArray',                
  120.             'BeginLine',
  121.                 'SpaceB',
  122.                     Text3("D_ctmethod: ") 'TRAT_ID 14',
  123.                     CycleGadget(DCTMETHOD,Prefs.4-1,14),
  124.                     QuickHelp("allows to specify the dct method used for de-/encoding."NL"ISLOW: integer, slow, more accurate (default)."NL"IFAST: integer, fast, less accurate."NL"FLOAT: float, fast on fast machines, most accurate."),
  125.                 'SpaceB',
  126.                     Text3("_Blocksmoothing: ") 'TRAT_ID 10',
  127.                     CheckBox(10) 'TRAT_Value' Prefs.5,
  128.                     QuickHelp("do block smoothing when decompressing."),
  129.                 'SpaceB',
  130.                     Text3("_Progressive: ") 'TRAT_ID 11',
  131.                     CheckBox(11) 'TRAT_Value' Prefs.6,
  132.                     QuickHelp("create progressive jpeg."),
  133.                 'SpaceB',
  134.                     Text3("Flip_X: ") 'TRAT_ID 18',
  135.                     CheckBox(18) 'TRAT_Value' Prefs.10,
  136.                     QuickHelp("mirror horizontally"),
  137.                 'SpaceB',
  138.                     Text3("NoLayout: ") 'TRAT_ID 20',
  139.                     CheckBox(20) 'TRAT_Value' Prefs.12,
  140.                     QuickHelp("don't layout datatype image"),
  141.                 'SpaceB',
  142.             'EndLine',
  143.             'Space',
  144.             'BeginLine',
  145.                 'SpaceB',
  146.                     Text3("Qui_et: ") 'TRAT_ID 12',
  147.                     CheckBox(12) 'TRAT_Value' Prefs.9,
  148.                     QuickHelp("suppresses any message except error messages."),
  149.                 'SpaceB',
  150.                     Text3("_Grayscale: ") 'TRAT_ID 15',
  151.                     CheckBox(15) 'TRAT_Value' Prefs.7,
  152.                     QuickHelp("create grayscale image."),
  153.                 'SpaceB',
  154.                     Text3("F_orce: ") 'TRAT_ID 17',
  155.                     CheckBox(17) 'TRAT_Value' Prefs.8,
  156.                     QuickHelp("overwrite existing file(s)."),
  157.                 'SpaceB',
  158.                     Text3("Flip_Y: ") 'TRAT_ID 19',
  159.                     CheckBox(19) 'TRAT_Value' Prefs.11,
  160.                     QuickHelp("mirror vertically"),
  161.                 'SpaceB',
  162.                     Text3("ILBM: ") 'TRAT_ID 22',
  163.                     CheckBox(22) 'TRAT_Value' Prefs.13,
  164.                     QuickHelp("create ilbm picture"),
  165.                 'SpaceB',
  166.             'EndLine',
  167.         'Space',
  168.         'EndArray',
  169.         'Space',
  170.         Button("Con_vert",16),
  171.              'Space EndGroup Space EndGroup EndProject'
  172. /*
  173. ** Unterbrechungssignale
  174. */
  175.  
  176. SIGNAL ON break_c
  177. SIGNAL ON failure
  178. SIGNAL ON halt
  179. SIGNAL ON ioerr
  180. SIGNAL ON syntax
  181.  
  182. app = TR_CREATEAPP('TRCA_Name'     '"'appname'"',
  183.                    'TRCA_LongName' '"'applongname'"',
  184.                    'TRCA_Info'     '"'appinfo'"',
  185.                    'TRCA_Version'  '"'appversion'"',
  186.                    'TRCA_Release'  '"'apprelease'"',
  187.                    'TRCA_Date'     '"'appdate'"',
  188.                    'TAG_END')
  189.  
  190. IF app ~= '00000000'x THEN DO
  191.    window = TR_OPENPROJECT(app,windowtags)
  192.    WindowProject=C2D(window) /* zum Locken des Fensters bei About */
  193.    IF window ~= '00000000'x THEN DO
  194.       nummer = 0
  195.  
  196.       DO WHILE nummer = 0
  197.          CALL TR_WAIT(app,'')
  198.  
  199.          DO WHILE TR_HANDLEMSG(app,'event')
  200.  
  201. /******************
  202. *** CLOSEGADGET ***
  203. *******************/
  204.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN nummer = -1
  205.  
  206.  
  207.     IF event.trm_class = 'TRMS_ACTION' THEN DO
  208.         SELECT
  209.             WHEN event.trm_id = 16 THEN CALL _Convert
  210.  
  211.             WHEN event.trm_id = 21 THEN DO
  212.                 IF _DirRequest(InDir "Select source path") = 1 THEN DO
  213.                 CALL TR_SETATTRIBUTE(window,1,'TROB_String',Dirname.1)
  214.                 END
  215.             END
  216.  
  217.             WHEN event.trm_id = 2 THEN DO
  218.             infile = TR_GETATTRIBUTE(window,1,'TROB_String')
  219.             IF infile = " " THEN infile = "INFILE"
  220.                 IF _FileRequest(infile "Select source file") = 1 THEN DO
  221.                     Infile = filename.1
  222.                     CALL TR_SETATTRIBUTE(window,1,'TROB_String',Infile)
  223.                 END
  224.             END
  225.             WHEN event.trm_id = 4 THEN DO
  226.             outfile = TR_GETATTRIBUTE(window,3,'TROB_String')
  227.             IF outfile = " " THEN outfile = "OUTFILE"
  228.                 IF _FileRequest(outfile "Select destination file") = 1 THEN DO
  229.                     Outfile = filename.1
  230.                     CALL TR_SETATTRIBUTE(window,3,'TROB_String',Outfile)
  231.                 END
  232.             END
  233.             WHEN event.trm_id = 41 THEN CALL _FileTypes
  234.  
  235.             WHEN event.trm_id = 6 THEN DO
  236.                 NewDatatype = selectdatatypes()
  237.                 IF newdatatype ~= 0 THEN DO
  238.                     laenge=LENGTH(newDatatype)
  239.                     NewDataType=LEFT(NewDataType,Laenge-9)
  240.                     CALL TR_SETATTRIBUTE(window,5,'TROB_String',NewDataType)
  241.                 END
  242.             END
  243.  
  244.             WHEN event.trm_id  = 101 THEN CALL _About
  245.             WHEN event.trm_id  = 102 THEN DO
  246.                         Quit=TR_EasyRequest(app,"Really Quit?",,
  247.                                             "Yes|No","TREZ_Title Quit TREZ_LockProject" WindowProject)
  248.                         IF Quit == 1 THEN nummer=1
  249.                     END
  250.             WHEN event.trm_id = 103 THEN CALL _SavePrefs
  251.             WHEN event.trm_id = 201 THEN CALL _Reset2Defaults
  252.             WHEN event.trm_id = 202 THEN CALL _LastSaved
  253.         OTHERWISE
  254.             NOP
  255.         END
  256.     END
  257.  
  258.     IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
  259.         SELECT
  260.             WHEN event.trm_id = 7 THEN CALL TR_SETATTRIBUTE(window,77,'TRAT_Text',event.trm_data||"%")
  261.             WHEN event.trm_id = 8 THEN CALL TR_SETATTRIBUTE(window,88,'TRAT_Text',event.trm_data||"%")
  262.  
  263.             WHEN event.trm_id = 9 THEN DO
  264.                 IF event.trm_data = 4 THEN event.trm_data = event.trm_data * 2
  265.                 IF event.trm_data = 3 THEN event.trm_data = event.trm_data + 1
  266.                 CALL TR_SETATTRIBUTE(window,99,'TRAT_Text',"1:"||event.trm_data)
  267.             END
  268.             WHEN event.trm_id = 100 THEN DO
  269.                 HelpBool = TR_GETATTRIBUTE(window,100,'TRAT_VALUE')
  270.                 CALL TR_SETATTRIBUTE(window,0,'TRWI_QuickHelp',HelpBool)
  271.             END
  272.         OTHERWISE
  273.             NOP
  274.         END
  275.     END
  276. /* ENDE */
  277.          END
  278.       END
  279.       CALL TR_CLOSEPROJECT(window)
  280.    END
  281.    CALL TR_DELETEAPP(app)
  282. END
  283. EXIT(0)
  284.  
  285. _DirRequest:
  286. PARSE ARG DirPath Title
  287.  
  288. IF Dirpath = "" | Dirpath == "INDIR" | Dirpath = "OUTDIR" THEN Dirpath = standardpath
  289.  
  290.  
  291.             bool = ASL_RequestFile(window,DirName,,
  292.                 "ASLFR_PubScreenName" PubScreen,
  293.                 "ASLFR_InitialDrawer" DirPath,
  294.                 "ASLFR_TitleText" '"'||Title||'"',
  295.                 "ASLFR_DrawersOnly" TRUE)
  296. Args = "ALL"
  297. RETURN(bool)
  298.  
  299. _FileRequest:
  300. PARSE ARG CommandPath title
  301.  
  302. IF commandpath == "INFILE" | commandpath == "OUTFILE" | commandpath = "" THEN commandpath = standardpath
  303.  
  304.     CommandPath = RXTR_PATHPART(CommandPath)
  305.     IF CommandPath = "" THEN commandpath = standardpath
  306.  
  307.             bool = ASL_RequestFile(window,filename,,
  308.                 "ASLFR_PubScreenName" PubScreen,
  309.                 "ASLFR_InitialPattern" PatternList,
  310.                 "ASLFR_DoPatterns" 1,
  311.                 "ASLFR_InitialDrawer" CommandPath,
  312.                 "ASLFR_TitleText" '"'||Title||'"')
  313. RETURN(bool)
  314.  
  315.  
  316. _Convert:
  317.     InFile = TR_GETATTRIBUTE(window,1,'TROB_String')
  318.     OutFile = TR_GETATTRIBUTE(window,3,'TROB_String')
  319.     IF OutFile = "" | InFile = "" THEN RETURN
  320.  
  321.     DestDataType = TR_GETATTRIBUTE(window,5,'TROB_String')
  322.     IF DestDataType ~= "" THEN Args = "DTN="||Destdatatype
  323.  
  324.     CALL _GetValues
  325.  
  326.     IF Prefs.1 ~= 75 THEN Args = Args "Q="||Prefs.1        /* Quality */
  327.  
  328.     IF Prefs.2 ~= 0 THEN Args = Args "S="||Prefs.2        /* Smoothing */
  329.  
  330.     IF Prefs.3 ~= 1 THEN DO
  331.         IF Prefs.3 = 4 THEN Prefs.3 = Prefs.3 * 2
  332.         IF Prefs.3 = 3 THEN Prefs.3 = Prefs.3 + 1
  333.         Args = Args "SD="||Prefs.3        /* Scale */
  334.     END
  335.  
  336.     IF Prefs.4 ~= 1 THEN DO
  337.         wert = Prefs.4
  338.         Args = Args "DCT="||DCTMETHOD.wert        /* Methode */
  339.     END
  340.  
  341.     IF Prefs.5 = 1 THEN Args = Args "BS"            /* Block */
  342.  
  343.     IF Prefs.6 = 1 THEN Args = Args "P"            /* Progressive */
  344.  
  345.     IF Prefs.7 = 1 THEN Args = Args "GS"            /* GrayScale */
  346.     
  347.     IF Prefs.8 = 1 THEN Args = Args "FORCE"            /* Force */
  348.  
  349.     IF Prefs.9 = 1 THEN Args = Args "QUIET"            /* Quiet */
  350.  
  351.     IF Prefs.10 = 1 THEN Args = Args "FX"            /* FLIPX */
  352.     
  353.     IF Prefs.11 = 1 THEN Args = Args "FY"            /* FLIPY */
  354.     
  355.     IF Prefs.12 = 1 THEN Args = Args "NL"            /* NOLAYOUT */
  356.     
  357.     IF Prefs.13 = 1 THEN Args = Args "ILBM"            /* ILBM */
  358.  
  359.       CALL TR_LOCKPROJECT(window)
  360.     IF Quiet = 1 THEN ADDRESS COMMAND "jpegtool FROM="||InFile "TO="||OutFile Args
  361.     ELSE ADDRESS COMMAND "jpegtool FROM="||InFile "TO="||OutFile Args '<>CON:'LeftBorder'/'TopBorder'/'OutPutWidth'/'OutPutHeight'/converting.../SCREEN' PubScreen'/AUTO/CLOSE'
  362.       CALL TR_UNLOCKPROJECT(window)
  363. Args = ""
  364.     RETURN
  365.  
  366. /*
  367. *** Einstellungen speichern.
  368. */
  369. _SavePrefs:
  370.       CALL TR_LOCKPROJECT(window)
  371.     CALL _GetValues
  372.     IF RXTR_WRITEFILE(Prefsfile,Prefs) = 0 THEN DO
  373.         say "Save error!"
  374.       CALL TR_UNLOCKPROJECT(window)
  375.     RETURN
  376.     END
  377.  
  378.     CALL RXTR_READFILE(PrefsFile,Prefs)
  379.     Prefs2.0 = Prefs.0
  380.         DO i = 1 to Prefs2.0
  381.          Prefs2.i = Prefs.i
  382.     END
  383.       CALL TR_UNLOCKPROJECT(window)
  384. RETURN
  385.  
  386.  
  387. _Reset2Defaults:
  388.       CALL TR_LOCKPROJECT(window)
  389.     CALL _DefaultSettings
  390.     CALL _SetValues
  391.       CALL TR_UNLOCKPROJECT(window)
  392. RETURN
  393.  
  394. _LastSaved:
  395.       CALL TR_LOCKPROJECT(window)
  396.     DO i = 1 to Prefs2.0
  397.         Prefs.i = Prefs2.i
  398.     END
  399.     CALL _SetValues
  400.       CALL TR_UNLOCKPROJECT(window)
  401. RETURN
  402.  
  403.  
  404. _DefaultSettings:
  405.     Prefs.0 = 13
  406.     Prefs.1 = 75    /* Quality */
  407.     Prefs.2 = 0    /* Smoothing */
  408.     Prefs.3 = 1    /* Scale */
  409.     Prefs.4 = 1    /* Methode */
  410.     Prefs.5 = 0    /* Block */
  411.     Prefs.6 = 0    /* Progressive */
  412.     Prefs.7 = 0    /* GrayScale */
  413.     Prefs.8 = 0    /* Force */
  414.     Prefs.9 = 0    /* Quiet */
  415.     Prefs.10 = 0    /* FlipX */
  416.     Prefs.11 = 0    /* FlipY */
  417.     Prefs.12 = 0    /* NoLayout */
  418.     Prefs.13 = 0    /* ILBM */
  419. RETURN
  420.  
  421. _GetValues:
  422.     Prefs.0 = 13
  423.     Prefs.1 = TR_GETATTRIBUTE(window,7,'TRAT_Value')    /* Quality */
  424.     Prefs.2 = TR_GETATTRIBUTE(window,8,'TRAT_Value')    /* Smoothing */
  425.     Prefs.3 = TR_GETATTRIBUTE(window,9,'TRAT_Value')    /* Scale */
  426.     Prefs.4 = TR_GETATTRIBUTE(window,14,'TRAT_Value')+1    /* Methode */
  427.     Prefs.5 = TR_GETATTRIBUTE(window,10,'TRAT_Value')    /* Block */
  428.     Prefs.6 = TR_GETATTRIBUTE(window,11,'TRAT_Value')    /* Progressive */
  429.     Prefs.7 = TR_GETATTRIBUTE(window,15,'TRAT_Value')    /* GrayScale */
  430.     Prefs.8 = TR_GETATTRIBUTE(window,17,'TRAT_Value')    /* Force */
  431.     Prefs.9 = TR_GETATTRIBUTE(window,12,'TRAT_Value')    /* Quiet */
  432.     Prefs.10 = TR_GETATTRIBUTE(window,18,'TRAT_Value')    /* FlipX */
  433.     Prefs.11 = TR_GETATTRIBUTE(window,19,'TRAT_Value')    /* FlipY */      
  434.     Prefs.12 = TR_GETATTRIBUTE(window,20,'TRAT_Value')    /* NoLayout */      
  435.     Prefs.13 = TR_GETATTRIBUTE(window,22,'TRAT_Value')    /* ILBM */      
  436.     RETURN
  437.  
  438. _SetValues:
  439.     CALL TR_SETATTRIBUTE(window,7,'TRAT_Value',Prefs.1)    /* Quality */
  440.     CALL TR_SETATTRIBUTE(window,77,'TRAT_Text',Prefs.1"%")
  441.     CALL TR_SETATTRIBUTE(window,8,'TRAT_Value',Prefs.2)    /* Quality */
  442.     CALL TR_SETATTRIBUTE(window,88,'TRAT_Text',Prefs.2"%")
  443.     CALL TR_SETATTRIBUTE(window,9,'TRAT_Value',Prefs.3)    /* Scale */
  444.     CALL TR_SETATTRIBUTE(window,99,'TRAT_Text',"1:"Prefs.3)
  445.     CALL TR_SETATTRIBUTE(window,14,'TRAT_Value',Prefs.4-1)    /* Methode */
  446.     CALL TR_SETATTRIBUTE(window,10,'TRAT_Value',Prefs.5)    /* Block */
  447.     CALL TR_SETATTRIBUTE(window,11,'TRAT_Value',Prefs.6)    /* Progressive */
  448.     CALL TR_SETATTRIBUTE(window,15,'TRAT_Value',Prefs.7)    /* GrayScale */
  449.     CALL TR_SETATTRIBUTE(window,17,'TRAT_Value',Prefs.8)    /* Force */
  450.     CALL TR_SETATTRIBUTE(window,12,'TRAT_Value',Prefs.9)    /* Quiet */
  451.     CALL TR_SETATTRIBUTE(window,18,'TRAT_Value',Prefs.10)    /* FlipX */      
  452.     CALL TR_SETATTRIBUTE(window,19,'TRAT_Value',Prefs.11)    /* FlipY */
  453.     CALL TR_SETATTRIBUTE(window,20,'TRAT_Value',Prefs.12)    /* NoLayout */
  454.     CALL TR_SETATTRIBUTE(window,22,'TRAT_Value',Prefs.13)    /* ILBM */
  455.     RETURN
  456.  
  457. /*
  458. ** Select datatypes
  459. */
  460. selectdatatypes:
  461.  
  462. datatypeswindowtags = ,
  463.    WindowID(2),
  464.    WindowPosition('TRWP_MOUSEPOINTER'),
  465.    WindowTitle('Select datatypes'),
  466.    WindowFlags('TRWF_NOESCCLOSE'),
  467.    PubScreenName(pubscreen),
  468.    'VertGroupA',
  469.       'Space',
  470.       'HorizGroupA',
  471.          'Space',
  472.          ListSS('datatypes',201,0,0),
  473.          'Space',
  474.       'EndGroup',
  475.       'Space',
  476.       'HorizSeparator',
  477.       'Space',
  478.       'HorizGroupA',
  479.          'Space',
  480.          ButtonR('_USE',298),
  481.          ButtonE('_CANCEL',299),
  482.          'Space',
  483.       'EndGroup',
  484.       'Space',
  485.    'EndGroup EndProject'
  486.  
  487.    datatypeswindow = TR_OPENPROJECT(app,datatypeswindowtags)
  488.  
  489.    IF datatypeswindow ~= '00000000'x THEN DO
  490.       CALL TR_LOCKPROJECT(window)
  491.  
  492.       quitdatatypeswindow = FALSE
  493.  
  494.       DO WHILE ~quitdatatypeswindow
  495.          CALL TR_WAIT(app,'')
  496.  
  497.          DO WHILE TR_HANDLEMSG(app,'event')
  498.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN DO
  499.                quitdatatypeswindow = TRUE
  500.           selecteddatatypes = FALSE
  501.         END
  502.  
  503.             IF event.trm_class = 'TRMS_ACTION' THEN DO
  504.                IF event.trm_id = 298 THEN DO
  505.                   selecteddatatypes = datatypes.number
  506.                   quitdatatypeswindow = TRUE
  507.                END
  508.  
  509.                IF event.trm_id = 299 THEN DO
  510.                   quitdatatypeswindow = TRUE
  511.           selecteddatatypes = FALSE
  512.         END
  513.             END
  514.  
  515.             IF event.trm_class = 'TRMS_NEWVALUE' & event.trm_id = 201 THEN DO
  516.                number = event.trm_data+1
  517.  
  518.                IF BITAND(D2X(event.trm_qualifier),'0200'x) = '0200'x THEN DO
  519.                   selecteddatatypes = datatypes.number
  520.                   quitdatatypeswindow = TRUE
  521.                END
  522.             END
  523.          END
  524.       END
  525.  
  526.       CALL TR_CLOSEPROJECT(datatypeswindow)
  527.       CALL TR_UNLOCKPROJECT(window)
  528.    END
  529.  
  530.    RETURN(selecteddatatypes)
  531.  
  532. _InitAll:
  533. Args        = ""
  534. NL        = '0a'x
  535. TRUE        = 1
  536. FALSE        = 0
  537. HelpBool    = 0
  538. DCTMETHOD.0 = 3
  539. DCTMETHOD.1 = "ISLOW"
  540. DCTMETHOD.2 = "IFAST"
  541. DCTMETHOD.3 = "FLOAT"
  542.  
  543. PatternList = "#?(.jpg|.iff|.gif|.png)"    /* für Filerequester */
  544.  
  545. FileTypes.0 = 7
  546. FileTypes.1 = "%n (sourcename eg: %20n)"
  547. FileTypes.2 = "%nu (value of internal counter)"
  548. FileTypes.3 = "%w (width of the image.)"
  549. FileTypes.4 = "%h (height ...)"
  550. FileTypes.5 = "%d (depth  ...)"
  551. FileTypes.6 = "%sz (shortcut for %wx%hx%d)"
  552. FileTypes.7 = "%s (suffix without '.')"
  553.  
  554.    /*
  555.    ** Open libs
  556.    */
  557.  
  558.    IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
  559.       IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
  560.          quit('Cannot open tritonrexx.library!',10)
  561.  
  562.    IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
  563.       IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
  564.          quit('Cannot open rexxtricks.library!',10)
  565.  
  566.    IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
  567.       IF ~ADDLIB('rexxsupport.library',9,-30,0) THEN
  568.          quit('Cannot open rexxsupport.library!',10)
  569.  
  570.    /*
  571.    ** Set current dir
  572.    */
  573.  
  574.    PARSE SOURCE . . . script .
  575.    progdir = PATHPART(script)
  576.  
  577.    booll = LENGTH(progdir)
  578.    booli= LASTPOS(":",progdir)
  579.    boolh= LASTPOS("/",progdir)
  580.  
  581.   IF booli <= booll THEN progdir2=progdir||"/"
  582.   IF boolh == 0 THEN progdir2=progdir||"/"
  583.  
  584.    CALL PRAGMA('D',progdir)
  585.  
  586. /* Gibt es einen Parameter für den Bildschirm. Wenn nicht, dann wird
  587.    der Screen auf dem defaultPubScreen geöffnet. */
  588.  
  589. IF PubScreen == "" THEN
  590.    PubScreen = RXTR_GETDEFAULTPUBSCREEN()
  591. CALL RXTR_PUBSCREENTOFRONT(PubScreen)
  592.  
  593. bool = RXTR_GETDIR("sys:classes/DataTypes","#?.datatype",datatypes,'FILES','NAME')
  594. IF bool = 0 THEN datatypes.0 = 0
  595.         ELSE CALL RXTR_QSORT(datatypes,,"NOCASE",,)
  596.  
  597. IF EXISTS(PrefsFile) THEN DO
  598.             CALL RXTR_READFILE(PrefsFile,Prefs)
  599.             Prefs2.0 = Prefs.0
  600.             DO i = 1 to Prefs2.0
  601.              Prefs2.i = Prefs.i
  602.             END
  603.         END
  604.         ELSE CALL _DefaultSettings
  605.  
  606. RETURN
  607.  
  608. /*
  609. *** Fenster für die Dateivariable.
  610. */
  611. _FileTypes:
  612.  
  613. ende2 = 0
  614.  
  615. FileTypesTags = WindowID(3),
  616.         WindowPosition('TRWP_MOUSEPOINTER'),
  617.         WindowBackfillFB,
  618.         WindowTitle('variables & placeholders'),
  619.         WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
  620.         QuickHelpOn(HelpBool),
  621.          PubScreenName(Pubscreen),
  622.          'VertGroupA',
  623.           'Space',
  624.           'HorizGroupA',
  625.            'Space',
  626.             ListSel('FileTypes',301,0),
  627.             'Space',
  628.           'EndGroup',
  629.          'Space',
  630.          'HorizSeparator',
  631.          'Space',
  632.           'HorizGroupA',
  633.            'Space',
  634.            ButtonRE("Cancel",302),
  635.            'Space',
  636.          'EndGroup Space EndGroup EndGroup EndProject'
  637. FileTypesProject = TR_OPENPROJECT(app,FileTypestags)
  638.   IF FileTypesProject ~= '00000000'x THEN DO
  639.     CALL TR_LOCKPROJECT(window)
  640.  
  641.       DO WHILE ende2 ~= 1
  642.      DO WHILE TR_HANDLEMSG(app,'event3')
  643.  
  644.         IF event3.trm_class = 'TRMS_ACTION' THEN ende2 = 1 /* Cancel Gadget */
  645.  
  646.          IF event3.trm_class = 'TRMS_NEWVALUE' THEN DO
  647.         DirCheck = TR_GETATTRIBUTE(FileTypesProject,301,'TRAT_Value')+1
  648.         wert = TR_GETATTRIBUTE(FileTypesProject,301,'TRAT_Value')+1
  649.         IF wert <8 THEN lformattemplate=WORD(FileTypes.wert,1)
  650.                 ELSE lformattemplate = FileTypes.wert
  651.         oldTemplate=TR_GETATTRIBUTE(window,3,'TROB_STRING')
  652.         lformattemplate = WORD(lformattemplate,1)
  653.         lformattemplate = oldtemplate||lformattemplate
  654.         CALL TR_SETATTRIBUTE(window,3,'TROB_STRING',lformattemplate)
  655.         ende2 = 1
  656.              END
  657.          END
  658.       END
  659.   END
  660.  
  661.     CALL TR_UNLOCKPROJECT(window)
  662.     CALL TR_CLOSEPROJECT(FileTypesProject)
  663. RETURN
  664.  
  665. /*******************************************************************************
  666. ** Info über das Programm anzeigen
  667. *******************************************************************************/
  668. _About:
  669.    CALL TR_AUTOREQUEST(app,window,PubScreenName(PubScreen),
  670.          BeginRequester('About','TRWP_CENTERDISPLAY'),
  671.             'VertGroupA',
  672.                'Space',
  673.                CenteredText3(appname appversion '('||appdate||') (C) 1999 by Nils Görs <N.Goers@Art-Line.de>'),
  674.                'SpaceS',
  675.                CenteredText(appinfo),
  676.                'Space',
  677.                'HorizSeparator',
  678.                'SpaceS',
  679.                CenteredText3("This application uses:"),
  680.                'Space',
  681.                 CenteredText("'JpegTool' (C) by Stephan Rupprecht <stephan.rupprecht@gmx.de>"),
  682.                'SpaceS',
  683.                'HorizSeparator',
  684.                'Space',
  685.                CenteredText3('This program is using the 'Triton GUI creation system''),
  686.                'SpaceS',
  687.                CenteredText("'Triton' is (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de>"),
  688.                'Space',
  689.                'HorizSeparator',
  690.                'Space',
  691.                CenteredText3("This program also use 'tritonrexx.library'"),
  692.                'SpaceS',
  693.                'HorizGroupSC',
  694.                   'Space',
  695.                   TextN("'tritonrexx.library' is (C) by Jürgen Kohrmeyer <j_kohrmeyer@wilam.north.de>") 'TRAT_Flags TRTX_NOUNDERSCORE',
  696.                   'Space',
  697.                'EndGroup',
  698.                'Space',
  699.             'EndGroup',
  700.             'BeginRequesterGads',
  701.             CenteredButtonRE("Thanks",10000),
  702.          'EndRequester')
  703.    RETURN
  704.  
  705. /*******************************************************************************
  706. ** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
  707. *******************************************************************************/
  708.  
  709. break_c:
  710. failure:
  711. halt:
  712. ioerr:
  713. syntax:
  714.    SAY '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)
  715.    SAY SOURCELINE(sigl)
  716.  
  717.    IF app ~= '00000000'x THEN
  718.       CALL TR_DELETEAPP(app)
  719.  
  720.    EXIT(10)
  721. /*EOS*/
  722.