예제 #1
0
파일: filedsn.c 프로젝트: dancparkes/iODBC
static pascal OSStatus
fdsn_getset_item (ControlRef browser,
    DataBrowserItemID itemID, DataBrowserPropertyID property,
    DataBrowserItemDataRef itemData, Boolean changeValue)
{
  static IconRef folderIcon = 0;
  static IconRef dsnIcon = 0;
  OSStatus err = noErr;

  if (!changeValue)
    switch (property)
      {
      case DBNAME_ID:
        if (folderIcon == 0)
          GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericFolderIcon, &folderIcon);
        if (dsnIcon == 0)
          GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericDocumentIcon, &dsnIcon);
	
	SetDataBrowserItemDataText (itemData, FDSN_array[itemID - DBITEM_ID - 1]);
	if (FDSN_type[itemID - DBITEM_ID - 1])
          SetDataBrowserItemDataIcon(itemData, dsnIcon);
	else
          SetDataBrowserItemDataIcon(itemData, folderIcon);
	break;

      case kDataBrowserItemIsActiveProperty:
	if (itemID > DBITEM_ID && itemID <= DBITEM_ID + FDSN_nrows)
	  err = SetDataBrowserItemDataBooleanValue (itemData, true);
	break;

      case kDataBrowserItemIsEditableProperty:
	err = SetDataBrowserItemDataBooleanValue (itemData, true);
	break;

      case kDataBrowserItemIsContainerProperty:
	err =
	    SetDataBrowserItemDataBooleanValue (itemData,
	    itemID == DBITEM_ID);
	break;

      case kDataBrowserContainerAliasIDProperty:
	break;

      case kDataBrowserItemParentContainerProperty:
	break;

      default:
	err = errDataBrowserPropertyNotSupported;
	break;
      }
  else
    err = errDataBrowserPropertyNotSupported;

  return err;
}
예제 #2
0
OSStatus
MySimpleDataCallback(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, DataBrowserItemDataRef itemData, Boolean changeValue)
{
    static IconRef neighborhoodIcon = 0;
    static IconRef servicesIcon = 0;
    CFStringRef name;
        
    switch (property)
    {
        case kNameColumn:
            if (itemID <= kMaxNeighborhoods)
            {
                if (neighborhoodIcon == 0) GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericNetworkIcon, &neighborhoodIcon);
                SetDataBrowserItemDataIcon(itemData, neighborhoodIcon);
                SetDataBrowserItemDataText(itemData, gData[itemID-1]);
            }
            else
            {
                if (servicesIcon == 0)
                {
                    if (gSystemIsMacOSX) GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericIDiskIcon, &servicesIcon);
                    else GetIconRef(kOnSystemDisk, kSystemIconsCreator, kIPFileServerIcon, &servicesIcon);
                }
                
                SetDataBrowserItemDataIcon(itemData, servicesIcon);
                
                ParseURL(gData[itemID - 1], &name);
                if (name)
                {
                    SetDataBrowserItemDataText(itemData, name);
                    CFRelease(name);
                }
            }
            break;
        case kDataBrowserItemIsSelectableProperty:
            if (itemID <= kMaxNeighborhoods) SetDataBrowserItemDataBooleanValue(itemData, false);
            else SetDataBrowserItemDataBooleanValue(itemData, true);
            break;
        case kDataBrowserItemIsContainerProperty:
            if (itemID <= kMaxNeighborhoods) SetDataBrowserItemDataBooleanValue(itemData, true);
            else SetDataBrowserItemDataBooleanValue(itemData, false);
            break;
    }
    
    return noErr;
}
예제 #3
0
static OSStatus
OPL_DSNItemViewItemDataCallback(ControlRef itemView, DataBrowserItemID itemID,
                                DataBrowserPropertyID property, DataBrowserItemDataRef itemData,
                                Boolean changeValue)
{
    OSStatus err;
    CFStringRef dsn;
    static IconRef folderIcon = 0;
    static IconRef dsnIcon = 0;
    IconRef icon = 0;

    if (changeValue)
        return errDataBrowserPropertyNotSupported;

    // Get TestPool instance
    OPL_DSNList *dsnlist = OPL_DSNList::get(itemView);
    if (!dsnlist)
        return errDataBrowserPropertyNotSupported;

    // Get test item
    dsn = dsnlist->getItem(itemID);
    CFStringRef str;

    switch (property) {
    case kItemViewDSNL:
        str = dsn;
        break;

    case kItemViewFDSNL:
        if (folderIcon == 0)
            GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericFolderIcon, &folderIcon);
        if (dsnIcon == 0)
            GetIconRef(kOnSystemDisk, kSystemIconsCreator, kGenericDocumentIcon, &dsnIcon);

        icon = dsnlist->getItemType(itemID) ? folderIcon : dsnIcon;
        str = dsn;
        break;

    default:
        return errDataBrowserPropertyNotSupported;
    }

    // resize columns
    SInt16 outBaseline;
    Point ioBound;
    err = GetThemeTextDimensions(str, kThemeSystemFont, kThemeStateActive,
                                 false, &ioBound, &outBaseline);
    require_noerr(err, error);

    UInt16 width;
    err = GetDataBrowserTableViewNamedColumnWidth(itemView, property, &width);
    require_noerr(err, error);

    if (width < ioBound.h + 20) {
        err = SetDataBrowserTableViewNamedColumnWidth(itemView,
                property, ioBound.h + 20);
        require_noerr(err, error);
    }

    // set item data text
    err = SetDataBrowserItemDataText(itemData, str);
    require_noerr(err, error);

    if (icon)
        SetDataBrowserItemDataIcon(itemData, icon);

error:
    return err;
}