#include "printer.h"
#include "blop_bookkeeper.h"
#include "bloputils.h"
#include "canvas.h"


namespace blop
{
    std::string printer::default_cmd_ = "lpr %f";
    var printer::default_command() {return default_cmd_;}
    void printer::default_command(const var &o) {default_cmd_ = o.str(); }

    void printer::print(const var &cmd, const var &epsopts)
    {
	printer t(cmd, epsopts);
	canvas::current().print(&t);
    }

    printer::printer(const var &cmd, const var &epsopts) :
	eps(blop_bookkeeper::tmpfile("PRINT_XXXXXX.eps"),epsopts), cmd_(cmd)
    {
    }

    printer::~printer()
    {
    }

    void printer::picture_end()
    {
	base::picture_end();

	var cmd = cmd_;
	if(cmd.find("%f") == var::npos) cmd &= " %f";
	cmd.replace("%f",base::filename_);
	int rc;
	var message = readcmd(cmd, &rc);
	if(rc != 0)
	{
	    cerr<<"The following command failed:"<<endl;
	    cerr<<cmd.str()<<endl<<endl;
	    cerr<<"Its output is the following:"<<endl;
	    cerr<<message.str()<<endl;
	}
    }
}