home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / libraries / js_tools123.lha / js_tools / programmers / kick-pascal / js_tools.p next >
Encoding:
Text File  |  1995-02-26  |  6.2 KB  |  267 lines

  1. unit js_tools;
  2. uses gadtools;
  3.  
  4. CONST
  5.  JSTOOLSNAME = "js_tools.library";
  6.  
  7. (*
  8.  *  JS_Info Konstanten:
  9.  *)
  10.  
  11.  JSINFO_BOX         = 1;
  12.  JSINFO_VERSION     = 2;
  13.  JSINFO_LIBVERSION  = 3;
  14.  JSINFO_LIBREVISION = 4;
  15.  JSINFO_DATE        = 5;
  16.  
  17.  
  18. (*
  19.  *  ListView:
  20.  *)
  21.  
  22. CONST
  23.  LISTVIEW1_KIND    = LISTVIEW_KIND;
  24.  LISTVIEW2_KIND    = 101;
  25.  LISTVIEW3_KIND    = 102;
  26.  
  27. (*
  28.  *  ListView Tagitems:
  29.  *)
  30.  
  31. CONST
  32.  lv_Dummy  = (TAG_USER+$56000);
  33.  
  34.  lv_Labels       = GTLV_Labels;
  35.  lv_Disabled     = GA_Disabled;
  36.  lv_ScrollWidth  = GTLV_ScrollWidth;
  37.  lv_ShowSelected = GTLV_ShowSelected;
  38.  lv_ReadOnly     = GTLV_ReadOnly;
  39.  lv_Spacing      = LAYOUTA_Spacing;
  40.  lv_Top          = GTLV_Top;
  41.  lv_Selected     = GTLV_Selected;
  42.  lv_NewSelected  = (lv_Dummy+1);
  43.  lv_Window       = (lv_Dummy+2);
  44.  lv_SetMark      = (lv_Dummy+3);
  45.  lv_ClearMark    = (lv_Dummy+4);
  46.  lv_BlockStart   = (lv_Dummy+5);
  47.  lv_BlockStop    = (lv_Dummy+6);
  48.  lv_MarkBlock    = (lv_Dummy+7);
  49.  lv_MarkIsIn     = (lv_Dummy+8);
  50.  lv_OnlyRead     = (lv_Dummy+9);
  51.  lv_Colour       = (lv_Dummy+10);
  52.  lv_Color        = lv_Colour;
  53.  lv_NewSelectMode= (lv_Dummy+11);
  54.  lv_NewSelectLines= (lv_Dummy+12);
  55.  lv_SetFont      = (lv_Dummy+13);
  56.  lv_Redraw       = (lv_Dummy+14);
  57.  lv_OffIsIn      = (lv_Dummy+15);
  58.  lv_ElseSelected = (lv_Dummy+16);
  59.  lv_OffColour    = (lv_Dummy+17);
  60.  lv_OffColor     = lv_OffColour;
  61.  lv_NewKind      = (lv_Dummy+18);
  62.  lv_xFrontColour = (lv_Dummy+19);
  63.  lv_xFrontColor  = lv_xFrontColour;
  64.  lv_xBackColour  = (lv_Dummy+20);
  65.  lv_xBackColor   = lv_xBackColour;
  66.  lv_Hook         = (lv_Dummy+22);
  67.  lv_Notick       = (lv_Dummy+23);
  68.  lv_AlwaysMark   = (lv_Dummy+24);
  69.  lv_MarkOn       = (lv_Dummy+25);
  70.  lv_SuperListView= (lv_Dummy+26);
  71.  lv_ScrollHeight = (lv_Dummy+27);
  72.  lv_HorizSelected= (lv_Dummy+28);
  73.  lv_HorizScroll  = (lv_Dummy+29);
  74.  lv_Private1     = (lv_Dummy+30);
  75.  lv_ColumnData   = (lv_Dummy+31);
  76.  lv_FormatText   = (lv_Dummy+32);
  77.  lv_AfterHook    = (lv_Dummy+33);
  78.  
  79.  
  80. (*
  81.  *  ein paar Ergebnis-Tags (Ask Tags)
  82.  *
  83.  *  die Ergebnisse stehen jeweils im ti_Data Feld,
  84.  *  einige benötigen dort bereits vor dem Aufruf einen Bezugswert
  85.  *  (Tags können grundsätzlich nur bei [S]et benutzt werden!)
  86.  *
  87.  *)
  88.  
  89. CONST
  90.  lv_AskTop      = (lv_Dummy+50);
  91.  lv_AskLines    = (lv_Dummy+51);
  92.  lv_AskNumber   = (lv_Dummy+52);
  93.  lv_AskNode     = (lv_Dummy+53);
  94.  lv_IsShown     = (lv_Dummy+54);
  95.  lv_IsMarked    = (lv_Dummy+55);
  96.  lv_IsMarkedNr  = (lv_Dummy+56);
  97.  lv_MarkedCount = (lv_Dummy+57);
  98.  lv_AskHoriz    = (lv_Dummy+58);
  99.  lv_AskMaxHoriz = (lv_Dummy+59);
  100.  
  101. (*
  102.  *  Werte für lv_NewSelectMode
  103.  *
  104.  *  Wird ein Element über NewSelected bestimmt, wird automatisch lv_Top
  105.  *  so gesetzt, daß das Element sichtbar ist. Wie, bestimmt NewSelectMode.
  106.  *)
  107.  
  108. CONST
  109.  NSM_ExtraLine = 0;
  110.  NSM_Center    = 1;
  111.  NSM_NoLine    = 2;
  112.  NSM_FreeLine  = 3;
  113.  NSM_max       = 3;
  114.  
  115.  
  116. (*
  117.  *  Datenfeld, daß Hooks übergeben wird
  118.  *
  119.  *  add_x Feld steht auf 0 und kann (darf) als einziges geändert werden
  120.  *  im RastPort darf "alles" verändert werden, wenn es wieder auf die
  121.  *  alten Werte gesetzt wird (außer APen, BPen und DrMd, diese werden
  122.  *  von der ListView Textausgabe wieder richtig gesetzt)
  123.  *  Breite und Höhe des ListView Eintrags müssen vom Hook selbst beachtet
  124.  *  werden - jedes Überzeichnen wird sichtbar!
  125.  *
  126.  *)
  127.  
  128. TYPE lvData=record
  129.  lvd_Current    : p_Node;
  130.  lvd_RPort      : p_RastPort;
  131.  lvd_x          : word;
  132.  lvd_y          : word;
  133.  lvd_width      : integer;
  134.  lvd_height     : integer;
  135.  lvd_selected   : boolean;
  136.  lvd_marked     : boolean;
  137.  lvd_free       : word;
  138. (* Werte ab hier dürfen geändert werden! *)
  139.  lvd_FrontPen   : integer;
  140.  lvd_BackPen    : integer;
  141.  lvd_Style      : integer;
  142.  lvd_add_x      : integer;
  143.  lvd_flags      : long;
  144. end;
  145. p_lvData=^lvData;
  146.  
  147. lvExtraWindow=record
  148.   lvx_win       : p_Window;
  149.   lvx_vi        : Ptr;
  150.   lvx_TextAttr  : p_TextAttr;
  151.   lvx_LeftEdge  : integer;
  152.   lvx_TopEdge   : integer;
  153.   lvx_Width     : integer;
  154.   lvx_Height    : integer;
  155.   lvx_MaxWidth  : integer;
  156.   lvx_MaxHeight : integer;
  157.   lvx_GadgetID  : word;
  158.   lvx_UserData  : Ptr;
  159.   lvx_Title     : str;
  160.   lvx_Flags     : long;
  161. end;
  162. p_lvExtraWindow=^lvExtraWindow;
  163.  
  164. (*
  165.  *  lvExtraWindow Flags:
  166.  *
  167.  *)
  168. const
  169.  LVXF_DEPTHGADGET  =  1;  (* Depth Gadget *)
  170.  LVXF_SIZEGADGET   =  2;  (* Size Gadget *)
  171.  LVXF_CLOSEGADGET  =  4;  (* Close Gadget *)
  172.  LVXF_DRAGGADGET   =  8;  (* Dragbar *)
  173.  LVXF_RAWKEY       = 16;  (* RAWKEY IDCMP *)
  174.  LVXF_VANILLAKEY   = 32;  (* VANILLAKEY IDCMP *)
  175.  
  176. (*
  177.  * ColumnData - Mehrere Spalten im ListView, ln_Name wird ignoriert
  178.  * ARRAY wird über lv_ColumnData übergeben
  179.  *)
  180.  
  181. TYPE
  182.  ColumnData=RECORD
  183.   cd_Offset     : Ptr;
  184.   cd_LeftEdge   : Word;
  185.   cd_Width      : Word;
  186.   cd_Flags      : Long;
  187.  end;
  188.  p_ColumnData=^ColumnData;
  189.  
  190. (*
  191.  * ColumnData Flags:
  192.  *)
  193.  
  194. CONST
  195.  cdf_AdjustRight    = 1;
  196.  cdf_AdjustMid        = 2;
  197.  
  198. (*
  199.  *  Multiselect Rückgaben
  200.  *  (nur bei MARKVIEW_KIND)
  201.  *
  202.  *)
  203.  
  204. CONST
  205.  MARK_QUALIFIER_SET   = 1;
  206.  MARK_QUALIFIER_CLEAR = 2;
  207.  
  208. var JS_ToolsBase:Ptr;
  209.  
  210. library JS_ToolsBase:
  211.  
  212. -36: function  JS_LibInfo(d1:long):str;
  213. -54: function  LV_CreateListViewA(d0:LONG;a0:p_Gadget;a1:p_NewGadget;a2:p_TagItem):p_Gadget;
  214. -60: procedure LV_FreeListView(a0:p_Gadget);
  215. -66: procedure LV_FreeListViews(a0:p_Gadget);
  216. -72: procedure LV_SetListViewAttrsA(a0:p_Gadget;a1:p_Window;a2:p_Requester;a3:p_TagItem);
  217. -78: procedure LV_RefreshWindow(a0:p_Window;a1:p_Requester);
  218. -84: function  LV_GetIMsg(a0:p_MsgPort):p_IntuiMessage;
  219. -90: procedure LV_ReplyIMsg(a1:p_IntuiMessage);
  220. -96: function  LV_AskListViewAttrs(a0:p_Gadget;a1:p_Window;d0:long;d1:long):long;
  221. -102: function LV_GetListViewAttrsA(a0:p_Gadget;a1:p_Window;a2:p_Requester;a3:p_TagItem):long;
  222. -108: function LV_CreateExtraListViewA(a0:p_lvExtraWindow;a1:p_TagItem):p_Gadget;
  223. -114: procedure JS_Sort(a0:p_List;d0:long);
  224. -126: function LV_HandleKey(a0:p_Gadget;a1:p_IntuiMessage;d0:char;a2:p_TagItem):char;
  225. end;
  226.  
  227. function lvHook(lvF:long;hk:p_Hook):ptr;
  228. (*
  229.  example:
  230.  
  231.  procedure myHook(h:p_Hook;lvd:p_lvData;m:ptr)
  232.  begin
  233.   (* Hook - m currently not used *)
  234.  end;
  235.  
  236.  (* any procedure *)
  237.  var hk:Hook;
  238.    (* more *)
  239.  begin
  240.  
  241.   (* something *)
  242.  
  243.   ti[0]:=TagItem(lv_Hook,lvHook(addr(myHook),hk));
  244.  
  245.   (* and so on *)
  246.  
  247.  end; 
  248. *)  
  249.  
  250. procedure lvHookCode;import;
  251.  
  252. {$ulink "lvHookCode.o"}
  253. IMPLEMENTATION
  254.  
  255. function lvHook;
  256. begin
  257.   hk^.h_Entry   :=ptr(addr(lvHookCode));
  258.   hk^.h_SubEntry:=ptr(lvF);
  259.   hk^.h_Data    :=nil;
  260.   lvHook:=hk;
  261. end;
  262.  
  263. begin
  264.  OpenLib(JS_ToolsBase,"js_tools.library",37);
  265.  
  266. end.
  267.