Beispiel #1
0
const struct sync_track *sync_get_track(struct sync_device *d,
    const char *name)
{
	struct sync_track *t;
	int idx = find_track(d, name);
	if (idx >= 0)
		return d->tracks[idx];

	idx = create_track(d, name);
	t = d->tracks[idx];

	get_track_data(d, t);
	return t;
}
    void NewTrackDialog::confirm_track_creation()
    {
        QString track_name = widgets_.trackName->text();
        QString track_author = widgets_.author->text();

        if (track_name.isEmpty())
        {
            widgets_.trackName->setFocus();
        }

        else if (track_author.isEmpty())
        {
            widgets_.author->setFocus();
        }

        else
        {
            TrackEssentials essentials;
            essentials.path = QDir::cleanPath(widgets_.trackLocation->text() +
                QDir::separator() + track_name + ".trk");

            essentials.name = track_name;
            essentials.author = track_author;

            essentials.size.setWidth(widgets_.widthSpinBox->value());
            essentials.size.setHeight(widgets_.heightSpinBox->value());

            for (int row = 0; row != widgets_.assetsList->count(); ++row)
            {
                QString asset = widgets_.assetsList->item(row)->text();
                essentials.assets.push_back(asset);
            }

            create_track(essentials);

            hide();
        }
    }
Beispiel #3
0
//================================================================
int append_track(int scene, const char* sessionName, const char* trackName)
{
#ifdef DEBUG
    if(!is_track_scene(scene))
    {
        printf("%d is not a Track Scene\n", scene);
        return -1;
    }
#else
    if(!is_track_scene(scene)) return -1;
#endif

    TrackSceneNode* t = NULL;
    create_track(sessionName, trackName, t);

#ifdef DEBUG
    if( !t )
    {
        printf("Could not create track object\n");
        return -1;
    }
#else
    if( !t ) return -1;
#endif

    TrackScene* ts = trackscenevec[scene];

    // Tracks with the same 'HOLE' should have the same 't->py'
    // Track name: <hole>_<core>
    bool foundTheSameHole = false;
    float holePy = defaultTrackPositionY;

    char * newTrackName = (char*) malloc(sizeof(char) * (strlen(trackName) + 1));
    strcpy(newTrackName, trackName);
    char * newHoleStr = strtok(newTrackName, "_");

    // try to reuse a track vec slot
    for(int i = 0; i < ts->trackvec.size(); ++i)
    {
        if( ts->trackvec[i] == NULL)
        {
            ts->trackvec[i] = t;

            // make sure that we don't have more than one i in zorder
            if( ts->zorder.size() == 0)
            {
                ts->zorder.push_back(i);
                return i;
            }

            bool found = false;
            for( int k = 0; k < ts->zorder.size(); ++k)
            {
                if( ts->zorder[k] == i)
                {
                    if(!found)
                    {
                        found = true;
                    }
                    else
                    {
                        ts->zorder[k] = -1;
                    }
                }
            }

            if(!found)
            {
                ts->zorder.push_back(i);
                bring_track_front(scene,i);
            }

            // increament default track posY
            t->py = holePy;
            defaultTrackPositionY = (foundTheSameHole) ?
                            (defaultTrackPositionY) :
                            (defaultTrackPositionY -= (TRACK_GAP * DEFAULT_DPI));

            return i;
        }
        else // try to find if track name with the same HOLE component exists
        {
            if(!foundTheSameHole)
            {
                char *thisTrackName = (char *) malloc( sizeof(char) * (strlen(ts->trackvec[i]->name)+1) );
                strcpy(thisTrackName, ts->trackvec[i]->name);
                char * thisHoleStr = strtok(thisTrackName, "_");

                // found it, with compare HOLE string
                if(0 == strcmp(newHoleStr, thisHoleStr))
                {
                    holePy = ts->trackvec[i]->py;
                    foundTheSameHole = true;
                }

                free(thisTrackName);
            }
        }
    }

    t->py = holePy;
    defaultTrackPositionY = (foundTheSameHole) ?
                            (defaultTrackPositionY) :
                            (defaultTrackPositionY -= (TRACK_GAP * DEFAULT_DPI));
    free(newTrackName);

    // no empty slots    
    ts->trackvec.push_back(t);
    ts->zorder.push_back(ts->trackvec.size() -1);
    bring_track_front(scene,ts->trackvec.size() -1);

    return (ts->trackvec.size() - 1);
}
Beispiel #4
0
//================================================================
int append_track(const char* sessionName, const char* trackName)
{
    if(!is_scene_bound()) return -1;

#ifdef DEBUG
    if(!is_track_scene(BoundScene)) 
    {
        printf("%d is not a Track Scene\n", BoundScene);
        return -1;
    }
#else
    if(!is_track_scene(BoundScene)) return -1;
#endif

    TrackSceneNode* t = NULL;
    create_track(sessionName, trackName, t);

#ifdef DEBUG
    if( !t )
    {
        printf("Could not create track object\n");
        return -1;
    }
#else
    if( !t ) return -1;
#endif

    TrackScene* ts = trackscenevec[BoundScene];

    // try to reuse a track vec slot
    int pos = -1;
    for( int i = 0; i < ts->trackvec.size(); ++i)
    {
        if( ts->trackvec[i] == NULL)
        {
            ts->trackvec[i] = t;

            // make sure that we don't have more than one i in zorder
            if( ts->zorder.size() == 0)
            {
                ts->zorder.push_back(i);
                return i;
            }

            bool found = false;
            for( int k = 0; k < ts->zorder.size(); ++k)
            {
                if( ts->zorder[k] == i)
                {
                    if(!found)
                        found = true;
                    else
                        ts->zorder[k] = -1;
                }
            }

            if(!found)
            {
                ts->zorder.push_back(i);
                bring_track_front(BoundScene,i);
            }

            return i;
        }
    }
    
    // no empty slots
    
    ts->trackvec.push_back(t);
    ts->zorder.push_back(ts->trackvec.size() -1);
    bring_track_front(BoundScene,ts->trackvec.size() -1);
    return ts->trackvec.size() - 1;
}