home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / ACDCR032.ZIP / source / datadialogprocs.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1999-08-08  |  40.2 KB  |  1,045 lines

  1. /*
  2.  * This file is (C) Chris Wohlgemuth 1999
  3.  */
  4. /*
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2, or (at your option)
  8.  * any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program; see the file COPYING.  If not, write to
  17.  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  */
  19.  
  20.  
  21. #include "audiofolder.hh"
  22. #include "audiofolderhelp.h"
  23.  
  24. #include <stdio.h>
  25.  
  26. extern char chrCDRecord[CCHMAXPATH];/* Path to cdrecord */
  27. extern char chrCDROptions[CCHMAXPATH];
  28. extern int iNumCD;
  29. extern char cFirstCD;
  30. char chosenMultiSessionCD[3];
  31. BOOL bMultiSessionDone=FALSE;
  32. extern char chrMkisofs[CCHMAXPATH];/* Path to mkisofs */
  33. extern char chrMkisofsOptions[CCHMAXPATH];
  34. extern LONG lMKOptions;
  35. extern BOOL MkisofsSetupDone;
  36. extern char chrImage[CCHMAXPATH];/* Path to iso-image */
  37.  
  38. HMODULE queryModuleHandle(void);
  39. ULONG launchMsInfo(HWND hwnd);
  40.  
  41. /* Local */
  42. void enableCDTypeCntrls(HWND hwnd, CWDataFolder* thisPtr);
  43. MRESULT EXPENTRY imageNameDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) ;
  44. MRESULT EXPENTRY dataCDStatusLineDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  45. MRESULT EXPENTRY msInfoStatusDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) ;
  46. MRESULT EXPENTRY mkisofsOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) ;
  47. MRESULT EXPENTRY fileNameOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) ;
  48. MRESULT EXPENTRY cdTypeOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  49. MRESULT EXPENTRY authorOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) ;
  50.  
  51.  
  52.  
  53. /* This procedure handles the imagename frame extension */ 
  54. MRESULT EXPENTRY imageNameDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 
  55. {
  56.   CWDataFolder* thisPtr;
  57.   FILEDLG fd = { 0 };  
  58.  
  59.   switch(msg)
  60.     {
  61.     case WM_INITDLG:
  62.       WinSetWindowULong(hwnd,QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.    
  63.       WinSendMsg(WinWindowFromID(hwnd,IDEF_IMAGENAME),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)CCHMAXPATH),0);
  64.       WinSetWindowText(WinWindowFromID(hwnd,IDEF_IMAGENAME),chrImage);
  65.       return (MRESULT) TRUE;
  66.       /*    case WM_HELP:
  67.             thisPtr=(CWAudioFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CDRECORDBROWSE),QWL_USER);
  68.             if(!thisPtr)
  69.             break;
  70.             switch(WinQueryWindowUShort(WinQueryFocus(HWND_DESKTOP),QWS_ID))
  71.             {
  72.             case IDEF_CDRECORDOPTIONS:
  73.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDOPTIONS,AFHELPLIBRARY);
  74.             case IDPB_WIDERRUFEN:
  75.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_WIDERRUFEN,AFHELPLIBRARY);
  76.             case IDPB_CDRECORDBROWSE:
  77.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_CDRECORDBROWSE,AFHELPLIBRARY);
  78.             case IDEF_CDRECORDPATH:
  79.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDPATH,AFHELPLIBRARY);
  80.             default:
  81.             break;
  82.             }
  83.             return (MRESULT)thisPtr->wpDisplayHelp(IDDLG_CDRECORDSETUP,AFHELPLIBRARY);
  84.             break;*/
  85.     case WM_DESTROY:
  86.       /* The notebook closes and gets destroyed */
  87.       /* Let the WPS save the new instance data */
  88.       /*  thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_FILENAMEUNDO),QWL_USER);
  89.           if(thisPtr) {
  90.           ulFlags=0;
  91.           if(WinQueryButtonCheckstate(hwnd,IDCB_ALLOW32CHARS)&1)
  92.           ulFlags|=IDMK_ALLOW32CHARS;
  93.           if(WinQueryButtonCheckstate(hwnd,IDCB_LEADINGPOINTS)&1)
  94.           ulFlags|=IDMK_LEADINGPERIODS;
  95.           if(WinQueryButtonCheckstate(hwnd,IDCB_JOLIET)&1)
  96.           ulFlags|=IDMK_JOLIET;
  97.           if(WinQueryButtonCheckstate(hwnd,IDCB_ROCKRIDGE)&1)
  98.           ulFlags|=IDMK_ROCKRIDGE;
  99.           if(WinQueryButtonCheckstate(hwnd,IDCB_TRANSTABLE)&1)
  100.           ulFlags|=IDMK_TRANSTABLE;
  101.           thisPtr->cwSetMkisofsFlags(ulFlags,IDMK_ALLOW32CHARS|IDMK_LEADINGPERIODS|IDMK_JOLIET|IDMK_ROCKRIDGE|IDMK_TRANSTABLE);
  102.           thisPtr->wpSaveDeferred();
  103.           }*/
  104.       WinQueryWindowText( WinWindowFromID(hwnd,IDEF_IMAGENAME),sizeof(chrImage),chrImage);      
  105.       return (MRESULT) TRUE;
  106.       /*   case WM_CONTROL:
  107.       switch(SHORT1FROMMP(mp1))
  108.         {
  109.         case IDEF_IMAGENAME:
  110.           DosBeep(100,1000);
  111.           break;
  112.         default:
  113.           break;
  114.         }
  115.       return MRESULT(FALSE);*/
  116.     case WM_COMMAND:    
  117.       switch(SHORT1FROMMP(mp1))
  118.         {
  119.         case IDPB_IMAGEBROWSE:
  120.           /* User pressed the BROWSE button */
  121.           fd.cbSize = sizeof( fd );
  122.           /* It's an centered 'Save'-dialog */
  123.           fd.fl = FDS_OPEN_DIALOG|FDS_CENTER;
  124.           /* Set the title of the file dialog */
  125.           fd.pszTitle = "Path for ISO-Image file";
  126.           /* Only show *.exe files */
  127.           sprintf(fd.szFullFile,"%s","*.raw");
  128.           
  129.           if( WinFileDlg( HWND_DESKTOP, hwnd, &fd ) == NULLHANDLE )
  130.             {
  131.               /* WinFileDlg failed */
  132.               break;
  133.             }
  134.           if( fd.lReturn == DID_OK )
  135.             {
  136.               WinSetWindowText( WinWindowFromID(hwnd,IDEF_IMAGENAME), fd.szFullFile );
  137.               sprintf(chrImage,"%s",fd.szFullFile);
  138.             }
  139.           break;
  140.           
  141.           /*  thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_FILENAMEUNDO),QWL_USER);
  142.           if(thisPtr) {       
  143.           }
  144.           DosBeep(100,300);*/
  145.           break;
  146.         default:
  147.           break;
  148.         }
  149.       return (MRESULT) TRUE;
  150.     default:
  151.       break;
  152.     }
  153.   return WinDefDlgProc(hwnd, msg, mp1, mp2);
  154. }
  155.  
  156.  
  157.  
  158. /* This procedure handles the main frame extension */ 
  159. MRESULT EXPENTRY mkisofsMainDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 
  160. {
  161.   CWDataFolder* thisPtr;
  162.   ULONG ulFlags;
  163.  
  164.   switch(msg)
  165.     {
  166.     case WM_INITDLG:
  167.       WinSetWindowULong(hwnd,QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.    
  168.       WinCheckButton(hwnd,IDCB_DUMMY,((CWDataFolder*)(PVOIDFROMMP(mp2)))->sDummy);
  169.       ulFlags=((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryCreateFlags();
  170.       if(ulFlags&IDCR_IMAGEONLY) {
  171.         WinCheckButton(hwnd,IDRB_IMAGEONLY,1);
  172.         WinShowWindow(WinWindowFromID(hwnd,IDPB_WRITECD),FALSE);
  173.             WinShowWindow(WinWindowFromID(hwnd,IDCB_DUMMY),FALSE);
  174.         WinShowWindow(WinWindowFromID(hwnd,IDPB_CREATE),TRUE);
  175.       }
  176.       else {
  177.         WinShowWindow(WinWindowFromID(hwnd,IDPB_CREATE),FALSE);
  178.         WinShowWindow(WinWindowFromID(hwnd,IDPB_WRITECD),TRUE);
  179.         WinShowWindow(WinWindowFromID(hwnd,IDCB_DUMMY),TRUE);
  180.       }
  181.       if(ulFlags&IDCR_WRITEIMAGE) 
  182.         WinCheckButton(hwnd,IDRB_WRITEIMAGE,1);
  183.       if(ulFlags&IDCR_ONTHEFLY)
  184.         WinCheckButton(hwnd,IDRB_ONTHEFLY,1);
  185.       return (MRESULT) TRUE;
  186.       /*    case WM_HELP:
  187.             thisPtr=(CWAudioFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CDRECORDBROWSE),QWL_USER);
  188.             if(!thisPtr)
  189.             break;
  190.             switch(WinQueryWindowUShort(WinQueryFocus(HWND_DESKTOP),QWS_ID))
  191.             {
  192.             case IDEF_CDRECORDOPTIONS:
  193.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDOPTIONS,AFHELPLIBRARY);
  194.             case IDPB_WIDERRUFEN:
  195.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_WIDERRUFEN,AFHELPLIBRARY);
  196.             case IDPB_CDRECORDBROWSE:
  197.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_CDRECORDBROWSE,AFHELPLIBRARY);
  198.             case IDEF_CDRECORDPATH:
  199.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDPATH,AFHELPLIBRARY);
  200.             default:
  201.             break;
  202.             }
  203.             return (MRESULT)thisPtr->wpDisplayHelp(IDDLG_CDRECORDSETUP,AFHELPLIBRARY);
  204.             break;*/
  205.     case WM_DESTROY:
  206.       /* The folderwindow closes and gets destroyed */
  207.       thisPtr=(CWDataFolder*) WinQueryWindowULong(hwnd,QWL_USER);
  208.       if(thisPtr) {
  209.         thisPtr->sDummy=WinQueryButtonCheckstate(hwnd,IDCB_DUMMY);
  210.         ulFlags=0;
  211.         if(WinQueryButtonCheckstate(hwnd,IDRB_IMAGEONLY)&1)
  212.           ulFlags|=IDCR_IMAGEONLY;
  213.         if(WinQueryButtonCheckstate(hwnd,IDRB_WRITEIMAGE)&1)
  214.           ulFlags|=IDCR_WRITEIMAGE;
  215.         if(WinQueryButtonCheckstate(hwnd,IDRB_ONTHEFLY)&1)
  216.           ulFlags|=IDCR_ONTHEFLY;
  217.         thisPtr->cwSetCreateFlags( ulFlags,0xF);
  218.       }
  219.       return (MRESULT) TRUE;
  220.     case WM_CONTROL:
  221.       thisPtr=(CWDataFolder*) WinQueryWindowULong(hwnd,QWL_USER);
  222.       if(!thisPtr) return (MRESULT) TRUE;
  223.       switch(SHORT1FROMMP(mp1))
  224.         {
  225.         case IDCB_DUMMY:
  226.           thisPtr->sDummy=WinQueryButtonCheckstate(hwnd,IDCB_DUMMY);
  227.           break;
  228.         case IDRB_WRITEIMAGE:
  229.         case IDRB_IMAGEONLY:
  230.         case IDRB_ONTHEFLY:
  231.           ulFlags=0;
  232.           if(WinQueryButtonCheckstate(hwnd,IDRB_IMAGEONLY)&1) {
  233.             ulFlags|=IDCR_IMAGEONLY;
  234.             WinShowWindow(WinWindowFromID(hwnd,IDPB_WRITECD),FALSE);
  235.             WinShowWindow(WinWindowFromID(hwnd,IDCB_DUMMY),FALSE);
  236.             WinShowWindow(WinWindowFromID(hwnd,IDPB_CREATE),TRUE);
  237.           }
  238.           else {
  239.             if(WinQueryButtonCheckstate(hwnd,IDRB_WRITEIMAGE)&1)
  240.               ulFlags|=IDCR_WRITEIMAGE;
  241.             if(WinQueryButtonCheckstate(hwnd,IDRB_ONTHEFLY)&1)
  242.               ulFlags|=IDCR_ONTHEFLY;
  243.             WinShowWindow(WinWindowFromID(hwnd,IDPB_CREATE),FALSE);
  244.             WinShowWindow(WinWindowFromID(hwnd,IDPB_WRITECD),TRUE);
  245.             WinShowWindow(WinWindowFromID(hwnd,IDCB_DUMMY),TRUE);
  246.           }
  247.           thisPtr->cwSetCreateFlags( ulFlags,0xF);
  248.           break;
  249.         default:
  250.           break;
  251.         }
  252.       return (MRESULT) TRUE;
  253.     case WM_COMMAND:    
  254.       switch(SHORT1FROMMP(mp1))
  255.         {
  256.         case IDPB_CREATE:
  257.           /* User pressed the CREATE button */
  258.           thisPtr=(CWDataFolder*) WinQueryWindowULong(hwnd,QWL_USER);
  259.           if(thisPtr) {
  260.             thisPtr->cwCreateImage();
  261.           }
  262.           break;
  263.         case IDPB_WRITECD:
  264.           /* User pressed the WRITE button */
  265.           thisPtr=(CWDataFolder*) WinQueryWindowULong(hwnd,QWL_USER);
  266.           if(thisPtr) {
  267.             if(WinQueryButtonCheckstate(hwnd,IDRB_WRITEIMAGE)&1)
  268.               thisPtr->cwWriteImage();
  269.             else
  270.               thisPtr->cwWriteOnTheFly();
  271.           }
  272.           break;
  273.         case IDPB_MKISOFSSETTINGS:
  274.           /* User pressed the SETTINGS... button */
  275.           thisPtr=(CWDataFolder*) WinQueryWindowULong(hwnd,QWL_USER);
  276.           if(thisPtr) {
  277.             thisPtr->wpViewObject(NULLHANDLE,OPEN_SETTINGS,0);
  278.           }
  279.           break;
  280.         default:
  281.           break;
  282.         }
  283.       return (MRESULT) TRUE;
  284.     default:
  285.       break;
  286.     }
  287.   return WinDefDlgProc(hwnd, msg, mp1, mp2);
  288. }
  289.  
  290.  
  291.  
  292. /* This procedure handles the mkisofs settings page */ 
  293. /*MRESULT EXPENTRY createOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 
  294.   {
  295.   FILEDLG fd = { 0 };
  296.   CWDataFolder* thisPtr;
  297.   ULONG ulFlags;
  298.   
  299.   switch(msg)
  300.   {
  301.   case WM_INITDLG :    
  302.   WinSetWindowULong(WinWindowFromID(hwnd,IDPB_CREATEUNDO),
  303.   QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.
  304.   ulFlags=((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryCreateFlags();
  305.   if(ulFlags&IDCR_IMAGEONLY)
  306.   WinCheckButton(hwnd,IDRB_IMAGEONLY,1);
  307.   if(ulFlags&IDCR_WRITEIMAGE) {
  308.   WinCheckButton(hwnd,IDRB_WRITEIMAGE,1);
  309.   WinEnableControl(hwnd,IDCB_ASK,TRUE);
  310.   }
  311.   else
  312.   WinEnableControl(hwnd,IDCB_ASK,FALSE);
  313.   if(ulFlags&IDCR_ONTHEFLY)
  314.   WinCheckButton(hwnd,IDRB_ONTHEFLY,1);
  315.   if(ulFlags&IDCR_ASK)
  316.   WinCheckButton(hwnd,IDCB_ASK,1);
  317.   
  318.   return (MRESULT) TRUE;
  319.   case WM_DESTROY:*/
  320. /* The notebook closes and gets destroyed */
  321. /*   ulFlags=0;
  322.      if(WinQueryButtonCheckstate(hwnd,IDRB_IMAGEONLY)&1)
  323.      ulFlags|=IDCR_IMAGEONLY;
  324.      if(WinQueryButtonCheckstate(hwnd,IDRB_WRITEIMAGE)&1)
  325.      ulFlags|=IDCR_WRITEIMAGE;
  326.      if(WinQueryButtonCheckstate(hwnd,IDRB_ONTHEFLY)&1)
  327.      ulFlags|=IDCR_ONTHEFLY;
  328.      if(WinQueryButtonCheckstate(hwnd,IDCB_ASK)&1)
  329.      ulFlags|=IDCR_ASK;*/
  330. /* Let the WPS save the new instance data */
  331. /*  thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CREATEUNDO),QWL_USER);
  332.     if(thisPtr)
  333.     {
  334.     thisPtr->cwSetCreateFlags( ulFlags,0xF);
  335.     thisPtr->wpSaveDeferred();
  336.     }
  337.     return (MRESULT) TRUE;
  338.     case WM_CONTROL:
  339.     switch(SHORT1FROMMP(mp1))
  340.     {
  341.     case IDRB_WRITEIMAGE:
  342.     case IDRB_IMAGEONLY:
  343.     case IDRB_ONTHEFLY:
  344.     if(WinQueryButtonCheckstate(hwnd,IDRB_WRITEIMAGE)&1)
  345.     WinEnableControl(hwnd,IDCB_ASK,TRUE);
  346.     else
  347.     WinEnableControl(hwnd,IDCB_ASK,FALSE);
  348.     break;
  349.     default:
  350.     break;
  351.     }
  352.     case WM_COMMAND:    
  353.     switch(SHORT1FROMMP(mp1))
  354.     {
  355.     case IDPB_CREATEUNDO:*/
  356. /* User pressed the UNDO button */
  357. /*   thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CREATEUNDO),QWL_USER);
  358.      if(thisPtr)
  359.      {
  360.      ulFlags=thisPtr->cwQueryCreateFlags();
  361.      if(ulFlags&IDCR_IMAGEONLY)
  362.      WinCheckButton(hwnd,IDRB_IMAGEONLY,1);
  363.      else
  364.      WinCheckButton(hwnd,IDRB_IMAGEONLY,0);
  365.      if(ulFlags&IDCR_WRITEIMAGE) {
  366.      WinCheckButton(hwnd,IDRB_WRITEIMAGE,1);
  367.      WinEnableControl(hwnd,IDCB_ASK,TRUE);
  368.      }
  369.      else {
  370.      WinCheckButton(hwnd,IDRB_WRITEIMAGE,0);
  371.      WinEnableControl(hwnd,IDCB_ASK,FALSE);
  372.      }
  373.      if(ulFlags&IDCR_ONTHEFLY)
  374.      WinCheckButton(hwnd,IDRB_ONTHEFLY,1);
  375.      else
  376.      WinCheckButton(hwnd,IDRB_ONTHEFLY,0);
  377.      if(ulFlags&IDCR_ASK)
  378.      WinCheckButton(hwnd,IDCB_ASK,1);
  379.      else
  380.      WinCheckButton(hwnd,IDCB_ASK,0);
  381.      }
  382.      break;
  383.      default:
  384.      break;
  385.      }
  386.      return (MRESULT) TRUE;
  387.      default:
  388.      break;
  389.      }
  390.      return WinDefDlgProc(hwnd, msg, mp1, mp2);
  391.      }
  392.      */
  393.  
  394.  
  395. MRESULT EXPENTRY msInfoStatusDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 
  396. {
  397.     
  398.   switch(msg)
  399.     {
  400.     case WM_INITDLG :   
  401.       //   WinSetWindowULong(hwnd,QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.
  402.       //   thisPtr=(CWAudioFolder*) PVOIDFROMMP(mp2);
  403.       return (MRESULT) TRUE;
  404.     default:
  405.       break;
  406.     }
  407.   return WinDefDlgProc(hwnd, msg, mp1, mp2);    
  408. }
  409.  
  410. /*
  411.   This function enables the controls on the CD-type page
  412.   according to the single-/multisession choice.
  413.  */
  414. void enableCDTypeCntrls(HWND hwnd, CWDataFolder* thisPtr)
  415. {
  416.   ULONG ulFlags;
  417.  
  418.       ulFlags=thisPtr->cwQueryCDTypeFlags();
  419.       if(ulFlags&IDCDT_MULTISESSION) {
  420.         WinCheckButton(hwnd,IDRB_MULTISESSION,1);
  421.         WinEnableWindow(WinWindowFromID(hwnd,IDRB_TRACKDATA),FALSE);
  422.         WinEnableWindow(WinWindowFromID(hwnd,IDRB_TRACKMODE2),FALSE);
  423.         WinEnableWindow(WinWindowFromID(hwnd,IDRB_TRACKXA1),FALSE);
  424.         WinEnableWindow(WinWindowFromID(hwnd,IDRB_TRACKXA2),FALSE);
  425.         WinEnableWindow(WinWindowFromID(hwnd,IDRB_TRACKCDI),FALSE);
  426.       }
  427.       else {// Singlesession selected. Disable the multisession stuff
  428.         WinCheckButton(hwnd,IDRB_SINGLESESSION,1);
  429.         thisPtr->cwEnableMultiSessionCntrls(hwnd,FALSE);
  430.         
  431.       }
  432.       if(ulFlags&IDCDT_FIRSTSESSION) {
  433.         WinCheckButton(hwnd,IDCB_FIRSTSESSION,1);
  434.         WinEnableWindow(WinWindowFromID(hwnd,IDCB_WRITERSOURCE),FALSE);
  435.         WinEnableWindow(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),FALSE);
  436.         WinEnableWindow(WinWindowFromID(hwnd,IDST_SOURCEDRIVE),FALSE);
  437.         WinEnableWindow(WinWindowFromID(hwnd,IDST_PREVIOUSINFO),FALSE);
  438.         WinEnableWindow(WinWindowFromID(hwnd,IDSB_PREVIOUSSTART),FALSE);
  439.         WinEnableWindow(WinWindowFromID(hwnd,IDSB_NEXTSTART),FALSE);
  440.         WinEnableWindow(WinWindowFromID(hwnd,IDPB_GETMSINFO),FALSE);
  441.       }
  442.       else
  443.         WinCheckButton(hwnd,IDCB_FIRSTSESSION,0);
  444.       if(ulFlags&IDCDT_USEWRITER) {
  445.         WinCheckButton(hwnd,IDCB_WRITERSOURCE,1);
  446.         WinEnableWindow(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),FALSE);
  447.         WinEnableWindow(WinWindowFromID(hwnd,IDST_SOURCEDRIVE),FALSE);
  448.       }
  449.       else
  450.         WinCheckButton(hwnd,IDCB_WRITERSOURCE,0);
  451.       /* Check tracktype button */
  452.       if(ulFlags&IDCDT_TRACKDATA) 
  453.         WinCheckButton(hwnd,IDRB_TRACKDATA,1);
  454.       if(ulFlags&IDCDT_TRACKMODE2) 
  455.         WinCheckButton(hwnd,IDRB_TRACKMODE2,1);
  456.       if(ulFlags&IDCDT_TRACKXA1) 
  457.         WinCheckButton(hwnd,IDRB_TRACKXA1,1);
  458.       if(ulFlags&IDCDT_TRACKXA2) 
  459.         WinCheckButton(hwnd,IDRB_TRACKXA2,1);
  460.       if(ulFlags&IDCDT_TRACKCDI) 
  461.         WinCheckButton(hwnd,IDRB_TRACKCDI,1);
  462. }
  463.  
  464. MRESULT EXPENTRY dataCDStatusLineDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 
  465. {
  466.   CWAudioFolder *thisPtr;
  467.   HWND hwndMenu;
  468.   POINTL ptl;
  469.   SHORT a,b;
  470.     
  471.   switch(msg)
  472.     {
  473.     case WM_INITDLG :   
  474.       WinSetWindowULong(hwnd,QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.
  475.       return (MRESULT) TRUE;
  476.     case WM_HELP:
  477.       break;
  478.     case WM_DESTROY:
  479.       /* The dialog closes and gets destroyed */     
  480.       break;    
  481.       //  case WM_BUTTON2DOWN:
  482.       /* Display popup menu for status bar */
  483.       //  WinQueryPointerPos(HWND_DESKTOP,&ptl);
  484.       //WinMapWindowPoints(HWND_DESKTOP,hwnd,&ptl,1);
  485.       //hwndMenu=WinWindowFromPoint(hwnd,&ptl,FALSE);/* Get child window under ptr */
  486.       //switch(WinQueryWindowUShort(hwndMenu,QWS_ID))/* Get child window id */
  487.       //  {
  488.       //  default:
  489.       //    a=IDM_STATUSDEFAULTHELP;
  490.       //    b=a;
  491.       //    break;
  492.       /*  }
  493.       hwndMenu=WinLoadMenu(hwnd,queryModuleHandle(),a);
  494.       if(hwndMenu) {
  495.         if(WinPopupMenu(hwnd,hwnd,hwndMenu,ptl.x,ptl.y,b,PU_VCONSTRAIN|PU_HCONSTRAIN|
  496.                         PU_MOUSEBUTTON1|PU_KEYBOARD|PU_NONE|PU_SELECTITEM)) {
  497.                                         
  498.           return (MRESULT)FALSE;
  499.         }
  500.       }
  501.       break;*/
  502.      case WM_COMMAND:    
  503.       thisPtr=(CWAudioFolder*) WinQueryWindowULong(hwnd,QWL_USER);
  504.       if(thisPtr){
  505.         switch(SHORT1FROMMP(mp1))
  506.           {
  507.           case IDM_STATUSDEFAULTHELP:
  508.             //       return (MRESULT)thisPtr->wpDisplayHelp(603,AFHELPLIBRARY);
  509.           default:
  510.             break;
  511.           }
  512.       }/* end of if(thisPtr) */
  513.             
  514.       return (MRESULT) TRUE;
  515.     default:
  516.       break;
  517.     }
  518.   return WinDefDlgProc(hwnd, msg, mp1, mp2);
  519. }
  520.  
  521.  
  522. /* This procedure handles the mkisofs settings page */ 
  523. MRESULT EXPENTRY mkisofsOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 
  524. {
  525.   FILEDLG fd = { 0 };
  526.   CWDataFolder* thisPtr;
  527.   ULONG ulFlags;
  528.  
  529.   switch(msg)
  530.     {
  531.     case WM_INITDLG :    
  532.       WinSetWindowULong(WinWindowFromID(hwnd,IDPB_MKISOFSBROWSE),
  533.             QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.
  534.       WinSendMsg(WinWindowFromID(hwnd,IDEF_MKISOFSPATH),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)CCHMAXPATH),0);
  535.       WinSetWindowText(WinWindowFromID(hwnd,IDEF_MKISOFSPATH),chrMkisofs);
  536.       WinSendMsg(WinWindowFromID(hwnd,IDEF_MKISOFSOPTIONS),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)CCHMAXPATH),0);
  537.       WinSetWindowText(WinWindowFromID(hwnd,IDEF_MKISOFSOPTIONS),chrMkisofsOptions);
  538.       if(((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryMkisofsFlags()&IDMK_LOGFILE)
  539.         WinCheckButton(hwnd,IDCB_LOGFILE,1);
  540.       if(lMKOptions&IDMK_HIDEWINDOW)
  541.         WinCheckButton(hwnd,IDCB_MKISTARTHIDDEN,1);
  542.       if(lMKOptions&IDMK_CLOSEWINDOW)
  543.         WinCheckButton(hwnd,IDCB_MKICLOSEWINDOW,1);
  544.       return (MRESULT) TRUE;
  545.       /*    case WM_HELP:
  546.             thisPtr=(CWAudioFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CDRECORDBROWSE),QWL_USER);
  547.             if(!thisPtr)
  548.             break;
  549.             switch(WinQueryWindowUShort(WinQueryFocus(HWND_DESKTOP),QWS_ID))
  550.             {
  551.             case IDEF_CDRECORDOPTIONS:
  552.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDOPTIONS,AFHELPLIBRARY);
  553.             case IDPB_WIDERRUFEN:
  554.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_WIDERRUFEN,AFHELPLIBRARY);
  555.             case IDPB_CDRECORDBROWSE:
  556.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_CDRECORDBROWSE,AFHELPLIBRARY);
  557.             case IDEF_CDRECORDPATH:
  558.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDPATH,AFHELPLIBRARY);
  559.             default:
  560.             break;
  561.             }
  562.             return (MRESULT)thisPtr->wpDisplayHelp(IDDLG_CDRECORDSETUP,AFHELPLIBRARY);
  563.             break;*/
  564.         case WM_DESTROY:
  565.       /* The notebook closes and gets destroyed */
  566.       /* Query the cdrecord path from the entryfield */     
  567.       WinQueryWindowText( WinWindowFromID(hwnd,IDEF_MKISOFSPATH),sizeof(chrMkisofs),chrMkisofs);
  568.       /* Query the cdrecord options from the entryfield */     
  569.       WinQueryWindowText( WinWindowFromID(hwnd,IDEF_MKISOFSOPTIONS),sizeof(chrMkisofsOptions),chrMkisofsOptions);
  570.       ulFlags=0;
  571.       if(WinQueryButtonCheckstate(hwnd,IDCB_MKISTARTHIDDEN)&1)
  572.         ulFlags|=IDMK_HIDEWINDOW;
  573.       if(WinQueryButtonCheckstate(hwnd,IDCB_MKICLOSEWINDOW)&1)
  574.         ulFlags|=IDMK_CLOSEWINDOW;
  575.       lMKOptions=ulFlags;
  576.       /* Let the WPS save the new instance data */
  577.       thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_MKISOFSBROWSE),QWL_USER);
  578.       if(thisPtr) {
  579.         if(WinQueryButtonCheckstate(hwnd,IDCB_LOGFILE)&1)
  580.           thisPtr->cwSetMkisofsFlags(IDMK_LOGFILE,IDMK_LOGFILE);
  581.         else
  582.           thisPtr->cwSetMkisofsFlags(0,IDMK_LOGFILE);
  583.         thisPtr->wpSaveDeferred();
  584.       }
  585.       /* Setup is done */
  586.       MkisofsSetupDone=TRUE;
  587.       return (MRESULT) TRUE;
  588.     case WM_COMMAND:    
  589.     switch(SHORT1FROMMP(mp1))
  590.       {
  591.       case IDPB_MKISOFSBROWSE:
  592.     /* User pressed the browse button */
  593.     fd.cbSize = sizeof( fd );
  594.     /* It's an centered 'Open'-dialog */
  595.     fd.fl = FDS_OPEN_DIALOG|FDS_CENTER;
  596.     /* Set the title of the file dialog */
  597.     fd.pszTitle = "Search mkisofs";
  598.     /* Only show *.exe files */
  599.     sprintf(fd.szFullFile,"%s","*.exe");
  600.  
  601.     if( WinFileDlg( HWND_DESKTOP, hwnd, &fd ) == NULLHANDLE )
  602.       {
  603.         /* WinFileDlg failed */
  604.         break;
  605.       }
  606.     if( fd.lReturn == DID_OK )
  607.       {
  608.         WinSetWindowText( WinWindowFromID(hwnd,IDEF_MKISOFSPATH), fd.szFullFile );
  609.       }
  610.     break;
  611.       case IDPB_MKISOFSUNDO:
  612.     /* User pressed the UNDO button */
  613.  
  614.      WinSetWindowText(WinWindowFromID(hwnd,IDEF_MKISOFSPATH),chrMkisofs);
  615.     WinSetWindowText(WinWindowFromID(hwnd,IDEF_MKISOFSOPTIONS),chrMkisofsOptions);
  616.     if(lMKOptions&IDMK_HIDEWINDOW)
  617.       WinCheckButton(hwnd,IDCB_MKISTARTHIDDEN,1);
  618.     if(lMKOptions&IDMK_CLOSEWINDOW)
  619.       WinCheckButton(hwnd,IDCB_MKICLOSEWINDOW,1);
  620.     thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_MKISOFSBROWSE),QWL_USER);
  621.     if(thisPtr) {
  622.       if(thisPtr->cwQueryMkisofsFlags()&IDMK_LOGFILE)
  623.         WinCheckButton(hwnd,IDCB_LOGFILE,1);
  624.       else
  625.         WinCheckButton(hwnd,IDCB_LOGFILE,0);
  626.     }
  627.     break;
  628.       default:
  629.     break;
  630.       }
  631.       return (MRESULT) TRUE;
  632.     default:
  633.       break;
  634.     }
  635.   return WinDefDlgProc(hwnd, msg, mp1, mp2);
  636. }
  637.  
  638. /* This procedure handles the filename options page */ 
  639. MRESULT EXPENTRY fileNameOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 
  640. {
  641.   CWDataFolder* thisPtr;
  642.   ULONG ulFlags;
  643.  
  644.   switch(msg)
  645.     {
  646.     case WM_INITDLG :    
  647.       WinSetWindowULong(WinWindowFromID(hwnd,IDPB_FILENAMEUNDO),
  648.             QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.
  649.       if(((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryMkisofsFlags()&IDMK_ALLOW32CHARS)
  650.         WinCheckButton(hwnd,IDCB_ALLOW32CHARS,1);
  651.       if(((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryMkisofsFlags()&IDMK_LEADINGPERIODS)
  652.         WinCheckButton(hwnd,IDCB_LEADINGPOINTS,1);
  653.       if(((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryMkisofsFlags()&IDMK_JOLIET)
  654.         WinCheckButton(hwnd,IDCB_JOLIET,1);
  655.       if(((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryMkisofsFlags()&IDMK_ROCKRIDGE)
  656.         WinCheckButton(hwnd,IDCB_ROCKRIDGE,1);
  657.       if(((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryMkisofsFlags()&IDMK_TRANSTABLE)
  658.         WinCheckButton(hwnd,IDCB_TRANSTABLE,1);
  659.       return (MRESULT) TRUE;
  660.       /*    case WM_HELP:
  661.             thisPtr=(CWAudioFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CDRECORDBROWSE),QWL_USER);
  662.             if(!thisPtr)
  663.             break;
  664.             switch(WinQueryWindowUShort(WinQueryFocus(HWND_DESKTOP),QWS_ID))
  665.             {
  666.             case IDEF_CDRECORDOPTIONS:
  667.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDOPTIONS,AFHELPLIBRARY);
  668.             case IDPB_WIDERRUFEN:
  669.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_WIDERRUFEN,AFHELPLIBRARY);
  670.             case IDPB_CDRECORDBROWSE:
  671.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_CDRECORDBROWSE,AFHELPLIBRARY);
  672.             case IDEF_CDRECORDPATH:
  673.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDPATH,AFHELPLIBRARY);
  674.             default:
  675.             break;
  676.             }
  677.             return (MRESULT)thisPtr->wpDisplayHelp(IDDLG_CDRECORDSETUP,AFHELPLIBRARY);
  678.             break;*/
  679.         case WM_DESTROY:
  680.       /* The notebook closes and gets destroyed */
  681.       /* Let the WPS save the new instance data */
  682.       thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_FILENAMEUNDO),QWL_USER);
  683.       if(thisPtr) {
  684.         ulFlags=0;
  685.         if(WinQueryButtonCheckstate(hwnd,IDCB_ALLOW32CHARS)&1)
  686.           ulFlags|=IDMK_ALLOW32CHARS;
  687.         if(WinQueryButtonCheckstate(hwnd,IDCB_LEADINGPOINTS)&1)
  688.           ulFlags|=IDMK_LEADINGPERIODS;
  689.         if(WinQueryButtonCheckstate(hwnd,IDCB_JOLIET)&1)
  690.           ulFlags|=IDMK_JOLIET;
  691.         if(WinQueryButtonCheckstate(hwnd,IDCB_ROCKRIDGE)&1)
  692.           ulFlags|=IDMK_ROCKRIDGE;
  693.         if(WinQueryButtonCheckstate(hwnd,IDCB_TRANSTABLE)&1)
  694.           ulFlags|=IDMK_TRANSTABLE;
  695.         thisPtr->cwSetMkisofsFlags(ulFlags,IDMK_ALLOW32CHARS|IDMK_LEADINGPERIODS|IDMK_JOLIET|IDMK_ROCKRIDGE|IDMK_TRANSTABLE);
  696.         thisPtr->wpSaveDeferred();
  697.       }
  698.       /* Setup is done */   
  699.       return (MRESULT) TRUE;
  700.     case WM_COMMAND:    
  701.     switch(SHORT1FROMMP(mp1))
  702.       {
  703.       case IDPB_FILENAMEUNDO:
  704.         /* User pressed the UNDO button */
  705.         thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_FILENAMEUNDO),QWL_USER);
  706.         if(thisPtr) {
  707.           ulFlags=thisPtr->cwQueryMkisofsFlags();
  708.           if(ulFlags&IDMK_ALLOW32CHARS)
  709.             WinCheckButton(hwnd,IDCB_ALLOW32CHARS,1);
  710.           else
  711.             WinCheckButton(hwnd,IDCB_ALLOW32CHARS,0);
  712.           if(ulFlags&IDMK_LEADINGPERIODS)
  713.             WinCheckButton(hwnd,IDCB_LEADINGPOINTS,1);
  714.           else
  715.             WinCheckButton(hwnd,IDCB_LEADINGPOINTS,0);
  716.           if(ulFlags&IDMK_JOLIET)
  717.             WinCheckButton(hwnd,IDCB_JOLIET,1);
  718.           else
  719.             WinCheckButton(hwnd,IDCB_JOLIET,0);
  720.           if(ulFlags&IDMK_ROCKRIDGE)
  721.             WinCheckButton(hwnd,IDCB_ROCKRIDGE,1);
  722.           else
  723.             WinCheckButton(hwnd,IDCB_ROCKRIDGE,0);
  724.           if(ulFlags&IDMK_TRANSTABLE)
  725.             WinCheckButton(hwnd,IDCB_TRANSTABLE,1);
  726.           else
  727.             WinCheckButton(hwnd,IDCB_TRANSTABLE,0);
  728.         }
  729.         break;
  730.       default:
  731.         break;
  732.       }
  733.     return (MRESULT) TRUE;
  734.     default:
  735.       break;
  736.     }
  737.   return WinDefDlgProc(hwnd, msg, mp1, mp2);
  738. }
  739.  
  740. MRESULT EXPENTRY cdTypeOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
  741. {
  742.   CWDataFolder* thisPtr;
  743.   ULONG ulFlags;
  744.   LONG lSpinValue;
  745.   static HWND hwndStatus;
  746.   int a;
  747.   char chrCD[4];
  748.  
  749.   switch(msg)
  750.     {
  751.     case WM_INITDLG :    
  752.       WinSetWindowULong(WinWindowFromID(hwnd,IDPB_CDTYPEUNDO),
  753.             QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.
  754.       WinSendMsg(WinWindowFromID(hwnd,IDSB_PREVIOUSSTART),SPBM_SETLIMITS,MPFROMLONG(9999999),MPFROMLONG(0L));
  755.       WinSendMsg(WinWindowFromID(hwnd,IDSB_NEXTSTART),SPBM_SETLIMITS,MPFROMLONG(9999999),MPFROMLONG(0L));
  756.       WinSendMsg(WinWindowFromID(hwnd,IDSB_PREVIOUSSTART),SPBM_SETCURRENTVALUE,
  757.                  MPFROMLONG(((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryPreviousStartSector()),0L);
  758.       WinSendMsg(WinWindowFromID(hwnd,IDSB_NEXTSTART),SPBM_SETCURRENTVALUE,
  759.                  MPFROMLONG(((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryNextStartSector()),0L);
  760.       hwndStatus=0;
  761.       ulFlags=((CWDataFolder*)PVOIDFROMMP(mp2))->cwQueryCDTypeFlags();
  762.       enableCDTypeCntrls(hwnd,(CWDataFolder*)PVOIDFROMMP(mp2));
  763.  
  764.       /* Insert CD-drives in dropdown box */
  765.       for( a=0; a<iNumCD ;a++) {
  766.         chrCD[0]=cFirstCD+a;
  767.         chrCD[1]=':';
  768.         chrCD[2]=0;
  769.         WinSendMsg(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),LM_INSERTITEM,MPFROMSHORT(LIT_END),(MPARAM)chrCD);
  770.         if(!a){
  771.           if(!bMultiSessionDone)
  772.             WinSetWindowText(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),chrCD);
  773.           else
  774.             WinSetWindowText(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),chosenMultiSessionCD);
  775.         }
  776.       }      
  777.       return (MRESULT) TRUE;
  778.       /*    case WM_HELP:
  779.             thisPtr=(CWAudioFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CDRECORDBROWSE),QWL_USER);
  780.             if(!thisPtr)
  781.             break;
  782.             switch(WinQueryWindowUShort(WinQueryFocus(HWND_DESKTOP),QWS_ID))
  783.             {
  784.             case IDEF_CDRECORDOPTIONS:
  785.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDOPTIONS,AFHELPLIBRARY);
  786.             case IDPB_WIDERRUFEN:
  787.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_WIDERRUFEN,AFHELPLIBRARY);
  788.             case IDPB_CDRECORDBROWSE:
  789.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_CDRECORDBROWSE,AFHELPLIBRARY);
  790.             case IDEF_CDRECORDPATH:
  791.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDPATH,AFHELPLIBRARY);
  792.             default:
  793.             break;
  794.             }
  795.             return (MRESULT)thisPtr->wpDisplayHelp(IDDLG_CDRECORDSETUP,AFHELPLIBRARY);
  796.             break;*/
  797.         case WM_DESTROY:
  798.       /* The notebook closes and gets destroyed */
  799.       /* Let the WPS save the new instance data */
  800.       thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CDTYPEUNDO),QWL_USER);
  801.       if(thisPtr) {
  802.         ulFlags=0;
  803.         if(WinQueryButtonCheckstate(hwnd,IDRB_MULTISESSION)&1)
  804.           ulFlags|=IDCDT_MULTISESSION;
  805.         if(WinQueryButtonCheckstate(hwnd,IDCB_FIRSTSESSION)&1)
  806.            ulFlags|=IDCDT_FIRSTSESSION;
  807.         if(WinQueryButtonCheckstate(hwnd,IDCB_WRITERSOURCE)&1)
  808.           ulFlags|=IDCDT_USEWRITER;
  809.         if(WinQueryButtonCheckstate(hwnd,IDRB_TRACKDATA)&1)
  810.           ulFlags|=IDCDT_TRACKDATA;
  811.         else
  812.           if(WinQueryButtonCheckstate(hwnd,IDRB_TRACKMODE2)&1)
  813.             ulFlags|=IDCDT_TRACKMODE2;
  814.           else
  815.             if(WinQueryButtonCheckstate(hwnd,IDRB_TRACKXA1)&1)
  816.               ulFlags|=IDCDT_TRACKXA1;
  817.             else
  818.               if(WinQueryButtonCheckstate(hwnd,IDRB_TRACKXA2)&1)
  819.                 ulFlags|=IDCDT_TRACKXA2;
  820.               else
  821.                 if(WinQueryButtonCheckstate(hwnd,IDRB_TRACKCDI)&1)
  822.                   ulFlags|=IDCDT_TRACKCDI;
  823.  
  824.         //        thisPtr->cwSetCDTypeFlags(ulFlags,IDCDT_MULTISESSION|IDCDT_FIRSTSESSION|IDCDT_USEWRITER);
  825.         thisPtr->cwSetCDTypeFlags(ulFlags,CDT_ALLFLAGS);
  826.         /* Spinbuttons */
  827.         WinSendMsg(WinWindowFromID(hwnd,IDSB_PREVIOUSSTART),SPBM_QUERYVALUE,&lSpinValue,MPFROM2SHORT(0,SPBQ_UPDATEIFVALID));
  828.         thisPtr->cwSetPreviousStartSector(lSpinValue);
  829.         WinSendMsg(WinWindowFromID(hwnd,IDSB_NEXTSTART),SPBM_QUERYVALUE,&lSpinValue,MPFROM2SHORT(0,SPBQ_UPDATEIFVALID));
  830.         thisPtr->cwSetNextStartSector(lSpinValue);
  831.         thisPtr->wpSaveDeferred();
  832.       }
  833.       /* Destroy status window if not already done */
  834.       if(WinIsWindow(WinQueryAnchorBlock(HWND_DESKTOP),hwndStatus)) {
  835.         WinDestroyWindow(hwndStatus);
  836.         hwndStatus=0;
  837.       }
  838.       /* Query the cd-drive for previous image */
  839.       WinQueryWindowText( WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),sizeof(chosenMultiSessionCD),chosenMultiSessionCD);
  840.       /* Setup is done */   
  841.       bMultiSessionDone=TRUE;
  842.       return (MRESULT) TRUE;
  843.     case WM_CONTROL:
  844.       thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CDTYPEUNDO),QWL_USER);
  845.       if(!thisPtr) return (MRESULT) TRUE;
  846.       switch(SHORT1FROMMP(mp1))
  847.         {
  848.         case IDRB_SINGLESESSION:
  849.           thisPtr->cwEnableMultiSessionCntrls(hwnd,FALSE);
  850.           break;
  851.         case IDRB_MULTISESSION:
  852.           thisPtr->cwEnableMultiSessionCntrls(hwnd,TRUE);
  853.           //  enableCDTypeCntrls(hwnd,thisPtr);
  854.           if(WinQueryButtonCheckstate(hwnd,IDCB_FIRSTSESSION)&1) {
  855.             WinEnableWindow(WinWindowFromID(hwnd,IDCB_WRITERSOURCE),FALSE);
  856.             WinEnableWindow(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),FALSE);
  857.             WinEnableWindow(WinWindowFromID(hwnd,IDST_PREVIOUSINFO),FALSE);
  858.             WinEnableWindow(WinWindowFromID(hwnd,IDST_SOURCEDRIVE),FALSE);
  859.             WinEnableWindow(WinWindowFromID(hwnd,IDSB_PREVIOUSSTART),FALSE);
  860.             WinEnableWindow(WinWindowFromID(hwnd,IDSB_NEXTSTART),FALSE);
  861.             WinEnableWindow(WinWindowFromID(hwnd,IDPB_GETMSINFO),FALSE);
  862.           }
  863.           if(WinQueryButtonCheckstate(hwnd,IDCB_WRITERSOURCE)&1) {
  864.             WinEnableWindow(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),FALSE);
  865.             WinEnableWindow(WinWindowFromID(hwnd,IDST_SOURCEDRIVE),FALSE);
  866.           }
  867.           break;
  868.         case IDCB_FIRSTSESSION:
  869.           if(WinQueryButtonCheckstate(hwnd,IDCB_FIRSTSESSION)&1) {
  870.             thisPtr->cwEnableMultiSessionCntrls(hwnd,FALSE);
  871.             WinEnableWindow(WinWindowFromID(hwnd,IDCB_FIRSTSESSION),TRUE);
  872.           }
  873.           else {
  874.             thisPtr->cwEnableMultiSessionCntrls(hwnd,TRUE);
  875.             if(WinQueryButtonCheckstate(hwnd,IDCB_WRITERSOURCE)&1) {
  876.               WinEnableWindow(WinWindowFromID(hwnd,IDST_SOURCEDRIVE),FALSE);
  877.               WinEnableWindow(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),FALSE);
  878.             }      
  879.           }
  880.           break;
  881.         case IDCB_WRITERSOURCE:
  882.           if(WinQueryButtonCheckstate(hwnd,IDCB_WRITERSOURCE)&1){
  883.             WinEnableWindow(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),FALSE);
  884.             WinEnableWindow(WinWindowFromID(hwnd,IDST_SOURCEDRIVE),FALSE);
  885.           }
  886.           else {
  887.             WinEnableWindow(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),TRUE);
  888.             WinEnableWindow(WinWindowFromID(hwnd,IDST_SOURCEDRIVE),TRUE);
  889.           }
  890.           break;
  891.         default:
  892.           break;
  893.         }
  894.       break;
  895.     case WM_APPTERMINATENOTIFY:
  896.       if(WinIsWindow(WinQueryAnchorBlock(HWND_DESKTOP),hwndStatus)) {
  897.         WinDestroyWindow(hwndStatus);
  898.         hwndStatus=0;
  899.       }
  900.       if(mp1==mp2) {
  901.         WinMessageBox(  HWND_DESKTOP, hwnd,
  902.                         "Can't get multisession info from cdrecord/2!",
  903.                         "Get multisession info error",
  904.                         0UL, MB_OK | MB_ICONEXCLAMATION |MB_MOVEABLE);
  905.         WinSendMsg(WinWindowFromID(hwnd,IDSB_PREVIOUSSTART),SPBM_SETCURRENTVALUE,mp1,0L);
  906.         WinSendMsg(WinWindowFromID(hwnd,IDSB_NEXTSTART),SPBM_SETCURRENTVALUE,mp2,0L);
  907.       }
  908.       else {
  909.         /* Update spin buttons */
  910.         WinSendMsg(WinWindowFromID(hwnd,IDSB_PREVIOUSSTART),SPBM_SETCURRENTVALUE,mp1,0L);
  911.         WinSendMsg(WinWindowFromID(hwnd,IDSB_NEXTSTART),SPBM_SETCURRENTVALUE,mp2,0L);
  912.       }
  913.       break;
  914.     case WM_COMMAND:    
  915.       switch(SHORT1FROMMP(mp1))
  916.         {
  917.         case IDPB_GETMSINFO:
  918.           if(hwndStatus)break;
  919.           if(MBID_OK==WinMessageBox(  HWND_DESKTOP, hwnd,
  920.                                       "Please insert the CD with the previous session into the CD-writer.",
  921.                                       "Get multisession info",
  922.                                       0UL, MB_OKCANCEL | MB_ICONEXCLAMATION |MB_MOVEABLE)) {
  923.             /* Get msinfo */
  924.             hwndStatus=WinLoadDlg(HWND_DESKTOP,hwnd,
  925.                                            msInfoStatusDialogProc,queryModuleHandle(),IDDLG_GETMSINFOSTATUS,0);
  926.             launchMsInfo(hwnd);
  927.           }          
  928.           break;
  929.         case IDPB_CDTYPEUNDO:
  930.           /* User pressed the UNDO button */
  931.           thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CDTYPEUNDO),QWL_USER);
  932.           if(thisPtr) {
  933.             WinSendMsg(WinWindowFromID(hwnd,IDSB_PREVIOUSSTART),SPBM_SETCURRENTVALUE,
  934.                        MPFROMLONG(thisPtr->cwQueryPreviousStartSector()),0L);
  935.             WinSendMsg(WinWindowFromID(hwnd,IDSB_NEXTSTART),SPBM_SETCURRENTVALUE,
  936.                        MPFROMLONG(thisPtr->cwQueryNextStartSector()),0L);
  937.             ulFlags=thisPtr->cwQueryCDTypeFlags();
  938.             /* Enable all multisesson controls */
  939.             thisPtr->cwEnableMultiSessionCntrls(hwnd,TRUE);
  940.             enableCDTypeCntrls(hwnd,thisPtr);
  941.           }
  942.           WinSetWindowText(WinWindowFromID(hwnd,IDDD_SOURCEDRIVE),chosenMultiSessionCD);
  943.           break;  
  944.         default:
  945.           break;
  946.         }
  947.       return (MRESULT) TRUE;
  948.     default:
  949.       break;
  950.     }
  951.   return WinDefDlgProc(hwnd, msg, mp1, mp2); 
  952. }
  953.  
  954.  
  955. /* This procedure handles the author settings page */ 
  956. MRESULT EXPENTRY authorOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 
  957. {
  958.   CWDataFolder* thisPtr;
  959.  
  960.   switch(msg)
  961.     {
  962.     case WM_INITDLG :    
  963.       WinSetWindowULong(WinWindowFromID(hwnd,IDPB_AUTHORUNDO),
  964.                         QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.
  965.       thisPtr=(CWDataFolder*)PVOIDFROMMP(mp2);
  966.       WinSendMsg(WinWindowFromID(hwnd,IDEF_APPLICATION),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)128),0);
  967.       WinSetWindowText(WinWindowFromID(hwnd,IDEF_APPLICATION),thisPtr->chrApplication);
  968.       WinSendMsg(WinWindowFromID(hwnd,IDEF_PUBLISHER),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)128),0);
  969.       WinSetWindowText(WinWindowFromID(hwnd,IDEF_PUBLISHER),thisPtr->chrPublisher);
  970.       WinSendMsg(WinWindowFromID(hwnd,IDEF_PREPARER),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)128),0);
  971.       WinSetWindowText(WinWindowFromID(hwnd,IDEF_PREPARER),thisPtr->chrPreparer);
  972.       WinSendMsg(WinWindowFromID(hwnd,IDEF_COPYRIGHT),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)37),0);
  973.       WinSetWindowText(WinWindowFromID(hwnd,IDEF_COPYRIGHT),thisPtr->chrCopyright);
  974.       return (MRESULT) TRUE;
  975.       /*    case WM_HELP:
  976.             thisPtr=(CWAudioFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_CDRECORDBROWSE),QWL_USER);
  977.             if(!thisPtr)
  978.             break;
  979.             switch(WinQueryWindowUShort(WinQueryFocus(HWND_DESKTOP),QWS_ID))
  980.             {
  981.             case IDEF_CDRECORDOPTIONS:
  982.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDOPTIONS,AFHELPLIBRARY);
  983.             case IDPB_WIDERRUFEN:
  984.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_WIDERRUFEN,AFHELPLIBRARY);
  985.             case IDPB_CDRECORDBROWSE:
  986.             return (MRESULT)thisPtr->wpDisplayHelp(IDPB_CDRECORDBROWSE,AFHELPLIBRARY);
  987.             case IDEF_CDRECORDPATH:
  988.             return (MRESULT)thisPtr->wpDisplayHelp(IDEF_CDRECORDPATH,AFHELPLIBRARY);
  989.             default:
  990.             break;
  991.             }
  992.             return (MRESULT)thisPtr->wpDisplayHelp(IDDLG_CDRECORDSETUP,AFHELPLIBRARY);
  993.             break;*/
  994.     case WM_DESTROY:
  995.       /* The notebook closes and gets destroyed */
  996.  
  997.       /* Let the WPS save the new instance data */
  998.       thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_AUTHORUNDO),QWL_USER);
  999.       if(thisPtr) {
  1000.         WinQueryWindowText( WinWindowFromID(hwnd,IDEF_APPLICATION),sizeof(thisPtr->chrApplication),thisPtr->chrApplication);
  1001.         WinQueryWindowText( WinWindowFromID(hwnd,IDEF_PUBLISHER),sizeof(thisPtr->chrPublisher),thisPtr->chrPublisher);
  1002.         WinQueryWindowText( WinWindowFromID(hwnd,IDEF_PREPARER),sizeof(thisPtr->chrPreparer),thisPtr->chrPreparer);
  1003.         WinQueryWindowText( WinWindowFromID(hwnd,IDEF_COPYRIGHT),sizeof(thisPtr->chrCopyright),thisPtr->chrCopyright);
  1004.         thisPtr->wpSaveDeferred();
  1005.       }
  1006.       /* Setup is done */
  1007.       return (MRESULT) TRUE;
  1008.     case WM_COMMAND:    
  1009.     switch(SHORT1FROMMP(mp1))
  1010.       {
  1011.       case IDPB_AUTHORUNDO:
  1012.         /* User pressed the UNDO button */
  1013.         thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_AUTHORUNDO),QWL_USER);
  1014.         if(thisPtr) {
  1015.           WinSetWindowText(WinWindowFromID(hwnd,IDEF_APPLICATION),thisPtr->chrApplication);
  1016.           WinSetWindowText(WinWindowFromID(hwnd,IDEF_PUBLISHER),thisPtr->chrPublisher);
  1017.           WinSetWindowText(WinWindowFromID(hwnd,IDEF_PREPARER),thisPtr->chrPreparer);
  1018.           WinSetWindowText(WinWindowFromID(hwnd,IDEF_COPYRIGHT),thisPtr->chrCopyright);
  1019.         }
  1020.         break;
  1021.       default:
  1022.         break;
  1023.       }
  1024.     return (MRESULT) TRUE;
  1025.     default:
  1026.       break;
  1027.     }
  1028.   return WinDefDlgProc(hwnd, msg, mp1, mp2);
  1029. }
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.