Ejemplo n.º 1
0
void BatchRenderThread::save_jobs(char *path)
{
	FileXML file;

	for(int i = 0; i < jobs.total; i++)
	{
		file.tag.set_title("JOB");
		jobs.values[i]->save(&file);
	}

	if(path[0])
		file.write_to_file(path);
	else
		file.write_to_file(create_path(path));
}
Ejemplo n.º 2
0
int Commercials::
write_ads(const char *filename)
{
	char index_filename[BCTEXTLEN], source_filename[BCTEXTLEN];
	IndexFile::get_index_filename(source_filename,
		mwindow->preferences->index_directory, index_filename,
		filename, ".ads");

	FILE *fp = fopen(index_filename, "wb");
	if( fp != 0 ) {
		FileXML xml;
		xml.tag.set_title("ADS");
		xml.append_tag();
		xml.append_newline();
		int trks = tracks.size();
		for( int trk=0; trk<trks; ++trk )
			tracks.get(trk)->save(xml);
		xml.tag.set_title("/ADS");
		xml.append_tag();
		xml.append_newline();
		xml.terminate_string();
		xml.write_to_file(fp);
		fclose(fp);
	}
	return 0;
}
Ejemplo n.º 3
0
int IndexState::write_index(const char *path,
                            int data_bytes,
                            Asset *asset,
                            int64_t length_source)
{

    FILE *file;
    if(!(file = fopen(path, "wb")))
    {
// failed to create it
        printf(_("IndexState::write_index Couldn't write index file %s to disk.\n"),
               path);
    }
    else
    {
        FileXML xml;
// Pad index start position
        fwrite((char*)&(index_start), sizeof(int64_t), 1, file);

        index_status = INDEX_READY;

// Write asset encoding information in index file.
// This also calls back into index_state to write it.
        if(asset)
        {
            asset->write(&xml,
                         1,
                         "");
        }
        else
        {
// Must write index_state directly.
            write_xml(&xml);
        }

        xml.write_to_file(file);
        index_start = ftell(file);
        fseek(file, 0, SEEK_SET);
// Write index start
        fwrite((char*)&(index_start), sizeof(int64_t), 1, file);
        fseek(file, index_start, SEEK_SET);

// Write index data
        fwrite(index_buffer,
               data_bytes,
               1,
               file);
        fclose(file);
    }

// Force reread of header
    index_status = INDEX_NOTTESTED;
    index_end = length_source;
    old_index_end = 0;
    index_start = 0;
    return 0;
}
Ejemplo n.º 4
0
int Save::handle_event()
{
	if(mwindow->session->filename[0] == 0) 
	{
		saveas->start();
	}
	else
	{
// save it
// TODO: Move this into mwindow.
		FileXML file;
		mwindow->edl->save_xml(&file, 
			mwindow->session->filename,
			0,
			0);
		file.terminate_string();

		if(file.write_to_file(mwindow->session->filename))
		{
			char string2[256];
			sprintf(string2, _("Couldn't open %s"), mwindow->session->filename);
			ErrorBox error(PROGRAM_NAME ": Error",
				mwindow->gui->get_abs_cursor_x(1),
				mwindow->gui->get_abs_cursor_y(1));
			error.create_objects(string2);
			error.raise_window();
			error.run_window();
			return 1;		
		}
		else
		{
			char string[BCTEXTLEN];
			sprintf(string, 
				_("\"%s\" %dC written"), 
				mwindow->session->filename, 
				(int)strlen(file.string));
			mwindow->gui->show_message(string);
		}
		mwindow->session->changes_made = 0;
// Last command in program
//		if(saveas->quit_now) mwindow->gui->set_done(0);
		if(saveas->quit_now) mwindow->playback_3d->quit();
	}
	return 1;
}
Ejemplo n.º 5
0
void ChannelDB::save(const char *prefix)
{
    char path[BCTEXTLEN];
    FileXML file;

    prefix_to_path(path, prefix);

    if(channels.total)
    {
        for(int i = 0; i < channels.total; i++)
        {
// Save channel here
            channels.values[i]->save(&file);
        }
        file.terminate_string();
        file.write_to_file(path);
    }
}
Ejemplo n.º 6
0
void Asset::write_index(char *path, int data_bytes)
{
	FILE *file;
	if(!(file = fopen(path, "wb")))
	{
// failed to create it
		printf(_("Asset::write_index Couldn't write index file %s to disk.\n"), path);
	}
	else
	{
		FileXML xml;
// Pad index start position
		fwrite((char*)&(index_start), sizeof(int64_t), 1, file);

		index_status = INDEX_READY;
// Write encoding information
		write(&xml, 
			1, 
			"");
		xml.write_to_file(file);
		index_start = ftell(file);
		fseek(file, 0, SEEK_SET);
// Write index start
		fwrite((char*)&(index_start), sizeof(int64_t), 1, file);
		fseek(file, index_start, SEEK_SET);

// Write index data
		fwrite(index_buffer, 
			data_bytes, 
			1, 
			file);
		fclose(file);
	}

// Force reread of header
	index_status = INDEX_NOTTESTED;
//	index_status = INDEX_READY;
	index_end = audio_length;
	old_index_end = 0;
	index_start = 0;
}
Ejemplo n.º 7
0
void SaveAs::run()
{
// ======================================= get path from user
	int result;
//printf("SaveAs::run 1\n");
	char directory[1024], filename[1024];
	sprintf(directory, "~");
	mwindow->defaults->get("DIRECTORY", directory);

// Loop if file exists
	do{
		SaveFileWindow *window;

		window = new SaveFileWindow(mwindow, directory);
		window->lock_window("SaveAs::run");
		window->create_objects();
		window->unlock_window();
		result = window->run_window();
		mwindow->defaults->update("DIRECTORY", window->get_submitted_path());
		strcpy(filename, window->get_submitted_path());
		delete window;

// Extend the filename with .xml
		if(strlen(filename) < 4 || 
			strcasecmp(&filename[strlen(filename) - 4], ".xml"))
		{
			strcat(filename, ".xml");
		}

// ======================================= try to save it
		if(filename[0] == 0) return;              // no filename given
		if(result == 1) return;          // user cancelled
		result = ConfirmSave::test_file(mwindow, filename);
	}while(result);        // file exists so repeat

//printf("SaveAs::run 6 %s\n", filename);




// save it
	FileXML file;
	mwindow->gui->lock_window("SaveAs::run 1");
// update the project name
	mwindow->set_filename(filename);      
	mwindow->edl->save_xml(&file, 
		filename,
		0,
		0);
	mwindow->gui->unlock_window();
	file.terminate_string();

	if(file.write_to_file(filename))
	{
		char string2[256];
		mwindow->set_filename("");      // update the project name
		sprintf(string2, _("Couldn't open %s."), filename);
		ErrorBox error(PROGRAM_NAME ": Error",
			mwindow->gui->get_abs_cursor_x(1),
			mwindow->gui->get_abs_cursor_y(1));
		error.create_objects(string2);
		error.raise_window();
		error.run_window();
		return;		
	}
	else
	{
		char string[BCTEXTLEN];
		sprintf(string, _("\"%s\" %dC written"), filename, (int)strlen(file.string));
		mwindow->gui->lock_window("SaveAs::run 2");
		mwindow->gui->show_message(string);
		mwindow->gui->unlock_window();
	}


	mwindow->session->changes_made = 0;
	mmenu->add_load(filename);
// Last command in program
//	if(quit_now) mwindow->gui->set_done(0);
	if(quit_now) mwindow->playback_3d->quit();
	return;
}