📄 utils.cpp
字号:
}
OSStatus wxMacDataBrowserControl::RemoveItems(
DataBrowserItemID container,
UInt32 numItems,
const DataBrowserItemID *items,
DataBrowserPropertyID preSortProperty )
{
return RemoveDataBrowserItems( m_controlRef, container, numItems, items, preSortProperty );
}
OSStatus wxMacDataBrowserControl::RevealItem(
DataBrowserItemID item,
DataBrowserPropertyID propertyID,
DataBrowserRevealOptions options ) const
{
return RevealDataBrowserItem( m_controlRef, item, propertyID, options );
}
OSStatus wxMacDataBrowserControl::SetSelectedItems(
UInt32 numItems,
const DataBrowserItemID *items,
DataBrowserSetOption operation )
{
return SetDataBrowserSelectedItems( m_controlRef, numItems, items, operation );
}
OSStatus wxMacDataBrowserControl::GetSelectionAnchor( DataBrowserItemID *first, DataBrowserItemID *last ) const
{
return GetDataBrowserSelectionAnchor( m_controlRef, first, last );
}
OSStatus wxMacDataBrowserControl::GetItemID( DataBrowserTableViewRowIndex row, DataBrowserItemID * item ) const
{
return GetDataBrowserTableViewItemID( m_controlRef, row, item );
}
OSStatus wxMacDataBrowserControl::GetItemRow( DataBrowserItemID item, DataBrowserTableViewRowIndex * row ) const
{
return GetDataBrowserTableViewItemRow( m_controlRef, item, row );
}
OSStatus wxMacDataBrowserControl::SetDefaultRowHeight( UInt16 height )
{
return SetDataBrowserTableViewRowHeight( m_controlRef , height );
}
OSStatus wxMacDataBrowserControl::GetDefaultRowHeight( UInt16 * height ) const
{
return GetDataBrowserTableViewRowHeight( m_controlRef, height );
}
OSStatus wxMacDataBrowserControl::SetRowHeight( DataBrowserItemID item , UInt16 height)
{
return SetDataBrowserTableViewItemRowHeight( m_controlRef, item , height );
}
OSStatus wxMacDataBrowserControl::GetRowHeight( DataBrowserItemID item , UInt16 *height) const
{
return GetDataBrowserTableViewItemRowHeight( m_controlRef, item , height);
}
OSStatus wxMacDataBrowserControl::GetColumnWidth( DataBrowserPropertyID column , UInt16 *width ) const
{
return GetDataBrowserTableViewNamedColumnWidth( m_controlRef , column , width );
}
OSStatus wxMacDataBrowserControl::SetColumnWidth( DataBrowserPropertyID column , UInt16 width )
{
return SetDataBrowserTableViewNamedColumnWidth( m_controlRef , column , width );
}
OSStatus wxMacDataBrowserControl::GetDefaultColumnWidth( UInt16 *width ) const
{
return GetDataBrowserTableViewColumnWidth( m_controlRef , width );
}
OSStatus wxMacDataBrowserControl::SetDefaultColumnWidth( UInt16 width )
{
return SetDataBrowserTableViewColumnWidth( m_controlRef , width );
}
OSStatus wxMacDataBrowserControl::GetColumnCount(UInt32* numColumns) const
{
return GetDataBrowserTableViewColumnCount( m_controlRef, numColumns);
}
OSStatus wxMacDataBrowserControl::GetColumnPosition( DataBrowserPropertyID column,
UInt32 *position) const
{
return GetDataBrowserTableViewColumnPosition( m_controlRef , column , position);
}
OSStatus wxMacDataBrowserControl::SetColumnPosition( DataBrowserPropertyID column, UInt32 position)
{
return SetDataBrowserTableViewColumnPosition( m_controlRef , column , position);
}
OSStatus wxMacDataBrowserControl::GetScrollPosition( UInt32 *top , UInt32 *left ) const
{
return GetDataBrowserScrollPosition( m_controlRef , top , left );
}
OSStatus wxMacDataBrowserControl::SetScrollPosition( UInt32 top , UInt32 left )
{
return SetDataBrowserScrollPosition( m_controlRef , top , left );
}
OSStatus wxMacDataBrowserControl::GetSortProperty( DataBrowserPropertyID *column ) const
{
return GetDataBrowserSortProperty( m_controlRef , column );
}
OSStatus wxMacDataBrowserControl::SetSortProperty( DataBrowserPropertyID column )
{
return SetDataBrowserSortProperty( m_controlRef , column );
}
OSStatus wxMacDataBrowserControl::GetSortOrder( DataBrowserSortOrder *order ) const
{
return GetDataBrowserSortOrder( m_controlRef , order );
}
OSStatus wxMacDataBrowserControl::SetSortOrder( DataBrowserSortOrder order )
{
return SetDataBrowserSortOrder( m_controlRef , order );
}
OSStatus wxMacDataBrowserControl::GetPropertyFlags( DataBrowserPropertyID property,
DataBrowserPropertyFlags *flags ) const
{
return GetDataBrowserPropertyFlags( m_controlRef , property , flags );
}
OSStatus wxMacDataBrowserControl::SetPropertyFlags( DataBrowserPropertyID property,
DataBrowserPropertyFlags flags )
{
return SetDataBrowserPropertyFlags( m_controlRef , property , flags );
}
OSStatus wxMacDataBrowserControl::GetHeaderDesc( DataBrowserPropertyID property,
DataBrowserListViewHeaderDesc *desc ) const
{
return GetDataBrowserListViewHeaderDesc( m_controlRef , property , desc );
}
OSStatus wxMacDataBrowserControl::SetHeaderDesc( DataBrowserPropertyID property,
DataBrowserListViewHeaderDesc *desc )
{
return SetDataBrowserListViewHeaderDesc( m_controlRef , property , desc );
}
OSStatus wxMacDataBrowserControl::SetDisclosureColumn( DataBrowserPropertyID property ,
Boolean expandableRows )
{
return SetDataBrowserListViewDisclosureColumn( m_controlRef, property, expandableRows);
}
// ============================================================================
// Higher-level Databrowser
// ============================================================================
//
// basing on data item objects
//
wxMacDataItem::wxMacDataItem()
{
}
wxMacDataItem::~wxMacDataItem()
{
}
bool wxMacDataItem::IsLessThan(wxMacDataItemBrowserControl *owner ,
const wxMacDataItem*,
DataBrowserPropertyID property) const
{
return false;
}
OSStatus wxMacDataItem::GetSetData(wxMacDataItemBrowserControl *owner ,
DataBrowserPropertyID property,
DataBrowserItemDataRef itemData,
bool changeValue )
{
return errDataBrowserPropertyNotSupported;
}
void wxMacDataItem::Notification(wxMacDataItemBrowserControl *owner ,
DataBrowserItemNotification message,
DataBrowserItemDataRef itemData ) const
{
}
wxMacDataItemBrowserControl::wxMacDataItemBrowserControl( wxWindow* peer , const wxPoint& pos, const wxSize& size, long style) :
wxMacDataBrowserControl( peer, pos, size, style )
{
m_suppressSelection = false;
}
wxMacDataItemBrowserSelectionSuppressor::wxMacDataItemBrowserSelectionSuppressor(wxMacDataItemBrowserControl *browser)
{
m_former = browser->SuppressSelection(true);
m_browser = browser;
}
wxMacDataItemBrowserSelectionSuppressor::~wxMacDataItemBrowserSelectionSuppressor()
{
m_browser->SuppressSelection(m_former);
}
bool wxMacDataItemBrowserControl::SuppressSelection( bool suppress )
{
bool former = m_suppressSelection;
m_suppressSelection = suppress;
return former;
}
Boolean wxMacDataItemBrowserControl::CompareItems(DataBrowserItemID itemOneID,
DataBrowserItemID itemTwoID,
DataBrowserPropertyID sortProperty)
{
wxMacDataItem* itemOne = (wxMacDataItem*) itemOneID;
wxMacDataItem* itemTwo = (wxMacDataItem*) itemTwoID;
return CompareItems( itemOne , itemTwo , sortProperty );
}
Boolean wxMacDataItemBrowserControl::CompareItems(const wxMacDataItem* itemOne,
const wxMacDataItem* itemTwo,
DataBrowserPropertyID sortProperty)
{
Boolean retval = false;
if ( itemOne != NULL )
retval = itemOne->IsLessThan( this , itemTwo , sortProperty);
return retval;
}
OSStatus wxMacDataItemBrowserControl::GetSetItemData(
DataBrowserItemID itemID,
DataBrowserPropertyID property,
DataBrowserItemDataRef itemData,
Boolean changeValue )
{
wxMacDataItem* item = (wxMacDataItem*) itemID;
return GetSetItemData(item, property, itemData , changeValue );
}
OSStatus wxMacDataItemBrowserControl::GetSetItemData(
wxMacDataItem* item,
DataBrowserPropertyID property,
DataBrowserItemDataRef itemData,
Boolean changeValue )
{
OSStatus err = errDataBrowserPropertyNotSupported;
switch( property )
{
case kDataBrowserContainerIsClosableProperty :
case kDataBrowserContainerIsSortableProperty :
case kDataBrowserContainerIsOpenableProperty :
// right now default behaviour on these
break;
default :
if ( item != NULL )
err = item->GetSetData( this, property , itemData , changeValue );
break;
}
return err;
}
void wxMacDataItemBrowserControl::ItemNotification(
DataBrowserItemID itemID,
DataBrowserItemNotification message,
DataBrowserItemDataRef itemData)
{
wxMacDataItem* item = (wxMacDataItem*) itemID;
ItemNotification( item , message, itemData);
}
void wxMacDataItemBrowserControl::ItemNotification(
const wxMacDataItem* item,
DataBrowserItemNotification message,
DataBrowserItemDataRef itemData)
{
if (item != NULL)
item->Notification( this, message, itemData);
}
unsigned int wxMacDataItemBrowserControl::GetItemCount(const wxMacDataItem* container,
bool recurse , DataBrowserItemState state) const
{
UInt32 numItems = 0;
verify_noerr( wxMacDataBrowserControl::GetItemCount( (DataBrowserItemID)container,
recurse, state, &numItems ) );
return numItems;
}
void wxMacDataItemBrowserControl::GetItems(const wxMacDataItem* container,
bool recurse , DataBrowserItemState state, wxArrayMacDataItemPtr &items) const
{
Handle handle = NewHandle(0);
verify_noerr( wxMacDataBrowserControl::GetItems( (DataBrowserItemID)container ,
recurse , state, handle) );
int itemCount = GetHandleSize(handle)/sizeof(DataBrowserItemID);
HLock( handle );
wxMacDataItemPtr* itemsArray = (wxMacDataItemPtr*) *handle;
for ( int i = 0; i < itemCount; ++i)
{
items.Add(itemsArray[i]);
}
HUnlock( handle );
DisposeHandle( handle );
}
unsigned int wxMacDataItemBrowserControl::GetLineFromItem(const wxMacDataItem* item) const
{
DataBrowserTableViewRowIndex row;
OSStatus err = GetItemRow( (DataBrowserItemID) item , &row);
wxASSERT( err == noErr);
return row;
}
wxMacDataItem* wxMacDataItemBrowserControl::GetItemFromLine(unsigned int n) const
{
DataBrowserItemID id;
OSStatus err = GetItemID( (DataBrowserTableViewRowIndex) n , &id);
wxASSERT( err == noErr);
return (wxMacDataItem*) id;
}
void wxMacDataItemBrowserControl::UpdateItem(const wxMacDataItem *container,
const wxMacDataItem *item , DataBrowserPropertyID property) const
{
verify_noerr( wxMacDataBrowserControl::UpdateItems((DataBrowserItemID)container, 1,
(DataBrowserItemID*) &item, kDataBrowserItemNoProperty /* notSorted */, property ) );
}
void wxMacDataItemBrowserControl::UpdateItems(const wxMacDataItem *container,
wxArrayMacDataItemPtr &itemArray , DataBrowserPropertyID property) const
{
unsigned int noItems = itemArray.GetCount();
DataBrowserItemID *items = new DataBrowserItemID[noItems];
for ( unsigned int i = 0; i < noItems; ++i )
items[i] = (DataBrowserItemID) itemArray[i];
verify_noerr( wxMacDataBrowserControl::UpdateItems((DataBrowserItemID)container, noItems,
items, kDataBrowserItemNoProperty /* notSorted */, property ) );
delete [] items;
}
void wxMacDataItemBrowserControl::AddItem(wxMacDataItem *container, wxMacDataItem *item)
{
verify_noerr( wxMacDataBrowserControl::AddItems( (DataBrowserItemID)container, 1,
(DataBrowserItemID*) &item, kDataBrowserItemNoProperty ) );
}
void wxMacDataItemBrowserControl::AddItems(wxMacDataItem *container, wxArrayMacDataItemPtr &itemArray )
{
unsigned int noItems = itemArray.GetCount();
DataBrowserItemID *items = new DataBrowserItemID[noItems];
for ( unsigned int i = 0; i < noItems; ++i )
items[i] = (DataBrowserItemID) itemArray[i];
verify_noerr( wxMacDataBrowserControl::AddItems( (DataBrowserItemID)container, noItems,
(DataBrowserItemID*) items, kDataBrowserItemNoProperty ) );
delete [] items;
}
void wxMacDataItemBrowserControl::RemoveItem(wxMacDataItem *container, wxMacDataItem* item)
{
OSStatus err = wxMacDataBrowserControl::RemoveItems( (DataBrowserItemID)container, 1,
(UInt32*) &item, kDataBrowserItemNoProperty );
verify_noerr( err );
}
void wxMacDataItemBrowserControl::RemoveItems(wxMacDataItem *container, wxArrayMacDataItemPtr &itemArray)
{
unsigned int noItems = itemArray.GetCount();
DataBrowserItemID *items = new DataBrowserItemID[noItems];
for ( unsigned int i = 0; i < noItems; ++i )
items[i] = (DataBrowserItemID) itemArray[i];
OSStatus err = wxMacDataBrowserControl::RemoveItems( (DataBrowserItemID)container, noItems,
(UInt32*) items, kDataBrowserItemNoProperty );
verify_noerr( err );
delete [] items;
}
void wxMacDataItemBrowserControl::RemoveAllItems(wxMacDataItem *container)
{
OSStatus err = wxMacDataBrowserControl::RemoveItems( (DataBrowserItemID)container, 0 , NULL , kDataBrowserItemNoProperty );
verify_noerr( err );
}
void wxMacDataItemBrowserControl::SetSelectedItem(wxMacDataItem* item , DataBrowserSetOption option)
{
verify_noerr(wxMacDataBrowserControl::SetSelectedItems( 1, (DataBrowserItemID*) &item, option ));
}
void wxMacDataItemBrowserControl::SetSelectedAllItems(DataBrowserSetOption option)
{
verify_noerr(wxMacDataBrowserControl::SetSelectedItems( 0 , NULL , option ));
}
void wxMacDataItemBrowserControl::SetSelectedItems(wxArrayMacDataItemPtr &itemArray , DataBrowserSetOption option)
{
unsigned int noItems = itemArray.GetCount();
DataBrowserItemID *items = new DataBrowserItemID[noItems];
for ( unsigned int i = 0; i < noItems; ++i )
items[i] = (DataBrowserItemID) itemArray[i];
verify_noerr(wxMacDataBrowserControl::SetSelectedItems( noItems, (DataBrowserItemID*) items, option ));
delete [] items;
}
Boolean wxMacDataItemBrowserControl::IsItemSelected( const wxMacDataItem* item) const
{
return wxMacDataBrowserControl::IsItemSelected( (DataBrowserItemID) item);
}
void wxMacDataItemBrowserControl::RevealItem( wxMacDataItem* item, DataBrowserRevealOptions options)
{
verify_noerr(wxMacDataBrowserControl::RevealItem( (DataBrowserItemID) item, kDataBrowserNoItem , options ) );
}
void wxMacDataItemBrowserControl::GetSelectionAnchor( wxMacDataItemPtr* first , wxMacDataItemPtr* last) const
{
verify_noerr(wxMacDataBrowserControl::GetSelectionAnchor( (DataBrowserItemID*) first, (DataBrowserItemID*) last) );
}
//
// Tab Control
//
OSStatus wxMacControl::SetTabEnabled( SInt16 tabNo , bool enable )
{
return ::SetTabEnabled( m_controlRef , tabNo , enable );
}
//
// Quartz Support
//
#ifdef __WXMAC_OSX__
// snippets from Sketch Sample from Apple :
#define kGenericRGBProfilePathStr "/System/Library/ColorSync/Profiles/Generic RGB Profile.icc"
/*
This function locates, opens, and returns the profile reference for the calibrated
Generic RGB color space. It is up to the caller to call CMCloseProfile when done
with the profile reference this function returns.
*/
CMProfileRef wxMacOpenGenericProfile()
{
static CMProfileRef cachedRGBProfileRef = NULL;
// we only create the profile reference once
if (cachedRGBProfileRef == NULL)
{
CMProfileLocation loc;
loc.locType = cmPathBasedProfile;
strcpy(loc.u.pathLoc.path, kGenericRGBProfilePathStr);
verify_noerr( CMOpenProfile(&cachedRGBProfileRef, &loc) );
}
// clone the profile reference so that the caller has their own reference, not our cached one
if (cachedRGBProfileRef)
CMCloneProfileRef(cachedRGBProfileRef);
return cachedRGBProfileRef;
}
/*
Return the generic RGB color space. This is a 'get' function and the caller should
not release the returned value unless the caller retains it first. Usually callers
of this routine will immediately use the returned colorspace with CoreGraphics
so they typically do not need to retain it themselves.
This function creates the generic RGB color space once and hangs onto it so it can
return it whenever this function is called.
*/
CGColorSpaceRef wxMacGetGenericRGBColorSpace()
{
static wxMacCFRefHolder<CGColorSpaceRef> genericRGBColorSpace;
if (genericRGBColorSpace == NULL)
{
if ( UMAGetSystemVersion() >= 0x1040 )
{
genericRGBColorSpace.Set( CGColorSpaceCreateWithName( CFSTR("kCGColorSpaceGenericRGB") ) );
}
else
{
CMProfileRef genericRGBProfile = wxMacOpenGenericProfile();
if (genericRGBProfile)
{
genericRGBColorSpace.Set( CGColorSpaceCreateWithPlatformColorSpace(genericRGBProfile) );
wxASSERT_MSG( genericRGBColorSpace != NULL, wxT("couldn't create the generic RGB color space") );
// we opened the profile so it is up to us to close it
CMCloseProfile(genericRGBProfile);
}
}
}
return genericRGBColorSpace;
}
#endif
wxMacPortSaver::wxMacPortSaver( GrafPtr port )
{
::GetPort( &m_port );
::SetPort( port );
}
wxMacPortSaver::~wxMacPortSaver()
{
::SetPort( m_port );
}
#endif // wxUSE_GUI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -