home *** CD-ROM | disk | FTP | other *** search
/ The Developer Connection…ice Driver Kit for OS/2 3 / DEV3-D1.ISO / devtools / dataflex / focus2.pkg < prev    next >
Encoding:
Text File  |  1993-05-19  |  2.6 KB  |  93 lines

  1. USE UI
  2.  
  3. #CHKSUB 1 1 // Verify the UI subsystem.
  4.  
  5. OBJECT Focus_Scanner IS AN EDIT
  6.  
  7.   SET LOCATION TO 5 5 ABSOLUTE
  8.   SET SIZE     TO 20 60
  9.   SET SCOPE_STATE TO TRUE
  10.   SET BLOCK_MOUSE_STATE TO TRUE
  11.   SET READ_ONLY_STATE TO TRUE
  12.   SET RIGHT_MARGIN TO 128
  13.  
  14.   ON_KEY KSWITCH SEND MSG_NONE // Doesn't fix everything.
  15.   ON_KEY KCANCEL SEND Cancel_Scope
  16.   ON_KEY KEY_ALT+KEY_F10 SEND Output_Tree
  17.  
  18.   OBJECT Active_Levels IS AN ARRAY
  19.   END_OBJECT
  20.  
  21.   PROCEDURE Output_Tree
  22.     SEND WRITE "Tree.Trc"
  23.   END_PROCEDURE
  24.  
  25.   PROCEDURE Cancel_Scope
  26.     LOCAL INTEGER Prior_Scope#
  27.      GET PRIOR_SCOPE TO Prior_Scope#
  28.      SET CURRENT_SCOPE TO Prior_Scope#
  29.      SEND DEACTIVATE
  30.   END_PROCEDURE
  31.  
  32.   PROCEDURE Process_Focus_Tree
  33.     SET READ_ONLY_STATE TO FALSE
  34.      SEND DELETE_DATA
  35.     SEND Process_Next_Focus DESKTOP DESKTOP    0
  36.      SEND BEGINNING_OF_DATA
  37.     SET READ_ONLY_STATE TO TRUE
  38.      SEND ACTIVATE
  39.   END_PROCEDURE
  40.  
  41.   PROCEDURE Process_Next_Focus INTEGER Start# INTEGER Object# INTEGER Current_Level
  42.      LOCAL INTEGER Next_Level# Next_Focus#
  43.  
  44.      GET NEXT_LEVEL OF Object# TO Next_Level#
  45.      GET NEXT_FOCUS OF Object# TO Next_Focus#
  46.      
  47.     SEND Add_Leaf Object# Current_Level Next_Level# Next_Focus# Start#
  48.  
  49.     IF Next_Level# NE 0;
  50.        SEND Process_Next_Focus Next_Level# Next_Level# (Current_Level+1)
  51.  
  52.      IF ((Next_Focus# NE 0) AND (Next_Focus# NE Start#));
  53.        SEND Process_Next_Focus Start# Next_Focus# Current_Level
  54.   END_PROCEDURE
  55.  
  56.   PROCEDURE Draw_Levels INTEGER Level
  57.     LOCAL INTEGER Counter Active_State
  58.     FOR Counter FROM 1 TO Level
  59.       GET ARRAY_VALUE OF (Active_Levels(CURRENT_OBJECT)) ITEM Counter TO Active_State
  60.       IF Active_State EQ 1 SEND INSERT "   │  "
  61.       ELSE SEND INSERT "      "
  62.     LOOP
  63.   END_PROCEDURE
  64.  
  65.   PROCEDURE Add_Leaf INTEGER Object# INTEGER Current_Level;
  66.                      INTEGER Next_Level# INTEGER Next_Focus# INTEGER Start#
  67.      LOCAL INTEGER Cell#    
  68.      LOCAL STRING Object_Name Temp
  69.  
  70.     SEND Draw_Levels (Current_Level-1)
  71.  
  72.     IF ((Next_Focus# NE 0) AND (Next_Focus# NE Start#)) BEGIN
  73.       SEND INSERT "   ├──"
  74.       SET ARRAY_VALUE OF (Active_Levels(CURRENT_OBJECT)) ITEM Current_Level TO 1
  75.     END
  76.     ELSE IF Object# NE DESKTOP BEGIN
  77.       SEND INSERT "   └──"
  78.       SET ARRAY_VALUE OF (Active_Levels(CURRENT_OBJECT)) ITEM Current_Level TO 0
  79.     END
  80.  
  81.      GET NAME OF Object# TO Object_Name
  82.  
  83.     MOVE "" TO Temp
  84.     APPEND Temp "(" Current_Level "):" Object_Name "  ID=[" Object# "]"
  85.     SEND INSERT Temp
  86.     SEND KEY KENTER
  87.  
  88.   END_PROCEDURE
  89.  
  90. END_OBJECT
  91.  
  92. ON_KEY KEY_ALT+KEY_F10 SEND Process_Focus_Tree TO Focus_Scanner.OBJ
  93.