module dinu.command.desktop;


import dinu;


__gshared:


shared immutable class CommandDesktop: Command {

	string exec;

	this(string args){
		auto split = args.bangSplit;
		super(Type.desktop, split[0], options.colorDesktop);
		exec = split[1];
	}

	override string serialize(){
		return [name, exec].bangJoin;
	}

	override int draw(DrawEmpty draw, int[2] pos, bool selected, immutable(int)[] positions){
		int origX = pos.x;
		pos.x += super.draw(draw, pos, selected, positions);
		return pos.x-origX;
	}

	override string hint(){
		return exec;
	}

	override size_t score(){
		return 12;
	}

	override string filterText(){
		return name ~ exec;
	}

	override void run(string parameter){
		this.spawnCommand(exec, parameter);
	}

	override void spawnCommand(string command, string arguments=""){
		options.configPath.execute(type.to!string, serialize.replace("!", "\\!"), command, arguments.replace("!", "\\!"));
	}

}