Changeset 551 for trunk/dll/viewinf.c


Ignore:
Timestamp:
Feb 28, 2007, 2:33:51 AM (18 years ago)
Author:
Gregg Young
Message:

Indentation cleanup

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/viewinf.c

    r533 r551  
    3838#pragma alloc_text(VIEWINFS,FillListboxThread,ViewInfProc)
    3939
    40 typedef struct {
     40typedef struct
     41{
    4142  USHORT size;
    4243  USHORT help;
    43   HWND   hwnd;
    44 } DUMMY;
    45 
    46 
    47 static VOID FillListboxThread(VOID *args)
     44  HWND hwnd;
     45}
     46DUMMY;
     47
     48static VOID FillListboxThread(VOID * args)
    4849{
    4950  HWND hwnd;
    50   DUMMY *dummy = (DUMMY *)args;
    51   HAB  hab2;
    52   HMQ  hmq2;
     51  DUMMY *dummy = (DUMMY *) args;
     52  HAB hab2;
     53  HMQ hmq2;
    5354  BOOL repeating = FALSE;
    5455
    55   if(!dummy)
     56  if (!dummy)
    5657    return;
    5758  hwnd = dummy->hwnd;
    5859  hab2 = WinInitialize(0);
    59   if(hab2) {
    60     hmq2 = WinCreateMsgQueue(hab2,0);
    61     if(hmq2) {
    62 
    63       CHAR *env,*p,*holdenv;
    64 
    65       WinCancelShutdown(hmq2,TRUE);
     60  if (hab2) {
     61    hmq2 = WinCreateMsgQueue(hab2, 0);
     62    if (hmq2) {
     63
     64      CHAR *env, *p, *holdenv;
     65
     66      WinCancelShutdown(hmq2, TRUE);
    6667      IncrThreadUsage();
    6768      priority_normal();
    68       if(!dummy->help)
    69         env = getenv("BOOKSHELF");
     69      if (!dummy->help)
     70        env = getenv("BOOKSHELF");
    7071      else
    71         env = getenv("HELP");
    72       if(!env) {
    73         saymsg(MB_CANCEL,
    74                hwnd,
    75                GetPString(IDS_SYSERRORTEXT),
    76                GetPString(IDS_ENVPATHERRORTEXT),
    77                (dummy->help) ? "HELP" : "BOOKSHELF",
    78                (dummy->help) ? ".HLP" : ".INF");
    79         goto NoEnv;
     72        env = getenv("HELP");
     73      if (!env) {
     74        saymsg(MB_CANCEL,
     75               hwnd,
     76               GetPString(IDS_SYSERRORTEXT),
     77               GetPString(IDS_ENVPATHERRORTEXT),
     78               (dummy->help) ? "HELP" : "BOOKSHELF",
     79               (dummy->help) ? ".HLP" : ".INF");
     80        goto NoEnv;
    8081      }
    8182      else {
    82         holdenv = xmalloc(strlen(env) + 2L,pszSrcFile,__LINE__);
    83         if (holdenv) {
    84           strcpy(holdenv,env);
    85 Repeat:
    86           if(holdenv[strlen(holdenv) - 1] != ';')
    87             strcat(holdenv,";");
    88           p = strtok(holdenv,";");
    89           while(p) {
    90             bstrip(p);
    91             if(*p) {
    92 
    93               CHAR         mask[CCHMAXPATH],*enddir,text[CCHMAXPATH * 2];
    94               FILEFINDBUF3 ffb;
    95               HDIR         hdir;
    96               ULONG        nm;
    97 
    98               strcpy(mask,p);
    99               if(mask[strlen(mask) - 1] != '\\')
    100                 strcat(mask,"\\");
    101               enddir = mask + strlen(mask);
    102               if(dummy->help)
    103                 strcat(mask,"*.HLP");
    104               else
    105                 strcat(mask,"*.INF");
    106               hdir = HDIR_CREATE;
    107               nm = 1L;
    108               DosError(FERR_DISABLEHARDERR);
    109               if(!DosFindFirst(mask,&hdir,FILE_NORMAL | FILE_ARCHIVED,
    110                                &ffb,sizeof(ffb),&nm,FIL_STANDARD)) {
    111                 do {
    112                   priority_normal();
    113                   strcpy(enddir,ffb.achName);
    114                   {
    115                     FILE *fp;
    116                     CHAR  title[CCHMAXPATH];
    117 
    118                     *title = 0;
    119                     fp = _fsopen(mask,"rb",SH_DENYNO);
    120                     if(fp) {
    121                       fread(title,1,3,fp);
    122                       if(*title != 'H' || title[1] != 'S' || title[2] != 'P') {
    123                         fclose(fp);
    124                         goto Continue;
    125                       }
    126                       *title = 0;
    127                       fseek(fp,107L,SEEK_SET);
    128                       fread(title,1,CCHMAXPATH - 2,fp);
    129                       title[CCHMAXPATH - 3] = 0;
    130                       bstrip(title);
    131                       fclose(fp);
    132                     }
    133                     p = strchr(ffb.achName,'.');
    134                     if(p)
    135                       *p = 0;
    136                     sprintf(text,
    137                             "%-10.10s  %-42.42s > %s",
    138                             ffb.achName,
    139                             title,
    140                             mask);
    141                   }
    142                   if(!WinIsWindow(hab2,hwnd))
    143                     break;
    144                   WinSendDlgItemMsg(hwnd,
    145                                     VINF_LISTBOX,
    146                                     LM_INSERTITEM,
    147                                     MPFROM2SHORT(LIT_SORTASCENDING,0),
    148                                     MPFROMP(text));
    149 Continue:
    150                   nm = 1L;
    151                 } while(!DosFindNext(hdir,&ffb,sizeof(ffb),&nm));
    152                 DosFindClose(hdir);
    153                 priority_normal();
    154               }
    155             }
    156             if(!WinIsWindow(hab2,hwnd))
    157               break;
    158             p = strtok(NULL,";");
    159           }
    160           free(holdenv);
    161 NoEnv:
    162           if(WinIsWindow(hab2,hwnd) && !repeating) {
    163 
    164             ULONG size;
    165             CHAR  *key = "INFPaths";
    166 
    167             if(dummy->help)
    168               key = "HLPPaths";
    169             repeating = TRUE;
    170             if(PrfQueryProfileSize(fmprof,
    171                                    FM3Str,
    172                                    key,
    173                                    &size) &&
    174                size) {
    175               holdenv = xmalloc(size + 2L,pszSrcFile,__LINE__);
    176               if (holdenv) {
    177                 if (!PrfQueryProfileData(fmprof,FM3Str,key,holdenv,&size)) {
    178                   Win_Error(hwnd,hwnd,pszSrcFile,__LINE__,"PrfQueryProfileData");
    179                   free(holdenv);
     83        holdenv = xmalloc(strlen(env) + 2L, pszSrcFile, __LINE__);
     84        if (holdenv) {
     85          strcpy(holdenv, env);
     86        Repeat:
     87          if (holdenv[strlen(holdenv) - 1] != ';')
     88            strcat(holdenv, ";");
     89          p = strtok(holdenv, ";");
     90          while (p) {
     91            bstrip(p);
     92            if (*p) {
     93
     94              CHAR mask[CCHMAXPATH], *enddir, text[CCHMAXPATH * 2];
     95              FILEFINDBUF3 ffb;
     96              HDIR hdir;
     97              ULONG nm;
     98
     99              strcpy(mask, p);
     100              if (mask[strlen(mask) - 1] != '\\')
     101                strcat(mask, "\\");
     102              enddir = mask + strlen(mask);
     103              if (dummy->help)
     104                strcat(mask, "*.HLP");
     105              else
     106                strcat(mask, "*.INF");
     107              hdir = HDIR_CREATE;
     108              nm = 1L;
     109              DosError(FERR_DISABLEHARDERR);
     110              if (!DosFindFirst(mask, &hdir, FILE_NORMAL | FILE_ARCHIVED,
     111                                &ffb, sizeof(ffb), &nm, FIL_STANDARD)) {
     112                do {
     113                  priority_normal();
     114                  strcpy(enddir, ffb.achName);
     115                  {
     116                    FILE *fp;
     117                    CHAR title[CCHMAXPATH];
     118
     119                    *title = 0;
     120                    fp = _fsopen(mask, "rb", SH_DENYNO);
     121                    if (fp) {
     122                      fread(title, 1, 3, fp);
     123                      if (*title != 'H' || title[1] != 'S' || title[2] != 'P') {
     124                        fclose(fp);
     125                        goto Continue;
     126                      }
     127                      *title = 0;
     128                      fseek(fp, 107L, SEEK_SET);
     129                      fread(title, 1, CCHMAXPATH - 2, fp);
     130                      title[CCHMAXPATH - 3] = 0;
     131                      bstrip(title);
     132                      fclose(fp);
     133                    }
     134                    p = strchr(ffb.achName, '.');
     135                    if (p)
     136                      *p = 0;
     137                    sprintf(text,
     138                            "%-10.10s  %-42.42s > %s",
     139                            ffb.achName, title, mask);
     140                  }
     141                  if (!WinIsWindow(hab2, hwnd))
     142                    break;
     143                  WinSendDlgItemMsg(hwnd,
     144                                    VINF_LISTBOX,
     145                                    LM_INSERTITEM,
     146                                    MPFROM2SHORT(LIT_SORTASCENDING, 0),
     147                                    MPFROMP(text));
     148                Continue:
     149                  nm = 1L;
     150                } while (!DosFindNext(hdir, &ffb, sizeof(ffb), &nm));
     151                DosFindClose(hdir);
     152                priority_normal();
     153              }
     154            }
     155            if (!WinIsWindow(hab2, hwnd))
     156              break;
     157            p = strtok(NULL, ";");
     158          }
     159          free(holdenv);
     160        NoEnv:
     161          if (WinIsWindow(hab2, hwnd) && !repeating) {
     162
     163            ULONG size;
     164            CHAR *key = "INFPaths";
     165
     166            if (dummy->help)
     167              key = "HLPPaths";
     168            repeating = TRUE;
     169            if (PrfQueryProfileSize(fmprof, FM3Str, key, &size) && size) {
     170              holdenv = xmalloc(size + 2L, pszSrcFile, __LINE__);
     171              if (holdenv) {
     172                if (!PrfQueryProfileData(fmprof, FM3Str, key, holdenv, &size)) {
     173                  Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
     174                            "PrfQueryProfileData");
     175                  free(holdenv);
    180176                }
    181                 else
    182                   goto Repeat;
    183               }
    184             }
    185           }
    186         }
     177                else
     178                  goto Repeat;
     179              }
     180            }
     181          }
     182        }
    187183      }
    188184      WinDestroyMsgQueue(hmq2);
    189185    }
    190     PostMsg(hwnd,UM_CONTAINER_FILLED,MPVOID,MPVOID);
     186    PostMsg(hwnd, UM_CONTAINER_FILLED, MPVOID, MPVOID);
    191187    DecrThreadUsage();
    192188    WinTerminate(hab2);
     
    195191}
    196192
    197 
    198 MRESULT EXPENTRY ViewInfProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
     193MRESULT EXPENTRY ViewInfProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
    199194{
    200   static HWND     hwndMe = (HWND)0;
    201   static BOOL     help = FALSE;
    202   static BOOL     threaddone = TRUE;
    203   static LONG     ypos = 0;
    204   static HPOINTER hptrIcon = (HPOINTER)0;
    205 
    206   switch(msg) {
    207     case WM_INITDLG:
    208       WinSendDlgItemMsg(hwnd,VINF_ENTRY,EM_SETTEXTLIMIT,
    209                         MPFROM2SHORT(1000,0),MPVOID);
    210       WinSendDlgItemMsg(hwnd,VINF_TOPIC,EM_SETTEXTLIMIT,
    211                         MPFROM2SHORT(CCHMAXPATH * 2,0),MPVOID);
    212       if(hwndMe) {
    213         WinSetWindowPos(hwndMe,HWND_TOP,0,0,0,0,SWP_RESTORE | SWP_ZORDER |
    214                         SWP_ACTIVATE);
    215         WinDismissDlg(hwnd,0);
    216         break;
    217       }
    218       help = (mp2 != (MPARAM)0);
    219       if (help) {
    220 
    221         SWP swp;
    222 
    223         WinQueryWindowPos(WinWindowFromID(hwnd,
    224                                           VINF_LISTBOX),
    225                           &swp);
    226         WinDestroyWindow(WinWindowFromID(hwnd,
    227                                          VINF_LISTBOX));
    228         if (!WinCreateWindow(hwnd,
    229                         WC_LISTBOX,
    230                         (PSZ)NULL,
    231                         WS_VISIBLE | LS_HORZSCROLL,
    232                         swp.x,
    233                         swp.y,
    234                         swp.cx,
    235                         swp.cy,
    236                         hwnd,
    237                         HWND_TOP,
    238                         VINF_LISTBOX,
    239                         NULL,
    240                         NULL))
    241         {
    242           Win_Error2(hwnd,hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);
    243         }
     195  static HWND hwndMe = (HWND) 0;
     196  static BOOL help = FALSE;
     197  static BOOL threaddone = TRUE;
     198  static LONG ypos = 0;
     199  static HPOINTER hptrIcon = (HPOINTER) 0;
     200
     201  switch (msg) {
     202  case WM_INITDLG:
     203    WinSendDlgItemMsg(hwnd, VINF_ENTRY, EM_SETTEXTLIMIT,
     204                      MPFROM2SHORT(1000, 0), MPVOID);
     205    WinSendDlgItemMsg(hwnd, VINF_TOPIC, EM_SETTEXTLIMIT,
     206                      MPFROM2SHORT(CCHMAXPATH * 2, 0), MPVOID);
     207    if (hwndMe) {
     208      WinSetWindowPos(hwndMe, HWND_TOP, 0, 0, 0, 0, SWP_RESTORE | SWP_ZORDER |
     209                      SWP_ACTIVATE);
     210      WinDismissDlg(hwnd, 0);
     211      break;
     212    }
     213    help = (mp2 != (MPARAM) 0);
     214    if (help) {
     215
     216      SWP swp;
     217
     218      WinQueryWindowPos(WinWindowFromID(hwnd, VINF_LISTBOX), &swp);
     219      WinDestroyWindow(WinWindowFromID(hwnd, VINF_LISTBOX));
     220      if (!WinCreateWindow(hwnd,
     221                           WC_LISTBOX,
     222                           (PSZ) NULL,
     223                           WS_VISIBLE | LS_HORZSCROLL,
     224                           swp.x,
     225                           swp.y,
     226                           swp.cx,
     227                           swp.cy,
     228                           hwnd, HWND_TOP, VINF_LISTBOX, NULL, NULL)) {
     229        Win_Error2(hwnd, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW);
     230      }
     231      else {
     232        WinSetPresParam(WinWindowFromID(hwnd, VINF_LISTBOX),
     233                        PP_FONTNAMESIZE,
     234                        strlen(GetPString(IDS_10SYSTEMMONOTEXT)) + 1,
     235                        (PVOID) GetPString(IDS_10SYSTEMMONOTEXT));
     236      }
     237      WinSetWindowText(hwnd, GetPString(IDS_VIEWHELPFILESTEXT));
     238      WinShowWindow(WinWindowFromID(hwnd, VINF_SRCH), FALSE);
     239      WinShowWindow(WinWindowFromID(hwnd, VINF_FILTER), FALSE);
     240      WinShowWindow(WinWindowFromID(hwnd, VINF_TOPIC), FALSE);
     241      WinShowWindow(WinWindowFromID(hwnd, VINF_TOPICHDR), FALSE);
     242    }
     243    hptrIcon = WinLoadPointer(HWND_DESKTOP, FM3ModHandle, VINF_FRAME);
     244    WinDefDlgProc(hwnd, WM_SETICON, MPFROMLONG(hptrIcon), MPVOID);
     245    hwndMe = hwnd;
     246    PostMsg(hwnd, UM_STRETCH, MPVOID, MPVOID);
     247    PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     248    break;
     249
     250  case UM_RESCAN:
     251    WinSendDlgItemMsg(hwnd, VINF_LISTBOX, LM_DELETEALL, MPVOID, MPVOID);
     252    {
     253      DUMMY *d;
     254
     255      d = xmallocz(sizeof(DUMMY), pszSrcFile, __LINE__);
     256      if (!d) {
     257        WinDismissDlg(hwnd, 0);
     258        return 0;
     259      }
     260      else {
     261        d->size = sizeof(DUMMY);
     262        d->hwnd = hwnd;
     263        if (help)
     264          d->help = 1;
     265        if (_beginthread(FillListboxThread, NULL, 65536, (PVOID) d) == -1) {
     266          Runtime_Error(pszSrcFile, __LINE__,
     267                        GetPString(IDS_COULDNTSTARTTHREADTEXT));
     268          free(d);
     269          WinDismissDlg(hwnd, 0);
     270          return 0;
     271        }
     272        WinEnableWindow(WinWindowFromID(hwnd, DID_CANCEL), FALSE);
     273        threaddone = FALSE;
     274      }
     275    }
     276    return 0;
     277
     278  case UM_CONTAINER_FILLED:
     279    if (!(SHORT) WinSendDlgItemMsg(hwnd,
     280                                   VINF_LISTBOX,
     281                                   LM_QUERYITEMCOUNT, MPVOID, MPVOID)) {
     282      saymsg(MB_CANCEL,
     283             hwnd,
     284             GetPString(IDS_ERRORTEXT), GetPString(IDS_NOFILESFOUNDTEXT));
     285      hwndMe = (HWND) 0;
     286      WinDismissDlg(hwnd, 0);
     287    }
     288    WinEnableWindow(WinWindowFromID(hwnd, DID_CANCEL), TRUE);
     289    threaddone = TRUE;
     290    return 0;
     291
     292  case WM_CONTROL:
     293    switch (SHORT1FROMMP(mp1)) {
     294    case VINF_LISTBOX:
     295      switch (SHORT2FROMMP(mp1)) {
     296      case LN_ENTER:
     297        PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID);
     298        break;
     299      }
     300      break;
     301    case VINF_ENTRY:
     302      switch (SHORT2FROMMP(mp1)) {
     303      case EN_CHANGE:
     304        {
     305          SHORT sSelect;
     306          CHAR szBuffer[CCHMAXPATH];
     307
     308          WinQueryDlgItemText(hwnd, VINF_ENTRY, CCHMAXPATH, szBuffer);
     309          bstrip(szBuffer);
     310          sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
     311                                              VINF_LISTBOX,
     312                                              LM_SEARCHSTRING,
     313                                              MPFROM2SHORT(LSS_SUBSTRING,
     314                                                           LIT_FIRST),
     315                                              MPFROMP(szBuffer));
     316          if (sSelect >= 0)
     317            WinSendDlgItemMsg(hwnd,
     318                              VINF_LISTBOX,
     319                              LM_SETTOPINDEX,
     320                              MPFROM2SHORT(sSelect, 0), MPVOID);
     321        }
     322        break;
     323      }
     324      break;
     325    }
     326    return 0;
     327
     328  case WM_ADJUSTWINDOWPOS:
     329    PostMsg(hwnd, UM_STRETCH, MPVOID, MPVOID);
     330    break;
     331
     332  case UM_STRETCH:
     333    {
     334      SWP swpC, swp;
     335
     336      WinQueryWindowPos(hwnd, &swp);
     337      if (!(swp.fl & (SWP_HIDE | SWP_MINIMIZE))) {
     338        WinQueryWindowPos(WinWindowFromID(hwnd, VINF_LISTBOX), &swpC);
     339        if (!ypos)
     340          ypos = swpC.y;
     341        WinSetWindowPos(WinWindowFromID(hwnd, VINF_LISTBOX), HWND_TOP,
     342                        SysVal(SV_CXSIZEBORDER),
     343                        ypos,
     344                        swp.cx - (SysVal(SV_CXSIZEBORDER) * 2),
     345                        (swp.cy - ypos) - (SysVal(SV_CYTITLEBAR) +
     346                                           SysVal(SV_CYSIZEBORDER)),
     347                        SWP_MOVE | SWP_SIZE);
     348      }
     349    }
     350    return 0;
     351
     352  case WM_COMMAND:
     353    switch (SHORT1FROMMP(mp1)) {
     354    case VINF_RESCAN:
     355      PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     356      break;
     357
     358    case VINF_SRCH:
     359      {
     360        SHORT sSelect, sLast = LIT_FIRST;
     361        CHAR szBuffer[CCHMAXPATH];
     362
     363        *szBuffer = 0;
     364        WinQueryDlgItemText(hwnd, VINF_ENTRY, CCHMAXPATH, szBuffer);
     365        rstrip(szBuffer);
     366        if (!*szBuffer) {
     367          sLast = (SHORT) WinSendDlgItemMsg(hwnd,
     368                                            VINF_LISTBOX,
     369                                            LM_QUERYITEMCOUNT,
     370                                            MPVOID, MPVOID);
     371          for (sSelect = 0; sSelect < sLast; sSelect++)
     372            WinSendDlgItemMsg(hwnd,
     373                              VINF_LISTBOX,
     374                              LM_SELECTITEM,
     375                              MPFROM2SHORT(sSelect, 0),
     376                              MPFROM2SHORT(FALSE, 0));
     377          break;
     378        }
     379        for (;;) {
     380          sSelect = (SHORT) WinSendDlgItemMsg(hwnd, VINF_LISTBOX,
     381                                              LM_SEARCHSTRING,
     382                                              MPFROM2SHORT(LSS_SUBSTRING,
     383                                                           sLast),
     384                                              MPFROMP(szBuffer));
     385          if (sSelect <= sLast)
     386            break;
     387          if (sSelect >= 0)
     388            WinSendDlgItemMsg(hwnd,
     389                              VINF_LISTBOX,
     390                              LM_SELECTITEM,
     391                              MPFROM2SHORT(sSelect, 0),
     392                              MPFROM2SHORT(TRUE, 0));
     393          else
     394            break;
     395          sLast = sSelect;
     396        }
     397      }
     398      break;
     399
     400    case VINF_FILTER:
     401      {
     402        SHORT sSelect, sTotal;
     403
     404        sTotal = (SHORT) WinSendDlgItemMsg(hwnd,
     405                                           VINF_LISTBOX,
     406                                           LM_QUERYITEMCOUNT, MPVOID, MPVOID);
     407        sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
     408                                            VINF_LISTBOX,
     409                                            LM_QUERYSELECTION,
     410                                            MPFROM2SHORT(LIT_FIRST, 0),
     411                                            MPVOID);
     412        if (sSelect == LIT_NONE) {
     413          DosBeep(50, 100);
     414          break;
     415        }
     416#ifdef BUGFIXED
     417        sSelect = 0;
     418        while (sSelect < sTotal) {
     419          if (!WinSendDlgItemMsg(hwnd,
     420                                 VINF_LISTBOX,
     421                                 LM_SELECTITEM,
     422                                 MPFROM2SHORT(sSelect, 0),
     423                                 MPFROM2SHORT(FALSE, 0))) {
     424            WinSendDlgItemMsg(hwnd,
     425                              VINF_LISTBOX,
     426                              LM_DELETEITEM,
     427                              MPFROM2SHORT(sSelect, 0), MPVOID);
     428            sTotal--;
     429          }
     430          else
     431            sSelect++;
     432        }
     433#else // !BUGIFIXED
     434        for (sSelect = 0; sSelect < sTotal; sSelect++)
     435          WinSendDlgItemMsg(hwnd,
     436                            VINF_LISTBOX,
     437                            LM_SETITEMHANDLE,
     438                            MPFROM2SHORT(sSelect, 0), MPVOID);
     439        sSelect = LIT_FIRST;
     440        for (;;) {
     441          sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
     442                                              VINF_LISTBOX,
     443                                              LM_QUERYSELECTION,
     444                                              MPFROM2SHORT(sSelect, 0),
     445                                              MPVOID);
     446          if (sSelect >= 0)
     447            WinSendDlgItemMsg(hwnd,
     448                              VINF_LISTBOX,
     449                              LM_SETITEMHANDLE,
     450                              MPFROM2SHORT(sSelect, 0), MPFROMLONG(1L));
     451          else
     452            break;
     453        }
     454        for (sSelect = 0; sSelect < sTotal; sSelect++)
     455          WinSendDlgItemMsg(hwnd,
     456                            VINF_LISTBOX,
     457                            LM_SELECTITEM,
     458                            MPFROM2SHORT(sSelect, 0), MPFROM2SHORT(FALSE, 0));
     459        sSelect = 0;
     460        while (sSelect < sTotal) {
     461          if (!WinSendDlgItemMsg(hwnd,
     462                                 VINF_LISTBOX,
     463                                 LM_QUERYITEMHANDLE,
     464                                 MPFROM2SHORT(sSelect, 0), MPVOID)) {
     465            WinSendDlgItemMsg(hwnd,
     466                              VINF_LISTBOX,
     467                              LM_DELETEITEM,
     468                              MPFROM2SHORT(sSelect, 0), MPVOID);
     469            sTotal--;
     470          }
     471          else
     472            sSelect++;
     473        }
     474#endif // BUGFIXED
     475      }
     476      break;
     477
     478    case VINF_DIRS:
     479      {
     480        CHAR szBuffer[1001], *key = "INFPaths";
     481
     482        if (help)
     483          key = "HLPPaths";
     484        *szBuffer = 0;
     485        WinQueryDlgItemText(hwnd, VINF_ENTRY, 1000, szBuffer);
     486        bstrip(szBuffer);
     487        PrfWriteProfileData(fmprof,
     488                            FM3Str,
     489                            key,
     490                            (*szBuffer) ? szBuffer : NULL, strlen(szBuffer));
     491        PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     492      }
     493      break;
     494
     495    case DID_CANCEL:
     496      hwndMe = (HWND) 0;
     497      WinDismissDlg(hwnd, 0);
     498      break;
     499
     500    case DID_OK:
     501      {
     502        SHORT sSelect;
     503        CHAR text[CCHMAXPATH * 2], filename[CCHMAXPATH], *p;
     504        FILE *fp;
     505        BOOL notfirst = FALSE;
     506
     507        sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
     508                                            VINF_LISTBOX,
     509                                            LM_QUERYSELECTION,
     510                                            MPFROM2SHORT(LIT_FIRST, 0),
     511                                            MPVOID);
     512        if (sSelect < 0) {
     513          DosBeep(50, 100);
     514        }
    244515        else {
    245           WinSetPresParam(WinWindowFromID(hwnd,VINF_LISTBOX),
    246                           PP_FONTNAMESIZE,
    247                           strlen(GetPString(IDS_10SYSTEMMONOTEXT)) + 1,
    248                           (PVOID)GetPString(IDS_10SYSTEMMONOTEXT));
    249         }
    250         WinSetWindowText(hwnd,
    251                          GetPString(IDS_VIEWHELPFILESTEXT));
    252         WinShowWindow(WinWindowFromID(hwnd,VINF_SRCH),
    253                       FALSE);
    254         WinShowWindow(WinWindowFromID(hwnd,VINF_FILTER),
    255                       FALSE);
    256         WinShowWindow(WinWindowFromID(hwnd,VINF_TOPIC),
    257                       FALSE);
    258         WinShowWindow(WinWindowFromID(hwnd,VINF_TOPICHDR),
    259                       FALSE);
    260       }
    261       hptrIcon = WinLoadPointer(HWND_DESKTOP,FM3ModHandle,VINF_FRAME);
    262       WinDefDlgProc(hwnd,WM_SETICON,MPFROMLONG(hptrIcon),MPVOID);
    263       hwndMe = hwnd;
    264       PostMsg(hwnd,UM_STRETCH,MPVOID,MPVOID);
    265       PostMsg(hwnd,UM_RESCAN,MPVOID,MPVOID);
    266       break;
    267 
    268     case UM_RESCAN:
    269       WinSendDlgItemMsg(hwnd,
    270                         VINF_LISTBOX,
    271                         LM_DELETEALL,
    272                         MPVOID,
    273                         MPVOID);
    274       {
    275         DUMMY *d;
    276 
    277         d = xmallocz(sizeof(DUMMY),pszSrcFile,__LINE__);
    278         if (!d) {
    279           WinDismissDlg(hwnd,0);
    280           return 0;
    281         }
    282         else {
    283           d->size = sizeof(DUMMY);
    284           d->hwnd = hwnd;
    285           if (help)
    286             d->help = 1;
    287           if(_beginthread(FillListboxThread,NULL,65536,(PVOID)d) == -1) {
    288             Runtime_Error(pszSrcFile, __LINE__, GetPString(IDS_COULDNTSTARTTHREADTEXT));
    289             free(d);
    290             WinDismissDlg(hwnd,0);
    291             return 0;
    292           }
    293           WinEnableWindow(WinWindowFromID(hwnd,DID_CANCEL),FALSE);
    294           threaddone = FALSE;
    295         }
    296       }
     516          if (help) {
     517            *text = 0;
     518            WinSendDlgItemMsg(hwnd,
     519                              VINF_LISTBOX,
     520                              LM_QUERYITEMTEXT,
     521                              MPFROM2SHORT(sSelect, CCHMAXPATH),
     522                              MPFROMP(text));
     523            p = strchr(text, '>');
     524            if (!p) {
     525              DosBeep(50, 100);
     526              break;
     527            }
     528            p++;
     529            bstrip(p);
     530            if (!*p)
     531              DosBeep(50, 100);
     532            else
     533              ViewHelp(p);
     534            break;
     535          }
     536          save_dir2(filename);
     537          if (filename[strlen(filename) - 1] != '\\')
     538            strcat(filename, "\\");
     539          strcat(filename, "FM2VINF.CMD");
     540          fp = xfopen(filename, "w", pszSrcFile, __LINE__);
     541          if (fp) {
     542            fprintf(fp, "@ECHO OFF\nSET FM2REF=");
     543            while (sSelect >= 0) {
     544              *text = 0;
     545              WinSendDlgItemMsg(hwnd,
     546                                VINF_LISTBOX,
     547                                LM_QUERYITEMTEXT,
     548                                MPFROM2SHORT(sSelect,
     549                                             CCHMAXPATH), MPFROMP(text));
     550              p = strchr(text, '>');
     551              if (p) {
     552                p++;
     553                bstrip(p);
     554                if (*p) {
     555                  if (notfirst)
     556                    fprintf(fp, "+");
     557                  notfirst = TRUE;
     558                  fprintf(fp, "%s", p);
     559                }
     560              }
     561              sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
     562                                                  VINF_LISTBOX,
     563                                                  LM_QUERYSELECTION,
     564                                                  MPFROM2SHORT(sSelect, 0),
     565                                                  MPVOID);
     566            }                           // while
     567            *text = 0;
     568            WinQueryDlgItemText(hwnd, VINF_TOPIC, CCHMAXPATH * 2, text);
     569            bstrip(text);
     570            fprintf(fp,
     571                    "\nVIEW FM2REF%s%s\nDEL %s\n",
     572                    (*text) ? " " : NullStr, text, filename);
     573            fclose(fp);
     574            runemf2(SEPARATE | WINDOWED | MINIMIZED |
     575                    BACKGROUND | INVISIBLE,
     576                    hwnd,
     577                    NULL, NULL, "%s /C %s", GetCmdSpec(FALSE), filename);
     578          }
     579        }
     580      }
     581      break;
     582
     583    case IDM_HELP:
     584      if (hwndHelp) {
     585        if (help)
     586          WinSendMsg(hwndHelp,
     587                     HM_DISPLAY_HELP,
     588                     MPFROM2SHORT(HELP_VIEWHELPS, 0),
     589                     MPFROMSHORT(HM_RESOURCEID));
     590        else
     591          WinSendMsg(hwndHelp,
     592                     HM_DISPLAY_HELP,
     593                     MPFROM2SHORT(HELP_VIEWINF, 0),
     594                     MPFROMSHORT(HM_RESOURCEID));
     595      }
     596      break;
     597    }
     598    return 0;
     599
     600  case WM_CLOSE:
     601    if (!threaddone)
    297602      return 0;
    298 
    299     case UM_CONTAINER_FILLED:
    300       if(!(SHORT)WinSendDlgItemMsg(hwnd,
    301                                    VINF_LISTBOX,
    302                                    LM_QUERYITEMCOUNT,
    303                                    MPVOID,
    304                                    MPVOID)) {
    305         saymsg(MB_CANCEL,
    306                hwnd,
    307                GetPString(IDS_ERRORTEXT),
    308                GetPString(IDS_NOFILESFOUNDTEXT));
    309         hwndMe = (HWND)0;
    310         WinDismissDlg(hwnd,0);
    311       }
    312       WinEnableWindow(WinWindowFromID(hwnd,DID_CANCEL),TRUE);
    313       threaddone = TRUE;
    314       return 0;
    315 
    316     case WM_CONTROL:
    317       switch(SHORT1FROMMP(mp1)) {
    318         case VINF_LISTBOX:
    319           switch(SHORT2FROMMP(mp1)) {
    320             case LN_ENTER:
    321               PostMsg(hwnd,
    322                       WM_COMMAND,
    323                       MPFROM2SHORT(DID_OK,0),
    324                       MPVOID);
    325               break;
    326           }
    327           break;
    328         case VINF_ENTRY:
    329           switch(SHORT2FROMMP(mp1)) {
    330             case EN_CHANGE:
    331               {
    332                 SHORT sSelect;
    333                 CHAR  szBuffer[CCHMAXPATH];
    334 
    335                 WinQueryDlgItemText(hwnd,
    336                                     VINF_ENTRY,
    337                                     CCHMAXPATH,
    338                                     szBuffer);
    339                 bstrip(szBuffer);
    340                 sSelect = (SHORT)WinSendDlgItemMsg(hwnd,
    341                                                    VINF_LISTBOX,
    342                                                    LM_SEARCHSTRING,
    343                                                    MPFROM2SHORT(LSS_SUBSTRING,
    344                                                                 LIT_FIRST),
    345                                                    MPFROMP(szBuffer));
    346                 if(sSelect >= 0)
    347                   WinSendDlgItemMsg(hwnd,
    348                                     VINF_LISTBOX,
    349                                     LM_SETTOPINDEX,
    350                                     MPFROM2SHORT(sSelect,0),
    351                                     MPVOID);
    352               }
    353               break;
    354           }
    355           break;
    356       }
    357       return 0;
    358 
    359     case WM_ADJUSTWINDOWPOS:
    360       PostMsg(hwnd,UM_STRETCH,MPVOID,MPVOID);
    361       break;
    362 
    363     case UM_STRETCH:
    364       {
    365         SWP swpC,swp;
    366 
    367         WinQueryWindowPos(hwnd,&swp);
    368         if(!(swp.fl & (SWP_HIDE | SWP_MINIMIZE))) {
    369           WinQueryWindowPos(WinWindowFromID(hwnd,VINF_LISTBOX),&swpC);
    370           if(!ypos)
    371             ypos = swpC.y;
    372           WinSetWindowPos(WinWindowFromID(hwnd,VINF_LISTBOX),HWND_TOP,
    373                           SysVal(SV_CXSIZEBORDER),
    374                           ypos,
    375                           swp.cx - (SysVal(SV_CXSIZEBORDER) * 2),
    376                           (swp.cy - ypos) - (SysVal(SV_CYTITLEBAR) +
    377                                                SysVal(SV_CYSIZEBORDER)),
    378                           SWP_MOVE | SWP_SIZE);
    379         }
    380       }
    381       return 0;
    382 
    383     case WM_COMMAND:
    384       switch(SHORT1FROMMP(mp1)) {
    385         case VINF_RESCAN:
    386           PostMsg(hwnd,UM_RESCAN,MPVOID,MPVOID);
    387           break;
    388 
    389         case VINF_SRCH:
    390           {
    391             SHORT sSelect,sLast = LIT_FIRST;
    392             CHAR  szBuffer[CCHMAXPATH];
    393 
    394             *szBuffer = 0;
    395             WinQueryDlgItemText(hwnd,
    396                                 VINF_ENTRY,
    397                                 CCHMAXPATH,
    398                                 szBuffer);
    399             rstrip(szBuffer);
    400             if(!*szBuffer) {
    401               sLast = (SHORT)WinSendDlgItemMsg(hwnd,
    402                                                VINF_LISTBOX,
    403                                                LM_QUERYITEMCOUNT,
    404                                                MPVOID,
    405                                                MPVOID);
    406               for(sSelect = 0;sSelect < sLast;sSelect++)
    407                 WinSendDlgItemMsg(hwnd,
    408                                   VINF_LISTBOX,
    409                                   LM_SELECTITEM,
    410                                   MPFROM2SHORT(sSelect,0),
    411                                   MPFROM2SHORT(FALSE,0));
    412               break;
    413             }
    414             for(;;) {
    415               sSelect = (SHORT)WinSendDlgItemMsg(hwnd,VINF_LISTBOX,
    416                                                  LM_SEARCHSTRING,
    417                                                  MPFROM2SHORT(LSS_SUBSTRING,
    418                                                               sLast),
    419                                                  MPFROMP(szBuffer));
    420               if(sSelect <= sLast)
    421                 break;
    422               if(sSelect >= 0)
    423                 WinSendDlgItemMsg(hwnd,
    424                                   VINF_LISTBOX,
    425                                   LM_SELECTITEM,
    426                                   MPFROM2SHORT(sSelect,0),
    427                                   MPFROM2SHORT(TRUE,0));
    428               else
    429                 break;
    430               sLast = sSelect;
    431             }
    432           }
    433           break;
    434 
    435         case VINF_FILTER:
    436           {
    437             SHORT sSelect,sTotal;
    438 
    439             sTotal = (SHORT)WinSendDlgItemMsg(hwnd,
    440                                               VINF_LISTBOX,
    441                                               LM_QUERYITEMCOUNT,
    442                                               MPVOID,
    443                                               MPVOID);
    444             sSelect = (SHORT)WinSendDlgItemMsg(hwnd,
    445                                                VINF_LISTBOX,
    446                                                LM_QUERYSELECTION,
    447                                                MPFROM2SHORT(LIT_FIRST,0),
    448                                                MPVOID);
    449             if(sSelect == LIT_NONE) {
    450               DosBeep(50,100);
    451               break;
    452             }
    453 #ifdef BUGFIXED
    454             sSelect = 0;
    455             while(sSelect < sTotal) {
    456               if(!WinSendDlgItemMsg(hwnd,
    457                                     VINF_LISTBOX,
    458                                     LM_SELECTITEM,
    459                                     MPFROM2SHORT(sSelect,0),
    460                                     MPFROM2SHORT(FALSE,0))) {
    461                 WinSendDlgItemMsg(hwnd,
    462                                   VINF_LISTBOX,
    463                                   LM_DELETEITEM,
    464                                   MPFROM2SHORT(sSelect,0),
    465                                   MPVOID);
    466                 sTotal--;
    467               }
    468               else
    469                 sSelect++;
    470             }
    471 #else // !BUGIFIXED
    472             for(sSelect = 0;sSelect < sTotal;sSelect++)
    473               WinSendDlgItemMsg(hwnd,
    474                                 VINF_LISTBOX,
    475                                 LM_SETITEMHANDLE,
    476                                 MPFROM2SHORT(sSelect,0),
    477                                 MPVOID);
    478             sSelect = LIT_FIRST;
    479             for(;;) {
    480               sSelect = (SHORT)WinSendDlgItemMsg(hwnd,
    481                                                  VINF_LISTBOX,
    482                                                  LM_QUERYSELECTION,
    483                                                  MPFROM2SHORT(sSelect,0),
    484                                                  MPVOID);
    485               if(sSelect >= 0)
    486                 WinSendDlgItemMsg(hwnd,
    487                                   VINF_LISTBOX,
    488                                   LM_SETITEMHANDLE,
    489                                   MPFROM2SHORT(sSelect,0),
    490                                   MPFROMLONG(1L));
    491               else
    492                 break;
    493             }
    494             for(sSelect = 0;sSelect < sTotal;sSelect++)
    495               WinSendDlgItemMsg(hwnd,
    496                                 VINF_LISTBOX,
    497                                 LM_SELECTITEM,
    498                                 MPFROM2SHORT(sSelect,0),
    499                                 MPFROM2SHORT(FALSE,0));
    500             sSelect = 0;
    501             while(sSelect < sTotal) {
    502               if(!WinSendDlgItemMsg(hwnd,
    503                                     VINF_LISTBOX,
    504                                     LM_QUERYITEMHANDLE,
    505                                     MPFROM2SHORT(sSelect,0),
    506                                     MPVOID)) {
    507                 WinSendDlgItemMsg(hwnd,
    508                                   VINF_LISTBOX,
    509                                   LM_DELETEITEM,
    510                                   MPFROM2SHORT(sSelect,0),
    511                                   MPVOID);
    512                 sTotal--;
    513               }
    514               else
    515                 sSelect++;
    516             }
    517 #endif // BUGFIXED
    518           }
    519           break;
    520 
    521         case VINF_DIRS:
    522           {
    523             CHAR szBuffer[1001],*key = "INFPaths";
    524 
    525             if (help)
    526               key = "HLPPaths";
    527             *szBuffer = 0;
    528             WinQueryDlgItemText(hwnd,
    529                                 VINF_ENTRY,
    530                                 1000,
    531                                 szBuffer);
    532             bstrip(szBuffer);
    533             PrfWriteProfileData(fmprof,
    534                                 FM3Str,
    535                                 key,
    536                                 (*szBuffer) ? szBuffer : NULL,
    537                                 strlen(szBuffer));
    538             PostMsg(hwnd,
    539                     UM_RESCAN,
    540                     MPVOID,
    541                     MPVOID);
    542           }
    543           break;
    544 
    545         case DID_CANCEL:
    546           hwndMe = (HWND)0;
    547           WinDismissDlg(hwnd,0);
    548           break;
    549 
    550         case DID_OK:
    551           {
    552             SHORT sSelect;
    553             CHAR  text[CCHMAXPATH * 2],filename[CCHMAXPATH],*p;
    554             FILE *fp;
    555             BOOL  notfirst = FALSE;
    556 
    557             sSelect = (SHORT)WinSendDlgItemMsg(hwnd,
    558                                                VINF_LISTBOX,
    559                                                LM_QUERYSELECTION,
    560                                                MPFROM2SHORT(LIT_FIRST,0),
    561                                                MPVOID);
    562             if (sSelect < 0) {
    563                 DosBeep(50,100);
    564             }
    565             else {
    566               if (help) {
    567                 *text = 0;
    568                 WinSendDlgItemMsg(hwnd,
    569                                   VINF_LISTBOX,
    570                                   LM_QUERYITEMTEXT,
    571                                   MPFROM2SHORT(sSelect,CCHMAXPATH),
    572                                   MPFROMP(text));
    573                 p = strchr(text,'>');
    574                 if(!p) {
    575                   DosBeep(50,100);
    576                   break;
    577                 }
    578                 p++;
    579                   bstrip(p);
    580                 if (!*p)
    581                   DosBeep(50,100);
    582                 else
    583                   ViewHelp(p);
    584                 break;
    585               }
    586               save_dir2(filename);
    587               if(filename[strlen(filename) - 1] != '\\')
    588                 strcat(filename,"\\");
    589               strcat(filename,"FM2VINF.CMD");
    590               fp = xfopen(filename,"w",pszSrcFile,__LINE__);
    591               if (fp) {
    592                 fprintf(fp,"@ECHO OFF\nSET FM2REF=");
    593                 while(sSelect >= 0) {
    594                   *text = 0;
    595                   WinSendDlgItemMsg(hwnd,
    596                                     VINF_LISTBOX,
    597                                     LM_QUERYITEMTEXT,
    598                                     MPFROM2SHORT(sSelect,
    599                                                  CCHMAXPATH),
    600                                     MPFROMP(text));
    601                   p = strchr(text,'>');
    602                   if(p) {
    603                     p++;
    604                     bstrip(p);
    605                     if(*p) {
    606                       if(notfirst)
    607                         fprintf(fp,"+");
    608                       notfirst = TRUE;
    609                       fprintf(fp,"%s",p);
    610                     }
    611                   }
    612                   sSelect = (SHORT)WinSendDlgItemMsg(hwnd,
    613                                                      VINF_LISTBOX,
    614                                                      LM_QUERYSELECTION,
    615                                                      MPFROM2SHORT(sSelect,0),
    616                                                      MPVOID);
    617                 } // while
    618                 *text = 0;
    619                 WinQueryDlgItemText(hwnd,
    620                                     VINF_TOPIC,
    621                                     CCHMAXPATH * 2,
    622                                     text);
    623                 bstrip(text);
    624                 fprintf(fp,
    625                         "\nVIEW FM2REF%s%s\nDEL %s\n",
    626                         (*text) ? " " : NullStr,
    627                         text,
    628                         filename);
    629                 fclose(fp);
    630                 runemf2(SEPARATE | WINDOWED | MINIMIZED |
    631                         BACKGROUND | INVISIBLE,
    632                         hwnd,
    633                         NULL,
    634                         NULL,
    635                         "%s /C %s",
    636                         GetCmdSpec(FALSE),
    637                         filename);
    638               }
    639             }
    640           }
    641           break;
    642 
    643         case IDM_HELP:
    644           if(hwndHelp) {
    645             if(help)
    646               WinSendMsg(hwndHelp,
    647                          HM_DISPLAY_HELP,
    648                          MPFROM2SHORT(HELP_VIEWHELPS,0),
    649                          MPFROMSHORT(HM_RESOURCEID));
    650             else
    651               WinSendMsg(hwndHelp,
    652                          HM_DISPLAY_HELP,
    653                          MPFROM2SHORT(HELP_VIEWINF,0),
    654                          MPFROMSHORT(HM_RESOURCEID));
    655           }
    656           break;
    657       }
    658       return 0;
    659 
    660     case WM_CLOSE:
    661       if(!threaddone)
    662         return 0;
    663       break;
    664 
    665     case WM_DESTROY:
    666       if(hwndMe == hwnd) {
    667         hwndMe = (HWND)0;
    668         if(hptrIcon)
    669           WinDestroyPointer(hptrIcon);
    670         hptrIcon = (HPOINTER)0;
    671       }
    672       break;
     603    break;
     604
     605  case WM_DESTROY:
     606    if (hwndMe == hwnd) {
     607      hwndMe = (HWND) 0;
     608      if (hptrIcon)
     609        WinDestroyPointer(hptrIcon);
     610      hptrIcon = (HPOINTER) 0;
     611    }
     612    break;
    673613  }
    674   return WinDefDlgProc(hwnd,msg,mp1,mp2);
     614  return WinDefDlgProc(hwnd, msg, mp1, mp2);
    675615}
Note: See TracChangeset for help on using the changeset viewer.