/*(GPL)
------------------------------------------------------------
   Kobo Deluxe - An enhanced SDL port of XKobo
------------------------------------------------------------
 * Copyright (C) 2001, 2007 David Olofson
 * Copyright (C) 2005 Erik Auerswald
 * 
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2 of the License, or (at your
 * option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#ifndef	_KOBO_FORM_H_
#define	_KOBO_FORM_H_

#include "toolkit.h"
#include "cfgparse.h"

#define	LINE_H		9
#define	SPACE_SIZE	7

#define	BIG_LINE_H	18
#define	BIG_SPACE_SIZE	14

class kobo_form_t : public ct_form_t
{
	config_parser_t	*_data;
	//Called by build_all().
	void begin();
	void end();
  protected:
	ct_widget_t	*current_widget;
	ct_list_t	*current_list;
	int		ypos;
	int		_big;
	float		xoffs;
	ct_align_t	halign;
	virtual void init_widget(ct_widget_t *wg);

	//Toolkit
	void big();
	void medium();
	void small();
	void label(const char *cap);
	void yesno(const char *cap, int *var, int tag = 0);
	void onoff(const char *cap, int *var, int tag = 0);
	void spin(const char *cap, int *var, int min, int max,
			const char *unit, int tag = 0);
	void button(const char *cap, int tag = 0);
	void space(int lines = 1);

	//config_parser_t aware version! :-)
	void data(config_parser_t *_d);
	void editor(int handle, int tag = 0);
	void editor(const char *name, int tag = 0);

	//List tools
	void list(const char *cap, int *var, int tag = 0);
	void item(const char *cap, int value, int ind = 0);
	void perc_list(int first, int last, int step);
	void enum_list(int first, int last);

	//Internal wrapper for build()
	void build_all();
  public:
	kobo_form_t();
	virtual ~kobo_form_t();
	void next();
	void prev();
	virtual void change(int delta);
	virtual void build();
};

#endif
