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

  1. /* EditPath - 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 AppPath registry entry.
  7. **
  8. **      Called:     w    = window handle of the parent.
  9. **                  path = a pointer to the PATH 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. #define PATH_MSG            "Select an optional path for this application"
  18.  
  19. #define MISSING_NAME        "Application file name missing.\r\r" \
  20.                             "AppPath registry keys require a program file name.\r" \
  21.                             "Please specify a program name for this registry entry."
  22.  
  23. #define MISSING_APPLICATION "Application Location missing.\r\r" \
  24.                             "AppPath registry keys require a full file name.\r" \
  25.                             "Please specify a program and path for this registry entry."
  26.  
  27.  
  28.  
  29. static PATH                 tmp;        // just in case the user cancels.
  30.  
  31. static BOOL CALLBACK        dialog      (HWND dlg,UINT msg,WPARAM wp,LPARAM lp);
  32.  
  33. static BOOL                 initiate    (HWND dlg,LPPATH tmp);
  34. static BOOL                 verify      (HWND dlg,LPPATH tmp);
  35.  
  36. static BOOL                 location    (HWND dlg,LPPATH tmp);
  37. static BOOL                 folder      (HWND dlg,LPPATH tmp);
  38.  
  39. extern BOOL far EditPath (HWND w,LPPATH path)
  40. {
  41.     tmp = *path;
  42.  
  43.     if (!DialogBoxParam (applet,(LPCSTR) PATH_DLG,w,(DLGPROC) dialog,(LPARAM) &tmp))
  44.         return (FALSE);
  45.  
  46.     *path = 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,(LPPATH) 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 PATH_APPLICATION_BTN :
  70.                      location (dlg,&tmp);
  71.                      break;
  72.  
  73.                 case PATH_PATH_BTN :
  74.                      folder (dlg,&tmp);
  75.                      break;
  76.  
  77.                 case PATH_HELP_BTN :
  78.                      HelpTopic (dlg,PATH_DLG);
  79.                      break;
  80.  
  81.                 case IDOK :
  82.                      if (verify (dlg,&tmp))
  83.                          EndDialog (dlg,TRUE);
  84.                      return (TRUE);
  85.                      break;
  86.  
  87.                 case IDCANCEL :
  88.                      EndDialog (dlg,FALSE);
  89.                      return (TRUE);
  90.                      break;
  91.                      }
  92.  
  93.              break;
  94.              }
  95.  
  96.  
  97.      return (FALSE);
  98. }
  99.  
  100. static BOOL initiate (HWND dlg,LPPATH tmp)
  101. {
  102.     auto HWND   ctl = GetDlgItem (dlg,PATH_ICON_PIC);
  103.     auto HICON  ico = ExtractIcon (applet,tmp->application,NIL);
  104.  
  105.     if ((DWORD) ico < 33)
  106.         ico = LoadIcon (applet,(LPCSTR) APPLICATION_ICON);
  107.  
  108.     SetDlgIcon (dlg,APPLICATION_ICON);
  109.  
  110.     Static_SetIcon (ctl,ico);
  111.  
  112.     SetDlgItemSize (dlg,PATH_NAME_TXT,PSTRING);
  113.     SetDlgItemText (dlg,PATH_NAME_TXT,tmp->name);
  114.  
  115.     SetDlgItemSize (dlg,PATH_APPLICATION_TXT,PSTRING);
  116.     SetDlgItemText (dlg,PATH_APPLICATION_TXT,tmp->application);
  117.  
  118.     SetDlgItemSize (dlg,PATH_PATH_TXT,KSTRING);
  119.     SetDlgItemText (dlg,PATH_PATH_TXT,tmp->path);
  120.  
  121.     return (TRUE);
  122. }
  123.  
  124. static BOOL verify (HWND dlg,LPPATH tmp)
  125. {
  126.     GetDlgItemText (dlg,PATH_NAME_TXT,tmp->name,PSTRING);
  127.     GetDlgItemText (dlg,PATH_APPLICATION_TXT,tmp->application,PSTRING);
  128.     GetDlgItemText (dlg,PATH_PATH_TXT,tmp->path,PSTRING);
  129.  
  130.     if (!*tmp->name) {
  131.         Message (dlg,NULL,MISSING_NAME);
  132.         return  (SetDFocus (dlg,PATH_NAME_TXT));
  133.         }
  134.  
  135.     if (!*tmp->application) {
  136.         Message (dlg,NULL,MISSING_APPLICATION);
  137.         return  (SetDFocus (dlg,PATH_APPLICATION_TXT));
  138.         }
  139.  
  140.     return (TRUE);
  141. }
  142.  
  143. static BOOL location (HWND dlg,LPPATH tmp)
  144. {
  145.     auto HWND   ctl = GetDlgItem (dlg,PATH_ICON_PIC);
  146.     auto HICON  ico = ExtractIcon (applet,tmp->application,NIL);
  147.  
  148.     GetDlgItemText (dlg,PATH_APPLICATION_TXT,tmp->application,PSTRING);
  149.  
  150.     if (!PickApp (dlg,tmp->application))
  151.         return (FALSE);
  152.  
  153.     SetDlgItemText (dlg,PATH_APPLICATION_TXT,tmp->application);
  154.  
  155.     ico = ExtractIcon (applet,tmp->application,NIL);
  156.  
  157.     if ((DWORD) ico < 33)
  158.         ico = LoadIcon (applet,(LPCSTR) APPLICATION_ICON);
  159.  
  160.     Static_SetIcon (ctl,ico);
  161.  
  162.     return (TRUE);
  163. }
  164.  
  165. static BOOL folder (HWND dlg,LPPATH tmp)
  166. {
  167.     GetDlgItemText (dlg,PATH_PATH_TXT,tmp->path,PSTRING);
  168.  
  169.     if (!PickPath (dlg,PATH_MSG,tmp->path))
  170.         return (FALSE);
  171.  
  172.     SetDlgItemText (dlg,PATH_PATH_TXT,tmp->path);
  173.  
  174.     return (TRUE);
  175. }
  176.  
  177. /* end of EditPath.c - written by Gregory Braun */
  178.