- Timestamp:
- Jul 13, 2017, 5:17:57 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 110 added
- 89 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/build.inc
r3 r4 1 BUILD_STRING = -Build 2 05 24/03/051 BUILD_STRING = -Build 235 12/02/06 -
trunk/changes-0_2_9.txt
r3 r4 1 0.2.9: 1 0.2.9pre2: (11.08.05) 2 -Close confirmation dialog of media folder will be dismissed automatically after 60s (use INI key to change) 3 -MM-find: app opens audio files in editor now (used to open default view and the folder) 4 -MM-find: video files are opened in player. No opening of the folder anymore 5 -MM-find: app loads NLV strings from resource DLL 6 -MM-find: query system for user added audio extensions for insertion into the search dialog 7 -MM-find: improved handling of image extensions 8 -MM-find: added to tasklist 9 -MM-find: added play controls for audio files 10 -MM-find: save last visited audio directory 11 -Helper apps (converter etc.) create their INI file in the users home directory now 12 -MMAudio class claimed to support *.wav extension while MMWAV should be the only one doing that (audioext.rx) 13 -MMVideo: associate extensions added by third party IO procs with it automatically (videoext.rx) 14 -MMVideo: defined type "Digital video" 15 -MMMPG: associate extensions added by OpenMPEG with it automatically (mpegext.rx) 16 -Improvements to the build process of the helper apps 17 -createcd.exe takes the name of created CD-folders from the resource DLL 18 -CWCDFolder: improved sorting (hope so, never saw problems on my system) 19 -CWCDFolder: No more hic up at start of track 20 -MM classes: fixed boot hangs because of endless loops in *.rx files under some circumstances 21 22 0.2.9pre1: 2 23 -Don't show a message box if resource DLL can't be found. 3 24 -Changed DLL finding algorithm. Should be more robust, when classes are improperly registered. -
trunk/classes/REPLACE.CMD
r3 r4 4 4 'replace H:\cwmm\classes\Res\dll\mmres_DE.dll d:\MMOS2\MMCLASS\bin\mmres_DE.dll' 5 5 'replace H:\cwmm\classes\Res\dll\mmres_EN.dll d:\MMOS2\MMCLASS\bin\mmres_EN.dll' 6 'replace H:\cwmm\mediafolder\mediafolder.dll d:\MMOS2\MEDIAFLD\BIN\MEDIAFLD.DLL' 7 'replace H:\cwmm\mediafolder\res\obj\mediafolder_de.dll d:\MMOS2\MEDIAFLD\BIN\MFLDR_DE.DLL' 8 'del d:\MMOS2\MEDIAFLD\BIN\mediafld.hlp' 9 'copy H:\cwmm\mediafolder\help\mediafldr049.hlp d:\MMOS2\MEDIAFLD\BIN\mediafld.hlp' 10 6 11 7 12 'replace H:\cwmm\classes\cwmm.dll J:\MMOS2\CWMM\CWMM.DLL' -
trunk/classes/bin/audioext.rx
r2 r4 1 1 /* rexx - Get the extension of audio types added using 2 2 the multimedia setup object. For example *.FLA. 3 This script is called by M_MMAudio .3 This script is called by M_MMAudio and mmfind.exe. 4 4 */ 5 5 … … 8 8 9 9 allExt="" 10 waveaudio="" 10 11 11 12 /* Get MMOS2 directory */ … … 60 61 WHEN TRANSLATE(curExt)="FLA" THEN NOP 61 62 WHEN TRANSLATE(curExt)="FLAC" THEN NOP 63 WHEN TRANSLATE(curExt)="WAV" THEN NOP 62 64 63 65 OTHERWISE … … 81 83 END 82 84 a=a+1 85 IF a>mmini.0 THEN return 83 86 END 84 87 return … … 99 102 END 100 103 a=a+1 104 IF a>mmini.0 THEN return "" 101 105 END 102 106 END 103 107 END 104 108 return "" 105 -
trunk/classes/bin/chktimid.rx
r2 r4 61 61 END 62 62 a=a+1 63 IF a>mmini.0 THEN return 0 63 64 END 64 65 return 0 -
trunk/classes/bin/imageadd.rx
r2 r4 1 1 /* rexx - Return additional image extensions the MMImage class 2 should handle. 3 This script is called by M_MMImage .2 should handle. 3 This script is called by M_MMImage and mmfind.exe. 4 4 */ 5 5 … … 9 9 EXIT 10 10 11 -
trunk/classes/bin/imageext.rx
r2 r4 1 1 /* rexx - Return all image extensions we have a MM class for. 2 This script is called by M_MMImage . After getting the extensions2 This script is called by M_MMImage and mmfind.exe. After getting the extensions 3 3 M_MMImage checks if there're any additional extensions handled by 4 4 installed image IO procedures. If yes, these unhandled extensions … … 8 8 9 9 10 allExt=" _IM DIB GIF JPG VID PCX PCD TIF TGABMP"10 allExt="*._IM,*.DIB,*.GIF,*.JPG,*.VID,*.PCX,*.PCD,*.TIF,*.TGA,*.BMP" 11 11 return allExt 12 12 EXIT 13 13 14 -
trunk/classes/c/c_audio/cwaudio.c
r3 r4 70 70 char chrHelpLibrary[CCHMAXPATH]={0}; 71 71 char chrInstallDir[CCHMAXPATH]={0}; 72 char chrMMAudioExt[ 200]={0};/* Array holding the extensions for wpclsQueryInstanceFilter() */72 char chrMMAudioExt[400]={0};/* Array holding the extensions for wpclsQueryInstanceFilter() */ 73 73 char resDLLPath[CCHMAXPATH]={0}; 74 74 -
trunk/classes/c/c_common/helper.c
r2 r4 1 1 /* 2 * This file is (C) Chris Wohlgemuth 2001 /20042 * This file is (C) Chris Wohlgemuth 2001-2005 3 3 */ 4 4 /* … … 329 329 } 330 330 331 /* MMCLS_INI_FILE_NAME = "\\cwmm.ini" See ...\common.h */ 331 332 PSZ _queryMMClassIniFile(void) 332 333 { 333 334 static char iniName[CCHMAXPATH]= {0}; 334 335 335 if(iniName[0]==0) 336 sprintf(iniName, "%s\\bin\\CWMM.INI", queryInstallDir()); 336 if(iniName[0]==0) { 337 /* Default is INI file in users home dir */ 338 if(SysQueryHomeDir(iniName, sizeof(iniName))) { 339 strlcat(iniName, MMCLS_INI_FILE_NAME, sizeof(iniName)); /* MMCLS_INI_FILE_NAME = "\\CWMM.INI" */ 340 return iniName; 341 } 342 343 sprintf(iniName, "%s\\bin%s", queryInstallDir(), MMCLS_INI_FILE_NAME); 344 } 337 345 338 346 return iniName; -
trunk/classes/c/c_image/cwimage.c
r2 r4 1974 1974 /* This extension is yet unknown */ 1975 1975 if(chrMMImageExt[0]==0) { 1976 /* It's the first one */ 1976 1977 sprintf(chrMMImageExt,"*.%s", pmmFormatInfoArray->szDefaultFormatExt); 1977 // fFirstExt=FALSE;1978 1978 } 1979 1979 else { 1980 strncat(chrMMImageExt,",*.",sizeof(chrMMImageExt)-1-strlen(chrMMImageExt)); 1981 strncat(chrMMImageExt, pmmFormatInfoArray->szDefaultFormatExt, sizeof(chrMMImageExt)-1-strlen(chrMMImageExt)); 1980 /* Check if the extension is not already added (e.g. TIF has a lot of subformats) */ 1981 if(!strstr(chrMMImageExt, pmmFormatInfoArray->szDefaultFormatExt)) { 1982 strncat(chrMMImageExt,",*.",sizeof(chrMMImageExt)-1-strlen(chrMMImageExt)); 1983 strncat(chrMMImageExt, pmmFormatInfoArray->szDefaultFormatExt, sizeof(chrMMImageExt)-1-strlen(chrMMImageExt)); 1984 } 1982 1985 } 1983 1986 // HlpWriteToTrapLog("Known Extension: %s\n", chrMMImageKnownExt); -
trunk/classes/c/c_video/cwmpg.c
r2 r4 1 1 /* 2 * (C) Chris Wohlgemuth 2002-200 42 * (C) Chris Wohlgemuth 2002-2005 3 3 * 4 4 */ … … 41 41 #include "helpid.h" 42 42 #include "cwmpg.ih" 43 #include "cwaudioinc.h" /* For REXX script name */ 44 #include "sys_funcs.h" 43 45 44 46 extern char chrHelpLibrary[CCHMAXPATH]; 47 char chrMMMPGExt[400]={0};/* Array holding the extensions for wpclsQueryInstanceFilter() */ 45 48 46 49 HMODULE queryResModuleHandle(void); … … 48 51 BOOL getMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource,HWND hwnd); 49 52 ULONG launchPMProg(PSZ pszTitle, PSZ wrapperExe, PSZ parameters, CWMMDataFile *thisPtr, ULONG ulView); 50 53 BOOL getStringFromRexxScript(PSZ rexxFile, char* chrResult, ULONG ulSize); 51 54 52 55 /* … … 155 158 M_MMMPGMethodDebug("M_MMMPG","cwmpgM_wpclsQueryInstanceFilter"); 156 159 157 return "*.MPG,*.VBS"; 160 /* This list is build in wpclsInitData() */ 161 return chrMMMPGExt; 158 162 } 159 163 … … 189 193 190 194 195 SOM_Scope void SOMLINK cwmpgM_wpclsInitData(M_MMMPG *somSelf) 196 { 197 static BOOL bGotMPEGExt=FALSE; 198 199 /* M_MMMPGData *somThis = M_MMMPGGetData(somSelf); */ 200 M_MMMPGMethodDebug("M_MMMPG","cwmpgM_wpclsInitData"); 201 202 /* 203 Taken from the audio classes. I suspect the same is true for the video classes. 204 Anyway it wont hurt having this here. 205 206 Get extensions of additional audio procs. These extensions may be specified by 207 newly installed IO procs in MMPM2.INI or by using the Multimedia setup. For 208 example the MMIOMP3 procedure for reading MP3 files adds the MP3 extension this 209 way to the system. Extensions already handled by a specialized class will be 210 filtered in the called REXX script e.g. MP3 so only unknown extensions end up here. 211 212 Strangely enough wpclsQueryInstanceFilter() is called during wpclsInitData() so 213 we query the extensions here before calling the parent. 214 215 FIXME: 216 The check is only done once during initialization. This is a little annoyance for 217 the user because new extension specified in the settings will only be picked up 218 on next WPS start. 219 */ 220 if(!bGotMPEGExt) 221 { 222 /* REXX script: "mpegext.rx" */ 223 getStringFromRexxScript(MMMPG_GETEXT_RX, chrMMMPGExt, sizeof(chrMMMPGExt)); 224 /* Add our default extension *.MPG */ 225 if(chrMMMPGExt[0]==0) 226 /* It's the first one */ 227 strcpy(chrMMMPGExt,"*.MPG,*.VBS"); 228 else 229 strlcat(chrMMMPGExt, ",*.MPG,*.VBS", sizeof(chrMMMPGExt)); 230 bGotMPEGExt=TRUE; 231 } 232 233 M_MMMPG_parent_M_MMVideo_wpclsInitData(somSelf); 234 } 235 191 236 /* 192 237 * SOM_Scope BOOL SOMLINK cwmpgM_wpclsQueryDefaultHelp(M_CWMPG *somSelf, -
trunk/classes/c/c_video/cwvideo.c
r2 r4 1 1 /* 2 * (C) Chris Wohlgemuth 2002-200 32 * (C) Chris Wohlgemuth 2002-2005 3 3 * 4 4 */ … … 39 39 #include <os2.h> 40 40 #include "cwvideo.ih" 41 #include "cwaudioinc.h" /* For REXX script name */ 41 42 //#include "cwmmres.h" 42 43 //#include "mmres.h" … … 46 47 BOOL getMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource,HWND hwnd); 47 48 ULONG launchPMProg(PSZ pszTitle, PSZ wrapperExe, PSZ parameters, CWMMDataFile *thisPtr, ULONG ulView); 48 49 BOOL getStringFromRexxScript(PSZ rexxFile, char* chrResult, ULONG ulSize); 50 51 char chrMMVideoExt[400]={0};/* Array holding the extensions for wpclsQueryInstanceFilter() */ 49 52 50 53 /* … … 184 187 185 188 189 SOM_Scope PSZ SOMLINK cwvideoM_wpclsQueryInstanceType(M_MMVideo *somSelf) 190 { 191 /* static char chrTitle[40]={0}; */ 192 /* M_MMVideoData *somThis = M_MMVideoGetData(somSelf); */ 193 M_MMVideoMethodDebug("M_MMVideo","cwvideoM_wpclsQueryInstanceType"); 194 195 #if 0 196 /* The type probably shouldn't be translated to make changing files between languages 197 easier.*/ 198 if(chrTitle[0]==0) 199 if(!getMessage(chrTitle, IDSTR_CWVIDEOTITLE, sizeof(chrTitle), queryResModuleHandle(), HWND_DESKTOP)) 200 strcpy(chrTitle,"Digital video"); 201 #endif 202 return TYPE_DIGITALVIDEO; 203 /* return (M_MMVideo_parent_M_CWMMDataFile_wpclsQueryInstanceType(somSelf)); */ 204 } 205 206 SOM_Scope PSZ SOMLINK cwvideoM_wpclsQueryInstanceFilter(M_MMVideo *somSelf) 207 { 208 /* M_MMVideoData *somThis = M_MMVideoGetData(somSelf); */ 209 M_MMVideoMethodDebug("M_MMVideo","cwvideoM_wpclsQueryInstanceFilter"); 210 211 /* The list of additional extensions is built in wpclsInitData(). 212 213 FIXME 214 This is a static list read in only once during startup. 215 Should probably be changed later on. 216 */ 217 return chrMMVideoExt; 218 219 /* return (M_MMVideo_parent_M_CWMMDataFile_wpclsQueryInstanceFilter(somSelf)); */ 220 } 221 186 222 /* 187 223 * SOM_Scope PSZ SOMLINK cwvideoM_wpclsQueryTitle(M_CWVideo *somSelf) … … 204 240 } 205 241 242 243 SOM_Scope void SOMLINK cwvideoM_wpclsInitData(M_MMVideo *somSelf) 244 { 245 static BOOL bGotVideoExt=FALSE; 246 247 /* M_MMVideoData *somThis = M_MMVideoGetData(somSelf); */ 248 M_MMVideoMethodDebug("M_MMVideo","cwvideoM_wpclsInitData"); 249 250 /* 251 Taken from the audio classes. I suspect the same is true for the video classes. 252 Anyway it wont hurt having this here. 253 254 Get extensions of additional audio procs. These extensions may be specified by 255 newly installed IO procs in MMPM2.INI or by using the Multimedia setup. For 256 example the MMIOMP3 procedure for reading MP3 files adds the MP3 extension this 257 way to the system. Extensions already handled by a specialized class will be 258 filtered in the called REXX script e.g. MP3 so only unknown extensions end up here. 259 260 Strangely enough wpclsQueryInstanceFilter() is called during wpclsInitData() so 261 we query the extensions here before calling the parent. 262 263 FIXME: 264 The check is only done once during initialization. This is a little annoyance for 265 the user because new extension specified in the settings will only be picked up 266 on next WPS start. 267 */ 268 if(!bGotVideoExt) 269 { 270 /* REXX script: "videoext.rx" */ 271 getStringFromRexxScript(MMVIDEO_GETEXT_RX, chrMMVideoExt, sizeof(chrMMVideoExt)); 272 bGotVideoExt=TRUE; 273 } 274 275 M_MMVideo_parent_M_CWMMDataFile_wpclsInitData(somSelf); 276 } 206 277 207 278 /* -
trunk/classes/idl/idl_video/cwmpg.idl
r2 r4 131 131 wpclsQueryInstanceFilter : override; 132 132 wpclsQueryIconData : override; 133 wpclsInitData : override; 133 134 wpclsQueryDefaultHelp : override; 134 135 }; -
trunk/classes/idl/idl_video/cwvideo.idl
r2 r4 130 130 */ 131 131 wpclsCreateDefaultTemplates : override; 132 wpclsQueryTitle : override; 133 wpclsQueryDefaultView : override; 132 wpclsQueryInstanceType : override; 133 wpclsQueryInstanceFilter : override; 134 wpclsQueryTitle : override; 135 wpclsInitData : override; 136 wpclsQueryDefaultView : override; 134 137 wpclsQueryIconData : override; 135 138 }; -
trunk/classes/inc/common.h
r2 r4 66 66 #endif 67 67 68 #define MMCLS_INI_FILE_NAME "\\cwmm.ini" 69 68 70 #endif -
trunk/classes/inc/cwaudioinc.h
r2 r4 64 64 #define TYPE_M3U "M3U" 65 65 #define TYPE_FLAC "FLAC" 66 #define TYPE_DIGITALVIDEO "Digital Video" 66 67 67 68 /* Setup strings for MMAudio (was CWAudio). These strings will … … 241 242 #define CLASS_VOLUME_KEY "volume" 242 243 244 #define MMVIDEO_GETEXT_RX "videoext.rx" 245 #define MMMPG_GETEXT_RX "mpegext.rx" 246 243 247 #endif 244 248 -
trunk/classes/inc/mmres.h
r2 r4 335 335 #define ID_MENUITEMMASTERVOLUME 5 336 336 337 337 #define IDPB_MMFINDSTOP 809 338 #define IDPB_MMFINDPAUSE 810 339 #define IDPB_MMFINDPLAY 811 -
trunk/classes/makefile
r2 r4 18 18 IDLDIR = ./idl 19 19 OBJDIR = ./obj 20 # Object files of common functions are going here 20 21 # Object files of common functions (CW functions) are going here 21 22 LIBDIR = ./lib 22 #Where the resource dlls are going23 RESDLLDIR = ./RES/dll24 23 25 24 … … 29 28 # 30 29 ####################################### 30 31 ########### C compile ################# 31 32 COMPILE = $(CC) -I $(MOREINC) $(CFLAGS) /Fo$@ $< 32 33 34 ########### SOM compile ############### 33 35 #Audio classes 34 36 AUD_SCCOMPILEC = sc -I $(IDLDIR)/idl_audio -I $(IDLDIR)/idl_mm -p -r -sc -d$(CDIR)/c_audio -maddstar -mnoint -S128000 -C128000 $< … … 114 116 115 117 118 ####################################### 119 # 120 # Define *.hlp files. 121 # 122 ####################################### 116 123 HLP_FILES = ./Help/de/cwmm049.hlp \ 117 124 ./Help/en/cwmm.hlp \ 118 125 ./Help/nl/cwmm031.hlp \ 119 ./Help/it/cwmm039.hlp 126 ./Help/it/cwmm039.hlp \ 127 ./Help/tw/cwmm088.hlp 120 128 121 129 … … 125 133 # 126 134 ####################################### 127 MM_IHFILES = ./include/cwmmdataf.ih ./include/cwmmdisk.ih ./include/mmfolder.ih 128 129 IHFILES = ./include/cwmp3.ih \ 135 MM_IHFILES = ./include/cwmmdataf.ih \ 136 ./include/cwmmdisk.ih \ 137 ./include/mmfolder.ih 138 139 IHFILES = ./include/cwmp3.ih \ 130 140 ./include/cwogg.ih \ 131 141 ./include/cwaudio.ih \ … … 168 178 # 169 179 ####################################### 170 all: cwmm.dll $(HLP_FILES) 180 all: cwmm.dll $(HLP_FILES) nlv 171 181 cd ./mm-progs && make 172 182 … … 176 186 cwmm.dll: $(MM_IHFILES) $(IHFILES) $(VID_IHFILES) $(IMG_IHFILES) \ 177 187 $(ALL_OBJECTS) 178 @create_cwmm_def.CMD ./c/cwmm.def179 $(CC) $(LDFLAGS) /L /Fm$(basename $@) /Fe$@ $(ALL_OBJECTS) $(LIBS) ./c/cwmm.def180 #Add icons to DLL 188 @create_cwmm_def.CMD $(OBJDIR)/cwmm.def 189 $(CC) $(LDFLAGS) /L /Fm$(basename $@) /Fe$@ $(ALL_OBJECTS) $(LIBS) $(OBJDIR)/cwmm.def 190 #Add icons to DLL (no NLV stuff) 181 191 cd ./res && make 182 192 rc ./res/common_res/cwaudio.res cwmm.dll … … 185 195 ################################### 186 196 # 197 # Rules for generating the NLV 198 # ressources. 199 # 200 ################################### 201 nlv: 202 cd ./res && make 203 204 205 ################################### 206 # 187 207 # Rules for generating online help 188 208 # … … 203 223 ./Help/it/cwmm039.hlp: ./Help/it/cwmm039.ipf 204 224 cd ./Help/it && make 225 226 # Traditional chinese (TW) 227 ./Help/tw/cwmm088.hlp: ./Help/tw/cwmm088.ipf 228 cd ./Help/tw && make 205 229 206 230 ################################### … … 293 317 -cd ./Help/nl && make clean 294 318 -cd ./Help/it && make clean 319 -cd ./Help/tw && make clean 295 320 -cd ./res && make clean 296 321 -cd ./mm-progs && make clean … … 305 330 -cd ./Help/nl && make cleaner 306 331 -cd ./Help/it && make cleaner 332 -cd ./Help/tw && make cleaner 307 333 -cd ./res && make cleaner 308 334 -cd ./mm-progs && make cleaner -
trunk/classes/mm-progs/MMPlayer/makefile
r2 r4 2 2 3 3 include ../../../make.inc 4 include ../mmprog.inc 4 5 5 CC = gcc 6 LIB_DIR = $d:/emx/lib 7 #CPPFLAGS = -Ge- /Gm+ -G4 -Gl /O+ -Oc+ -Ol 8 #CPPFLAGS = -O -Zomf -Zcrtdll -Zmtd -s 9 CPPFLAGS = -O -Wall -Zomf -Zmt -Zsys -s 10 INC = ../include -I ../../../classes/inc -I ../../../common_functions/include 11 DEFS = 12 PROGS = 13 ODIR = . 14 CPPDIR = . 15 LIBDIR = ../lib 16 OBJECTS = $(LIBDIR)/message.obj $(LIBDIR)/helper.obj $(LIBDIR)/menu_funcs.obj $(LIBDIR)/sys_funcs.obj 6 OBJECTS = $(LIBDIR)/message.obj \ 7 $(LIBDIR)/helper.obj \ 8 $(LIBDIR)/menu_funcs.obj \ 9 $(LIBDIR)/sys_funcs.obj 17 10 OBJS2 = customprocs.obj playaudio.obj display.obj 18 11 … … 20 13 all: mmplayer.exe 21 14 22 $(LIBDIR)/%.obj: $(COMMONSRC)/%.c23 gcc -c -Wall -o$@ -Zomf -I$(INC) $<24 15 25 %.obj: %.c 26 gcc -c -Wall -o$@ -Zomf -I$(INC) $< 27 28 mmplayer.exe: mmplayer.c $(OBJECTS) $(OBJS2) makefile 16 mmplayer.exe: mmplayer.c $(OBJECTS) $(OBJS2) makefile def.tpl 17 cmd /C $(TOOLDIR)\create_MMPROG_def.cmd mmplayer.def 29 18 #Use this command to link dynamicaly 30 gcc$(CPPFLAGS) -I$(INC) mmplayer.c $(OBJECTS) $(OBJS2) -los2me mmplayer.def19 $(CC) $(CPPFLAGS) -I$(INC) mmplayer.c $(OBJECTS) $(OBJS2) -los2me mmplayer.def 31 20 rc mmplayer.rc mmplayer.exe 32 21 -
trunk/classes/mm-progs/MMPlayer/mmplayer.DEF
r2 r4 1 ; DEF-file for mmplayer.exe. This is a PM program which2 ; play audio files.3 1 ; 4 ; (C) Chris Wohlgemuth 2003 5 2 ; MMPLAYER: PM-Program for audio file playing 3 ; 4 ; 5 ; (c) C. Wohlgemuth 2003-2005 6 ; 7 ; 8 ; Created 14 Aug 2005 21:15:29 9 ; 6 10 ;/* 7 11 ; * This program is free software; you can redistribute it and/or modify … … 26 30 ; */ 27 31 NAME MMPLAYER WINDOWAPI 28 DESCRIPTION '$@#(c) C hris Wohlgemuth :V0.2.7 (17.08.2003)#@PM-Program for audio file playing'32 DESCRIPTION '$@#(c) C. Wohlgemuth 2005:0.2 #@##1## 14/08/05 21:15:29 My ;-) ::::9::@@PM-Program for audio file playing V0.2.9' 29 33 STACKSIZE 1638400 30 31 32 33 -
trunk/classes/mm-progs/MMPlayer/playaudio.c
r2 r4 294 294 } 295 295 } 296 297 -
trunk/classes/mm-progs/audioconverter/audconv.DEF
r2 r4 1 ; DEF-file for audconv.exe. This is a PM program which2 ; shows a dialog box and converts audio files to waves.3 1 ; 4 ; (C) Chris Wohlgemuth 2001 5 2 ; AUDCONV: PM-Program for audio file converting 3 ; 4 ; 5 ; (c) C. Wohlgemuth 2001-2006 6 ; 7 ; 8 ; Created 12 Feb 2006 19:46:31 9 ; 6 10 ;/* 7 11 ; * This program is free software; you can redistribute it and/or modify … … 25 29 ; * http://www.geocities.com/SiliconValley/Sector/5785/ 26 30 ; */ 27 28 NAME audconv WINDOWAPI 29 DESCRIPTION '$@#(c) Chris Wohlgemuth :V0.2.7 (17.08.2003)#@PM-Program for audio file converting' 30 31 32 33 31 NAME AUDCONV WINDOWAPI 32 DESCRIPTION '$@#(c) C. Wohlgemuth 2006:0.2 #@##1## 12/02/06 19:46:31 My ;-) ::::9::@@PM-Program for audio file converting V0.2.9' 33 STACKSIZE 1638400 -
trunk/classes/mm-progs/audioconverter/makefile
r2 r4 3 3 include ../../../make.inc 4 4 5 CC = gcc 6 LIB_DIR = $d:/emx/lib 7 #CPPFLAGS = -Ge- /Gm+ -G4 -Gl /O+ -Oc+ -Ol 8 #CPPFLAGS = -O -Zomf -Zcrtdll -s 9 CPPFLAGS = -O -Wall -Zomf -Zmt -Zsys -s 5 OBJECTS = $(LIBDIR)/message.obj \ 6 $(LIBDIR)/helper.obj \ 7 $(LIBDIR)/progbars.obj \ 8 $(LIBDIR)/sys_funcs.obj 10 9 11 INC = ../include -I ../../../classes/inc -I ../../../common_functions/include 12 DEFS = 13 PROGS = 14 ODIR = . 15 CPPDIR = . 16 LIBDIR = ../lib 17 OBJECTS = $(LIBDIR)/message.obj $(LIBDIR)/helper.obj $(LIBDIR)/progbars.obj $(LIBDIR)/sys_funcs.obj 10 include ../mmprog.inc 18 11 19 12 20 13 all: audconv.exe 21 14 22 $(LIBDIR)/%.obj: $(COMMONSRC)/%.c23 gcc -c -o$@ -Zomf -I$(INC) $<24 15 25 audconv.exe: audconv.c $(OBJECTS) 26 gcc $(CPPFLAGS) -I$(INC) audconv.c $(OBJECTS) -los2me audconv.def 16 audconv.exe: audconv.c $(OBJECTS) makefile def.tpl 17 cmd /C $(TOOLDIR)\create_MMPROG_def.cmd audconv.def 18 $(CC) $(CPPFLAGS) -I$(INC) audconv.c $(OBJECTS) -los2me audconv.def 27 19 28 20 29 21 clean: 30 22 -rm *.exe 23 -rm *.dll 31 24 -rm *.obj 25 -rm *.res 26 -rm *.ini 32 27 33 28 cleaner: … … 38 33 distribution: 39 34 -cp *.exe ../../dist/bin 40 41 -
trunk/classes/mm-progs/imageconverter/imgconv.DEF
r2 r4 1 ; DEF-file for imgconv.exe. This is a PM program which2 ; shows a dialog box and converts image files.3 1 ; 4 ; (C) Chris Wohlgemuth 2002 5 2 ; IMGCONV: PM-Program for image file converting 3 ; 4 ; 5 ; (c) C. Wohlgemuth 2002-2006 6 ; 7 ; 8 ; Created 12 Feb 2006 19:48:25 9 ; 6 10 ;/* 7 11 ; * This program is free software; you can redistribute it and/or modify … … 25 29 ; * http://www.geocities.com/SiliconValley/Sector/5785/ 26 30 ; */ 27 NAME imgconvWINDOWAPI28 DESCRIPTION '$@#(c) C hris Wohlgemuth :V0.2.7 (17.08.2003)#@PM-Program for image file converting'31 NAME IMGCONV WINDOWAPI 32 DESCRIPTION '$@#(c) C. Wohlgemuth 2006:0.2 #@##1## 12/02/06 19:48:25 My ;-) ::::9::@@PM-Program for image file converting V0.2.9' 29 33 STACKSIZE 1638400 30 31 32 33 -
trunk/classes/mm-progs/imageconverter/makefile
r2 r4 2 2 3 3 include ../../../make.inc 4 include ../mmprog.inc 4 5 5 CC = gcc 6 LIB_DIR = $d:/emx/lib 7 #CPPFLAGS = -Ge- /Gm+ -G4 -Gl /O+ -Oc+ -Ol 8 #CPPFLAGS = -O -Zomf -Zcrtdll -Zmtd -s 9 CPPFLAGS = -O -Wall -Zomf -Zmt -Zsys -s 10 INC = ../include -I ../../../classes/inc -I ../../../common_functions/include 11 DEFS = 12 PROGS = 13 ODIR = . 14 CPPDIR = . 15 LIBDIR = ../lib 16 OBJECTS = $(LIBDIR)/message.obj $(LIBDIR)/helper.obj $(LIBDIR)/progbars.obj $(LIBDIR)/sys_funcs.obj 6 OBJECTS = $(LIBDIR)/message.obj \ 7 $(LIBDIR)/helper.obj \ 8 $(LIBDIR)/progbars.obj \ 9 $(LIBDIR)/sys_funcs.obj 17 10 18 11 all: imgconv.exe 19 12 20 $(LIBDIR)/%.obj: $(COMMONSRC)/%.c21 gcc -c -o$@ -Zomf -I$(INC) $<22 13 23 14 imgconv.exe: imgconv.c $(OBJECTS) 15 cmd /C $(TOOLDIR)\create_MMPROG_def.cmd imgconv.def 24 16 #Use this command to link dynamicaly 25 # gcc $(CPPFLAGS) -I$(INC) imgconv.c $(OBJECTS) -Zmtd -los2me imgconv.def 26 gcc $(CPPFLAGS) -I$(INC) imgconv.c $(OBJECTS) -los2me imgconv.def 17 $(CC) $(CPPFLAGS) -I$(INC) imgconv.c $(OBJECTS) -los2me imgconv.def 27 18 28 19 clean: 29 20 -rm *.exe 21 -rm *.dll 30 22 -rm *.obj 23 -rm *.res 24 -rm *.ini 31 25 32 26 cleaner: … … 34 28 -rm *.flc 35 29 30 36 31 distribution: 37 38 -
trunk/classes/mm-progs/include/mmprogs_defaults.h
r2 r4 29 29 /************************************/ 30 30 /* General */ 31 #define INI_FILE_NAME "\\cwmm.ini"31 #define MMCLS_INI_FILE_NAME "\\cwmm.ini" 32 32 #define INI_WINDOWPOS_KEY "windowpos" /* Key for storing window position */ 33 33 -
trunk/classes/mm-progs/master_volume/makefile
r2 r4 2 2 3 3 include ../../../make.inc 4 include ../mmprog.inc 4 5 5 CC = gcc6 LIB_DIR = $d:/emx/lib7 #CPPFLAGS = -Ge- /Gm+ -G4 -Gl /O+ -Oc+ -Ol8 #CPPFLAGS = -O -Zomf -Zcrtdll -s9 CPPFLAGS = -O -Wall -Zomf -Zsys -s10 11 ICCFLAGS = /Ss12 INC = ../include -I ../../../common_functions/include -I ../../../classes/inc13 DEFS =14 PROGS =15 ODIR = .16 CPPDIR = .17 6 ICONDIR = ..\res\Icons 18 LIBDIR = ../lib 19 OBJECTS = $(LIBDIR)/message.obj $(LIBDIR)/helper.obj $(LIBDIR)/progbars.obj $(LIBDIR)/sys_funcs.obj 20 #OBJDIR = ../obj 7 OBJECTS = $(LIBDIR)/message.obj \ 8 $(LIBDIR)/helper.obj \ 9 $(LIBDIR)/progbars.obj \ 10 $(LIBDIR)/sys_funcs.obj 21 11 #OBJECTS = $(OBJDIR)/message.obj $(OBJDIR)/helper.obj $(OBJDIR)/progbars.obj \ 22 12 $(OBJDIR)/sys_funcs.obj … … 24 14 all: volume.exe 25 15 26 $(LIBDIR)/%.obj: $(COMMONSRC)/%.c27 gcc -c -o$@ -Zomf -I$(INC) $<28 16 29 volume.exe: volume.c $(OBJECTS) 30 gcc $(CPPFLAGS) -I$(INC) volume.c $(OBJECTS) -Zmt -los2me volume.def 17 volume.exe: volume.c $(OBJECTS) makefile def.tpl 18 cmd /C $(TOOLDIR)\create_MMPROG_def.cmd volume.def 19 $(CC) $(CPPFLAGS) -I$(INC) volume.c $(OBJECTS) -Zmt -los2me volume.def 31 20 rc -I $(INC) volume.rc volume.exe 32 21 -
trunk/classes/mm-progs/master_volume/volume.DEF
r2 r4 1 ; DEF-file for volume.exe. This is a PM program which2 ; shows a dialog box for setting the masteraudio.3 1 ; 4 ; (C) Chris Wohlgemuth 2001 5 2 ; VOLUME: Master volume applet 3 ; 4 ; 5 ; (c) C. Wohlgemuth 2001-2006 6 ; 7 ; 8 ; Created 12 Feb 2006 19:56:10 9 ; 6 10 ;/* 7 11 ; * This program is free software; you can redistribute it and/or modify … … 25 29 ; * http://www.geocities.com/SiliconValley/Sector/5785/ 26 30 ; */ 27 28 31 NAME VOLUME WINDOWAPI 29 DESCRIPTION '$@#(c) Chris Wohlgemuth :V0.2.7 (17.08.2003)#@Master volume applet' 30 ;EXPORTS decodeStatusDialogProc 31 32 33 34 32 DESCRIPTION '$@#(c) C. Wohlgemuth 2006:0.2 #@##1## 12/02/06 19:56:10 My ;-) ::::9::@@Master volume applet V0.2.9' 33 STACKSIZE 1638400 -
trunk/classes/mm-progs/mmfind/image.c
r2 r4 92 92 } 93 93 94 95 96 97 94 MRESULT EXPENTRY bmpPreviewProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 98 95 { … … 116 113 117 114 115 #if 0 118 116 /* 119 117 Load an image file using IO-Procs … … 378 376 return(hbm); 379 377 } 378 #endif -
trunk/classes/mm-progs/mmfind/makefile
r2 r4 2 2 3 3 include ../../../make.inc 4 include ../mmprog.inc 4 5 5 CC = gcc 6 LIB_DIR = $d:/emx/lib 7 #CPPFLAGS = -Ge- /Gm+ -G4 -Gl /O+ -Oc+ -Ol 8 #CPPFLAGS = -O -Zomf -Zcrtdll -Zmtd -s 9 CPPFLAGS = -O -Wall -Zomf -Zmt -Zsys -s 10 INC = ../include -I ../../../classes/inc -I ../../../common_functions/include 11 DEFS = 12 PROGS = 13 ODIR = . 14 CPPDIR = . 15 LIBDIR = ../lib 16 OBJECTS = $(LIBDIR)/helper.obj $(LIBDIR)/message.obj $(LIBDIR)/sys_funcs.obj 17 # $(LIBDIR)/menu_funcs.obj 18 OBJS2 = image.obj 19 #customprocs.obj playaudio.obj display.obj 6 LIBOBJECTS = $(LIBDIR)/helper.obj \ 7 $(LIBDIR)/message.obj \ 8 $(LIBDIR)/sys_funcs.obj \ 9 $(LIBDIR)/window_funcs.obj \ 10 $(LIBDIR)/img_funcs.obj \ 11 $(LIBDIR)/ini_funcs.obj 12 13 14 OBJECTS = image.obj 20 15 21 16 22 17 all: mmfind.exe 23 18 24 $(LIBDIR)/%.obj: $(COMMONSRC)/%.c 25 gcc -c -Wall -o$@ -Zomf -I$(INC) $< 26 27 %.obj: %.c 28 gcc -c -Wall -o$@ -Zomf -I$(INC) $< 29 30 mmfind.exe: mmfind.c $(OBJECTS) $(OBJS2) makefile 19 mmfind.exe: mmfind.c $(LIBOBJECTS) $(OBJECTS) makefile mmfind.rc def.tpl 31 20 #Use this command to link dynamicaly 32 gcc $(CPPFLAGS) -I$(INC) mmfind.c $(OBJECTS) $(OBJS2) -los2memmfind.def33 # rc mmfind.rc mmfind.exe 34 21 cmd /C $(TOOLDIR)\create_MMPROG_def.cmd mmfind.def 22 gcc $(CPPFLAGS) -I$(INC) mmfind.c $(LIBOBJECTS) $(OBJECTS) -los2me mmfind.def 23 rc mmfind.rc mmfind.exe 35 24 36 25 clean: … … 45 34 -rm *.flc 46 35 36 47 37 distribution: 48 -
trunk/classes/mm-progs/mmfind/mmfind.c
r2 r4 1 1 /* 2 * mm player.c (C) Chris Wohlgemuth 20042 * mmfind.c (C) Chris Wohlgemuth 2004-2005 3 3 * 4 4 */ … … 37 37 #define INCL_GPI 38 38 #define INCL_PM 39 39 #define INCL_REXXSAA 40 41 /* OS/2 and compiler includes */ 40 42 #include <os2.h> 41 43 #include <sys\types.h> … … 45 47 #include <stdlib.h> 46 48 #include "os2me.h" 47 #include "common.h" 48 #include "mmres.h" 49 #include "mmprogs_defaults.h" 49 /* CW toolkit includes */ 50 50 #include "sys_funcs.h" 51 51 #include "message_funcs.h" 52 53 #ifndef OPEN_DEFAULT 54 /* Open views for the wpOpen() method */ 55 56 #define OPEN_UNKNOWN -1 57 #define OPEN_DEFAULT 0 58 #define OPEN_CONTENTS 1 59 #define OPEN_SETTINGS 2 60 #define OPEN_HELP 3 61 #define OPEN_RUNNING 4 62 #define OPEN_PROMPTDLG 5 63 #define OPEN_PALETTE 121 /*SPLIT*/ 64 #define OPEN_USER 0x6500 65 #endif 66 67 #define TIMERID_SELECTION 1 68 52 #include "window_funcs.h" 53 #include "img_funcs.h" 54 #include "ini_funcs.h" 55 /* Program includes */ 56 #include "common.h" 57 #include "mmres.h" /* Ressource IDs */ 58 #include "mmprogs_defaults.h" 69 59 //#define DEBUG 70 #ifdef DEBUG 71 void HlpWriteToTrapLog(const char* chrFormat, ...); 72 #endif 73 74 BOOL IniSaveWindowPos(char * iniFile, char* chrApp, char *chrKey, HWND hwnd); 75 BOOL IniRestoreWindowPos(char * iniFile, char* chrApp, char *chrKey, HWND hwnd); 76 int IniRestoreInt(char * iniFile, char* chrApp, char *chrKey, int defaultInt); 77 BOOL IniSaveInt(char * iniFile, char* chrApp, char *chrKey, int theInt); 78 BOOL HlpBuildMMProgIniFileName(char* chrProgname, char * chrBuffer, ULONG ulBufferSize); 79 void freeResHandle(); 80 HMODULE queryResModuleHandle(char *chrExePath); 81 BOOL getMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource,HWND hwnd); 82 MRESULT menuInsertMenuSeparator(HWND hwndMenu, HWND hwndSubMenu, SHORT sPosition ); 83 SHORT menuInsertMenuItem( HWND hwndMenu, HWND hwndSubMenu, SHORT sPosition, int iID, char * chrText); 84 void pmUsage(); 85 ULONG messageBox( char* text, ULONG ulTextID , LONG lSizeText, 86 char* title, ULONG ulTitleID, LONG lSizeTitle, 87 HMODULE hResource, HWND hwnd, ULONG ulFlags); 88 89 HBITMAP loadBitmap ( PSZ pszFileName, PBITMAPINFOHEADER2 pBMPInfoHeader2); 90 VOID DrawBitmap ( HWND hwnd ); 91 MRESULT EXPENTRY bmpPreviewProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2); 92 void showImageControls(HWND hwnd, BOOL bShow); 93 94 char logName[]="mmfind.log"; 60 #include "mmfind.h" /* mmfind specific defines */ 61 62 char logName[]="mmfind.log"; /* To keep some (unused) helpers in helper.c happy */ 95 63 96 64 char chrIniFile[CCHMAXPATH]; 65 char chrInstallDir[CCHMAXPATH]; 66 67 char chrLastAudioDir[CCHMAXPATH]; 68 char chrLastVideoDir[CCHMAXPATH]; 69 char chrLastImageDir[CCHMAXPATH]; 70 71 /***** For previewing audio tracks *****/ 72 char chrSourceName[CCHMAXPATH]; /* The audio file to be played */ 73 BOOL bIsMidi=FALSE; /* No MIDI support atm */ 74 BOOL bIsPlaying=FALSE; /* TRUE if currently playing */ 75 BOOL bPaused=FALSE; 76 ULONG ulPos; 77 ULONG ulTotalLength; 78 HWND hwndPlayer; /* HWND of the player object window used for async coommunication */ 79 80 /***************************************/ 97 81 98 82 #define NUMPARAMS 1 … … 105 89 HMODULE RESSOURCEHANDLE=0; 106 90 107 #define numMediaType 3 108 #define MT_AUDIO 0 109 #define MT_IMAGE 1 110 #define MT_VIDEO 2 111 #define MT_UNKNOWN 100 112 113 char chrMediaFileTypes[numMediaType][100]= {"Audio","Image","Video"}; 114 char chrMediaFileExt[numMediaType][300]= {"*.AIF;*.AU;*.FLA;*.FLAC;*.IFF;*.MID;*.MP3;*.OGG;*.SND;*.VOC;*.WAV;*._AU", 91 char chrMediaFileTypes[NUMMEDIATYPES][100]; 92 93 char chrMediaFileExt[NUMMEDIATYPES][EXT_STRING_LENGTH]= {"*.AIF;*.AU;*.FLA;*.FLAC;*.IFF;*.MID;*.MP3;*.OGG;*.SND;*.VOC;*.WAV;*._AU", 94 /* The image extensions are queried using the imageext.rx and imageadd.rx scripts */ 115 95 "*.BMP;*.DIB;*.GIF;*.JPG;*.PCX;*.PNG;*.PCD;*.TIF;*.TGA;*.VID;*._IM", 116 96 "*.AVI;*.MPG;*.FLI;*.FLC;*.MOV;*.QT;*.VBS"}; 97 /* Additional audio extensions to be queried during runtime */ 98 char chrAdditionalExt[200]; 99 /* This holds the template used when building the audio information text */ 100 char audioText[255]; 101 117 102 int iMediaType=MT_AUDIO; 118 103 119 char audioText[1000]={"Play time:\t%02d:%02d\n\nSamplerate:\t%d\n\nBits per sample:\t%d\n\nChannels:\t%d"}; 120 121 HAB globalHab; 122 123 /* BMP info for preview */ 104 /* BMP stuff for preview */ 124 105 BITMAPINFOHEADER2 bmpInfoHeader2; 125 106 HBITMAP hBitmap; 126 107 108 /* HBITMAP for the play control buttons */ 109 HBITMAP hbmPlay; 110 HBITMAP hbmStop; 111 127 112 FILEDLG fd = { 0 }; 128 113 129 void loadStrings(void) 130 { 131 132 } 133 134 void showVideoControls(HWND hwnd, BOOL bShow) 114 static void _loadButtonBmps() 115 { 116 HPS hps; 117 HMODULE hResource; 118 119 hResource=NULLHANDLE; 120 hps=WinGetPS(HWND_DESKTOP); 121 122 /* Play */ 123 hbmPlay=GpiLoadBitmap(hps, hResource, IDBMP_PLAY, 0, 0); 124 125 /* Stop */ 126 hbmStop=GpiLoadBitmap(hps, hResource, IDBMP_STOP, 0, 0); 127 128 WinReleasePS(hps); 129 } 130 131 static void changeButtons(HWND hwnd) 132 { 133 HWND hwndTemp; 134 BTNCDATA btCtrl; 135 WNDPARAMS wndParams; 136 ULONG ulStyle; 137 138 if(hbmPlay) { 139 hwndTemp=WinWindowFromID(hwnd, IDPB_MMFINDPLAY); 140 141 /* Change Style to bitmap */ 142 ulStyle=WinQueryWindowULong(hwndTemp,QWL_STYLE); 143 ulStyle|=(BS_BITMAP); 144 ulStyle&=~BS_TEXT; 145 146 if(WinSetWindowULong(hwndTemp, QWL_STYLE, ulStyle)) { 147 memset(&btCtrl, 0, sizeof(btCtrl)); 148 btCtrl.cb=sizeof(btCtrl); 149 btCtrl.hImage=hbmPlay; 150 memset(&wndParams, 0, sizeof(wndParams)); 151 wndParams.fsStatus=WPM_CTLDATA; 152 wndParams.cbCtlData=btCtrl.cb; 153 wndParams.pCtlData=&btCtrl; 154 WinSendMsg(hwndTemp,WM_SETWINDOWPARAMS, 155 MPFROMP(&wndParams),0); 156 } 157 } 158 159 if(hbmStop) { 160 hwndTemp=WinWindowFromID(hwnd, IDPB_MMFINDSTOP); 161 /* Change Style to bitmap */ 162 ulStyle=WinQueryWindowULong(hwndTemp,QWL_STYLE); 163 ulStyle|=(BS_BITMAP); 164 ulStyle&=~BS_TEXT; 165 166 if(WinSetWindowULong(hwndTemp, QWL_STYLE, ulStyle)) { 167 memset(&btCtrl, 0, sizeof(btCtrl)); 168 btCtrl.cb=sizeof(btCtrl); 169 btCtrl.hImage=hbmStop; 170 memset(&wndParams, 0, sizeof(wndParams)); 171 wndParams.fsStatus=WPM_CTLDATA; 172 wndParams.cbCtlData=btCtrl.cb; 173 wndParams.pCtlData=&btCtrl; 174 WinSendMsg(hwndTemp,WM_SETWINDOWPARAMS, 175 MPFROMP(&wndParams),0); 176 } 177 } 178 } 179 180 static char* translateChars(char * chrString, char chrFrom, char chrTo) 181 { 182 char *chr=chrString; 183 184 if(chrTo == '\0' || chrFrom=='\0'|| chrString==NULLHANDLE) 185 return NULLHANDLE; 186 187 while(*chr) 188 { 189 if(*chr==chrFrom) 190 *chr=chrTo; 191 192 chr++; 193 } 194 return chrString; 195 } 196 197 static void loadStringsFromResourceDLL(HMODULE hResMod) 198 { 199 if(!MsgGetMessage(audioText, IDSTR_AUDIOINFOTEXT, sizeof(audioText), hResMod,HWND_DESKTOP)) 200 strcpy(audioText, TEXT_INFOTEXT); 201 if(!MsgGetMessage(chrMediaFileTypes[MT_AUDIO], IDSTR_TYPEAUDIO, 202 sizeof(chrMediaFileTypes[MT_AUDIO]), hResMod, HWND_DESKTOP)) 203 strcpy(chrMediaFileTypes[MT_AUDIO], TEXT_TYPEAUDIO); 204 if(!MsgGetMessage(chrMediaFileTypes[MT_IMAGE], IDSTR_TYPEIMAGE, 205 sizeof(chrMediaFileTypes[MT_IMAGE]), hResMod, HWND_DESKTOP)) 206 strcpy(chrMediaFileTypes[MT_AUDIO], TEXT_TYPEIMAGE); 207 if(!MsgGetMessage(chrMediaFileTypes[MT_VIDEO], IDSTR_TYPEVIDEO, 208 sizeof(chrMediaFileTypes[MT_VIDEO]), hResMod, HWND_DESKTOP)) 209 strcpy(chrMediaFileTypes[MT_VIDEO], TEXT_TYPEVIDEO); 210 } 211 212 static void showVideoControls(HWND hwnd, BOOL bShow) 135 213 { 136 214 /* Preview area */ … … 140 218 } 141 219 220 221 static void enableAudioPlayControls(HWND hwnd, BOOL bEnable) 222 { 223 WinEnableWindow(WinWindowFromID(hwnd, IDPB_MMFINDPAUSE), bEnable); 224 WinEnableWindow(WinWindowFromID(hwnd, IDPB_MMFINDPLAY), bEnable); 225 WinEnableWindow(WinWindowFromID(hwnd, IDPB_MMFINDSTOP), bEnable); 226 } 227 142 228 void showAudioControls(HWND hwnd, BOOL bShow) 143 229 { … … 146 232 /* Group box */ 147 233 WinShowWindow(WinWindowFromID(hwnd, IDGB_AUDIOINFO), bShow); 148 } 149 150 151 ULONG mmIdentifyFile(char* chrFile) 234 /* Playcontrols */ 235 WinShowWindow(WinWindowFromID(hwnd, IDPB_MMFINDPLAY), bShow); 236 WinShowWindow(WinWindowFromID(hwnd, IDPB_MMFINDSTOP), bShow); 237 WinShowWindow(WinWindowFromID(hwnd, IDPB_MMFINDPAUSE), bShow); 238 if(bShow) { 239 WinSetWindowToTop(WinWindowFromID(hwnd, IDPB_MMFINDPAUSE)); 240 WinSetWindowToTop(WinWindowFromID(hwnd, IDPB_MMFINDPLAY)); 241 WinSetWindowToTop(WinWindowFromID(hwnd, IDPB_MMFINDSTOP)); 242 enableAudioPlayControls(hwnd, FALSE); 243 } 244 } 245 246 BOOL pauseAudioFile(HWND hwndNotify) 247 { 248 #if 0 249 char chrCommand[50]; 250 char retMsg[100]; 251 ULONG rc; 252 253 iWavePriv=ulPid; 254 255 if(bPaused) { 256 sprintf(chrCommand,"RESUME wave%d wait", hwndNotify); 257 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 258 bPaused=FALSE; 259 showPlayTimeDisplay( hwndFrame, TRUE); 260 } 261 else { 262 sprintf(chrCommand,"PAUSE wave%d wait", iWavePriv); 263 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 264 bPaused=TRUE; 265 } 266 #endif 267 return TRUE; 268 } 269 270 BOOL stopAudioFile(HWND hwndNotify) 271 { 272 char chrCommand[50]; 273 char retMsg[100]; 274 ULONG rc; 275 276 if(bIsPlaying) { 277 sprintf(chrCommand,"stop wave%ld wait", hwndNotify); 278 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 279 280 sprintf(chrCommand,"close wave%ld wait", hwndNotify); 281 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 282 283 #if 0 284 _resetDisplay(hwndFrame); 285 showPlayTimeDisplay( hwndFrame, TRUE); 286 WinStopTimer(WinQueryAnchorBlock(hwndFrame), hwndFrame, IDTIMER_PLAY); 287 #endif 288 bIsPlaying=FALSE; 289 bPaused=FALSE; 290 } 291 292 return TRUE; 293 } 294 295 ULONG playAudioFile(HWND hwndFrame) 296 { 297 char chrCommand[CCHMAXPATH*2]; 298 char chrDevice[30]; 299 char retMsg[20]; 300 ULONG rc; 301 int iTime2; 302 HWND hwndNotify; 303 304 hwndNotify=hwndFrame;//WinWindowFromID(hwndTop, IDDLG_TOPMIDDLE); 305 306 if(bPaused) 307 { 308 pauseAudioFile(hwndFrame); 309 return 1; 310 } 311 312 ulPos=0; 313 314 stopAudioFile(hwndFrame); 315 316 if(bIsMidi) 317 strncpy(chrDevice,"SEQUENCER", sizeof(chrDevice)); 318 else 319 strncpy(chrDevice,"WAVEAUDIO", sizeof(chrDevice)); 320 321 /* Start audio file */ 322 sprintf(chrCommand,"open \"%s\" type %s alias wave%ld SHAREABLE wait", chrSourceName, chrDevice, hwndNotify); 323 324 325 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), hwndNotify, 0); 326 if((rc & 0x0000ffff)!=MCIERR_SUCCESS) 327 return 0; 328 329 /* Set time format */ 330 sprintf(chrCommand,"SET wave%ld TIME FORMAT MILLISECONDS wait", hwndNotify); 331 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 332 if((rc & 0x0000ffff)!=MCIERR_SUCCESS) { 333 sprintf(chrCommand,"close wave%ld wait", hwndNotify); 334 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 335 return 0; 336 } 337 338 #if 0 339 sprintf(chrCommand,"SETPOSITIONADVISE wave%d ON EVERY 1000 notify", iWavePriv); 340 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg),hwndNotify, 0); 341 if((rc & 0x0000ffff)!=MCIERR_SUCCESS) { 342 sprintf(chrCommand,"close wave%d wait",iWavePriv); 343 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 344 return 0; 345 } 346 #endif 347 348 /* Get wave length in ms */ 349 iTime2=0; 350 sprintf(chrCommand,"STATUS wave%ld LENGTH WAIT", hwndNotify); 351 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 352 if((rc & 0x0000ffff)==MCIERR_SUCCESS) { 353 iTime2=atoi(retMsg); 354 sprintf(chrCommand,"%d:%02d %d:%02d -%d:%02d",iTime2/1000/60,(iTime2/1000)%60, 355 0, 0, 356 iTime2/1000/60,(iTime2/1000)%60); 357 } 358 ulTotalLength=iTime2; 359 360 #if 0 361 /* Set volume */ 362 sprintf(chrCommand,"SET wave%ld AUDIO VOLUME %ld wait", hwndFrame, ulVolume); 363 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 364 if((rc & 0x0000ffff)!=MCIERR_SUCCESS) { 365 sprintf(chrCommand,"close wave%d",iWavePriv); 366 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 367 return 0; 368 } 369 #endif 370 371 sprintf(chrCommand,"play wave%ld FROM 0", hwndNotify); 372 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 373 if((rc & 0x0000ffff)!=MCIERR_SUCCESS) { 374 sprintf(chrCommand,"close wave%ld", hwndNotify); 375 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); 376 return 0; 377 } 378 379 #if 0 380 WinStartTimer(WinQueryAnchorBlock(hwndFrame), hwndFrame, IDTIMER_PLAY, PLAYTIMER_DELAY); 381 #endif 382 383 bIsPlaying=TRUE; 384 385 return 1; 386 } 387 388 static MRESULT EXPENTRY playObjectProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 389 { 390 switch (msg) 391 { 392 case WM_APPTERMINATENOTIFY: 393 { 394 395 HWND hwndFrame=HWNDFROMMP(mp2); 396 switch(LONGFROMMP(mp1)) 397 { 398 case PLAY_FILE: 399 playAudioFile(hwndFrame); 400 break; 401 case STOP_TRACK: 402 stopAudioFile(hwndFrame); 403 break; 404 case PAUSE_TRACK: 405 pauseAudioFile(hwndFrame); 406 break; 407 default: 408 break; 409 } 410 return (MRESULT)0; 411 } 412 case WM_CLOSE: 413 414 break; 415 default: 416 break; 417 } 418 return WinDefWindowProc( hwnd, msg, mp1, mp2); 419 } 420 421 /* Every folder has one running play thread to handle play commands */ 422 void _Optlink playThreadFunc (void *arg) 423 { 424 HAB hab; 425 HMQ hmq; 426 QMSG qmsg; 427 HWND hwndNotify=(HWND)arg; 428 429 hab=WinInitialize(0); 430 if(hab) { 431 hmq=WinCreateMsgQueue(hab,0); 432 if(hmq) { 433 HWND hwndPlayObject; 434 hwndPlayObject=WinCreateWindow(HWND_OBJECT,WC_STATIC,"MMAudioPlayObj", 435 0,0,0,0,0,NULLHANDLE,HWND_BOTTOM,13343,NULL,NULL); 436 if(hwndPlayObject) { 437 WinSubclassWindow(hwndPlayObject,&playObjectProc); 438 /* Window created. */ 439 WinPostMsg(hwndNotify, WM_APPTERMINATENOTIFY, MPFROMSHORT(MMAUDIO_PLAYER_CREATED), 440 MPFROMHWND(hwndPlayObject)); 441 while(WinGetMsg(hab,&qmsg,(HWND)NULL,0,0)) 442 WinDispatchMsg(hab,&qmsg); 443 444 WinDestroyWindow(hwndPlayObject); 445 } 446 WinDestroyMsgQueue(hmq); 447 } 448 WinTerminate(hab); 449 } 450 } 451 452 453 void MMAudioPlayFile(HWND hwndPlayer, HWND hwndNotify, char* chrFile) 454 { 455 WinPostMsg(hwndPlayer, WM_APPTERMINATENOTIFY, MPFROMSHORT(PLAY_FILE), MPFROMHWND(hwndNotify)); 456 } 457 458 void MMAudioStop(HWND hwndPlayer, HWND hwndNotify) 459 { 460 WinPostMsg(hwndPlayer, WM_APPTERMINATENOTIFY, MPFROMSHORT(STOP_TRACK), MPFROMHWND(hwndNotify)); 461 } 462 463 void MMAudioPause(HWND hwndPlayer, HWND hwndNotify) 464 { 465 WinPostMsg(hwndPlayer, WM_APPTERMINATENOTIFY, MPFROMSHORT(PAUSE_TRACK), MPFROMHWND(hwndNotify)); 466 } 467 468 BOOL MMAudioOpenPlayer(HWND hwndNotify) 469 { 470 if(-1==_beginthread(playThreadFunc,NULL,8192*16, (void*)hwndNotify)) 471 return FALSE; /* Error occured */ 472 473 return TRUE; 474 } 475 476 void MMAudioClosePlayer(HWND hwndPlayer) 477 { 478 WinSendMsg(hwndPlayer, WM_QUIT, 0, 0); 479 return; 480 } 481 482 static ULONG mmIdentifyFile(char* chrFile) 152 483 { 153 484 MMIOINFO mmioInfo={0}; … … 155 486 FOURCC fourCC; 156 487 157 // SysWriteToTrapLog("%s\n", chrFile);158 488 if(MMIO_SUCCESS!=mmioIdentifyFile(chrFile, &mmioInfo, &mmFormatInfo, &fourCC, 0,0)) 159 489 { … … 178 508 } 179 509 510 static PSZ queryExeDir(const char *chrEXE) 511 { 512 if(chrInstallDir[0]==0) 513 { 514 char * chr; 515 strlcpy(chrInstallDir, chrEXE, sizeof(chrInstallDir)); 516 if((chr=strrchr(chrInstallDir, '\\'))!=NULLHANDLE) 517 *chr='\0'; 518 } 519 return chrInstallDir; 520 } 521 180 522 181 523 MRESULT findFileDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) … … 187 529 { 188 530 int a; 531 SWCNTRL swctl; 532 PID pid; 189 533 190 534 /* Set dialog font */ … … 195 539 } 196 540 /* Fill combo box with media types (audio, image, video) */ 197 for(a=0;a< numMediaType;a++)541 for(a=0;a<NUMMEDIATYPES;a++) 198 542 WinSendMsg(WinWindowFromID(hwnd, IDCB_TYPEOFFILE), LM_INSERTITEM, MRFROMSHORT(LIT_SORTASCENDING), 199 543 MPFROMP(chrMediaFileTypes[a])); … … 202 546 /* Subclass preview area */ 203 547 WinSubclassWindow(WinWindowFromID(hwnd, IDSR_IMGPREVIEW), bmpPreviewProc); 548 549 /* Add switch entry */ 550 memset(&swctl,0,sizeof(swctl)); 551 WinQueryWindowProcess(hwnd,&pid,NULL); 552 swctl.hwnd=hwnd; 553 swctl.uchVisibility=SWL_VISIBLE; 554 swctl.idProcess=pid; 555 swctl.bProgType=PROG_DEFAULT; 556 swctl.fbJump=SWL_JUMPABLE; 557 WinAddSwitchEntry(&swctl); 558 559 /* Add bitmap to play control buttons */ 560 changeButtons(hwnd); 561 562 /* Start an audio player thread */ 563 MMAudioOpenPlayer(hwnd); 204 564 break; 565 } 566 case WM_APPTERMINATENOTIFY: 567 { 568 /* Posted from player object window */ 569 switch(SHORT1FROMMP(mp1)) 570 { 571 case MMAUDIO_PLAYER_CREATED: 572 /* Player object window */ 573 hwndPlayer=HWNDFROMMP(mp2); 574 break; 575 default: 576 break; 577 } 578 return MRFALSE; 205 579 } 206 580 case WM_CONTROL: … … 215 589 WinQueryWindowText(HWNDFROMMP(mp2), sizeof(chrText), chrText); 216 590 /* Find Index */ 217 for(a=0; a< numMediaType;a++) {591 for(a=0; a<NUMMEDIATYPES;a++) { 218 592 if(!stricmp(chrMediaFileTypes[a], chrText)) 219 593 break; … … 234 608 showVideoControls(hwnd, FALSE); 235 609 showImageControls(hwnd, TRUE); 236 610 iMediaType=MT_IMAGE; 237 611 break; 238 612 case 2: … … 249 623 WinSendMsg(WinWindowFromID(hwnd, 258), WM_CHAR, 250 624 MPFROM2SHORT(KC_VIRTUALKEY , 0), MPFROM2SHORT(0, VK_NEWLINE)); 251 252 625 } 253 626 break; … … 256 629 { 257 630 if(SHORT2FROMMP(mp1)==EN_CHANGE) 258 WinStartTimer( globalHab, hwnd, TIMERID_SELECTION, 100);631 WinStartTimer(WinQueryAnchorBlock(HWND_DESKTOP), hwnd, TIMERID_SELECTION, 100); 259 632 break; 260 633 } … … 272 645 char chrFullName[CCHMAXPATH*2]; 273 646 274 WinStopTimer( globalHab, hwnd, TIMERID_SELECTION);647 WinStopTimer(WinQueryAnchorBlock(HWND_DESKTOP), hwnd, TIMERID_SELECTION); 275 648 WinQueryWindowText(WinWindowFromID(hwnd, 258), sizeof(chrName), chrName); 276 649 strcpy(chrFullName, fd.szFullFile); 650 switch(iMediaType) 651 { 652 case MT_AUDIO: 653 strlcpy(chrLastAudioDir, fd.szFullFile, sizeof(chrLastAudioDir)); 654 break; 655 case MT_IMAGE: 656 strlcpy(chrLastImageDir, fd.szFullFile, sizeof(chrLastImageDir)); 657 break; 658 case MT_VIDEO: 659 strlcpy(chrLastImageDir, fd.szFullFile, sizeof(chrLastImageDir)); 660 break; 661 default: 662 break; 663 } 277 664 strcat(chrFullName, chrName); 278 665 strlcpy(chrSourceName, chrFullName, sizeof(chrSourceName)); 279 666 switch(iMediaType) 280 667 { … … 289 676 ULONG ulPlaySecs; 290 677 678 MMAudioStop(hwndPlayer, hwnd); 679 291 680 memset(&mmio,0, sizeof(mmio)); 292 681 mmio.ulFlags=MMIO_READ; … … 304 693 if(rc!=MMIO_SUCCESS) { 305 694 WinSetWindowText(WinWindowFromID(hwnd, IDST_AUDIOINFO), ""); 695 enableAudioPlayControls(hwnd, FALSE); 306 696 break; 307 697 } 308 698 309 699 ulPlaySecs=mmAudioHeader.mmXWAVHeader.XWAVHeaderInfo.ulAudioLengthInMS/1000; 310 sprintf(text, audioText, 311 ulPlaySecs/60, ulPlaySecs%60, 700 sprintf(text, audioText, ulPlaySecs/60, ulPlaySecs%60, 312 701 mmAudioHeader.mmXWAVHeader.WAVEHeader.ulSamplesPerSec, 313 702 mmAudioHeader.mmXWAVHeader.WAVEHeader.usBitsPerSample, 314 703 mmAudioHeader.mmXWAVHeader.WAVEHeader.usChannels); 315 704 WinSetWindowText(WinWindowFromID(hwnd, IDST_AUDIOINFO), text); 316 705 enableAudioPlayControls(hwnd, TRUE); 317 706 break; 318 707 } … … 320 709 if(hBitmap) { 321 710 HBITMAP hBitmapTemp; 322 hBitmapTemp=loadBitmap (chrFullName, &bmpInfoHeader2); 711 // hBitmapTemp=loadBitmap (chrFullName, &bmpInfoHeader2); 712 hBitmapTemp=ImgLoadImageFileAndHeader(chrFullName, &bmpInfoHeader2); 323 713 GpiDeleteBitmap(hBitmap); 324 714 hBitmap=hBitmapTemp; 325 715 } 326 716 else 327 hBitmap=loadBitmap (chrFullName, &bmpInfoHeader2); 717 hBitmap=ImgLoadImageFileAndHeader(chrFullName, &bmpInfoHeader2); 718 // hBitmap=loadBitmap (chrFullName, &bmpInfoHeader2); 328 719 /* Force redraw of preview area */ 329 720 WinInvalidateRect(WinWindowFromID(hwnd, IDSR_IMGPREVIEW), NULLHANDLE, FALSE); … … 342 733 switch(SHORT1FROMMP(mp1)) 343 734 { 735 case IDPB_MMFINDPLAY: 736 { 737 MMAudioPlayFile(hwndPlayer, hwnd, NULLHANDLE); 738 return MRFALSE; 739 } 740 case IDPB_MMFINDSTOP: 741 { 742 MMAudioStop(hwndPlayer, hwnd); 743 return MRFALSE; 744 } 745 case IDPB_MMFINDPAUSE: 746 { 747 MMAudioPause(hwndPlayer, hwnd); 748 return MRFALSE; 749 } 344 750 case IDPB_NEWFILE: /* New */ 345 751 { 346 752 HOBJECT hObject; 753 754 MMAudioStop(hwndPlayer, hwnd); 755 MMAudioClosePlayer(hwndPlayer); 756 757 /* Open the MM templates folder */ 347 758 if((hObject=WinQueryObject("<MMPM2_MMTEMPLATEFOLDER>"))!=NULLHANDLE) { 348 759 WinOpenObject(hObject, OPEN_DEFAULT, TRUE); … … 350 761 } 351 762 else 352 showMessageBox2(hwnd, IDSTR_NOMMTEMPLATEFLDRTITLE, IDSTR_NOMMTEMPLATEFLDR, RESSOURCEHANDLE, MB_MOVEABLE|MB_OK);353 763 MsgShowMessageBox(hwnd, IDSTR_NOMMTEMPLATEFLDRTITLE, IDSTR_NOMMTEMPLATEFLDR, 764 RESSOURCEHANDLE, MB_MOVEABLE|MB_OK); 354 765 return MRFALSE; 355 766 } 356 767 default: 768 // MMAudioStop(hwndPlayer, hwnd); 769 stopAudioFile(hwnd); 770 MMAudioClosePlayer(hwndPlayer); 771 // DosSleep(1000); 357 772 break; 358 773 } … … 363 778 } 364 779 780 BOOL getStringFromRexxScript(PSZ pszBinDir, PSZ rexxFile, char* chrResult, ULONG ulSize) 781 { 782 783 RXSTRING arg[1]; /* argument string for REXX */ 784 RXSTRING rexxretval; /* return value from REXX */ 785 APIRET rc; /* return code from REXX */ 786 SHORT rexxrc = 0; /* return code from function */ 787 char theScript[CCHMAXPATH]; 788 /* By setting the strlength of the output RXSTRING to zero, we */ 789 /* force the interpreter to allocate memory and return it to us. */ 790 /* We could provide a buffer for the interpreter to use instead. */ 791 rexxretval.strlength = 0L; /* initialize return to empty*/ 792 793 sprintf(theScript, "%s\\%s", pszBinDir, rexxFile); 794 795 /* Here we call the interpreter. We don't really need to use */ 796 /* all the casts in this call; they just help illustrate */ 797 /* the data types used. */ 798 rc=RexxStart((LONG) 0, /* number of arguments */ 799 (PRXSTRING) &arg, /* array of arguments */ 800 (PSZ) theScript, /* name of REXX file */ 801 (PRXSTRING) 0, /* No INSTORE used */ 802 (PSZ) "CWRXX", /* Command env. name */ 803 (LONG) RXSUBROUTINE, /* Code for how invoked */ 804 (PRXSYSEXIT) 0, /* No EXITs on this call */ 805 (PSHORT) &rexxrc, /* Rexx program output */ 806 (PRXSTRING) &rexxretval ); /* Rexx program output */ 807 #if 0 808 if(rc) { 809 sprintf(text,"Error in the Rexx skript %s\n\n Get more information with 'help REX%04d'.\n", 810 tPt->rexxSkript, rc*-1); 811 WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, text, "", 1234, MB_OK|MB_MOVEABLE|MB_ERROR); 812 } 813 #endif 814 if(!rc) { 815 if(ulSize>rexxretval.strlength) { 816 strncpy(chrResult, rexxretval.strptr, rexxretval.strlength); 817 chrResult[rexxretval.strlength]=0; 818 } 819 else 820 strncpy(chrResult, rexxretval.strptr, ulSize); 821 chrResult[ulSize-1]=0; 822 } 823 if(rexxretval.strptr) 824 DosFreeMem(rexxretval.strptr); /* Release storage given to us by REXX. */ 825 if(!rc) 826 return TRUE; 827 else 828 return FALSE; 829 } 830 /* 831 This function checks the installed image IO procs and adds extensions which are not yet handled 832 to the list of known extensions. 833 */ 834 static BOOL getMissingExtFromImageIOProc(char *chrMMImageKnownExt, ULONG ulSize) 835 { 836 MMFORMATINFO mmFormatInfo; 837 PMMFORMATINFO pmmFormatInfoArray; 838 void * memPtr; 839 ULONG ulReturnCode; 840 LONG lFormatsRead; 841 LONG index; 842 LONG lNumIOProcs; 843 844 memset( &mmFormatInfo, 845 '\0', 846 sizeof(MMFORMATINFO) ); 847 848 mmFormatInfo.ulMediaType |= MMIO_MEDIATYPE_IMAGE; 849 mmFormatInfo.ulFlags|=MMIO_CANREADTRANSLATED;/* Read !!!*/ 850 ulReturnCode = mmioQueryFormatCount ( &mmFormatInfo, 851 &lNumIOProcs, 852 0, 853 0 ); 854 855 if( ulReturnCode != MMIO_SUCCESS ) 856 { 857 /* 858 * Error - mmioQueryFormatCount failed. 859 */ 860 return FALSE; 861 } 862 863 /* 864 * Allocate enough memory for n number of FormatInfo blocks 865 */ 866 pmmFormatInfoArray = malloc (lNumIOProcs * sizeof( MMFORMATINFO ) ); 867 memPtr=pmmFormatInfoArray; 868 if( pmmFormatInfoArray == NULL ) 869 { 870 /* 871 * Could not allocate enough memory for mmFormatInfo array. 872 */ 873 return FALSE; 874 } 875 876 /* 877 * call mmioGetFormats to get info on the formats supported. 878 */ 879 ulReturnCode = mmioGetFormats( &mmFormatInfo, 880 lNumIOProcs, 881 pmmFormatInfoArray, 882 &lFormatsRead, 883 0, 884 0 ); 885 if( ulReturnCode != MMIO_SUCCESS ) 886 { 887 /* 888 * mmioGetFormats failed. 889 */ 890 free(pmmFormatInfoArray); 891 return FALSE; 892 } 893 894 if( lFormatsRead != lNumIOProcs ) 895 { 896 /* 897 * Error in MMIO - number of formats read in by 898 * mmioGetFormats is not equal to number of formats 899 * found by mmioQueryFormatCount. 900 */ 901 free(pmmFormatInfoArray); 902 return FALSE; 903 } 904 905 for ( index = 0; index <lNumIOProcs; index++ ) 906 { 907 /* Now scan the whole image proc array */ 908 if(!strstr(chrMMImageKnownExt, pmmFormatInfoArray->szDefaultFormatExt)) { 909 /* This extension is yet unknown */ 910 if(chrMMImageKnownExt[0]==0) { 911 /* It's the first one */ 912 sprintf(chrMMImageKnownExt,"*.%s", pmmFormatInfoArray->szDefaultFormatExt); 913 } 914 else { 915 /* Check if the extension is not already added (e.g. TIF has a lot of subformats) */ 916 if(!strstr(chrMMImageKnownExt, pmmFormatInfoArray->szDefaultFormatExt)) { 917 strlcat(chrMMImageKnownExt,";*.", ulSize); 918 strlcat(chrMMImageKnownExt, pmmFormatInfoArray->szDefaultFormatExt, ulSize); 919 } 920 } 921 } 922 /* 923 * advance to next entry in mmFormatInfo array 924 */ 925 pmmFormatInfoArray++; 926 } 927 free(memPtr); 928 return FALSE; 929 } 930 931 365 932 int main (int argc, char *argv[]) 366 933 { … … 370 937 short a; 371 938 372 // FILEDLG fd = { 0 };373 374 939 /* Create a copy of the args */ 375 940 /* argv[0]: progname 376 * argv[1]: audio file377 941 */ 378 942 … … 394 958 } 395 959 else { 396 HWND hwndDlg; 960 HWND hwndDlg; 397 961 398 962 /* Get our ressource dll */ 399 963 RESSOURCEHANDLE=queryResModuleHandle(argv[0]); 964 /* Load NLV strings */ 965 loadStringsFromResourceDLL(RESSOURCEHANDLE); 966 400 967 /* Get data from INI file */ 401 968 HlpBuildMMProgIniFileName(argv[0], chrIniFile, sizeof(chrIniFile)); 402 969 403 globalHab=WinQueryAnchorBlock(HWND_DESKTOP); 404 970 /* Get additional audio extensions from mmpm2.ini */ 971 getStringFromRexxScript(queryExeDir(argv[0]), "audioext.rx", 972 chrAdditionalExt, sizeof(chrAdditionalExt)); 973 if(strlen(chrAdditionalExt)!=0) { 974 translateChars(chrAdditionalExt, ',', ';'); 975 strlcat(chrMediaFileExt[MT_AUDIO], ";", sizeof(chrMediaFileExt[MT_AUDIO])); 976 strlcat(chrMediaFileExt[MT_AUDIO], chrAdditionalExt, sizeof(chrMediaFileExt[MT_AUDIO])); 977 } 978 979 /* Get image extensions */ 980 getStringFromRexxScript(queryExeDir(argv[0]), "imageext.rx", 981 chrMediaFileExt[MT_IMAGE], sizeof(chrMediaFileExt[MT_IMAGE])); 982 if(strlen(chrMediaFileExt[MT_IMAGE])!=0) 983 translateChars(chrMediaFileExt[MT_IMAGE], ',', ';'); 984 /* Get additional image extensions supplied by the user in imageadd.rx */ 985 chrAdditionalExt[0]=0; 986 getStringFromRexxScript(queryExeDir(argv[0]), "imageadd.rx", 987 chrAdditionalExt, sizeof(chrAdditionalExt)); 988 if(strlen(chrAdditionalExt)!=0) { 989 translateChars(chrAdditionalExt, ',', ';'); 990 strlcat(chrMediaFileExt[MT_IMAGE], ";", sizeof(chrMediaFileExt[MT_IMAGE])); 991 strlcat(chrMediaFileExt[MT_IMAGE], chrAdditionalExt, sizeof(chrMediaFileExt[MT_IMAGE])); 992 } 993 /* Get extensions handled by installed IO procs */ 994 getMissingExtFromImageIOProc(chrMediaFileExt[MT_IMAGE], sizeof(chrMediaFileExt[MT_IMAGE])); 995 996 #if 0 997 sprintf(chrInstallDir, "%d!%s!", strlen(chrMediaFileExt[MT_IMAGE]), chrMediaFileExt[MT_IMAGE]); 998 WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, chrInstallDir, chrMediaFileExt[MT_IMAGE], 1234, MB_OK); 999 #endif 1000 1001 /* Restore recent visited directories */ 1002 PrfQueryString(NULLHANDLE, chrIniFile, "mmfind", "lastaudiodir", "", chrLastAudioDir, sizeof(chrLastAudioDir)); 1003 PrfQueryString(NULLHANDLE, chrIniFile, "mmfind", "lastvideodir", "", chrLastVideoDir, sizeof(chrLastVideoDir)); 1004 PrfQueryString(NULLHANDLE, chrIniFile, "mmfind", "lastimagedir", "", chrLastImageDir, sizeof(chrLastImageDir)); 1005 1006 _loadButtonBmps(); 405 1007 fd.cbSize = sizeof( fd ); 406 1008 /* It's an centered 'Open'-dialog */ 407 1009 fd.fl = FDS_OPEN_DIALOG|FDS_CENTER | FDS_CUSTOM; 408 /* Title: "Search CDRecord/2" */409 //getMessage(text,IDSTR_FDLGSEARCHCDRDAOTITLE,sizeof(text), hSettingsResource,hwnd);410 /* Set the title of the file dialog */411 //fd.pszTitle = text;412 // fd.pszTitle = "Find file";413 /* Only show *.wav files */414 sprintf(fd.szFullFile,"%s","*.wav");415 1010 fd.hMod=RESSOURCEHANDLE; 416 1011 fd.usDlgId=IDDLG_MMFIND; 417 1012 fd.pfnDlgProc=findFileDlgProc; 418 //SysWriteToTrapLog("%x\n", fd.hMod); 1013 1014 1015 switch(iMediaType) 1016 { 1017 case MT_AUDIO: 1018 strlcpy(fd.szFullFile, chrLastAudioDir, sizeof(fd.szFullFile)); 1019 break; 1020 case MT_IMAGE: 1021 strlcpy(fd.szFullFile, chrLastImageDir, sizeof(fd.szFullFile)); 1022 break; 1023 case MT_VIDEO: 1024 strlcpy(fd.szFullFile, chrLastVideoDir, sizeof(fd.szFullFile)); 1025 break; 1026 default: 1027 break; 1028 } 1029 419 1030 if( (hwndDlg=WinFileDlg( HWND_DESKTOP, HWND_DESKTOP, &fd )) != NULLHANDLE ) 420 1031 { 421 /* Set dialog font to WarpSans for Warp 4 and above */422 1032 if(hBitmap) 423 GpiDeleteBitmap(hBitmap); 424 1033 GpiDeleteBitmap(hBitmap); 425 1034 if( fd.lReturn == DID_OK ) 426 1035 { … … 437 1046 { 438 1047 HOBJECT hObject; 439 char *chr; 1048 1049 /* Open the audio file in the editor */ 440 1050 if((hObject=WinQueryObject(fd.szFullFile))!=NULLHANDLE) 441 WinOpenObject(hObject, OPEN_DEFAULT, TRUE); 442 if((chr=strrchr(fd.szFullFile, '\\'))!=NULLHANDLE) { 443 *chr=0; 444 if((hObject=WinQueryObject(fd.szFullFile))!=NULLHANDLE) 445 WinOpenObject(hObject, OPEN_CONTENTS, TRUE); 446 } 1051 WinOpenObject(hObject, ID_MENU_EDITOR, TRUE); 1052 // WinOpenObject(hObject, OPEN_DEFAULT, TRUE); 447 1053 break; 448 1054 } … … 452 1058 char *chr; 453 1059 if((hObject=WinQueryObject(fd.szFullFile))!=NULLHANDLE) 454 WinOpenObject(hObject, OPEN_DEFAULT, TRUE); 1060 WinOpenObject(hObject, ID_MENU_PLAYER /* OPEN_DEFAULT */, TRUE); 1061 #if 0 1062 /* Open folder */ 455 1063 if((chr=strrchr(fd.szFullFile, '\\'))!=NULLHANDLE) { 456 1064 *chr=0; … … 458 1066 WinOpenObject(hObject, OPEN_CONTENTS, TRUE); 459 1067 } 1068 #endif 460 1069 break; 461 1070 } … … 464 1073 HOBJECT hObject; 465 1074 char *chr; 466 //if((hObject=WinQueryObject(fd.szFullFile))!=NULLHANDLE)467 // WinOpenObject(hObject, OPEN_DEFAULT, TRUE);468 1075 if((chr=strrchr(fd.szFullFile, '\\'))!=NULLHANDLE) { 469 1076 *chr=0; … … 475 1082 }/* switch()*/ 476 1083 }/* DID_OK */ 477 } 478 // freeResHandle(); 1084 /* Save the last visited directories */ 1085 PrfWriteString(NULLHANDLE, chrIniFile, "mmfind", "lastaudiodir", chrLastAudioDir); 1086 PrfWriteString(NULLHANDLE, chrIniFile, "mmfind", "lastvideodir", chrLastVideoDir); 1087 PrfWriteString(NULLHANDLE, chrIniFile, "mmfind", "lastimagedir", chrLastImageDir); 1088 } 1089 freeResHandle(); 479 1090 } 480 1091 WinDestroyMsgQueue(hmq); -
trunk/classes/mm-progs/mmfind/mmfind.rc
r2 r4 2 2 #include <os2.h> 3 3 #endif 4 #include "mmfind.h" 4 5 5 rcinclude mmfind.dlg 6 BITMAP IDBMP_PLAY "./bmp/play.bmp" 7 BITMAP IDBMP_STOP "./bmp/stop.bmp" -
trunk/classes/mm-progs/volume/classvolume.DEF
r2 r4 1 ; DEF-file for classvol.exe. This is a PM program which2 ; controls the volume of playing audio objects.3 1 ; 4 ; (C) Chris Wohlgemuth 2003 5 2 ; CLASSVOL: PM-Program for volume control 3 ; 4 ; 5 ; (c) Chris Wohlgemuth 2003-2005 6 ; 7 ; 8 ; Created 14 Aug 2005 21:06:17 9 ; 6 10 ;/* 7 11 ; * This program is free software; you can redistribute it and/or modify … … 26 30 ; */ 27 31 NAME CLASSVOL WINDOWAPI 28 DESCRIPTION '$@#(c) C hris Wohlgemuth :V0.2.7 (17.08.2003) ()#@PM-Program for volume control'32 DESCRIPTION '$@#(c) C. Wohlgemuth 2005:0.2 #@##1## 14/08/05 21:06:17 My ;-) ::::9::@@PM-Program for volume control V0.2.9' 29 33 STACKSIZE 1638400 30 31 32 33 -
trunk/classes/mm-progs/volume/makefile
r2 r4 3 3 include ../../../make.inc 4 4 5 CC = gcc 6 LIB_DIR = $d:/emx/lib 7 #CPPFLAGS = -Ge- /Gm+ -G4 -Gl /O+ -Oc+ -Ol 8 #CPPFLAGS = -O -Zomf -Zcrtdll -Zmtd -s 9 CPPFLAGS = -O -Wall -Zomf -Zmt -Zsys -s 10 INC = ../include -I ../../../classes/inc -I ../../../common_functions/include 11 DEFS = 12 PROGS = 13 ODIR = . 14 CPPDIR = . 15 LIBDIR = ../lib 16 OBJECTS = $(LIBDIR)/message.obj $(LIBDIR)/helper.obj $(LIBDIR)/menu_funcs.obj $(LIBDIR)/sys_funcs.obj 17 OBJS2 = customprocs.obj 18 # display.obj 5 # MM-progs specific makefile include 6 include ../mmprog.inc 19 7 8 OBJECTS = $(LIBDIR)/message.obj \ 9 $(LIBDIR)/helper.obj \ 10 $(LIBDIR)/menu_funcs.obj \ 11 $(LIBDIR)/sys_funcs.obj 12 OBJS2 = customprocs.obj 20 13 21 14 all: classvol.exe 22 15 23 $(LIBDIR)/%.obj: $(COMMONSRC)/%.c 24 gcc -c -Wall -o$@ -Zomf -I$(INC) $< 25 26 %.obj: %.c 27 gcc -c -Wall -o$@ -Zomf -I$(INC) $< 28 29 classvol.exe: classvol.c $(OBJECTS) $(OBJS2) makefile 16 classvol.exe: classvol.c $(OBJECTS) $(OBJS2) makefile def.tpl 17 cmd /C $(TOOLDIR)\create_MMPROG_def.cmd classvolume.def 30 18 #Use this command to link dynamicaly 31 gcc$(CPPFLAGS) -I$(INC) classvol.c $(OBJECTS) $(OBJS2) -los2me classvolume.def19 $(CC) $(CPPFLAGS) -I$(INC) classvol.c $(OBJECTS) $(OBJS2) -los2me classvolume.def 32 20 rc classvolume.rc classvol.exe 33 21 34 22 23 35 24 clean: 36 25 -rm *.exe 26 -rm *.dll 37 27 -rm *.obj 28 -rm *.res 38 29 -rm *.ini 39 -rm *.res40 30 41 31 cleaner: … … 43 33 -rm *.flc 44 34 35 45 36 distribution: 46 47 -
trunk/classes/res/de/cwaudio_de.rc
r2 r4 69 69 STRINGTABLE 70 70 BEGIN 71 ID_WAVEINFOPAGENAME "~Audio 72 ID_ID3TAGSPAGENAME "~ID3 71 ID_WAVEINFOPAGENAME "~Audio-Information" 72 ID_ID3TAGSPAGENAME "~ID3-Tags" 73 73 ID_TRACKNAMEPAGENAME "~Trackname" 74 74 IDSTR_TRACKNAME "Trackname" -
trunk/classes/res/de/cwimage_de.rc
r2 r4 26 26 IDSTR_CWIMAGETITLE "Digitales Bild" 27 27 28 IDSTR_IMAGEINFOPAGENAME "~Bild 28 IDSTR_IMAGEINFOPAGENAME "~Bild-Information" 29 29 IDSTR_SPRINTFPIXEL "%d Pixel" 30 30 IDSTR_SPRINTFBIT "%d Bit" -
trunk/classes/res/de/makefile
r2 r4 4 4 include ../../../build.inc 5 5 6 LANGUAGE = _ DE6 LANGUAGE = _de 7 7 8 8 CC = icc … … 27 27 icc $(CPPFLAGS) -I$(INC) /Fe$(OBJDIR)\$@ $< mmres$(LANGUAGE).def 28 28 rc -D $(ECS) -i $(INC) mmres$(LANGUAGE).rc $(OBJDIR)/mmres$(LANGUAGE).dll 29 rc -r -D $(ECS) -i $(INC) mmres$(LANGUAGE).rc $(OBJDIR)/mmres$(LANGUAGE).res 29 30 # rc mmres$(LANGUAGE).res $(OBJDIR)/mmres$(LANGUAGE).dll 30 31 -
trunk/classes/res/de/mmfind_de.dlg
r2 r4 37 37 CTEXT "Keine Vorschau verfgbar", IDST_NOPREVIEWAVAILABLE, 251, 42, 78, 33, 38 38 DT_WORDBREAK | NOT WS_VISIBLE 39 LTEXT "", IDST_AUDIOINFO, 253, 21, 75, 62, DT_WORDBREAK | NOT39 LTEXT "", IDST_AUDIOINFO, 253, 41, 75, 42, DT_WORDBREAK | NOT 40 40 WS_VISIBLE 41 41 GROUPBOX "Audio-Information", IDGB_AUDIOINFO, 245, 17, 89, 79, NOT WS_VISIBLE 42 PUSHBUTTON "Stop", IDPB_MMFINDSTOP, 267, 19, 21, 10, 43 BS_NOPOINTERFOCUS | NOT WS_TABSTOP 44 PUSHBUTTON "Play", IDPB_MMFINDPLAY, 291, 19, 21, 10, 45 BS_NOPOINTERFOCUS | NOT WS_TABSTOP 42 46 DEFPUSHBUTTON "~OK", DID_OK, 3, 2, 40, 12 43 47 PUSHBUTTON "~Neu...", IDPB_NEWFILE, 46, 2, 40, 12 -
trunk/classes/res/de/mmfind_de.rc
r2 r4 8 8 IDSTR_TYPEIMAGE "Bilddatei" 9 9 IDSTR_TYPEVIDEO "Videodatei" 10 IDSTR_AUDIOINFOTEXT "Spielzeit:\t%02d:%02d\ n\nSamplerate:\t%d\n\nBits pro Sample:\t%d\n\nKanle:\t%d"10 IDSTR_AUDIOINFOTEXT "Spielzeit:\t%02d:%02d\x0a\x0aSamplerate:\t%d\x0a\x0aBits pro Sample:\t%d\x0a\x0aKanle:\t\t%d" 11 11 IDSTR_NOMMTEMPLATEFLDRTITLE "Fehler bei Dateierstellung" 12 12 IDSTR_NOMMTEMPLATEFLDR "Multimedia-Schablonenordner kann nicht gefunden werden. Mglicherweise ist die Objekt-ID <MMPM2_MMTEMPLATEFOLDER> verloren gegangen." -
trunk/classes/res/en/mmfind_en.dlg
r2 r4 37 37 CTEXT "No preview available", IDST_NOPREVIEWAVAILABLE, 251, 42, 78, 33, 38 38 DT_WORDBREAK | NOT WS_VISIBLE 39 LTEXT "", IDST_AUDIOINFO, 253, 21, 75, 62, DT_WORDBREAK | NOT39 LTEXT "", IDST_AUDIOINFO, 253, 41, 75, 42, DT_WORDBREAK | NOT 40 40 WS_VISIBLE 41 41 GROUPBOX "Audio info", IDGB_AUDIOINFO, 245, 17, 89, 79, NOT WS_VISIBLE 42 PUSHBUTTON "Stop", IDPB_MMFINDSTOP, 267, 19, 21, 10, 43 BS_NOPOINTERFOCUS | NOT WS_TABSTOP 44 PUSHBUTTON "Play", IDPB_MMFINDPLAY, 291, 19, 21, 10, 45 BS_NOPOINTERFOCUS | NOT WS_TABSTOP 42 46 DEFPUSHBUTTON "~OK", DID_OK, 3, 2, 40, 12 43 47 PUSHBUTTON "~New...", IDPB_NEWFILE, 46, 2, 40, 12 -
trunk/classes/res/en/mmfind_en.rc
r2 r4 8 8 IDSTR_TYPEIMAGE "Image" 9 9 IDSTR_TYPEVIDEO "Video" 10 IDSTR_AUDIOINFOTEXT "Play time:\t%02d:%02d\ n\nSamplerate:\t%d\n\nBits per sample:\t%d\n\nChannels:\t%d"10 IDSTR_AUDIOINFOTEXT "Play time:\t%02d:%02d\x0a\x0aSamplerate:\t%d\x0a\x0aBits per sample:\t%d\x0a\x0aChannels:\t%d" 11 11 IDSTR_NOMMTEMPLATEFLDRTITLE "Error during file creation" 12 12 IDSTR_NOMMTEMPLATEFLDR "Multimedia template folder can't be found. It may has lost the object ID <MMPM2_MMTEMPLATEFOLDER>." -
trunk/classes/res/it/mmfind_it.dlg
r2 r4 38 38 CTEXT "Anteprima non disponibile", IDST_NOPREVIEWAVAILABLE, 251, 42, 78, 33, 39 39 DT_WORDBREAK | NOT WS_VISIBLE 40 LTEXT "", IDST_AUDIOINFO, 253, 21, 75, 62, DT_WORDBREAK | NOT40 LTEXT "", IDST_AUDIOINFO, 253, 41, 75, 42, DT_WORDBREAK | NOT 41 41 WS_VISIBLE 42 42 GROUPBOX "Informazioni audio", IDGB_AUDIOINFO, 245, 17, 89, 79, NOT WS_VISIBLE 43 PUSHBUTTON "Stop", IDPB_MMFINDSTOP, 267, 19, 21, 10, 44 BS_NOPOINTERFOCUS | NOT WS_TABSTOP 45 PUSHBUTTON "Play", IDPB_MMFINDPLAY, 291, 19, 21, 10, 46 BS_NOPOINTERFOCUS | NOT WS_TABSTOP 43 47 DEFPUSHBUTTON "~OK", DID_OK, 3, 2, 40, 12 44 48 PUSHBUTTON "~Nuovo", IDPB_NEWFILE, 46, 2, 40, 12 -
trunk/classes/res/it/mmfind_it.rc
r2 r4 8 8 IDSTR_TYPEIMAGE "Immagine" 9 9 IDSTR_TYPEVIDEO "Video" 10 IDSTR_AUDIOINFOTEXT "Tempo trascorso:\t%02d:%02d\ n\nFrequenza campionamento:\t%d\n\nBit per campione:\t%d\n\nCanali:\t%d"10 IDSTR_AUDIOINFOTEXT "Tempo trascorso:\t%02d:%02d\x0a\x0aFrequenza campionamento:\t%d\x0a\x0aBit per campione:\t%d\x0a\x0aCanali:\t%d" 11 11 IDSTR_NOMMTEMPLATEFLDRTITLE "Errore durante la creazione del file" 12 12 IDSTR_NOMMTEMPLATEFLDR "Impossibile trovare il modello per la cartella multimedia. Potrebbe essersi persa la ID oggetto <MMPM2_MMTEMPLATEFOLDER>." -
trunk/classes/res/makefile
r2 r4 3 3 include ../../make.inc 4 4 5 INC = ../include6 5 CURDIR = . 7 6 8 7 .PHONY: clean cleaner clean_nlv 9 8 10 all: nlv 11 cd ./common_res && make 9 all: nlv common_res 12 10 13 11 nlv: 14 @echo "[35;1;mCreating laguage files.[0;m"12 @echo "[35;1;mCreating laguage resources.[0;m" 15 13 @for i in $(LANGUAGES); \ 16 14 do \ … … 18 16 cd $(CURDIR)/$$i && make LANGUAGE=_$$i && cd .. ; \ 19 17 done 18 19 common_res: 20 cd ./common_res && make 20 21 21 22 clean_nlv: -
trunk/classes/res/nl/mmfind_nl.dlg
r2 r4 37 37 CTEXT "No preview available", IDST_NOPREVIEWAVAILABLE, 251, 42, 78, 33, 38 38 DT_WORDBREAK | NOT WS_VISIBLE 39 LTEXT "", IDST_AUDIOINFO, 253, 21, 75, 62, DT_WORDBREAK | NOT39 LTEXT "", IDST_AUDIOINFO, 253, 41, 75, 42, DT_WORDBREAK | NOT 40 40 WS_VISIBLE 41 41 GROUPBOX "Audio info", IDGB_AUDIOINFO, 245, 17, 89, 79, NOT WS_VISIBLE 42 PUSHBUTTON "Stop", IDPB_MMFINDSTOP, 267, 19, 21, 10, 43 BS_NOPOINTERFOCUS | NOT WS_TABSTOP 44 PUSHBUTTON "Play", IDPB_MMFINDPLAY, 291, 19, 21, 10, 45 BS_NOPOINTERFOCUS | NOT WS_TABSTOP 42 46 DEFPUSHBUTTON "~OK", DID_OK, 3, 2, 40, 12 43 47 PUSHBUTTON "~New...", IDPB_NEWFILE, 46, 2, 40, 12 -
trunk/classes/res/nl/mmfind_nl.rc
r2 r4 8 8 IDSTR_TYPEIMAGE "Image" 9 9 IDSTR_TYPEVIDEO "Video" 10 IDSTR_AUDIOINFOTEXT "Play time:\t%02d:%02d\ n\nSamplerate:\t%d\n\nBits per sample:\t%d\n\nChannels:\t%d"10 IDSTR_AUDIOINFOTEXT "Play time:\t%02d:%02d\x0a\x0aSamplerate:\t%d\x0a\x0aBits per sample:\t%d\x0a\x0aChannels:\t%d" 11 11 IDSTR_NOMMTEMPLATEFLDRTITLE "Error during file creation" 12 12 IDSTR_NOMMTEMPLATEFLDR "Multimedia template folder can't be found. It may has lost the object ID <MMPM2_MMTEMPLATEFOLDER>." -
trunk/common_functions/helper.c
r2 r4 70 70 void HlpWriteToTrapLog(const char* chrFormat, ...); 71 71 72 #if 073 /****************************************************74 * *75 * This funktion returns the running OS version: *76 * *77 * 30: Warp 3, 40 Warp 4 *78 * *79 ****************************************************/80 ULONG cwQueryOSRelease()81 {82 static ULONG ulVersionMinor=0;83 84 if(!ulVersionMinor)85 if(DosQuerySysInfo(QSV_VERSION_MINOR, QSV_VERSION_MINOR, &ulVersionMinor, sizeof(ulVersionMinor)))86 ulVersionMinor=30;/* Default Warp 3 */87 88 return ulVersionMinor;89 90 }91 #endif92 72 93 73 void removeLog(void) … … 564 544 } 565 545 #endif 566 546 #if 0 547 if(SysQueryHomeDir(chrHomeDir, sizeof(chrHomeDir))) { 548 strcpy(chrPath, chrHomeDir); 549 strncat(chrPath, "\\WPSWIZZ.INI", size-strlen(chrPath)-1);/* Default is INI file in users home dir */ 550 return; 551 } 552 553 strcpy(chrPath, queryHelpPath()); 554 if((ptrChar=strrchr(chrPath, '\\'))!=NULLHANDLE) { 555 *ptrChar=0; 556 if((ptrChar=strrchr(chrPath, '\\'))!=NULLHANDLE) 557 *ptrChar=0; 558 } 559 strncat(chrPath, "\\WPSWIZZ.INI", size-strlen(chrPath)-1); 560 chrPath[size-1]=0; 561 #endif 562 563 /* 564 Query the path to the INI file used by the MM progs to store the private data. 565 If a home dir exists on the users system the INI file will be create there otherwise 566 in the directory where the calling EXE is located. 567 */ 567 568 BOOL HlpBuildMMProgIniFileName(char* chrProgname, char * chrBuffer, ULONG ulBufferSize) 568 569 { 569 570 char * chrPtr; 570 strncpy(chrBuffer, chrProgname,ulBufferSize); 571 chrBuffer[ulBufferSize-1]=0; 571 572 /* Default is INI file in users home dir */ 573 if(SysQueryHomeDir(chrBuffer, ulBufferSize)) { 574 strlcat(chrBuffer, MMCLS_INI_FILE_NAME, ulBufferSize); /* MMCLS_INI_FILE_NAME = "\\CWMM.INI" */ 575 return TRUE; 576 } 577 578 /* No HOME dir for some reason */ 579 strlcpy(chrBuffer, chrProgname, ulBufferSize); 572 580 573 581 if((chrPtr=strrchr(chrBuffer,'\\'))==NULLHANDLE) 574 return FALSE; 582 return FALSE; // This shouldn't happen! 575 583 576 584 *chrPtr=0; 577 str ncat(chrBuffer,INI_FILE_NAME, ulBufferSize-strlen(chrBuffer)-1);585 strlcat(chrBuffer, MMCLS_INI_FILE_NAME, ulBufferSize); 578 586 579 587 return TRUE; -
trunk/common_functions/img_funcs.c
r2 r4 2 2 This file conatins functions for loading image files. 3 3 */ 4 4 5 #define INCL_PM 6 #define INCL_OS2MM 5 7 #define INCL_MMIOOS2 6 8 … … 18 20 /* This function loads a supported image file. */ 19 21 /* Every format for which MMOS2 has an IO procedure */ 20 /* may be used here. */ 22 /* may be used here. In contrast to */ 23 /* ImgLoadImageFile() a provided BMPINFOHEADER2 */ 24 /* structure is filled with data. */ 25 /* */ 21 26 /* */ 22 27 /* @@RETURNS */ … … 24 29 /* HBITMAP hBitmap */ 25 30 /* */ 26 /* HAndle to the bitmap of NULL. */ 31 /* Handle to the bitmap or NULL. */ 32 /* */ 33 /* @@PARAM */ 34 /* */ 35 /* PSZ pszFileName input */ 36 /* */ 37 /* Name of the image file to load. */ 38 /* */ 39 /* @@PARAM */ 40 /* */ 41 /* PBITMAPINFOHEADER2 pBMPInfoHeader2 in/out */ 42 /* */ 43 /* Pointer to a BITMAPINFOHEADER2 structure. */ 44 /* */ 45 /* */ 46 /* @@REMARKS */ 47 /* */ 48 /* The caller must free the bitmap handle after */ 49 /* use. */ 27 50 /* */ 28 51 /*!!*************************************************/ 29 HBITMAP ImgLoadImageFile ( PSZ pszFileName)52 HBITMAP ImgLoadImageFileAndHeader( PSZ pszFileName, PBITMAPINFOHEADER2 pBMPInfoHeader2) 30 53 { 31 54 HBITMAP hbm; 32 HBITMAP hbmTarget;33 55 MMIOINFO mmioinfo; 34 56 MMFORMATINFO mmFormatInfo; 35 57 HMMIO hmmio; 36 37 58 ULONG ulImageHeaderLength; 59 MMIMAGEHEADER mmImgHdr; 38 60 ULONG ulBytesRead; 39 61 ULONG dwNumRowBytes; … … 131 153 return (0L); 132 154 } 133 /* 134 memcpy(pBMPInfoHeader2, &mmImgHdr.mmXDIBHeader.BMPInfoHeader2, 135 sizeof(BITMAPINFOHEADER2)+256*sizeof(RGB2) ); 136 */ 155 137 156 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ 157 *pBMPInfoHeader2=mmImgHdr.mmXDIBHeader.BMPInfoHeader2; 138 158 139 159 /* … … 226 246 NULL); 227 247 228 #if 0229 hbm = GpiCreateBitmap ( hps,230 pBMPInfoHeader2,231 0L,232 NULL,233 NULL);234 #endif235 236 248 if ( !hbm ) 237 249 { … … 250 262 return(0L); 251 263 } 252 /* 253 // *************************************************** 254 // Select the bitmap into the memory device context. 255 // ***************************************************/ 264 /**************************************************** 265 Select the bitmap into the memory device context. 266 ***************************************************/ 256 267 hbReturnCode = GpiSetBitmap ( hps, 257 268 hbm ); 258 /* 259 //*************************************************************** 260 // LOAD THE BITMAP DATA FROM THE FILE 261 // One line at a time, starting from the BOTTOM 262 //*************************************************************** */ 269 /*************************************************************** 270 LOAD THE BITMAP DATA FROM THE FILE 271 One line at a time, starting from the BOTTOM 272 ****************************************************************/ 263 273 264 274 for ( dwRowCount = 0; dwRowCount < dwHeight; dwRowCount++ ) … … 294 304 295 305 296 BOOL ImgGetBmpInfoHeader(PBITMAPINFOHEADER2 bmpih2, PSZ pszFileName /*, char* procName, ULONG ulLength*/) 306 /*!**************************************************/ 307 /* */ 308 /* @@DESC */ 309 /* */ 310 /* This function loads a supported image file. */ 311 /* Every format for which MMOS2 has an IO procedure */ 312 /* may be used here. */ 313 /* */ 314 /* @@PARAM */ 315 /* */ 316 /* PSZ pszFileName input */ 317 /* */ 318 /* Name of the image file to load. */ 319 /* */ 320 /* @@RETURNS */ 321 /* */ 322 /* HBITMAP hBitmap */ 323 /* */ 324 /* Handle to the bitmap of NULL. */ 325 /* */ 326 /*!!*************************************************/ 327 HBITMAP ImgLoadImageFile ( PSZ pszFileName ) 328 { 329 BITMAPINFOHEADER2 bmpih2; 330 331 return ImgLoadImageFileAndHeader ( pszFileName, &bmpih2 ); 332 } 333 334 335 336 /*!**************************************************/ 337 /* */ 338 /* @@DESC */ 339 /* */ 340 /* Build a BITMAPINFOHEADER2 for the given file. */ 341 /* */ 342 /* @@PARAM */ 343 /* */ 344 /* PSZ pszFileName input */ 345 /* */ 346 /* Name of the image file. */ 347 /* */ 348 /* @@PARAM */ 349 /* */ 350 /* PBITMAPINFOHEADER2 pBMPInfoHeader2 in/out */ 351 /* */ 352 /* Pointer to a BITMAPINFOHEADER2 structure. */ 353 /* */ 354 /* @@RETURNS */ 355 /* */ 356 /* TRUE on success, FALSE otherwise */ 357 /* */ 358 /*!!*************************************************/ 359 BOOL ImgGetBmpInfoHeader(PSZ pszFileName, PBITMAPINFOHEADER2 bmpih2) 297 360 { 298 361 MMIOINFO mmioinfo; … … 305 368 ULONG ulReturnCode; 306 369 ULONG ulBytesRead; 307 char *pName;308 370 309 // if(procName)310 // procName[0]=0;311 312 371 /* Check file size */ 313 372 if(SysQueryFileSize(pszFileName)==0) -
trunk/common_functions/include/img_funcs.h
r2 r4 3 3 4 4 HBITMAP ImgLoadImageFile ( PSZ pszFileName ); 5 BOOL ImgGetBmpInfoHeader(PBITMAPINFOHEADER2 bmpih2, PSZ pszFileName /*, char* procName, ULONG ulLength*/); 5 HBITMAP ImgLoadImageFileAndHeader ( PSZ pszFileName, PBITMAPINFOHEADER2 pBMPInfoHeader2); 6 BOOL ImgGetBmpInfoHeader(PSZ pszFileName, PBITMAPINFOHEADER2 bmpih2 /*, char* procName, ULONG ulLength*/); 6 7 7 8 #endif -
trunk/common_functions/include/ini_funcs.h
r2 r4 6 6 #endif 7 7 8 BOOL IniSaveWindowPos(HINI hini, char * iniFile, char* chrApp, char *chrKey, HWND hwnd); 9 BOOL IniRestoreWindowPos(HINI hini, char * iniFile, char* chrApp, char *chrKey, HWND hwnd, ULONG fSize); 8 BOOL PrfSaveWindowPos(HINI hini, char * iniFile, char* chrApp, char *chrKey, HWND hwnd); 9 BOOL PrfRestoreWindowPos(HINI hini, char * iniFile, char* chrApp, char *chrKey, HWND hwnd, ULONG fSize); 10 BOOL PrfWriteString(HINI hini, char * iniFile, char* chrApp, char *chrKey, char* chrString); 11 BOOL PrfQueryString(HINI hini, char * iniFile, char* chrApp, char *chrKey, char* chrDefault, char* chrBuffer, ULONG ulSize); 10 12 11 13 #if __cplusplus -
trunk/common_functions/include/message_funcs.h
r2 r4 9 9 char* title, ULONG ulTitleID, LONG lSizeTitle, 10 10 HMODULE hResource, HWND hwnd, ULONG ulFlags); 11 ULONG showMessageBox2(HWND hwnd, ULONG ulIDTitle, ULONG ulIDText, HMODULE hModule, ULONG ulFlag);11 ULONG MsgShowMessageBox(HWND hwnd, ULONG ulIDTitle, ULONG ulIDText, HMODULE hModule, ULONG ulFlag); 12 12 BOOL getMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource,HWND hwnd); 13 13 BOOL MsgGetMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource,HWND hwnd); 14 15 #if 0 16 ULONG showMessageBox2(HWND hwnd, ULONG ulIDTitle, ULONG ulIDText, HMODULE hModule, ULONG ulFlag); 17 #endif 18 14 19 #ifdef __CPLUSPLUS__ 15 20 } -
trunk/common_functions/include/sys_funcs.h
r2 r4 28 28 ULONG SysQueryDriveType(ULONG ulDriveNum); 29 29 ULONG SysQueryFreeDriveSpace(ULONG ulDriveNum, ULONG *ulTotal, ULONG * ulFree, ULONG* ulBytesUnit); 30 ULONG SysQueryDiskName(ULONG ulDriveNum, ULONG ulSize, char *chrBuffer);30 ULONG SysQueryDiskName(ULONG ulDriveNum, char *chrBuffer, ULONG ulSize); 31 31 BOOL SysQueryHomeDir(char* chrBuf, ULONG ulSize); 32 32 -
trunk/common_functions/ini_funcs.c
r2 r4 1 1 /* 2 * This file is (C) Chris Wohlgemuth 2001-200 42 * This file is (C) Chris Wohlgemuth 2001-2005 3 3 */ 4 5 4 #define INCL_WIN 6 5 7 6 #include <os2.h> 8 7 9 /* 10 hini may be NULL. Then the filename is used to open the ini file. 11 */ 12 /*!**************************************************/ 8 /*!**************************************************/ 9 /* */ 10 /* @@MODULE */ 11 /* */ 12 /* Profile functions */ 13 13 /* */ 14 14 /* @@DESC */ … … 31 31 /* */ 32 32 /*!!*************************************************/ 33 BOOL IniSaveWindowPos(HINI hini, char * iniFile, char* chrApp, char *chrKey, HWND hwnd)33 BOOL PrfSaveWindowPos(HINI hini, char* iniFile, char* chrApp, char* chrKey, HWND hwnd) 34 34 { 35 35 BOOL bError=FALSE; … … 65 65 /*!**************************************************/ 66 66 /* */ 67 /* @@MODULE */ 68 /* */ 69 /* Profile functions */ 70 /* */ 67 71 /* @@DESC */ 68 72 /* */ … … 85 89 /* */ 86 90 /*!!*************************************************/ 87 BOOL IniRestoreWindowPos(HINI hini, char * iniFile, char* chrApp, char *chrKey, HWND hwnd, ULONG fSize)91 BOOL PrfRestoreWindowPos(HINI hini, char * iniFile, char* chrApp, char *chrKey, HWND hwnd, ULONG fSize) 88 92 { 89 93 HINI hiniPriv=hini; … … 115 119 } 116 120 117 118 121 /*!**************************************************/ 122 /* */ 123 /* @@MODULE */ 124 /* */ 125 /* Profile functions */ 126 /* */ 127 /* @@DESC */ 128 /* */ 129 /* Save a string in an INI file. */ 130 /* */ 131 /* . */ 132 /* */ 133 /* @@REMARKS */ 134 /* */ 135 /* If hini is NULL the given file name will be used */ 136 /* for opening the INI file. If hini is not NULL */ 137 /* the file name is ignored. */ 138 /* */ 139 /* @@RETURNS */ 140 /* */ 141 /* BOOL fSuccess */ 142 /* */ 143 /* TRUE: Function succeeded. */ 144 /* FALSE: Error occurred */ 145 /* */ 146 /*!!*************************************************/ 147 BOOL PrfWriteString(HINI hini, char * iniFile, char* chrApp, char *chrKey, char* chrString) 148 { 149 BOOL bError=FALSE; 150 HINI hiniPriv=hini; 151 152 if(!hini && !iniFile) 153 return FALSE; 154 155 do { 156 if(!hiniPriv) { 157 /* Open ini-file */ 158 if((hiniPriv=PrfOpenProfile(WinQueryAnchorBlock(HWND_DESKTOP),(unsigned char *)iniFile)) 159 ==NULLHANDLE) 160 break; 161 }/* end of if(!hiniPriv) */ 162 163 if(!PrfWriteProfileString(hiniPriv, chrApp, chrKey, chrString)) 164 bError=TRUE; 165 166 if(hiniPriv && !hini) 167 PrfCloseProfile(hiniPriv); 168 169 if(bError) 170 break; 171 return TRUE; 172 } while(TRUE); 173 return FALSE; 174 } 175 176 /*!**************************************************/ 177 /* */ 178 /* @@MODULE */ 179 /* */ 180 /* Profile functions */ 181 /* */ 182 /* @@DESC */ 183 /* */ 184 /* Get a string from an INI file. */ 185 /* */ 186 /* . */ 187 /* */ 188 /* @@REMARKS */ 189 /* */ 190 /* If hini is NULL the given file name will be used */ 191 /* for opening the INI file. If hini is not NULL */ 192 /* the file name is ignored. */ 193 /* */ 194 /* @@RETURNS */ 195 /* */ 196 /* ULONG ulLength */ 197 /* */ 198 /* TRUE: Function succeeded. */ 199 /* FALSE: Error occurred */ 200 /* */ 201 /*!!*************************************************/ 202 BOOL PrfQueryString(HINI hini, char * iniFile, char* chrApp, char *chrKey, char* chrDefault, char* chrBuffer, ULONG ulSize) 203 { 204 HINI hiniPriv=hini; 205 ULONG ulRC=0; 206 207 do{ 208 if(!hiniPriv) { 209 if((hiniPriv=PrfOpenProfile(WinQueryAnchorBlock(HWND_DESKTOP),(unsigned char *)iniFile)) 210 ==NULLHANDLE) 211 break; 212 }/* end of if(!hini) */ 213 214 ulRC=PrfQueryProfileString(hiniPriv, chrApp, chrKey, chrDefault, chrBuffer, ulSize); 215 216 if(hiniPriv && !hini) 217 PrfCloseProfile(hiniPriv); 218 219 break; 220 } while(TRUE); 221 return ulRC; 222 } 223 224 -
trunk/common_functions/listbox_funcs.c
r2 r4 14 14 #endif 15 15 16 /*!***********************************************************/ 17 /* */ 18 /* @@DESC */ 19 /* */ 20 /* To be written... */ 21 /* */ 22 /*!!**********************************************************/ 16 23 SHORT LBFindMatch(HWND hwndLB, char *chrMatchText) 17 24 { -
trunk/common_functions/menu_funcs.c
r2 r4 76 76 } 77 77 78 /*!***********************************************************/ 79 /* */ 80 /* @@DESC */ 81 /* */ 82 /* To be written... */ 83 /* */ 84 /*!!**********************************************************/ 78 85 SHORT menuQueryItemCount(HWND hwndMenu) 79 86 { … … 82 89 } 83 90 91 /*!***********************************************************/ 92 /* */ 93 /* @@DESC */ 94 /* */ 95 /* To be written... */ 96 /* */ 97 /*!!**********************************************************/ 84 98 MRESULT menuCheckItem(HWND hwndMenu, USHORT usID, BOOL fIncludeSubMenu, BOOL fCheck) 85 99 { … … 88 102 } 89 103 104 /*!***********************************************************/ 105 /* */ 106 /* @@DESC */ 107 /* */ 108 /* To be written... */ 109 /* */ 110 /*!!**********************************************************/ 90 111 MRESULT menuRemoveItem(HWND hwndMenu, USHORT usID, BOOL fIncludeSubMenu) 91 112 { … … 94 115 } 95 116 117 /*!***********************************************************/ 118 /* */ 119 /* @@DESC */ 120 /* */ 121 /* To be written... */ 122 /* */ 123 /*!!**********************************************************/ 96 124 MRESULT menuCheckForItem(HWND hwndMenu, USHORT usID, BOOL fIncludeSubMenu) 97 125 { -
trunk/common_functions/message.c
r2 r4 4 4 #include <os2.h> 5 5 #include <stdio.h> 6 #include <stdlib.h> 6 7 #include <string.h> 7 8 … … 44 45 /* ULONG ulResult */ 45 46 /* */ 46 /* MBID_ERROR i scase of an error. */47 /* MBID_ERROR in case of an error. */ 47 48 /* :p. */ 48 49 /* Result code from WinMessageBox(). */ … … 82 83 } 83 84 85 #if 0 84 86 /*!**************************************************/ 85 87 /* */ … … 89 91 /* the resource DLL or the EXE file. */ 90 92 /* Unlike messagebox no buffers must be given but */ 91 /* only the string IDs. M Ax title length is 100, */93 /* only the string IDs. Max title length is 256, */ 92 94 /* max text length 256. */ 95 /* :p. */ 96 /* */ 97 /* This function is obsolete. */ 98 /* Use MsgShowMessageBox() instead. */ 93 99 /* */ 94 100 /* @@RETURNS */ … … 96 102 /* ULONG ulResult */ 97 103 /* */ 98 /* MBID_ERROR i scase of an error. */104 /* MBID_ERROR in case of an error. */ 99 105 /* :p. */ 100 106 /* Result code from WinMessageBox(). */ 101 107 /* */ 108 /* @@REMARKS */ 109 /* */ 110 /* This function is obsolete. */ 111 /* Use MsgShowMessageBox() instead. */ 102 112 /* */ 103 113 /*!!*************************************************/ … … 105 115 { 106 116 char text[256]; 107 char title[ 100];117 char title[256]; 108 118 109 119 return mBox( text, ulIDText , sizeof(text), … … 111 121 hModule, hwnd, ulFlag); 112 122 }; 123 #endif 124 125 /*!**************************************************/ 126 /* */ 127 /* @@DESC */ 128 /* */ 129 /* Show a message box with text strings loaded from */ 130 /* the resource DLL or the EXE file. */ 131 /* Unlike messagebox() no buffers must be given but */ 132 /* only the string IDs. Max title length is 256, */ 133 /* max text length 256. */ 134 /* */ 135 /* @@PARAM */ 136 /* */ 137 /* HWND hwnd input */ 138 /* */ 139 /* Handle to a window. This will be the owner of */ 140 /* the message box. */ 141 /* */ 142 /* @@PARAM */ 143 /* */ 144 /* ULONG ulIDTitle input */ 145 /* */ 146 /* ID of the string to be used as the title. */ 147 /* */ 148 /* @@PARAM */ 149 /* */ 150 /* ULONG ulIDText input */ 151 /* */ 152 /* ID of the string to be used as the text. */ 153 /* */ 154 /* @@PARAM */ 155 /* */ 156 /* HMODULE hModule input */ 157 /* */ 158 /* Handle to a ressource DLL or NULLHANDLE. If */ 159 /* this parameter is null the strings will be */ 160 /* taken from ressources bound to the executable. */ 161 /* */ 162 /* @@PARAM */ 163 /* */ 164 /* ULONG ulFlags input */ 165 /* */ 166 /* Flags specifying the appearance of the message */ 167 /* box. See WinMessageBox() for more information. */ 168 /* */ 169 /* @@RETURNS */ 170 /* */ 171 /* ULONG ulResult */ 172 /* */ 173 /* MBID_ERROR in case of an error. This may be */ 174 /* for example if the ressources can't be found. */ 175 /* :p. */ 176 /* Result code from WinMessageBox(). */ 177 /* */ 178 /* @@REMARKS */ 179 /* */ 180 /* The parent of the message box is HWND_DESKTOP. */ 181 /* */ 182 /*!!*************************************************/ 183 ULONG MsgShowMessageBox(HWND hwnd, ULONG ulIDTitle, ULONG ulIDText, HMODULE hModule, ULONG ulFlag) 184 { 185 char* pText; 186 char* pTitle; 187 ULONG rc; 188 189 #define TLENGTH 256L 190 191 if(NULLHANDLE==(pText=malloc(TLENGTH*2*sizeof(char)))) 192 return MBID_ERROR; 193 194 pTitle=pText+TLENGTH*sizeof(char); 195 196 rc=mBox( pText, ulIDText , TLENGTH, 197 pTitle, ulIDTitle, TLENGTH, 198 hModule, hwnd, ulFlag); 199 200 free(pText); 201 return rc; 202 }; 203 113 204 114 205 /*!**************************************************/ … … 125 216 /* TRUE if string was found in the resource DLL or */ 126 217 /* EXE file. FALSE otherwise. */ 218 /* */ 219 /* @@REMARKS */ 220 /* */ 221 /* This function is obsolete. */ 222 /* Use MsgGetMessage() instead. */ 127 223 /* */ 128 224 /*!!*************************************************/ … … 136 232 } 137 233 234 /*!***********************************************************/ 235 /* */ 236 /* Load a message string from a resource DLL or the */ 237 /* EXE file. */ 238 /* */ 239 /* @@RETURNS */ 240 /* */ 241 /* BOOL rc */ 242 /* */ 243 /* TRUE if string was found in the resource DLL or */ 244 /* EXE file. FALSE otherwise. */ 245 /* */ 246 /* @@REMARKS */ 247 /* */ 248 /* If an error occurs an empty string is placed in the */ 249 /* buffer. */ 250 /* */ 251 /*!!**********************************************************/ 138 252 BOOL MsgGetMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource,HWND hwnd) 139 253 { -
trunk/common_functions/rexx_funcs.c
r2 r4 25 25 } RXSTEMDATA; 26 26 27 /*!**************************************************/ 28 /* */ 29 /* @@DESC */ 30 /* */ 31 /* To be written... */ 32 /* */ 33 /*!!*************************************************/ 27 34 LONG RxGetLongFromStemWithoutNumber(RXSTRING args, char * chrTail, ULONG* ulError) 28 35 { … … 74 81 } 75 82 76 /*************************************************************/ 83 /*!***********************************************************/ 84 /* */ 85 /* @@DESC */ 77 86 /* */ 78 87 /* This function returns a string from a stem. The caller */ 79 88 /* must free the returned string with free() */ 80 89 /* */ 81 /* ************************************************************/90 /*!!**********************************************************/ 82 91 PSZ RxGetStringFromStemWithoutNumber(RXSTRING args, char *chrTail, ULONG* ulError) 83 92 { … … 125 134 } 126 135 127 /*************************************************************/ 136 /*!***********************************************************/ 137 /* */ 138 /* @@DESC */ 128 139 /* */ 129 140 /* This function returns a long from a REXX var. */ 130 141 /* */ 131 /* ************************************************************/142 /*!!**********************************************************/ 132 143 LONG RxGetLongFromVar(char * chrVar, ULONG* ulError) 133 144 { … … 175 186 } 176 187 188 /*!***********************************************************/ 189 /* */ 190 /* @@DESC */ 191 /* */ 192 /* To be written... */ 193 /* */ 194 /*!!**********************************************************/ 177 195 LONG RxSetLongInRexxVar(char* chrVar, ULONG ulVal) 178 196 { -
trunk/common_functions/sys_funcs.c
r2 r4 22 22 #endif 23 23 24 /**!**************************************************/25 26 27 28 29 30 31 32 33 34 35 36 37 /**!!*************************************************/24 /*!**************************************************/ 25 /* */ 26 /* @@DESC */ 27 /* */ 28 /* This funktion returns the drive letter of the */ 29 /* boot partition. */ 30 /* */ 31 /* @@RETURNS */ 32 /* */ 33 /* char chrDrive */ 34 /* */ 35 /* Drive from which the system was booted. */ 36 /* */ 37 /*!!*************************************************/ 38 38 char SysQueryBootDriveLetter(void) 39 39 { … … 73 73 } 74 74 75 /**!**************************************************/ 75 /* 76 Documentation script can't handle the const keyword yet!!!! 77 */ 78 /*--->!**************************************************/ 76 79 /* */ 77 80 /* @@DESC */ … … 87 90 /* !parsing is broken at the moment because of const and (...) */ 88 91 /* */ 89 /* *!!*************************************************/92 /*!!*************************************************/ 90 93 void SysWriteToTrapLog(const char* chrFormat, ...) 91 94 { … … 143 146 /* Size of the file. */ 144 147 /* */ 148 /* @@REMARKS */ 149 /* */ 150 /* In case of a nonexistant file 0 is returned. So */ 151 /* it's necessary to first check if the file exists.*/ 152 /* */ 145 153 /*!!*************************************************/ 146 154 ULONG SysQueryFileSize(char* chrFileName) … … 179 187 } 180 188 189 /*!**************************************************/ 190 /* */ 191 /* @@DESC */ 192 /* */ 193 /* To be written... */ 194 /* */ 195 /*!!*************************************************/ 181 196 ULONG SysQueryDriveType(ULONG ulDriveNum) 182 197 { … … 215 230 216 231 // SysWriteToTrapLog("Drive nr.: %d, rc for DSK_BLOCKREMOVABLE-> ERROR_NOT_SUPPORTED\n", ulDriveNum); 217 sprintf(chrDev, "%c:", 'a'+ ulDriveNum-1);232 sprintf(chrDev, "%c:", 'a'+(char)(ulDriveNum-1)); 218 233 cbBuf=sizeof(buf); 219 234 … … 350 365 #endif 351 366 367 /*!**************************************************/ 368 /* */ 369 /* @@DESC */ 370 /* */ 371 /* To be written... */ 372 /* */ 373 /*!!*************************************************/ 352 374 ULONG SysQueryFreeDriveSpace(ULONG ulDriveNum, ULONG *ulTotal, ULONG * ulFree, ULONG* ulBytesUnit) 353 375 { … … 371 393 } 372 394 373 /* 374 The returned volname is always terminated by zero. 375 ulDriveNum: 1...26 376 */ 377 ULONG SysQueryDiskName(ULONG ulDriveNum, ULONG ulSize, char *chrBuffer) 395 /*!**************************************************/ 396 /* */ 397 /* @@DESC */ 398 /* */ 399 /* This function returns the home directory of the */ 400 /* current user. */ 401 /* */ 402 /* @@RETURNS */ 403 /* */ 404 /* ULONG rc */ 405 /* */ 406 /* NO_ERROR is returned if the function succeeds. */ 407 /* */ 408 /* @@PARAM */ 409 /* */ 410 /* ULONG ulDriveNum input */ 411 /* */ 412 /* The number of the drive to be queried (1-26). */ 413 /* */ 414 /* @@PARAM */ 415 /* */ 416 /* char* chrBuffer in/out */ 417 /* */ 418 /* Pointer to a buffer where the volume name will */ 419 /* be placed. */ 420 /* */ 421 /* @@PARAM */ 422 /* */ 423 /* ULONG ulSize input */ 424 /* */ 425 /* Size of the name buffer. */ 426 /* */ 427 /* @@REMARKS */ 428 /* */ 429 /* The returned name is always terminated by zero. */ 430 /* */ 431 /*!!*************************************************/ 432 433 ULONG SysQueryDiskName(ULONG ulDriveNum, char *chrBuffer, ULONG ulSize) 378 434 { 379 435 FSINFO fsIBuf; … … 394 450 } 395 451 452 /*!**************************************************/ 453 /* */ 454 /* @@DESC */ 455 /* */ 456 /* This function returns the home directory of the */ 457 /* current user. */ 458 /* */ 459 /* @@RETURNS */ 460 /* */ 461 /* BOOL fSuccess */ 462 /* */ 463 /* TRUE if the home dir is specified and does exist */ 464 /* */ 465 /* @@PARAM */ 466 /* */ 467 /* char* chrBuf in/out */ 468 /* */ 469 /* Pointer to a buffer where the home directory */ 470 /* name will be placed. */ 471 /* */ 472 /* @@PARAM */ 473 /* */ 474 /* ULONG ulSize input */ 475 /* */ 476 /* Size of the name buffer. */ 477 /* */ 478 /* @@REMARKS */ 479 /* */ 480 /* The returned string is always terminated by zero.*/ 481 /* .p: */ 482 /* If a directory is specified in the HOME */ 483 /* environment variable but doesn't exist FALSE is */ 484 /* returned and a message is written to the apps */ 485 /* exception log. */ 486 /* */ 487 /*!!*************************************************/ 396 488 BOOL SysQueryHomeDir(char* chrBuf, ULONG ulSize) 397 489 { … … 400 492 if(!chrHome || !chrBuf) 401 493 return FALSE; 402 403 #if 0404 SysWriteToTrapLog("r:\\temp: %d , r:\\bla: %d \n",405 SysCheckFileExists("r:\\temp"), SysCheckFileExists("r:\\bla"));406 #endif407 494 408 495 if(strlcpy(chrBuf, chrHome, ulSize)>=ulSize) { -
trunk/common_functions/uptime.c
r2 r4 257 257 } 258 258 259 /*!***********************************************************/ 260 /* */ 261 /* @@DESC */ 262 /* */ 263 /* To be written... */ 264 /* */ 265 /*!!**********************************************************/ 259 266 ULONG SysGetUptimeSecs(BOOL fUseTimer) 260 267 { … … 265 272 } 266 273 274 /*!***********************************************************/ 275 /* */ 276 /* @@DESC */ 277 /* */ 278 /* To be written... */ 279 /* */ 280 /*!!**********************************************************/ 267 281 char* SysGetUptimeString(BOOL fUseTimer, char * chrBuffer, ULONG ulSize) 268 282 { -
trunk/make.inc
r3 r4 1 1 # List of languages to be built. 2 LANGUAGES = de en nl it 2 LANGUAGES = de en nl it tw 3 3 4 4 #define the next makro if compiling a release rather than a beta … … 9 9 #That's used for createcd.exe until I find a decent documentation for make to do it better... 10 10 #Also used for including the right icons 11 #ECS_COMPILE = YES11 ECS_COMPILE = YES 12 12 13 13 ifdef ECS_COMPILE … … 36 36 ECSMFLDRDIR = MediaFld 37 37 38 #The base dir for additional functions for the MM helper programs38 #The base dir off the CW function toolkit 39 39 export COMMONSRC = H:/cwmm/common_functions 40 40 41 export NLVBASE = H:/cwmm/nlv 42 export MMSRCBASE = H:/cwmm 41 43 42 44 -
trunk/makefile
r2 r4 25 25 @echo '' 26 26 cd ./mediafolder && make 27 28 nlv_tst: 29 #this is a target used to test NLV building outside the source tree 30 # Will eventually superseed nlv target. 31 cd ./nlv && make 27 32 28 33 nlv: -
trunk/mediafolder/Help/makefile
r2 r4 21 21 ipfc mediafldr031_ecs.ipf mediafldr031.hlp 22 22 ipfc mediafldr039_ecs.ipf mediafldr039.hlp 23 ipfc mediafldr088_ecs.ipf mediafldr088.hlp 23 24 else 24 25 ipfc mediafldr.ipf … … 26 27 ipfc mediafldr031.ipf 27 28 ipfc mediafldr039.ipf 29 ipfc mediafldr088.ipf 28 30 endif 29 31 -
trunk/mediafolder/c/cddb/helper.c
r2 r4 1 1 /* 2 * This file is (C) Chris Wohlgemuth 2001 /20022 * This file is (C) Chris Wohlgemuth 2001-2005 3 3 */ 4 4 /* -
trunk/mediafolder/c/cddb/makefile
r2 r4 1 1 # Makefile for Audio-CD copy 2 2 3 CC = icc4 LIB_DIR = $d:/emx/lib 5 #CPPFLAGS = -Ge- /Gm+ -G4 -Gl /O+ -Oc+ -Ol 3 include ../../../make.inc 4 5 CC = gcc 6 6 CPPFLAGS = -O -Zomf -Zcrtdll -s 7 7 #CPPFLAGSSTATIC = -O -Zomf -Zsys -Zmt -s … … 9 9 CPPFLAGSVAC = /Ge- /Gm+ /G4 /Gl /O+ /Oc+ /Ol- /Q+ 10 10 INC = ../../include 11 MOREINC = $(COMMONSRC)/include 11 12 DEFS = 12 13 PROGS = 13 14 ODIR = . 14 15 CPPDIR = . 16 LIBDIR = ./lib 15 17 BINDIR = ../../dist/bin 16 18 HELPERDIR = ..\helper 19 OBJECTS = cddb.obj \ 20 cd.obj \ 21 helper.obj \ 22 cddbhelper.obj \ 23 message.obj 24 LIBOBJECTS = $(LIBDIR)/sys_funcs.obj 17 25 18 CPPFILES =19 OBJECTS = cddb.obj cd.obj helper.obj cddbhelper.obj message.obj20 26 #printHelper.obj 21 27 #all: querycddb.exe cddbcls.obj 22 28 23 all: pmcddb.exe pmdb001.dll pmdb049.dll pmdb031.dll pmdb039.dll 29 all: pmcddb.exe pmdb001.dll pmdb049.dll pmdb031.dll pmdb039.dll pmdb088.dll 24 30 25 nlv: pmdb001.dll pmdb049.dll pmdb031.dll pmdb039.dll 31 nlv: pmdb001.dll pmdb049.dll pmdb031.dll pmdb039.dll pmdb088.dll 26 32 27 33 pmdb001.dll: ./res/pmcddb001.c ./res/pmcddb001.res … … 53 59 cd ./Res && make 54 60 61 62 63 pmdb088.dll: ./res/pmcddb088.c ./res/pmcddb088.res 64 -rm pmdb088.dll 65 cp ./res/pmcddb088.dll pmdb088.dll 66 67 ./res/pmcddb088.res: ./res/pmcddb088.rc ./res/pmcddb088.dlg $(INC)/pmcddbres.h 68 cd ./Res && make 69 70 71 $(LIBDIR)/%.obj: $(COMMONSRC)/%.c 72 $(CC) -c -Wall -o$@ -Zomf -I$(INC) -I$(MOREINC) $< 73 55 74 cd.obj: cd.c 56 75 gcc -c $< -I$(INC) -Zcrtdll -Zomf 57 # cd ../. && cd helper && make58 76 59 77 helper.obj: helper.c … … 63 81 gcc -c $< -I$(INC) -Zcrtdll -Zomf 64 82 65 pmcddb.exe: pmcddb.cc $(OBJECTS) $( CDDBOBJ) $(INC)\cddb.h $(INC)\cddb.hh66 gcc $< $(CPPFLAGS) -I$(INC)$(OBJECTS) $(CDDBOBJ) -lsocket pmcddb.def83 pmcddb.exe: pmcddb.cc $(OBJECTS) $(LIBOBJECTS) $(CDDBOBJ) $(INC)\cddb.h $(INC)\cddb.hh 84 $(CC) $< $(CPPFLAGS) -I$(INC) -I$(MOREINC) $(LIBOBJECTS) $(OBJECTS) $(CDDBOBJ) -lsocket pmcddb.def 67 85 68 86 cddb.obj: cddb.cpp $(INC)\cddb.hh -
trunk/mediafolder/c/cddb/pmcddb.cc
r2 r4 105 105 HMODULE RESSOURCEHANDLE=0; 106 106 107 char logName[CCHMAXPATH]="Cddb.log"; 107 char logName[CCHMAXPATH]=PMCDDB_LOGFILENAME; 108 char logNameFullPath[CCHMAXPATH]; 108 109 109 110 #define QUERYCDDB_VERSION "0.1" … … 616 617 /* argv[0]: progname 617 618 * argv[1]: cd drive or /C for configuring 618 * argv[2]: REXX file 619 * argv[2]: REXX file. This file is used to parse the queried data file and 620 * set all the info of the CD track objects. 621 * When configuring argv[2] is the email address. 619 622 * argv[3]: folder path 620 623 */ 621 624 622 625 numArgs=argc; 623 624 626 625 627 for(a=0;a<argc;a++) … … 632 634 *chrPtr=0; 633 635 strncpy(chrInstallDir, chrBinDir, sizeof(chrInstallDir)-1); 634 /* if((chrPtr=strrchr(chrInstallDir, '\\'))!=NULLHANDLE)635 *chrPtr=0;*/636 636 637 637 if(numArgs<3) { -
trunk/mediafolder/c/cddb/res/makefile
r2 r4 13 13 14 14 CPPFILES = 15 all: pmcddb001.dll pmcddb049.dll pmcddb031.dll pmcddb039.dll 15 all: pmcddb001.dll pmcddb049.dll pmcddb031.dll pmcddb039.dll pmcddb088.dll 16 16 17 17 … … 50 50 rc -i $(INC) -r pmcddb039.rc 51 51 52 pmcddb088.dll: pmcddb088.c pmcddb088.res 53 gcc -Zdll -Zomf -Zno-rte -I$(INC) pmcddb088.c pmcddb088.def 54 rc pmcddb088.res pmcddb088.dll 55 56 pmcddb088.res: pmcddb088.rc pmcddb039.dlg $(INC)\pmcddbres.h 57 rc -i $(INC) -r pmcddb088.rc 58 52 59 clean: 53 60 -rm *.obj -
trunk/mediafolder/c/cddb/res/pmcddb049.rc
r2 r4 35 35 IDSTR_PMCDDBTITLE "FreeDB Abfrage" 36 36 37 IDSTR_USAGE "Email-Adresse mit folgender Option festlegen: /C < email address> "37 IDSTR_USAGE "Email-Adresse mit folgender Option festlegen: /C <Email-Adresse> " 38 38 IDSTR_SETUPERROR "Der Username oder der Host wurden nicht festgelegt. Pmcddb.exe mit Parameter /C starten, um die Adresse festzulegen." 39 39 END 40 40 41 41 RCINCLUDE "pmcddb049.dlg" 42 -
trunk/mediafolder/c/cdfldr/cdfolder.cpp
r2 r4 1 1 /* 2 * This file is (C) Chris Wohlgemuth 2002 2 * This file is (C) Chris Wohlgemuth 2002-2005 3 3 * 4 4 * It's part of the Media-Folder distribution … … 73 73 // if(a==1) 74 74 // WinMessageBox(HWND_DESKTOP,HWND_DESKTOP, chrSetup, "", 12324, MB_MOVEABLE); 75 sprintf(chrTitle,"Track % d",a);75 sprintf(chrTitle,"Track %02d",a); 76 76 WinCreateObject("MMCDTrack", chrTitle, chrSetup, chrTarget, CO_REPLACEIFEXISTS); 77 77 } -
trunk/mediafolder/c/cdfldr/cdfolderoverriddenwpmethods.cpp
r2 r4 1 1 /* 2 * This file is (C) Chris Wohlgemuth 2002-200 32 * This file is (C) Chris Wohlgemuth 2002-2005 3 3 * 4 4 * It's part of the Media-Folder distribution … … 57 57 extern void showPlayTimeDisplay(CWMediaFolder *thisPtr, BOOL bShow); 58 58 void setPlayTimeText2(CWMediaFolder *thisPtr, char * theText); 59 void HlpWriteToTrapLog(const char* chrFormat, ...); 59 60 60 /* Get the HWND of the play control dialog. This Dialog is on top of 61 61 the top frame control. */ … … 344 344 } 345 345 case PLAY_NEXT: 346 case PLAY_NEXT_CDFLDR: 346 347 if(iWave==0) 347 348 return cwPlayAudioFile(hwndFrame, PLAY_FIRST);/* Not yet playing */ … … 450 451 }/* switch */ 451 452 452 if(!getMessage(chrCommand, IDSTR_STARTINGTRACK, sizeof(chrCommand), queryResModuleHandle(), hwndFrame)) 453 sprintf(chrCommand, "Starting track..."); 454 setPlayTimeText2(this, chrCommand); 453 // if(ulWhich!=PLAY_NEXT_CDFLDR) { 454 if(!getMessage(chrCommand, IDSTR_STARTINGTRACK, sizeof(chrCommand), queryResModuleHandle(), hwndFrame)) 455 sprintf(chrCommand, "Starting track..."); 456 setPlayTimeText2(this, chrCommand); 457 // } 455 458 456 459 strncpy(chrDevice,"CDAUDIO", sizeof(chrDevice)); … … 519 522 }/* if( ...|| !mrcPlaying) */ 520 523 521 if(iPrevTrack+1==iTime2 ) {524 if(iPrevTrack+1==iTime2 && ulWhich!=PLAY_NEXT_CDFLDR) { 522 525 /* Previous track ended, now playing the next. Or user pressed 'Next' while playing */ 523 526 if(ulPos*1000 < ulTotalLength) { … … 539 542 return 0; 540 543 } 541 // HlpWriteToTrapLog("\n2\n"); 542 } 543 } 544 545 // HlpWriteToTrapLog("About to get length...\n"); 544 } 545 } 546 546 547 547 /* Get length in ms */ … … 552 552 } 553 553 554 // HlpWriteToTrapLog("iTime2: %d\n", iTime2);555 556 554 sprintf(chrCommand,"%d:%02d %d:%02d -%d:%02d", iTime2/60, iTime2%60, 557 555 0, 0, 558 556 iTime2/60, iTime2%60); 559 557 560 // HlpWriteToTrapLog("chrCommand: %s\n", chrCommand);561 558 562 559 // WinSetWindowText(WinWindowFromID(hwndTop, IDST_PLAYTIME), chrCommand); … … 658 655 int iCurrentTrack; 659 656 657 //SysWriteToTrapLog("\n%s:\n", __FUNCTION__); 658 660 659 sprintf(chrCommand,"STATUS wave%d MODE WAIT", iWave); 661 660 rc = mciSendString(chrCommand, retMsg, sizeof(retMsg), 0, 0); … … 688 687 else { 689 688 iCurrentTrack=atoi(retMsg); 689 //SysWriteToTrapLog(" iWave: %d. iPrevTrack: %d, iCurrentrack: %d\n", iWave, iPrevTrack, iCurrentTrack); 690 690 /* Timeout. Check if track is still playing */ 691 691 if(iCurrentTrack==iPrevTrack+1) { 692 692 /* Audio file played. Start next */ 693 cwPlayAudioFile(hwndFrame, PLAY_NEXT); 694 } 695 } 696 } 697 698 699 700 701 702 703 704 705 693 //SysWriteToTrapLog(" iWave: %d. iPrevTrack: %d, iCurrentrack: %d, startinb next (%d)\n", iWave, iPrevTrack, iCurrentTrack, __LINE__); 694 cwPlayAudioFile(hwndFrame, PLAY_NEXT_CDFLDR); 695 } 696 } 697 } 698 699 700 -
trunk/mediafolder/c/createcd/createcd.c
r2 r4 1 1 /* 2 * This file is (C) Chris Wohlgemuth 1999-200 22 * This file is (C) Chris Wohlgemuth 1999-2005 3 3 */ 4 4 /* … … 29 29 #include <string.h> 30 30 #include "mediafolderinc.h" 31 #include "mediafolderres.h" 32 /* #include "sys_funcs.h" */ 31 33 32 34 #define LVM_IS_HARDDISK 0 … … 92 94 PFNVIR pfnvirGet_Volume_Information=NULLHANDLE; 93 95 94 BOOL loadLVMFuncs(void) 96 size_t strlcpy(char *dst, const char *src, size_t siz); 97 98 /* 99 FIXME: 100 101 Use the function from the \common_funcs directory instead. 102 */ 103 static BOOL getMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource) 104 { 105 char* pOffset; 106 char* ptr; 107 int id=0; 108 109 text[0]='\0'; 110 111 // printf("resource: %x, %d %d\n", hResource, ulID, (ulID/16)+1, 112 // DosGetResource(hResource, RT_STRING, (ulID/16)+1, (PVOID)&pOffset)); 113 114 if(DosGetResource(hResource, RT_STRING, (ulID/16)+1, (PVOID)&pOffset)!=NO_ERROR) 115 return FALSE; 116 117 ptr=pOffset; 118 119 //printf("\ngot resource...\n"); 120 121 /* Parsing... */ 122 id=ulID%16; 123 124 //printf("id: %d\n", id); 125 pOffset+=sizeof(USHORT); /* Skip codepage */ 126 127 for(;id > 0;id--) 128 { 129 //printf("id: %d, length: %d %s\n", id, *pOffset, pOffset+1); 130 pOffset+=*pOffset+1; 131 } 132 //printf("length: %d %s\n", *pOffset, pOffset+1); 133 strlcpy(text, pOffset+1, lSizeText); 134 135 if(*pOffset!=1){ 136 DosFreeResource(ptr); 137 return TRUE; 138 } 139 DosFreeResource(ptr); 140 /* Length=1 means dummy entry filled by system */ 141 return FALSE; 142 } 143 144 #if 0 145 #pragma import(DosQueryModFromEIP,,"DOSCALL1",360) 146 APIRET APIENTRY DosQueryModFromEIP ( HMODULE *phMod, ULONG *pObjNum, ULONG BuffLen, PCHAR pBuff, ULONG *pOffset, PVOID Address ) ; 147 #endif 148 149 /* This function returns the module handle of our ressource dll */ 150 static HMODULE queryResModuleHandle(void) 151 { 152 char path[CCHMAXPATH]; 153 char buf[CCHMAXPATH]; 154 char* found; 155 APIRET rc; 156 HMODULE RESSOURCEHANDLE; 157 HMODULE hmod; 158 PTIB ptib = NULL; 159 PPIB ppib = NULL; 160 161 162 // printf("rc=%d\n",DosQueryModFromEIP( &hmod, &ul, sizeof(path), path, 163 // &off, (PVOID)queryResModuleHandle ) ); 164 if(NO_ERROR==DosGetInfoBlocks(&ptib, &ppib)) 165 DosQueryModuleName (ppib->pib_hmte, /* Module handle to query */ 166 sizeof(path), /* Maximum length of result */ 167 path); 168 169 //printf("%s %x\n",path, hmod); 170 171 /* Get the language code of our system and load the 172 resource DLL with the right language */ 173 do 174 { 175 static char chrLang[]="en_EN"; 176 PSZ pszLang=""; 177 char *chrPtr; 178 179 /* Get Language var */ 180 if(NO_ERROR!=DosScanEnv("LANG", &pszLang)) { 181 pszLang=chrLang; 182 } 183 /* Skip leading spaces */ 184 chrPtr=pszLang; 185 while(*chrPtr==' ') 186 chrPtr++; 187 188 /* Check if value seems to be valid. The var must be something like xx_XX thus length is 5 */ 189 if(strlen(chrPtr)<5) 190 break; 191 192 if((found=strrchr(path, '\\'))!=NULLHANDLE) 193 *found=0; 194 195 /* Extract the first two chars and build DLL name */ 196 sprintf(buf, RESDLLNAME, chrPtr[0], chrPtr[1]); 197 strcat(path,buf); 198 199 rc=DosLoadModule(buf,sizeof(buf),path, &RESSOURCEHANDLE); 200 if(rc==NO_ERROR) 201 break; 202 203 /* NLS DLL not found. Try to load default */ 204 found=strrchr(path,'\\'); 205 if(!found) 206 break; 207 208 *found=0; 209 sprintf(buf, DEFRESDLLNAME); 210 strcat(path,buf); 211 212 rc=DosLoadModule(buf,sizeof(buf),path, &RESSOURCEHANDLE); 213 if(rc!=NO_ERROR) { 214 RESSOURCEHANDLE=NULLHANDLE; 215 } 216 else { 217 // printf("Ressource DLL loaded.\n"); 218 } 219 break; 220 }while(TRUE); 221 222 return RESSOURCEHANDLE; 223 } 224 225 226 static BOOL loadLVMFuncs(void) 95 227 { 96 228 char chrErrorObject[CCHMAXPATH]={0}; … … 173 305 } 174 306 175 int main( void)307 int main(int argc, char** argv) 176 308 { 177 309 CARDINAL32 error; 178 310 int iNumCD; 179 311 char cFirst; 180 char setup[100]; 181 char name[100]; 182 char id[40]; 312 char setup[512]; 313 char name[256]; 314 char id[100]; 315 char nameTemplate[256]; 183 316 int a; 317 HMODULE hmodRes=NULLHANDLE; 184 318 185 319 if(!CDQueryCDDrives(&iNumCD, &cFirst)) 186 320 exit(1); 321 322 hmodRes=queryResModuleHandle(); 323 324 if(!getMessage(nameTemplate, /* IDSTR_LAUNCHPADFLYOVER */ IDSTR_CDFOLDERNAME, sizeof(nameTemplate), hmodRes)) 325 strncpy(nameTemplate, "CD-Audio player^Drive %c:", sizeof(nameTemplate)); 187 326 188 327 if(!loadLVMFuncs()) { … … 190 329 int b; 191 330 /* Build folder name */ 192 sprintf(name, "CD-Audio^Drive %c:", cFirst+a);331 sprintf(name, nameTemplate, cFirst+a); 193 332 /* Build object ID */ 194 333 sprintf(id, CDFLDR_ID, cFirst+a); … … 231 370 232 371 /* Build folder name */ 233 sprintf(name, "CD-Audio^Drive %c:", vir.Current_Drive_Letter);372 sprintf(name, nameTemplate, vir.Current_Drive_Letter); 234 373 /* Build object ID */ 235 374 sprintf(id, CDFLDR_ID, vir.Current_Drive_Letter); … … 242 381 if(WinCreateObject(CDFLDR_CLASSNAME, name, setup, CDFLDR_LOCATION, CO_UPDATEIFEXISTS)) 243 382 break; 244 245 383 // printf("Found: %s, %s\n", name, setup); 246 384 DosSleep(5000); … … 255 393 DosFreeModule(hMod); 256 394 } /* else */ 395 if(hmodRes) 396 DosFreeModule(hmodRes); 257 397 return (0); 258 398 } 259 399 260 400 401 /********************************************************************/ 402 /* $OpenBSD: strlcpy.c,v 1.8 2003/06/17 21:56:24 millert Exp $ */ 403 404 /* 405 * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> 406 * 407 * Permission to use, copy, modify, and distribute this software for any 408 * purpose with or without fee is hereby granted, provided that the above 409 * copyright notice and this permission notice appear in all copies. 410 * 411 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 412 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 413 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 414 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 415 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 416 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 417 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 418 */ 419 420 421 /* 422 * Copy src to string dst of size siz. At most siz-1 characters 423 * will be copied. Always NUL terminates (unless siz == 0). 424 * Returns strlen(src); if retval >= siz, truncation occurred. 425 */ 426 static size_t 427 strlcpy(char *dst, const char *src, size_t siz) 428 { 429 register char *d = dst; 430 register const char *s = src; 431 register size_t n = siz; 432 433 /* Copy as many bytes as will fit */ 434 if (n != 0 && --n != 0) { 435 do { 436 if ((*d++ = *s++) == 0) 437 break; 438 } while (--n != 0); 439 } 440 441 /* Not enough room in dst, add NUL and traverse rest of src */ 442 if (n == 0) { 443 if (siz != 0) 444 *d = '\0'; /* NUL-terminate dst */ 445 while (*s++) 446 ; 447 } 448 449 return(s - src - 1); /* count does not include NUL */ 450 } 451 -
trunk/mediafolder/c/mediafldr/mediadialogprocs.cpp
r3 r4 405 405 thisPtr->usLastSelMenuItem=SHORT1FROMMP(mp1); 406 406 break; 407 case WM_TIMER: 408 /* The user didn't click any button on the message box asking for closing the 409 folder. Now the system forces the closing so automatic shutdown may finally 410 succeed. */ 411 if(SHORT1FROMMP(mp1)==MFLDR_MBOX_TIMER_ID) { 412 WinStopTimer(WinQueryAnchorBlock(HWND_DESKTOP), hwnd, MFLDR_MBOX_TIMER_ID); 413 WinPostMsg(hwnd, WM_CLOSE, 0, 0); 414 } 415 return MRFALSE; 407 416 default: 408 417 break; -
trunk/mediafolder/c/mediafldr/mediafolderoverridenwpmethods.cpp
r3 r4 311 311 hwnd=CWProgFolder::wpOpen(hwndCnr, ulView, ulParam); 312 312 313 /* Save this ptr */314 // WinSetWindowULong( hwnd, ulQWP_THISPTR, (ULONG)this);315 316 313 /* Only subclass folder frames, not settings notebooks */ 317 314 if(ulView!=OPEN_SETTINGS){ … … 409 406 }/* menu hwnd */ 410 407 411 //#if 0412 408 /* Subclass container for tabbing */ 413 409 myFrameCtrlHWND=WinWindowFromID(hwnd,FID_CLIENT);//Get container hwnd … … 419 415 } 420 416 421 //#endif422 417 /* Now add the framecontrols */ 423 418 … … 1352 1347 1353 1348 /* Check if we currently play a song */ 1354 if(iWave) { 1349 if(iWave && !(ulPrivFlags & MFLDR_SHOWING_MBOX)) { 1350 LONG lDelay; 1351 1352 #if 0 1355 1353 PVIEWITEM pViewItem; 1356 1354 int a=0; 1357 1358 #if 01359 1355 /* Check if we close a settings view or a folder view. */ 1360 1356 for(pViewItem=wpFindViewItem(VIEW_ANY, NULLHANDLE); pViewItem; pViewItem=wpFindViewItem(VIEW_ANY, pViewItem)) … … 1370 1366 hwndOwner=hwndFrame; 1371 1367 1368 /* Start a timer which will cause the folder to close automatically after some time even 1369 if the user doesn't click any button. Get the timeout from the INI file if available. */ 1370 if((lDelay=PrfQueryProfileInt(HINI_USERPROFILE, "CWMM", MFLDR_TIMER_DELAY_KEY, MFLDR_MBOX_TIMER_DELAY)) 1371 < MFLDR_MBOX_MIN_TIMER_DELAY) 1372 lDelay=MFLDR_MBOX_MIN_TIMER_DELAY; 1373 1374 WinStartTimer(WinQueryAnchorBlock(HWND_DESKTOP), hwndFrame, MFLDR_MBOX_TIMER_ID, lDelay); 1375 ulPrivFlags|= MFLDR_SHOWING_MBOX; 1376 /* Ask user if he really wants to stop playing and close the folder */ 1372 1377 if(messageBox( text, IDSTR_CLOSETEXT, sizeof(text), 1373 1378 title, IDSTR_CLOSETITLE, sizeof(title), 1374 queryResModuleHandle(), hwndOwner, MB_YESNO|MB_MOVEABLE|MB_ICONQUESTION)==MBID_NO) 1379 queryResModuleHandle(), hwndOwner, MB_YESNO|MB_MOVEABLE|MB_ICONQUESTION)==MBID_NO) { 1380 WinStopTimer(WinQueryAnchorBlock(HWND_DESKTOP), hwndFrame, MFLDR_MBOX_TIMER_ID); 1381 ulPrivFlags&= ~MFLDR_SHOWING_MBOX; 1375 1382 return FALSE; 1383 } 1376 1384 } 1377 1385 cwStopAudioFile(hwndFrame); … … 1384 1392 } 1385 1393 1386 ulPrivFlags&= ~ MFLDR_VIEW_COMPACT;1394 ulPrivFlags&= ~(MFLDR_VIEW_COMPACT|MFLDR_SHOWING_MBOX); 1387 1395 hwndMFldrFrame=NULL; 1388 1396 wpSaveDeferred(); … … 1393 1401 { 1394 1402 ULONG ulErr; 1403 /* 1404 FIXME: 1405 This init call of the parent should be changed to allow replacement of 1406 CWProgFolder. 1407 */ 1395 1408 CWProgFolder::wpInitData(); 1396 1409 /* Get storage for private data. */ … … 1399 1412 1400 1413 ulPrivFlags=0; 1401 1402 1414 } 1403 1415 1404 1416 void CWMediaFolder::wpUnInitData() 1405 1417 { 1406 wpFreeMem((PBYTE)mfData); 1418 if(mfData) 1419 wpFreeMem((PBYTE)mfData); 1420 1421 /* 1422 FIXME: 1423 This uninit call of the parent should be changed to allow replacement of 1424 CWProgFolder. 1425 */ 1407 1426 CWProgFolder::wpUnInitData(); 1408 1427 } 1409 1428 1429 1430 1431 1432 -
trunk/mediafolder/include/mediafolder.hh
r3 r4 1 1 /* 2 * This file is (C) Chris Wohlgemuth 2002 2 * This file is (C) Chris Wohlgemuth 2002-2005 3 3 */ 4 4 /* … … 64 64 #define SHOWABOUTDIALOG_COMMAND "SHOWABOUTDIALOG=1" 65 65 #define SETUP_SHOWABOUTDIALOG "SHOWABOUTDIALOG" 66 67 /*** Private folder flags: ***/68 69 /* Flag indicating from where a method was called */70 #define MFLDR_CURACTION_ADDFOLDERVIEW3 0x0000000171 /* Flag telling if folder is in compact view */72 #define MFLDR_VIEW_COMPACT 0x0000000273 /* The view is currently changing */74 #define MFLDR_CHANGING_VIEW 0x0000000475 /*** End of private folder flags ***/76 77 #define IDHLP_MEDIAFOLDERMAIN 10078 79 66 80 67 #pragma SOMAsDefault(on) -
trunk/mediafolder/include/mediafolderinc.h
r2 r4 39 39 /* Random play */ 40 40 #define FLAG_RANDOM 0x00000004 41 42 /*** Private folder flags: ***/ 43 /* Flag indicating from where a method was called */ 44 #define MFLDR_CURACTION_ADDFOLDERVIEW3 0x00000001 45 /* Flag telling if folder is in compact view */ 46 #define MFLDR_VIEW_COMPACT 0x00000002 47 /* The view is currently changing */ 48 #define MFLDR_CHANGING_VIEW 0x00000004 49 /* Indicate, we are currently showing the cancellation message box to the user */ 50 #define MFLDR_SHOWING_MBOX 0x00000008 51 /*** End of private folder flags ***/ 52 53 /* Timer for automatically dismissing the message box and closing a mediafolder 54 when playing a media file. Used for enabling automatic shutdown. Otherwise 55 the shutdown would hang until the user clicks 'ok'. See cwClose() */ 56 #define MFLDR_MBOX_TIMER_ID 100 57 /* The timer delay in ms. This can be set in the INI file. */ 58 #define MFLDR_MBOX_TIMER_DELAY 60000 59 /* The allowed minimum for the timer delay in ms */ 60 #define MFLDR_MBOX_MIN_TIMER_DELAY 5000 61 /* */ 62 #define MFLDR_TIMER_DELAY_KEY "mfldrMBoxDisplayTime" 63 64 #define IDHLP_MEDIAFOLDERMAIN 100 41 65 42 66 /* Which display to show */ … … 112 136 113 137 /* Which track to start */ 114 #define PLAY_FIRST 1L 115 #define PLAY_NEXT 2L 116 #define PLAY_PREV 3L 117 #define PAUSE_TRACK 4L 118 #define STOP_TRACK 5L 119 #define SEEK_TRACK 6L 138 #define PLAY_FIRST 1L 139 #define PLAY_NEXT 2L 140 #define PLAY_PREV 3L 141 #define PAUSE_TRACK 4L 142 #define STOP_TRACK 5L 143 #define SEEK_TRACK 6L 144 #define PLAY_NEXT_CDFLDR 7L /* CD folders need special handling because they're slow */ 120 145 121 146 /* The IDs for the playtime display */ -
trunk/mediafolder/include/mediafolderres.h
r2 r4 25 25 #define IDSTR_VIEWPAGENAME 24 /* Title for Details view page which has now a major tab */ 26 26 #define IDSTR_VIEWCOMPACT 25 /* View name when in 'Compact' mode */ 27 #define IDSTR_CDFOLDERNAME 26 27 28 28 29 #define IDPB_VOLUME 202 -
trunk/mediafolder/include/pmcddb.h
r2 r4 47 47 48 48 #define IDINFO_LASTINFO 10 49 50 #define PMCDDB_LOGFILENAME "freedb.log" 51 #define PMCDDB_INIFILENAME "freedb.ini" -
trunk/mediafolder/prog_tutorial/hiddenfeatures.inc
r2 r4 99 99 x=50% width=50% 100 100 group=2 101 .Replace M3U olayer101 .Replace M3U player 102 102 :p. 103 103 The default M3U player may be replaced by adding the … … 262 262 :exmp. 263 263 264 265 :h2 res=424 266 x=50% width=50% 267 group=2 268 .Set time for message box display 269 :p. 270 The confirmation message box shown when closing a mediafolder while playing a track automatically closes after 60s and the 271 folder will be closed. This delay may be changed by setting the following key. 272 273 :p. 274 :hp2.CWMM->mfldrMBoxDisplayTime-><time in milli seconds>:ehp2. 275 :nt.Be sure to keep the uppercase characters! 276 :ent. 277 :nt.The shortest allowed time is 5000ms. 278 :ent. 279 280 .* last id 424 -
trunk/mediafolder/prog_tutorial/mediafldrprog.ipf
r2 r4 517 517 :li.:link reftype=hd res=420.Disable audio file checking:elink. 518 518 :li.:link reftype=hd res=421.Disable ID3 tag reading:elink. 519 :li.:link reftype=hd res=422.Set time for message box display:elink. 519 520 :eul. 520 521 -
trunk/mediafolder/res/de/mediafolder_de.rc
r2 r4 81 81 IDSTR_VIEWPAGENAME "~Anzeige" 82 82 IDSTR_VIEWCOMPACT "Kompakt" 83 IDSTR_CDFOLDERNAME "Audio-CD-Spieler^Laufwerk %c:" 83 84 84 85 END -
trunk/mediafolder/res/en/mediafolder_en.rc
r2 r4 83 83 IDSTR_VIEWPAGENAME "~View" 84 84 IDSTR_VIEWCOMPACT "Compact" 85 IDSTR_CDFOLDERNAME "CD-Audio player^Drive %c:" 85 86 86 87 END -
trunk/mediafolder/res/it/mediafolder_it.rc
r2 r4 71 71 IDSTR_VIEWPAGENAME "~Visualizzazione" 72 72 IDSTR_VIEWCOMPACT "Compatta" 73 IDSTR_CDFOLDERNAME "CD-Audio player^Drive %c:" 73 74 74 75 END -
trunk/mediafolder/res/nl/mediafolder_nl.rc
r2 r4 83 83 IDSTR_VIEWPAGENAME "O~verzicht" 84 84 IDSTR_VIEWCOMPACT "Compact" 85 IDSTR_CDFOLDERNAME "CD-Audio player^Drive %c:" 85 86 86 87 END -
trunk/stream_ioproc/source/makefile
r2 r4 32 32 ################################################################################# 33 33 # 34 # Makefile for JPGIOProc34 # Makefile for STREAM IOProc 35 35 # 36 36 # Generates 37 # JPEGIO.dll - JPG Image IOproc37 # STREAMIO.dll - Stream storage IOproc 38 38 # 39 # Copyright Chris Wohlgemuth 200 239 # Copyright Chris Wohlgemuth 2005 40 40 # 41 41 # http://www.os2world.com/cdwriting … … 100 100 -rm *.*~ 101 101 -rm *.map 102 -rm *.sym 102 -rm *.sym -
trunk/stream_ioproc/source/streamfunc.c
r2 r4 1 1 /* 2 * Copyright (c) Chris Wohlgemuth 200 22 * Copyright (c) Chris Wohlgemuth 2005 3 3 * All rights reserved. 4 4 * -
trunk/stream_ioproc/source/streamio.def
r2 r4 31 31 ; */ 32 32 LIBRARY STREAMIO INITINSTANCE TERMINSTANCE 33 DESCRIPTION '$@#(C) C. Wohlgemuth 200 3:#@##1## 13.07.200215:17:00 My ;-) : :::0::@@ Stream IO procedure V0.1.0'33 DESCRIPTION '$@#(C) C. Wohlgemuth 2005:#@##1## 13.05.2005 15:17:00 My ;-) : :::0::@@ Stream IO procedure V0.1.0' 34 34 DATA MULTIPLE NONSHARED 35 35 SEGMENTS -
trunk/stream_ioproc/source/streamproc.c
r2 r4 1 1 /* 2 * Copyright (c) Chris Wohlgemuth 200 22 * Copyright (c) Chris Wohlgemuth 2005 3 3 * All rights reserved. 4 4 * -
trunk/stream_ioproc/source/streamproc.h
r2 r4 76 76 #endif 77 77 78 #define FOURCC_STREAM mmioFOURCC(' C', 'A', 'S', 'T')78 #define FOURCC_STREAM mmioFOURCC('S', 'T', 'R', 'M') 79 79 80 80 /* RC file defines */ 81 81 82 #define HEX_FOURCC_STREAM 0x54534143L 82 /* #define HEX_FOURCC_STREAM 0x54534143L */ 83 #define HEX_FOURCC_STREAM 0x4d5453L 83 84 84 85 #define MMOTION_IOPROC_NAME_TABLE 7000 -
trunk/stream_ioproc/source/testproc.c
r2 r4 89 89 LONG lNum=0; 90 90 91 printf("In %s().\n", __FUNCTION__); 92 93 memset( &mmfinfo, '\0', sizeof(MMFORMATINFO) ); 94 // mmfinfo.ulIOProcType=MMIO_IOPROC_STORAGESYSTEM; 95 //mmfinfo.ulMediaType=MMIO_MEDIATYPE_AUDIO; 96 97 mmioQueryFormatCount(&mmfinfo, &lNum, 0, 0); 98 return lNum; 99 } 100 101 int queryNumFormatProcs(void) 102 { 103 MMFORMATINFO mmfinfo; 104 LONG lNum=0; 105 91 106 memset( &mmfinfo, '\0', sizeof(MMFORMATINFO) ); 92 107 mmfinfo.ulIOProcType=MMIO_IOPROC_STORAGESYSTEM; … … 127 142 printf("%2d: %s\n", a+1, name); 128 143 } 144 else 145 printf("%2d: Can't get format name\n", a+1); 129 146 pmmfi++; 130 147 } … … 136 153 ULONG ulFlags = 0L; 137 154 ULONG rc; 155 138 156 #if 0 139 157 … … 189 207 } 190 208 209 void checkForIOProc(FOURCC fourcc1) 210 { 211 PMMIOPROC pIOProc1=NULLHANDLE; 212 ULONG ulFlags; 213 214 ulFlags= MMIO_FINDPROC; 215 pIOProc1= mmioInstallIOProc (fourcc1, pIOProc1, ulFlags); 216 // pIOProc1= mmioInstallIOProc (0x4745504a, pIOProc1, ulFlags); 217 if (!pIOProc1) 218 /* I/O Procedure NOT FOUND */ 219 printf("IO-Proc NOT found 0x%x 0x%x\n", pIOProc1, fourcc1); 220 else 221 printf("IO-Proc found!!!\n"); 222 /* I/O Procedure found */ 223 } 191 224 int main(int argc, char **argv) { 192 225 193 printf("Test stream io proc...\n ");226 printf("Test stream io proc...\n\n"); 194 227 195 printf(" Installed storage procs: %d\n", queryNumStorageProcs());228 printf("Number of installed storage procs: %d\n", queryNumStorageProcs()); 196 229 getFormats(queryNumStorageProcs()); 230 checkForIOProc(mmioStringToFOURCC("WAVE",0)); 197 231 198 232 // getFormats(45); -
trunk/todo.txt
r3 r4 11 11 12 12 cwimage: 13 Create bitmap thread m y not be thread safe.13 Create bitmap thread may not be thread safe. 14 14 15 15 Delete main bitmap handle after creating a new one for the caller in … … 21 21 22 22 23 23 mmfind_nl.rc/dlg must be translated. 24 25 Position of audio-info control may be wrong in other languages. 26 27 27.08.06: 28 29 wpQueryBitmapHandle(): if size is zero don't scale. ATM no bmp is created at all.
Note:
See TracChangeset
for help on using the changeset viewer.