#ifndef __WINDOWCOMMANDS_HPP
#define __WINDOWCOMMANDS_HPP

#include "utils.hpp"
#include <vector>
#include <string>

enum PossibleWindowCommands {
	WINDOW_COMMAND_NONE = 0,
	WINDOW_COMMAND_CONNECT,
	WINDOW_COMMAND_SPLIT,
	WINDOW_COMMAND_FULLSCREEN,
	WINDOW_COMMAND_CROP,
	WINDOW_COMMAND_ASYNC,
	WINDOW_COMMAND_VSYNC,
	WINDOW_COMMAND_MENU_SCALING_INC,
	WINDOW_COMMAND_MENU_SCALING_DEC,
	WINDOW_COMMAND_WINDOW_SCALING_INC,
	WINDOW_COMMAND_WINDOW_SCALING_DEC,
	WINDOW_COMMAND_RATIO_CYCLE,
	WINDOW_COMMAND_RATIO_TOP,
	WINDOW_COMMAND_RATIO_BOT,
	WINDOW_COMMAND_BLUR,
	WINDOW_COMMAND_TRANSPOSE,
	WINDOW_COMMAND_SCREEN_OFFSET,
	WINDOW_COMMAND_SUB_SCREEN_DISTANCE,
	WINDOW_COMMAND_CANVAS_X,
	WINDOW_COMMAND_CANVAS_Y,
	WINDOW_COMMAND_ROT_INC,
	WINDOW_COMMAND_ROT_DEC,
	WINDOW_COMMAND_ROT_TOP_INC,
	WINDOW_COMMAND_ROT_TOP_DEC,
	WINDOW_COMMAND_ROT_BOT_INC,
	WINDOW_COMMAND_ROT_BOT_DEC,
	WINDOW_COMMAND_PADDING,
	WINDOW_COMMAND_TOP_PAR,
	WINDOW_COMMAND_BOT_PAR,
	WINDOW_COMMAND_AUDIO_MUTE,
	WINDOW_COMMAND_VOLUME_INC,
	WINDOW_COMMAND_VOLUME_DEC,
	WINDOW_COMMAND_AUDIO_RESTART,
	WINDOW_COMMAND_LOAD_PROFILE_STARTUP,
	WINDOW_COMMAND_LOAD_PROFILE_1,
	WINDOW_COMMAND_LOAD_PROFILE_2,
	WINDOW_COMMAND_LOAD_PROFILE_3,
	WINDOW_COMMAND_LOAD_PROFILE_4,
	WINDOW_COMMAND_SAVE_PROFILE_STARTUP,
	WINDOW_COMMAND_SAVE_PROFILE_1,
	WINDOW_COMMAND_SAVE_PROFILE_2,
	WINDOW_COMMAND_SAVE_PROFILE_3,
	WINDOW_COMMAND_SAVE_PROFILE_4,
};

struct WindowCommand {
	PossibleWindowCommands cmd;
	std::string name;
	bool usable_always;
	bool available_mono_extra;
};

const WindowCommand* get_window_command(PossibleWindowCommands cmd);
void create_window_commands_list(std::vector<const WindowCommand*> &list_to_fill, bool is_mono_extra);

#endif
