home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Programming / RxMUI / Examples / warpJPEG.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2001-05-24  |  17.4 KB  |  448 lines

  1. /* WarpJPEG.rexx
  2. Goal:     GUI di configurazione per WarpJPEG.datatype
  3. Version:  1.0
  4. Date:     8.5.2001
  5. Author:   Alfonso Ranieri
  6. */
  7.  
  8. signal on halt
  9. signal on break_c
  10.  
  11. call Init()
  12. call CreateApp()
  13. call HandleApp()
  14. /* never reached */
  15. /***********************************************************************/
  16. Init: procedure expose global.
  17.     l="rmh.library";if ~show("L",l) then;if ~AddLib(l,0,-30) then exit
  18.     if AddLibrary("rxmui.library")~=0 then exit
  19.     call RxMUIOpt("DebugMode ShowErr")
  20.     global.test=0
  21.     return
  22. /***********************************************************************/
  23. HandleApp: procedure expose global.
  24.     ctrl_c=2**12
  25.     do forever
  26.         call NewHandle("app","h",ctrl_c)
  27.         if and(h.signals,ctrl_c)~=0 then call SafeExit()
  28.         if h.EventFlag then
  29.             select
  30.                 when h.event="QUIT" then call SafeExit()
  31.                 otherwise interpret h.event
  32.             end
  33.     end
  34.     /* never reached */
  35. /***********************************************************************/
  36. CreateApp: procedure expose global.
  37.  
  38.     mstrip.0="mproject"
  39.      mproject.Class="menu"
  40.      mproject.Title="Project"
  41.       mproject.0=MenuItem("mabout","About...","?")
  42.       mproject.1=MenuItem("maboutrxmui","About RxMUI...")
  43.       mproject.2=MenuItem("maboutmui","About MUI...")
  44.       mproject.3=MenuItem("","BAR")
  45.       mproject.4=MenuItem("mhide","Hide","H")
  46.       mproject.5=MenuItem("","BAR")
  47.       mproject.6=MenuItem("mquit","Quit","Q")
  48.     mstrip.1="meditor"
  49.      meditor.Class="menu"
  50.      meditor.Title="Editor"
  51.       meditor.0=MenuItem("mdefault","Reset to defaults","D")
  52.       meditor.1=MenuItem("mlast","Last saveds","L")
  53.       meditor.2=MenuItem("mrestore","Restore","R")
  54.       meditor.3=MenuItem("","BAR")
  55.       meditor.4=MenuItem("mmui","MUI...")
  56.     if NewObj("menustrip","mstrip")>0 then exit
  57.  
  58.     app.title="WarpJPEG"
  59.     app.version="$VER: WarpJPEG 1.0 (8.5.2001)"
  60.     app.copyright="Copyright 2001 Alfonso Ranieri"
  61.     app.author="Alfonso Ranieri"
  62.     app.description="Manages WarpJPEG preferences"
  63.     app.base="WarpJPEG"
  64.     app.MenuStrip="mstrip"
  65.     app.SubWindow="mwin"
  66.  
  67.      mwin.title="WarpJPEG Preferences"
  68.      mwin.ID="MAIN"
  69.      mwin.contents="mgroup"
  70.  
  71.       mgroup.0="hg"
  72.        hg.Class="group"
  73.        hg.Horiz=1
  74.        hg.Spacing=2
  75.  
  76.        hg.0="hlister"
  77.         hlister.Class="listview"
  78.         hlister.FixWidthTxt="123456789012"
  79.         hlister.list="entries"
  80.           entries.Frame="InputList"
  81.           entries.Names="WarpDT,JPEG"
  82.  
  83.        hg.1="hpager"
  84.         hpager.Class="group"
  85.         hpager.PageMode=1
  86.         hpager.Frame="ReadList"
  87.         hpager.Background="PageBack"
  88.  
  89.          hpager.0="warpdt"
  90.           warpdt.Class="group"
  91.            warpdt.0=VSpace()
  92.            warpdt.1="OS3.5Dith"
  93.             OS3.5Dith.Class="group"
  94.             OS3.5Dith.Frame="Group"
  95.             OS3.5Dith.FrameTitle="OS3.5 Dithering"
  96.             OS3.5Dith.Background="GroupBack"
  97.             OS3.5Dith.Columns=2
  98.              OS3.5Dith.0=Label("_Override")
  99.              OS3.5Dith.1=MakeObj("DITHER_OVERRIDE","Cycle","Nothing|Defaults Only|Applications Only|Everything","o",1)
  100.              OS3.5Dith.2=Label("_Quality")
  101.              OS3.5Dith.3=MakeObj("DITHER_QUALITY","Cycle","Poor (Fast)|Good (Slow)|Best (Slow)","q")
  102.              OS3.5Dith.4=Label("Depth _filter")
  103.              OS3.5Dith.5=MakeObj("DITHER_DEPTH","slider",'f',1,24)
  104.            warpdt.2=VSpace()
  105.            warpdt.3="PenSel"
  106.             PenSel.Class="group"
  107.             PenSel.Frame="Group"
  108.             PenSel.FrameTitle="Pen selection"
  109.             PenSel.Background="GroupBack"
  110.             PenSel.Columns=2
  111.              PenSel.0=Label("O_verride")
  112.              PenSel.1=MakeObj("PENS_OVERRIDE","Cycle","Nothing|Defaults Only|Applications Only|Everything","v",1)
  113.              PenSel.2=Label("Qu_ality")
  114.              PenSel.3=MakeObj("PENS_QUALITY","Cycle","Poor|Good|Best","a")
  115.            warpdt.4=VSpace()
  116.  
  117.          hpager.1="jpeg"
  118.           jpeg.Class="group"
  119.            jpeg.0=VSpace()
  120.            jpeg.1="Dec"
  121.             Dec.Class="group"
  122.             Dec.Frame="Group"
  123.             Dec.FrameTitle="Decoder"
  124.             Dec.Background="GroupBack"
  125.              Dec.0="dec0"
  126.               dec0.Class="group"
  127.               dec0.Columns=2
  128.                dec0.0=Label("_Output mode")
  129.                dec0.1=MakeObj("OUTPUT_MODE","Cycle","Full Colour (24 bit)|Reduced Colour","o",1)
  130.                dec0.2=Label("_DCT quality")
  131.                dec0.3=MakeObj("DCT_METHOD","Cycle","Good (Fatest)|Best (Slower)","d")
  132.              Dec.1="dec1"
  133.               dec1.Class="group"
  134.               dec1.Horiz=1
  135.                dec1.0=HSpace()
  136.                dec1.1=Checkmark("FANCY_UPSAMPLING",,"f")
  137.                dec1.2=Label("Enable _Fancy Upsampling")
  138.                dec1.3=HSpace()
  139.            jpeg.2=VSpace()
  140.            jpeg.3="ColRed"
  141.             ColRed.Class="group"
  142.             ColRed.Frame="Group"
  143.             ColRed.FrameTitle="Colour reduction"
  144.             ColRed.Background="GroupBack"
  145.              ColRed.0="crg"
  146.               crg.Class="group"
  147.               crg.Columns=2
  148.                crg.0=Label("Dit_hering")
  149.                crg.1=MakeObj("DITHER","Cycle","None|Ordered|Floyd-Steinberg","h",0)
  150.                crg.2=Label("Colour _Quality")
  151.                crg.3=MakeObj("QUANTIZATION","Cycle","Poor (Fast)|Best (Slow)","q")
  152.                crg.4=Label("_Max Colours")
  153.                crg.5=MakeObj("NUM_COLOURS","slider",'m',8,256)
  154.            jpeg.4=VSpace()
  155.  
  156.       mgroup.1=Text("info")
  157.  
  158.       mgroup.2="bg"
  159.        bg.Class="group"
  160.        bg.Horiz=1
  161.        bg.SameSize=1
  162.         bg.0=button("save","_Save")
  163.         bg.1=HSpace()
  164.         bg.2=button("use","_Use")
  165.         bg.3=HSpace()
  166.         bg.4=button("test","_Test")
  167.         bg.5=HSpace()
  168.         bg.6=button("cancel","_Cancel")
  169.  
  170.     if NewObj("Application","app")>0 then exit
  171.  
  172.     call set("hlister","Active",0)
  173.  
  174.     call notify("mwin","CloseRequest",1,"app","ReturnID","quit")
  175.  
  176.     call notify("mabout","MenuTrigger","Everytime","app","about","mwin")
  177.     call notify("maboutrxmui","MenuTrigger","Everytime","app","AboutRxMUI","mwin")
  178.     call notify("maboutmui","MenuTrigger","Everytime","app","AboutMUI","mwin")
  179.     call notify("mhide","MenuTrigger","Everytime","app","set","iconified",1)
  180.     call notify("mquit","MenuTrigger","Everytime","app","ReturnID","quit")
  181.     call notify("mdefault","MenuTrigger","Everytime","app","return","call DefaultConfig()")
  182.     call notify("mlast","MenuTrigger","Everytime","app","return","call RestoreConfig(1)")
  183.     call notify("mrestore","MenuTrigger","Everytime","app","return","call RestoreConfig(0)")
  184.     call notify("mmui","MenuTrigger","Everytime","app","OpenConfigWindow")
  185.  
  186.     call notify("hlister","Active","Everytime","hpager","set","activepage","triggervalue")
  187.  
  188.     call notify("DITHER_OVERRIDE","Active","Everytime","DITHER_QUALITY","set","Disabled",0)
  189.     call notify("DITHER_OVERRIDE","Active",0,"DITHER_QUALITY","set","Disabled",1)
  190.     call notify("DITHER_OVERRIDE","Active","Everytime","DITHER_DEPTH","set","Disabled",0)
  191.     call notify("DITHER_OVERRIDE","Active",0,"DITHER_DEPTH","set","Disabled",1)
  192.  
  193.     call notify("PENS_OVERRIDE","Active","Everytime","PENS_QUALITY","set","Disabled",0)
  194.     call notify("PENS_OVERRIDE","Active",0,"PENS_QUALITY","set","Disabled",1)
  195.  
  196.     call notify("OUTPUT_MODE","Active","Everytime","crg","set","Disabled",0)
  197.     call notify("OUTPUT_MODE","Active",0,"crg","set","Disabled",1)
  198.  
  199.     call notify("DITHER","Active","Everytime","QUANTIZATION","set","Disabled",0)
  200.     call notify("DITHER","Active",1,"QUANTIZATION","set","Disabled",1)
  201.  
  202.     call notify("save","Pressed",0,"app","return","call SaveConfigExit(1)")
  203.     call notify("use","Pressed",0,"app","return","call SaveConfigExit(0)")
  204.     call notify("test","Pressed",0,"app","return","call TestConfig()")
  205.     call notify("cancel","Pressed",0,"app","returnid","quit")
  206.  
  207.     call set("mwin","defaultobject","hlister")
  208.  
  209.     call info("Welcome to WarpDTPrefs!")
  210.  
  211.     set.0="mwin"; set.0.attr="open";  set.0.value=1
  212.     set.1="app";  set.1.attr="sleep"; set.1.value=1
  213.     call MultiSetAttr("set")
  214.     if ~xget("mwin","open") then exit
  215.  
  216.     global.gad.0="DITHER_OVERRIDE" ; global.gad.0.attr="Active"
  217.     global.gad.1="DITHER_QUALITY"  ; global.gad.1.attr="Active"
  218.     global.gad.2="DITHER_DEPTH"    ; global.gad.2.attr="Value"
  219.     global.gad.3="PENS_OVERRIDE"   ; global.gad.3.attr="Active"
  220.     global.gad.4="PENS_QUALITY"    ; global.gad.4.attr="Active"
  221.     global.gad.5="OUTPUT_MODE"     ; global.gad.5.attr="Active"
  222.     global.gad.6="DCT_METHOD"      ; global.gad.6.attr="Active"
  223.     global.gad.7="FANCY_UPSAMPLING"; global.gad.7.attr="Selected"
  224.     global.gad.8="DITHER"          ; global.gad.8.attr="Active"
  225.     global.gad.9="QUANTIZATION"    ; global.gad.9.attr="Active"
  226.     global.gad.10="NUM_COLOURS"    ; global.gad.10.attr="Value"
  227.  
  228.     call ReadConfig(0)
  229.     call ConfigToGadgets("GLOBAL.PREFS")
  230.  
  231.     call set("app","sleep",0)
  232.     return
  233. /***********************************************************************/
  234. info: procedure expose global.
  235. parse arg msg,ntsave
  236.     if msg="" then msg=global.last
  237.     else if ntsave~=1 then global.last=msg
  238.     call set("info","contents",msg)
  239.     return
  240. /***********************************************************************/
  241. ConfigToGadgets: procedure expose global.
  242.     global.gad.0.value=global.prefs.DITHER_OVERRIDE
  243.     global.gad.1.value=global.prefs.DITHER_QUALITY
  244.     global.gad.2.value=global.prefs.DITHER_DEPTH
  245.     global.gad.3.value=global.prefs.PENS_OVERRIDE
  246.     global.gad.4.value=global.prefs.PENS_QUALITY
  247.     global.gad.5.value=global.prefs.OUTPUT_MODE
  248.     global.gad.6.value=global.prefs.DCT_METHOD
  249.     global.gad.7.value=global.prefs.FANCY_UPSAMPLING
  250.     global.gad.8.value=global.prefs.DITHER
  251.     global.gad.9.value=global.prefs.QUANTIZATION
  252.     global.gad.10.value=global.prefs.NUM_COLOURS
  253.     call MultiSetAttr("global.gad")
  254.     return
  255. /***************************************************************************/
  256. GadgetsToConfig: procedure expose global.
  257. parse arg from
  258.     call MultiGetAttr("global.gad")
  259.     global.prefs.DITHER_OVERRIDE  = global.gad.0.value
  260.     global.prefs.DITHER_QUALITY   = global.gad.1.value
  261.     global.prefs.DITHER_DEPTH     = global.gad.2.value
  262.     global.prefs.PENS_OVERRIDE    = global.gad.3.value
  263.     global.prefs.PENS_QUALITY     = global.gad.4.value
  264.     global.prefs.OUTPUT_MODE      = global.gad.5.value
  265.     global.prefs.DCT_METHOD       = global.gad.6.value
  266.     global.prefs.FANCY_UPSAMPLING = global.gad.7.value
  267.     global.prefs.DITHER           = global.gad.8.value
  268.     global.prefs.QUANTIZATION     = global.gad.9.value
  269.     global.prefs.NUM_COLOURS      = global.gad.10.value
  270.     return
  271. /***************************************************************************/
  272. ConfigToDefaults: procedure expose global.
  273.     global.prefs.DITHER_OVERRIDE    = 0
  274.     global.prefs.DITHER_QUALITY     = 2
  275.     global.prefs.DITHER_DEPTH       = 8
  276.     global.prefs.PENS_OVERRIDE      = 0
  277.     global.prefs.PENS_QUALITY       = 1
  278.     global.prefs.OUTPUT_MODE        = 0
  279.     global.prefs.DCT_METHOD         = 1
  280.     global.prefs.FANCY_UPSAMPLING   = 0
  281.     global.prefs.DITHER             = 2
  282.     global.prefs.QUANTIZATION       = 1
  283.     global.prefs.NUM_COLOURS        = 256
  284.     return
  285. /**************************************************************************/
  286. ReadConfig: procedure expose global.
  287. parse arg saved
  288.     call set("app","sleep",1)
  289.     call info("Reading preferences...",1)
  290.     call ConfigToDefaults()
  291.     if saved then conf=GetVar("ENVARC:Datatypes/WarpJPEG.prefs","GLOBAL BINARY")
  292.     else conf=GetVar("Datatypes/WarpJPEG.prefs","GLOBAL BINARY")
  293.     do while conf~=""
  294.         parse upper var conf key "=" value "A"x conf
  295.         select
  296.  
  297.             when key="DITHER_OVERRIDE" then do
  298.                 p=find("NOTHING DEFAULTS APPS EVERYTHING",value)
  299.                 if p>0 then global.prefs.DITHER_OVERRIDE=p-1
  300.             end
  301.  
  302.             when key="DITHER_QUALITY" then do
  303.                 p=find("POOR GOOD BEST",value)
  304.                 global.prefs.DITHER_QUALITY=p-1
  305.             end
  306.  
  307.             when key="DITHER_DEPTH" then
  308.                 if Datatype(value,"n") then do
  309.                     if value>24 then value=24
  310.                     else if value<1 then value=1
  311.                     global.prefs.DITHER_DEPTH=value
  312.                 end
  313.  
  314.             when key="PENS_OVERRIDE" then do
  315.                 p=find("NOTHING DEFAULTS APPS EVERYTHING",value)
  316.                 if p>0 then global.prefs.PENS_OVERRIDE=p-1
  317.             end
  318.  
  319.             when key="PENS_QUALITY" then do
  320.                 p=find("POOR GOOD BEST",value)
  321.                 if p>0 then global.prefs.PENS_QUALITY=p-1
  322.             end
  323.  
  324.             when key="OUTPUT_MODE" then do
  325.                 p=find("FULL REDUCED",value)
  326.                 if p>0 then global.prefs.OUTPUT_MODE=p-1
  327.             end
  328.  
  329.             when key="DCT_METHOD" then do
  330.                 p=find("FAST SLOW",value)
  331.                 if p>0 then global.prefs.DCT_METHOD=p-1
  332.             end
  333.  
  334.             when key="FANCY_UPSAMPLING" then do
  335.                 p=find("OFF ON",value)
  336.                 if p>0 then global.prefs.FANCY_UPSAMPLING=p-1
  337.             end
  338.  
  339.             when key="DITHER" then do
  340.                 p=find("NONE ORDERED FS",value)
  341.                 if p>0 then global.prefs.DITHER=p-1
  342.             end
  343.  
  344.             when key="QUANTIZATION" then do
  345.                 p=find("POOR BEST",value)
  346.                 if p>0 then global.prefs.QUANTIZATION=p-1
  347.             end
  348.  
  349.             when key="NUM_COLOURS" then
  350.                 if Datatype(value,"n") then do
  351.                     if value>256 then value=256
  352.                     else if value<8 then value=8
  353.                     global.prefs.NUM_COLOURS=value
  354.                 end
  355.  
  356.             otherwise nop
  357.         end
  358.     end
  359.     call CopyConfig("GLOBAL.PREFS","GLOBAL.BACKPREFS")
  360.     call info("")
  361.     call set("app","sleep",0)
  362.     return
  363. /***********************************************************************/
  364. SaveConfig: procedure expose global.
  365. parse arg save
  366.     call set("app","sleep",1)
  367.     call info("Saving preferences...",1)
  368.     conf=""
  369.     conf=conf || "DITHER_OVERRIDE="  || word("nothing defaults apps everything",global.prefs.DITHER_OVERRIDE+1) || "A"x
  370.     conf=conf || "DITHER_QUALITY="   || word("poor good best",global.prefs.DITHER_QUALITY+1) || "A"x
  371.     conf=conf || "DITHER_DEPTH="     || global.prefs.DITHER_DEPTH  || "A"x
  372.     conf=conf || "PENS_OVERRIDE="    || word("nothing defaults apps everything",global.prefs.PENS_OVERRIDE+1) || "A"x
  373.     conf=conf || "PENS_QUALITY="     || word("poor good best",global.prefs.PENS_QUALITY+1) || "A"x
  374.     conf=conf || "OUTPUT_MODE="      || word("full reduced",global.prefs.OUTPUT_MODE+1) || "A"x
  375.     conf=conf || "DCT_METHOD="       || word("slow fast",global.prefs.DCT_METHOD+1) || "A"x
  376.     conf=conf || "FANCY_UPSAMPLING=" || word("off on",global.prefs.FANCY_UPSAMPLING+1) || "A"x
  377.     conf=conf || "DITHER="           || word("none ordered fs",global.prefs.DITHER+1) || "A"x
  378.     conf=conf || "QUANTIZATION="     || word("poor best",global.prefs.QUANTIZATION+1) || "A"x
  379.     conf=conf || "NUM_COLOURS="      || global.prefs.NUM_COLOURS
  380.  
  381.     if save then call SetVar("Datatypes/WarpJPEG.prefs",conf,"SAVE GLOBAL")
  382.     else call SetVar("Datatypes/WarpJPEG.prefs",conf)
  383.  
  384.     call CopyConfig("GLOBAL.PREFS","GLOBAL.BACKPREFS")
  385.  
  386.     global.test=0
  387.     call info("")
  388.     call set("app","sleep",0)
  389.     return
  390. /***************************************************************************/
  391. GetSaveConfig: procedure expose global.
  392. parse arg save
  393.     call GadgetsToConfig()
  394.     call SaveConfig(save)
  395.     return
  396. /***********************************************************************/
  397. SaveConfigExit: procedure expose global.
  398. parse arg save
  399.     call set("mwin","open",0)
  400.     call GetSaveConfig(save)
  401.     exit
  402. /***********************************************************************/
  403. DefaultConfig: procedure expose global.
  404.     call ConfigToDefaults()
  405.     call CopyConfig("GLOBAL.PREFS","GLOBAL.BACKPREFS")
  406.     call ConfigToGadgets()
  407.     return
  408. /***************************************************************************/
  409. RestoreConfig: procedure expose global.
  410. parse arg saved
  411.     if saved then call ReadConfig(1)
  412.     else call CopyConfig("GLOBAL.BACKPREFS","GLOBAL.PREFS")
  413.     call ConfigToGadgets()
  414.     return
  415. /***************************************************************************/
  416. TestConfig: procedure expose global.
  417.     call CopyConfig("GLOBAL.BACKPREFS","GLOBAL.TESTPREFS")
  418.     call GetSaveConfig(0)
  419.     global.test=1
  420.     return
  421. /***************************************************************************/
  422. CopyConfig: procedure expose global.
  423. parse arg from,to
  424.     interpret to".DITHER_OVERRIDE   = "from".DITHER_OVERRIDE"
  425.     interpret to".DITHER_QUALITY    = "from".DITHER_QUALITY"
  426.     interpret to".DITHER_DEPTH      = "from".DITHER_DEPTH"
  427.     interpret to".PENS_OVERRIDE     = "from".PENS_OVERRIDE"
  428.     interpret to".PENS_QUALITY      = "from".PENS_QUALITY"
  429.     interpret to".OUTPUT_MODE       = "from".OUTPUT_MODE"
  430.     interpret to".DCT_METHOD        = "from".DCT_METHOD"
  431.     interpret to".FANCY_UPSAMPLING  = "from".FANCY_UPSAMPLING"
  432.     interpret to".DITHER            = "from".DITHER"
  433.     interpret to".QUANTIZATION      = "from".QUANTIZATION"
  434.     interpret to".NUM_COLOURS       = "from".NUM_COLOURS"
  435.     return
  436. /***************************************************************************/
  437. SafeExit: procedure expose global.
  438.     if global.test then do
  439.         call CopyConfig("GLOBAL.TESTPREFS","GLOBAL.PREFS")
  440.         call SaveConfig(0)
  441.     end
  442.     exit
  443. /***************************************************************************/
  444. halt:
  445. break_c:
  446.     call SafeExit()
  447. /**************************************************************************/
  448.