home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / ACDCR032.ZIP / source / dataoverriddenwpmethods.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1999-08-08  |  12.9 KB  |  382 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. #include "audiofolder.hh"
  21. #include "audiofolderhelp.h"
  22.  
  23. #include <stdlib.h>
  24. #include <stdio.h>
  25.  
  26. BOOL MkisofsSetupDone=FALSE;
  27. char chrMkisofs[CCHMAXPATH];/* Path to mkisofs */
  28. char chrMkisofsOptions[CCHMAXPATH];
  29. LONG lMKOptions;
  30. extern char chrCDRecord[CCHMAXPATH];/* Path to cdrecord */
  31. extern char chrCDROptions[CCHMAXPATH];
  32. extern LONG  lCDROptions;
  33. extern char chosenWriter[3];
  34.  
  35. void _Optlink toolsThreadFunc (void *arg);
  36. HMODULE queryModuleHandle(void);
  37. MRESULT EXPENTRY imageNameDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  38. MRESULT EXPENTRY mkisofsMainDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  39. MRESULT EXPENTRY statusLineDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  40. MRESULT EXPENTRY dataCDStatusLineDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  41.  
  42.  
  43. /************************************************/
  44. /* Override function:                           */
  45. /************************************************/
  46. BOOL CWDataFolder::wpModifyPopupMenu(HWND hwndMenu, HWND hwndCnr, ULONG ulPosition)
  47. {
  48.   wpInsertPopupMenuItems(hwndMenu,1,queryModuleHandle(),ID_MENUTOOLS,0);
  49.   wpInsertPopupMenuItems(hwndMenu,-1,queryModuleHandle(),ID_MENUABOUT,WPMENUID_HELP);
  50.   return CWProgFolder::wpModifyPopupMenu(hwndMenu, hwndCnr,  ulPosition); 
  51. }
  52.  
  53.  
  54. BOOL CWDataFolder::wpMenuItemSelected(HWND hwndFrame,ULONG ulMenuId)
  55. {
  56.   int tid;
  57.  
  58.   /* char text[200];
  59.      sprintf(text,"Menu-Id: %d",ulMenuId);
  60.      WinMessageBox( HWND_DESKTOP, HWND_DESKTOP, text, "wpMenuItemSelected()",
  61.      0UL, MB_OK | MB_ICONEXCLAMATION );
  62.      */ 
  63.   switch(ulMenuId)
  64.     {
  65.       /*    case 717://Change to tree view
  66.       DosBeep(100,100);
  67.       return TRUE;*/
  68.     case ID_TOOLSITEM:
  69.       tid=_beginthread(toolsThreadFunc,NULL,8192*2,this); //Fehlerbehandlung fehlt
  70.       return TRUE;
  71.     case ID_ABOUTITEM:
  72.       cwShowAboutDlg(queryModuleHandle(),IDDLG_ABOUT);
  73.       return TRUE;
  74.     default:
  75.       break;
  76.     }
  77.   return CWProgFolder::wpMenuItemSelected( hwndFrame, ulMenuId);
  78. }
  79.  
  80.  
  81. void CWDataFolder::wpCopiedFromTemplate()
  82. {
  83.   wpSetup("ICONVIEWPOS=20,15,50,60");
  84.  
  85.   CWProgFolder:: wpCopiedFromTemplate();
  86. }
  87.  
  88. BOOL CWDataFolder::wpAddSettingsPages(HWND hwndNotebook)
  89. {
  90.   BOOL rc;
  91.   
  92.   rc=   ((somTD_WPObject_wpAddSettingsPages)
  93.          somParentNumResolve(__ClassObject->somGetPClsMtabs(),
  94.                              1,
  95.                              __ClassObject->
  96.                              somGetMethodToken(somIdFromString
  97.                                                ("wpAddSettingsPages")))
  98.          )(this,hwndNotebook);
  99.   //  if(bGrabberFirst)
  100.   rc && AddCdrecordOptionPage(hwndNotebook)
  101.     && AddMkisofsOptionPage(hwndNotebook)
  102.     && AddAuthorOptionPage(hwndNotebook)
  103.     && AddFileNameOptionPage(hwndNotebook)
  104.     && AddCDTypeOptionPage(hwndNotebook);
  105.   //&& AddCreateOptionPage(hwndNotebook);
  106.  
  107.  
  108.   /*else
  109.     rc && AddGrabOptionPage(hwndNotebook)
  110.       && AddCdrecordOptionPage(hwndNotebook);
  111.       */
  112.   return rc;
  113.   // Durch obige Konstruktion wird die Elternmethode des direkten Vorgängers aufgerufen,
  114.   // und nicht die ursprüngliche von WPLaunchPad, falls WPLaunchPad replaced wurde.
  115.   // Durch diesen Aufruf gehen eventuelle Erweiterungen durch Vererbung verloren:
  116.   //            < return WPLaunchPad::wpMenuItemSelected(hwndFrame, ulMenuId); >
  117.   // Dieser Aufruf macht Ergänzungen in wpobject.hh erforderlich!!! Wird durch ein VAC-Fixpack vielleicht später
  118.   //erledigt    
  119. }
  120.  
  121. HWND CWDataFolder::wpOpen(HWND hwndCnr,ULONG ulView,ULONG ulParam)
  122. {
  123.   HWND hwnd;
  124.   SIZEL sizelLeft={0};
  125.   HWND myFrameHWND;
  126.   RECTL rectl;
  127.   MENUITEM mi;
  128.   HWND hwndMenu;
  129.   int iItemCount;
  130.   char text[CCHMAXPATH];
  131.   char text2[CCHMAXPATH];
  132.   WPObject* wpObject;
  133.   HOBJECT hObject;
  134.   ULONG ul;
  135.     
  136.   hwnd=CWProgFolder::wpOpen(hwndCnr, ulView, ulParam);/* Call parent to build folder window */
  137.  
  138.   if(ulView!=OPEN_SETTINGS){
  139.  
  140.     //    oldone=WinSubclassWindow(hwnd,toolBarHandleFrameProc);
  141.     
  142.     myFrameHWND=WinWindowFromID(hwnd,FID_MENU);//Get menu hwnd
  143.         
  144.     if(myFrameHWND){
  145.       iItemCount=(int)WinSendMsg(myFrameHWND,MM_QUERYITEMCOUNT,(MPARAM)0,
  146.                                  (MPARAM)0);
  147.       hwndMenu=WinLoadMenu(myFrameHWND,queryModuleHandle(),ID_TBMENUTOOLS);
  148.       //723
  149.       if(hwndMenu){
  150.         mi.iPosition=iItemCount-1;
  151.         mi.afStyle=MIS_TEXT|MIS_SUBMENU;
  152.         mi.id=ID_TBMENUTOOLS;
  153.         mi.afAttribute=NULL;                
  154.         mi.hwndSubMenu=hwndMenu;
  155.         mi.hItem=NULL;
  156.         WinSendMsg(myFrameHWND,MM_INSERTITEM,(MPARAM)&mi,
  157.                    (MPARAM)"Misc-Tools"); 
  158.       }/* end of if(hwndMenu) */
  159.     }
  160.  
  161.     /* This is the imagename-frameCtrl. */
  162.     myFrameHWND=WinLoadDlg(hwnd,hwnd,imageNameDialogProc,queryModuleHandle(),IDDLG_IMAGENAME,this);
  163.     hwndImageName=myFrameHWND;
  164.     if(myFrameHWND){
  165.       WinQueryWindowRect(myFrameHWND,&rectl);
  166.       sizelLeft.cy=rectl.yTop-rectl.yBottom;
  167.       cwAddFrameCtl(hwnd, myFrameHWND, sizelLeft, FCTL_TOP,0);
  168.     }
  169.     /* This is the main mkisofs frame control */
  170.     myFrameHWND=WinLoadDlg(hwnd,hwnd,mkisofsMainDialogProc,queryModuleHandle(),IDDLG_MKISOFSMAIN,this);
  171.     hwndMkisofsMain=myFrameHWND;
  172.     if(myFrameHWND){
  173.       WinQueryWindowRect(myFrameHWND,&rectl);
  174.       sizelLeft.cx=rectl.xRight-rectl.xLeft;
  175.       cwAddFrameCtl(hwnd, myFrameHWND, sizelLeft, FCTL_LEFT,FCTL_POSBELOW);
  176.     }
  177.     /* This is the statusline frame control */
  178.     myFrameHWND=WinLoadDlg(hwnd,hwnd,dataCDStatusLineDialogProc,queryModuleHandle(),IDDLG_STATUS,this);
  179.     hwndStatusCntrl=myFrameHWND;
  180.     if(myFrameHWND){
  181.       WinQueryWindowRect(myFrameHWND,&rectl);
  182.       sizelLeft.cy=rectl.yTop-rectl.yBottom;
  183.       cwAddFrameCtl(hwnd, myFrameHWND, sizelLeft, FCTL_BOTTOM,0);
  184.       cwSetStatusText(NULL);
  185.     }
  186.  
  187.     /*    ul=sizeof(text);
  188.       if(!wpQueryRealName(text,&ul,TRUE)) {
  189.       sprintf(text2,"d:\\arbeitsoberfläche\\data-cd-creator\\nice");
  190.       hObject=WinQueryObject("<TEST_PAD>");
  191.       if(hObject) {
  192.       wpObject=((M_WPObject*)somGetClass())->wpclsQueryObject(hObject);
  193.       if(wpObject) {
  194.       myFrameHWND=wpObject->wpOpen(NULLHANDLE,OPEN_DEFAULT,NULL);
  195.       if(myFrameHWND){
  196.       oldone=WinSubclassWindow(myFrameHWND,toolBarHandleFrameProc);
  197.       tbObject=wpObject;
  198.       WinQueryWindowRect(myFrameHWND,&rectl);
  199.       sizelLeft.cx=rectl.xRight-rectl.xLeft;
  200.       WinShowWindow(myFrameHWND,FALSE);
  201.       WinSetOwner(myFrameHWND,hwnd);
  202.       WinSetParent(myFrameHWND,hwnd,FALSE);
  203.       cwAddFrameCtl(hwnd, myFrameHWND, sizelLeft, FCTL_RIGHT,0);
  204.       }
  205.       }
  206.       }
  207.       }*/
  208.     
  209.     cwUpdateFrame(hwnd);
  210.   }
  211.   return hwnd;
  212. }
  213.  
  214.  
  215. BOOL CWDataFolder::wpClose()
  216. {
  217.   /* Wird nicht aufgerufen! (??)*/
  218.   //DosBeep(1000,1000);
  219.     /*  if(tbObject) {
  220.     DosBeep(5000,1000);
  221.     tbObject->wpClose();
  222.   }*/
  223.   return CWProgFolder::wpClose();
  224. }
  225.  
  226. BOOL CWDataFolder::wpRestoreState(ULONG ulReserved)
  227. {
  228.   ULONG keyLength;
  229.   char profileName[CCHMAXPATH];
  230.   char moduleName[CCHMAXPATH];
  231.   char *chrPtr;
  232.   HINI hini=0;
  233.   char    text[200];
  234.   ULONG ulSize;
  235.  
  236.   sDummy=1;    
  237.   memset(chrStatusText,0,sizeof(chrStatusText));
  238.  
  239.   /* Get mkisofsflags from folder-EA */
  240.   if(!wpRestoreLong("CWDataFolder",IDKEY_MKISOFSFLAGS,&ulMkisofsFlags))
  241.     ulMkisofsFlags=IDMK_ALLOW32CHARS|IDMK_LEADINGPERIODS|IDMK_ROCKRIDGE|IDMK_LOGFILE;
  242.   /* Get createflags from folder-EA */
  243.   if(!wpRestoreLong("CWDataFolder",IDKEY_CREATEFLAGS,&ulCreateFlags))
  244.     ulCreateFlags=IDCR_IMAGEONLY;
  245.   /* Get CD-type flags from folder-EA */
  246.   if(!wpRestoreLong("CWDataFolder",IDKEY_CDTYPEFLAGS,&ulCDTypeFlags))
  247.     ulCDTypeFlags=IDCDT_USEWRITER|IDCDT_FIRSTSESSION|IDCDT_TRACKDATA;
  248.   keyLength=sizeof(chrApplication);
  249.   if(!wpRestoreString("CWDataFolder",IDKEY_APPLICATION,chrApplication,&keyLength))
  250.     sprintf(chrApplication,"");
  251.   keyLength=sizeof(chrPublisher);
  252.   if(!wpRestoreString("CWDataFolder",IDKEY_PUBLISHER,chrPublisher,&keyLength))
  253.     sprintf(chrPublisher,"");
  254.   keyLength=sizeof(chrPreparer);
  255.   if(!wpRestoreString("CWDataFolder",IDKEY_PREPARER,chrPreparer,&keyLength))
  256.     sprintf(chrPreparer,"");
  257.   keyLength=sizeof(chrCopyright);
  258.   if(!wpRestoreString("CWDataFolder",IDKEY_COPYRIGHT,chrCopyright,&keyLength))
  259.     sprintf(chrCopyright,"");
  260.  
  261.   /* Get folder of class-dll. */
  262.   DosQueryModuleName(queryModuleHandle(),sizeof(moduleName),moduleName);
  263.   chrPtr=strrchr(moduleName,'\\');
  264.   if(chrPtr)
  265.     *chrPtr=0;
  266.   /* Build full path for cdrecord.ini file */
  267.   sprintf(profileName,"%s\\cdrecord.ini",moduleName);       
  268.   hini=PrfOpenProfile(WinQueryAnchorBlock(HWND_DESKTOP),profileName);
  269.   do{
  270.     if(!hini) {
  271.       WinMessageBox(  HWND_DESKTOP,
  272.                       HWND_DESKTOP,
  273.                       "Warning! Cannot open Ini-file!",
  274.                       "Data-CD-Creator",
  275.                       0UL,
  276.                       MB_OK | MB_ICONEXCLAMATION );
  277.       break;
  278.     }/* end of if(!hini) */
  279.  
  280.     keyLength=PrfQueryProfileString(hini,"Mkisofs","mkisofs","",chrMkisofs,sizeof(chrMkisofs));
  281.     if(keyLength==1){
  282.       break;/* First opening. We havn't got entries yet */
  283.     }
  284.     PrfQueryProfileString(hini,"Mkisofs","mkisofsoptions","",chrMkisofsOptions,sizeof(chrMkisofsOptions));
  285.     lMKOptions=PrfQueryProfileInt(hini,"Mkisofs","options",IDMK_HIDEWINDOW|IDMK_CLOSEWINDOW);
  286.     ulSize=sizeof(lMKOptions);
  287.     PrfQueryProfileData(hini,"Mkisofs","options",&lMKOptions,&ulSize);
  288.     MkisofsSetupDone=TRUE;
  289.     break;
  290.   } while(TRUE);
  291.   if(hini)PrfCloseProfile(hini);
  292.   return CWProgFolder::wpRestoreState(ulReserved);
  293. }
  294.  
  295. BOOL CWDataFolder::wpSaveState()
  296. {
  297.   char profileName[CCHMAXPATH];
  298.   char moduleName[CCHMAXPATH];
  299.   char *chrPtr;
  300.   HINI hini=0;
  301.   BOOL rc=TRUE;
  302.  
  303.   if(!wpSaveLong("CWDataFolder",IDKEY_MKISOFSFLAGS,ulMkisofsFlags))
  304.     rc=FALSE;
  305.   if(!wpSaveLong("CWDataFolder",IDKEY_CREATEFLAGS,ulCreateFlags))
  306.     rc=FALSE;
  307.   if(!wpSaveLong("CWDataFolder",IDKEY_CDTYPEFLAGS,ulCDTypeFlags))
  308.     rc=FALSE;
  309.   if(!wpSaveString("CWDataFolder",IDKEY_APPLICATION,chrApplication))
  310.     rc=FALSE;
  311.   if(!wpSaveString("CWDataFolder",IDKEY_PUBLISHER,chrPublisher))
  312.     rc=FALSE;
  313.   if(!wpSaveString("CWDataFolder",IDKEY_PREPARER,chrPreparer))
  314.     rc=FALSE;
  315.   if(!wpSaveString("CWDataFolder",IDKEY_COPYRIGHT,chrCopyright))
  316.     rc=FALSE;
  317.  
  318.   if(!rc){
  319.     WinMessageBox(  HWND_DESKTOP,
  320.                     HWND_DESKTOP,
  321.                     "Warning! Cannot write instance data!",
  322.                     "Data-CD-Creator",
  323.                     0UL,
  324.                     MB_OK | MB_ICONEXCLAMATION );
  325.   }
  326.  
  327.   rc=TRUE;
  328.   /* Get folder of class-dll. */
  329.   DosQueryModuleName(queryModuleHandle(),sizeof(moduleName),moduleName);
  330.   chrPtr=strrchr(moduleName,'\\');
  331.   if(chrPtr)
  332.     *chrPtr=0;
  333.   /* Build full path */
  334.   sprintf(profileName,"%s\\cdrecord.ini",moduleName);       
  335.   do{  
  336.     hini=PrfOpenProfile(WinQueryAnchorBlock(HWND_DESKTOP),profileName);
  337.     if(!hini) {
  338.       WinMessageBox(  HWND_DESKTOP,
  339.                       HWND_DESKTOP,
  340.                       "Warning! Cannot open Ini-file!",
  341.                       "Data-CD-Creator",
  342.                       0UL,
  343.                       MB_OK | MB_ICONEXCLAMATION );
  344.       break;
  345.     }/* end of if(!hini) */
  346.     /* Save cdrecord-path */
  347.     if(!PrfWriteProfileString(hini,"CDWriter","cdrecord",chrCDRecord)) 
  348.       break;    
  349.     /* Save cdrecord options */
  350.     if(!PrfWriteProfileString(hini,"CDWriter","cdroptions",chrCDROptions))    
  351.       break;
  352.  
  353.     if(!PrfWriteProfileString(hini,"CDWriter","writedrive",chosenWriter))
  354.       break;
  355.     
  356.     if(!PrfWriteProfileString(hini,"Mkisofs","mkisofs",chrMkisofs)){
  357.       rc=FALSE;
  358.       break;
  359.     }
  360.     if(!PrfWriteProfileString(hini,"Mkisofs","mkisofsoptions",chrMkisofsOptions)){
  361.       rc=FALSE;
  362.       break;
  363.     };
  364.     if(!PrfWriteProfileData(hini,"Mkisofs","options",&lMKOptions,sizeof(lMKOptions))) {
  365.       rc=FALSE;
  366.       break;
  367.     };
  368.    
  369.     break;
  370.   }while(TRUE);
  371.   if(hini)PrfCloseProfile(hini);
  372.   if(!rc) {
  373.     WinMessageBox(  HWND_DESKTOP,
  374.                     HWND_DESKTOP,
  375.                     "Warning! Cannot write to Ini-file!",
  376.                     "Data-CD-Creator",
  377.                     0UL,
  378.                     MB_OK | MB_ICONEXCLAMATION );
  379.   }
  380.   return CWProgFolder::wpSaveState();
  381. }
  382.