home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Palettes / MiscTableScroll / MiscTableScroll.subproj / MiscTableScroll.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-11  |  26.3 KB  |  747 lines

  1. #ifndef __MiscTableScroll_h
  2. #define __MiscTableScroll_h
  3. //=============================================================================
  4. //
  5. //        Copyright (C) 1995, 1996 by Paul S. McCarthy and Eric Sunshine.
  6. //                Written by Paul S. McCarthy and Eric Sunshine.
  7. //                            All Rights Reserved.
  8. //
  9. //        This notice may not be removed from this source code.
  10. //
  11. //        This object is included in the MiscKit by permission from the authors
  12. //        and its use is governed by the MiscKit license, found in the file
  13. //        "License.rtf" in the MiscKit distribution.    Please refer to that file
  14. //        for a list of all applicable permissions and restrictions.
  15. //        
  16. //=============================================================================
  17. //-----------------------------------------------------------------------------
  18. // <misckit/MiscTableScroll.h>
  19. //
  20. //        ScrollView class that displays a 2-D table of cells.
  21. //
  22. //-----------------------------------------------------------------------------
  23. //-----------------------------------------------------------------------------
  24. // $Id: MiscTableScroll.h,v 1.10 96/01/17 02:19:12 sunshine Exp $
  25. // $Log:        MiscTableScroll.h,v $
  26. // Revision 1.10  96/01/17    02:19:12  sunshine
  27. // Published -changeFont:
  28. // 
  29. // Revision 1.9     96/01/16  19:51:55     zarnuk
  30. // Published -selectionChanged.
  31. // 
  32. // Revision 1.8     96/01/13  23:35:32     zarnuk
  33. // New (Sort) category.
  34. // New data-access methods -intValueAt::, etc.
  35. // New color-change notification messages.
  36. // New font-change notification message.
  37. //-----------------------------------------------------------------------------
  38. #import <misckit/MiscTableTypes.h>
  39. #import <misckit/MiscIntList.h>
  40.  
  41. MISC_TS_EXTERN_BEGIN( "Objective-C" )
  42. #import <appkit/ScrollView.h>
  43. MISC_TS_EXTERN_END
  44.  
  45. MISC_TS_CLASS_DEF( MiscTableBorder );
  46. @class MiscTableScroll, MiscTableView, MiscBorderView, MiscNullView;
  47. @class ClipView, Font, Storage;
  48.  
  49.  
  50. typedef struct MiscBorderInfo
  51.         {
  52.         MiscTableBorder*        border;
  53.         MiscBorderView*            view;
  54.         ClipView*                clip;
  55.         int                        sort_vector_len;
  56.         int*                    sort_vector;
  57.         BOOL                    isOn;
  58.         BOOL                    autoSort;
  59.         BOOL                    constrain_min;
  60.         BOOL                    constrain_max;
  61.         } MiscBorderInfo;
  62.  
  63.  
  64. @interface MiscTableScroll : ScrollView
  65.     {
  66. @private
  67.     MiscTableView*        tableView;
  68.     MiscBorderInfo*        info[2];        // { &colInfo, &rowInfo }
  69.     MiscBorderInfo        colInfo;
  70.     MiscBorderInfo        rowInfo;
  71.     MiscNullView*        nullView;
  72.     Font*                font;
  73.     NXColor                textColor;
  74.     NXColor                backgroundColor;
  75.     NXColor                highlightTextColor;
  76.     NXColor                highlightBackgroundColor;
  77.     id                    nextText;
  78.     id                    previousText;
  79.     id                    delegate;
  80.     id                    dataDelegate;
  81.     id                    target;
  82.     id                    doubleTarget;
  83.     SEL                    action;
  84.     SEL                    doubleAction;
  85.     int                    tag;
  86.     MiscCompareEntryFunc sort_entry_func;
  87.     MiscCompareSlotFunc sort_slot_func;
  88.     BOOL                enabled;
  89.     BOOL                lazy;
  90.     MiscSelectionMode    mode;
  91.     int                    num_cols;        // Currently active number of
  92.     int                    num_rows;        // columns and rows.
  93.     int                    max_rows;        // Highwater mark for Cell allocations.
  94.     int                    max_cells;
  95.     id*                    cells;
  96.     }
  97.  
  98. - initFrame: (NXRect const*) frameRect;
  99. - free;
  100.  
  101.  
  102. // DELEGATE -------------------------------------------------------------------
  103. - delegate;
  104. - setDelegate:obj;
  105. - dataDelegate;
  106. - setDataDelegate:obj;
  107.  
  108. // Private: border -> scroll
  109. - (char const*) border:(MiscBorderType)b getDelegateSlotTitle:(int)slot;
  110. - border:(MiscBorderType)b getDelegateSlotPrototype:(int)s;
  111.  
  112.  
  113. // TARGET / ACTION ------------------------------------------------------------
  114. - target;
  115. - setTarget:obj;
  116. - doubleTarget;
  117. - setDoubleTarget:obj;
  118. - (SEL) action;
  119. - setAction:(SEL)new_sel;
  120. - (SEL) doubleAction;
  121. - setDoubleAction:(SEL)new_sel;
  122.  
  123. - sendAction:(SEL)theAction to:theTarget;
  124. - sendAction;
  125. - sendActionIfEnabled;
  126. - sendDoubleAction;
  127. - sendDoubleActionIfEnabled;
  128.  
  129. - (int) tag;
  130. - setTag:(int)x;
  131.  
  132.  
  133. // NEXT-TEXT CHAIN ------------------------------------------------------------
  134. - nextText;
  135. - previousText;
  136. - setNextText:obj;
  137. - setPreviousText:obj;
  138. - selectText:sender;
  139. - (BOOL) isEnabled;
  140. - setEnabled:(BOOL)flag;
  141. - (BOOL) isSelectable;
  142.  
  143.  
  144. // FONT -----------------------------------------------------------------------
  145. - font;
  146. - setFont:newFont;
  147. - changeFont:sender;
  148. + (Font*) defaultFont;
  149.  
  150.  
  151. // COLOR ----------------------------------------------------------------------
  152. - (NXColor) backgroundColor;
  153. - setBackgroundColor: (NXColor) value;            // Sent to all cells.
  154. - (NXColor) textColor;
  155. - setTextColor: (NXColor) value;                // Sent to all cells.
  156. - (NXColor) highlightBackgroundColor;
  157. - setHighlightBackgroundColor: (NXColor) value; // Send to all cells.
  158. - (NXColor) highlightTextColor;
  159. - setHighlightTextColor: (NXColor) value;        // Sent to all cells.
  160.  
  161. - (float) backgroundGray;                        // Gray values are converted
  162. - setBackgroundGray: (float) value;                // to/from color values.
  163. - (float) textGray;
  164. - setTextGray: (float) value;
  165. - (float) highlightBackgroundGray;
  166. - setHighlightBackgroundGray: (float) value;
  167. - (float) highlightTextGray;
  168. - setHighlightTextGray: (float) value;
  169.  
  170. - setColor:(NXColor) value;                // Alias for -setBackgroundColor:
  171. - (NXColor) color;                        // Alias for -backgroundColor
  172.  
  173. + (NXColor) defaultBackgroundColor;
  174. + (NXColor) defaultTextColor;
  175. + (NXColor) defaultHighlightBackgroundColor;
  176. + (NXColor) defaultHighlightTextColor;
  177.  
  178.  
  179. // SLOT ORDER -----------------------------------------------------------------
  180. - border:(MiscBorderType)b slotOrder:(MiscIntList*)list;
  181. - colOrder:(MiscIntList*)list;
  182. - rowOrder:(MiscIntList*)list;
  183.  
  184. - border:(MiscBorderType)b setSlotOrder:(MiscIntList*)list;
  185. - setColOrder:(MiscIntList*)list;
  186. - setRowOrder:(MiscIntList*)list;
  187.  
  188. - (char*) border:(MiscBorderType)b slotOrderAsString:(char*)buff
  189.         size:(int)buff_size canExpand:(BOOL)canExpand;
  190. - (char*) colOrderAsString:(char*)buff
  191.         size:(int)buff_size canExpand:(BOOL)canExpand;
  192. - (char*) rowOrderAsString:(char*)buff
  193.         size:(int)buff_size canExpand:(BOOL)canExpand;
  194.  
  195. - border:(MiscBorderType)b setSlotOrderFromString:(char const*)s;
  196. - setColOrderFromString:(char const*)s;
  197. - setRowOrderFromString:(char const*)s;
  198.  
  199.  
  200. // SLOT SIZES -----------------------------------------------------------------
  201. - border:(MiscBorderType)b slotSizes:(MiscIntList*)list;
  202. - colSizes:(MiscIntList*)list;
  203. - rowSizes:(MiscIntList*)list;
  204.  
  205. - border:(MiscBorderType)b setSlotSizes:(MiscIntList*)list;
  206. - setColSizes:(MiscIntList*)list;
  207. - setRowSizes:(MiscIntList*)list;
  208.  
  209. - (char*) border:(MiscBorderType)b slotSizesAsString:(char*)buff
  210.         size:(int)buff_size canExpand:(BOOL)canExpand;
  211. - (char*) colSizesAsString:(char*)buff
  212.         size:(int)buff_size canExpand:(BOOL)canExpand;
  213. - (char*) rowSizesAsString:(char*)buff
  214.         size:(int)buff_size canExpand:(BOOL)canExpand;
  215.  
  216. - border:(MiscBorderType)b setSlotSizesFromString:(char const*)s;
  217. - setColSizesFromString:(char const*)s;
  218. - setRowSizesFromString:(char const*)s;
  219.  
  220.  
  221. // MULTICAST MESSAGES ---------------------------------------------------------
  222. - sendAction:(SEL)aSelector to:anObject forAllCells:(BOOL)flag;
  223.  
  224. - (int) makeCellsPerform:(SEL)aSel selectedOnly:(BOOL)flag;
  225. - (int) makeCellsPerform:(SEL)aSel with:arg1 selectedOnly:(BOOL)flag;
  226. - (int) makeCellsPerform:(SEL)aSel with:arg1 with:arg2 selectedOnly:(BOOL)flag;
  227.  
  228. - (int) makeCellsPerform:(SEL)aSel;
  229. - (int) makeCellsPerform:(SEL)aSel with:arg1;
  230. - (int) makeCellsPerform:(SEL)aSel with:arg1 with:arg2;
  231.  
  232.  
  233. // FINDING CELLS --------------------------------------------------------------
  234. - (int) border:(MiscBorderType)b findSlotWithTag:(int)x;
  235. - (int) findColWithTag:(int)x;
  236. - (int) findRowWithTag:(int)x;
  237. - findCellWithTag:(int)x;
  238. - findCellWithTag:(int)x row:(int*)row col:(int*)col;
  239. - findCell:cell row:(int*)row col:(int*)col;
  240.  
  241.  
  242. // SELECTION ------------------------------------------------------------------
  243. - (MiscSelectionMode) selectionMode;
  244. - (void) setSelectionMode: (MiscSelectionMode)x;
  245. - (BOOL) borderHasSelection: (MiscBorderType)b;
  246. - (BOOL) hasRowSelection;
  247. - (BOOL) hasColSelection;
  248. - (BOOL) borderHasMultipleSelection: (MiscBorderType)b;
  249. - (BOOL) hasMultipleRowSelection;
  250. - (BOOL) hasMultipleColSelection;
  251. - (unsigned int) borderNumSelectedSlots: (MiscBorderType)b;
  252. - (unsigned int) numSelectedRows;
  253. - (unsigned int) numSelectedCols;
  254. - (BOOL) cellIsSelected: (MiscCoord_P)row : (MiscCoord_P)col;
  255. - (BOOL) border: (MiscBorderType)b slotIsSelected: (MiscCoord_P)slot;
  256. - (BOOL) rowIsSelected: (MiscCoord_P)row;
  257. - (BOOL) colIsSelected: (MiscCoord_P)col;
  258. - (MiscCoord_P) borderSelectedSlot: (MiscBorderType)b;
  259. - (MiscCoord_P) selectedRow;
  260. - (MiscCoord_P) selectedCol;
  261. - (void) border: (MiscBorderType)b selectedTags: (MiscIntList*)tags;
  262. - (void) selectedRowTags: (MiscIntList*)tags;
  263. - (void) selectedColTags: (MiscIntList*)tags;
  264. - (void) border: (MiscBorderType)b selectedSlots: (MiscIntList*)slots;
  265. - (void) selectedRows: (MiscIntList*)rows;
  266. - (void) selectedCols: (MiscIntList*)cols;
  267. - (void) border: (MiscBorderType)b selectSlot: (MiscCoord_P)slot;
  268. - (void) selectRow: (MiscCoord_P)row;
  269. - (void) selectCol: (MiscCoord_P)col;
  270. - (void) border: (MiscBorderType)b selectTags: (MiscIntList*)tags;
  271. - (void) selectRowTags: (MiscIntList*)tags;
  272. - (void) selectColTags: (MiscIntList*)tags;
  273. - (void) border: (MiscBorderType)b selectSlots: (MiscIntList*)slots;
  274. - (void) selectRows: (MiscIntList*)rows;
  275. - (void) selectCols: (MiscIntList*)cols;
  276. - (void) borderSelectAll: (MiscBorderType)b;
  277. - (void) selectAllRows;
  278. - (void) selectAllCols;
  279. - selectAll: sender;            // -selectAllRows and sends action to target.
  280. - (void) borderClearSelection: (MiscBorderType)b;
  281. - (void) clearRowSelection;
  282. - (void) clearColSelection;
  283. - (void) clearSelection;
  284.  
  285.  
  286. // MOUSE & KEYBOARD TRACKING --------------------------------------------------
  287. - (void) trackBy: (MiscBorderType)b;
  288. - (MiscBorderType) trackingBy;
  289.  
  290.  
  291. // KEYBOARD CURSOR ------------------------------------------------------------
  292. - (MiscCoord_P) borderCursor: (MiscBorderType)b;
  293. - (MiscCoord_P) cursorRow;
  294. - (MiscCoord_P) cursorCol;
  295. - (void) border: (MiscBorderType)b setCursor: (MiscCoord_P) slot;
  296. - (void) setCursorRow: (MiscCoord_P) row;
  297. - (void) setCursorCol: (MiscCoord_P) col;
  298. - (void) borderClearCursor: (MiscBorderType)b;
  299. - (void) clearCursorRow;
  300. - (void) clearCursorCol;
  301. - (void) clearCursor;
  302. - (BOOL) borderHasValidCursor: (MiscBorderType)b;
  303. - (BOOL) hasValidCursorRow;
  304. - (BOOL) hasValidCursorCol;
  305.  
  306.  
  307. // GLOBAL SIZE LIMITS ---------------------------------------------------------
  308. - (NXCoord) totalSize:(MiscBorderType)b;
  309. - (NXCoord) totalWidth;
  310. - (NXCoord) totalHeight;
  311.  
  312. - (NXCoord) minTotalSize:(MiscBorderType)b;
  313. - (NXCoord) maxTotalSize:(MiscBorderType)b;
  314. - (NXCoord) minTotalWidth;
  315. - (NXCoord) maxTotalWidth;
  316. - (NXCoord) minTotalHeight;
  317. - (NXCoord) maxTotalHeight;
  318.  
  319. - (void) border:(MiscBorderType)b setMinTotalSize:(NXCoord)size;
  320. - (void) border:(MiscBorderType)b setMaxTotalSize:(NXCoord)size;
  321. - (void) setMinTotalWidth:(NXCoord)size;
  322. - (void) setMaxTotalWidth:(NXCoord)size;
  323. - (void) setMinTotalHeight:(NXCoord)size;
  324. - (void) setMaxTotalHeight:(NXCoord)size;
  325.  
  326. - (void) constrainSize;            // Applies constraints, updates views.
  327.  
  328. - (BOOL) minTotalSizeIsConstrained:(MiscBorderType)b;
  329. - (BOOL) maxTotalSizeIsConstrained:(MiscBorderType)b;
  330. - (BOOL) minTotalWidthIsConstrained;
  331. - (BOOL) maxTotalWidthIsConstrained;
  332. - (BOOL) minTotalHeightIsConstrained;
  333. - (BOOL) maxTotalHeightIsConstrained;
  334.  
  335. - (void) border:(MiscBorderType)b constrainMinTotalSize:(BOOL)flag;
  336. - (void) border:(MiscBorderType)b constrainMaxTotalSize:(BOOL)flag;
  337. - (void) constrainMinTotalWidth:(BOOL)flag;
  338. - (void) constrainMaxTotalWidth:(BOOL)flag;
  339. - (void) constrainMinTotalHeight:(BOOL)flag;
  340. - (void) constrainMaxTotalHeight:(BOOL)flag;
  341.  
  342.  
  343. // SLOTS ----------------------------------------------------------------------
  344. - (MiscTableBorder*) border:(MiscBorderType)b;
  345. - (BOOL) borderTitlesOn:(MiscBorderType)b;
  346. - (BOOL) border:(MiscBorderType)b setTitlesOn: (BOOL) on_off;
  347.         // -border:setTitlesOn: Returns YES if changed.
  348. - (MiscTableTitleMode) borderTitleMode:(MiscBorderType)b;
  349. - (void) border:(MiscBorderType)b setTitleMode:(MiscTableTitleMode)x;
  350.  
  351. - border:(MiscBorderType)b moveSlotFrom:(int)pos to:(int)pos;
  352. - (int) border:(MiscBorderType)b slotPosition:(int)slot;
  353. - (int) border:(MiscBorderType)b slotAtPosition:(int)pos;
  354. - (void) border:(MiscBorderType)b physicalToVisual:(MiscIntList*)list;
  355. - (void) border:(MiscBorderType)b visualToPhysical:(MiscIntList*)list;
  356.  
  357. - (BOOL) sizeableSlots:(MiscBorderType)b;
  358. - (BOOL) draggableSlots:(MiscBorderType)b;
  359. - (BOOL) modifierDragSlots:(MiscBorderType)b;
  360. - (NXCoord) uniformSizeSlots:(MiscBorderType)b;
  361.  
  362. - (NXCoord) border:(MiscBorderType)b slotAdjustedSize:(int)slot;
  363. - (NXCoord) border:(MiscBorderType)b slotSize:(int)slot;
  364. - (NXCoord) border:(MiscBorderType)b slotMinSize:(int)slot;
  365. - (NXCoord) border:(MiscBorderType)b slotMaxSize:(int)slot;
  366. - (NXCoord) border:(MiscBorderType)b slotDataSize:(int)slot;
  367. - (BOOL) border:(MiscBorderType)b slotIsSizeable:(int)slot;
  368. - (BOOL) border:(MiscBorderType)b slotExpandsToData:(int)slot;
  369. - (BOOL) border:(MiscBorderType)b slotIsAutosize:(int)slot;
  370. - (char const*) border:(MiscBorderType)b slotTitle:(int)slot;
  371. - (int) border:(MiscBorderType)b slotTag:(int)slot;
  372. - (MiscTableCellStyle) border:(MiscBorderType)b slotCellType:(int)slot;
  373. - border:(MiscBorderType)b slotCellPrototype:(int)slot;
  374.  
  375. - (void) border:(MiscBorderType)b setSizeableSlots:(BOOL)flag;
  376. - (void) border:(MiscBorderType)b setDraggableSlots:(BOOL)flag;
  377. - (void) border:(MiscBorderType)b setModifierDragSlots:(BOOL)flag;
  378. - (void) border:(MiscBorderType)b setUniformSizeSlots:(NXCoord)uniform_size;
  379.  
  380. - (void) border:(MiscBorderType)b setSlot:(int)n size:(NXCoord)size;
  381. - (void) border:(MiscBorderType)b setSlot:(int)n minSize:(NXCoord)size;
  382. - (void) border:(MiscBorderType)b setSlot:(int)n maxSize:(NXCoord)size;
  383. - (void) border:(MiscBorderType)b setSlot:(int)n dataSize:(NXCoord)size;
  384. - (void) border:(MiscBorderType)b setSlot:(int)n sizeable:(BOOL)flag;
  385. - (void) border:(MiscBorderType)b setSlot:(int)n expandsToData:(BOOL)flag;
  386. - (void) border:(MiscBorderType)b setSlot:(int)n autosize:(BOOL)flag;
  387. - (void) border:(MiscBorderType)b setSlot:(int)n title:(char const*)title;
  388. - (void) border:(MiscBorderType)b setSlot:(int)n tag:(int)tag;
  389. - (void) border:(MiscBorderType)b setSlot:(int)n
  390.                 cellType:(MiscTableCellStyle)t;
  391. - (void) border:(MiscBorderType)b setSlot:(int)n cellPrototype:cell;
  392.  
  393. // COLS -----------------------------------------------------------------------
  394. - (MiscTableBorder*) colBorder;
  395. - (BOOL) colTitlesOn;
  396. - (BOOL) setColTitlesOn: (BOOL) on_off; // Returns YES if changed.
  397. - (MiscTableTitleMode) colTitleMode;
  398. - (void) setColTitleMode:(MiscTableTitleMode)x;
  399.  
  400. - moveColFrom:(int)pos to:(int)pos;
  401. - (int) colPosition:(int)col;
  402. - (int) colAtPosition:(int)pos;
  403.  
  404. - (NXCoord) uniformSizeCols;
  405. - (BOOL) sizeableCols;
  406. - (BOOL) draggableCols;
  407. - (BOOL) modifierDragCols;
  408. - (NXCoord) colAdjustedSize:(int)col;
  409. - (NXCoord) colSize:(int)col;
  410. - (NXCoord) colMinSize:(int)col;
  411. - (NXCoord) colMaxSize:(int)col;
  412. - (NXCoord) colDataSize:(int)col;
  413. - (BOOL) colIsSizeable:(int)col;
  414. - (BOOL) colExpandsToData:(int)col;
  415. - (BOOL) colIsAutosize:(int)col;
  416. - (char const*) colTitle:(int)col;
  417. - (int) colTag:(int)col;
  418. - (MiscTableCellStyle) colCellType:(int)col;
  419. - colCellPrototype:(int)col;
  420.  
  421. - (void) setSizeableCols:(BOOL)flag;
  422. - (void) setDraggableCols:(BOOL)flag;
  423. - (void) setModifierDragCols:(BOOL)flag;
  424. - (void) setUniformSizeCols:(NXCoord)uniform_size;
  425.  
  426. - (void) setCol:(int)col size:(NXCoord)size;
  427. - (void) setCol:(int)col minSize:(NXCoord)size;
  428. - (void) setCol:(int)col maxSize:(NXCoord)size;
  429. - (void) setCol:(int)col dataSize:(NXCoord)size;
  430. - (void) setCol:(int)col sizeable:(BOOL)flag;
  431. - (void) setCol:(int)col expandsToData:(BOOL)flag;
  432. - (void) setCol:(int)col autosize:(BOOL)flag;
  433. - (void) setCol:(int)col title:(char const*)title;
  434. - (void) setCol:(int)col tag:(int)tag;
  435. - (void) setCol:(int)col cellType:(MiscTableCellStyle)type;
  436. - (void) setCol:(int)col cellPrototype:cell;
  437.  
  438.  
  439. // ROWS -----------------------------------------------------------------------
  440. - (MiscTableBorder*) rowBorder;
  441. - (BOOL) rowTitlesOn;
  442. - (BOOL) setRowTitlesOn: (BOOL) on_off;
  443. - (MiscTableTitleMode) rowTitleMode;
  444. - (void) setRowTitleMode:(MiscTableTitleMode)x;
  445.  
  446. - moveRowFrom:(int)fromPos to:(int)toPos;
  447. - (int) rowPosition:(int)row;
  448. - (int) rowAtPosition:(int)pos;
  449.  
  450. - (BOOL) sizeableRows;
  451. - (BOOL) draggableRows;
  452. - (BOOL) modifierDragRows;
  453. - (NXCoord) uniformSizeRows;
  454. - (NXCoord) rowAdjustedSize:(int)row;
  455. - (NXCoord) rowSize:(int)row;
  456. - (NXCoord) rowMinSize:(int)row;
  457. - (NXCoord) rowMaxSize:(int)row;
  458. - (NXCoord) rowDataSize:(int)row;
  459. - (BOOL) rowIsSizeable:(int)row;
  460. - (BOOL) rowExpandsToData:(int)row;
  461. - (BOOL) rowIsAutosize:(int)row;
  462. - (char const*) rowTitle:(int)row;
  463. - (int) rowTag:(int)row;
  464. - (MiscTableCellStyle) rowCellType:(int)row;
  465. - rowCellPrototype:(int)row;
  466.  
  467. - (void) setSizeableRows:(BOOL)flag;
  468. - (void) setDraggableRows:(BOOL)flag;
  469. - (void) setModifierDragRows:(BOOL)flag;
  470. - (void) setUniformSizeRows:(NXCoord)uniform_size;
  471.  
  472. - (void) setRow:(int)row size:(NXCoord)size;
  473. - (void) setRow:(int)row minSize:(NXCoord)size;
  474. - (void) setRow:(int)row maxSize:(NXCoord)size;
  475. - (void) setRow:(int)row dataSize:(NXCoord)size;
  476. - (void) setRow:(int)row sizeable:(BOOL)flag;
  477. - (void) setRow:(int)row expandsToData:(BOOL)flag;
  478. - (void) setRow:(int)row autosize:(BOOL)flag;
  479. - (void) setRow:(int)row title:(char const*)title;
  480. - (void) setRow:(int)row tag:(int)tag;
  481. - (void) setRow:(int)row cellType:(MiscTableCellStyle)type;
  482. - (void) setRow:(int)row cellPrototype:cell;
  483.  
  484. // DRAWING --------------------------------------------------------------------
  485. - (void) getDocClipFrame:(NXRect*)rect;
  486.  
  487. - drawCellAt: (int)row : (int)col;                        // Physical coords
  488.  
  489. - drawRow: (int)row;                                    // Physical coords
  490. - drawCol: (int)col;                                    // Physical coords
  491. - border:(MiscBorderType)b drawSlot:(int)n;
  492.  
  493. - (void) scrollCellToVisible: (int)row : (int) col;        // Physical coords
  494. - (void) scrollRowToVisible: (int)row;                    // Physical coord
  495. - (void) scrollColToVisible: (int)col;                    // Physical coord
  496. - scrollSelToVisible;
  497.  
  498. - border:(MiscBorderType)b drawSlotTitle:(int)n;
  499. - drawRowTitle:(int)n;
  500. - drawColTitle:(int)n;
  501.  
  502. - (void) selectionChanged;        // Checks isAutodisplay.
  503. - (void) reflectSelection;        // Does not check isAutodisplay.
  504. - setAutodisplay:(BOOL) x;
  505.  
  506. - sizeToCells;
  507.  
  508. // Private: BorderView -> TableScroll
  509. - (void) border:(MiscBorderType)b slotDraggedFrom:(int)fromPos to:(int)toPos;
  510. - (void) border:(MiscBorderType)b slotResized:(int)n;
  511.  
  512. @end
  513.  
  514.  
  515. // SORTING --------------------------------------------------------------------
  516. @interface MiscTableScroll(Sort)
  517.  
  518. - (MiscCompareSlotFunc) compareSlotFunc;
  519. - (void) setCompareSlotFunc: (MiscCompareSlotFunc) f;
  520.  
  521. - (void) sortInfoInit:(MiscSlotSortInfo*)ip border:(MiscBorderType)b;
  522. - (void) sortInfoDone:(MiscSlotSortInfo*)ip;
  523.  
  524. // Slots
  525. - (BOOL) autoSortSlots:(MiscBorderType)b;
  526. - (void) border:(MiscBorderType)b setAutoSortSlots:(BOOL)flag;
  527. - (int const*) slotSortVector:(MiscBorderType)b len:(int*)len;
  528. - (void) border:(MiscBorderType)b setSlotSortVector:(int const*)v len:(int)n;
  529.  
  530. - (void) sortSlots:(MiscBorderType) b;
  531. - (BOOL) slotsAreSorted:(MiscBorderType)b;
  532. - (BOOL) border:(MiscBorderType) b sortSlot:(int)n;
  533. - (BOOL) border:(MiscBorderType)b slotIsSorted:(int)n;
  534.  
  535. - (int) border:(MiscBorderType)b compareSlots:(int)slot1 :(int)slot2
  536.         info:(MiscSlotSortInfo*)ip;
  537. - (int) border:(MiscBorderType)b compareSlots:(int)slot1 :(int)slot2;
  538.  
  539.  
  540. - (MiscCompareEntryFunc) border:(MiscBorderType)b slotSortFunc:(int)n;
  541. - (MiscSortDirection) border:(MiscBorderType)b slotSortDirection:(int)n;
  542. - (MiscSortType) border:(MiscBorderType)b slotSortType:(int)n;
  543. - (void) border:(MiscBorderType)b setSlot:(int)n
  544.                 sortFunc:(MiscCompareEntryFunc)x;
  545. - (void) border:(MiscBorderType)b setSlot:(int)n
  546.                 sortDirection:(MiscSortDirection)x;
  547. - (void) border:(MiscBorderType)b setSlot:(int)n
  548.                 sortType:(MiscSortType)x;
  549.  
  550. // Cols
  551. - (BOOL) autoSortCols;
  552. - (void) setAutoSortCols:(BOOL)flag;
  553. - (int const*) colSortVectorLen:(int*)len;
  554. - (void) setColSortVector:(int const*)v len:(int)n;
  555.  
  556. - (void) sortCols;
  557. - (BOOL) colsAreSorted;
  558. - (BOOL) sortCol:(int)n;
  559. - (BOOL) colIsSorted:(int)n;
  560. - (int) compareCols:(int)c1 :(int)c2 info:(MiscSlotSortInfo*)ip;
  561. - (int) compareCols:(int)c1 :(int)c2;
  562.  
  563. - (MiscCompareEntryFunc) colSortFunc:(int)n;
  564. - (MiscSortDirection) colSortDirection:(int)n;
  565. - (MiscSortType) colSortType:(int)n;
  566. - (void) setCol:(int)n sortFunc:(MiscCompareEntryFunc)x;
  567. - (void) setCol:(int)n sortDirection:(MiscSortDirection)x;
  568. - (void) setCol:(int)n sortType:(MiscSortType)x;
  569.  
  570. // Rows
  571. - (BOOL) autoSortRows;
  572. - (void) setAutoSortRows:(BOOL)flag;
  573. - (int const*) rowSortVectorLen:(int*)len;
  574. - (void) setRowSortVector:(int const*)v len:(int)n;
  575.  
  576. - (void) sortRows;
  577. - (BOOL) rowsAreSorted;
  578. - (BOOL) sortRow:(int)n;
  579. - (BOOL) rowIsSorted:(int)n;
  580. - (int) compareRows:(int)r1 :(int)r2 info:(MiscSlotSortInfo*)ip;
  581. - (int) compareRows:(int)r1 :(int)r2;
  582.  
  583. - (MiscCompareEntryFunc) rowSortFunc:(int)n;
  584. - (MiscSortDirection) rowSortDirection:(int)n;
  585. - (MiscSortType) rowSortType:(int)n;
  586. - (void) setRow:(int)n sortFunc:(MiscCompareEntryFunc)x;
  587. - (void) setRow:(int)n sortDirection:(MiscSortDirection)x;
  588. - (void) setRow:(int)n sortType:(MiscSortType)x;
  589. @end
  590.  
  591.  
  592. // DATA MANIPULATION ----------------------------------------------------------
  593. @interface MiscTableScroll(Data)
  594. - (BOOL) isLazy;
  595. - (void) setLazy:(BOOL)flag;
  596.  
  597. - cellAt:(int)row :(int)col;
  598.  
  599. // Lazy mode tables that perform multiple-buffering:
  600. - (int) buffCount;
  601.  
  602. // Lazy mode asks delegate/dataDelegate first then uses cellAt::
  603. // Eager mode goes straight to cellAt::
  604. - (int) tagAt:(int)row :(int)col;
  605. - (int) intValueAt:(int)row :(int)col;
  606. - (float) floatValueAt:(int)row :(int)col;
  607. - (double) doubleValueAt:(int)row :(int)col;
  608. - (char const*) stringValueAt:(int)row :(int)col;
  609. // For ButtonCells.
  610. - (char const*) titleAt:(int)row :(int)col;
  611. - (int) stateAt:(int)row :(int)col;
  612.  
  613. // Invoke delegate methods if possible.
  614. - reviveCell:cell at:(int)row :(int)col;
  615. - retireCell:cell at:(int)row :(int)col;
  616.  
  617. // Builtin default implementation.
  618. - doReviveCell:cell at:(int)row:(int)col;
  619. - doRetireCell:cell at:(int)row:(int)col;
  620.  
  621. - addSlot:(MiscBorderType)b;
  622. - border:(MiscBorderType)b insertSlotAt:(int)pos;
  623. - border:(MiscBorderType)b deleteSlotAt:(int)pos;
  624. - (int) numSlots:(MiscBorderType)b;
  625.  
  626. - addCol;
  627. - insertColAt:(int)pos;
  628. - deleteColAt:(int)pos;
  629. - (int) numCols;
  630.  
  631. - addRow;
  632. - insertRowAt:(int)pos;
  633. - deleteRowAt:(int)pos;
  634. - (int) numRows;
  635.  
  636. - renewRows:(int)count;
  637. - empty;                        // [self renewRows:0];
  638. - emptyAndFreeCells;
  639. @end
  640.  
  641.  
  642. // PASTEBOARD SUPPORT ---------------------------------------------------------
  643. @interface MiscTableScroll(Pasteboard)
  644. - copy:sender;
  645. - cut:sender;
  646. - validRequestorForSendType:(NXAtom)t_write andReturnType:(NXAtom)t_read;
  647. - builtinValidRequestorForSendType:(NXAtom)t_write
  648.         andReturnType:(NXAtom)t_read;
  649. - (BOOL) canWritePboardType:(NXAtom)type;
  650. - (BOOL) builtinCanWritePboardType:(NXAtom)type;
  651. - (BOOL) writeSelectionToPasteboard:pboard types:(NXAtom*)types;
  652. - (BOOL) builtinWriteSelectionToPasteboard:pboard types:(NXAtom*)types;
  653. - (void) writePboard:pboard type:(NXAtom)type toStream:(NXStream*)stream;
  654. - (void) builtinWritePboard:pb type:(NXAtom)type toStream:(NXStream*)stream;
  655. - (void) writeNXAsciiPboardTypeToStream:(NXStream*)stream;
  656. - (void) writeNXTabularTextPboardTypeToStream:(NXStream*)stream;
  657. - readSelectionFromPasteboard:pboard;
  658. - builtinReadSelectionFromPasteboard:pboard;
  659. - (void) builtinRegisterServicesTypes;
  660. - (void) registerServicesTypes;
  661. @end
  662.  
  663.  
  664. // DELEGATE PROTOCOL ----------------------------------------------------------
  665. @interface MiscTableScroll(Delegate)
  666. - tableScroll:(MiscTableScroll*)scroll border:(MiscBorderType)b
  667.         slotDraggedFrom:(int)fromPos to:(int)toPos;
  668. - tableScroll:(MiscTableScroll*)scroll border:(MiscBorderType)b
  669.         slotResized:(int)n;
  670.  
  671. - tableScroll:(MiscTableScroll*)scroll
  672.         changeFont:(Font*)oldFont to:(Font*)newFont;
  673. - tableScroll:(MiscTableScroll*)scroll
  674.         fontChangedFrom:(Font*)oldFont to:(Font*)newFont;
  675.  
  676. - tableScroll:(MiscTableScroll*)scroll
  677.         backgroundColorChangedTo:(NXColor)x;
  678. - tableScroll:(MiscTableScroll*)scroll
  679.         highlightBackgroundColorChangedTo:(NXColor)x;
  680. - tableScroll:(MiscTableScroll*)scroll
  681.         highlightTextColorChangedTo:(NXColor)x;
  682. - tableScroll:(MiscTableScroll*)scroll
  683.         textColorChangedTo:(NXColor)x;
  684.  
  685. - tableScroll:(MiscTableScroll*)scroll cellAt:(int)row :(int)col;
  686. - tableScroll:(MiscTableScroll*)scroll reviveCell:cell at:(int)row :(int)col;
  687. - tableScroll:(MiscTableScroll*)scroll retireCell:cell at:(int)row :(int)col;
  688.  
  689. - (int) tableScrollBuffCount:(MiscTableScroll*)scroll;
  690.  
  691. - (int) tableScroll:(MiscTableScroll*)scroll tagAt:(int)row :(int)col;
  692. - (int) tableScroll:(MiscTableScroll*)scroll intValueAt:(int)row :(int)col;
  693. - (float) tableScroll:(MiscTableScroll*)scroll floatValueAt:(int)row :(int)col;
  694. - (double) tableScroll:(MiscTableScroll*)scroll
  695.         doubleValueAt:(int)row :(int)col;
  696. - (char const*) tableScroll:(MiscTableScroll*)scroll
  697.         stringValueAt:(int)row :(int)col;
  698. - (char const*) tableScroll:(MiscTableScroll*)scroll titleAt:(int)row :(int)col;
  699. - (int) tableScroll:(MiscTableScroll*)scroll stateAt:(int)row :(int)col;
  700.  
  701. - (void) tableScrollRegisterServicesTypes: (MiscTableScroll*) scroll;
  702. - tableScroll:(MiscTableScroll*)scroll
  703.         validRequestorForSendType:(NXAtom)t_write
  704.         andReturnType:(NXAtom)t_read;
  705. - (BOOL) tableScroll:(MiscTableScroll*)scroll
  706.         canWritePboardType:(NXAtom)type;
  707. - (void) tableScroll:(MiscTableScroll*)scroll
  708.         writePboard:pboard type:(NXAtom)type toStream:(NXStream*)stream;
  709. - (BOOL) tableScroll:(MiscTableScroll*)scroll
  710.         writeSelectionToPasteboard:pboard types:(NXAtom*)types;
  711. - tableScroll:(MiscTableScroll*)scroll
  712.         readSelectionFromPasteboard:pboard;
  713. @end
  714.  
  715.  
  716. // DATA DELEGATE PROTOCOL -----------------------------------------------------
  717. @interface MiscTableScroll(DataDelegate)
  718. - tableScroll:(MiscTableScroll*)scroll cellAt:(int)row :(int)col;
  719. - tableScroll:(MiscTableScroll*)scroll
  720.         border:(MiscBorderType)b slotPrototype:(int)slot;
  721. - (char const*) tableScroll:(MiscTableScroll*)scroll
  722.         border:(MiscBorderType)b slotTitle:(int)slot;
  723. - tableScroll:(MiscTableScroll*)scroll reviveCell:cell at:(int)row :(int)col;
  724. - tableScroll:(MiscTableScroll*)scroll retireCell:cell at:(int)row :(int)col;
  725. - (void) tableScrollRegisterServicesTypes: (MiscTableScroll*) scroll;
  726. - tableScroll:(MiscTableScroll*)scroll
  727.         validRequestorForSendType:(NXAtom)t_write
  728.         andReturnType:(NXAtom)t_read;
  729. - (BOOL) tableScroll:(MiscTableScroll*)scroll
  730.         canWritePboardType:(NXAtom)type;
  731. - (void) tableScroll:(MiscTableScroll*)scroll
  732.         writePboard:pboard type:(NXAtom)type toStream:(NXStream*)stream;
  733. - (BOOL) tableScroll:(MiscTableScroll*)scroll
  734.         writeSelectionToPasteboard:pboard types:(NXAtom*)types;
  735. - tableScroll:(MiscTableScroll*)scroll
  736.         readSelectionFromPasteboard:pboard;
  737. @end
  738.  
  739.  
  740. // DATA CELL PROTOCOL ---------------------------------------------------------
  741. @interface MiscTableScroll(DataCell)
  742. - tableScroll:(MiscTableScroll*)scroll reviveAt:(int)row :(int)col;
  743. - tableScroll:(MiscTableScroll*)scroll retireAt:(int)row :(int)col;
  744. @end
  745.  
  746. #endif // __MiscTableScroll_h
  747.