home *** CD-ROM | disk | FTP | other *** search
- /*
- * This file is (C) Chris Wohlgemuth 1999
- */
- /*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
- #include "audiofolder.hh"
- #include "audiofolderhelp.h"
-
- #include <stdlib.h>
- #include <stdio.h>
-
- BOOL MkisofsSetupDone=FALSE;
- char chrMkisofs[CCHMAXPATH];/* Path to mkisofs */
- char chrMkisofsOptions[CCHMAXPATH];
- LONG lMKOptions;
- extern char chrCDRecord[CCHMAXPATH];/* Path to cdrecord */
- extern char chrCDROptions[CCHMAXPATH];
- extern LONG lCDROptions;
- extern char chosenWriter[3];
-
- void _Optlink toolsThreadFunc (void *arg);
- HMODULE queryModuleHandle(void);
- MRESULT EXPENTRY imageNameDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
- MRESULT EXPENTRY mkisofsMainDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
- MRESULT EXPENTRY statusLineDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
- MRESULT EXPENTRY dataCDStatusLineDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
-
-
- /************************************************/
- /* Override function: */
- /************************************************/
- BOOL CWDataFolder::wpModifyPopupMenu(HWND hwndMenu, HWND hwndCnr, ULONG ulPosition)
- {
- wpInsertPopupMenuItems(hwndMenu,1,queryModuleHandle(),ID_MENUTOOLS,0);
- wpInsertPopupMenuItems(hwndMenu,-1,queryModuleHandle(),ID_MENUABOUT,WPMENUID_HELP);
- return CWProgFolder::wpModifyPopupMenu(hwndMenu, hwndCnr, ulPosition);
- }
-
-
- BOOL CWDataFolder::wpMenuItemSelected(HWND hwndFrame,ULONG ulMenuId)
- {
- int tid;
-
- /* char text[200];
- sprintf(text,"Menu-Id: %d",ulMenuId);
- WinMessageBox( HWND_DESKTOP, HWND_DESKTOP, text, "wpMenuItemSelected()",
- 0UL, MB_OK | MB_ICONEXCLAMATION );
- */
- switch(ulMenuId)
- {
- /* case 717://Change to tree view
- DosBeep(100,100);
- return TRUE;*/
- case ID_TOOLSITEM:
- tid=_beginthread(toolsThreadFunc,NULL,8192*2,this); //Fehlerbehandlung fehlt
- return TRUE;
- case ID_ABOUTITEM:
- cwShowAboutDlg(queryModuleHandle(),IDDLG_ABOUT);
- return TRUE;
- default:
- break;
- }
- return CWProgFolder::wpMenuItemSelected( hwndFrame, ulMenuId);
- }
-
-
- void CWDataFolder::wpCopiedFromTemplate()
- {
- wpSetup("ICONVIEWPOS=20,15,50,60");
-
- CWProgFolder:: wpCopiedFromTemplate();
- }
-
- BOOL CWDataFolder::wpAddSettingsPages(HWND hwndNotebook)
- {
- BOOL rc;
-
- rc= ((somTD_WPObject_wpAddSettingsPages)
- somParentNumResolve(__ClassObject->somGetPClsMtabs(),
- 1,
- __ClassObject->
- somGetMethodToken(somIdFromString
- ("wpAddSettingsPages")))
- )(this,hwndNotebook);
- // if(bGrabberFirst)
- rc && AddCdrecordOptionPage(hwndNotebook)
- && AddMkisofsOptionPage(hwndNotebook)
- && AddAuthorOptionPage(hwndNotebook)
- && AddFileNameOptionPage(hwndNotebook)
- && AddCDTypeOptionPage(hwndNotebook);
- //&& AddCreateOptionPage(hwndNotebook);
-
-
- /*else
- rc && AddGrabOptionPage(hwndNotebook)
- && AddCdrecordOptionPage(hwndNotebook);
- */
- return rc;
- // Durch obige Konstruktion wird die Elternmethode des direkten Vorgängers aufgerufen,
- // und nicht die ursprüngliche von WPLaunchPad, falls WPLaunchPad replaced wurde.
- // Durch diesen Aufruf gehen eventuelle Erweiterungen durch Vererbung verloren:
- // < return WPLaunchPad::wpMenuItemSelected(hwndFrame, ulMenuId); >
- // Dieser Aufruf macht Ergänzungen in wpobject.hh erforderlich!!! Wird durch ein VAC-Fixpack vielleicht später
- //erledigt
- }
-
- HWND CWDataFolder::wpOpen(HWND hwndCnr,ULONG ulView,ULONG ulParam)
- {
- HWND hwnd;
- SIZEL sizelLeft={0};
- HWND myFrameHWND;
- RECTL rectl;
- MENUITEM mi;
- HWND hwndMenu;
- int iItemCount;
- char text[CCHMAXPATH];
- char text2[CCHMAXPATH];
- WPObject* wpObject;
- HOBJECT hObject;
- ULONG ul;
-
- hwnd=CWProgFolder::wpOpen(hwndCnr, ulView, ulParam);/* Call parent to build folder window */
-
- if(ulView!=OPEN_SETTINGS){
-
- // oldone=WinSubclassWindow(hwnd,toolBarHandleFrameProc);
-
- myFrameHWND=WinWindowFromID(hwnd,FID_MENU);//Get menu hwnd
-
- if(myFrameHWND){
- iItemCount=(int)WinSendMsg(myFrameHWND,MM_QUERYITEMCOUNT,(MPARAM)0,
- (MPARAM)0);
- hwndMenu=WinLoadMenu(myFrameHWND,queryModuleHandle(),ID_TBMENUTOOLS);
- //723
- if(hwndMenu){
- mi.iPosition=iItemCount-1;
- mi.afStyle=MIS_TEXT|MIS_SUBMENU;
- mi.id=ID_TBMENUTOOLS;
- mi.afAttribute=NULL;
- mi.hwndSubMenu=hwndMenu;
- mi.hItem=NULL;
- WinSendMsg(myFrameHWND,MM_INSERTITEM,(MPARAM)&mi,
- (MPARAM)"Misc-Tools");
- }/* end of if(hwndMenu) */
- }
-
- /* This is the imagename-frameCtrl. */
- myFrameHWND=WinLoadDlg(hwnd,hwnd,imageNameDialogProc,queryModuleHandle(),IDDLG_IMAGENAME,this);
- hwndImageName=myFrameHWND;
- if(myFrameHWND){
- WinQueryWindowRect(myFrameHWND,&rectl);
- sizelLeft.cy=rectl.yTop-rectl.yBottom;
- cwAddFrameCtl(hwnd, myFrameHWND, sizelLeft, FCTL_TOP,0);
- }
- /* This is the main mkisofs frame control */
- myFrameHWND=WinLoadDlg(hwnd,hwnd,mkisofsMainDialogProc,queryModuleHandle(),IDDLG_MKISOFSMAIN,this);
- hwndMkisofsMain=myFrameHWND;
- if(myFrameHWND){
- WinQueryWindowRect(myFrameHWND,&rectl);
- sizelLeft.cx=rectl.xRight-rectl.xLeft;
- cwAddFrameCtl(hwnd, myFrameHWND, sizelLeft, FCTL_LEFT,FCTL_POSBELOW);
- }
- /* This is the statusline frame control */
- myFrameHWND=WinLoadDlg(hwnd,hwnd,dataCDStatusLineDialogProc,queryModuleHandle(),IDDLG_STATUS,this);
- hwndStatusCntrl=myFrameHWND;
- if(myFrameHWND){
- WinQueryWindowRect(myFrameHWND,&rectl);
- sizelLeft.cy=rectl.yTop-rectl.yBottom;
- cwAddFrameCtl(hwnd, myFrameHWND, sizelLeft, FCTL_BOTTOM,0);
- cwSetStatusText(NULL);
- }
-
- /* ul=sizeof(text);
- if(!wpQueryRealName(text,&ul,TRUE)) {
- sprintf(text2,"d:\\arbeitsoberfläche\\data-cd-creator\\nice");
- hObject=WinQueryObject("<TEST_PAD>");
- if(hObject) {
- wpObject=((M_WPObject*)somGetClass())->wpclsQueryObject(hObject);
- if(wpObject) {
- myFrameHWND=wpObject->wpOpen(NULLHANDLE,OPEN_DEFAULT,NULL);
- if(myFrameHWND){
- oldone=WinSubclassWindow(myFrameHWND,toolBarHandleFrameProc);
- tbObject=wpObject;
- WinQueryWindowRect(myFrameHWND,&rectl);
- sizelLeft.cx=rectl.xRight-rectl.xLeft;
- WinShowWindow(myFrameHWND,FALSE);
- WinSetOwner(myFrameHWND,hwnd);
- WinSetParent(myFrameHWND,hwnd,FALSE);
- cwAddFrameCtl(hwnd, myFrameHWND, sizelLeft, FCTL_RIGHT,0);
- }
- }
- }
- }*/
-
- cwUpdateFrame(hwnd);
- }
- return hwnd;
- }
-
-
- BOOL CWDataFolder::wpClose()
- {
- /* Wird nicht aufgerufen! (??)*/
- //DosBeep(1000,1000);
- /* if(tbObject) {
- DosBeep(5000,1000);
- tbObject->wpClose();
- }*/
- return CWProgFolder::wpClose();
- }
-
- BOOL CWDataFolder::wpRestoreState(ULONG ulReserved)
- {
- ULONG keyLength;
- char profileName[CCHMAXPATH];
- char moduleName[CCHMAXPATH];
- char *chrPtr;
- HINI hini=0;
- char text[200];
- ULONG ulSize;
-
- sDummy=1;
- memset(chrStatusText,0,sizeof(chrStatusText));
-
- /* Get mkisofsflags from folder-EA */
- if(!wpRestoreLong("CWDataFolder",IDKEY_MKISOFSFLAGS,&ulMkisofsFlags))
- ulMkisofsFlags=IDMK_ALLOW32CHARS|IDMK_LEADINGPERIODS|IDMK_ROCKRIDGE|IDMK_LOGFILE;
- /* Get createflags from folder-EA */
- if(!wpRestoreLong("CWDataFolder",IDKEY_CREATEFLAGS,&ulCreateFlags))
- ulCreateFlags=IDCR_IMAGEONLY;
- /* Get CD-type flags from folder-EA */
- if(!wpRestoreLong("CWDataFolder",IDKEY_CDTYPEFLAGS,&ulCDTypeFlags))
- ulCDTypeFlags=IDCDT_USEWRITER|IDCDT_FIRSTSESSION|IDCDT_TRACKDATA;
- keyLength=sizeof(chrApplication);
- if(!wpRestoreString("CWDataFolder",IDKEY_APPLICATION,chrApplication,&keyLength))
- sprintf(chrApplication,"");
- keyLength=sizeof(chrPublisher);
- if(!wpRestoreString("CWDataFolder",IDKEY_PUBLISHER,chrPublisher,&keyLength))
- sprintf(chrPublisher,"");
- keyLength=sizeof(chrPreparer);
- if(!wpRestoreString("CWDataFolder",IDKEY_PREPARER,chrPreparer,&keyLength))
- sprintf(chrPreparer,"");
- keyLength=sizeof(chrCopyright);
- if(!wpRestoreString("CWDataFolder",IDKEY_COPYRIGHT,chrCopyright,&keyLength))
- sprintf(chrCopyright,"");
-
- /* Get folder of class-dll. */
- DosQueryModuleName(queryModuleHandle(),sizeof(moduleName),moduleName);
- chrPtr=strrchr(moduleName,'\\');
- if(chrPtr)
- *chrPtr=0;
- /* Build full path for cdrecord.ini file */
- sprintf(profileName,"%s\\cdrecord.ini",moduleName);
- hini=PrfOpenProfile(WinQueryAnchorBlock(HWND_DESKTOP),profileName);
- do{
- if(!hini) {
- WinMessageBox( HWND_DESKTOP,
- HWND_DESKTOP,
- "Warning! Cannot open Ini-file!",
- "Data-CD-Creator",
- 0UL,
- MB_OK | MB_ICONEXCLAMATION );
- break;
- }/* end of if(!hini) */
-
- keyLength=PrfQueryProfileString(hini,"Mkisofs","mkisofs","",chrMkisofs,sizeof(chrMkisofs));
- if(keyLength==1){
- break;/* First opening. We havn't got entries yet */
- }
- PrfQueryProfileString(hini,"Mkisofs","mkisofsoptions","",chrMkisofsOptions,sizeof(chrMkisofsOptions));
- lMKOptions=PrfQueryProfileInt(hini,"Mkisofs","options",IDMK_HIDEWINDOW|IDMK_CLOSEWINDOW);
- ulSize=sizeof(lMKOptions);
- PrfQueryProfileData(hini,"Mkisofs","options",&lMKOptions,&ulSize);
- MkisofsSetupDone=TRUE;
- break;
- } while(TRUE);
- if(hini)PrfCloseProfile(hini);
- return CWProgFolder::wpRestoreState(ulReserved);
- }
-
- BOOL CWDataFolder::wpSaveState()
- {
- char profileName[CCHMAXPATH];
- char moduleName[CCHMAXPATH];
- char *chrPtr;
- HINI hini=0;
- BOOL rc=TRUE;
-
- if(!wpSaveLong("CWDataFolder",IDKEY_MKISOFSFLAGS,ulMkisofsFlags))
- rc=FALSE;
- if(!wpSaveLong("CWDataFolder",IDKEY_CREATEFLAGS,ulCreateFlags))
- rc=FALSE;
- if(!wpSaveLong("CWDataFolder",IDKEY_CDTYPEFLAGS,ulCDTypeFlags))
- rc=FALSE;
- if(!wpSaveString("CWDataFolder",IDKEY_APPLICATION,chrApplication))
- rc=FALSE;
- if(!wpSaveString("CWDataFolder",IDKEY_PUBLISHER,chrPublisher))
- rc=FALSE;
- if(!wpSaveString("CWDataFolder",IDKEY_PREPARER,chrPreparer))
- rc=FALSE;
- if(!wpSaveString("CWDataFolder",IDKEY_COPYRIGHT,chrCopyright))
- rc=FALSE;
-
- if(!rc){
- WinMessageBox( HWND_DESKTOP,
- HWND_DESKTOP,
- "Warning! Cannot write instance data!",
- "Data-CD-Creator",
- 0UL,
- MB_OK | MB_ICONEXCLAMATION );
- }
-
- rc=TRUE;
- /* Get folder of class-dll. */
- DosQueryModuleName(queryModuleHandle(),sizeof(moduleName),moduleName);
- chrPtr=strrchr(moduleName,'\\');
- if(chrPtr)
- *chrPtr=0;
- /* Build full path */
- sprintf(profileName,"%s\\cdrecord.ini",moduleName);
- do{
- hini=PrfOpenProfile(WinQueryAnchorBlock(HWND_DESKTOP),profileName);
- if(!hini) {
- WinMessageBox( HWND_DESKTOP,
- HWND_DESKTOP,
- "Warning! Cannot open Ini-file!",
- "Data-CD-Creator",
- 0UL,
- MB_OK | MB_ICONEXCLAMATION );
- break;
- }/* end of if(!hini) */
- /* Save cdrecord-path */
- if(!PrfWriteProfileString(hini,"CDWriter","cdrecord",chrCDRecord))
- break;
- /* Save cdrecord options */
- if(!PrfWriteProfileString(hini,"CDWriter","cdroptions",chrCDROptions))
- break;
-
- if(!PrfWriteProfileString(hini,"CDWriter","writedrive",chosenWriter))
- break;
-
- if(!PrfWriteProfileString(hini,"Mkisofs","mkisofs",chrMkisofs)){
- rc=FALSE;
- break;
- }
- if(!PrfWriteProfileString(hini,"Mkisofs","mkisofsoptions",chrMkisofsOptions)){
- rc=FALSE;
- break;
- };
- if(!PrfWriteProfileData(hini,"Mkisofs","options",&lMKOptions,sizeof(lMKOptions))) {
- rc=FALSE;
- break;
- };
-
- break;
- }while(TRUE);
- if(hini)PrfCloseProfile(hini);
- if(!rc) {
- WinMessageBox( HWND_DESKTOP,
- HWND_DESKTOP,
- "Warning! Cannot write to Ini-file!",
- "Data-CD-Creator",
- 0UL,
- MB_OK | MB_ICONEXCLAMATION );
- }
- return CWProgFolder::wpSaveState();
- }
-