HRESULT STDMETHODCALLTYPE CProjectItemInfo::get_InfoProperty(TC_PROJECT_NODE_INFO_PROP PropID, VARIANT * Value) { _ASSERT( Value != NULL ); CComVariant default_node_name (cDefaultName); CComVariant bitmap ((LONG)m_bitmap); CComVariant name (cProjectItemName); CComVariant description (cProjectItemDescription); CComVariant description_ex (cProjectItemDescription_ex); CComVariant help_context (0); CComVariant help_context_file_name(_T("")); CComVariant help_topic (_T("")); CComVariant help_topic_file_name (_T("")); CComVariant is_alone (true); CComVariant is_required (false); CComVariant can_edit_name (false); CComVariant can_delete (true); CComVariant recorder_create_only (false); switch (PropID) { case pniDefaultNodeName: return VariantCopy(Value, &default_node_name); case pniBitmapReference: return VariantCopy(Value, &bitmap); case pniName: return VariantCopy(Value, &name); case pniDescription: return VariantCopy(Value, &description); case pniDescriptionEx: return VariantCopy(Value, &description_ex); case pniHelpContext: return VariantCopy(Value, &help_context); case pniHelpContextFileName: return VariantCopy(Value, &help_context_file_name); case pniHelpTopic: return VariantCopy(Value, &help_topic); case pniHelpTopicFileName: return VariantCopy(Value, &help_topic_file_name); case pniIsAlone: return VariantCopy(Value, &is_alone); case pniIsRequired: return VariantCopy(Value, &is_required); case pniCanEditName: return VariantCopy(Value, &can_edit_name); case pniCanDelete: return VariantCopy(Value, &can_delete); case pniRecorderCreateOnly: return VariantCopy(Value, &recorder_create_only); default: _ASSERT( false ); return ERROR_BAD_ARGUMENTS; } }
int16 key_sdial(int16 kreturn, int16 kstate) { int16 scan; int16 whdl, dummy; int16 ret = 1; NODE *lastnode; scan = (kreturn & 0xFF00) >> 8; wind_get( 0, WF_TOP, &whdl, &dummy, &dummy, &dummy ); if( whdl == wdial->win_handle ) { dyn_fnode( wdial, hv_olditem ); switch( scan ) { case 1: /* Esc */ wd_selectnew( wdial, -1, hv_olditem, CHECKED ); hv_olditem = -1; break; case 75: /* Links */ if( clnode && (clnode->type == FolderTag) && (clnode->attr.folder->open) ) dyn_event( wdial, hv_olditem ); break; case 77: /* Rechts */ if( clnode && (clnode->type == FolderTag) && !(clnode->attr.folder->open) ) dyn_event( wdial, hv_olditem ); break; case 72: /* Oben */ if( clnode ) { NODE *nd1 = NULL; lastnode = clnode; if( clnode->prev ) { clnode = clnode->prev; while( (clnode) && (clnode->type != FolderTag) && (clnode->type != ItemTag) ) { lastnode = clnode; clnode = clnode->prev; } nd1 = clnode; while( clnode && ((clnode->type == FolderTag && clnode->attr.folder->open) || (clnode->type == RootNode)) ) { lastnode = clnode; clnode = node_findlast( clnode ); } if( nd1 && !clnode ) clnode = lastnode; } else if( clnode->parent && (clnode->parent->type != RootNode) ) clnode = clnode->parent; } else { clnode = gl_nodeptr; while( clnode && ((clnode->type == FolderTag && clnode->attr.folder->open) || (clnode->type == RootNode)) ) { lastnode = clnode; clnode = node_findlast( clnode ); } if( !clnode ) clnode = lastnode; } if( clnode ) { int16 newitem; if( clnode->type == FolderTag ) newitem = clnode->attr.folder->text_ob; else if( clnode->type == ItemTag ) newitem = clnode->attr.item->text_ob; else newitem = -1; wd_selectnew( wdial, newitem, hv_olditem, CHECKED ); help_context( clnode ); hv_olditem = newitem; } break; case 80: /* Unten */ if( !clnode ) clnode = gl_nodeptr; lastnode = clnode; if( clnode->content && ((clnode->type == FolderTag && clnode->attr.folder->open) || (clnode->type == RootNode)) ) clnode = clnode->content; else clnode = clnode->next; while( (clnode) && (clnode->type != FolderTag) && (clnode->type != ItemTag) ) { lastnode = clnode; clnode = clnode->next; } if( !clnode && lastnode ) { clnode = lastnode; while( !(clnode->next) && (clnode->parent) ) clnode = clnode->parent; clnode = clnode->next; while( (clnode) && (clnode->type != FolderTag) && (clnode->type != ItemTag) ) clnode = clnode->next; } if( clnode ) { int16 newitem; if( clnode->type == FolderTag ) newitem = clnode->attr.folder->text_ob; else if( clnode->type == ItemTag ) newitem = clnode->attr.item->text_ob; else newitem = -1; wd_selectnew( wdial, newitem, hv_olditem, CHECKED ); help_context( clnode ); hv_olditem = newitem; } break; case 28: /* Return */ case 57: /* Space */ case 114: /* Enter */ if( hv_olditem >= 0 ) dyn_event( wdial, hv_olditem ); break; default: ret = 0; break; } } return ret; }