Changeset 4 for trunk/classes
- Timestamp:
- Jul 13, 2017, 5:17:57 AM (8 years ago)
- Location:
- trunk/classes
- Files:
-
- 47 added
- 44 edited
Legend:
- Unmodified
- Added
- Removed
-
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>."
Note:
See TracChangeset
for help on using the changeset viewer.