home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / wpfolder.def < prev    next >
Text File  |  1994-12-14  |  15KB  |  443 lines

  1. DEFINITION MODULE WPFOLDER;
  2.  
  3. (***************************************************************************
  4.   OS/2 2.1 Workplace class interface for WPFolder
  5.  
  6.   Copyright (c) 1994 by Juergen Neuhoff
  7. ****************************************************************************)
  8.  
  9. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  10. (*$CDECL+    C-style procedures                                         *)
  11. (*$A         default alignment for record fields                        *)
  12.  
  13. IMPORT SOM;
  14. IMPORT WPFSYS;
  15. IMPORT WPOBJECT;
  16. IMPORT OS2DEF;
  17. IMPORT SYSTEM;
  18. IMPORT WINSTDCNR;
  19. IMPORT WINWORKPLACE;
  20.  
  21. TYPE PSOMClass              = SOM.PSOMClass;
  22. TYPE INTEGER4               = SOM.INTEGER4;
  23. TYPE somMToken              = SOM.somMToken;
  24. TYPE somDToken              = SOM.somDToken;
  25. TYPE somMethodProc          = SOM.somMethodProc;
  26. TYPE PWPFolder              = POINTER TO WPFolder;
  27. TYPE PM_WPFolder            = POINTER TO M_WPFolder;
  28.  
  29. (************************************************************************
  30.   Additional TYPE- and CONST-declarations supporting WPFolder
  31. *************************************************************************)
  32.  
  33. TYPE PWPObject              = WPOBJECT.PWPObject;
  34. TYPE PM_WPObject            = WPOBJECT.PM_WPObject;
  35. TYPE PVOID                  = OS2DEF.PVOID;
  36. TYPE PSZ                    = OS2DEF.PSZ;
  37. TYPE POINTL                 = OS2DEF.POINTL;
  38. TYPE PPOINTL                = OS2DEF.PPOINTL;
  39. TYPE BYTE                   = SYSTEM.BYTE;
  40. TYPE HWND                   = OS2DEF.HWND;
  41. TYPE ICONPOS                = WINWORKPLACE.ICONPOS;
  42.  
  43. CONST (* Folder flags *)
  44.   FOI_POPULATEDWITHALL      = 0001H;
  45.   FOI_POPULATEDWITHFOLDERS  = 0002H;
  46.   FOI_WORKAREA              = 0004H;
  47.   FOI_CHANGEFONT            = 0008H;  (* anti-recursion flag *)
  48.   FOI_WAMINIMIZED           = 0020H;
  49.   FOI_WASTARTONRESTORE      = 0040H;
  50.   FOI_NOREFRESHVIEWS        = 0080H;
  51.   FOI_ASYNCREFRESHONOPEN    = 0100H;
  52.   FOI_TREEPOPULATED         = 0200H;
  53.   FOI_POPULATEINPROGRESS    = 0400H;
  54.   FOI_REFRESHINPROGRESS     = 0800H;
  55.   FOI_FIRSTPOPULATE         = 1000H;  (* folder has no iconposdata *)
  56.   FOI_WAMCRINPROGRESS       = 2000H;  (* Minimize, close, restore in progress *)
  57.  
  58. CONST (* Open views for the wpOpen() method *)
  59.   OPEN_TREE           = 101;
  60.   OPEN_DETAILS        = 102;
  61.  
  62. CONST (* Folder save-restore keys *)
  63.   IDKEY_FDRCONTENTATTR     = 2900;
  64.   IDKEY_FDRTREEATTR        = 2901;
  65.   IDKEY_FDRCVLFONT         = 2902;
  66.   IDKEY_FDRCVNFONT         = 2903;
  67.   IDKEY_FDRCVIFONT         = 2904;
  68.   IDKEY_FDRTVLFONT         = 2905;
  69.   IDKEY_FDRTVNFONT         = 2906;
  70.   IDKEY_FDRDETAILSATTR     = 2907;
  71.   IDKEY_FDRDVFONT          = 2908;
  72.   IDKEY_FDRDETAILSCLASS    = 2909;
  73.   IDKEY_FDRICONPOS         = 2910;
  74.   IDKEY_FDRINVISCOLUMNS    = 2914;
  75.   IDKEY_FDRINCCLASS        = 2920;
  76.   IDKEY_FDRINCNAME         = 2921;
  77.   IDKEY_FDRFSYSSEARCHINFO  = 2922;
  78.   IDKEY_FILTERCONTENT      = 2923;
  79.   IDKEY_CNRBACKGROUND      = 2924;
  80.   IDKEY_FDRINCCRITERIA     = 2925;
  81.   IDKEY_FDRICONVIEWPOS     = 2926;
  82.   IDKEY_FDRSORTCLASS       = 2927;
  83.   IDKEY_FDRSORTATTRIBS     = 2928;
  84.   IDKEY_FDRSORTINFO        = 2929;
  85.   IDKEY_FDRSNEAKYCOUNT     = 2930;
  86.   IDKEY_FDRLONGARRAY       = 2931;
  87.   IDKEY_FDRSTRARRAY        = 2932;
  88.  
  89. CONST
  90.   CV_ICON                  = WINSTDCNR.CV_ICON;   (* icon view            *)
  91.   CV_TREE                  = WINSTDCNR.CV_TREE;   (* tree view            *)
  92.   CV_DETAIL                = WINSTDCNR.CV_DETAIL; (* detail view          *)
  93.   CV_MINI                  = WINSTDCNR.CV_MINI;   (* use mini icon        *)
  94.   CA_OWNERPAINTBACKGROUND  = WINSTDCNR.CA_OWNERPAINTBACKGROUND;
  95.   CA_MIXEDTARGETEMPH       = WINSTDCNR.CA_MIXEDTARGETEMPH;
  96.   CA_OWNERDRAW             = WINSTDCNR.CA_OWNERDRAW;
  97.   CA_TREELINE              = WINSTDCNR.CA_TREELINE;
  98.   CA_DETAILSVIEWTITLES     = WINSTDCNR.CA_DETAILSVIEWTITLES;
  99.  
  100. CONST (* Miscellaneous *)
  101.   PPFONTSTRSIZE                  = 20;
  102.   PARTIAL_FILLFOLDER_SEM_TIMEOUT = 5; (* avoid wasteful SEM_INDEFEINTE_WAIT *)
  103.   FOLDER_DEFATTRS                = CV_ICON OR
  104.                                    CA_OWNERPAINTBACKGROUND OR
  105.                                    CA_MIXEDTARGETEMPH OR
  106.                                    CA_OWNERDRAW;
  107.   FOLDER_DEFTREEATTRS            = CV_ICON OR
  108.                                    CA_OWNERPAINTBACKGROUND OR
  109.                                    CV_TREE OR
  110.                                    CA_TREELINE OR
  111.                                    CA_OWNERDRAW;
  112.   FOLDER_DEFDETAILS              = CV_DETAIL OR
  113.                                    CA_OWNERPAINTBACKGROUND OR
  114.                                    CV_MINI OR
  115.                                    CA_DETAILSVIEWTITLES OR
  116.                                    CA_MIXEDTARGETEMPH;
  117.   FOLDER_DEFSORT                 = NIL;
  118.  
  119. TYPE (* wpSearchFolder structures *)
  120.   SEARCH_INFO                    = RECORD
  121.     ClassToBeFound                 : PM_WPObject;
  122.     fSkipExtendedSearchCriteria    : BOOLEAN;
  123.     pvoidExtendedCriteria          : PVOID;
  124.                                    END;
  125.   PSEARCH_INFO                   = POINTER TO SEARCH_INFO;
  126.  
  127. (* NIL pointer types for various formal types.
  128.  * Even if such a pointer variable p is of value NIL,
  129.  * p^ can be passed by reference to a formal VAR-parameter
  130.  * or a formal open array type. This way a formal parameter
  131.  * might become a NIL-reference which is sometimes needed
  132.  * for OS/2 2.x Workplace procedures.
  133.  * Example:
  134.  *
  135.  *   PROCEDURE( Self : PWPFolder ) wpSetFldrFont
  136.  *   (
  137.  *     szFont            : ARRAY OF CHAR;  (* might be NULL *)
  138.  *     ulView            : LONGCARD
  139.  *   )                   : BOOLEAN;
  140.  *     ...
  141.  *   TYPE NILCharArray   = POINTER TO ARRAY [0..0] OF CHAR;
  142.  *   VAR  FolderObject   : PWPFolder;
  143.  *   VAR  NoCharArray    : NILCharArray;
  144.  *   VAR  ok             : BOOLEAN;
  145.  *     ...
  146.  *   NoCharArray := NIL;
  147.  *   ok := FolderObject^.wpSetFldrFont( NoCharArray^, OPEN_CONTENTS );
  148.  *     ...
  149.  *)
  150. TYPE
  151.   NILCharArray   = POINTER TO ARRAY [0..0] OF CHAR;
  152.  
  153.  
  154. (*************************************************************************
  155.   SOM class API for WPFolder, including type-bound procedures
  156. **************************************************************************)
  157.  
  158. CONST
  159.   WPFolder_MajorVersion     = 1;
  160.   WPFolder_MinorVersion     = 2;
  161.  
  162. TYPE
  163.   WPFolderClassDataStructure     = RECORD
  164.     classObject                    : PSOMClass;
  165.     wpSetFldrFlags                 : somMToken;
  166.     wpQueryFldrFlags               : somMToken;
  167.     wpSetFldrFont                  : somMToken;
  168.     wpQueryFldrFont                : somMToken;
  169.     wpSetNextIconPos               : somMToken;
  170.     wpQueryNextIconPos             : somMToken;
  171.     wpPopulate                     : somMToken;
  172.     wpAddToContent                 : somMToken;
  173.     wpQueryContent                 : somMToken;
  174.     wpAddFolderView1Page           : somMToken;
  175.     wpAddFolderView2Page           : somMToken;
  176.     wpAddFolderView3Page           : somMToken;
  177.     wpAddFolderIncludePage         : somMToken;
  178.     wpAddFolderSortPage            : somMToken;
  179.     wpAddFolderBackgroundPage      : somMToken;
  180.     wpInitIconPosData              : somMToken;
  181.     wpFreeIconPosData              : somMToken;
  182.     wpQueryIconPosition            : somMToken;
  183.     wpStoreIconPosData             : somMToken;
  184.     wpDeleteFromContent            : somMToken;
  185.     wpSetFldrAttr                  : somMToken;
  186.     wpQueryFldrAttr                : somMToken;
  187.     wpSetFldrSort                  : somMToken;
  188.     wpQueryFldrSort                : somMToken;
  189.     wpRestoreFldrRunObjs           : somMToken;
  190.     wpStoreFldrRunObjs             : somMToken;
  191.     withdrawn30                    : somMToken;
  192.     withdrawn31                    : somMToken;
  193.     wpDeleteContents               : somMToken;
  194.     wpQueryOpenFolders             : somMToken;
  195.     wpSetNextOpenFldr              : somMToken;
  196.     wpSearchFolder                 : somMToken;
  197.     wpSetFldrDetailsClass          : somMToken;
  198.     wpQueryFldrDetailsClass        : somMToken;
  199.     wpRefresh                      : somMToken;
  200.     wpSetDetailsColumnVisibility   : somMToken;
  201.     wpIsDetailsColumnVisible       : somMToken;
  202.     wpQuerySortArray               : somMToken;
  203.     wpSetSortArray                 : somMToken;
  204.     wpQuerySortInfo                : somMToken;
  205.     wpSetSortInfo                  : somMToken;
  206.     wpSetFldrSortClass             : somMToken;
  207.     wpQueryFldrSortClass           : somMToken;
  208.     wpSetSortAttribAvailable       : somMToken;
  209.     wpIsSortAttribAvailable        : somMToken;
  210.     wpQueryFldrFilter              : somMToken;
  211.     wpContainsFolders              : somMToken;
  212.     wpQueryBkgnd                   : somMToken;
  213.     wpQueryIconViewPos             : somMToken;
  214.     wpQueryDefaultView             : somMToken;
  215.     wpAddFirstChild                : somMToken;
  216.     FirstObj                       : somDToken;
  217.     wpHideFldrRunObjs              : somMToken;
  218.     wpFSNotifyFolder               : somMToken;
  219.     wpAddNotification              : somMToken;
  220.     wpDeleteNotification           : somMToken;
  221.     wpProcessNotification          : somMToken;
  222.     wpModifySneakyCount            : somMToken;
  223.     wpSneakySupported              : somMToken;
  224.     wpAssertFolderMutexSem         : somMToken;
  225.     wpReleaseFolderMutexSem        : somMToken;
  226.     wpRequestFolderMutexSem        : somMToken;
  227.     wpQueryPopThreadID             : somMToken;
  228.     wpQueryNextOpenFldr            : somMToken;
  229.     hmtxOneFindAtATime             : somDToken;
  230.     wpRequestFindMutexSem          : somMToken;
  231.     wpReleaseFindMutexSem          : somMToken;
  232.     hevFillFolder                  : somDToken;
  233.     wpModifyFldrFlags              : somMToken;
  234.                                    END;
  235.  
  236. VAR
  237.   WPFolderClassData : WPFolderClassDataStructure;
  238.  
  239. TYPE
  240.   (*$SOM+ *)
  241.   WPFolder = RECORD( WPFSYS.WPFileSystem ) END;
  242.   (*$SOM- *)
  243.  
  244.  
  245. PROCEDURE WPFolderNewClass
  246. (
  247.   majorVersion  : INTEGER4;
  248.   minorVersion  : INTEGER4
  249. )               : PSOMClass;
  250.  
  251. PROCEDURE( Self : PWPFolder ) wpSetFldrFlags
  252. (
  253.   ulFlags       : LONGCARD
  254. )               : BOOLEAN;
  255.  
  256. PROCEDURE( Self : PWPFolder ) wpQueryFldrFlags( ) : LONGCARD;
  257.  
  258. PROCEDURE( Self : PWPFolder ) wpSetFldrFont
  259. (
  260.   szFont        : ARRAY OF CHAR;
  261.   ulView        : LONGCARD
  262. )               : BOOLEAN;
  263.  
  264. PROCEDURE( Self : PWPFolder ) wpQueryFldrFont
  265. (
  266.   ulView        : LONGCARD
  267. )               : PSZ;
  268.  
  269. PROCEDURE( Self : PWPFolder ) wpSetFldrAttr
  270. (
  271.   Attr          : LONGCARD;
  272.   ulView        : LONGCARD
  273. )               : BOOLEAN;
  274.  
  275. PROCEDURE( Self : PWPFolder ) wpQueryFldrAttr
  276. (
  277.   ulView        : LONGCARD
  278. )               : LONGCARD;
  279.  
  280. PROCEDURE( Self : PWPFolder ) wpSetNextIconPos
  281. (
  282.   VAR ptl       : POINTL
  283. )               : BOOLEAN;
  284.  
  285. PROCEDURE( Self : PWPFolder ) wpQueryNextIconPos( ) : PPOINTL;
  286.  
  287. PROCEDURE( Self : PWPFolder ) wpPopulate
  288. (
  289.   ulReserved    : LONGCARD;
  290.   szPath        : ARRAY OF CHAR;
  291.   fFoldersOnly  : BOOLEAN
  292. )               : BOOLEAN;
  293.  
  294. PROCEDURE( Self : PWPFolder ) wpQueryContent
  295. (
  296.   Object        : PWPObject;
  297.   ulOption      : LONGCARD
  298. )               : PWPObject;
  299.  
  300. PROCEDURE( Self : PWPFolder ) wpAddFolderView1Page
  301. (
  302.   hwndNotebook  : HWND
  303. )               : LONGCARD;
  304.  
  305. PROCEDURE( Self : PWPFolder ) wpAddFolderView2Page
  306. (
  307.   hwndNotebook  : HWND
  308. )               : LONGCARD;
  309.  
  310. PROCEDURE( Self : PWPFolder ) wpAddFolderView3Page
  311. (
  312.   hwndNotebook  : HWND
  313. )               : LONGCARD;
  314.  
  315. PROCEDURE( Self : PWPFolder ) wpAddFolderIncludePage
  316. (
  317.   hwndNotebook  : HWND
  318. )               : LONGCARD;
  319.  
  320. PROCEDURE( Self : PWPFolder ) wpAddFolderSortPage
  321. (
  322.   hwndNotebook  : HWND
  323. )               : LONGCARD;
  324.  
  325. PROCEDURE( Self : PWPFolder ) wpAddFolderBackgroundPage
  326. (
  327.   hwndNotebook  : HWND
  328. )               : LONGCARD;
  329.  
  330. PROCEDURE( Self : PWPFolder ) wpInitIconPosData( ) : BOOLEAN;
  331.  
  332. PROCEDURE( Self : PWPFolder ) wpFreeIconPosData( );
  333.  
  334. PROCEDURE( Self : PWPFolder ) wpStoreIconPosData
  335. (
  336.   VAR IconPos   : ICONPOS;
  337.   cbSize        : LONGCARD
  338. )               : BOOLEAN;
  339.  
  340. PROCEDURE( Self : PWPFolder ) wpQueryIconPosition
  341. (
  342.   szIdentity    : ARRAY OF CHAR;
  343.   VAR pptl      : POINTL;
  344.   VAR Index     : LONGCARD
  345. )               : BOOLEAN;
  346.  
  347. PROCEDURE( Self : PWPFolder ) wpSetFldrSort
  348. (
  349.   VAR SortRecord : ARRAY OF BYTE;
  350.   ulView         : LONGCARD;
  351.   ulType         : LONGCARD
  352. )                : BOOLEAN;
  353.  
  354. PROCEDURE( Self : PWPFolder ) wpQueryFldrSort
  355. (
  356.   ulView        : LONGCARD;
  357.   ulType        : LONGCARD
  358. )               : PVOID;
  359.  
  360. PROCEDURE( Self : PWPFolder ) wpRestoreFldrRunObjs( ) : BOOLEAN;
  361.  
  362. PROCEDURE( Self : PWPFolder ) wpStoreFldrRunObjs
  363. (
  364.   ulType        : LONGCARD
  365. )               : BOOLEAN;
  366.  
  367. PROCEDURE( Self : PWPFolder ) wpHideFldrRunObjs
  368. (
  369.   fHide         : BOOLEAN
  370. )               : BOOLEAN;
  371.  
  372. PROCEDURE( Self : PWPFolder ) wpDeleteContents
  373. (
  374.   fConfirmations : LONGCARD
  375. )                : LONGCARD;
  376.  
  377. PROCEDURE( Self : PWPFolder ) wpSetFldrDetailsClass
  378. (
  379.   Class         : PM_WPObject
  380. )               : BOOLEAN;
  381.  
  382. PROCEDURE( Self : PWPFolder ) wpQueryFldrDetailsClass( ) : PM_WPObject;
  383.  
  384. PROCEDURE( Self : PWPFolder ) wpSearchFolder
  385. (
  386.   szName        : ARRAY OF CHAR;
  387.   ulSearchType  : LONGCARD;
  388.   ulLen         : LONGCARD;
  389.   VAR Info      : SEARCH_INFO;
  390.   ResultFolder  : PWPFolder
  391. )               : BOOLEAN;
  392.  
  393. PROCEDURE( Self : PWPFolder ) wpContainsFolders
  394. (
  395.   VAR fSubFolders : BOOLEAN
  396. )                 : BOOLEAN;
  397.  
  398. PROCEDURE( Self : PWPFolder ) wpQueryOpenFolders
  399. (
  400.   ulOption      : LONGCARD
  401. )               : PWPObject;
  402.  
  403.  
  404. (*************************************************************************
  405.   SOM class API for M_WPFolder, including type-bound procedures
  406. **************************************************************************)
  407.  
  408. CONST
  409.   M_WPFolder_MajorVersion   = 1;
  410.   M_WPFolder_MinorVersion   = 2;
  411.  
  412. TYPE
  413.   M_WPFolderClassDataStructure   = RECORD
  414.     classObject                    : PSOMClass;
  415.     wpclsGetNotifySem              : somMToken;
  416.     wpclsReleaseNotifySem          : somMToken;
  417.     wpclsQueryOpenFolders          : somMToken;
  418.                                    END;
  419.  
  420. VAR
  421.   M_WPFolderClassData : M_WPFolderClassDataStructure;
  422.  
  423. TYPE
  424.   (*$SOM+ *)
  425.   M_WPFolder = RECORD( WPFSYS.M_WPFileSystem ) END;
  426.   (*$SOM- *)
  427.  
  428.  
  429. PROCEDURE M_WPFolderNewClass
  430. (
  431.   majorVersion : INTEGER4;
  432.   minorVersion : INTEGER4
  433. )              : PSOMClass;
  434.  
  435. PROCEDURE( Self : PM_WPFolder ) wpclsQueryOpenFolders
  436. (
  437.   Folder        : PWPFolder;
  438.   ulOption      : LONGCARD;
  439.   fLock         : BOOLEAN
  440. )               : PWPFolder;
  441.  
  442. END WPFOLDER.
  443.