home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / wpprg184.zip / WPPRGEXT.CSC < prev    next >
Text File  |  1994-04-02  |  11KB  |  355 lines

  1. /******************************************************************************
  2. *
  3. *  Module Name : WPPRGEXT
  4. *
  5. *  Description : OS/2 Workplace Shell WPProgram Object Extension.
  6. *                This extension adds the option to close the folder
  7. *                to which the launching program belongs.
  8. *
  9. *  Programmer  : Yong D. Lee
  10. *  Date        : Nov 21, 1993
  11. *
  12. *  Disclaimer of warranties:
  13. *      The code is provided "AS IS", without warranty of any kind.  I shall 
  14. *      not be liable for any damages arising out of your use of this code.
  15. *
  16. ******************************************************************************/
  17.  
  18. #******************************************************************************
  19. #   Include the class definition file for the parent class
  20. #******************************************************************************
  21.  
  22. include <wppgm.sc>
  23.  
  24. #******************************************************************************
  25. #   Define the new class
  26. #******************************************************************************
  27.  
  28. class: WPPrgExt,
  29.        external stem   = wpprgext,
  30.        local,
  31.        external prefix = wpprgext_,
  32.        classprefix     = wpprgextM_,
  33.        major version   = 1,
  34.        minor version   = 8;
  35.  
  36. --
  37. -- CLASS: WPPrgExt
  38. --
  39. -- DESCRIPTION:
  40. --
  41. --    This is a descendent object class for WPProgram object class. It can be
  42. --    replaced for WPProgram object class.
  43. --
  44.  
  45. #******************************************************************************
  46. #   Specify the parent class
  47. #******************************************************************************
  48.  
  49. parent: WPProgram;
  50.  
  51. #******************************************************************************
  52. #   Specify the release order of new methods.  
  53. #******************************************************************************
  54.  
  55. release order:
  56.               QueryFolderClose,
  57.               SetFolderClose,
  58.               AddFolderOptionPage,
  59.               AddFolderKeyPage,
  60.               FindKeyFromScancode,
  61.               FindScancodeFromKey,
  62.               clsQueryModuleHandle;
  63.  
  64. #******************************************************************************
  65. #   Passthru PRIVATE definitions to the .ph file
  66. #******************************************************************************
  67.  
  68. passthru: C.ph;
  69.  
  70.    /*
  71.     * Window data for the folder option dialog (settings page)
  72.     */
  73.    typedef struct _FOLDEROPTION
  74.    {
  75.       USHORT cb;                /* size of this structure                   */
  76.       WPPrgExt *somSelf;        /* pointer to this instance                 */
  77.       ULONG closeFolder;        /* indicates whether to close folder or not */
  78.       BOOL save;
  79.    } FOLDEROPTION;
  80.  
  81.    typedef FOLDEROPTION *PFOLDEROPTION;
  82.  
  83.    /*
  84.     * Window data for the folder close key dialog (settings page)
  85.     */
  86.    typedef struct _FOLDERKEY
  87.    {
  88.       USHORT   cb;              /* size of this structure                   */
  89.       WPPrgExt *somSelf;        /* pointer to this instance                 */
  90.    } FOLDERKEY;
  91.  
  92.    typedef FOLDERKEY *PFOLDERKEY;
  93.  
  94. endpassthru;   /* C.ph */
  95.  
  96. #******************************************************************************
  97. #   Passthru IMPLEMENTATION definitions to the .ih file
  98. #******************************************************************************
  99.  
  100. passthru: C.ih;
  101.  
  102.    #define INCL_WIN
  103.    #define INCL_DOS
  104.    #define INCL_GPIBITMAPS
  105.    #include <os2.h>
  106.  
  107.    #define INCL_WPFOLDER
  108.    #define INCL_WINWORKPLACE
  109.    #define WPCLASS
  110.  
  111.    #include <pmwp.h>
  112.  
  113. /*
  114.  * IDs for string table
  115.  */
  116.    #define MAXKEY               13
  117.    #define ID_TITLE             100
  118.    #define IDSC_SHIFT           101
  119.    #define IDSC_F1              102
  120.    #define IDSC_F2              103
  121.    #define IDSC_F3              104
  122.    #define IDSC_F4              105
  123.    #define IDSC_F5              106
  124.    #define IDSC_F6              107
  125.    #define IDSC_F7              108
  126.    #define IDSC_F8              109
  127.    #define IDSC_F9              110
  128.    #define IDSC_F10             111
  129.    #define IDSC_F11             112
  130.    #define IDSC_F12             113
  131.  
  132. /*
  133.  * IDs of dialog items in WPPRGEXT.RC
  134.  */
  135.    #define IDD_FOLDER                  200
  136.    #define IDGROUP_FOLDERCLOSE         201
  137.    #define IDCHECK_CLOSENOTEBOOK       202
  138.    #define IDCHECK_CLOSEPROGRAM        203
  139.  
  140.    #define IDD_FOLDERKEY                300
  141.  
  142.    #define IDGROUP_KEYSELECTION         301
  143.    #define IDTEXT_LINE1                 302
  144.    #define IDTEXT_LINE2                 303
  145.    #define IDTEXT_LINE3                 304
  146.    #define IDTEXT_KEYSELECTION          305
  147.    #define IDCOMBO_KEYSELECTION         306
  148.  
  149.  
  150. /*
  151.  * IDs for folderClose
  152.  */
  153.    #define DONOTCLOSE           0x00
  154.    #define CLOSENOTEBOOK        0x01
  155.    #define CLOSEPROGRAM         0x02
  156.  
  157. /*
  158.  * Key for save-restore method
  159.  */
  160.     #define IDKEY_FOLDER 1
  161.  
  162. endpassthru;   /* .ih */
  163.  
  164. #******************************************************************************
  165. #   Passthru PUBLIC definitions to the .h file
  166. #******************************************************************************
  167.  
  168. passthru: C.h, after;
  169.  
  170.  
  171. endpassthru;   /* C.h */
  172.  
  173. #******************************************************************************
  174. #   Define instance data
  175. #******************************************************************************
  176.  
  177. data:
  178.  
  179.    ULONG folderClose;                     /* indicates if to close folder */
  180.  
  181. #******************************************************************************
  182. #   Define methods
  183. #******************************************************************************
  184.  
  185. methods:
  186.  
  187. ULONG QueryFolderClose();
  188. --
  189. -- METHOD: QueryFolderClose                               ( ) PRIVATE
  190. --                                                        (X) PUBLIC
  191. -- DESCRIPTION:
  192. --
  193. --   Query state of folder close flag
  194. --
  195. -- RETURN:
  196. --
  197. --   ULONG - folder closing option
  198. --
  199.  
  200. VOID SetFolderClose(ULONG flag);
  201. --
  202. -- METHOD: SetFolderClose                                 ( ) PRIVATE
  203. --                                                        (X) PUBLIC
  204. -- DESCRIPTION:
  205. --
  206. --   Set state of folder close flag
  207. --
  208. --
  209.  
  210. ULONG AddFolderOptionPage(HWND hwndNotebook);
  211. --
  212. -- METHOD: AddFolderOptionPage                            ( ) PRIVATE
  213. --                                                        (X) PUBLIC
  214. -- DESCRIPTION:
  215. --
  216. --   Add the folder page to the settings notebook
  217. --
  218. -- RETURN:
  219. --
  220. --   0              Unsuccessful
  221. --   ulPageId       Identifier for the inserted page
  222. --
  223.  
  224. ULONG AddFolderKeyPage(HWND hwndNotebook);
  225. --
  226. -- METHOD: AddFolderKeyPage                               ( ) PRIVATE
  227. --                                                        (X) PUBLIC
  228. -- DESCRIPTION:
  229. --
  230. --   Add the folder key selection page to the settings notebook
  231. --
  232. -- RETURN:
  233. --
  234. --   0              Unsuccessful
  235. --   ulPageId       Identifier for the inserted page
  236. --
  237.  
  238. VOID FindKeyFromScancode(LONG scanCode, CHAR *str);
  239. --
  240. -- METHOD: FindKeyFromScancode                            ( ) PRIVATE
  241. --                                                        (X) PUBLIC
  242. -- DESCRIPTION:
  243. --
  244. --   Find key name from scancode
  245. --
  246.  
  247. ULONG FindScancodeFromKey(CHAR *str);
  248. --
  249. -- METHOD: FindScancodeFromKey                            ( ) PRIVATE
  250. --                                                        (X) PUBLIC
  251. -- DESCRIPTION:
  252. --
  253. --   Find scancode from key name
  254. --
  255. -- RETURN:
  256. --
  257. --   key scancode
  258. --
  259.  
  260. #******************************************************************************
  261. #   Specify methods being overridden
  262. #******************************************************************************
  263.  
  264. -----------------------------------------------------------------------------
  265. --   Methods from the WPObject class
  266. -----------------------------------------------------------------------------
  267.  
  268. override wpInitData;
  269. --
  270. -- OVERRIDE: wpInitData                                   ( ) PRIVATE
  271. --                                                        (X) PUBLIC
  272. -- DESCRIPTION:
  273. --
  274. --   Initialize the state variables and allocate any extra memory
  275. --   that might be needed
  276. --
  277.  
  278. override wpSaveState;
  279. --
  280. -- OVERRIDE: wpSaveState                                  ( ) PRIVATE
  281. --                                                        (X) PUBLIC
  282. -- DESCRIPTION:
  283. --
  284. --   Save state variable (folder close flag)
  285. --
  286.  
  287. override wpRestoreState;
  288. --
  289. -- OVERRIDE: wpRestoreState                               ( ) PRIVATE
  290. --                                                        (X) PUBLIC
  291. -- DESCRIPTION:
  292. --
  293. --   Restore saved state variable
  294. --
  295.  
  296. override wpAddSettingsPages;
  297. --
  298. -- OVERRIDE: wpAddSettingsPages                           ( ) PRIVATE
  299. --                                                        (X) PUBLIC
  300. -- DESCRIPTION:
  301. --
  302. --   Add folder settings page to let the user alter the flag
  303. --
  304.  
  305. override wpOpen;
  306. --
  307. --  METHOD: wpOpen                                        ( ) PRIVATE
  308. --                                                        (X) PUBLIC
  309. --  DESCRIPTION:
  310. --
  311. --    Opens the program object window. Close folder upon openning 
  312. --    according to folderClose flag
  313. --
  314.  
  315. #******************************************************************************
  316. #   Define class methods
  317. #******************************************************************************
  318.  
  319. HMODULE clsQueryModuleHandle (), class;
  320. --
  321. -- METHOD: clsQueryModuleHandle                           ( ) PRIVATE
  322. --                                                        (X) PUBLIC
  323. -- DESCRIPTION:
  324. --
  325. --   This method returns the module handle of this class.
  326. --
  327. -- RETURN:
  328. --
  329. --   0          Unsuccessful
  330. --   non-zero   Module handle
  331. --
  332.  
  333. #******************************************************************************
  334. #   Specify class methods being overridden
  335. #******************************************************************************
  336.  
  337. override wpclsInitData, class;
  338. --
  339. -- METHOD: wpclsInitData                                  ( ) PRIVATE
  340. --                                                        (X) PUBLIC
  341. -- DESCRIPTION:
  342. --
  343. --   Initialize the class data
  344. --
  345.  
  346. override wpclsQueryTitle, class;
  347. --
  348. -- METHOD: wpclsQueryTitle                                ( ) PRIVATE
  349. --                                                        (X) PUBLIC
  350. -- DESCRIPTION:
  351. --
  352. --   Return the string "Extended Program".
  353. --
  354.  
  355.