📄 utils.cpp
字号:
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::InsertColumn(int colId, DataBrowserPropertyType colType, const wxString& title, SInt16 just, int defaultWidth){ DataBrowserListViewColumnDesc columnDesc; columnDesc.headerBtnDesc.titleOffset = 0; columnDesc.headerBtnDesc.version = kDataBrowserListViewLatestHeaderDesc; columnDesc.headerBtnDesc.btnFontStyle.flags = kControlUseFontMask | kControlUseJustMask; columnDesc.headerBtnDesc.btnContentInfo.contentType = kControlContentTextOnly; columnDesc.headerBtnDesc.btnFontStyle.just = just; columnDesc.headerBtnDesc.btnFontStyle.font = kControlFontViewSystemFont; columnDesc.headerBtnDesc.btnFontStyle.style = normal; // TODO: Why is m_font not defined when we enter wxLC_LIST mode, but is // defined for other modes? wxFontEncoding enc; if ( m_font.Ok() ) enc = m_font.GetEncoding(); else enc = wxLocale::GetSystemEncoding(); wxMacCFStringHolder cfTitle; cfTitle.Assign( title, enc ); columnDesc.headerBtnDesc.titleString = cfTitle; columnDesc.headerBtnDesc.minimumWidth = 0; columnDesc.headerBtnDesc.maximumWidth = 30000; columnDesc.propertyDesc.propertyID = (kMinColumnId + colId); columnDesc.propertyDesc.propertyType = colType; columnDesc.propertyDesc.propertyFlags = kDataBrowserListViewSortableColumn;#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2 columnDesc.propertyDesc.propertyFlags |= kDataBrowserListViewTypeSelectColumn;#endif#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4 columnDesc.propertyDesc.propertyFlags |= kDataBrowserListViewNoGapForIconInHeaderButton;#endif verify_noerr( AddColumn( &columnDesc, kDataBrowserListViewAppendColumn ) ); if (defaultWidth > 0){ SetColumnWidth(colId, defaultWidth); }}void wxMacDataItemBrowserControl::SetColumnWidth(int colId, int width){ DataBrowserPropertyID id; GetColumnIDFromIndex(colId, &id); verify_noerr( wxMacDataBrowserControl::SetColumnWidth(id, width));}int wxMacDataItemBrowserControl::GetColumnWidth(int colId){ DataBrowserPropertyID id; GetColumnIDFromIndex(colId, &id); UInt16 result; verify_noerr( wxMacDataBrowserControl::GetColumnWidth(id, &result)); return result;}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, (DataBrowserItemID*) &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, (DataBrowserItemID*) 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) );}wxClientDataType wxMacDataItemBrowserControl::GetClientDataType() const{ return m_clientDataItemsType;}void wxMacDataItemBrowserControl::SetClientDataType(wxClientDataType clientDataItemsType){ m_clientDataItemsType = clientDataItemsType;}unsigned int wxMacDataItemBrowserControl::MacGetCount() const{ return GetItemCount(wxMacDataBrowserRootContainer,false,kDataBrowserItemAnyState);}void wxMacDataItemBrowserControl::MacDelete( unsigned int n ){ wxMacDataItem* item = (wxMacDataItem*)GetItemFromLine( n ); RemoveItem( wxMacDataBrowserRootContainer, item );}void wxMacDataItemBrowserControl::MacInsert( unsigned int n, const wxString& text, int column ){ wxMacDataItem* newItem = CreateItem(); newItem->SetLabel( text ); if ( column != -1 ) newItem->SetColumn( kMinColumnId + column ); if ( m_sortOrder == SortOrder_None ) { // increase the order of the lines to be shifted unsigned int lines = MacGetCount(); for ( unsigned int i = n; i < lines; ++i) { wxMacDataItem* iter = (wxMacDataItem*) GetItemFromLine(i); iter->SetOrder( iter->GetOrder() + 1 ); } SInt32 frontLineOrder = 0; if ( n > 0 ) { wxMacDataItem* iter = (wxMacDataItem*) GetItemFromLine(n-1); frontLineOrder = iter->GetOrder(); } newItem->SetOrder( frontLineOrder + 1 ); } AddItem( wxMacDataBrowserRootContainer, newItem );}void wxMacDataItemBrowserControl::MacInsert( unsigned int n, const wxArrayString& items, int column ){ size_t itemsCount = items.GetCount(); if ( itemsCount == 0 ) return; SInt32 frontLineOrder = 0; if ( m_sortOrder == SortOrder_None ) { // increase the order of the lines to be shifted unsigned int lines = MacGetCount(); for ( unsigned int i = n; i < lines; ++i) { wxMacDataItem* iter = (wxMacDataItem*) GetItemFromLine(i); iter->SetOrder( iter->GetOrder() + itemsCount ); } if ( n > 0 ) { wxMacDataItem* iter = (wxMacDataItem*) GetItemFromLine(n-1); frontLineOrder = iter->GetOrder(); } } wxArrayMacDataItemPtr ids; ids.SetCount( itemsCount ); for ( unsigned int i = 0; i < itemsCount; ++i ) { wxMacDataItem* item = CreateItem(); item->SetLabel( items[i]); if ( column != -1 ) item->SetColumn( kMinColumnId + column ); if ( m_sortOrder == SortOrder_None ) item->SetOrder( frontLineOrder + 1 + i ); ids[i] = item; } AddItems( wxMacDataBrowserRootContainer, ids );}int wxMacDataItemBrowserControl::MacAppend( const wxString& text){ wxMacDataItem* item = CreateItem(); item->SetLabel( text ); if ( m_sortOrder == SortOrder_None ) { unsigned int lines = MacGetCount(); if ( lines == 0 ) item->SetOrder( 1 ); else { wxMacDataItem* frontItem = (wxMacDataItem*) GetItemFromLine(lines-1); item->SetOrder( frontItem->GetOrder() + 1 ); } } AddItem( wxMacDataBrowserRootContainer, item ); return GetLineFromItem(item);}void wxMacDataItemBrowserControl::MacClear(){ wxMacDataItemBrowserSelectionSuppressor suppressor(this); RemoveAllItems(wxMacDataBrowserRootContainer);}void wxMacDataItemBrowserControl::MacDeselectAll(){ wxMacDataItemBrowserSelectionSuppressor suppressor(this); SetSelectedAllItems( kDataBrowserItemsRemove );}void wxMacDataItemBrowserControl::MacSetSelection( unsigned int n, bool select, bool multi ){ wxMacDataItem* item = (wxMacDataItem*) GetItemFromLine(n); wxMacDataItemBrowserSelectionSuppressor suppressor(this); if ( IsItemSelected( item ) != select ) { if ( select ) SetSelectedItem( item, multi ? kDataBrowserItemsAdd : kDataBrowserItemsAssign ); else SetSelectedItem( item, kDataBrowserItemsRemove ); } MacScrollTo( n );}bool wxMacDataItemBrowserControl::MacIsSelected( unsigned int n ) const{ wxMacDataItem* item = (wxMacDataItem*) GetItemFromLine(n); return IsItemSelected( item );}int wxMacDataItemBrowserControl::MacGetSelection() const{ wxMacDataItemPtr first, last; GetSelectionAnchor( &first, &last ); if ( first != NULL ) { return GetLineFromItem( first ); } return -1;}int wxMacDataItemBrowserControl::MacGetSelections( wxArrayInt& aSelections ) const{ aSelections.Empty(); wxArrayMacDataItemPtr selectedItems; GetItems( wxMacDataBrowserRootContainer, false , kDataBrowserItemIsSelected, selectedItems); int count = selectedItems.GetCount(); for ( int i = 0; i < count; ++i) { aSelections.Add(GetLineFromItem(selectedItems[i])); } return count;}void wxMacDataItemBrowserControl::MacSetString( unsigned int n, const wxString& text ){ // as we don't store the strings we only have to issue a redraw wxMacDataItem* item = (wxMacDataItem*) GetItemFromLine( n); item->SetLabel( text ); UpdateItem( wxMacDataBrowserRootContainer, item , kTextColumnId );}wxString wxMacDataItemBrowserControl::MacGetString( unsigned int n ) const{ wxMacDataItem * item = (wxMacDataItem*) GetItemFromLine( n ); return item->GetLabel();}void wxMacDataItemBrowserControl::MacSetClientData( unsigned int n, void * data){ wxMacDataItem* item = (wxMacDataItem*) GetItemFromLine( n); item->SetData( data ); // not displayed, therefore no Update infos to DataBrowser}void * wxMacDataItemBrowserControl::MacGetClientData( unsigned int n) const{ wxMacDataItem * item = (wxMacDataItem*) GetItemFromLine( n ); return item->GetData();}void wxMacDataItemBrowserControl::MacScrollTo( unsigned int n ){ RevealItem( GetItemFromLine( n) , kDataBrowserRevealWithoutSelecting );}//// 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#ifndef __LP64__wxMacPortSaver::wxMacPortSaver( GrafPtr port ){ ::GetPort( &m_port ); ::SetPort( port );}wxM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -