Changeset 4 for trunk/classes


Ignore:
Timestamp:
Jul 13, 2017, 5:17:57 AM (8 years ago)
Author:
stevenhl
Message:

Import modifications from cwmm-0_2_9-work-01_10_2006.zip dated 2006-08-27

Location:
trunk/classes
Files:
47 added
44 edited

Legend:

Unmodified
Added
Removed
  • trunk/classes/REPLACE.CMD

    r3 r4  
    44'replace H:\cwmm\classes\Res\dll\mmres_DE.dll d:\MMOS2\MMCLASS\bin\mmres_DE.dll'
    55'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
    611
    712'replace H:\cwmm\classes\cwmm.dll J:\MMOS2\CWMM\CWMM.DLL'
  • trunk/classes/bin/audioext.rx

    r2 r4  
    11/* rexx - Get the extension of audio types added using
    22   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.
    44*/
    55
     
    88
    99allExt=""
     10waveaudio=""
    1011
    1112/* Get MMOS2 directory */
     
    6061        WHEN TRANSLATE(curExt)="FLA" THEN NOP
    6162        WHEN TRANSLATE(curExt)="FLAC" THEN NOP
     63        WHEN TRANSLATE(curExt)="WAV" THEN NOP
    6264
    6365        OTHERWISE
     
    8183        END
    8284        a=a+1
     85        IF a>mmini.0 THEN return
    8386END
    8487return
     
    99102                        END
    100103                        a=a+1
     104                        IF a>mmini.0 THEN return ""
    101105                END
    102106        END
    103107END
    104108return ""
    105 
  • trunk/classes/bin/chktimid.rx

    r2 r4  
    6161        END
    6262        a=a+1
     63        IF a>mmini.0 THEN return 0
    6364END
    6465return 0
  • trunk/classes/bin/imageadd.rx

    r2 r4  
    11/* 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.
    44*/
    55
     
    99EXIT
    1010
    11 
  • trunk/classes/bin/imageext.rx

    r2 r4  
    11/* rexx - Return all image extensions we have a MM class for.   
    2    This script is called by M_MMImage. After getting the extensions
     2   This script is called by M_MMImage and mmfind.exe. After getting the extensions
    33   M_MMImage checks if there're any additional extensions handled by
    44   installed image IO procedures. If yes, these unhandled extensions
     
    88
    99
    10 allExt="_IM DIB GIF JPG VID PCX PCD TIF TGA BMP"
     10allExt="*._IM,*.DIB,*.GIF,*.JPG,*.VID,*.PCX,*.PCD,*.TIF,*.TGA,*.BMP"
    1111return allExt
    1212EXIT
    1313
    14 
  • trunk/classes/c/c_audio/cwaudio.c

    r3 r4  
    7070char chrHelpLibrary[CCHMAXPATH]={0};
    7171char chrInstallDir[CCHMAXPATH]={0};
    72 char chrMMAudioExt[200]={0};/* Array holding the extensions for wpclsQueryInstanceFilter() */
     72char chrMMAudioExt[400]={0};/* Array holding the extensions for wpclsQueryInstanceFilter() */
    7373char resDLLPath[CCHMAXPATH]={0};
    7474
  • trunk/classes/c/c_common/helper.c

    r2 r4  
    11/*
    2  * This file is (C) Chris Wohlgemuth 2001/2004
     2 * This file is (C) Chris Wohlgemuth 2001-2005
    33 */
    44/*
     
    329329}
    330330
     331/* MMCLS_INI_FILE_NAME = "\\cwmm.ini" See ...\common.h */
    331332PSZ _queryMMClassIniFile(void)
    332333{
    333334  static char iniName[CCHMAXPATH]= {0};
    334335
    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  }
    337345
    338346  return iniName;
  • trunk/classes/c/c_image/cwimage.c

    r2 r4  
    19741974          /* This extension is yet unknown */
    19751975          if(chrMMImageExt[0]==0) {
     1976            /* It's the first one */
    19761977            sprintf(chrMMImageExt,"*.%s", pmmFormatInfoArray->szDefaultFormatExt);
    1977             //   fFirstExt=FALSE;
    19781978          }
    19791979          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            }
    19821985          }
    19831986          //          HlpWriteToTrapLog("Known Extension: %s\n", chrMMImageKnownExt);
  • trunk/classes/c/c_video/cwmpg.c

    r2 r4  
    11/*
    2  * (C) Chris Wohlgemuth 2002-2004
     2 * (C) Chris Wohlgemuth 2002-2005
    33 *
    44 */
     
    4141#include "helpid.h"
    4242#include "cwmpg.ih"
     43#include "cwaudioinc.h" /* For REXX script name */
     44#include "sys_funcs.h"
    4345
    4446extern char chrHelpLibrary[CCHMAXPATH];
     47char chrMMMPGExt[400]={0};/* Array holding the extensions for wpclsQueryInstanceFilter() */
    4548
    4649HMODULE queryResModuleHandle(void);
     
    4851BOOL getMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource,HWND hwnd);
    4952ULONG launchPMProg(PSZ pszTitle, PSZ wrapperExe, PSZ parameters,  CWMMDataFile *thisPtr, ULONG ulView);
    50 
     53BOOL getStringFromRexxScript(PSZ rexxFile, char* chrResult, ULONG ulSize);
    5154
    5255/*
     
    155158    M_MMMPGMethodDebug("M_MMMPG","cwmpgM_wpclsQueryInstanceFilter");
    156159
    157     return "*.MPG,*.VBS";
     160    /* This list is build in wpclsInitData() */
     161    return chrMMMPGExt;
    158162}
    159163
     
    189193
    190194
     195SOM_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
    191236/*
    192237 * SOM_Scope BOOL  SOMLINK cwmpgM_wpclsQueryDefaultHelp(M_CWMPG *somSelf,
  • trunk/classes/c/c_video/cwvideo.c

    r2 r4  
    11/*
    2  * (C) Chris Wohlgemuth 2002-2003
     2 * (C) Chris Wohlgemuth 2002-2005
    33 *
    44 */
     
    3939#include <os2.h>
    4040#include "cwvideo.ih"
     41#include "cwaudioinc.h" /* For REXX script name */
    4142//#include "cwmmres.h"
    4243//#include "mmres.h"
     
    4647BOOL getMessage(char* text,ULONG ulID, LONG lSizeText, HMODULE hResource,HWND hwnd);
    4748ULONG launchPMProg(PSZ pszTitle, PSZ wrapperExe, PSZ parameters,  CWMMDataFile *thisPtr, ULONG ulView);
    48 
     49BOOL getStringFromRexxScript(PSZ rexxFile, char* chrResult, ULONG ulSize);
     50
     51char chrMMVideoExt[400]={0};/* Array holding the extensions for wpclsQueryInstanceFilter() */
    4952
    5053/*
     
    184187
    185188
     189SOM_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
     206SOM_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
    186222/*
    187223 * SOM_Scope PSZ  SOMLINK cwvideoM_wpclsQueryTitle(M_CWVideo *somSelf)
     
    204240}
    205241
     242
     243SOM_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}
    206277
    207278/*
  • trunk/classes/idl/idl_video/cwmpg.idl

    r2 r4  
    131131    wpclsQueryInstanceFilter    : override;   
    132132    wpclsQueryIconData          : override;
     133    wpclsInitData               : override;
    133134    wpclsQueryDefaultHelp       : override;
    134135  };
  • trunk/classes/idl/idl_video/cwvideo.idl

    r2 r4  
    130130     */
    131131    wpclsCreateDefaultTemplates : override;
    132     wpclsQueryTitle             : override;   
    133     wpclsQueryDefaultView  : override;   
     132    wpclsQueryInstanceType      : override;
     133    wpclsQueryInstanceFilter    : override;
     134    wpclsQueryTitle             : override;
     135    wpclsInitData               : override;   
     136    wpclsQueryDefaultView       : override;   
    134137    wpclsQueryIconData          : override;
    135138  };
  • trunk/classes/inc/common.h

    r2 r4  
    6666#endif
    6767
     68#define MMCLS_INI_FILE_NAME     "\\cwmm.ini"
     69
    6870#endif
  • trunk/classes/inc/cwaudioinc.h

    r2 r4  
    6464#define TYPE_M3U             "M3U"
    6565#define TYPE_FLAC            "FLAC"
     66#define TYPE_DIGITALVIDEO    "Digital Video"
    6667
    6768/* Setup strings for MMAudio (was CWAudio). These strings will
     
    241242#define CLASS_VOLUME_KEY   "volume"
    242243
     244#define MMVIDEO_GETEXT_RX  "videoext.rx"
     245#define MMMPG_GETEXT_RX    "mpegext.rx"
     246
    243247#endif
    244248
  • trunk/classes/inc/mmres.h

    r2 r4  
    335335#define ID_MENUITEMMASTERVOLUME 5
    336336
    337 
     337#define IDPB_MMFINDSTOP             809
     338#define IDPB_MMFINDPAUSE            810
     339#define IDPB_MMFINDPLAY             811
  • trunk/classes/makefile

    r2 r4  
    1818IDLDIR  =       ./idl
    1919OBJDIR  =       ./obj
    20 # Object files of common functions are going here
     20
     21# Object files of common functions (CW functions) are going here
    2122LIBDIR  =       ./lib
    22 #Where the resource dlls are going
    23 RESDLLDIR       =       ./RES/dll
    2423
    2524
     
    2928#
    3029#######################################
     30
     31########### C compile #################
    3132COMPILE         =       $(CC) -I $(MOREINC) $(CFLAGS)  /Fo$@ $<
    3233
     34########### SOM compile ###############
    3335#Audio classes
    3436AUD_SCCOMPILEC  =       sc -I $(IDLDIR)/idl_audio -I $(IDLDIR)/idl_mm -p -r -sc -d$(CDIR)/c_audio -maddstar -mnoint -S128000 -C128000  $<
     
    114116
    115117
     118#######################################
     119#
     120# Define *.hlp files.
     121#
     122#######################################
    116123HLP_FILES       =       ./Help/de/cwmm049.hlp \
    117124                        ./Help/en/cwmm.hlp \
    118125                        ./Help/nl/cwmm031.hlp \
    119                         ./Help/it/cwmm039.hlp
     126                        ./Help/it/cwmm039.hlp \
     127                        ./Help/tw/cwmm088.hlp
    120128
    121129
     
    125133#
    126134#######################################
    127 MM_IHFILES      =       ./include/cwmmdataf.ih ./include/cwmmdisk.ih ./include/mmfolder.ih
    128 
    129 IHFILES =               ./include/cwmp3.ih \
     135MM_IHFILES      =       ./include/cwmmdataf.ih \
     136                        ./include/cwmmdisk.ih \
     137                        ./include/mmfolder.ih
     138
     139IHFILES         =       ./include/cwmp3.ih \
    130140                        ./include/cwogg.ih \
    131141                        ./include/cwaudio.ih \
     
    168178#
    169179#######################################
    170 all: cwmm.dll $(HLP_FILES)
     180all: cwmm.dll $(HLP_FILES) nlv
    171181        cd ./mm-progs && make
    172182
     
    176186cwmm.dll: $(MM_IHFILES) $(IHFILES) $(VID_IHFILES) $(IMG_IHFILES) \
    177187        $(ALL_OBJECTS)
    178         @create_cwmm_def.CMD ./c/cwmm.def
    179         $(CC) $(LDFLAGS) /L  /Fm$(basename $@)  /Fe$@ $(ALL_OBJECTS) $(LIBS) ./c/cwmm.def
    180 #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)
    181191        cd ./res && make
    182192        rc ./res/common_res/cwaudio.res cwmm.dll
     
    185195###################################
    186196#
     197#  Rules for generating the NLV
     198#  ressources.
     199#
     200###################################
     201nlv:
     202        cd ./res && make
     203       
     204
     205###################################
     206#
    187207#  Rules for generating online help
    188208#
     
    203223./Help/it/cwmm039.hlp:  ./Help/it/cwmm039.ipf
    204224        cd ./Help/it && make
     225
     226# Traditional chinese (TW)
     227./Help/tw/cwmm088.hlp:  ./Help/tw/cwmm088.ipf
     228        cd ./Help/tw && make
    205229
    206230###################################
     
    293317        -cd ./Help/nl && make clean
    294318        -cd ./Help/it && make clean
     319        -cd ./Help/tw && make clean
    295320        -cd ./res && make clean
    296321        -cd ./mm-progs && make clean
     
    305330        -cd ./Help/nl && make cleaner
    306331        -cd ./Help/it && make cleaner
     332        -cd ./Help/tw && make cleaner
    307333        -cd ./res && make cleaner
    308334        -cd ./mm-progs && make cleaner
  • trunk/classes/mm-progs/MMPlayer/makefile

    r2 r4  
    22
    33include ../../../make.inc
     4include ../mmprog.inc
    45
    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
     6OBJECTS =       $(LIBDIR)/message.obj \
     7                $(LIBDIR)/helper.obj \
     8                $(LIBDIR)/menu_funcs.obj \
     9                $(LIBDIR)/sys_funcs.obj
    1710OBJS2           =        customprocs.obj playaudio.obj display.obj
    1811
     
    2013all:    mmplayer.exe
    2114
    22 $(LIBDIR)/%.obj:        $(COMMONSRC)/%.c
    23         gcc -c -Wall -o$@ -Zomf -I$(INC) $< 
    2415
    25 %.obj:  %.c
    26         gcc -c -Wall -o$@ -Zomf -I$(INC) $< 
    27 
    28 mmplayer.exe:   mmplayer.c $(OBJECTS) $(OBJS2) makefile
     16mmplayer.exe:   mmplayer.c $(OBJECTS) $(OBJS2) makefile def.tpl
     17        cmd /C $(TOOLDIR)\create_MMPROG_def.cmd mmplayer.def
    2918#Use this command to link dynamicaly
    30         gcc $(CPPFLAGS) -I$(INC) mmplayer.c $(OBJECTS) $(OBJS2) -los2me mmplayer.def
     19        $(CC) $(CPPFLAGS) -I$(INC) mmplayer.c $(OBJECTS) $(OBJS2) -los2me mmplayer.def
    3120        rc mmplayer.rc mmplayer.exe
    3221
  • trunk/classes/mm-progs/MMPlayer/mmplayer.DEF

    r2 r4  
    1 ; DEF-file for mmplayer.exe. This is a PM program which
    2 ; play audio files.
    31;
    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;
    610;/*
    711; * This program is free software; you can redistribute it and/or modify
     
    2630; */
    2731NAME MMPLAYER WINDOWAPI
    28 DESCRIPTION '$@#(c) Chris Wohlgemuth :V0.2.7 (17.08.2003)#@PM-Program for audio file playing'
     32DESCRIPTION '$@#(c) C. Wohlgemuth 2005:0.2        #@##1## 14/08/05 21:15:29        My ;-)     ::::9::@@PM-Program for audio file playing V0.2.9'
    2933STACKSIZE    1638400
    30 
    31 
    32 
    33 
  • trunk/classes/mm-progs/MMPlayer/playaudio.c

    r2 r4  
    294294  }
    295295}
     296
     297
  • trunk/classes/mm-progs/audioconverter/audconv.DEF

    r2 r4  
    1 ; DEF-file for audconv.exe. This is a PM program which
    2 ; shows a dialog box and converts audio files to waves.
    31;
    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;
    610;/*
    711; * This program is free software; you can redistribute it and/or modify
     
    2529; * http://www.geocities.com/SiliconValley/Sector/5785/
    2630; */
    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 
     31NAME AUDCONV WINDOWAPI
     32DESCRIPTION '$@#(c) C. Wohlgemuth 2006:0.2        #@##1## 12/02/06 19:46:31        My ;-)     ::::9::@@PM-Program for audio file converting V0.2.9'
     33STACKSIZE    1638400
  • trunk/classes/mm-progs/audioconverter/makefile

    r2 r4  
    33include ../../../make.inc
    44
    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
     5OBJECTS =       $(LIBDIR)/message.obj \
     6                $(LIBDIR)/helper.obj \
     7                $(LIBDIR)/progbars.obj \
     8                $(LIBDIR)/sys_funcs.obj
    109
    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
     10include ../mmprog.inc
    1811
    1912
    2013all:    audconv.exe
    2114
    22 $(LIBDIR)/%.obj:        $(COMMONSRC)/%.c
    23         gcc -c -o$@ -Zomf -I$(INC) $< 
    2415
    25 audconv.exe:    audconv.c $(OBJECTS)
    26         gcc $(CPPFLAGS) -I$(INC) audconv.c $(OBJECTS) -los2me audconv.def
     16audconv.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
    2719
    2820
    2921clean:
    3022        -rm *.exe
     23        -rm *.dll
    3124        -rm *.obj
     25        -rm *.res
     26        -rm *.ini
    3227
    3328cleaner:
     
    3833distribution:
    3934        -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 which
    2 ; shows a dialog box and converts image files.
    31;
    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;
    610;/*
    711; * This program is free software; you can redistribute it and/or modify
     
    2529; * http://www.geocities.com/SiliconValley/Sector/5785/
    2630; */
    27 NAME imgconv WINDOWAPI
    28 DESCRIPTION '$@#(c) Chris Wohlgemuth :V0.2.7 (17.08.2003)#@PM-Program for image file converting'
     31NAME IMGCONV WINDOWAPI
     32DESCRIPTION '$@#(c) C. Wohlgemuth 2006:0.2        #@##1## 12/02/06 19:48:25        My ;-)     ::::9::@@PM-Program for image file converting V0.2.9'
    2933STACKSIZE    1638400
    30 
    31 
    32 
    33 
  • trunk/classes/mm-progs/imageconverter/makefile

    r2 r4  
    22
    33include ../../../make.inc
     4include ../mmprog.inc
    45
    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
     6OBJECTS =       $(LIBDIR)/message.obj \
     7                $(LIBDIR)/helper.obj \
     8                $(LIBDIR)/progbars.obj \
     9                $(LIBDIR)/sys_funcs.obj
    1710
    1811all:    imgconv.exe
    1912
    20 $(LIBDIR)/%.obj:        $(COMMONSRC)/%.c
    21         gcc -c -o$@ -Zomf -I$(INC) $< 
    2213
    2314imgconv.exe:    imgconv.c $(OBJECTS)
     15        cmd /C $(TOOLDIR)\create_MMPROG_def.cmd imgconv.def
    2416#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
    2718
    2819clean:
    2920        -rm *.exe
     21        -rm *.dll
    3022        -rm *.obj
     23        -rm *.res
     24        -rm *.ini
    3125
    3226cleaner:
     
    3428        -rm *.flc
    3529
     30
    3631distribution:
    37        
    38 
  • trunk/classes/mm-progs/include/mmprogs_defaults.h

    r2 r4  
    2929/************************************/
    3030/* General */
    31 #define INI_FILE_NAME     "\\cwmm.ini"
     31#define MMCLS_INI_FILE_NAME     "\\cwmm.ini"
    3232#define INI_WINDOWPOS_KEY "windowpos"    /* Key for storing window position */
    3333
  • trunk/classes/mm-progs/master_volume/makefile

    r2 r4  
    22
    33include ../../../make.inc
     4include ../mmprog.inc
    45
    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 -Zsys -s
    10 
    11 ICCFLAGS        = /Ss
    12 INC             = ../include -I ../../../common_functions/include -I ../../../classes/inc
    13 DEFS         =
    14 PROGS        = 
    15 ODIR            = .
    16 CPPDIR  = .
    176ICONDIR =       ..\res\Icons
    18 LIBDIR  =       ../lib
    19 OBJECTS =       $(LIBDIR)/message.obj $(LIBDIR)/helper.obj $(LIBDIR)/progbars.obj $(LIBDIR)/sys_funcs.obj
    20 #OBJDIR =       ../obj
     7OBJECTS =       $(LIBDIR)/message.obj \
     8                $(LIBDIR)/helper.obj \
     9                $(LIBDIR)/progbars.obj \
     10                $(LIBDIR)/sys_funcs.obj
    2111#OBJECTS        =       $(OBJDIR)/message.obj $(OBJDIR)/helper.obj $(OBJDIR)/progbars.obj \
    2212                        $(OBJDIR)/sys_funcs.obj
     
    2414all:    volume.exe
    2515
    26 $(LIBDIR)/%.obj:        $(COMMONSRC)/%.c
    27         gcc -c -o$@ -Zomf -I$(INC) $< 
    2816
    29 volume.exe:     volume.c $(OBJECTS)
    30         gcc $(CPPFLAGS) -I$(INC) volume.c $(OBJECTS) -Zmt -los2me volume.def
     17volume.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
    3120        rc -I $(INC) volume.rc volume.exe
    3221
  • trunk/classes/mm-progs/master_volume/volume.DEF

    r2 r4  
    1 ; DEF-file for volume.exe. This is a PM program which
    2 ; shows a dialog box for setting the masteraudio.
    31;
    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;
    610;/*
    711; * This program is free software; you can redistribute it and/or modify
     
    2529; * http://www.geocities.com/SiliconValley/Sector/5785/
    2630; */
    27 
    2831NAME VOLUME WINDOWAPI
    29 DESCRIPTION '$@#(c) Chris Wohlgemuth :V0.2.7 (17.08.2003)#@Master volume applet'
    30 ;EXPORTS         decodeStatusDialogProc
    31 
    32 
    33 
    34 
     32DESCRIPTION '$@#(c) C. Wohlgemuth 2006:0.2        #@##1## 12/02/06 19:56:10        My ;-)     ::::9::@@Master volume applet V0.2.9'
     33STACKSIZE    1638400
  • trunk/classes/mm-progs/mmfind/image.c

    r2 r4  
    9292}
    9393
    94 
    95 
    96 
    9794MRESULT EXPENTRY bmpPreviewProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
    9895{
     
    116113
    117114
     115#if 0
    118116/*
    119117  Load an image file using IO-Procs
     
    378376    return(hbm);
    379377}
     378#endif
  • trunk/classes/mm-progs/mmfind/makefile

    r2 r4  
    22
    33include ../../../make.inc
     4include ../mmprog.inc
    45
    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
     6LIBOBJECTS      =       $(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
     14OBJECTS         =       image.obj       
    2015
    2116
    2217all:    mmfind.exe
    2318
    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
     19mmfind.exe:     mmfind.c $(LIBOBJECTS) $(OBJECTS) makefile mmfind.rc def.tpl
    3120#Use this command to link dynamicaly
    32         gcc $(CPPFLAGS) -I$(INC) mmfind.c $(OBJECTS) $(OBJS2) -los2me mmfind.def
    33 #       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
    3524
    3625clean:
     
    4534        -rm *.flc
    4635
     36
    4737distribution:
    48        
  • trunk/classes/mm-progs/mmfind/mmfind.c

    r2 r4  
    11/*
    2  * mmplayer.c (C) Chris Wohlgemuth 2004
     2 * mmfind.c (C) Chris Wohlgemuth 2004-2005
    33 *
    44 */
     
    3737#define INCL_GPI
    3838#define INCL_PM
    39 
     39#define INCL_REXXSAA
     40
     41/* OS/2 and compiler includes */
    4042#include <os2.h>
    4143#include <sys\types.h>
     
    4547#include <stdlib.h>
    4648#include "os2me.h"
    47 #include "common.h"
    48 #include "mmres.h"
    49 #include "mmprogs_defaults.h"
     49/* CW toolkit includes */
    5050#include "sys_funcs.h"
    5151#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"
    6959//#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
     62char logName[]="mmfind.log"; /* To keep some (unused) helpers in helper.c happy */
    9563
    9664char chrIniFile[CCHMAXPATH];
     65char chrInstallDir[CCHMAXPATH];
     66
     67char chrLastAudioDir[CCHMAXPATH];
     68char chrLastVideoDir[CCHMAXPATH];
     69char chrLastImageDir[CCHMAXPATH];
     70
     71/***** For previewing audio tracks *****/
     72char chrSourceName[CCHMAXPATH]; /* The audio file to be played */
     73BOOL bIsMidi=FALSE;             /* No MIDI support atm */
     74BOOL bIsPlaying=FALSE;          /* TRUE if currently playing */
     75BOOL bPaused=FALSE;             
     76ULONG ulPos;
     77ULONG ulTotalLength;
     78HWND hwndPlayer;                /* HWND of the player object window used for async coommunication */
     79
     80/***************************************/
    9781
    9882#define NUMPARAMS  1
     
    10589HMODULE RESSOURCEHANDLE=0;
    10690
    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",
     91char chrMediaFileTypes[NUMMEDIATYPES][100];
     92
     93char 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 */
    11595                                          "*.BMP;*.DIB;*.GIF;*.JPG;*.PCX;*.PNG;*.PCD;*.TIF;*.TGA;*.VID;*._IM",
    11696                                          "*.AVI;*.MPG;*.FLI;*.FLC;*.MOV;*.QT;*.VBS"};
     97/* Additional audio extensions to be queried during runtime */
     98char chrAdditionalExt[200];
     99/* This holds the template used when building the audio information text */
     100char audioText[255];
     101
    117102int iMediaType=MT_AUDIO;
    118103
    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 */
    124105BITMAPINFOHEADER2 bmpInfoHeader2;
    125106HBITMAP hBitmap;
    126107
     108/* HBITMAP for the play control buttons */
     109HBITMAP hbmPlay;
     110HBITMAP hbmStop;
     111
    127112FILEDLG fd = { 0 };
    128113
    129 void loadStrings(void)
    130 {
    131 
    132 }
    133 
    134 void showVideoControls(HWND hwnd, BOOL bShow)
     114static 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
     131static 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
     180static 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
     197static 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
     212static void showVideoControls(HWND hwnd, BOOL bShow)
    135213{
    136214  /* Preview area */
     
    140218}
    141219
     220
     221static 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
    142228void showAudioControls(HWND hwnd, BOOL bShow)
    143229{
     
    146232  /* Group box */
    147233  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
     246BOOL 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
     270BOOL 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
     295ULONG 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
     388static 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 */
     422void _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
     453void MMAudioPlayFile(HWND hwndPlayer, HWND hwndNotify, char* chrFile)
     454{
     455  WinPostMsg(hwndPlayer, WM_APPTERMINATENOTIFY, MPFROMSHORT(PLAY_FILE), MPFROMHWND(hwndNotify));
     456}
     457
     458void MMAudioStop(HWND hwndPlayer, HWND hwndNotify)
     459{
     460  WinPostMsg(hwndPlayer, WM_APPTERMINATENOTIFY, MPFROMSHORT(STOP_TRACK), MPFROMHWND(hwndNotify));
     461}
     462
     463void MMAudioPause(HWND hwndPlayer, HWND hwndNotify)
     464{
     465  WinPostMsg(hwndPlayer, WM_APPTERMINATENOTIFY, MPFROMSHORT(PAUSE_TRACK), MPFROMHWND(hwndNotify));
     466}
     467
     468BOOL 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
     476void MMAudioClosePlayer(HWND hwndPlayer)
     477{
     478  WinSendMsg(hwndPlayer, WM_QUIT, 0, 0);
     479  return;
     480}
     481
     482static ULONG mmIdentifyFile(char* chrFile)
    152483{
    153484  MMIOINFO mmioInfo={0};
     
    155486  FOURCC fourCC;
    156487
    157   //  SysWriteToTrapLog("%s\n", chrFile);
    158488  if(MMIO_SUCCESS!=mmioIdentifyFile(chrFile, &mmioInfo, &mmFormatInfo, &fourCC, 0,0))
    159489    {
     
    178508}
    179509
     510static 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
    180522
    181523MRESULT findFileDlgProc(HWND hwnd, ULONG  msg, MPARAM mp1, MPARAM mp2)
     
    187529      {
    188530        int a;
     531        SWCNTRL swctl;
     532        PID pid;
    189533
    190534        /* Set dialog font */
     
    195539        }
    196540        /* Fill combo box with media types (audio, image, video) */
    197         for(a=0;a<numMediaType;a++)
     541        for(a=0;a<NUMMEDIATYPES;a++)
    198542          WinSendMsg(WinWindowFromID(hwnd, IDCB_TYPEOFFILE), LM_INSERTITEM, MRFROMSHORT(LIT_SORTASCENDING),
    199543                     MPFROMP(chrMediaFileTypes[a]));
     
    202546        /* Subclass preview area */
    203547        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);
    204564        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;
    205579      }
    206580    case WM_CONTROL:
     
    215589                WinQueryWindowText(HWNDFROMMP(mp2), sizeof(chrText), chrText);
    216590                /* Find Index */
    217                 for(a=0; a<numMediaType;a++) {
     591                for(a=0; a<NUMMEDIATYPES;a++) {
    218592                  if(!stricmp(chrMediaFileTypes[a], chrText))
    219593                    break;
     
    234608                    showVideoControls(hwnd, FALSE);
    235609                    showImageControls(hwnd, TRUE);
    236                       iMediaType=MT_IMAGE;
     610                    iMediaType=MT_IMAGE;
    237611                    break;
    238612                  case 2:
     
    249623                WinSendMsg(WinWindowFromID(hwnd, 258), WM_CHAR,
    250624                           MPFROM2SHORT(KC_VIRTUALKEY , 0), MPFROM2SHORT(0, VK_NEWLINE));
    251 
    252625              }
    253626            break;
     
    256629            {
    257630              if(SHORT2FROMMP(mp1)==EN_CHANGE)
    258                 WinStartTimer(globalHab, hwnd, TIMERID_SELECTION, 100);
     631                WinStartTimer(WinQueryAnchorBlock(HWND_DESKTOP), hwnd, TIMERID_SELECTION, 100);
    259632              break;
    260633            }
     
    272645            char chrFullName[CCHMAXPATH*2];
    273646
    274             WinStopTimer(globalHab, hwnd, TIMERID_SELECTION);
     647            WinStopTimer(WinQueryAnchorBlock(HWND_DESKTOP), hwnd, TIMERID_SELECTION);
    275648            WinQueryWindowText(WinWindowFromID(hwnd, 258), sizeof(chrName), chrName);
    276649            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              }
    277664            strcat(chrFullName, chrName);
    278 
     665            strlcpy(chrSourceName, chrFullName, sizeof(chrSourceName));
    279666            switch(iMediaType)
    280667              {
     
    289676                  ULONG ulPlaySecs;
    290677
     678                  MMAudioStop(hwndPlayer, hwnd);
     679
    291680                  memset(&mmio,0, sizeof(mmio));
    292681                  mmio.ulFlags=MMIO_READ;
     
    304693                  if(rc!=MMIO_SUCCESS) {
    305694                    WinSetWindowText(WinWindowFromID(hwnd, IDST_AUDIOINFO), "");
     695                    enableAudioPlayControls(hwnd, FALSE);
    306696                    break;
    307697                  }
    308698
    309699                  ulPlaySecs=mmAudioHeader.mmXWAVHeader.XWAVHeaderInfo.ulAudioLengthInMS/1000;
    310                   sprintf(text, audioText,
    311                           ulPlaySecs/60, ulPlaySecs%60,
     700                  sprintf(text, audioText,  ulPlaySecs/60, ulPlaySecs%60,
    312701                          mmAudioHeader.mmXWAVHeader.WAVEHeader.ulSamplesPerSec,
    313702                          mmAudioHeader.mmXWAVHeader.WAVEHeader.usBitsPerSample,
    314703                          mmAudioHeader.mmXWAVHeader.WAVEHeader.usChannels);
    315704                  WinSetWindowText(WinWindowFromID(hwnd, IDST_AUDIOINFO), text);
    316                  
     705                  enableAudioPlayControls(hwnd, TRUE);
    317706                  break;
    318707                }
     
    320709                if(hBitmap) {
    321710                  HBITMAP hBitmapTemp;
    322                   hBitmapTemp=loadBitmap (chrFullName, &bmpInfoHeader2);           
     711                  //                  hBitmapTemp=loadBitmap (chrFullName, &bmpInfoHeader2);
     712                  hBitmapTemp=ImgLoadImageFileAndHeader(chrFullName, &bmpInfoHeader2);
    323713                  GpiDeleteBitmap(hBitmap);
    324714                  hBitmap=hBitmapTemp;
    325715                }
    326716                else
    327                   hBitmap=loadBitmap (chrFullName, &bmpInfoHeader2);
     717                  hBitmap=ImgLoadImageFileAndHeader(chrFullName, &bmpInfoHeader2);
     718                  //                  hBitmap=loadBitmap (chrFullName, &bmpInfoHeader2);
    328719                /* Force redraw of preview area */
    329720                WinInvalidateRect(WinWindowFromID(hwnd, IDSR_IMGPREVIEW), NULLHANDLE, FALSE);
     
    342733      switch(SHORT1FROMMP(mp1))
    343734        {
     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          }
    344750        case IDPB_NEWFILE: /* New */
    345751          {
    346752            HOBJECT hObject;
     753
     754            MMAudioStop(hwndPlayer, hwnd);
     755            MMAudioClosePlayer(hwndPlayer);
     756
     757            /* Open the MM templates folder */
    347758            if((hObject=WinQueryObject("<MMPM2_MMTEMPLATEFOLDER>"))!=NULLHANDLE) {
    348759              WinOpenObject(hObject, OPEN_DEFAULT, TRUE);
     
    350761            }
    351762            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);
    354765            return MRFALSE;
    355766          }
    356767        default:
     768          //          MMAudioStop(hwndPlayer, hwnd);
     769          stopAudioFile(hwnd);
     770          MMAudioClosePlayer(hwndPlayer);
     771          // DosSleep(1000);
    357772          break;
    358773        }
     
    363778}
    364779
     780BOOL 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 */
     834static 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
    365932int main (int argc, char *argv[])
    366933{
     
    370937  short a;
    371938
    372   //  FILEDLG fd = { 0 };
    373 
    374939  /* Create a copy of the args */
    375940  /* argv[0]: progname
    376    * argv[1]: audio file
    377941   */
    378942
     
    394958      }
    395959      else {
    396         HWND hwndDlg;
     960        HWND hwndDlg;       
    397961
    398962        /* Get our ressource dll */ 
    399963        RESSOURCEHANDLE=queryResModuleHandle(argv[0]);
     964        /* Load NLV strings */
     965        loadStringsFromResourceDLL(RESSOURCEHANDLE);
     966
    400967        /* Get data from INI file */
    401968        HlpBuildMMProgIniFileName(argv[0], chrIniFile, sizeof(chrIniFile));
    402969
    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();
    4051007        fd.cbSize = sizeof( fd );
    4061008        /* It's an centered 'Open'-dialog */
    4071009        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");
    4151010        fd.hMod=RESSOURCEHANDLE;
    4161011        fd.usDlgId=IDDLG_MMFIND;
    4171012        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
    4191030        if( (hwndDlg=WinFileDlg( HWND_DESKTOP, HWND_DESKTOP, &fd )) != NULLHANDLE )
    4201031          {
    421             /* Set dialog font to WarpSans for Warp 4 and above */
    4221032            if(hBitmap)
    423               GpiDeleteBitmap(hBitmap);
    424  
     1033              GpiDeleteBitmap(hBitmap); 
    4251034            if( fd.lReturn == DID_OK )
    4261035              {
     
    4371046                    {
    4381047                      HOBJECT hObject;
    439                       char *chr;
     1048
     1049                      /* Open the audio file in the editor */
    4401050                      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);
    4471053                      break;
    4481054                    }
     
    4521058                      char *chr;
    4531059                      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 */
    4551063                      if((chr=strrchr(fd.szFullFile, '\\'))!=NULLHANDLE) {
    4561064                        *chr=0;
     
    4581066                          WinOpenObject(hObject, OPEN_CONTENTS, TRUE);
    4591067                      }
     1068#endif
    4601069                      break;
    4611070                    }
     
    4641073                      HOBJECT hObject;
    4651074                      char *chr;
    466                       //if((hObject=WinQueryObject(fd.szFullFile))!=NULLHANDLE)
    467                       // WinOpenObject(hObject, OPEN_DEFAULT, TRUE);
    4681075                      if((chr=strrchr(fd.szFullFile, '\\'))!=NULLHANDLE) {
    4691076                        *chr=0;
     
    4751082                  }/* switch()*/
    4761083              }/* 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();
    4791090      }
    4801091      WinDestroyMsgQueue(hmq);
  • trunk/classes/mm-progs/mmfind/mmfind.rc

    r2 r4  
    22   #include <os2.h>
    33#endif
     4#include "mmfind.h"
    45
    5 rcinclude mmfind.dlg
     6BITMAP IDBMP_PLAY  "./bmp/play.bmp"
     7BITMAP 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 which
    2 ; controls the volume of playing audio objects.
    31;
    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;
    610;/*
    711; * This program is free software; you can redistribute it and/or modify
     
    2630; */
    2731NAME CLASSVOL WINDOWAPI
    28 DESCRIPTION '$@#(c) Chris Wohlgemuth :V0.2.7 (17.08.2003) ()#@PM-Program for volume control'
     32DESCRIPTION '$@#(c) C. Wohlgemuth 2005:0.2        #@##1## 14/08/05 21:06:17        My ;-)     ::::9::@@PM-Program for volume control V0.2.9'
    2933STACKSIZE    1638400
    30 
    31 
    32 
    33 
  • trunk/classes/mm-progs/volume/makefile

    r2 r4  
    33include ../../../make.inc
    44
    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
     6include ../mmprog.inc
    197
     8OBJECTS         =       $(LIBDIR)/message.obj \
     9                        $(LIBDIR)/helper.obj \
     10                        $(LIBDIR)/menu_funcs.obj \
     11                        $(LIBDIR)/sys_funcs.obj
     12OBJS2           =       customprocs.obj
    2013
    2114all:    classvol.exe
    2215
    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
     16classvol.exe:   classvol.c $(OBJECTS) $(OBJS2) makefile def.tpl
     17        cmd /C $(TOOLDIR)\create_MMPROG_def.cmd classvolume.def
    3018#Use this command to link dynamicaly
    31         gcc $(CPPFLAGS) -I$(INC) classvol.c $(OBJECTS) $(OBJS2) -los2me classvolume.def
     19        $(CC) $(CPPFLAGS) -I$(INC) classvol.c $(OBJECTS) $(OBJS2) -los2me classvolume.def
    3220        rc classvolume.rc classvol.exe
    3321
    3422
     23       
    3524clean:
    3625        -rm *.exe
     26        -rm *.dll
    3727        -rm *.obj
     28        -rm *.res
    3829        -rm *.ini
    39         -rm *.res
    4030
    4131cleaner:
     
    4333        -rm *.flc
    4434
     35
    4536distribution:
    46        
    47 
  • trunk/classes/res/de/cwaudio_de.rc

    r2 r4  
    6969STRINGTABLE
    7070BEGIN
    71 ID_WAVEINFOPAGENAME "~Audio Information"
    72 ID_ID3TAGSPAGENAME  "~ID3 Tags"
     71ID_WAVEINFOPAGENAME "~Audio-Information"
     72ID_ID3TAGSPAGENAME  "~ID3-Tags"
    7373ID_TRACKNAMEPAGENAME "~Trackname"
    7474IDSTR_TRACKNAME      "Trackname"
  • trunk/classes/res/de/cwimage_de.rc

    r2 r4  
    2626IDSTR_CWIMAGETITLE  "Digitales Bild"
    2727
    28 IDSTR_IMAGEINFOPAGENAME "~Bild Information"
     28IDSTR_IMAGEINFOPAGENAME "~Bild-Information"
    2929IDSTR_SPRINTFPIXEL      "%d Pixel"
    3030IDSTR_SPRINTFBIT       "%d Bit"
  • trunk/classes/res/de/makefile

    r2 r4  
    44include ../../../build.inc
    55
    6 LANGUAGE        =       _DE
     6LANGUAGE        =       _de
    77
    88CC           = icc
     
    2727                icc $(CPPFLAGS) -I$(INC) /Fe$(OBJDIR)\$@ $< mmres$(LANGUAGE).def
    2828                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
    2930#               rc  mmres$(LANGUAGE).res $(OBJDIR)/mmres$(LANGUAGE).dll
    3031
  • trunk/classes/res/de/mmfind_de.dlg

    r2 r4  
    3737        CTEXT           "Keine Vorschau verfgbar", IDST_NOPREVIEWAVAILABLE, 251, 42, 78, 33,
    3838                        DT_WORDBREAK | NOT WS_VISIBLE
    39         LTEXT           "", IDST_AUDIOINFO, 253, 21, 75, 62, DT_WORDBREAK | NOT
     39        LTEXT           "", IDST_AUDIOINFO, 253, 41, 75, 42, DT_WORDBREAK | NOT
    4040                        WS_VISIBLE
    4141        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
    4246        DEFPUSHBUTTON   "~OK", DID_OK, 3, 2, 40, 12
    4347        PUSHBUTTON      "~Neu...", IDPB_NEWFILE, 46, 2, 40, 12
  • trunk/classes/res/de/mmfind_de.rc

    r2 r4  
    88IDSTR_TYPEIMAGE       "Bilddatei"
    99IDSTR_TYPEVIDEO       "Videodatei"
    10 IDSTR_AUDIOINFOTEXT   "Spielzeit:\t%02d:%02d\n\nSamplerate:\t%d\n\nBits pro Sample:\t%d\n\nKan„le:\t%d"
     10IDSTR_AUDIOINFOTEXT   "Spielzeit:\t%02d:%02d\x0a\x0aSamplerate:\t%d\x0a\x0aBits pro Sample:\t%d\x0a\x0aKan„le:\t\t%d"
    1111IDSTR_NOMMTEMPLATEFLDRTITLE "Fehler bei Dateierstellung"
    1212IDSTR_NOMMTEMPLATEFLDR "Multimedia-Schablonenordner kann nicht gefunden werden. M”glicherweise ist die Objekt-ID <MMPM2_MMTEMPLATEFOLDER> verloren gegangen."
  • trunk/classes/res/en/mmfind_en.dlg

    r2 r4  
    3737        CTEXT           "No preview available", IDST_NOPREVIEWAVAILABLE, 251, 42, 78, 33,
    3838                        DT_WORDBREAK | NOT WS_VISIBLE
    39         LTEXT           "", IDST_AUDIOINFO, 253, 21, 75, 62, DT_WORDBREAK | NOT
     39        LTEXT           "", IDST_AUDIOINFO, 253, 41, 75, 42, DT_WORDBREAK | NOT
    4040                        WS_VISIBLE
    4141        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
    4246        DEFPUSHBUTTON   "~OK", DID_OK, 3, 2, 40, 12
    4347        PUSHBUTTON      "~New...", IDPB_NEWFILE, 46, 2, 40, 12
  • trunk/classes/res/en/mmfind_en.rc

    r2 r4  
    88IDSTR_TYPEIMAGE       "Image"
    99IDSTR_TYPEVIDEO       "Video"
    10 IDSTR_AUDIOINFOTEXT   "Play time:\t%02d:%02d\n\nSamplerate:\t%d\n\nBits per sample:\t%d\n\nChannels:\t%d"
     10IDSTR_AUDIOINFOTEXT   "Play time:\t%02d:%02d\x0a\x0aSamplerate:\t%d\x0a\x0aBits per sample:\t%d\x0a\x0aChannels:\t%d"
    1111IDSTR_NOMMTEMPLATEFLDRTITLE "Error during file creation"
    1212IDSTR_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  
    3838        CTEXT           "Anteprima non disponibile", IDST_NOPREVIEWAVAILABLE, 251, 42, 78, 33,
    3939                        DT_WORDBREAK | NOT WS_VISIBLE
    40         LTEXT           "", IDST_AUDIOINFO, 253, 21, 75, 62, DT_WORDBREAK | NOT
     40        LTEXT           "", IDST_AUDIOINFO, 253, 41, 75, 42, DT_WORDBREAK | NOT
    4141                        WS_VISIBLE
    4242        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
    4347        DEFPUSHBUTTON   "~OK", DID_OK, 3, 2, 40, 12
    4448        PUSHBUTTON      "~Nuovo", IDPB_NEWFILE, 46, 2, 40, 12
  • trunk/classes/res/it/mmfind_it.rc

    r2 r4  
    88IDSTR_TYPEIMAGE       "Immagine"
    99IDSTR_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"
     10IDSTR_AUDIOINFOTEXT   "Tempo trascorso:\t%02d:%02d\x0a\x0aFrequenza campionamento:\t%d\x0a\x0aBit per campione:\t%d\x0a\x0aCanali:\t%d"
    1111IDSTR_NOMMTEMPLATEFLDRTITLE "Errore durante la creazione del file"
    1212IDSTR_NOMMTEMPLATEFLDR "Impossibile trovare il modello per la cartella multimedia. Potrebbe essersi persa la ID oggetto <MMPM2_MMTEMPLATEFOLDER>."
  • trunk/classes/res/makefile

    r2 r4  
    33include ../../make.inc
    44
    5 INC             = ../include
    65CURDIR          = .
    76
    87.PHONY:         clean cleaner clean_nlv
    98
    10 all:    nlv
    11         cd ./common_res && make
     9all:    nlv common_res
    1210
    1311nlv:
    14         @echo "[35;1;mCreating laguage files.[0;m"
     12        @echo "[35;1;mCreating laguage resources.[0;m"
    1513        @for i in $(LANGUAGES); \
    1614        do \
     
    1816                cd $(CURDIR)/$$i && make LANGUAGE=_$$i && cd .. ; \
    1917        done
     18
     19common_res:
     20        cd ./common_res && make
    2021
    2122clean_nlv:
  • trunk/classes/res/nl/mmfind_nl.dlg

    r2 r4  
    3737        CTEXT           "No preview available", IDST_NOPREVIEWAVAILABLE, 251, 42, 78, 33,
    3838                        DT_WORDBREAK | NOT WS_VISIBLE
    39         LTEXT           "", IDST_AUDIOINFO, 253, 21, 75, 62, DT_WORDBREAK | NOT
     39        LTEXT           "", IDST_AUDIOINFO, 253, 41, 75, 42, DT_WORDBREAK | NOT
    4040                        WS_VISIBLE
    4141        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
    4246        DEFPUSHBUTTON   "~OK", DID_OK, 3, 2, 40, 12
    4347        PUSHBUTTON      "~New...", IDPB_NEWFILE, 46, 2, 40, 12
  • trunk/classes/res/nl/mmfind_nl.rc

    r2 r4  
    88IDSTR_TYPEIMAGE       "Image"
    99IDSTR_TYPEVIDEO       "Video"
    10 IDSTR_AUDIOINFOTEXT   "Play time:\t%02d:%02d\n\nSamplerate:\t%d\n\nBits per sample:\t%d\n\nChannels:\t%d"
     10IDSTR_AUDIOINFOTEXT   "Play time:\t%02d:%02d\x0a\x0aSamplerate:\t%d\x0a\x0aBits per sample:\t%d\x0a\x0aChannels:\t%d"
    1111IDSTR_NOMMTEMPLATEFLDRTITLE "Error during file creation"
    1212IDSTR_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.