コード例 #1
0
ファイル: SamplesTreeCtrl.cpp プロジェクト: rainChu/ytp-king
wxTreeItemId
SamplesTreeCtrl::getTreeItem( smp::Sample *sample, const wxTreeItemId &parent ) const
{
	wxTreeItemIdValue cookie;

	wxTreeItemId speechtem = GetFirstChild( parent, cookie );

	wxTreeItemId foundItem;
	while( speechtem.IsOk() )
	{
		SamplesTreeData *data = (SamplesTreeData *)GetItemData( speechtem );

		if ( data == NULL )
		{
			speechtem = GetNextChild( parent, cookie );
			continue;
		}

		if ( data->m_sample == sample )
			return speechtem;

		// call recursively on my children
		getTreeItem( sample, speechtem );

		// continue with my next sibling
		speechtem = GetNextChild( parent, cookie );
	}

	return speechtem;
}
コード例 #2
0
ファイル: SamplesTreeCtrl.cpp プロジェクト: rainChu/ytp-king
void
SamplesTreeCtrl::onRenameSample( char const *newSampleName, smp::Sample *sample )
{
	wxTreeItemId item = getTreeItem( sample );
	if ( item.IsOk() )
		SetItemText( item, newSampleName );
}
コード例 #3
0
ファイル: SamplesTreeCtrl.cpp プロジェクト: rainChu/ytp-king
void
SamplesTreeCtrl::onChangeSampleSpeaker( char const *speakerName, smp::Sample *sample )
{
	// Is there a speaker of this new name?
	wxTreeItemId speakerItem = getSpeaker( speakerName );
	wxTreeItemId speechItem  = getTreeItem( sample );

	if ( speakerItem.IsOk() )
	{
		// The speaker of this name already exists.
		// So I merge the item into that tree.

		wxTreeItemId currentSpeakerItem = getSpeaker( speechItem );
		if ( currentSpeakerItem.IsOk() )
			SelectItem( changeSpeaker( speechItem, currentSpeakerItem, speakerItem ) );
	}
	else
	{
		// The speaker doesn't already exist.

		speakerItem = getSpeaker( speechItem );

		// Do I have siblings?
		if ( GetChildrenCount( speakerItem ) == 1 )
			// There's nobody else. I should change the speaker name in place.
			SetItemText( speakerItem, speakerName );
		else
		{
			// I have a different name than my siblings, I should create a
			// new parent and move there.
			wxTreeItemId newSpeakerItem = AppendItem( GetRootItem(), speakerName );
			SelectItem( changeSpeaker( speechItem, speakerItem, newSpeakerItem ) );
		}
	}
}
コード例 #4
0
ファイル: NodeAnim.cpp プロジェクト: azerupi/Natron
void
NodeAnim::refreshVisibility()
{

    AnimationModulePtr animModule = getModel();
    QTreeWidgetItem *nodeItem = getTreeItem();
    bool showNode = false;
    int nChildren = nodeItem->childCount();

    // Refresh children, which will recursively refresh their children
    for (int i = 0; i < nChildren; ++i) {
        QTreeWidgetItem* child = nodeItem->child(i);

        AnimatedItemTypeEnum type;
        KnobAnimPtr isKnob;
        TableItemAnimPtr isTableItem;
        NodeAnimPtr isNodeItem;
        ViewSetSpec view;
        DimSpec dim;
        bool found = animModule->findItem(child, &type, &isKnob, &isTableItem, &isNodeItem, &view, &dim);
        if (!found) {
            continue;
        }
        if (isTableItem) {
            isTableItem->refreshVisibilityConditional(false /*refreshParent*/);
        } else if (isNodeItem) {
            isNodeItem->refreshVisibility();
        } else if (isKnob) {
            isKnob->refreshVisibilityConditional(false /*refreshHolder*/);
        }
        if (!child->isHidden()) {
            showNode = true;
        }
    }

    if (!showNode) {
        // If so far none of the children should be displayed, still check if the node has a range
        if (isRangeDrawingEnabled()) {
            showNode = true;
        }
        
    }

    // If settings panel is not opened and the "Keep in Animation Module" knob is not checked, hide the node.
    NodeGuiPtr nodeGui = getNodeGui();
    bool keepInAnimationModule = nodeGui->getNode()->isKeepInAnimationModuleButtonDown();
    if (!keepInAnimationModule && !nodeGui->isSettingsPanelVisible()) {
        showNode = false;
    }

    refreshFrameRange();

    nodeItem->setData(0, QT_ROLE_CONTEXT_IS_ANIMATED, showNode);

    nodeItem->setHidden(!showNode);


} // refreshVisibility
コード例 #5
0
ファイル: SamplesTreeCtrl.cpp プロジェクト: rainChu/ytp-king
wxTreeItemId
SamplesTreeCtrl::getTreeItem( smp::Sample *sample ) const
{
	wxTreeItemId root = GetRootItem();

	wxTreeItemIdValue cookie;

	wxTreeItemId speakerItem = GetFirstChild( root, cookie );

	wxTreeItemId foundItem;
	while( speakerItem.IsOk() )
	{
		if ( (foundItem = getTreeItem( sample, speakerItem )).IsOk() )
			return foundItem;

		speakerItem = GetNextChild( root, cookie );
	}

	return foundItem;
}