No changes, just reformat comments in osx/dataview.mm.

Wrap long lines to be able to read the comments and remove the perfectly
useless "// variable definition" and "// constant definition for
abbreviational purposes" noise.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62603 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2009-11-10 18:17:31 +00:00
parent 0e17930f43
commit 17f5d137d8

View File

@ -276,7 +276,6 @@ NSInteger CompareItems(id item1, id item2, void* context)
NSInteger result = NSOrderedSame;
for ( NSUInteger i = 0; i < count && result == NSOrderedSame; ++i )
{
// constant definition for abbreviational purposes:
wxSortDescriptorObject* const
sortDescriptor = (wxSortDescriptorObject*)
[sortDescriptors objectAtIndex:i];
@ -681,9 +680,10 @@ outlineView:(NSOutlineView*)outlineView
}
-(void) outlineView:(NSOutlineView*)outlineView sortDescriptorsDidChange:(NSArray*)oldDescriptors
// Warning: the new sort descriptors are guaranteed to be only of type NSSortDescriptor! Therefore, the
// sort descriptors for the data source have to be converted.
{
// Warning: the new sort descriptors are guaranteed to be only of type
// NSSortDescriptor! Therefore, the sort descriptors for the data source
// have to be converted.
NSArray* newDescriptors;
NSMutableArray* wxSortDescriptors;
@ -699,7 +699,6 @@ outlineView:(NSOutlineView*)outlineView
wxSortDescriptors = [NSMutableArray arrayWithCapacity:noOfDescriptors];
for (NSUInteger i=0; i<noOfDescriptors; ++i)
{
// constant definition for abbreviational purposes:
NSSortDescriptor* const newDescriptor = [newDescriptors objectAtIndex:i];
[wxSortDescriptors addObject:[[[wxSortDescriptorObject alloc] initWithModelPtr:model
@ -708,14 +707,13 @@ outlineView:(NSOutlineView*)outlineView
}
[[outlineView dataSource] setSortDescriptors:wxSortDescriptors];
// send first the event to wxWidgets that the sorting has changed so that the program can do special actions before
// the sorting actually starts:
// send first the event to wxWidgets that the sorting has changed so that
// the program can do special actions before the sorting actually starts:
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_COLUMN_SORTED,dvc->GetId()); // variable defintion
event.SetEventObject(dvc);
if (noOfDescriptors > 0)
{
// constant definition for abbreviational purposes:
wxDataViewColumn* const col = [[wxSortDescriptors objectAtIndex:0] columnPtr];
event.SetColumn(dvc->GetColumnPosition(col));
@ -796,7 +794,9 @@ outlineView:(NSOutlineView*)outlineView
}
else
{
CFDataRef osxData; // needed to convert internally used UTF-16 representation to a UTF-8 representation
// needed to convert internally used UTF-16 representation to a UTF-8
// representation
CFDataRef osxData;
wxDataObjectComposite* dataObjects (new wxDataObjectComposite());
wxTextDataObject* textDataObject(new wxTextDataObject());
@ -826,10 +826,11 @@ outlineView:(NSOutlineView*)outlineView
}
-(BOOL) outlineView:(NSOutlineView*)outlineView writeItems:(NSArray*)writeItems toPasteboard:(NSPasteboard*)pasteboard
// the pasteboard will be filled up with an array containing the data as returned by the events (including the data type)
// and a concatenation of text (string) data; the text data will only be put onto the pasteboard if for all items a
// string representation exists
{
// the pasteboard will be filled up with an array containing the data as
// returned by the events (including the data type) and a concatenation of
// text (string) data; the text data will only be put onto the pasteboard
// if for all items a string representation exists
wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
wxDataViewItemArray dataViewItems;
@ -844,7 +845,8 @@ outlineView:(NSOutlineView*)outlineView
NSMutableArray* dataArray = [[NSMutableArray arrayWithCapacity:[writeItems count]] retain]; // data of all items
wxString dataString; // contains the string data of all items
// send a begin drag event for all selected items and proceed with dragging unless the event is vetoed:
// send a begin drag event for all selected items and proceed with
// dragging unless the event is vetoed:
wxDataViewEvent
event(wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAG,dvc->GetId());
@ -864,9 +866,7 @@ outlineView:(NSOutlineView*)outlineView
// check if event has not been vetoed:
if (dvc->HandleWindowEvent(event) && event.IsAllowed() && (event.GetDataObject()->GetFormatCount() > 0))
{
// constant definition for abbreviational purposes:
size_t const noOfFormats = event.GetDataObject()->GetFormatCount();
// variable definition and initialization:
wxDataFormat* dataFormats(new wxDataFormat[noOfFormats]);
event.GetDataObject()->GetAllFormats(dataFormats,wxDataObject::Get);
@ -883,7 +883,10 @@ outlineView:(NSOutlineView*)outlineView
switch (idDataFormat)
{
case wxDF_TEXT:
if (!itemStringAvailable) // otherwise wxDF_UNICODETEXT already filled up the string; and the UNICODE representation has priority
// otherwise wxDF_UNICODETEXT already filled up
// the string; and the UNICODE representation has
// priority
if (!itemStringAvailable)
{
event.GetDataObject()->GetDataHere(wxDF_TEXT,dataBuffer.GetAppendBuf(dataSize));
dataBuffer.UngetAppendBuf(dataSize);
@ -1290,7 +1293,9 @@ outlineView:(NSOutlineView*)outlineView
{
CGFloat const cellSpace = cellFrame.size.width-[self cellSize].width;
if (cellSpace <= 0) // if the cell's frame is smaller than its contents (at least in x-direction) make sure that the image is visible:
// if the cell's frame is smaller than its contents (at least
// in x-direction) make sure that the image is visible:
if (cellSpace <= 0)
NSDivideRect(cellFrame,imageFrame,textFrame,xImageShift+imageSize.width+spaceImageText,NSMinXEdge);
else // otherwise center the image and text in the cell's frame
NSDivideRect(cellFrame,imageFrame,textFrame,xImageShift+imageSize.width+spaceImageText+0.5*cellSpace,NSMinXEdge);
@ -1305,7 +1310,9 @@ outlineView:(NSOutlineView*)outlineView
{
CGFloat const cellSpace = cellFrame.size.width-[self cellSize].width;
if (cellSpace <= 0) // if the cell's frame is smaller than its contents (at least in x-direction) make sure that the image is visible:
// if the cell's frame is smaller than its contents (at least
// in x-direction) make sure that the image is visible:
if (cellSpace <= 0)
NSDivideRect(cellFrame,imageFrame,textFrame,xImageShift+imageSize.width+spaceImageText,NSMinXEdge);
else // otherwise right align the image and text in the cell's frame
NSDivideRect(cellFrame,imageFrame,textFrame,xImageShift+imageSize.width+spaceImageText+cellSpace,NSMinXEdge);
@ -1325,7 +1332,8 @@ outlineView:(NSOutlineView*)outlineView
[self determineCellParts:cellFrame imagePart:&imageFrame textPart:&textFrame];
// draw the image part by ourselves;
// check if the cell has to draw its own background (checking is done by the parameter of the textfield's cell):
// check if the cell has to draw its own background (checking is done by
// the parameter of the textfield's cell):
if ([self drawsBackground])
{
[[self backgroundColor] set];
@ -1333,8 +1341,10 @@ outlineView:(NSOutlineView*)outlineView
}
if (image != nil)
{
// the image is slightly shifted (xImageShift) and has a fixed size but the image's frame might be larger and starts
// currently on the left side of the cell's frame; therefore, the origin and the image's frame size have to be adjusted:
// the image is slightly shifted (xImageShift) and has a fixed size
// but the image's frame might be larger and starts currently on the
// left side of the cell's frame; therefore, the origin and the
// image's frame size have to be adjusted:
if (imageFrame.size.width >= xImageShift+imageSize.width+spaceImageText)
{
imageFrame.origin.x += imageFrame.size.width-imageSize.width-spaceImageText;
@ -1350,8 +1360,10 @@ outlineView:(NSOutlineView*)outlineView
imageFrame.size.height = imageSize.height;
imageFrame.origin.y += ceil(0.5*(cellFrame.size.height-imageFrame.size.height));
// according to the documentation the coordinate system should be flipped for NSTableViews (y-coordinate goes from top to bottom);
// to draw an image correctly the coordinate system has to be transformed to a bottom-top coordinate system, otherwise the image's
// according to the documentation the coordinate system should be
// flipped for NSTableViews (y-coordinate goes from top to bottom); to
// draw an image correctly the coordinate system has to be transformed
// to a bottom-top coordinate system, otherwise the image's
// content is flipped:
NSAffineTransform* coordinateTransform([NSAffineTransform transform]);
@ -1363,14 +1375,21 @@ outlineView:(NSOutlineView*)outlineView
}
[image drawInRect:imageFrame fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; // suggested method to draw the image
// instead of compositeToPoint:operation:
// take back previous transformation (if the view is not flipped the coordinate transformation matrix contains the identity matrix
// and the next two operations do not change the content's transformation matrix):
// take back previous transformation (if the view is not flipped the
// coordinate transformation matrix contains the identity matrix and
// the next two operations do not change the content's transformation
// matrix):
[coordinateTransform invert];
[coordinateTransform concat];
}
// let the textfield cell draw the text part:
if (textFrame.size.width > [self cellTextSize].width) // for unknown reasons the alignment of the text cell is ignored; therefore change the size so that
textFrame.size.width = [self cellTextSize].width; // alignment does not influence the visualization anymore
if (textFrame.size.width > [self cellTextSize].width)
{
// for unknown reasons the alignment of the text cell is ignored;
// therefore change the size so that alignment does not influence the
// visualization anymore
textFrame.size.width = [self cellTextSize].width;
}
[super drawWithFrame:textFrame inView:controlView];
}
@ -1409,13 +1428,20 @@ outlineView:(NSOutlineView*)outlineView
if (imageFrame.size.height > imageSize.height)
imageFrame.size.height = imageSize.height;
imageFrame.origin.y += ceil(0.5*(cellFrame.size.height-imageFrame.size.height));
// If the point is in the image rect, then it is a content hit (see documentation for hitTestForEvent:inRect:ofView):
// If the point is in the image rect, then it is a content hit (see
// documentation for hitTestForEvent:inRect:ofView):
if (NSMouseInRect(point, imageFrame, [controlView isFlipped]))
return NSCellHitContentArea;
}
// if the image was not hit let's try the text part:
if (textFrame.size.width > [self cellTextSize].width) // for unknown reasons the alignment of the text cell is ignored; therefore change the size so that
textFrame.size.width = [self cellTextSize].width; // alignment does not influence the visualization anymore
if (textFrame.size.width > [self cellTextSize].width)
{
// for unknown reasons the alignment of the text cell is ignored;
// therefore change the size so that alignment does not influence the
// visualization anymore
textFrame.size.width = [self cellTextSize].width;
}
return [super hitTestForEvent:event inRect:textFrame ofView:controlView];
}
#endif
@ -1507,12 +1533,13 @@ outlineView:(NSOutlineView*)outlineView
// actions
//
-(void) actionDoubleClick:(id)sender
// actually the documentation (NSTableView 2007-10-31) for doubleAction: and setDoubleAction: seems to be wrong as this action message is always sent
// whether the cell is editable or not
{
// actually the documentation (NSTableView 2007-10-31) for doubleAction:
// and setDoubleAction: seems to be wrong as this action message is always
// sent whether the cell is editable or not
wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED,dvc->GetId()); // variable definition
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED,dvc->GetId());
event.SetEventObject(dvc);
@ -1525,9 +1552,10 @@ outlineView:(NSOutlineView*)outlineView
// contextual menus
//
-(NSMenu*) menuForEvent:(NSEvent*)theEvent
// this method does not do any special menu event handling but only sends an event message; therefore, the user
// has full control if a context menu should be shown or not
{
// this method does not do any special menu event handling but only sends
// an event message; therefore, the user has full control if a context
// menu should be shown or not
wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU,dvc->GetId());
@ -1538,8 +1566,9 @@ outlineView:(NSOutlineView*)outlineView
event.SetEventObject(dvc);
event.SetModel(dvc->GetModel());
// get the item information;
// theoretically more than one ID can be returned but the event can only handle one item, therefore only the first
// item of the array is returned:
// theoretically more than one ID can be returned but the event can only
// handle one item, therefore only the first item of the array is
// returned:
if (dvc->GetSelections(selectedItems) > 0)
event.SetItem(selectedItems[0]);
dvc->GetEventHandler()->ProcessEvent(event);
@ -1567,13 +1596,15 @@ outlineView:(NSOutlineView*)outlineView
dvc->HandleWindowEvent(event);
// now, check if the click may have had an influence on sorting, too;
// the sorting setup has to be done only if the clicked table column is sortable and has not been used for
// sorting before the click; if the column is already responsible for sorting the native control changes
// the sorting direction automatically and informs the data source via outlineView:sortDescriptorsDidChange:
// the sorting setup has to be done only if the clicked table column is
// sortable and has not been used for sorting before the click; if the
// column is already responsible for sorting the native control changes
// the sorting direction automatically and informs the data source via
// outlineView:sortDescriptorsDidChange:
if (col->IsSortable() && ([tableColumn sortDescriptorPrototype] == nil))
{
// remove the sort order from the previously sorted column table (it can also be that
// no sorted column table exists):
// remove the sort order from the previously sorted column table (it
// can also be that no sorted column table exists):
UInt32 const noOfColumns = [outlineView numberOfColumns];
for (UInt32 i=0; i<noOfColumns; ++i)
@ -1595,7 +1626,7 @@ outlineView:(NSOutlineView*)outlineView
{
wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING,dvc->GetId()); // variable definition
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING,dvc->GetId());
event.SetEventObject(dvc);
@ -1611,7 +1642,7 @@ outlineView:(NSOutlineView*)outlineView
{
wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING,dvc->GetId()); // variable definition
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING,dvc->GetId());
event.SetEventObject(dvc);
@ -1717,8 +1748,7 @@ outlineView:(NSOutlineView*)outlineView
{
wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED,dvc->GetId()); // variable definition
wxDataViewEvent event(wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED,dvc->GetId());
event.SetEventObject(dvc);
event.SetModel (dvc->GetModel());
@ -1726,11 +1756,13 @@ outlineView:(NSOutlineView*)outlineView
}
-(void) textDidBeginEditing:(NSNotification*)notification
// this notification is only sent if the user started modifying the cell (not when the user clicked into the cell
// and the cell's editor is called!)
{
// call method of superclass (otherwise editing does not work correctly - the outline data source class is not
// informed about a change of data):
// this notification is only sent if the user started modifying the cell
// (not when the user clicked into the cell and the cell's editor is
// called!)
// call method of superclass (otherwise editing does not work correctly -
// the outline data source class is not informed about a change of data):
[super textDidBeginEditing:notification];
// remember the column being edited, it will be used in textDidEndEditing:
@ -1749,7 +1781,7 @@ outlineView:(NSOutlineView*)outlineView
// now, send the event:
wxDataViewEvent
event(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED,dvc->GetId()); // variable definition
event(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED,dvc->GetId());
event.SetEventObject(dvc);
event.SetItem(
@ -1761,15 +1793,18 @@ outlineView:(NSOutlineView*)outlineView
-(void) textDidEndEditing:(NSNotification*)notification
{
// call method of superclass (otherwise editing does not work correctly - the outline data source class is not
// informed about a change of data):
// call method of superclass (otherwise editing does not work correctly -
// the outline data source class is not informed about a change of data):
[super textDidEndEditing:notification];
// under OSX an event indicating the end of an editing session can be sent even if no event indicating a start of an
// editing session has been sent (see Documentation for NSControl controlTextDidEndEditing:); this is not expected by a user
// of the wxWidgets library and therefore an wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE event is only sent if a corresponding
// wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED has been sent before; to check if a wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED
// has been sent the last edited column/row are valid:
// under OSX an event indicating the end of an editing session can be sent
// even if no event indicating a start of an editing session has been sent
// (see Documentation for NSControl controlTextDidEndEditing:); this is
// not expected by a user of the wxWidgets library and therefore an
// wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE event is only sent if a
// corresponding wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED has been sent
// before; to check if a wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_STARTED has
// been sent the last edited column/row are valid:
if ( currentlyEditedColumn != -1 && currentlyEditedRow != -1 )
{
wxDataViewColumn* const col =
@ -1780,7 +1815,7 @@ outlineView:(NSOutlineView*)outlineView
// send event to wxWidgets:
wxDataViewEvent
event(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE,dvc->GetId()); // variable definition
event(wxEVT_COMMAND_DATAVIEW_ITEM_EDITING_DONE,dvc->GetId());
event.SetEventObject(dvc);
event.SetItem(
@ -2527,11 +2562,13 @@ wxDataViewBitmapRenderer::wxDataViewBitmapRenderer(const wxString& varianttype,
[cell release];
}
// This method returns 'true' if
// - the passed bitmap is valid and it could be assigned to the native data
// browser;
// - the passed bitmap is invalid (or is not initialized); this case
// simulates a non-existing bitmap.
// In all other cases the method returns 'false'.
bool wxDataViewBitmapRenderer::MacRender()
// This method returns 'true' if
// - the passed bitmap is valid and it could be assigned to the native data browser;
// - the passed bitmap is invalid (or is not initialized); this case simulates a non-existing bitmap.
// In all other cases the method returns 'false'.
{
wxCHECK_MSG(GetValue().GetType() == GetVariantType(),false,wxString("Bitmap renderer cannot render value; value type: ") << GetValue().GetType());
@ -2613,33 +2650,47 @@ bool wxDataViewDateRenderer::MacRender()
if (GetValue().GetDateTime().IsValid())
{
// -- find best fitting style to show the date --
// as the style should be identical for all cells a reference date instead of the actual cell's date
// value is used for all cells; this reference date is stored in the renderer's native data section
// for speed purposes; otherwise, the reference date's string has to be recalculated for each item that
// may become timewise long if a lot of rows using dates exist;
// the algorithm has the preference to display as much information as possible in the first instance;
// but as this is often impossible due to space restrictions the style is shortened per loop; finally,
// if the shortest time and date format does not fit into the cell the time part is dropped;
// remark: the time part itself is not modified per iteration loop and only uses the short style,
// means that only the hours and minutes are being shown
[GetNativeData()->GetItemCell() setObjectValue:GetNativeData()->GetObject()]; // GetObject() returns a date for testing the size of a date object
// as the style should be identical for all cells a reference date
// instead of the actual cell's date value is used for all cells;
// this reference date is stored in the renderer's native data
// section for speed purposes; otherwise, the reference date's
// string has to be recalculated for each item that may become
// timewise long if a lot of rows using dates exist; the algorithm
// has the preference to display as much information as possible
// in the first instance; but as this is often impossible due to
// space restrictions the style is shortened per loop; finally, if
// the shortest time and date format does not fit into the cell
// the time part is dropped; remark: the time part itself is not
// modified per iteration loop and only uses the short style,
// means that only the hours and minutes are being shown
// GetObject() returns a date for testing the size of a date object
[GetNativeData()->GetItemCell() setObjectValue:GetNativeData()->GetObject()];
[[GetNativeData()->GetItemCell() formatter] setTimeStyle:NSDateFormatterShortStyle];
for (int dateFormatterStyle=4; dateFormatterStyle>0; --dateFormatterStyle)
{
[[GetNativeData()->GetItemCell() formatter] setDateStyle:(NSDateFormatterStyle)dateFormatterStyle];
if (dateFormatterStyle == 1)
{
// if the shortest style for displaying the date and time is too long to be fully visible remove the time part of the date:
// if the shortest style for displaying the date and time
// is too long to be fully visible remove the time part of
// the date:
if ([GetNativeData()->GetItemCell() cellSize].width > [GetNativeData()->GetColumnPtr() width])
[[GetNativeData()->GetItemCell() formatter] setTimeStyle:NSDateFormatterNoStyle];
break; // basically not necessary as the loop would end anyway but let's save the last comparison
{
// basically not necessary as the loop would end anyway
// but let's save the last comparison
break;
}
}
else if ([GetNativeData()->GetItemCell() cellSize].width <= [GetNativeData()->GetColumnPtr() width])
break;
}
// set data (the style is set by the previous loop);
// on OSX the date has to be specified with respect to UTC; in wxWidgets the date is always entered in the local timezone; so, we have to do a conversion
// from the local to UTC timezone when adding the seconds to 1970-01-01 UTC:
// set data (the style is set by the previous loop); on OSX the
// date has to be specified with respect to UTC; in wxWidgets the
// date is always entered in the local timezone; so, we have to do
// a conversion from the local to UTC timezone when adding the
// seconds to 1970-01-01 UTC:
[GetNativeData()->GetItemCell() setObjectValue:[NSDate dateWithTimeIntervalSince1970:GetValue().GetDateTime().ToUTC().Subtract(wxDateTime(1,wxDateTime::Jan,1970)).GetSeconds().ToDouble()]];
}
return true;
@ -2861,7 +2912,8 @@ void wxDataViewColumn::SetAlignment(wxAlignment align)
void wxDataViewColumn::SetBitmap(const wxBitmap& bitmap)
{
// bitmaps and titles cannot exist at the same time - if the bitmap is set the title is removed:
// bitmaps and titles cannot exist at the same time - if the bitmap is set
// the title is removed:
m_title = wxEmptyString;
wxDataViewColumnBase::SetBitmap(bitmap);
[[m_NativeDataPtr->GetNativeColumnPtr() headerCell] setImage:[[bitmap.GetNSImage() retain] autorelease]];
@ -2921,7 +2973,8 @@ void wxDataViewColumn::SetSortOrder(bool ascending)
void wxDataViewColumn::SetTitle(const wxString& title)
{
// bitmaps and titles cannot exist at the same time - if the title is set the bitmap is removed:
// bitmaps and titles cannot exist at the same time - if the title is set
// the bitmap is removed:
wxDataViewColumnBase::SetBitmap(wxBitmap());
m_title = title;
[[m_NativeDataPtr->GetNativeColumnPtr() headerCell] setStringValue:[[wxCFStringRef(title).AsNSString() retain] autorelease]];