home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 February / Chip_2002-02_cd1.bin / sharewar / apaths / APSOURCE.ZIP / EditHelp.c < prev    next >
C/C++ Source or Header  |  2001-03-26  |  4KB  |  140 lines

  1. /* EditHelp - March 26th, 2001
  2. **
  3. **      Copyright (c) 1997-2001 by Gregory Braun. All rights reserved.
  4. **
  5. **      This function opens and displays a dialog box allowing the user
  6. **      to edit a specific Help registry entry.
  7. **
  8. **      Called:     w    = window handle of the parent.
  9. **                  help = a pointer to the HELP data structure.
  10. **
  11. **      Returns:    TRUE upon success, or FALSE if an error exists,
  12. **                  or the user pressed the [Cancel] key.
  13. */
  14.  
  15. #include "AppPaths.h"
  16.  
  17.  
  18. #define PATH_MSG            "Specify the folder location of this help file"
  19.  
  20. #define MISSING_NAME        "Help file name missing.\r\r" \
  21.                             "Help file registry keys require a help file name.\r" \
  22.                             "Please specify a file name for this registry entry."
  23.  
  24. #define MISSING_PATH        "Folder name missing.\r\r" \
  25.                             "Help file registry keys require a folder name.\r" \
  26.                             "Please specify a folder path for this registry entry."
  27.  
  28.  
  29. static HELP                 tmp;        // just in case the user cancels.
  30.  
  31.  
  32. static BOOL CALLBACK        dialog      (HWND dlg,UINT msg,WPARAM wp,LPARAM lp);
  33.  
  34. static BOOL                 initiate    (HWND dlg,LPHELP tmp);
  35. static BOOL                 verify      (HWND dlg,LPHELP tmp);
  36.  
  37. static BOOL                 folder      (HWND dlg,LPHELP tmp);
  38.  
  39. extern BOOL far EditHelp (HWND w,LPHELP help)
  40. {
  41.     tmp = *help;
  42.  
  43.     if (!DialogBoxParam (applet,(LPCSTR) HELP_DLG,w,(DLGPROC) dialog,(LPARAM) &tmp))
  44.         return (FALSE);
  45.  
  46.     *help = tmp;
  47.  
  48.     return (TRUE);
  49. }
  50.  
  51. static BOOL CALLBACK dialog (HWND dlg,UINT msg,WPARAM wp,LPARAM lp)
  52. {
  53.     auto int    item    = LOWORD (wp);
  54.  
  55.     switch (msg) {
  56.  
  57.         case WM_INITDIALOG :
  58.              return (initiate (dlg,(LPHELP) lp));
  59.              break;
  60.  
  61.         case WM_HELP :
  62.              HelpTip (dlg,((LPHELPINFO) lp)->iCtrlId);
  63.              break;
  64.  
  65.         case WM_COMMAND :
  66.  
  67.              switch (item) {
  68.  
  69.                 case HELP_PATH_BTN :
  70.                      folder (dlg,&tmp);
  71.                      break;
  72.  
  73.                 case HELP_HELP_BTN :
  74.                      HelpTopic (dlg,HELP_DLG);
  75.                      break;
  76.  
  77.                 case IDOK :
  78.                      if (verify (dlg,&tmp))
  79.                          EndDialog (dlg,TRUE);
  80.                      return (TRUE);
  81.                      break;
  82.  
  83.                 case IDCANCEL :
  84.                      EndDialog (dlg,FALSE);
  85.                      return (TRUE);
  86.                      break;
  87.                      }
  88.  
  89.              break;
  90.              }
  91.  
  92.  
  93.      return (FALSE);
  94. }
  95.  
  96. static BOOL initiate (HWND dlg,LPHELP tmp)
  97. {
  98.     SetDlgIcon (dlg,APPLICATION_ICON);
  99.  
  100.     SetDlgItemSize (dlg,HELP_NAME_TXT,PSTRING);
  101.     SetDlgItemText (dlg,HELP_NAME_TXT,tmp->name);
  102.  
  103.     SetDlgItemSize (dlg,HELP_PATH_TXT,PSTRING);
  104.     SetDlgItemText (dlg,HELP_PATH_TXT,tmp->path);
  105.  
  106.     return (TRUE);
  107. }
  108.  
  109. static BOOL verify (HWND dlg,LPHELP tmp)
  110. {
  111.     GetDlgItemText (dlg,HELP_NAME_TXT,tmp->name,PSTRING);
  112.     GetDlgItemText (dlg,HELP_PATH_TXT,tmp->path,PSTRING);
  113.  
  114.     if (!*tmp->name) {
  115.         Message (dlg,NULL,MISSING_NAME);
  116.         return (SetDFocus (dlg,HELP_NAME_TXT));
  117.         }
  118.  
  119.     if (!*tmp->path) {
  120.         Message (dlg,NULL,MISSING_PATH);
  121.         return (SetDFocus (dlg,HELP_PATH_TXT));
  122.         }
  123.  
  124.     return (TRUE);
  125. }
  126.  
  127. static BOOL folder (HWND dlg,LPHELP tmp)
  128. {
  129.     GetDlgItemText (dlg,HELP_PATH_TXT,tmp->path,PSTRING);
  130.  
  131.     if (!PickPath (dlg,PATH_MSG,tmp->path))
  132.         return (FALSE);
  133.  
  134.     SetDlgItemText (dlg,HELP_PATH_TXT,tmp->path);
  135.  
  136.     return (TRUE);
  137. }
  138.  
  139. /* end of EditHelp.c - written by Gregory Braun */
  140.