mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-25 18:11:13 +00:00
Made modifications to NSOutlineView to make it usable. Added an image to mark unexpandable items. GJC
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@12959 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
cf88575ea4
commit
c5fec4c029
4 changed files with 75 additions and 42 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2002-03-03 Gregory Casamento <greg_casamento@yahoo.com>
|
||||
|
||||
* Images/common_outlineUnexpandable.tiff added.
|
||||
* Images/GNUmakefile modified to install images
|
||||
* Source/NSOutlineView.m modified to use new images.
|
||||
Also made several fixes which should now make NSOutlineView
|
||||
usable. The graphics used are consistent with the look of
|
||||
the outline view in the OPENSTEP Interface Builder classes
|
||||
tab.
|
||||
|
||||
2002-03-02 Gregory Casamento <greg_casamento@yahoo.com>
|
||||
|
||||
* Images/common_outlineExpanded.tiff added.
|
||||
|
|
|
@ -97,6 +97,7 @@ common_copyCursor.tiff \
|
|||
common_linkCursor.tiff \
|
||||
common_outlineCollapsed.tiff \
|
||||
common_outlineExpanded.tiff \
|
||||
common_outlineUnexpandable.tiff \
|
||||
GNUstep.tiff \
|
||||
GNUstepMenuImage.tiff \
|
||||
nsmapping.strings \
|
||||
|
|
BIN
Images/common_outlineUnexpandable.tiff
Normal file
BIN
Images/common_outlineUnexpandable.tiff
Normal file
Binary file not shown.
|
@ -49,6 +49,7 @@ static const int current_version = 1;
|
|||
// Cache the arrow images...
|
||||
static NSImage *collapsed = nil;
|
||||
static NSImage *expanded = nil;
|
||||
static NSImage *unexpandable = nil;
|
||||
|
||||
// Some necessary things which should not become ivars....
|
||||
static float widest = 0.0;
|
||||
|
@ -223,7 +224,7 @@ _selectionChange (NSOutlineView *ov, id delegate, int numberOfRows,
|
|||
nc = [NSNotificationCenter defaultCenter];
|
||||
collapsed = [NSImage imageNamed: @"common_outlineCollapsed.tiff"];
|
||||
expanded = [NSImage imageNamed: @"common_outlineExpanded.tiff"];
|
||||
// NSLog(@"%@ %@",rightArrow, downArrow);
|
||||
unexpandable = [NSImage imageNamed: @"common_outlineUnexpandable.tiff"];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -258,13 +259,43 @@ _selectionChange (NSOutlineView *ov, id delegate, int numberOfRows,
|
|||
return _autosaveExpandedItems;
|
||||
}
|
||||
|
||||
- (void)_closeItem: (id)item
|
||||
// Collect all of the items under a given element.
|
||||
static void _collectItems(NSOutlineView *outline,
|
||||
id startitem,
|
||||
NSMutableArray *allChildren)
|
||||
{
|
||||
int numchildren = [_dataSource outlineView: self
|
||||
numberOfChildrenOfItem: item];
|
||||
int num = [[outline dataSource] outlineView: outline
|
||||
numberOfChildrenOfItem: startitem];
|
||||
int i = 0;
|
||||
|
||||
NSLog(@"closing: %@", item);
|
||||
for(i = 1; i <= num; i++)
|
||||
{
|
||||
id anitem = [[outline dataSource] outlineView: outline
|
||||
child: i
|
||||
ofItem: startitem];
|
||||
|
||||
// Only collect the children if the item is expanded
|
||||
if([outline isItemExpanded: startitem])
|
||||
{
|
||||
[allChildren addObject: anitem];
|
||||
}
|
||||
|
||||
_collectItems(outline, anitem, allChildren);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)_closeItem: (id)item
|
||||
{
|
||||
int numchildren = 0;
|
||||
int i = 0;
|
||||
NSMutableArray *removeAll = [NSMutableArray array];
|
||||
|
||||
// [_dataSource outlineView: self
|
||||
// numberOfChildrenOfItem: item];
|
||||
|
||||
_collectItems(self, item, removeAll);
|
||||
numchildren = [removeAll count];
|
||||
|
||||
// close the item...
|
||||
if(item == nil)
|
||||
{
|
||||
|
@ -277,12 +308,10 @@ _selectionChange (NSOutlineView *ov, id delegate, int numberOfRows,
|
|||
|
||||
// For the close method it doesn't matter what order they are
|
||||
// removed in.
|
||||
for(i=1;i<=numchildren;i++)
|
||||
|
||||
for(i=0; i < numchildren; i++)
|
||||
{
|
||||
id child = [_dataSource outlineView: self
|
||||
child: i
|
||||
ofItem: item];
|
||||
NSLog(@"child = %@",child);
|
||||
id child = [removeAll objectAtIndex: i];
|
||||
[_items removeObject: child];
|
||||
}
|
||||
}
|
||||
|
@ -294,7 +323,6 @@ _selectionChange (NSOutlineView *ov, id delegate, int numberOfRows,
|
|||
int i = 0;
|
||||
int insertionPoint = 0;
|
||||
|
||||
NSLog(@"opening: %@", item);
|
||||
// open the item...
|
||||
if(item == nil)
|
||||
{
|
||||
|
@ -315,19 +343,30 @@ _selectionChange (NSOutlineView *ov, id delegate, int numberOfRows,
|
|||
insertionPoint++;
|
||||
}
|
||||
|
||||
// [self setNeedsDisplayInRect: [self rectOfRow: [self rowForItem: item]]];
|
||||
[self setNeedsDisplay: YES];
|
||||
NSLog(@"Insertion point = %d",insertionPoint);
|
||||
for(i=numchildren; i > 0; i--)
|
||||
{
|
||||
id child = [_dataSource outlineView: self
|
||||
child: i
|
||||
ofItem: item];
|
||||
NSLog(@"In here....");
|
||||
NSLog(@"child = %@",child);
|
||||
|
||||
// Add all of the children...
|
||||
if([self isItemExpanded: child])
|
||||
{
|
||||
NSMutableArray *insertAll = [NSMutableArray array];
|
||||
int i = 0, numitems = 0;
|
||||
|
||||
_collectItems(self, child, insertAll);
|
||||
numitems = [insertAll count];
|
||||
for(i = numitems-1; i >= 0; i--)
|
||||
{
|
||||
[_items insertObject: [insertAll objectAtIndex: i]
|
||||
atIndex: insertionPoint];
|
||||
}
|
||||
}
|
||||
|
||||
// Add the parent
|
||||
[_items insertObject: child atIndex: insertionPoint];
|
||||
// [self setNeedsDisplayInRect: [self rectOfRow: [self rowForItem: child]]];
|
||||
NSLog(@"_items = %@",_items);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -507,7 +546,6 @@ _selectionChange (NSOutlineView *ov, id delegate, int numberOfRows,
|
|||
|
||||
- (id)itemAtRow: (int)row
|
||||
{
|
||||
NSLog(@"itemAtRow %d",row);
|
||||
return [_items objectAtIndex: row];
|
||||
}
|
||||
|
||||
|
@ -540,6 +578,7 @@ static int _levelForItem(NSOutlineView *outline,
|
|||
child: i
|
||||
ofItem: startitem];
|
||||
finallevel = _levelForItem(outline, anitem, searchitem, level + 1, found);
|
||||
if(*found) break;
|
||||
}
|
||||
|
||||
return finallevel;
|
||||
|
@ -547,7 +586,6 @@ static int _levelForItem(NSOutlineView *outline,
|
|||
|
||||
- (int)levelForItem: (id)item
|
||||
{
|
||||
// NSLog(@"Getting level for %@", item);
|
||||
if(item != nil)
|
||||
{
|
||||
BOOL found = NO;
|
||||
|
@ -620,7 +658,6 @@ static int _levelForItem(NSOutlineView *outline,
|
|||
- (void) noteNumberOfRowsChanged
|
||||
{
|
||||
_numberOfRows = [_items count];
|
||||
NSLog(@"_numberOfRows = %d", _numberOfRows);
|
||||
|
||||
/* If we are selecting rows, we have to check that we have no
|
||||
selected rows below the new end of the table */
|
||||
|
@ -1290,8 +1327,6 @@ byExtendingSelection: (BOOL)flag
|
|||
_clickedRow = [self rowAtPoint: location];
|
||||
_clickedColumn = [self columnAtPoint: location];
|
||||
|
||||
NSLog(@"location (%f,%f)",location.x,location.y);
|
||||
|
||||
// Selection
|
||||
if (clickCount == 1)
|
||||
{
|
||||
|
@ -1328,10 +1363,6 @@ byExtendingSelection: (BOOL)flag
|
|||
{
|
||||
BOOL newSelection;
|
||||
|
||||
NSLog(@"row which was clicked %d, item %@",
|
||||
_clickedRow,
|
||||
[self itemAtRow: _clickedRow]);
|
||||
|
||||
if(![self isItemExpanded: [self itemAtRow: _clickedRow]])
|
||||
{
|
||||
[self expandItem: [self itemAtRow: _clickedRow]];
|
||||
|
@ -1678,7 +1709,6 @@ byExtendingSelection: (BOOL)flag
|
|||
int i;
|
||||
float x_pos;
|
||||
|
||||
NSLog(@"In the drawing code...");
|
||||
if (_dataSource == nil)
|
||||
{
|
||||
return;
|
||||
|
@ -1734,11 +1764,6 @@ byExtendingSelection: (BOOL)flag
|
|||
byItem: item]];
|
||||
drawingRect = [self frameOfCellAtColumn: i
|
||||
row: rowIndex];
|
||||
NSLog(@"Drawing rect (%f, %f, %f, %f)",
|
||||
drawingRect.origin.x,
|
||||
drawingRect.origin.y,
|
||||
drawingRect.size.width,
|
||||
drawingRect.size.height);
|
||||
|
||||
if(tb == _outlineTableColumn)
|
||||
{
|
||||
|
@ -1757,8 +1782,12 @@ byExtendingSelection: (BOOL)flag
|
|||
image = collapsed;
|
||||
}
|
||||
|
||||
if(![self isExpandable: item])
|
||||
{
|
||||
image = unexpandable;
|
||||
}
|
||||
|
||||
level = [self levelForItem: item];
|
||||
// NSLog(@"outlineColumn: %@ level = %d", item, level);
|
||||
indentationFactor = _indentationPerLevel * level;
|
||||
imageCell = [[NSCell alloc] initImageCell: image];
|
||||
|
||||
|
@ -1776,11 +1805,7 @@ byExtendingSelection: (BOOL)flag
|
|||
imageRect.size.width = [image size].width;
|
||||
imageRect.size.height = [image size].height;
|
||||
|
||||
// Draw the arrow if the item is expandable..
|
||||
if([self isExpandable: item])
|
||||
{
|
||||
[imageCell drawWithFrame: imageRect inView: self];
|
||||
}
|
||||
[imageCell drawWithFrame: imageRect inView: self];
|
||||
|
||||
drawingRect.origin.x += indentationFactor + [image size].width + 1;
|
||||
drawingRect.size.width -= indentationFactor + [image size].width + 1;
|
||||
|
@ -1788,11 +1813,10 @@ byExtendingSelection: (BOOL)flag
|
|||
if (widest < (drawingRect.origin.x + originalWidth))
|
||||
{
|
||||
widest = (drawingRect.origin.x + originalWidth);
|
||||
NSLog(@"widest = %lf", widest);
|
||||
}
|
||||
else
|
||||
{
|
||||
NSLog(@"Still widest = %lf", widest);
|
||||
// NSLog(@"Still widest = %lf", widest);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1810,10 +1834,8 @@ byExtendingSelection: (BOOL)flag
|
|||
{
|
||||
NSRect drawingRect;
|
||||
|
||||
NSLog(@"Row = %d",index);
|
||||
drawingRect = [self frameOfCellAtColumn: 1
|
||||
row: index];
|
||||
NSLog(@"Width = %d",drawingRect.size.width);
|
||||
}
|
||||
|
||||
[super drawRect: aRect];
|
||||
|
|
Loading…
Reference in a new issue