Changeset 445 for trunk/dll/command.c


Ignore:
Timestamp:
Aug 24, 2006, 6:51:20 AM (19 years ago)
Author:
root
Message:

Better can't add message

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/command.c

    r406 r445  
    1313  14 Jul 06 SHL Use Runtime_Error
    1414  29 Jul 06 SHL Use xfgets_bstripcr
     15  15 Aug 06 SHL Better can't add message
    1516
    1617***********************************************************************/
     
    5354    case DM_DRAGOVER:
    5455      if(!emphasized) {
    55         emphasized = TRUE;
    56         DrawTargetEmphasis(hwnd,emphasized);
     56        emphasized = TRUE;
     57        DrawTargetEmphasis(hwnd,emphasized);
    5758      }
    5859      if(AcceptOneDrop(mp1,mp2))
    59         return MRFROM2SHORT(DOR_DROP,
    60                             DO_MOVE);
     60        return MRFROM2SHORT(DOR_DROP,
     61                            DO_MOVE);
    6162      return MRFROM2SHORT(DOR_NEVERDROP,0);
    6263
    6364    case DM_DRAGLEAVE:
    6465      if(emphasized) {
    65         emphasized = FALSE;
    66         DrawTargetEmphasis(hwnd,emphasized);
     66        emphasized = FALSE;
     67        DrawTargetEmphasis(hwnd,emphasized);
    6768      }
    6869      break;
     
    7071    case DM_DROPHELP:
    7172      DropHelp(mp1,
    72                mp2,
    73                hwnd,
    74                GetPString(IDS_DROPCMDHELPTEXT));
     73               mp2,
     74               hwnd,
     75               GetPString(IDS_DROPCMDHELPTEXT));
    7576      return 0;
    7677
    7778    case DM_DROP:
    7879      {
    79         char szFrom[CCHMAXPATH + 5];
    80 
    81         if(emphasized) {
    82           emphasized = FALSE;
    83           DrawTargetEmphasis(hwnd,emphasized);
    84         }
    85         if(GetOneDrop(mp1,mp2,szFrom,CCHMAXPATH)) {
    86           strcat(szFrom," %a");
    87           WinSetWindowText(hwnd,szFrom);
    88         }
     80        char szFrom[CCHMAXPATH + 5];
     81
     82        if(emphasized) {
     83          emphasized = FALSE;
     84          DrawTargetEmphasis(hwnd,emphasized);
     85        }
     86        if(GetOneDrop(mp1,mp2,szFrom,CCHMAXPATH)) {
     87          strcat(szFrom," %a");
     88          WinSetWindowText(hwnd,szFrom);
     89        }
    8990      }
    9091      return 0;
    9192  }
    9293  return (oldproc) ? oldproc(hwnd,msg,mp1,mp2) :
    93                      WinDefWindowProc(hwnd,msg,mp1,mp2);
     94                     WinDefWindowProc(hwnd,msg,mp1,mp2);
    9495}
    9596
     
    100101    case WM_INITDLG:
    101102      if(!cmdhead) {
    102         WinDismissDlg(hwnd,0);
    103         break;
     103        WinDismissDlg(hwnd,0);
     104        break;
    104105      }
    105106      {
    106         LINKCMDS *info;
    107         SHORT     x;
    108 
    109         info = cmdhead;
    110         while(info) {
    111           x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_INSERTITEM,
    112                                        MPFROMSHORT(LIT_END),
    113                                        MPFROMP(info->title));
    114           if(x < 0) {
    115             Runtime_Error(pszSrcFile, __LINE__, "no cmd");
    116             WinDismissDlg(hwnd,0);
     107        LINKCMDS *info;
     108        SHORT     x;
     109
     110        info = cmdhead;
     111        while(info) {
     112          x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_INSERTITEM,
     113                                       MPFROMSHORT(LIT_END),
     114                                       MPFROMP(info->title));
     115          if(x < 0) {
     116            Runtime_Error(pszSrcFile, __LINE__, "no cmd");
     117            WinDismissDlg(hwnd,0);
    117118          }
    118119          else {
    119             WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SETITEMHANDLE,
    120                               MPFROMSHORT(x),MPFROMP(info));
    121           }
    122           info = info->next;
    123         }
     120            WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SETITEMHANDLE,
     121                              MPFROMSHORT(x),MPFROMP(info));
     122          }
     123          info = info->next;
     124        }
    124125      }
    125126      break;
     
    130131    case WM_COMMAND:
    131132      switch(SHORT1FROMMP(mp1)) {
    132         case DID_CANCEL:
    133           WinDismissDlg(hwnd,0);
    134           break;
    135 
    136         case DID_OK:
    137           {
    138             LINKCMDS *temphead = NULL,*info,*last = NULL,*temptail = NULL;
    139             SHORT     sSelect,numitems;
    140 
    141             sSelect = 0;
    142             numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
    143                                                 LM_QUERYITEMCOUNT,
    144                                                 MPVOID,MPVOID);
    145             while(numitems) {
    146               info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
    147                                                    LM_QUERYITEMHANDLE,
    148                                                    MPFROMSHORT(sSelect++),
    149                                                    MPVOID);
    150               if(info) {
    151                 if(!temphead) {
    152                   temphead = info;
    153                   info->prev = NULL;
    154                 }
    155                 else {
    156                   last->next = info;
    157                   info->prev = last;
    158                 }
    159                 temptail = info;
    160                 last = info;
    161                 info->next = NULL;
    162               }
    163               numitems--;
    164             }
    165             sSelect = 0;
    166             numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
    167                                                 LM_QUERYITEMCOUNT,
    168                                                 MPVOID,MPVOID);
    169             while(numitems) {
    170               info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
    171                                                    LM_QUERYITEMHANDLE,
    172                                                    MPFROMSHORT(sSelect++),
    173                                                    MPVOID);
    174               if(info) {
    175                 if(!temphead) {
    176                   temphead = info;
    177                   info->prev = NULL;
    178                 }
    179                 else {
    180                   last->next = info;
    181                   info->prev = last;
    182                 }
    183                 temptail = info;
    184                 last = info;
    185                 info->next = NULL;
    186               }
    187               numitems--;
    188             }
    189             cmdhead = temphead;
    190             cmdtail = temptail;
    191           }
    192           WinDismissDlg(hwnd,1);
    193           break;
    194 
    195         case IDM_HELP:
    196           if(hwndHelp)
    197             WinSendMsg(hwndHelp,HM_DISPLAY_HELP,
    198                        MPFROM2SHORT(HELP_REORDERCOMMANDS,0),
    199                        MPFROMSHORT(HM_RESOURCEID));
    200           break;
    201 
    202         case RE_ADD:
    203           {
    204             SHORT     sSelect,x;
    205             LINKCMDS *info;
    206 
    207             sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
    208                                                LM_QUERYSELECTION,
    209                                                MPFROMSHORT(LIT_FIRST),
    210                                                MPVOID);
    211             while(sSelect >= 0) {
    212               info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
    213                                                    LM_QUERYITEMHANDLE,
    214                                                    MPFROMSHORT(sSelect),
    215                                                    MPVOID);
    216               if(info) {
    217                 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
    218                                              LM_INSERTITEM,
    219                                              MPFROM2SHORT(LIT_END,0),
    220                                              MPFROMP(info->title));
    221                 if(x >= 0) {
    222                   WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
    223                                     LM_SETITEMHANDLE,
    224                                     MPFROMSHORT(x),
    225                                     MPFROMP(info));
    226                   WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_DELETEITEM,
    227                                     MPFROMSHORT(sSelect),MPVOID);
    228                 }
    229               }
    230               else
    231                 WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SELECTITEM,
    232                                   MPFROMSHORT(sSelect),MPFROMSHORT(FALSE));
    233               sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
    234                                                   LM_QUERYSELECTION,
    235                                                   MPFROMSHORT(LIT_FIRST),
    236                                                   MPVOID);
    237             }
    238           }
    239           break;
    240 
    241         case RE_REMOVE:
    242           {
    243             SHORT     sSelect,x;
    244             LINKCMDS *info;
    245 
    246             sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
    247                                                LM_QUERYSELECTION,
    248                                                MPFROMSHORT(LIT_FIRST),
    249                                                MPVOID);
    250             while(sSelect >= 0) {
    251               info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
    252                                                    LM_QUERYITEMHANDLE,
    253                                                    MPFROMSHORT(sSelect),
    254                                                    MPVOID);
    255               if(info) {
    256                 x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
    257                                              LM_INSERTITEM,
    258                                              MPFROM2SHORT(LIT_END,0),
    259                                              MPFROMP(info->title));
    260                 if(x >= 0) {
    261                   WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
    262                                     LM_SETITEMHANDLE,
    263                                     MPFROMSHORT(x),
    264                                     MPFROMP(info));
    265                   WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_DELETEITEM,
    266                                     MPFROMSHORT(sSelect),MPVOID);
    267                 }
    268               }
    269               else
    270                 WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_SELECTITEM,
    271                                   MPFROMSHORT(sSelect),MPFROMSHORT(FALSE));
    272               sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
    273                                                   LM_QUERYSELECTION,
    274                                                   MPFROMSHORT(LIT_FIRST),
    275                                                   MPVOID);
    276             }
    277           }
    278           break;
     133        case DID_CANCEL:
     134          WinDismissDlg(hwnd,0);
     135          break;
     136
     137        case DID_OK:
     138          {
     139            LINKCMDS *temphead = NULL,*info,*last = NULL,*temptail = NULL;
     140            SHORT     sSelect,numitems;
     141
     142            sSelect = 0;
     143            numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
     144                                                LM_QUERYITEMCOUNT,
     145                                                MPVOID,MPVOID);
     146            while(numitems) {
     147              info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
     148                                                   LM_QUERYITEMHANDLE,
     149                                                   MPFROMSHORT(sSelect++),
     150                                                   MPVOID);
     151              if(info) {
     152                if(!temphead) {
     153                  temphead = info;
     154                  info->prev = NULL;
     155                }
     156                else {
     157                  last->next = info;
     158                  info->prev = last;
     159                }
     160                temptail = info;
     161                last = info;
     162                info->next = NULL;
     163              }
     164              numitems--;
     165            }
     166            sSelect = 0;
     167            numitems = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
     168                                                LM_QUERYITEMCOUNT,
     169                                                MPVOID,MPVOID);
     170            while(numitems) {
     171              info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
     172                                                   LM_QUERYITEMHANDLE,
     173                                                   MPFROMSHORT(sSelect++),
     174                                                   MPVOID);
     175              if(info) {
     176                if(!temphead) {
     177                  temphead = info;
     178                  info->prev = NULL;
     179                }
     180                else {
     181                  last->next = info;
     182                  info->prev = last;
     183                }
     184                temptail = info;
     185                last = info;
     186                info->next = NULL;
     187              }
     188              numitems--;
     189            }
     190            cmdhead = temphead;
     191            cmdtail = temptail;
     192          }
     193          WinDismissDlg(hwnd,1);
     194          break;
     195
     196        case IDM_HELP:
     197          if(hwndHelp)
     198            WinSendMsg(hwndHelp,HM_DISPLAY_HELP,
     199                       MPFROM2SHORT(HELP_REORDERCOMMANDS,0),
     200                       MPFROMSHORT(HM_RESOURCEID));
     201          break;
     202
     203        case RE_ADD:
     204          {
     205            SHORT     sSelect,x;
     206            LINKCMDS *info;
     207
     208            sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
     209                                               LM_QUERYSELECTION,
     210                                               MPFROMSHORT(LIT_FIRST),
     211                                               MPVOID);
     212            while(sSelect >= 0) {
     213              info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
     214                                                   LM_QUERYITEMHANDLE,
     215                                                   MPFROMSHORT(sSelect),
     216                                                   MPVOID);
     217              if(info) {
     218                x = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
     219                                             LM_INSERTITEM,
     220                                             MPFROM2SHORT(LIT_END,0),
     221                                             MPFROMP(info->title));
     222                if(x >= 0) {
     223                  WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
     224                                    LM_SETITEMHANDLE,
     225                                    MPFROMSHORT(x),
     226                                    MPFROMP(info));
     227                  WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_DELETEITEM,
     228                                    MPFROMSHORT(sSelect),MPVOID);
     229                }
     230              }
     231              else
     232                WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,LM_SELECTITEM,
     233                                  MPFROMSHORT(sSelect),MPFROMSHORT(FALSE));
     234              sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
     235                                                  LM_QUERYSELECTION,
     236                                                  MPFROMSHORT(LIT_FIRST),
     237                                                  MPVOID);
     238            }
     239          }
     240          break;
     241
     242        case RE_REMOVE:
     243          {
     244            SHORT     sSelect,x;
     245            LINKCMDS *info;
     246
     247            sSelect = (SHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
     248                                               LM_QUERYSELECTION,
     249                                               MPFROMSHORT(LIT_FIRST),
     250                                               MPVOID);
     251            while(sSelect >= 0) {
     252              info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
     253                                                   LM_QUERYITEMHANDLE,
     254                                                   MPFROMSHORT(sSelect),
     255                                                   MPVOID);
     256              if(info) {
     257                x = (SHORT)WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
     258                                             LM_INSERTITEM,
     259                                             MPFROM2SHORT(LIT_END,0),
     260                                             MPFROMP(info->title));
     261                if(x >= 0) {
     262                  WinSendDlgItemMsg(hwnd,RE_ADDLISTBOX,
     263                                    LM_SETITEMHANDLE,
     264                                    MPFROMSHORT(x),
     265                                    MPFROMP(info));
     266                  WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_DELETEITEM,
     267                                    MPFROMSHORT(sSelect),MPVOID);
     268                }
     269              }
     270              else
     271                WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,LM_SELECTITEM,
     272                                  MPFROMSHORT(sSelect),MPFROMSHORT(FALSE));
     273              sSelect = (USHORT)WinSendDlgItemMsg(hwnd,RE_REMOVELISTBOX,
     274                                                  LM_QUERYSELECTION,
     275                                                  MPFROMSHORT(LIT_FIRST),
     276                                                  MPVOID);
     277            }
     278          }
     279          break;
    279280      }
    280281      return 0;
     
    337338    while (!feof(fp)) {
    338339      if (!xfgets_bstripcr(title,sizeof(title),fp,pszSrcFile,__LINE__))
    339         break;
     340        break;
    340341      title[34] = 0;                    // fixme to know why chopped this way?
    341342      bstripcr(title);
    342343      if (!*title || *title == ';')
    343         continue;
     344        continue;
    344345      if (!xfgets(cl,sizeof(cl),fp,pszSrcFile,__LINE__))
    345         break;                       /* error! */
     346        break;                       /* error! */
    346347      if (!xfgets(flags,72,fp,pszSrcFile,__LINE__))
    347         break;                       /* error! */
     348        break;                       /* error! */
    348349      cl[1000] = 0;                     // fixme to know why chopped this way?
    349350      bstripcr(cl);
     
    351352      bstripcr(flags);
    352353      if(!*cl)
    353         continue;
     354        continue;
    354355      info = xmallocz(sizeof(LINKCMDS),pszSrcFile,__LINE__);
    355356      if (info) {
    356         info->cl = xstrdup(cl,pszSrcFile,__LINE__);
    357         info->title = xstrdup(title,pszSrcFile,__LINE__);
    358         info->flags = atol(flags);
    359         if(!info->cl || !info->title) {
    360           if(info->cl)
    361             free(info->cl);
    362           if(info->title)
    363             free(info->title);
    364           free(info);
    365           break;
    366         }
    367         if(!cmdhead)
    368           cmdhead = info;
    369         else {
    370           cmdtail->next = info;
    371           info->prev = cmdtail;
    372         }
    373         cmdtail = info;
     357        info->cl = xstrdup(cl,pszSrcFile,__LINE__);
     358        info->title = xstrdup(title,pszSrcFile,__LINE__);
     359        info->flags = atol(flags);
     360        if(!info->cl || !info->title) {
     361          if(info->cl)
     362            free(info->cl);
     363          if(info->title)
     364            free(info->title);
     365          free(info);
     366          break;
     367        }
     368        if(!cmdhead)
     369          cmdhead = info;
     370        else {
     371          cmdtail->next = info;
     372          info->prev = cmdtail;
     373        }
     374        cmdtail = info;
    374375      }
    375376    }
     
    398399    while(info) {
    399400      fprintf(fp,
    400               ";\n%0.34s\n%0.1000s\n%lu\n",
    401               info->title,
    402               info->cl,
    403               info->flags);
     401              ";\n%0.34s\n%0.1000s\n%lu\n",
     402              info->title,
     403              info->cl,
     404              info->flags);
    404405      info = info->next;
    405406    }
     
    409410
    410411
    411 LINKCMDS * add_command (COMMAND *addme)
     412//== add_command() Add command to list ==
     413
     414LINKCMDS *add_command (COMMAND *addme)
    412415{
    413416  LINKCMDS *info;
    414417
    415   if(addme && *addme->cl && *addme->title) {
    416     info = cmdhead;
    417     while(info) {
    418       if(!stricmp(info->title,addme->title))
    419         return NULL;
    420       info = info->next;
    421     }
    422     if(!info) {
    423       info = xmallocz(sizeof(LINKCMDS),pszSrcFile,__LINE__);
    424       if(info) {
    425         info->cl = xstrdup(addme->cl,pszSrcFile,__LINE__);
    426         info->title = xstrdup(addme->title,pszSrcFile,__LINE__);
    427         if(addme->flags)
    428           info->flags = addme->flags;
    429         if(!info->cl || !info->title) {
    430           if(info->cl)
    431             free(info->cl);
    432           if(info->title)
    433             free(info->title);
    434           free(info);
    435         }
    436         else {
    437           if(!cmdhead)                    /* only item in list */
    438             cmdhead = cmdtail = info;
    439           else {                          /* place at tail */
    440             cmdtail->next = info;
    441             info->prev = cmdtail;
    442             cmdtail = info;
    443           }
    444           return info;
    445         }
    446       }
    447     }
    448   }
    449   return NULL;
     418  if (!addme || !*addme->cl || !*addme->title)
     419    return NULL;                // No data
     420  info = cmdhead;
     421  while (info) {
     422    if (!stricmp(info->title,addme->title))
     423      return NULL;              // Got a dup
     424    info = info->next;
     425  }
     426  info = xmallocz(sizeof(LINKCMDS),pszSrcFile,__LINE__);
     427  if (!info)
     428    return NULL;
     429  info->cl = xstrdup(addme->cl,pszSrcFile,__LINE__);
     430  info->title = xstrdup(addme->title,pszSrcFile,__LINE__);
     431  if (addme->flags)
     432    info->flags = addme->flags;
     433  if (!info->cl || !info->title) {
     434    xfree(info->cl);
     435    xfree(info->title);
     436    free(info);
     437    return NULL;
     438  }
     439  if (!cmdhead)                         /* only item in list */
     440    cmdhead = cmdtail = info;
     441  else {
     442    /* place at tail */
     443    cmdtail->next = info;
     444    info->prev = cmdtail;
     445    cmdtail = info;
     446  }
     447  return info;
    450448}
    451449
     
    459457    while(info) {
    460458      if(!stricmp(info->title,killme)) {
    461         if(info == cmdhead) {
    462           cmdhead = info->next;
    463           if(info == cmdtail)
    464             cmdtail = info->prev;
    465         }
    466         else {
    467           if(info->next)
    468             (info->next)->prev = info->prev;
    469           if(info->prev)
    470             (info->prev)->next = info->next;
    471           if(info == cmdtail)
    472             cmdtail = info->prev;
    473         }
    474         free(info->cl);
    475         free(info->title);
    476         free(info);
    477         return TRUE;
     459        if(info == cmdhead) {
     460          cmdhead = info->next;
     461          if(info == cmdtail)
     462            cmdtail = info->prev;
     463        }
     464        else {
     465          if(info->next)
     466            (info->next)->prev = info->prev;
     467          if(info->prev)
     468            (info->prev)->next = info->next;
     469          if(info == cmdtail)
     470            cmdtail = info->prev;
     471        }
     472        free(info->cl);
     473        free(info->title);
     474        free(info);
     475        return TRUE;
    478476      }
    479477      info = info->next;
     
    493491      WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_DELETEALL,MPVOID,MPVOID);
    494492      WinSendDlgItemMsg(hwnd,CMD_CL,EM_SETTEXTLIMIT,
    495                         MPFROM2SHORT(1000,0),MPVOID);
     493                        MPFROM2SHORT(1000,0),MPVOID);
    496494      WinSendDlgItemMsg(hwnd,CMD_TITLE,EM_SETTEXTLIMIT,
    497                         MPFROM2SHORT(33,0),MPVOID);
     495                        MPFROM2SHORT(33,0),MPVOID);
    498496      WinSetDlgItemText(hwnd,CMD_CL,NullStr);
    499497      WinSetDlgItemText(hwnd,CMD_TITLE,NullStr);
     
    503501      info = cmdhead;
    504502      while(info) {
    505         x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_INSERTITEM,
    506                                      MPFROM2SHORT(LIT_END,0),
    507                                      MPFROMP(info->title));
    508         if(x >= 0)
    509           WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_SETITEMHANDLE,
    510                             MPFROMSHORT(x),MPFROMP(info));
    511         info = info->next;
     503        x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_INSERTITEM,
     504                                     MPFROM2SHORT(LIT_END,0),
     505                                     MPFROMP(info->title));
     506        if(x >= 0)
     507          WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_SETITEMHANDLE,
     508                            MPFROMSHORT(x),MPFROMP(info));
     509        info = info->next;
    512510      }
    513511      WinSendDlgItemMsg(hwnd,CMD_LISTBOX,LM_SELECTITEM,
    514                         MPFROMSHORT(0),MPFROMSHORT(TRUE));
     512                        MPFROMSHORT(0),MPFROMSHORT(TRUE));
    515513      {
    516         PFNWP oldproc;
    517 
    518         oldproc = WinSubclassWindow(WinWindowFromID(hwnd,CMD_CL),
    519                                     (PFNWP)CommandTextProc);
    520         if(oldproc)
    521           WinSetWindowPtr(WinWindowFromID(hwnd,CMD_CL),0,(PVOID)oldproc);
     514        PFNWP oldproc;
     515
     516        oldproc = WinSubclassWindow(WinWindowFromID(hwnd,CMD_CL),
     517                                    (PFNWP)CommandTextProc);
     518        if(oldproc)
     519          WinSetWindowPtr(WinWindowFromID(hwnd,CMD_CL),0,(PVOID)oldproc);
    522520      }
    523521      break;
     
    525523    case WM_CONTROL:
    526524      if(SHORT1FROMMP(mp1) == CMD_LISTBOX) {
    527         switch(SHORT2FROMMP(mp1)) {
    528           case LN_ENTER:
    529           case LN_SELECT:
    530             x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,
    531                                         LM_QUERYSELECTION,
    532                                         MPFROMSHORT(LIT_FIRST),
    533                                         MPVOID);
    534             if(x >= 0) {
    535               info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,
    536                                                    LM_QUERYITEMHANDLE,
    537                                                    MPFROMSHORT(x),
    538                                                    MPVOID);
    539               if(!info) {
    540                 Runtime_Error(pszSrcFile, __LINE__, "LM_QUERYITEMHANDLE");
    541                 break;
    542               }
    543               WinSetDlgItemText(hwnd,CMD_CL,info->cl);
    544               if(!(info->flags & 1023))
    545                 WinCheckButton(hwnd,CMD_DEFAULT,TRUE);
    546               else {
    547                 if(info->flags & FULLSCREEN)
    548                   WinCheckButton(hwnd,CMD_FULLSCREEN,TRUE);
    549                 else if(info->flags & MINIMIZED)
    550                   WinCheckButton(hwnd,CMD_MINIMIZED,TRUE);
    551                 else if(info->flags & MAXIMIZED)
    552                   WinCheckButton(hwnd,CMD_MAXIMIZED,TRUE);
    553                 else if(info->flags & INVISIBLE)
    554                   WinCheckButton(hwnd,CMD_INVISIBLE,TRUE);
    555               }
    556               WinCheckButton(hwnd,CMD_PROMPT,((info->flags & PROMPT) != 0));
    557               WinCheckButton(hwnd,CMD_KEEP,((info->flags & KEEP) != 0));
    558               WinCheckButton(hwnd,CMD_ONCE,((info->flags & ONCE) != 0));
    559               WinSetDlgItemText(hwnd,CMD_TITLE,info->title);
    560               {
    561                 CHAR  env[1002];
    562                 ULONG size;
    563 
    564                 *env = 0;
    565                 size = sizeof(env) - 1;
    566                 if(PrfQueryProfileData(fmprof,FM3Str,info->cl,env,&size) &&
    567                    *env)
    568                   WinSetDlgItemText(hwnd,CMD_ENVIRON,env);
    569                 else
    570                   WinSetDlgItemText(hwnd,CMD_ENVIRON,NullStr);
    571               }
    572             }
    573             break;
    574         }
     525        switch(SHORT2FROMMP(mp1)) {
     526          case LN_ENTER:
     527          case LN_SELECT:
     528            x = (SHORT)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,
     529                                        LM_QUERYSELECTION,
     530                                        MPFROMSHORT(LIT_FIRST),
     531                                        MPVOID);
     532            if(x >= 0) {
     533              info = (LINKCMDS *)WinSendDlgItemMsg(hwnd,CMD_LISTBOX,
     534                                                   LM_QUERYITEMHANDLE,
     535                                                   MPFROMSHORT(x),
     536                                                   MPVOID);
     537              if(!info) {
     538                Runtime_Error(pszSrcFile, __LINE__, "LM_QUERYITEMHANDLE");
     539                break;
     540              }
     541              WinSetDlgItemText(hwnd,CMD_CL,info->cl);
     542              if(!(info->flags & 1023))
     543                WinCheckButton(hwnd,CMD_DEFAULT,TRUE);
     544              else {
     545                if(info->flags & FULLSCREEN)
     546                  WinCheckButton(hwnd,CMD_FULLSCREEN,TRUE);
     547                else if(info->flags & MINIMIZED)
     548                  WinCheckButton(hwnd,CMD_MINIMIZED,TRUE);
     549                else if(info->flags & MAXIMIZED)
     550                  WinCheckButton(hwnd,CMD_MAXIMIZED,TRUE);
     551                else if(info->flags & INVISIBLE)
     552                  WinCheckButton(hwnd,CMD_INVISIBLE,TRUE);
     553              }
     554              WinCheckButton(hwnd,CMD_PROMPT,((info->flags & PROMPT) != 0));
     555              WinCheckButton(hwnd,CMD_KEEP,((info->flags & KEEP) != 0));
     556              WinCheckButton(hwnd,CMD_ONCE,((info->flags & ONCE) != 0));
     557              WinSetDlgItemText(hwnd,CMD_TITLE,info->title);
     558              {
     559                CHAR  env[1002];
     560                ULONG size;
     561
     562                *env = 0;
     563                size = sizeof(env) - 1;
     564                if(PrfQueryProfileData(fmprof,FM3Str,info->cl,env,&size) &&
     565                   *env)
     566                  WinSetDlgItemText(hwnd,CMD_ENVIRON,env);
     567                else
     568                  WinSetDlgItemText(hwnd,CMD_ENVIRON,NullStr);
     569              }
     570            }
     571            break;
     572        }
    575573      }
    576574      return 0;
     
    578576    case WM_COMMAND:
    579577      switch(SHORT1FROMMP(mp1)) {
    580         case CMD_FIND:
    581           {
    582             CHAR filename[CCHMAXPATH + 9];
    583 
    584             *filename = 0;
    585             if(insert_filename(hwnd,filename,2,FALSE) && *filename) {
    586               strcat(filename," %a");
    587               WinSetDlgItemText(hwnd,CMD_CL,filename);
    588             }
    589           }
    590           break;
    591 
    592         case CMD_REORDER:
    593           if(!cmdhead || !cmdhead->next) {
    594             Runtime_Error(pszSrcFile, __LINE__, "no cmd");
    595             break;
    596           }
    597           if(WinDlgBox(HWND_DESKTOP,hwnd,ReOrderProc,FM3ModHandle,
    598                        RE_FRAME,MPVOID)) {
    599             WinSendDlgItemMsg(hwnd,
    600                               CMD_LISTBOX,
    601                               LM_DELETEALL,
    602                               MPVOID,
    603                               MPVOID);
    604             WinSetDlgItemText(hwnd,
    605                               CMD_CL,
    606                               NullStr);
    607             WinSetDlgItemText(hwnd,
    608                               CMD_TITLE,
    609                               NullStr);
    610             info = cmdhead;
    611             while(info) {
    612               x = (SHORT)WinSendDlgItemMsg(hwnd,
    613                                            CMD_LISTBOX,
    614                                            LM_INSERTITEM,
    615                                            MPFROM2SHORT(LIT_END,0),
    616                                            MPFROMP(info->title));
    617               if(x >= 0)
    618                 WinSendDlgItemMsg(hwnd,
    619                                   CMD_LISTBOX,
    620                                   LM_SETITEMHANDLE,
    621                                   MPFROMSHORT(x),
    622                                   MPFROMP(info));
    623               info = info->next;
    624             }
    625             WinSendDlgItemMsg(hwnd,
    626                               CMD_LISTBOX,
    627                               LM_SELECTITEM,
    628                               MPFROMSHORT(0),
    629                               MPFROMSHORT(TRUE));
    630             WinCheckButton(hwnd,
    631                            CMD_DEFAULT,
    632                            TRUE);
    633             WinCheckButton(hwnd,
    634                            CMD_PROMPT,
    635                            FALSE);
    636             WinCheckButton(hwnd,
    637                            CMD_ONCE,
    638                            FALSE);
    639             save_commands();
    640           }
    641           break;
    642 
    643         case DID_OK:
    644           x = (SHORT)WinSendDlgItemMsg(hwnd,
    645                                        CMD_LISTBOX,
    646                                        LM_QUERYSELECTION,
    647                                        MPFROMSHORT(LIT_FIRST),
    648                                        MPVOID);
    649           WinDismissDlg(hwnd,0);
    650           break;
    651 
    652         case DID_CANCEL:
    653           WinDismissDlg(hwnd,0);
    654           break;
    655 
    656         case IDM_HELP:
    657           if(hwndHelp)
    658             WinSendMsg(hwndHelp,
    659                        HM_DISPLAY_HELP,
    660                        MPFROM2SHORT(HELP_COMMAND,0),
    661                        MPFROMSHORT(HM_RESOURCEID));
    662           break;
    663 
    664         case CMD_ADD:
    665           {
    666             COMMAND temp;
    667 
    668             memset(&temp,0,sizeof(COMMAND));
    669             WinQueryDlgItemText(hwnd,
    670                                 CMD_CL,
    671                                 sizeof(temp.cl),
    672                                 temp.cl);
    673             bstrip(temp.cl);
    674             WinQueryDlgItemText(hwnd,CMD_TITLE,sizeof(temp.title),temp.title);
    675             if(WinQueryButtonCheckstate(hwnd,CMD_DEFAULT))
    676               temp.flags = 0;
    677             else if(WinQueryButtonCheckstate(hwnd,CMD_FULLSCREEN))
    678               temp.flags = FULLSCREEN;
    679             else if(WinQueryButtonCheckstate(hwnd,CMD_MINIMIZED))
    680               temp.flags = MINIMIZED;
    681             else if(WinQueryButtonCheckstate(hwnd,CMD_MAXIMIZED))
    682               temp.flags = MAXIMIZED;
    683             else if(WinQueryButtonCheckstate(hwnd,CMD_INVISIBLE))
    684               temp.flags = INVISIBLE;
    685             if(WinQueryButtonCheckstate(hwnd,CMD_KEEP))
    686               temp.flags |= KEEP;
    687             if(WinQueryButtonCheckstate(hwnd,CMD_PROMPT))
    688               temp.flags |= PROMPT;
    689             if(WinQueryButtonCheckstate(hwnd,CMD_ONCE))
    690               temp.flags |= ONCE;
    691             info = add_command(&temp);
    692             if(!info)
    693               Runtime_Error(pszSrcFile, __LINE__, "add_command");
     578        case CMD_FIND:
     579          {
     580            CHAR filename[CCHMAXPATH + 9];
     581
     582            *filename = 0;
     583            if(insert_filename(hwnd,filename,2,FALSE) && *filename) {
     584              strcat(filename," %a");
     585              WinSetDlgItemText(hwnd,CMD_CL,filename);
     586            }
     587          }
     588          break;
     589
     590        case CMD_REORDER:
     591          if(!cmdhead || !cmdhead->next) {
     592            Runtime_Error(pszSrcFile, __LINE__, "no cmd");
     593            break;
     594          }
     595          if(WinDlgBox(HWND_DESKTOP,hwnd,ReOrderProc,FM3ModHandle,
     596                       RE_FRAME,MPVOID)) {
     597            WinSendDlgItemMsg(hwnd,
     598                              CMD_LISTBOX,
     599                              LM_DELETEALL,
     600                              MPVOID,
     601                              MPVOID);
     602            WinSetDlgItemText(hwnd,
     603                              CMD_CL,
     604                              NullStr);
     605            WinSetDlgItemText(hwnd,
     606                              CMD_TITLE,
     607                              NullStr);
     608            info = cmdhead;
     609            while(info) {
     610              x = (SHORT)WinSendDlgItemMsg(hwnd,
     611                                           CMD_LISTBOX,
     612                                           LM_INSERTITEM,
     613                                           MPFROM2SHORT(LIT_END,0),
     614                                           MPFROMP(info->title));
     615              if(x >= 0)
     616                WinSendDlgItemMsg(hwnd,
     617                                  CMD_LISTBOX,
     618                                  LM_SETITEMHANDLE,
     619                                  MPFROMSHORT(x),
     620                                  MPFROMP(info));
     621              info = info->next;
     622            }
     623            WinSendDlgItemMsg(hwnd,
     624                              CMD_LISTBOX,
     625                              LM_SELECTITEM,
     626                              MPFROMSHORT(0),
     627                              MPFROMSHORT(TRUE));
     628            WinCheckButton(hwnd,
     629                           CMD_DEFAULT,
     630                           TRUE);
     631            WinCheckButton(hwnd,
     632                           CMD_PROMPT,
     633                           FALSE);
     634            WinCheckButton(hwnd,
     635                           CMD_ONCE,
     636                           FALSE);
     637            save_commands();
     638          }
     639          break;
     640
     641        case DID_OK:
     642          x = (SHORT)WinSendDlgItemMsg(hwnd,
     643                                       CMD_LISTBOX,
     644                                       LM_QUERYSELECTION,
     645                                       MPFROMSHORT(LIT_FIRST),
     646                                       MPVOID);
     647          WinDismissDlg(hwnd,0);
     648          break;
     649
     650        case DID_CANCEL:
     651          WinDismissDlg(hwnd,0);
     652          break;
     653
     654        case IDM_HELP:
     655          if(hwndHelp)
     656            WinSendMsg(hwndHelp,
     657                       HM_DISPLAY_HELP,
     658                       MPFROM2SHORT(HELP_COMMAND,0),
     659                       MPFROMSHORT(HM_RESOURCEID));
     660          break;
     661
     662        case CMD_ADD:
     663          {
     664            COMMAND temp;
     665
     666            memset(&temp,0,sizeof(COMMAND));
     667            WinQueryDlgItemText(hwnd,CMD_CL,sizeof(temp.cl),temp.cl);
     668            bstrip(temp.cl);
     669            WinQueryDlgItemText(hwnd,CMD_TITLE,sizeof(temp.title),temp.title);
     670            if(WinQueryButtonCheckstate(hwnd,CMD_DEFAULT))
     671              temp.flags = 0;
     672            else if(WinQueryButtonCheckstate(hwnd,CMD_FULLSCREEN))
     673              temp.flags = FULLSCREEN;
     674            else if(WinQueryButtonCheckstate(hwnd,CMD_MINIMIZED))
     675              temp.flags = MINIMIZED;
     676            else if(WinQueryButtonCheckstate(hwnd,CMD_MAXIMIZED))
     677              temp.flags = MAXIMIZED;
     678            else if(WinQueryButtonCheckstate(hwnd,CMD_INVISIBLE))
     679              temp.flags = INVISIBLE;
     680            if(WinQueryButtonCheckstate(hwnd,CMD_KEEP))
     681              temp.flags |= KEEP;
     682            if(WinQueryButtonCheckstate(hwnd,CMD_PROMPT))
     683              temp.flags |= PROMPT;
     684            if(WinQueryButtonCheckstate(hwnd,CMD_ONCE))
     685              temp.flags |= ONCE;
     686            info = add_command(&temp);
     687            if (!info) {
     688              saymsg(MB_ENTER,
     689                     hwnd,
     690                     GetPString(IDS_ERRORTEXT),
     691                     // GetPString(IDS_CANTADDCOMMANDTEXT),
     692                     "Can't add %s to command list", temp.title);       // fixme to be in fm3dll.str
     693            }
    694694            else {
    695               {
    696                 CHAR env[1002];
    697 
    698                 *env = 0;
    699                 WinQueryDlgItemText(hwnd,
    700                                     CMD_ENVIRON,
    701                                     1000,
    702                                     env);
    703                 bstripcr(env);
    704                 if(*env)
    705                   PrfWriteProfileString(fmprof,
    706                                         FM3Str,
    707                                         temp.cl,
    708                                         env);
    709               }
    710               x = (SHORT)WinSendDlgItemMsg(hwnd,
    711                                            CMD_LISTBOX,
    712                                            LM_INSERTITEM,
    713                                            MPFROM2SHORT(LIT_END,0),
    714                                            MPFROMP(temp.title));
    715               if(x >= 0) {
    716                 WinSendDlgItemMsg(hwnd,
    717                                   CMD_LISTBOX,
    718                                   LM_SETITEMHANDLE,
    719                                   MPFROMSHORT(x),
    720                                   MPFROMP(info));
    721                 WinSendDlgItemMsg(hwnd,
    722                                   CMD_LISTBOX,
    723                                   LM_SELECTITEM,
    724                                   MPFROMSHORT(x),
    725                                   MPFROMSHORT(TRUE));
    726                 save_commands();
    727               }
    728             }
    729           }
    730           break;
    731 
    732         case CMD_DELETE:
    733           {
    734             CHAR temp[34];
    735 
    736             WinQueryDlgItemText(hwnd,CMD_TITLE,34,temp);
    737             bstrip(temp);
    738             if (!kill_command(temp))
    739               Runtime_Error(pszSrcFile, __LINE__, "kill_command");
     695              CHAR env[1002];
     696
     697              *env = 0;
     698              WinQueryDlgItemText(hwnd,CMD_ENVIRON,1000,env);
     699              bstripcr(env);
     700              if (*env) {
     701                PrfWriteProfileString(fmprof,
     702                                      FM3Str,
     703                                      temp.cl,
     704                                      env);
     705              }
     706              x = (SHORT)WinSendDlgItemMsg(hwnd,
     707                                           CMD_LISTBOX,
     708                                           LM_INSERTITEM,
     709                                           MPFROM2SHORT(LIT_END,0),
     710                                           MPFROMP(temp.title));
     711              if(x >= 0) {
     712                WinSendDlgItemMsg(hwnd,
     713                                  CMD_LISTBOX,
     714                                  LM_SETITEMHANDLE,
     715                                  MPFROMSHORT(x),
     716                                  MPFROMP(info));
     717                WinSendDlgItemMsg(hwnd,
     718                                  CMD_LISTBOX,
     719                                  LM_SELECTITEM,
     720                                  MPFROMSHORT(x),
     721                                  MPFROMSHORT(TRUE));
     722                save_commands();
     723              }
     724            }
     725          }
     726          break;
     727
     728        case CMD_DELETE:
     729          {
     730            CHAR temp[34];
     731
     732            WinQueryDlgItemText(hwnd,CMD_TITLE,34,temp);
     733            bstrip(temp);
     734            if (!kill_command(temp))
     735              Runtime_Error(pszSrcFile, __LINE__, "kill_command");
    740736            else {
    741               x = (SHORT)WinSendDlgItemMsg(hwnd,
    742                                            CMD_LISTBOX,
    743                                            LM_QUERYSELECTION,
    744                                            MPFROMSHORT(LIT_FIRST),
    745                                            MPVOID);
    746               if(x >= 0) {
    747                 WinSendDlgItemMsg(hwnd,
    748                                   CMD_LISTBOX,
    749                                   LM_DELETEITEM,
    750                                   MPFROMSHORT(x),
    751                                   MPVOID);
    752                 WinSendDlgItemMsg(hwnd,
    753                                   CMD_LISTBOX,
    754                                   LM_SELECTITEM,
    755                                   MPFROMSHORT(LIT_NONE),
    756                                   MPFROMSHORT(FALSE));
    757               }
    758               save_commands();
    759             }
    760           }
    761           break;
     737              x = (SHORT)WinSendDlgItemMsg(hwnd,
     738                                           CMD_LISTBOX,
     739                                           LM_QUERYSELECTION,
     740                                           MPFROMSHORT(LIT_FIRST),
     741                                           MPVOID);
     742              if(x >= 0) {
     743                WinSendDlgItemMsg(hwnd,
     744                                  CMD_LISTBOX,
     745                                  LM_DELETEITEM,
     746                                  MPFROMSHORT(x),
     747                                  MPVOID);
     748                WinSendDlgItemMsg(hwnd,
     749                                  CMD_LISTBOX,
     750                                  LM_SELECTITEM,
     751                                  MPFROMSHORT(LIT_NONE),
     752                                  MPFROMSHORT(FALSE));
     753              }
     754              save_commands();
     755            }
     756          }
     757          break;
    762758      }
    763759      return 0;
     
    804800      flags &= (~ONCE);
    805801      for(cntr = 0;list[cntr];cntr++) {
    806         *fakelist = list[cntr];
    807         fakelist[1] = NULL;
    808         ExecOnList(hwnd,
    809                    info->cl,
    810                    flags,
    811                    NULL,
    812                    fakelist,
    813                    GetPString(IDS_EXECCMDTITLETEXT));
     802        *fakelist = list[cntr];
     803        fakelist[1] = NULL;
     804        ExecOnList(hwnd,
     805                   info->cl,
     806                   flags,
     807                   NULL,
     808                   fakelist,
     809                   GetPString(IDS_EXECCMDTITLETEXT));
    814810      }
    815811    }
    816812    else
    817813      ExecOnList(hwnd,
    818                 info->cl,
    819                 flags,
    820                 NULL,
    821                 list,
    822                 GetPString(IDS_EXECCMDTITLETEXT));
     814                info->cl,
     815                flags,
     816                NULL,
     817                list,
     818                GetPString(IDS_EXECCMDTITLETEXT));
    823819  }
    824820  FreeList(list);
     
    837833    load_commands();
    838834  WinDlgBox(HWND_DESKTOP,
    839             hwnd,
    840             CommandDlgProc,
    841             FM3ModHandle,
    842             CMD_FRAME,
    843             MPFROMP(&hwnd));
     835            hwnd,
     836            CommandDlgProc,
     837            FM3ModHandle,
     838            CMD_FRAME,
     839            MPFROMP(&hwnd));
    844840  stop = 0;
    845841}
Note: See TracChangeset for help on using the changeset viewer.