/*  This file is part of gnome-spell bonobo component

    Copyright (C) 1999, 2000 Helix Code, Inc.
    Authors:                 Radek Doulik <rodo@helixcode.com>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library 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
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public License
    along with this library; see the file COPYING.LIB.  If not, write to
    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.
*/

#include <Bonobo.idl>

module GNOME {
	module Spell {

		typedef sequence<string> StringSeq;
		struct Language {
			string name;
			string abbreviation;
		};
		typedef sequence<Language> LanguageSeq;

		interface Dictionary : Bonobo::Unknown {

			exception Error {
				string error;
			};

			LanguageSeq getLanguages ();

			/**
			 * sets language(s), language string could contain more languages separated by space
			 */
			void setLanguage (in string language);
		
			/**
			 * checks word
			 *
			 * returns true if word is valid
			 */
			boolean checkWord (in string word) raises (Error);

			/**
			 * returns suggestions for word
			 */
			StringSeq getSuggestions (in string word) raises (Error);

			/**
			 * add to session/personal dictionary
			 */
			void addWordToSession  (in string word) raises (Error);
			void addWordToPersonal (in string word, in string language) raises (Error);

			/**
			 * informs dictionary, that word 'word' will be replaced/corrected by word 'replacement'
			 */
			void setCorrection (in string word, in string replacement, in string language);
		};
	};
};
