Changeset 551 for trunk/dll/tools.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/tools.c

    r512 r551  
    4242TOOL *toolhead = NULL;
    4343
    44 
    4544//== load_quicktools() build *.tls array ==
    4645
    4746VOID load_quicktools(VOID)
    4847{
    49   FILE      *fp;
    50   CHAR       s[CCHMAXPATH + 14];
    51   INT        x;
     48  FILE *fp;
     49  CHAR s[CCHMAXPATH + 14];
     50  INT x;
    5251
    5352  qtloaded = TRUE;
     
    6261  save_dir2(s);
    6362  if (s[strlen(s) - 1] != '\\')
    64     strcat(s,"\\");
    65   strcat(s,"QUICKTLS.DAT");
    66   fp = _fsopen(s,"r",SH_DENYWR);
     63    strcat(s, "\\");
     64  strcat(s, "QUICKTLS.DAT");
     65  fp = _fsopen(s, "r", SH_DENYWR);
    6766  if (fp) {
    6867    x = 0;
    6968    while (!feof(fp)) {
    70       if (!xfgets_bstripcr(s,CCHMAXPATH + 2,fp,pszSrcFile,__LINE__))
    71         break;
     69      if (!xfgets_bstripcr(s, CCHMAXPATH + 2, fp, pszSrcFile, __LINE__))
     70        break;
    7271      if (!*s || *s == ';')
    73         continue;
     72        continue;
    7473      if (x >= 50) {
    7574        Runtime_Error(pszSrcFile, __LINE__, "add");
    7675        break;
    7776      }
    78       quicktool[x] = xstrdup(s,pszSrcFile,__LINE__);
     77      quicktool[x] = xstrdup(s, pszSrcFile, __LINE__);
    7978      if (!quicktool[x])
    80         break;
     79        break;
    8180      x++;
    8281    }
     
    8584}
    8685
    87 
    8886VOID save_quicktools(VOID)
    8987{
    9088  FILE *fp;
    91   INT   x = 0;
    92   CHAR  s[CCHMAXPATH + 14];
     89  INT x = 0;
     90  CHAR s[CCHMAXPATH + 14];
    9391
    9492  if (!quicktool[0])
     
    9694  save_dir2(s);
    9795  if (s[strlen(s) - 1] != '\\')
    98     strcat(s,"\\");
    99   strcat(s,"QUICKTLS.DAT");
    100   fp = xfopen(s,"w",pszSrcFile,__LINE__);
     96    strcat(s, "\\");
     97  strcat(s, "QUICKTLS.DAT");
     98  fp = xfopen(s, "w", pszSrcFile, __LINE__);
    10199  if (fp) {
    102     for (x = 0;quicktool[x] && x < 50;x++)
    103       fprintf(fp,"%s\n",quicktool[x]);
     100    for (x = 0; quicktool[x] && x < 50; x++)
     101      fprintf(fp, "%s\n", quicktool[x]);
    104102    fclose(fp);
    105103  }
    106104}
    107105
    108 
    109106//== load_tools() Build tools list given .tls filename ==
    110107
    111 TOOL *load_tools(CHAR *filename)
    112 {
    113   FILE  *fp;
    114   CHAR   help[80],text[80],flagstr[80],idstr[80],*fname;
    115   TOOL  *info;
     108TOOL *load_tools(CHAR * filename)
     109{
     110  FILE *fp;
     111  CHAR help[80], text[80], flagstr[80], idstr[80], *fname;
     112  TOOL *info;
    116113
    117114  if (!fToolbar) {
     
    119116    return toolhead;
    120117  }
    121   if (!filename ||
    122      !*filename)
     118  if (!filename || !*filename)
    123119    filename = (*lasttoolbox) ? lasttoolbox : "CMDS.TLS";
    124120  if (*filename)
    125121    fname = searchpath(filename);
    126   if (!fname ||
    127      !*fname)
     122  if (!fname || !*fname)
    128123    fname = "FM3TOOLS.DAT";
    129   if (fname &&
    130      *fname) {
     124  if (fname && *fname) {
    131125    filename = fname;
    132     strcpy(lasttoolbox,filename);
    133     fp = _fsopen(filename,"r",SH_DENYWR);
     126    strcpy(lasttoolbox, filename);
     127    fp = _fsopen(filename, "r", SH_DENYWR);
    134128    if (fp) {
    135129      toolhead = free_tools();
    136130      while (!feof(fp)) {
    137         do {
    138           if (!xfgets(help,sizeof(help),fp,pszSrcFile,__LINE__))
    139             break;
    140         } while (*help == ';' && !feof(fp));
    141         stripcr(help);
    142         if (!xfgets(text,sizeof(text),fp,pszSrcFile,__LINE__))
    143           break;
    144         stripcr(text);
    145         if (!xfgets(flagstr,sizeof(flagstr),fp,pszSrcFile,__LINE__))
    146           break;
    147         if (!xfgets(idstr,sizeof(idstr),fp,pszSrcFile,__LINE__))
    148           break;
    149         if (!(USHORT)atoi(idstr))
    150           continue;
    151         info = xmallocz(sizeof(TOOL),pszSrcFile,__LINE__);
    152         if (info) {
    153           if (*help) {
    154             literal(help);
    155             if (*help)
    156               info->help = xstrdup(help,pszSrcFile,__LINE__);
    157           }
    158           if (*text)
    159             info->text = xstrdup(text,pszSrcFile,__LINE__);
    160           info->flags = (atoi(flagstr) & (~(T_TEXT | T_EMPHASIZED)));
    161           info->id = (USHORT)atoi(idstr);
    162           info->next = NULL;
    163           add_tool(info);
    164         }
     131        do {
     132          if (!xfgets(help, sizeof(help), fp, pszSrcFile, __LINE__))
     133            break;
     134        } while (*help == ';' && !feof(fp));
     135        stripcr(help);
     136        if (!xfgets(text, sizeof(text), fp, pszSrcFile, __LINE__))
     137          break;
     138        stripcr(text);
     139        if (!xfgets(flagstr, sizeof(flagstr), fp, pszSrcFile, __LINE__))
     140          break;
     141        if (!xfgets(idstr, sizeof(idstr), fp, pszSrcFile, __LINE__))
     142          break;
     143        if (!(USHORT) atoi(idstr))
     144          continue;
     145        info = xmallocz(sizeof(TOOL), pszSrcFile, __LINE__);
     146        if (info) {
     147          if (*help) {
     148            literal(help);
     149            if (*help)
     150              info->help = xstrdup(help, pszSrcFile, __LINE__);
     151          }
     152          if (*text)
     153            info->text = xstrdup(text, pszSrcFile, __LINE__);
     154          info->flags = (atoi(flagstr) & (~(T_TEXT | T_EMPHASIZED)));
     155          info->id = (USHORT) atoi(idstr);
     156          info->next = NULL;
     157          add_tool(info);
     158        }
    165159      }
    166160      fclose(fp);
     
    171165}
    172166
    173 
    174 VOID save_tools(CHAR *filename)
    175 {
    176   FILE  *fp;
    177   CHAR  *fname;
    178   TOOL  *info;
     167VOID save_tools(CHAR * filename)
     168{
     169  FILE *fp;
     170  CHAR *fname;
     171  TOOL *info;
    179172
    180173  if (!filename)
     
    194187  }
    195188
    196   if (stristr(filename,"FM3TOOLS.DAT"))
     189  if (stristr(filename, "FM3TOOLS.DAT"))
    197190    filename = "FM3TOOLS.TLS";
    198191  if (toolhead && filename && *filename) {
    199     strcpy(lasttoolbox,filename);
    200     PrfWriteProfileString(fmprof,FM3Str,"LastToolBox",filename);
     192    strcpy(lasttoolbox, filename);
     193    PrfWriteProfileString(fmprof, FM3Str, "LastToolBox", filename);
    201194  }
    202195  if (!toolhead) {
    203     unlinkf("%s",filename);
     196    unlinkf("%s", filename);
    204197    return;
    205198  }
    206   fp = xfopen(filename,"w",pszSrcFile,__LINE__);
     199  fp = xfopen(filename, "w", pszSrcFile, __LINE__);
    207200  if (fp) {
    208     fprintf(fp,GetPString(IDS_TOOLFILETEXT),filename);
     201    fprintf(fp, GetPString(IDS_TOOLFILETEXT), filename);
    209202    info = toolhead;
    210203    while (info) {
    211204      fprintf(fp,
    212               "%s\n%s\n%u\n%u\n;\n",
    213               (info->help) ? info->help : NullStr,
    214               (info->text) ? info->text : NullStr,
    215               (info->flags & (~(T_EMPHASIZED | T_TEXT))),
    216               info->id);
     205              "%s\n%s\n%u\n%u\n;\n",
     206              (info->help) ? info->help : NullStr,
     207              (info->text) ? info->text : NullStr,
     208              (info->flags & (~(T_EMPHASIZED | T_TEXT))), info->id);
    217209      info = info->next;
    218210    }
     
    221213  }
    222214  if (hwndMain)
    223     PostMsg(hwndMain,UM_FILLBUTTONLIST,MPVOID,MPVOID);
    224 }
    225 
    226 
    227 TOOL *add_tool(TOOL *tool)
     215    PostMsg(hwndMain, UM_FILLBUTTONLIST, MPVOID, MPVOID);
     216}
     217
     218TOOL *add_tool(TOOL * tool)
    228219{
    229220  TOOL *info;
     
    233224    if (info) {
    234225      while (info->next)
    235         info = info->next;
     226        info = info->next;
    236227    }
    237228    if (info)
     
    244235}
    245236
    246 
    247 TOOL *insert_tool(TOOL *tool,TOOL *after)
     237TOOL *insert_tool(TOOL * tool, TOOL * after)
    248238{
    249239  if (tool) {
     
    264254}
    265255
    266 
    267 TOOL *del_tool(TOOL *tool)
    268 {
    269   TOOL *info,*prev = NULL;
     256TOOL *del_tool(TOOL * tool)
     257{
     258  TOOL *info, *prev = NULL;
    270259
    271260  if (tool) {
     
    273262    while (info) {
    274263      if (info == tool) {
    275         if (info == toolhead)
    276           toolhead = info->next;
    277         if (prev)
    278           prev->next = info->next;
    279         if (info->help)
    280           free(info->help);
    281         if (info->text)
    282           free(info->text);
    283         free(info);
    284         fToolsChanged = TRUE;
    285         break;
     264        if (info == toolhead)
     265          toolhead = info->next;
     266        if (prev)
     267          prev->next = info->next;
     268        if (info->help)
     269          free(info->help);
     270        if (info->text)
     271          free(info->text);
     272        free(info);
     273        fToolsChanged = TRUE;
     274        break;
    286275      }
    287276      prev = info;
     
    291280  return toolhead;
    292281}
    293 
    294282
    295283TOOL *find_tool(USHORT id)
     
    301289    while (tool) {
    302290      if (id && tool->id == id)
    303         return tool;
     291        return tool;
    304292      tool = tool->next;
    305293    }
     
    308296}
    309297
    310 
    311 TOOL *next_tool(TOOL *tool,BOOL skipinvisible)
     298TOOL *next_tool(TOOL * tool, BOOL skipinvisible)
    312299{
    313300  while (tool) {
     
    320307}
    321308
    322 
    323 TOOL *prev_tool(TOOL *tool,BOOL skipinvisible)
     309TOOL *prev_tool(TOOL * tool, BOOL skipinvisible)
    324310{
    325311  TOOL *info;
     
    330316    while (info) {
    331317      if (info->next == tool) {
    332         if (skipinvisible && (info->flags & T_INVISIBLE)) {
    333           tool = info;
    334           goto Again;
    335         }
    336         return info;
     318        if (skipinvisible && (info->flags & T_INVISIBLE)) {
     319          tool = info;
     320          goto Again;
     321        }
     322        return info;
    337323      }
    338324      if (!info->next && tool == toolhead)
    339         return info;
     325        return info;
    340326      info = info->next;
    341327    }
     
    345331}
    346332
    347 
    348 TOOL *swap_tools(TOOL *tool1,TOOL *tool2)
    349 {
    350   TOOL *prev1 = NULL,*prev2 = NULL,*info;
     333TOOL *swap_tools(TOOL * tool1, TOOL * tool2)
     334{
     335  TOOL *prev1 = NULL, *prev2 = NULL, *info;
    351336
    352337  if (tool1 && tool2 && tool1 != tool2) {
     
    354339    while (info && !prev1 && !prev2) {
    355340      if (info->next == tool1)
    356         prev1 = info;
     341        prev1 = info;
    357342      else if (info->next == tool2)
    358         prev2 = info;
     343        prev2 = info;
    359344      info = info->next;
    360345    }
     
    374359}
    375360
    376 
    377361TOOL *free_tools(VOID)
    378362{
    379   TOOL *tool,*next;
     363  TOOL *tool, *next;
    380364
    381365  tool = toolhead;
     
    393377}
    394378
    395 
    396 MRESULT EXPENTRY ReOrderToolsProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
     379MRESULT EXPENTRY ReOrderToolsProc(HWND hwnd, ULONG msg, MPARAM mp1,
     380                                  MPARAM mp2)
    397381{
    398382  switch (msg) {
    399     case WM_INITDLG:
    400       if (!toolhead || !toolhead->next)
    401         WinDismissDlg(hwnd,0);
    402       WinSetWindowText(hwnd,GetPString(IDS_RETOOLTEXT));
     383  case WM_INITDLG:
     384    if (!toolhead || !toolhead->next)
     385      WinDismissDlg(hwnd, 0);
     386    WinSetWindowText(hwnd, GetPString(IDS_RETOOLTEXT));
     387    {
     388      TOOL *tool;
     389      CHAR s[133];
     390      SHORT sSelect;
     391
     392      tool = toolhead;
     393      while (tool) {
     394        sprintf(s, "%-5u  %s", tool->id, (tool->help) ? tool->help : "?");
     395        sSelect = (SHORT) WinSendDlgItemMsg(hwnd,
     396                                            RE_ADDLISTBOX,
     397                                            LM_INSERTITEM,
     398                                            MPFROMSHORT(LIT_END), MPFROMP(s));
     399        if (sSelect >= 0)
     400          WinSendDlgItemMsg(hwnd,
     401                            RE_ADDLISTBOX,
     402                            LM_SETITEMHANDLE,
     403                            MPFROMSHORT(sSelect), MPFROMLONG((ULONG) tool));
     404        tool = tool->next;
     405      }
     406    }
     407    break;
     408
     409  case WM_CONTROL:
     410    return 0;
     411
     412  case WM_COMMAND:
     413    switch (SHORT1FROMMP(mp1)) {
     414    case DID_CANCEL:
     415      WinDismissDlg(hwnd, 0);
     416      break;
     417
     418    case DID_OK:
    403419      {
    404         TOOL  *tool;
    405         CHAR   s[133];
    406         SHORT  sSelect;
    407 
    408         tool = toolhead;
    409         while (tool) {
    410           sprintf(s,
    411                   "%-5u  %s",
    412                   tool->id,
    413                   (tool->help) ? tool->help : "?");
    414           sSelect = (SHORT)WinSendDlgItemMsg(hwnd,
    415                                              RE_ADDLISTBOX,
    416                                              LM_INSERTITEM,
    417                                              MPFROMSHORT(LIT_END),
    418                                              MPFROMP(s));
    419           if (sSelect >= 0)
    420             WinSendDlgItemMsg(hwnd,
    421                               RE_ADDLISTBOX,
    422                               LM_SETITEMHANDLE,
    423                               MPFROMSHORT(sSelect),
    424                               MPFROMLONG((ULONG)tool));
    425           tool = tool->next;
    426         }
    427       }
    428       break;
    429 
    430     case WM_CONTROL:
    431       return 0;
    432 
    433     case WM_COMMAND:
    434       switch (SHORT1FROMMP(mp1)) {
    435         case DID_CANCEL:
    436           WinDismissDlg(hwnd,0);
    437           break;
    438 
    439         case DID_OK:
    440           {
    441             TOOL    *tool,*thead = NULL,*last = NULL;
    442             SHORT    sSelect = 0,numitems;
    443 
    444             numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
    445                                                 LM_QUERYITEMCOUNT,
    446                                                 MPVOID,MPVOID);
    447             while (numitems) {
    448               tool = (TOOL *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
    449                                                LM_QUERYITEMHANDLE,
    450                                                MPFROMSHORT(sSelect++),MPVOID);
    451               if (tool) {
    452                 if (!thead)
    453                   thead = tool;
    454                 else
    455                   last->next = tool;
    456                 last = tool;
    457               }
    458               numitems--;
    459             }
    460             sSelect = 0;
    461             numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
    462                                                 LM_QUERYITEMCOUNT,
    463                                                 MPVOID,MPVOID);
    464             while (numitems) {
    465               tool = (TOOL *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
    466                                                LM_QUERYITEMHANDLE,
    467                                                MPFROMSHORT(sSelect++),
    468                                                MPVOID);
    469               if (tool) {
    470                 if (!thead)
    471                   thead = tool;
    472                 else
    473                   last->next = tool;
    474                 last = tool;
    475               }
    476               numitems--;
    477             }
    478             if (last)
    479               last->next = NULL;
    480             toolhead = thead;
    481           }
    482           fToolsChanged = TRUE;
    483           WinDismissDlg(hwnd,1);
    484           break;
    485 
    486         case IDM_HELP:
    487           if (hwndHelp)
    488             WinSendMsg(hwndHelp,HM_DISPLAY_HELP,
    489                        MPFROM2SHORT(HELP_REORDERBUTTONS,0),
    490                        MPFROMSHORT(HM_RESOURCEID));
    491           break;
    492 
    493         case RE_ADD:
    494           {
    495             SHORT sSelect,sSelect2;
    496             CHAR  s[133];
    497             TOOL *tool;
    498 
    499             sSelect = (USHORT)WinSendDlgItemMsg(hwnd,
    500                                                 RE_ADDLISTBOX,
    501                                                 LM_QUERYSELECTION,
    502                                                 MPFROMSHORT(LIT_FIRST),
    503                                                 MPVOID);
    504             while (sSelect >= 0) {
    505               tool = (TOOL *)WinSendDlgItemMsg(hwnd,
    506                                                RE_ADDLISTBOX,
    507                                                LM_QUERYITEMHANDLE,
    508                                                MPFROMSHORT(sSelect),
    509                                                MPVOID);
    510               if (tool) {
    511                 sprintf(s,
    512                         "%-5u  %s",
    513                         tool->id,
    514                         (tool->help) ? tool->help : "?");
    515                 sSelect2 = (SHORT)WinSendDlgItemMsg(hwnd,
    516                                                     RE_REMOVELISTBOX,
    517                                                     LM_INSERTITEM,
    518                                                     MPFROM2SHORT(LIT_END,0),
    519                                                     MPFROMP(s));
    520                 if (sSelect2 >= 0)
    521                   WinSendDlgItemMsg(hwnd,
    522                                     RE_REMOVELISTBOX,
    523                                     LM_SETITEMHANDLE,
    524                                     MPFROMSHORT(sSelect2),
    525                                     MPFROMLONG((ULONG)tool));
    526                 WinSendDlgItemMsg(hwnd,
    527                                   RE_ADDLISTBOX,
    528                                   LM_DELETEITEM,
    529                                   MPFROMSHORT(sSelect),
    530                                   MPVOID);
    531               }
    532               else
    533                 WinSendDlgItemMsg(hwnd,
    534                                   RE_ADDLISTBOX,
    535                                   LM_SELECTITEM,
    536                                   MPFROMSHORT(sSelect),
    537                                   MPFROMSHORT(FALSE));
    538               sSelect = (USHORT)WinSendDlgItemMsg(hwnd,
    539                                                   RE_ADDLISTBOX,
    540                                                   LM_QUERYSELECTION,
    541                                                   MPFROMSHORT(LIT_FIRST),
    542                                                   MPVOID);
    543             }
    544           }
    545           break;
    546 
    547         case RE_REMOVE:
    548           {
    549             SHORT sSelect,sSelect2;
    550             CHAR  s[133];
    551             TOOL *tool;
    552 
    553             sSelect = (USHORT)WinSendDlgItemMsg(hwnd,
    554                                                 RE_REMOVELISTBOX,
    555                                                 LM_QUERYSELECTION,
    556                                                 MPFROMSHORT(LIT_FIRST),
    557                                                 MPVOID);
    558             while (sSelect >= 0) {
    559               tool = (TOOL *)WinSendDlgItemMsg(hwnd,
    560                                                RE_REMOVELISTBOX,
    561                                                LM_QUERYITEMHANDLE,
    562                                                MPFROMSHORT(sSelect),
    563                                                MPVOID);
    564               if (tool) {
    565                 sprintf(s,
    566                         "%-5u  %s",
    567                         tool->id,
    568                         (tool->help) ? tool->help : "?");
    569                 sSelect2 = (SHORT)WinSendDlgItemMsg(hwnd,
    570                                                     RE_ADDLISTBOX,
    571                                                     LM_INSERTITEM,
    572                                                     MPFROM2SHORT(LIT_END,0),
    573                                                     MPFROMP(s));
    574                 if (sSelect2 >= 0)
    575                   WinSendDlgItemMsg(hwnd,
    576                                     RE_ADDLISTBOX,
    577                                     LM_SETITEMHANDLE,
    578                                     MPFROMSHORT(sSelect2),
    579                                     MPFROMLONG((ULONG)tool));
    580                 WinSendDlgItemMsg(hwnd,
    581                                   RE_REMOVELISTBOX,
    582                                   LM_DELETEITEM,
    583                                   MPFROMSHORT(sSelect),
    584                                   MPVOID);
    585               }
    586               else
    587                 WinSendDlgItemMsg(hwnd,
    588                                   RE_REMOVELISTBOX,
    589                                   LM_SELECTITEM,
    590                                   MPFROMSHORT(sSelect),
    591                                   MPFROMSHORT(FALSE));
    592               sSelect = (USHORT)WinSendDlgItemMsg(hwnd,
    593                                                   RE_REMOVELISTBOX,
    594                                                   LM_QUERYSELECTION,
    595                                                   MPFROMSHORT(LIT_FIRST),
    596                                                   MPVOID);
    597             }
    598           }
    599           break;
    600       }
    601       return 0;
    602   }
    603   return WinDefDlgProc(hwnd,msg,mp1,mp2);
    604 }
    605 
    606 
    607 MRESULT EXPENTRY AddToolProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
     420        TOOL *tool, *thead = NULL, *last = NULL;
     421        SHORT sSelect = 0, numitems;
     422
     423        numitems = (SHORT) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX,
     424                                             LM_QUERYITEMCOUNT,
     425                                             MPVOID, MPVOID);
     426        while (numitems) {
     427          tool = (TOOL *) WinSendDlgItemMsg(hwnd, RE_REMOVELISTBOX,
     428                                            LM_QUERYITEMHANDLE,
     429                                            MPFROMSHORT(sSelect++), MPVOID);
     430          if (tool) {
     431            if (!thead)
     432              thead = tool;
     433            else
     434              last->next = tool;
     435            last = tool;
     436          }
     437          numitems--;
     438        }
     439        sSelect = 0;
     440        numitems = (SHORT) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX,
     441                                             LM_QUERYITEMCOUNT,
     442                                             MPVOID, MPVOID);
     443        while (numitems) {
     444          tool = (TOOL *) WinSendDlgItemMsg(hwnd, RE_ADDLISTBOX,
     445                                            LM_QUERYITEMHANDLE,
     446                                            MPFROMSHORT(sSelect++), MPVOID);
     447          if (tool) {
     448            if (!thead)
     449              thead = tool;
     450            else
     451              last->next = tool;
     452            last = tool;
     453          }
     454          numitems--;
     455        }
     456        if (last)
     457          last->next = NULL;
     458        toolhead = thead;
     459      }
     460      fToolsChanged = TRUE;
     461      WinDismissDlg(hwnd, 1);
     462      break;
     463
     464    case IDM_HELP:
     465      if (hwndHelp)
     466        WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
     467                   MPFROM2SHORT(HELP_REORDERBUTTONS, 0),
     468                   MPFROMSHORT(HM_RESOURCEID));
     469      break;
     470
     471    case RE_ADD:
     472      {
     473        SHORT sSelect, sSelect2;
     474        CHAR s[133];
     475        TOOL *tool;
     476
     477        sSelect = (USHORT) WinSendDlgItemMsg(hwnd,
     478                                             RE_ADDLISTBOX,
     479                                             LM_QUERYSELECTION,
     480                                             MPFROMSHORT(LIT_FIRST), MPVOID);
     481        while (sSelect >= 0) {
     482          tool = (TOOL *) WinSendDlgItemMsg(hwnd,
     483                                            RE_ADDLISTBOX,
     484                                            LM_QUERYITEMHANDLE,
     485                                            MPFROMSHORT(sSelect), MPVOID);
     486          if (tool) {
     487            sprintf(s, "%-5u  %s", tool->id, (tool->help) ? tool->help : "?");
     488            sSelect2 = (SHORT) WinSendDlgItemMsg(hwnd,
     489                                                 RE_REMOVELISTBOX,
     490                                                 LM_INSERTITEM,
     491                                                 MPFROM2SHORT(LIT_END, 0),
     492                                                 MPFROMP(s));
     493            if (sSelect2 >= 0)
     494              WinSendDlgItemMsg(hwnd,
     495                                RE_REMOVELISTBOX,
     496                                LM_SETITEMHANDLE,
     497                                MPFROMSHORT(sSelect2),
     498                                MPFROMLONG((ULONG) tool));
     499            WinSendDlgItemMsg(hwnd,
     500                              RE_ADDLISTBOX,
     501                              LM_DELETEITEM, MPFROMSHORT(sSelect), MPVOID);
     502          }
     503          else
     504            WinSendDlgItemMsg(hwnd,
     505                              RE_ADDLISTBOX,
     506                              LM_SELECTITEM,
     507                              MPFROMSHORT(sSelect), MPFROMSHORT(FALSE));
     508          sSelect = (USHORT) WinSendDlgItemMsg(hwnd,
     509                                               RE_ADDLISTBOX,
     510                                               LM_QUERYSELECTION,
     511                                               MPFROMSHORT(LIT_FIRST),
     512                                               MPVOID);
     513        }
     514      }
     515      break;
     516
     517    case RE_REMOVE:
     518      {
     519        SHORT sSelect, sSelect2;
     520        CHAR s[133];
     521        TOOL *tool;
     522
     523        sSelect = (USHORT) WinSendDlgItemMsg(hwnd,
     524                                             RE_REMOVELISTBOX,
     525                                             LM_QUERYSELECTION,
     526                                             MPFROMSHORT(LIT_FIRST), MPVOID);
     527        while (sSelect >= 0) {
     528          tool = (TOOL *) WinSendDlgItemMsg(hwnd,
     529                                            RE_REMOVELISTBOX,
     530                                            LM_QUERYITEMHANDLE,
     531                                            MPFROMSHORT(sSelect), MPVOID);
     532          if (tool) {
     533            sprintf(s, "%-5u  %s", tool->id, (tool->help) ? tool->help : "?");
     534            sSelect2 = (SHORT) WinSendDlgItemMsg(hwnd,
     535                                                 RE_ADDLISTBOX,
     536                                                 LM_INSERTITEM,
     537                                                 MPFROM2SHORT(LIT_END, 0),
     538                                                 MPFROMP(s));
     539            if (sSelect2 >= 0)
     540              WinSendDlgItemMsg(hwnd,
     541                                RE_ADDLISTBOX,
     542                                LM_SETITEMHANDLE,
     543                                MPFROMSHORT(sSelect2),
     544                                MPFROMLONG((ULONG) tool));
     545            WinSendDlgItemMsg(hwnd,
     546                              RE_REMOVELISTBOX,
     547                              LM_DELETEITEM, MPFROMSHORT(sSelect), MPVOID);
     548          }
     549          else
     550            WinSendDlgItemMsg(hwnd,
     551                              RE_REMOVELISTBOX,
     552                              LM_SELECTITEM,
     553                              MPFROMSHORT(sSelect), MPFROMSHORT(FALSE));
     554          sSelect = (USHORT) WinSendDlgItemMsg(hwnd,
     555                                               RE_REMOVELISTBOX,
     556                                               LM_QUERYSELECTION,
     557                                               MPFROMSHORT(LIT_FIRST),
     558                                               MPVOID);
     559        }
     560      }
     561      break;
     562    }
     563    return 0;
     564  }
     565  return WinDefDlgProc(hwnd, msg, mp1, mp2);
     566}
     567
     568MRESULT EXPENTRY AddToolProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
    608569{
    609570  switch (msg) {
    610     case WM_INITDLG:
    611       WinSetWindowPtr(hwnd,QWL_USER,mp2);
    612       if (mp2) {
    613         WinSetWindowText(hwnd,GetPString(IDS_EDITTOOLTEXT));
    614         WinSendDlgItemMsg(hwnd,ADDBTN_ID,EM_SETREADONLY,
    615                           MPFROM2SHORT(TRUE,0),MPVOID);
    616       }
    617       WinSendDlgItemMsg(hwnd,ADDBTN_HELP,EM_SETTEXTLIMIT,
    618                         MPFROM2SHORT(80,0),MPVOID);
    619       WinSendDlgItemMsg(hwnd,ADDBTN_TEXT,EM_SETTEXTLIMIT,
    620                         MPFROM2SHORT(80,0),MPVOID);
    621       WinSendDlgItemMsg(hwnd,ADDBTN_ID,EM_SETTEXTLIMIT,
    622                         MPFROM2SHORT(5,0),MPVOID);
    623       if (!mp2)
    624         WinCheckButton(hwnd,ADDBTN_VISIBLE,TRUE);
    625       else {
    626         TOOL *tool = (TOOL *)mp2;
    627         CHAR  s[33];
    628 
    629         if (tool->help)
    630           WinSetDlgItemText(hwnd,ADDBTN_HELP,tool->help);
    631         if (tool->text)
    632           WinSetDlgItemText(hwnd,ADDBTN_TEXT,tool->text);
    633         if (tool->flags & T_MYICON)
    634           WinCheckButton(hwnd,ADDBTN_MYICON,TRUE);
    635         else
    636           WinEnableWindow(WinWindowFromID(hwnd,ADDBTN_EDITBMP),FALSE);
    637         if (tool->flags & T_DROPABLE)
    638           WinCheckButton(hwnd,ADDBTN_DROPABLE,TRUE);
    639         if (!(tool->flags & T_INVISIBLE))
    640           WinCheckButton(hwnd,ADDBTN_VISIBLE,TRUE);
    641         if (tool->flags & T_SEPARATOR)
    642           WinCheckButton(hwnd,ADDBTN_SEPARATOR,TRUE);
    643         if (tool->flags & T_TEXT)
    644           WinCheckButton(hwnd,ADDBTN_SHOWTEXT,TRUE);
    645         sprintf(s,"%u",tool->id);
    646         WinSetDlgItemText(hwnd,ADDBTN_ID,s);
    647         WinEnableWindow(WinWindowFromID(hwnd,ADDBTN_SHOWTEXT),FALSE);
    648       }
    649       WinShowWindow(WinWindowFromID(hwnd,ADDBTN_SHOWTEXT),FALSE);
    650       PostMsg(hwnd,UM_SETUP,MPVOID,MPVOID);
    651       break;
    652 
    653     case WM_ADJUSTWINDOWPOS:
    654       PostMsg(hwnd,UM_SETDIR,MPVOID,MPVOID);
    655       break;
    656 
    657     case UM_SETDIR:
    658       PaintRecessedWindow(WinWindowFromID(hwnd,ADDBTN_HELPME),(HPS)0,FALSE,
    659                           TRUE);
    660       PaintRecessedWindow(WinWindowFromID(hwnd,ADDBTN_BMP),(HPS)0,TRUE,
    661                           FALSE);
    662       return 0;
    663 
    664     case UM_SETUP:
     571  case WM_INITDLG:
     572    WinSetWindowPtr(hwnd, QWL_USER, mp2);
     573    if (mp2) {
     574      WinSetWindowText(hwnd, GetPString(IDS_EDITTOOLTEXT));
     575      WinSendDlgItemMsg(hwnd, ADDBTN_ID, EM_SETREADONLY,
     576                        MPFROM2SHORT(TRUE, 0), MPVOID);
     577    }
     578    WinSendDlgItemMsg(hwnd, ADDBTN_HELP, EM_SETTEXTLIMIT,
     579                      MPFROM2SHORT(80, 0), MPVOID);
     580    WinSendDlgItemMsg(hwnd, ADDBTN_TEXT, EM_SETTEXTLIMIT,
     581                      MPFROM2SHORT(80, 0), MPVOID);
     582    WinSendDlgItemMsg(hwnd, ADDBTN_ID, EM_SETTEXTLIMIT,
     583                      MPFROM2SHORT(5, 0), MPVOID);
     584    if (!mp2)
     585      WinCheckButton(hwnd, ADDBTN_VISIBLE, TRUE);
     586    else {
     587      TOOL *tool = (TOOL *) mp2;
     588      CHAR s[33];
     589
     590      if (tool->help)
     591        WinSetDlgItemText(hwnd, ADDBTN_HELP, tool->help);
     592      if (tool->text)
     593        WinSetDlgItemText(hwnd, ADDBTN_TEXT, tool->text);
     594      if (tool->flags & T_MYICON)
     595        WinCheckButton(hwnd, ADDBTN_MYICON, TRUE);
     596      else
     597        WinEnableWindow(WinWindowFromID(hwnd, ADDBTN_EDITBMP), FALSE);
     598      if (tool->flags & T_DROPABLE)
     599        WinCheckButton(hwnd, ADDBTN_DROPABLE, TRUE);
     600      if (!(tool->flags & T_INVISIBLE))
     601        WinCheckButton(hwnd, ADDBTN_VISIBLE, TRUE);
     602      if (tool->flags & T_SEPARATOR)
     603        WinCheckButton(hwnd, ADDBTN_SEPARATOR, TRUE);
     604      if (tool->flags & T_TEXT)
     605        WinCheckButton(hwnd, ADDBTN_SHOWTEXT, TRUE);
     606      sprintf(s, "%u", tool->id);
     607      WinSetDlgItemText(hwnd, ADDBTN_ID, s);
     608      WinEnableWindow(WinWindowFromID(hwnd, ADDBTN_SHOWTEXT), FALSE);
     609    }
     610    WinShowWindow(WinWindowFromID(hwnd, ADDBTN_SHOWTEXT), FALSE);
     611    PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
     612    break;
     613
     614  case WM_ADJUSTWINDOWPOS:
     615    PostMsg(hwnd, UM_SETDIR, MPVOID, MPVOID);
     616    break;
     617
     618  case UM_SETDIR:
     619    PaintRecessedWindow(WinWindowFromID(hwnd, ADDBTN_HELPME), (HPS) 0, FALSE,
     620                        TRUE);
     621    PaintRecessedWindow(WinWindowFromID(hwnd, ADDBTN_BMP), (HPS) 0, TRUE,
     622                        FALSE);
     623    return 0;
     624
     625  case UM_SETUP:
     626    {
     627      HBITMAP hbm = (HBITMAP) 0, hbmd, hbmdd;
     628      HPS hps;
     629      CHAR idstr[7];
     630      USHORT id;
     631
     632      *idstr = 0;
     633      WinQueryDlgItemText(hwnd, ADDBTN_ID, 6, idstr);
     634      id = atoi(idstr);
     635      if (id) {
     636        hps = WinGetPS(WinWindowFromID(hwnd, ADDBTN_BMP));
     637        if (!WinQueryButtonCheckstate(hwnd, ADDBTN_MYICON))
     638          hbm = GpiLoadBitmap(hps, 0, id, 28, 28);
     639        if (!hbm)
     640          hbm = LoadBitmapFromFileNum(id);
     641        if (hbm) {
     642          hbmd = (HBITMAP) WinSendDlgItemMsg(hwnd, ADDBTN_BMP, SM_QUERYHANDLE,
     643                                             MPVOID, MPVOID);
     644          hbmdd = (HBITMAP) WinSendDlgItemMsg(hwnd, ADDBTN_BMP, SM_SETHANDLE,
     645                                              MPFROMLONG(hbm), MPVOID);
     646          if (hbmdd && hbmd && hbmd != hbmdd)
     647            GpiDeleteBitmap(hbmd);
     648        }
     649      }
     650    }
     651    return 0;
     652
     653  case WM_CONTROL:
     654    switch (SHORT1FROMMP(mp1)) {
     655    case ADDBTN_HELP:
     656      if (SHORT2FROMMP(mp1) == EN_KILLFOCUS)
     657        WinSetDlgItemText(hwnd, ADDBTN_HELPME, NullStr);
     658      if (SHORT2FROMMP(mp1) == EN_SETFOCUS)
     659        WinSetDlgItemText(hwnd, ADDBTN_HELPME,
     660                          GetPString(IDS_ADDTOOLQUICKHELPTEXT));
     661      break;
     662
     663    case ADDBTN_TEXT:
     664      if (SHORT2FROMMP(mp1) == EN_KILLFOCUS)
     665        WinSetDlgItemText(hwnd, ADDBTN_HELPME, NullStr);
     666      if (SHORT2FROMMP(mp1) == EN_SETFOCUS)
     667        WinSetDlgItemText(hwnd, ADDBTN_HELPME,
     668                          GetPString(IDS_ADDTOOLBUTTONTEXT));
     669      break;
     670
     671    case ADDBTN_ID:
     672      if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) {
     673        WinSetDlgItemText(hwnd, ADDBTN_HELPME, NullStr);
     674        PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
     675      }
     676      if (SHORT2FROMMP(mp1) == EN_SETFOCUS)
     677        WinSetDlgItemText(hwnd,
     678                          ADDBTN_HELPME, GetPString(IDS_ADDTOOLBUTTONIDTEXT));
     679      break;
     680
     681    case ADDBTN_MYICON:
     682      PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
     683      WinEnableWindow(WinWindowFromID(hwnd, ADDBTN_EDITBMP),
     684                      WinQueryButtonCheckstate(hwnd, ADDBTN_MYICON));
     685      break;
     686    }
     687    return 0;
     688
     689  case WM_COMMAND:
     690    switch (SHORT1FROMMP(mp1)) {
     691    case DID_OK:
    665692      {
    666         HBITMAP hbm = (HBITMAP)0,hbmd,hbmdd;
    667         HPS     hps;
    668         CHAR    idstr[7];
    669         USHORT  id;
    670 
    671         *idstr = 0;
    672         WinQueryDlgItemText(hwnd,ADDBTN_ID,6,idstr);
    673         id = atoi(idstr);
    674         if (id) {
    675           hps = WinGetPS(WinWindowFromID(hwnd,ADDBTN_BMP));
    676           if (!WinQueryButtonCheckstate(hwnd,ADDBTN_MYICON))
    677             hbm = GpiLoadBitmap(hps,0,id,28,28);
    678           if (!hbm)
    679             hbm = LoadBitmapFromFileNum(id);
    680           if (hbm) {
    681             hbmd = (HBITMAP)WinSendDlgItemMsg(hwnd,ADDBTN_BMP,SM_QUERYHANDLE,
    682                                               MPVOID,MPVOID);
    683             hbmdd = (HBITMAP)WinSendDlgItemMsg(hwnd,ADDBTN_BMP,SM_SETHANDLE,
    684                                                MPFROMLONG(hbm),MPVOID);
    685             if (hbmdd && hbmd && hbmd != hbmdd)
    686               GpiDeleteBitmap(hbmd);
    687           }
    688         }
    689       }
    690       return 0;
    691 
    692     case WM_CONTROL:
    693       switch (SHORT1FROMMP(mp1)) {
    694         case ADDBTN_HELP:
    695           if (SHORT2FROMMP(mp1) == EN_KILLFOCUS)
    696             WinSetDlgItemText(hwnd,ADDBTN_HELPME,NullStr);
    697           if (SHORT2FROMMP(mp1) == EN_SETFOCUS)
    698             WinSetDlgItemText(hwnd,ADDBTN_HELPME,
    699                               GetPString(IDS_ADDTOOLQUICKHELPTEXT));
    700           break;
    701 
    702         case ADDBTN_TEXT:
    703           if (SHORT2FROMMP(mp1) == EN_KILLFOCUS)
    704             WinSetDlgItemText(hwnd,ADDBTN_HELPME,NullStr);
    705           if (SHORT2FROMMP(mp1) == EN_SETFOCUS)
    706             WinSetDlgItemText(hwnd,ADDBTN_HELPME,
    707                               GetPString(IDS_ADDTOOLBUTTONTEXT));
    708           break;
    709 
    710         case ADDBTN_ID:
    711           if (SHORT2FROMMP(mp1) == EN_KILLFOCUS) {
    712             WinSetDlgItemText(hwnd,ADDBTN_HELPME,NullStr);
    713             PostMsg(hwnd,UM_SETUP,MPVOID,MPVOID);
    714           }
    715           if (SHORT2FROMMP(mp1) == EN_SETFOCUS)
    716             WinSetDlgItemText(hwnd,
    717                               ADDBTN_HELPME,
    718                               GetPString(IDS_ADDTOOLBUTTONIDTEXT));
    719           break;
    720 
    721         case ADDBTN_MYICON:
    722           PostMsg(hwnd,UM_SETUP,MPVOID,MPVOID);
    723           WinEnableWindow(WinWindowFromID(hwnd,ADDBTN_EDITBMP),
    724                           WinQueryButtonCheckstate(hwnd,ADDBTN_MYICON));
    725           break;
    726       }
    727       return 0;
    728 
    729     case WM_COMMAND:
    730       switch (SHORT1FROMMP(mp1)) {
    731         case DID_OK:
    732           {
    733             CHAR  help[81],text[81],idstr[7];
    734             BOOL  invisible,dropable,separator,istext,myicon;
    735             TOOL *tool;
    736 
    737             WinQueryDlgItemText(hwnd,ADDBTN_HELP,80,help);
    738             WinQueryDlgItemText(hwnd,ADDBTN_TEXT,80,text);
    739             if (WinQueryButtonCheckstate(hwnd,ADDBTN_DROPABLE))
    740               dropable = TRUE;
    741             else
    742               dropable = FALSE;
    743             myicon = WinQueryButtonCheckstate(hwnd,ADDBTN_MYICON);
    744             if (WinQueryButtonCheckstate(hwnd,ADDBTN_VISIBLE))
    745               invisible = FALSE;
    746             else
    747               invisible = TRUE;
    748             if (WinQueryButtonCheckstate(hwnd,ADDBTN_SEPARATOR))
    749               separator = TRUE;
    750             else
    751               separator = FALSE;
    752             if (WinQueryButtonCheckstate(hwnd,ADDBTN_SHOWTEXT))
    753               istext = TRUE;
    754             else
    755               istext = FALSE;
    756             tool = INSTDATA(hwnd);
    757             if (tool) {        /* just editing strings... */
    758               istext = ((tool->flags & T_TEXT) != 0);
    759               if (tool->help)
    760                 free(tool->help);
    761               tool->help = NULL;
    762               if (tool->text)
    763                 free(tool->text);
    764               tool->text = NULL;
    765               if (*help)
    766                 tool->help = xstrdup(help,pszSrcFile,__LINE__);
    767               if (*text)
    768                 tool->text = xstrdup(text,pszSrcFile,__LINE__);
    769               tool->flags = (((dropable) ? T_DROPABLE : 0)  |
    770                             ((invisible) ? T_INVISIBLE : 0) |
    771                             ((separator) ? T_SEPARATOR : 0) |
    772                             ((myicon) ? T_MYICON : 0) |
    773                             ((istext) ? T_TEXT : 0));
    774               fToolsChanged = TRUE;
    775               WinDismissDlg(hwnd,1);
    776               break;
    777             }
    778             *idstr = 0;
    779             WinQueryDlgItemText(hwnd,ADDBTN_ID,6,idstr);
    780             if (!(USHORT)atoi(idstr)) {
    781               DosBeep(250,100);
    782               break;
    783             }
    784             tool = toolhead;
    785             while (tool) {
    786               if (tool->id == (USHORT)atoi(idstr) && tool != tool) {
    787                 saymsg(MB_ENTER,
    788                        hwnd,
    789                        GetPString(IDS_DUPLICATETEXT),
    790                        GetPString(IDS_TOOLIDEXISTS));
    791                 WinSetDlgItemText(hwnd,ADDBTN_ID,NullStr);
    792                 WinSetFocus(HWND_DESKTOP,WinWindowFromID(hwnd,ADDBTN_ID));
    793                 break;
    794               }
    795               tool = tool->next;
    796             }
    797             tool = xmallocz(sizeof(TOOL),pszSrcFile,__LINE__);
    798             if (tool) {
    799               if (*help)
    800                 tool->help = xstrdup(help,pszSrcFile,__LINE__);
    801               if (*text)
    802                 tool->text = xstrdup(text,pszSrcFile,__LINE__);
    803               tool->id = (USHORT)atoi(idstr);
    804               tool->flags = (((dropable) ? T_DROPABLE : 0)  |
    805                             ((invisible) ? T_INVISIBLE : 0) |
    806                             ((separator) ? T_SEPARATOR : 0) |
    807                             ((myicon) ? T_MYICON : 0) |
    808                             ((istext) ? T_TEXT : 0));
    809               add_tool(tool);
    810               WinDismissDlg(hwnd,tool->id);
    811             }
    812           }
    813           break;
    814 
    815         case DID_CANCEL:
    816           WinDismissDlg(hwnd,0);
    817           break;
    818 
    819         case ADDBTN_EDITBMP:
    820           {
    821             CHAR idstr[6],filename[34];
    822 
    823             *idstr = 0;
    824             WinQueryDlgItemText(hwnd,ADDBTN_ID,6,idstr);
    825             if (!(USHORT)atoi(idstr)) {
    826               DosBeep(250,100);
    827               break;
    828             }
    829             sprintf(filename,"%u.BMP",atoi(idstr));
    830             if (IsFile(filename) != 1) {
    831               CHAR s[CCHMAXPATH] = "EMPTY.BMP";
    832               docopyf(COPY, s, filename);
     693        CHAR help[81], text[81], idstr[7];
     694        BOOL invisible, dropable, separator, istext, myicon;
     695        TOOL *tool;
     696
     697        WinQueryDlgItemText(hwnd, ADDBTN_HELP, 80, help);
     698        WinQueryDlgItemText(hwnd, ADDBTN_TEXT, 80, text);
     699        if (WinQueryButtonCheckstate(hwnd, ADDBTN_DROPABLE))
     700          dropable = TRUE;
     701        else
     702          dropable = FALSE;
     703        myicon = WinQueryButtonCheckstate(hwnd, ADDBTN_MYICON);
     704        if (WinQueryButtonCheckstate(hwnd, ADDBTN_VISIBLE))
     705          invisible = FALSE;
     706        else
     707          invisible = TRUE;
     708        if (WinQueryButtonCheckstate(hwnd, ADDBTN_SEPARATOR))
     709          separator = TRUE;
     710        else
     711          separator = FALSE;
     712        if (WinQueryButtonCheckstate(hwnd, ADDBTN_SHOWTEXT))
     713          istext = TRUE;
     714        else
     715          istext = FALSE;
     716        tool = INSTDATA(hwnd);
     717        if (tool) {                     /* just editing strings... */
     718          istext = ((tool->flags & T_TEXT) != 0);
     719          if (tool->help)
     720            free(tool->help);
     721          tool->help = NULL;
     722          if (tool->text)
     723            free(tool->text);
     724          tool->text = NULL;
     725          if (*help)
     726            tool->help = xstrdup(help, pszSrcFile, __LINE__);
     727          if (*text)
     728            tool->text = xstrdup(text, pszSrcFile, __LINE__);
     729          tool->flags = (((dropable) ? T_DROPABLE : 0) |
     730                         ((invisible) ? T_INVISIBLE : 0) |
     731                         ((separator) ? T_SEPARATOR : 0) |
     732                         ((myicon) ? T_MYICON : 0) | ((istext) ? T_TEXT : 0));
     733          fToolsChanged = TRUE;
     734          WinDismissDlg(hwnd, 1);
     735          break;
     736        }
     737        *idstr = 0;
     738        WinQueryDlgItemText(hwnd, ADDBTN_ID, 6, idstr);
     739        if (!(USHORT) atoi(idstr)) {
     740          DosBeep(250, 100);
     741          break;
     742        }
     743        tool = toolhead;
     744        while (tool) {
     745          if (tool->id == (USHORT) atoi(idstr) && tool != tool) {
     746            saymsg(MB_ENTER,
     747                   hwnd,
     748                   GetPString(IDS_DUPLICATETEXT),
     749                   GetPString(IDS_TOOLIDEXISTS));
     750            WinSetDlgItemText(hwnd, ADDBTN_ID, NullStr);
     751            WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, ADDBTN_ID));
     752            break;
     753          }
     754          tool = tool->next;
     755        }
     756        tool = xmallocz(sizeof(TOOL), pszSrcFile, __LINE__);
     757        if (tool) {
     758          if (*help)
     759            tool->help = xstrdup(help, pszSrcFile, __LINE__);
     760          if (*text)
     761            tool->text = xstrdup(text, pszSrcFile, __LINE__);
     762          tool->id = (USHORT) atoi(idstr);
     763          tool->flags = (((dropable) ? T_DROPABLE : 0) |
     764                         ((invisible) ? T_INVISIBLE : 0) |
     765                         ((separator) ? T_SEPARATOR : 0) |
     766                         ((myicon) ? T_MYICON : 0) | ((istext) ? T_TEXT : 0));
     767          add_tool(tool);
     768          WinDismissDlg(hwnd, tool->id);
     769        }
     770      }
     771      break;
     772
     773    case DID_CANCEL:
     774      WinDismissDlg(hwnd, 0);
     775      break;
     776
     777    case ADDBTN_EDITBMP:
     778      {
     779        CHAR idstr[6], filename[34];
     780
     781        *idstr = 0;
     782        WinQueryDlgItemText(hwnd, ADDBTN_ID, 6, idstr);
     783        if (!(USHORT) atoi(idstr)) {
     784          DosBeep(250, 100);
     785          break;
     786        }
     787        sprintf(filename, "%u.BMP", atoi(idstr));
     788        if (IsFile(filename) != 1) {
     789          CHAR s[CCHMAXPATH] = "EMPTY.BMP";
     790
     791          docopyf(COPY, s, filename);
     792        }
     793        runemf2(SEPARATE | WINDOWED,
     794                hwnd, NULL, NULL, "ICONEDIT.EXE %s", filename);
     795      }
     796      break;
     797
     798    case IDM_HELP:
     799      if (hwndHelp) {
     800        if (INSTDATA(hwnd))
     801          WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
     802                     MPFROM2SHORT(HELP_CHANGEBUTTON, 0),
     803                     MPFROMSHORT(HM_RESOURCEID));
     804        else
     805          WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
     806                     MPFROM2SHORT(HELP_ADDBUTTON, 0),
     807                     MPFROMSHORT(HM_RESOURCEID));
     808      }
     809      break;
     810    }
     811    return 0;
     812  }
     813  return WinDefDlgProc(hwnd, msg, mp1, mp2);
     814}
     815
     816MRESULT EXPENTRY PickToolProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
     817{
     818  switch (msg) {
     819  case WM_INITDLG:
     820    if (mp2) {
     821      CHAR s[133];
     822
     823      sprintf(s, GetPString(IDS_PICKTOOLTITLETEXT), (CHAR *) mp2);
     824      WinSetWindowText(hwnd, s);
     825    }
     826    {
     827      TOOL *tool;
     828      CHAR s[133];
     829
     830      tool = toolhead;
     831      while (tool) {
     832        sprintf(s, "%-5u  %s", tool->id, (tool->help) ? tool->help : "?");
     833        WinSendDlgItemMsg(hwnd,
     834                          PICKBTN_LISTBOX,
     835                          LM_INSERTITEM, MPFROMSHORT(LIT_END), MPFROMP(s));
     836        tool = tool->next;
     837      }
     838    }
     839    break;
     840
     841  case WM_CONTROL:
     842    if (SHORT1FROMMP(mp1) == PICKBTN_LISTBOX) {
     843      switch (SHORT2FROMMP(mp1)) {
     844      case LN_ENTER:
     845        PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID);
     846        break;
     847      }
     848    }
     849    return 0;
     850
     851  case WM_COMMAND:
     852    switch (SHORT1FROMMP(mp1)) {
     853    case DID_CANCEL:
     854      WinDismissDlg(hwnd, 0);
     855      break;
     856    case DID_OK:
     857      {
     858        SHORT sSelect;
     859        CHAR s[33];
     860
     861        sSelect = (SHORT) WinSendDlgItemMsg(hwnd, PICKBTN_LISTBOX,
     862                                            LM_QUERYSELECTION,
     863                                            MPFROMSHORT(LIT_FIRST), MPVOID);
     864        if (sSelect >= 0) {
     865          *s = 0;
     866          WinSendDlgItemMsg(hwnd, PICKBTN_LISTBOX, LM_QUERYITEMTEXT,
     867                            MPFROM2SHORT(sSelect, 32), MPFROMP(s));
     868          if (*s)
     869            WinDismissDlg(hwnd, (USHORT) atoi(s));
     870        }
     871      }
     872      break;
     873    }
     874    return 0;
     875  }
     876  return WinDefDlgProc(hwnd, msg, mp1, mp2);
     877}
     878
     879MRESULT EXPENTRY ToolIODlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
     880{
     881  switch (msg) {
     882  case WM_INITDLG:
     883    if (mp2)
     884      WinSetWindowULong(hwnd, QWL_USER, TRUE);
     885    else {
     886      WinSetWindowULong(hwnd, QWL_USER, FALSE);
     887      WinSetWindowText(hwnd, GetPString(IDS_LOADTOOLBOXTITLETEXT));
     888    }
     889    WinSendDlgItemMsg(hwnd,
     890                      SVBTN_ENTRY,
     891                      EM_SETTEXTLIMIT, MPFROM2SHORT(CCHMAXPATH, 0), MPVOID);
     892    {
     893      FILEFINDBUF3 findbuf;
     894      HDIR hDir;
     895      ULONG ulSearchCount, x = 0;
     896      CHAR *masks[] = { "*.TLS", "FM3TOOLS.DAT", NULL };
     897
     898      if (mp2)
     899        masks[1] = NULL;
     900      while (masks[x]) {
     901        hDir = HDIR_CREATE;
     902        ulSearchCount = 1L;
     903        DosError(FERR_DISABLEHARDERR);
     904        if (!DosFindFirst(masks[x],
     905                          &hDir,
     906                          FILE_ARCHIVED,
     907                          &findbuf,
     908                          sizeof(FILEFINDBUF3),
     909                          &ulSearchCount, FIL_STANDARD)) {
     910          do {
     911            priority_bumped();
     912            WinSendMsg(WinWindowFromID(hwnd,
     913                                       SVBTN_LISTBOX),
     914                       LM_INSERTITEM,
     915                       MPFROM2SHORT(LIT_SORTASCENDING, 0),
     916                       MPFROMP(findbuf.achName));
     917            ulSearchCount = 1L;
     918          } while (!DosFindNext(hDir,
     919                                &findbuf,
     920                                sizeof(FILEFINDBUF3), &ulSearchCount));
     921          DosFindClose(hDir);
     922          priority_bumped();
     923        }
     924        x++;
     925      }
     926      DosError(FERR_DISABLEHARDERR);
     927    }
     928    if (!WinSendDlgItemMsg(hwnd,
     929                           SVBTN_LISTBOX,
     930                           LM_QUERYITEMCOUNT, MPVOID, MPVOID)) {
     931      WinEnableWindow(WinWindowFromID(hwnd, SVBTN_LISTBOX), FALSE);
     932      PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
     933    }
     934    WinSetDlgItemText(hwnd,
     935                      SVBTN_CURRENT,
     936                      (*lasttoolbox) ? lasttoolbox : "FM3TOOLS.DAT");
     937    break;
     938
     939  case UM_SETUP:
     940    WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, SVBTN_ENTRY));
     941    return 0;
     942
     943  case WM_CONTROL:
     944    if (SHORT1FROMMP(mp1) == SVBTN_LISTBOX) {
     945      SHORT sSelect;
     946      CHAR szBuffer[CCHMAXPATH];
     947
     948      switch (SHORT2FROMMP(mp1)) {
     949      case LN_SELECT:
     950        sSelect = (SHORT) WinSendDlgItemMsg(hwnd, SVBTN_LISTBOX,
     951                                            LM_QUERYSELECTION,
     952                                            MPFROMSHORT(LIT_FIRST), MPVOID);
     953        if (sSelect >= 0) {
     954          *szBuffer = 0;
     955          WinSendDlgItemMsg(hwnd, SVBTN_LISTBOX, LM_QUERYITEMTEXT,
     956                            MPFROM2SHORT(sSelect, CCHMAXPATH),
     957                            MPFROMP(szBuffer));
     958          if (*szBuffer)
     959            WinSetDlgItemText(hwnd, SVBTN_ENTRY, szBuffer);
     960        }
     961        break;
     962
     963      case LN_ENTER:
     964        PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID);
     965        break;
     966      }
     967    }
     968    return 0;
     969
     970  case WM_COMMAND:
     971    switch (SHORT1FROMMP(mp1)) {
     972    case IDM_HELP:
     973      if (hwndHelp) {
     974        if (INSTDATA(hwnd))
     975          WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
     976                     MPFROM2SHORT(HELP_SAVETOOLS, 0),
     977                     MPFROMSHORT(HM_RESOURCEID));
     978        else
     979          WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
     980                     MPFROM2SHORT(HELP_LOADTOOLS, 0),
     981                     MPFROMSHORT(HM_RESOURCEID));
     982      }
     983      break;
     984
     985    case DID_CANCEL:
     986      WinDismissDlg(hwnd, 0);
     987      break;
     988
     989    case DID_OK:
     990      {
     991        BOOL saving = WinQueryWindowULong(hwnd, QWL_USER);
     992        CHAR temptools[CCHMAXPATH];
     993
     994        strcpy(temptools, lasttoolbox);
     995        if (fToolsChanged)
     996          save_tools(NULL);
     997        WinQueryDlgItemText(hwnd,
     998                            SVBTN_ENTRY, sizeof(lasttoolbox), lasttoolbox);
     999        if (*lasttoolbox) {
     1000          if (!strchr(lasttoolbox, '.'))
     1001            strcat(lasttoolbox, ".TLS");
     1002        }
     1003        if (saving && *lasttoolbox)
     1004          save_tools(NULL);
     1005        else {
     1006          if (!load_tools(NULL)) {
     1007            strcpy(lasttoolbox, temptools);
     1008            if (!load_tools(NULL)) {
     1009              *lasttoolbox = 0;
     1010              load_tools(NULL);
    8331011            }
    834             runemf2(SEPARATE | WINDOWED,
    835                     hwnd,
    836                     NULL,
    837                     NULL,
    838                     "ICONEDIT.EXE %s",
    839                     filename);
    840           }
    841           break;
    842 
    843         case IDM_HELP:
    844           if (hwndHelp) {
    845             if (INSTDATA(hwnd))
    846               WinSendMsg(hwndHelp,HM_DISPLAY_HELP,
    847                          MPFROM2SHORT(HELP_CHANGEBUTTON,0),
    848                          MPFROMSHORT(HM_RESOURCEID));
    849             else
    850               WinSendMsg(hwndHelp,HM_DISPLAY_HELP,
    851                          MPFROM2SHORT(HELP_ADDBUTTON,0),
    852                          MPFROMSHORT(HM_RESOURCEID));
    853           }
    854           break;
    855       }
    856       return 0;
    857   }
    858   return WinDefDlgProc(hwnd,msg,mp1,mp2);
    859 }
    860 
    861 
    862 MRESULT EXPENTRY PickToolProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
    863 {
    864   switch (msg) {
    865     case WM_INITDLG:
    866       if (mp2) {
    867         CHAR s[133];
    868 
    869         sprintf(s,
    870                 GetPString(IDS_PICKTOOLTITLETEXT),
    871                 (CHAR *)mp2);
    872         WinSetWindowText(hwnd,s);
    873       }
    874       {
    875         TOOL  *tool;
    876         CHAR   s[133];
    877 
    878         tool = toolhead;
    879         while (tool) {
    880           sprintf(s,
    881                   "%-5u  %s",
    882                   tool->id,
    883                   (tool->help) ? tool->help : "?");
    884           WinSendDlgItemMsg(hwnd,
    885                             PICKBTN_LISTBOX,
    886                             LM_INSERTITEM,
    887                             MPFROMSHORT(LIT_END),
    888                             MPFROMP(s));
    889           tool = tool->next;
    890         }
    891       }
    892       break;
    893 
    894     case WM_CONTROL:
    895       if (SHORT1FROMMP(mp1) == PICKBTN_LISTBOX) {
    896         switch (SHORT2FROMMP(mp1)) {
    897           case LN_ENTER:
    898             PostMsg(hwnd,WM_COMMAND,MPFROM2SHORT(DID_OK,0),MPVOID);
    899             break;
    900         }
    901       }
    902       return 0;
    903 
    904     case WM_COMMAND:
    905       switch (SHORT1FROMMP(mp1)) {
    906         case DID_CANCEL:
    907           WinDismissDlg(hwnd,0);
    908           break;
    909         case DID_OK:
    910           {
    911             SHORT  sSelect;
    912             CHAR   s[33];
    913 
    914             sSelect = (SHORT)WinSendDlgItemMsg(hwnd,PICKBTN_LISTBOX,
    915                                                LM_QUERYSELECTION,
    916                                                MPFROMSHORT(LIT_FIRST),
    917                                                MPVOID);
    918             if (sSelect >= 0) {
    919               *s = 0;
    920               WinSendDlgItemMsg(hwnd,PICKBTN_LISTBOX,LM_QUERYITEMTEXT,
    921                                 MPFROM2SHORT(sSelect,32),MPFROMP(s));
    922               if (*s)
    923                 WinDismissDlg(hwnd,(USHORT)atoi(s));
    924             }
    925           }
    926           break;
    927       }
    928       return 0;
    929   }
    930   return WinDefDlgProc(hwnd,msg,mp1,mp2);
    931 }
    932 
    933 
    934 MRESULT EXPENTRY ToolIODlgProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
    935 {
    936   switch (msg) {
    937     case WM_INITDLG:
    938       if (mp2)
    939         WinSetWindowULong(hwnd,QWL_USER,TRUE);
    940       else {
    941         WinSetWindowULong(hwnd,QWL_USER,FALSE);
    942         WinSetWindowText(hwnd,
    943                          GetPString(IDS_LOADTOOLBOXTITLETEXT));
    944       }
    945       WinSendDlgItemMsg(hwnd,
    946                         SVBTN_ENTRY,
    947                         EM_SETTEXTLIMIT,
    948                         MPFROM2SHORT(CCHMAXPATH,0),
    949                         MPVOID);
    950       {
    951         FILEFINDBUF3 findbuf;
    952         HDIR         hDir;
    953         ULONG        ulSearchCount,x = 0;
    954         CHAR        *masks[] = {"*.TLS","FM3TOOLS.DAT",NULL};
    955 
    956         if (mp2)
    957           masks[1] = NULL;
    958         while (masks[x]) {
    959           hDir = HDIR_CREATE;
    960           ulSearchCount = 1L;
    961           DosError(FERR_DISABLEHARDERR);
    962           if (!DosFindFirst(masks[x],
    963                            &hDir,
    964                            FILE_ARCHIVED,
    965                            &findbuf,
    966                            sizeof(FILEFINDBUF3),
    967                            &ulSearchCount,
    968                            FIL_STANDARD)) {
    969             do {
    970               priority_bumped();
    971               WinSendMsg(WinWindowFromID(hwnd,
    972                                          SVBTN_LISTBOX),
    973                          LM_INSERTITEM,
    974                          MPFROM2SHORT(LIT_SORTASCENDING,0),
    975                          MPFROMP(findbuf.achName));
    976               ulSearchCount = 1L;
    977             } while (!DosFindNext(hDir,
    978                                  &findbuf,
    979                                  sizeof(FILEFINDBUF3),
    980                                  &ulSearchCount));
    981             DosFindClose(hDir);
    982             priority_bumped();
    983           }
    984           x++;
    985         }
    986         DosError(FERR_DISABLEHARDERR);
    987       }
    988       if (!WinSendDlgItemMsg(hwnd,
    989                             SVBTN_LISTBOX,
    990                             LM_QUERYITEMCOUNT,
    991                             MPVOID,
    992                             MPVOID)) {
    993         WinEnableWindow(WinWindowFromID(hwnd,SVBTN_LISTBOX),
    994                         FALSE);
    995         PostMsg(hwnd,UM_SETUP,MPVOID,MPVOID);
    996       }
    997       WinSetDlgItemText(hwnd,
    998                         SVBTN_CURRENT,
    999                         (*lasttoolbox) ?
    1000                          lasttoolbox :
    1001                          "FM3TOOLS.DAT");
    1002       break;
    1003 
    1004     case UM_SETUP:
    1005       WinSetFocus(HWND_DESKTOP,WinWindowFromID(hwnd,SVBTN_ENTRY));
    1006       return 0;
    1007 
    1008     case WM_CONTROL:
    1009       if (SHORT1FROMMP(mp1) == SVBTN_LISTBOX) {
    1010         SHORT sSelect;
    1011         CHAR  szBuffer[CCHMAXPATH];
    1012 
    1013         switch (SHORT2FROMMP(mp1)) {
    1014           case LN_SELECT:
    1015             sSelect = (SHORT)WinSendDlgItemMsg(hwnd,SVBTN_LISTBOX,
    1016                                                LM_QUERYSELECTION,
    1017                                                MPFROMSHORT(LIT_FIRST),
    1018                                                MPVOID);
    1019             if (sSelect >= 0) {
    1020               *szBuffer = 0;
    1021               WinSendDlgItemMsg(hwnd,SVBTN_LISTBOX,LM_QUERYITEMTEXT,
    1022                                 MPFROM2SHORT(sSelect,CCHMAXPATH),
    1023                                 MPFROMP(szBuffer));
    1024               if (*szBuffer)
    1025                 WinSetDlgItemText(hwnd,SVBTN_ENTRY,szBuffer);
    1026             }
    1027             break;
    1028 
    1029           case LN_ENTER:
    1030             PostMsg(hwnd,WM_COMMAND,MPFROM2SHORT(DID_OK,0),MPVOID);
    1031             break;
    1032         }
    1033       }
    1034       return 0;
    1035 
    1036     case WM_COMMAND:
    1037       switch (SHORT1FROMMP(mp1)) {
    1038         case IDM_HELP:
    1039           if (hwndHelp) {
    1040             if (INSTDATA(hwnd))
    1041               WinSendMsg(hwndHelp,HM_DISPLAY_HELP,
    1042                          MPFROM2SHORT(HELP_SAVETOOLS,0),
    1043                          MPFROMSHORT(HM_RESOURCEID));
    1044             else
    1045               WinSendMsg(hwndHelp,HM_DISPLAY_HELP,
    1046                          MPFROM2SHORT(HELP_LOADTOOLS,0),
    1047                          MPFROMSHORT(HM_RESOURCEID));
    1048           }
    1049           break;
    1050 
    1051         case DID_CANCEL:
    1052           WinDismissDlg(hwnd,0);
    1053           break;
    1054 
    1055         case DID_OK:
    1056           {
    1057             BOOL saving = WinQueryWindowULong(hwnd,QWL_USER);
    1058             CHAR temptools[CCHMAXPATH];
    1059 
    1060             strcpy(temptools,lasttoolbox);
    1061             if (fToolsChanged)
    1062               save_tools(NULL);
    1063             WinQueryDlgItemText(hwnd,
    1064                                 SVBTN_ENTRY,
    1065                                 sizeof(lasttoolbox),
    1066                                 lasttoolbox);
    1067             if (*lasttoolbox) {
    1068               if (!strchr(lasttoolbox,'.'))
    1069                 strcat(lasttoolbox,".TLS");
    1070             }
    1071             if (saving && *lasttoolbox)
    1072               save_tools(NULL);
    1073             else {
    1074               if (!load_tools(NULL)) {
    1075                 strcpy(lasttoolbox,temptools);
    1076                 if (!load_tools(NULL)) {
    1077                   *lasttoolbox = 0;
    1078                   load_tools(NULL);
    1079                 }
    1080               }
    1081             }
    1082             PrfWriteProfileString(fmprof,
    1083                                   FM3Str,
    1084                                   "LastToolBox",
    1085                                   lasttoolbox);
    1086           }
    1087           WinDismissDlg(hwnd,1);
    1088           break;
    1089       }
    1090       return 0;
    1091   }
    1092   return WinDefDlgProc(hwnd,msg,mp1,mp2);
    1093 }
    1094 
     1012          }
     1013        }
     1014        PrfWriteProfileString(fmprof, FM3Str, "LastToolBox", lasttoolbox);
     1015      }
     1016      WinDismissDlg(hwnd, 1);
     1017      break;
     1018    }
     1019    return 0;
     1020  }
     1021  return WinDefDlgProc(hwnd, msg, mp1, mp2);
     1022}
Note: See TracChangeset for help on using the changeset viewer.