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;
	}
}
예제 #2
0
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;
}