
/*  $Header: /cvs/gnome/GSAPI/ChangeLog,v 1.1.1.1 2003/08/01 15:16:59 richb Exp $
 *
 *  Copyright (c) 2002-2003 Sun Microsystems, Inc.
 *  All Rights Reserved.
 */

2003-08-01 Rich Burridge <rich.burridge@sun.com>

    * Various changes needed to prepare files for the GNOME CVS dist. and
      the first release to the GNOME community for review:
      - Adjusted the $ Header $ comments in various files.
      - Wrote the AUTHORS file.
      - Wrote a more detailed README file that describes exactly what is
        in this current distribution.
      - Adjusted the gendoc.sh script to make it easier for others to run
        (even though various tools are not present on a GNOME system by
         default).
      - Removed the Bonobo/Orbit include calls that are no longer needed
        in the three .idl files. Adjusted the .idl files accordingly.
      - Moved the Bonobo specific definitions into their own separate IDL
        file.
      - Regenerated the HTML documentation.
      - Added an autogen.sh, configure.in and Makefile.am files where 
        appropriate so that doing a "configure", "make" or make dist" 
        works correctly.

2003-06-18  Rich Burridge <rich.burridge@sun.com>

    * Added in numerous HREF links (similar to those found in the JSAPI
      JavaDoc comments.

2003-05-25  Rich Burridge <rich.burridge@sun.com>

    * Changes needed to generate the first version of the HTML documentation.
      Adjustments to the definitions given in the last rev:

      interface ControlComponent : ::Bonobo::Control {};

      exception IllegalArgumentException {};
      exception IOException {};
      exception MalformedURLException {};

    * Inclusion of a .../idl/gnome-IDL-for-doc-gen directory with
      customised versions of the GNOME Bonobo IDL files (that can be
      successfully parsed by omniidl).

    * Adjustment of the gendoc.sh shell script to use these files.

    * Checkin of the generated HTML documentation under .../doc

2003-05-25  Rich Burridge <rich.burridge@sun.com>

    * Added in the following definitions to GNOME_Speech.idl and adjusted 
      the code in the three IDL files to use them.

      interface SpeechObject	: ::Bonobo::Unknown  {};
      interface EventListener : ::Bonobo::Listener {};
      interface InputStream : ::Bonobo::Stream {};
      interface OutputStream : ::Bonobo::Stream {};

      typedef Bonobo::BadArg	 IllegalArgumentException;
      typedef Bonobo::Control	 ControlComponent;
      typedef Bonobo::IOError	 IOException;
      typedef CosNaming::NamingContextExt::InvalidAddress MalformedURLException;

2003-05-25  Rich Burridge <rich.burridge@sun.com>

    * Adjusted GNOME_Speech_Recognition.idl to have JavaDoc style 
      documentation.

2003-05-22  Rich Burridge <rich.burridge@sun.com>

    * Adjusted GNOME_Speech.idl and GNOME_Speech_Synthesis.idl to have JavaDoc
      style documentation (to be used with Synopsis to generate HTML doc.).

2003-05-15  Rich Burridge <rich.burridge@sun.com>

    * Added in various files used to generate the HTML documentation (via the
      Synopsis documentation tool).

2003-05-14  Rich Burridge <rich.burridge@sun.com>

    * Changes needed in order to get GSAPI IDL files to be successfully
      parsed by omniidl, the IDL parser used to make the HTML documentation.

      - occurances of "grammarType" changed to "type" to avoid conflict with
        the GrammarType typedef.

      - Boolean enum changed to Tristate to avoid conflict with the keyword
        "boolean".

      - Replaced:

        typedef sequence<sequence<::GNOME::Speech::Recognition::ResultToken> > ResultTokenArray2D;

        with:

        typedef sequence<ResultTokenArray> ResultTokenArray2D

        in GNOME_Sppech_Recognition.idl

    * The ::GNOME::Speech::Synthesis::Synthesizer getQueueItem operation
      has been adjusted to return a SythesizerQueueItem not a Bonobo::Unknown.

    * The ::GNOME::Speech::Synthesis MarkupType typedef has been changed from a
      long to a string. The two predefined markup types have been adjusted to
      be:

      const string MARKUP_JSML = "JSML_MARKUP";
      const string MARKUP_SSML = "SSML_MARKUP";

    * The ::GNOME::Speech::Recognition GrammarType typedef has been changed 
      from a long to a string. The two predefined grammar types have been 
      adjusted to be:

      const string GRAMMAR_JSGF = "JSGF_GRAMMAR";
      const string GRAMMAR_SRGS = "SRGS_GRAMMAR";

2003-04-17  Rich Burridge <rich.burridge@sun.com>

    * Speech properties are now Gconf resources. The Central interface now
      looks for the "SupportedRecognizers" resource which will contain a
      comma separated list of supported recognizers. The comments for the
      Central interface in GNOME_Speech.idl have been updated accordingly.

      Removed all references to ::Bonobo::PropertyBag as this approach is no
      longer being taken.

    * Replaced all occurances of "Unicode" with "UTF8".

    * Added the following two methods to the Synthesizer interface to provide
      the equivalent of the JSAPI enumerateQueue method:

	long
	getNumberOfQueueItems()
	    raises (::GNOME::Speech::EngineStateError);

	::Bonobo::Unknown
	getQueueItem(in long n)
	    raises (::GNOME::Speech::EngineStateError);

    * In the Recognizer Interface in GNOME_Speech_Recognition.idl changed:

	::GNOME::Speech::Recognition::RuleGrammar
	loadJSGFFromStream(in ::GNOME::Speech::Recognition::InputStream JSGF)
            raises (::GNOME::Speech::Recognition::GrammarException,
                    Bonobo::IOError,
                    ::GNOME::Speech::EngineStateError);

	::GNOME::Speech::Recognition::RuleGrammar
	loadJSGFFromURL(
            in GrammarURL urlContext,
            in string grammarName)
            raises (::GNOME::Speech::Recognition::GrammarException,
                    Bonobo::IOError,
                    CosNaming::NamingContextExt::InvalidAddress,
                    ::GNOME::Speech::EngineStateError);

	::GNOME::Speech::Recognition::RuleGrammar
	loadJSGFFromURLWithImports(
            in GrammarURL urlContext,
            in string grammarName,
            in boolean loadImports,
            in boolean reloadGrammars,
            in GrammarArray loadedGrammars)
            raises (::GNOME::Speech::Recognition::GrammarException,
                    Bonobo::IOError,
                    CosNaming::NamingContextExt::InvalidAddress,
                    ::GNOME::Speech::EngineStateError);

      to:

            typedef long GrammarType;
        
            const long GRAMMAR_JSGF = 1000;
            const long GRAMMAR_SRGS = 1001;

        
        ::GNOME::Speech::Recognition::RuleGrammar
	loadGrammarFromStream(
	    in GrammarType grammarType,
	    in ::GNOME::Speech::Recognition::InputStream inputStream)
            raises (::GNOME::Speech::Recognition::GrammarException,
                    Bonobo::IOError,
                    ::GNOME::Speech::EngineStateError);

	::GNOME::Speech::Recognition::RuleGrammar
	loadGrammarFromURL(
            in GrammarType grammarType,
            in GrammarURL urlContext,
            in string grammarName)
            raises (::GNOME::Speech::Recognition::GrammarException,
                    Bonobo::IOError,
                    CosNaming::NamingContextExt::InvalidAddress,
                    ::GNOME::Speech::EngineStateError);

	::GNOME::Speech::Recognition::RuleGrammar
	loadGrammarFromURLWithImports(
            in GrammarType grammarType,
            in GrammarURL urlContext,
            in string grammarName,
            in boolean loadImports,
            in boolean reloadGrammars,
            in GrammarArray loadedGrammars)
            raises (::GNOME::Speech::Recognition::GrammarException,
                    Bonobo::IOError,
                    CosNaming::NamingContextExt::InvalidAddress,
                    ::GNOME::Speech::EngineStateError);

      to make the API grammat agnostic. 

      Also added:

        boolean
        isGrammarTypeSupported(in GrammarType type);

      as a means of determining if the Recognizer supports a particular 
      grammar type.

    * Removed all specific references to JSGF.

    * Converted 

	::GNOME::Speech::Recognition::Rule
	ruleForJSGF(in string JSGFText)
            raises (::GNOME::Speech::Recognition::GrammarException);

      to:

	::GNOME::Speech::Recognition::Rule
	ruleForGrammar(in string grammarText)
            raises (::GNOME::Speech::Recognition::GrammarException);

      in the RuleGrammar interface in GNOME_Speech_Recognition.idl

    * Removed the comment:

       "If the derived URL does not exist, #loadJSGF checks for a system
        resource with the grammar file using the
        ClassLoader.getSystemResource method. This allows grammars to be
        included in the CLASSPATH."

      from the ::GNOME::Speech::Recognition::Recognition loadJSGFFromURL 
      method, as it's not applicable in a GNOME environment.

    * Made markup methods in interfaces in GNOME_Speech_Synthesis.idl agnostic
      of markup type.

      "exception JSMLException" becomes "exception MarkupException".
      Adjusted all places where this is raised.

      The getJSMLText method in the Speakable interface becomes getMarkupText.
      Adjusted all placed where this is referenced.

      The speakJSMLText method in the Synthesizer interface becomes 
      speakMarkupText. Adjusted all placed where this is referenced.

      Also added:

        boolean
        isMarkupTypeSupported(in MarkupType type);

      as a means of determining if the Synthesizer supports a particular markup
      type.

    * Adjusted JSAPI style method names of the type #name(...) in the 
      comments to the unique GSAPI equivalents.

    * Fixed up all Exception: names in the various comments.

2003-04-14  Rich Burridge <rich.burridge@sun.com>

    * Added an initWithRecognizerAndState method to the
      ::GNOME::Speech::Recognition::RecognizerEvent interface.

    * Added an initWithSynthesizerAndState method to the
      ::GNOME::Speech::Synthesis::SynthesizerEvent interface.

    * W.r.t. engine registration and the two locations for looking for a 
      speech properties file, replaced:

        <user.home>/speech.properties
        <java.home>/lib/speech.properties

      with equivalent gconf locations.

      The user's specific resources would be in:

      ~/.gconf/desktop/gnome/speech/%gconf.xml

      The system wide equivalent of that is:

      .../etc/gconf/gconf.xml.defaults/schemas/desktop/gnome/speech/%gconf.xml

      Adjusted the comments for the Central interface accordingly.

    * Adjusted the comments for the getStartTime and getEndTime methods in
      ::GNOME::Speech::Recognition::ResultToken interface to change
      "System.currentTimeMillis" to be "the current system time (in 
      milliseconds)".

    * Adjusted various "equals" methods to use the specific object they 
      are doing an equality test on rather than Bonobo::Unknown. This 
      affected:

      ::GNOME::Speech::EngineModeDesc
      ::GNOME::Speech::Recognition::SpeakerProfile
      ::GNOME::Speech::Synthesis::Voice

2003-04-09  Rich Burridge <rich.burridge@sun.com>

    * Added a PropertyVetoExceptionValue interface to the ::GNOME::Speech 
      module with init, getMinValue and getMaxValue methods.

    * Added a PropertyVetoException exception to the ::GNOME::Speech module.

    * Adjusted the following methods to raise this PropertyVetoException:

      ::GNOME::Speech::Recognition
        setConfidenceLevel
        setSensitivity
        setSpeedVsAccuracy
        setCompleteTimeout
        setIncompleteTimeout
        setNumResultAlternatives
        setResultAudioProvided
        setTrainingProvided

      ::GNOME::Speech::Synthesis
        setVoice
        setPitch
        setPitchRange
        setSpeakingRate
        setVolume

    * Adjusted ::GNOME::Speech::EngineProperties::getControlComponent to
      return a Control rather than a ControlFrame.
      Same change for
      ::GNOME::Speech::Recognition::SpeakerManager::getControlComponent

    * Added interface definitions for InputSteam and OutputStream to
      GNOME_Speech_Recognition.idl. Adjusted the following methods to
      use them:

      ::GNOME::Speech::Recognition::Recognizer::readVendorGrammer
      ::GNOME::Speech::Recognition::Recognizer::writeVendorGrammer
      ::GNOME::Speech::Recognition::Recognizer::readVendorResult
      ::GNOME::Speech::Recognition::Recognizer::writeVendorResult

      ::GNOME::Speech::Recognition::SpeakerManager::readVendorSpeakerProfile
      ::GNOME::Speech::Recognition::SpeakerManager::writeVendorSpeakerProfile

    * Created "typedef string GrammarURL" in GNOME_Speech_Recognition.idl

    * Created "typedef string SpeechURL" in GNOME_Speech_Synthesis.idl

    * Replaced occurances of CosNaming::NamingContextExt::URLString with:

      GrammarURL:

      ::GNOME::Speech::Recognition::GrammarSyntaxDetail::init 
      ::GNOME::Speech::Recognition::Recognizer::loadJSGFFromURL
      ::GNOME::Speech::Recognition::Recognizer::loadJSGFFromURLWithImports 

      SpeechURL:

      ::GNOME::Speech::Synthesis::Synthesizer::speakTextFromURL

    * Removed spurious </A> and </CODE> tags from comments in the IDL files.

    * Changed ::GNOME::Speech::Recognition::Recognizer

      loadJSGFFromReader(in Bonobo::Stream JSGF)

      to:

      loadJSGFFromStream(in InputStream JSGF)

2003-04-08  Rich Burridge <rich.burridge@sun.com>

    * Adjusted ChangeLog to the preferred Gnu style.

    * Added in various missing files: AUTHORS, COPYING, INSTALL, Makefile.am
      NEWS, README, acconfig.h, autogen.sh, configure.in and files in the
      gnome-sppech and idl sub-directories.

    * "make" now does enough to generate the .c and .h files from the IDL
      files and compile them.

    * The NEW_LINE definition in GNOME_Speech_Recognition.idl needed to be
      "\\n" not "\n" (the latter generated code which didn't compile).

2002-12-17  Rich Burridge <rich.burridge@sun.com>

    * Added in gtk-doc style comments for all the interfaces in
      GNOME_Speech_Recognition.idl. These are based on the equivalent JSAPI
      comments.

    * In GNOME_Speech_Recognition.idl, adjusted the first parameter on the
      loadJSGFFromURL and loadJSGFFromURLWithImports methods in the Recognizer 
      interface to be called "urlContext" rather than "url".

2002-12-13  Rich Burridge <rich.burridge@sun.com>

    * Added in gtk-doc style comments for all the interfaces in 
      GNOME_Speech_Synthesis.idl. These are based on the equivalent JSAPI 
      comments.

    * Added in the following missing method to: 
      ::GNOME::Speech::Synthesis::SynthesizerQueueItem :

        void
        initWithSourceAndText(
            in Bonobo::Unknown source,
            in string text,
            in boolean plainText,
            ::GNOME::Speech::Synthesis::SpeakableListener listener);

    * Changed ::GNOME::Speech::Synthesis::Synthesizer

        void
        speakText(in string text,
                  in ::GNOME::Speech::Synthesis::SpeakableListener listener)
            raises (::GNOME::Speech::Synthesis::JSMLException,
                    ::GNOME::Speech::EngineStateError);

      to:

        void
        speakJSMLText(in string JSMLText,
                  in ::GNOME::Speech::Synthesis::SpeakableListener listener)
            raises (::GNOME::Speech::Synthesis::JSMLException,
                    ::GNOME::Speech::EngineStateError);

      to avoid confusion with the speakPlainText method.

    * Added in the following missing method to:
      ::GNOME::Speech::Recognition::GrammarSyntaxDetail

        void
        init(in string grammarName,
             in CosNaming::NamingContextExt::URLString grammarLocation,
             in string ruleName,
             in ::GNOME::Speech::Recognition::RuleName importName,
             in long lineNumber,
             in long charNumber,
             in string message)

    * Added in the following missing method to: 
      ::GNOME::Speech::Recognition::RuleName

        boolean
        isLegalRuleNameFromName(in string name);

2002-12-10  Rich Burridge <rich.burridge@sun.com>

    * Added in gtk-doc style comments for all the interfaces in 
      GNOME_Speech.idl. These are based on the equivalent JSAPI comments. 
      For now, I've removed the HTML tags and the Java specific examples. 
      The TODO file contains a list of things that still need to be 
      determined.

    * Added in the following method to: ::GNOME::Speech::Word :

        void
        initWithDetails(in string writtenForm,
                        in string spokenForm,
                        in StringArray pron,
                        in long long cat);

      This method is defined in the JSAPI Word.java file, but not in the HTML
      generated JavaDoc for some reason.

2002-12-06  Rich Burridge <rich.burridge@sun.com>

    * Added:

        string
        getMessage();

      to GNOME::Speech::ExceptionValue and GNOME::Speech::ErrorValue and 
      removed the equivalent read-only attributes.

    * The current IDL didn't include the raising of the following 
      interface / method / exceptions:
 
      ::GNOME::Speech
      ---------------
      EngineCentral createEngineList SecurityException 
      EngineCreate createEngine IllegalArgumentException 
      EngineCreate createEngine SecurityException 
      Central createRecognizer IllegalArgumentException
      Central createRecognizer SecurityException
      Central availableRecognizers SecurityException
      Central createSynthesizer IllegalArgumentException
      Central availableSynthesizers SecurityException
      VocabManager removeWord IllegalArgumentException
      VocabManager removeWords IllegalArgumentException
      Engine waitEngineState IllegalArgumentException
      Engine testEngineState IllegalArgumentException
      Engine allocate EngineStateError
      Engine deallocate EngineStateError
      Engine pause EngineStateError
      Engine resume EngineStateError
      Engine getVocabManager EngineStateError
      Engine getEngineModeDesc SecurityException

      ::GNOME::Speech::Recognition
      ----------------------------
      Grammar setActivationMode IllegalArgumentException
      Result getBestTokens IllegalArgumentException
      FinalResult isTrainingInfoAvailable ResultStateError
      FinalResult releaseTrainingInfo ResultStateError
      FinalResult tokenCorrection IllegalArgumentException
      FinalResult tokenCorrection ResultStateError
      FinalResult isAudioAvailable ResultStateError
      FinalResult releaseAudio ResultStateError
      FinalResult getAudio ResultStateError
      FinalResult getAudioForToken IllegalArgumentException
      FinalResult getAudioForToken ResultStateError
      FinalDictationResult getAlternativeTokens IllegalArgumentException
      FinalDictationResult getAlternativeTokens ResultStateError
      RuleAlternatives initWithSubRuleAndWeightArray IllegalArgumentException
      RuleAlternatives setWeights IllegalArgumentException
      RuleName initFromComponents IllegalArgumentException
      RuleName setRuleNameWithComponents IllegalArgumentException
      RuleGrammar setRule NullPointerException
      RuleGrammar setRule IllegalArgumentException
      RuleGrammar isRulePublic IllegalArgumentException
      RuleGrammar deleteRule IllegalArgumentException
      RuleGrammar setEnabledForRule IllegalArgumentException
      RuleGrammar setEnabledForRuleArray IllegalArgumentException
      RuleGrammar isEnabledWithRuleName IllegalArgumentException
      RuleGrammar removeImport IllegalArgumentException
      FinalRuleResult getNumberGuesses ResultStateError
      FinalRuleResult getAlternativeTokens ResultStateError
      FinalRuleResult getRuleGrammar ResultStateError
      FinalRuleResult getRuleName ResultStateError
      FinalRuleResult getTags ResultStateError
      Recognizer newRuleGrammar IllegalArgumentException
      Recognizer newRuleGrammar EngineStateError
      Recognizer loadJSGFFromReader EngineStateError
      Recognizer loadJSGFFromURL EngineStateError
      Recognizer loadJSGFFromURLWithImports EngineStateError
      Recognizer getRuleGrammar EngineStateError
      Recognizer listRuleGrammars EngineStateError
      Recognizer deleteRuleGrammar IllegalArgumentException
      Recognizer deleteRuleGrammar EngineStateError
      Recognizer getDictationGrammar EngineStateError
      Recognizer commitChanges EngineStateError
      Recognizer suspend EngineStateError
      Recognizer forceFinalize EngineStateError
      Recognizer requestFocus EngineStateError
      Recognizer releaseFocus EngineStateError
      Recognizer getSpeakerManager SecurityException
      Recognizer readVendorGrammar EngineStateError
      Recognizer writeVendorGrammar EngineStateError
      Recognizer readVendorResult EngineStateError
      Recognizer writeVendorResult ResultStateError
      Recognizer writeVendorResult EngineStateError
      SpeakerProfile setId IllegalArgumentException
      SpeakerManager setCurrentSpeaker IllegalArgumentException
      SpeakerManager newSpeakerProfile IllegalArgumentException
      SpeakerManager deleteSpeaker IllegalArgumentException
      RecognizerModeDesc getSpeakerProfiles SecurityException

      ::GNOME::Speech::Synthesizer
      ----------------------------
      Synthesizer speakText EngineStateError
      Synthesizer speakTextFromURL EngineStateError
      Synthesizer speakSpeakable EngineStateError
      Synthesizer speakPlainText EngineStateError
      Synthesizer phoneme EngineStateError
      Synthesizer cancel EngineStateError
      Synthesizer cancelItem EngineStateError
      Synthesizer cancelAll EngineStateError

    Added in the following exceptions to GNOME_Speech.idl to cover this: 
 
      exception 
      NullPointerException { 
 
          ExceptionValue value; 
 
      }; 

      exception 
      SecurityException { 
 
          ExceptionValue value; 
 
      }; 
 
      Occurances of IllegalArgumentException were changed to Bonobo::BadArg

    * GNOME::Speech::AudioListener
      GNOME::Speech::EngineListener

      now extend Bonobo::Listener rather than Bonobo::Unknown

    * Changed ::GNOME::Speech::Recognition::setRuleNameWithComponent to
      setRuleNameWithComponents.

    * Changed ::GNOME::Speech::Recognition::initFromPackage to
      initFromComponents for consistency.

2002-12-05  Rich Burridge <rich.burridge@sun.com>

    * Added in all the methods that the "rmic -idl" conversion didn't 
      automatically include.

      These were:

      ::GNOME::Speech::SpeechEvent 

        int 
        getId();

        string 
        toString();

      ::GNOME::Speech::EngineModeDesc

        void
        initWithLocale(in string locale);

        void
        initWithNameAndState(in string engineName,
                             in string modeName,
                             in string locale,
                             in Boolean running);

      ::GNOME::Speech::EngineEvent

        long 
        getNewEngineState(); 

        long 
        getOldEngineState(); 

      ::GNOME::Speech::EngineErrorEvent

        string 
        getEngineError(); 

      ::GNOME::Speech::Recognition::GrammarExceptionValue

        GrammarSyntaxDetailArray 
        getDetails();

        void 
        setDetails(in GrammarSyntaxDetailArray details);

      ::GNOME::Speech::Recognition::GrammarEvent 

        boolean
        getDefinitionChanged(); 
 
        boolean 
        getEnabledChanged();
 
        ::GNOME::Speech::Recognition::GrammarExceptionValue 
        getGrammarExceptionValue(); 

      ::GNOME::Speech::Recognition::RuleAlternatives

        RuleArray
        getRules(); 
 
        FloatArray
        getWeights(); 
 
        void 
        setRules(in RuleArray rules); 
 
        void 
        setWeights(in FloatArray weights);

      ::GNOME::Speech::Recognition::RuleCount

        long
        getCount();

        void
        setCount(in long count);

        ::GNOME::Speech::Recognition::Rule
        getRule();
 
        void
        setRule(in ::GNOME::Speech::Recognition::Rule rule);


      ::GNOME::Speech::Recognition::RuleName

        string
        getFullGrammarName();

        string
        getPackageName();

        string
        getRuleName();

        string
        getSimpleGrammarName();

        string
        getSimpleRuleName();

        void
        setRuleName(in string ruleName);

      ::GNOME::Speech::Recognition::RuleParse

        ::GNOME::Speech::Recognition::RuleName
        getRuleName();

        ::GNOME::Speech::Recognition::Rule
        getRule();
 
        StringArray 
        getTags(); 

        void 
        setRuleName(in ::GNOME::Speech::Recognition::RuleName ruleName); 

        void
        setRule(in ::GNOME::Speech::Recognition::Rule rule); 

      ::GNOME::Speech::Recognition::RuleSequence

        RuleArray
        getRules();
 
        void
        setRules(in RuleArray rules); 

      ::GNOME::Speech::Recognition::RuleTag

        ::GNOME::Speech::Recognition::Rule 
        getRule();
 
        string 
        getTag();
 
        void 
        setRule(in ::GNOME::Speech::Recognition::Rule rule);
 
        void 
        setTag(in string tag);

      ::GNOME::Speech::Recognition::RuleToken

        string 
        getText(); 

        void 
        setText(in string text); 

      ::GNOME::Speech::Recognition::ResultEvent

        boolean 
        isTokenFinalized();
 
        boolean 
        isUnfinalizedTokensChanged();

      ::GNOME::Speech::Recognition::RecognizerAudioEvent

        float
        getAudioLevel();
 
      ::GNOME::Speech::Recognition::RecognizerEvent

        ::GNOME::Speech::Recognition::GrammarExceptionValue   
        getGrammarExceptionValue();

      ::GNOME::Speech::Recognition::RecognizerModeDesc

        void
        initWithLocaleAndDictationSupported(
            in string locale,
            in ::GNOME::Speech::Boolean dictationGrammarSupported);
 
        void
        initWithNameAndStateAndDictationSupported(
            in string engineName,
            in string modeName,
            in string locale,
            in Boolean running,
            in ::GNOME::Speech::Boolean dictationGrammarSupported,
            in SpeakerProfileArray profiles);

      ::GNOME::Speech::Synthesizer::SpeakableEvent

        long 
        getMarkerType();
 
        string 
        getText();
 
        long 
        getWordEnd();
 
        long 
        getWordStart();

      ::GNOME::Speech::Synthesizer::Voice  

        void
        initWithVoiceInfo(in string name,
                          in long gender,
                          in long age,
                          in string style);

      ::GNOME::Speech::Synthesizer::SynthesizerEvent

        string 
        getTopOfQueueChanged();

      ::GNOME::Speech::Synthesizer::SynthesizerModeDesc

        void
        initWithNameAndStateAndVoices(in string engineName,
                                      in string modeName,
                                      in string locale,
                                      in Boolean running,
                                      in VoiceArray voices);

      Note that most of these were defined as (readonly) attributes in the IDL,
      but I explicitly added the get/set methods in, and remove the attributes.

      These were:

      ::GNOME::Speech::SpeechEvent

        readonly attribute long id;

      ::GNOME::Speech::EngineEvent

        readonly attribute long long newEngineState;
        readonly attribute long long oldEngineState;

      ::GNOME::Speech::EngineErrorEvent

        readonly attribute string problem;

      ::GNOME::Speech::Recognition::GrammarExceptionValue

        attribute GrammarSyntaxDetailArray details;

      ::GNOME::Speech::Recognition::GrammarEvent

        readonly attribute boolean definitionChanged;
        readonly attribute boolean enabledChanged;
        readonly attribute ::GNOME::Speech::Recognition::GrammarExceptionValue 
                               grammarExceptionValue;

      ::GNOME::Speech::Recognition::RuleAlternatives

        attribute RuleArray rules;
        attribute FloatArray weights;

      ::GNOME::Speech::Recognition::RuleCount

        attribute long count;
        attribute ::GNOME::Speech::Recognition::Rule rule;

      ::GNOME::Speech::Recognition::RuleName

        readonly attribute string fullGrammarName;
        readonly attribute string packageName;
        attribute string ruleName_;
        readonly attribute string simpleGrammarName;
        readonly attribute string simpleRuleName;
        readonly attribute boolean legalRuleName;

      ::GNOME::Speech::Recognition::RuleParse

        attribute ::GNOME::Speech::Recognition::Rule rule;
        attribute ::GNOME::Speech::Recognition::RuleName ruleName;
        readonly attribute StringArray tags;

      ::GNOME::Speech::Recognition::RuleSequence

        attribute RuleArray rules;

      ::GNOME::Speech::Recognition::RuleTag

        attribute ::GNOME::Speech::Recognition::Rule rule;
        attribute string tag;

      ::GNOME::Speech::Recognition::RuleToken

        attribute string text;

      ::GNOME::Speech::Recognition::ResultEvent

        readonly attribute boolean tokenFinalized;
        readonly attribute boolean unfinalizedTokensChanged;

      ::GNOME::Speech::Recognition::RecognizerAudioEvent  

        readonly attribute float audioLevel;

      ::GNOME::Speech::Recognition::RecognizerEvent

        readonly attribute 
        ::GNOME::Speech::Recognition::GrammarExceptionValue 
        grammarExceptionValue;

      ::GNOME::Speech::Synthesizer::SpeakableEvent

        readonly attribute long markerType;
        readonly attribute string text;
        readonly attribute long wordEnd;
        readonly attribute long wordStart;

      ::GNOME::Speech::Synthesizer::SynthesizerEvent

        readonly attribute boolean topOfQueueChanged;

    * Changed the ::GNOME::Speech::Recognition::RuleGrammar 
      isEnabled__CORBA_WStringValue method to:

        boolean
        isEnabledWithRuleName(in string ruleName);

    * Changed the previous ::GNOME::Speech::Recognition::RuleName
      setRuleName method to:

        void
        setRuleNameWithComponent(in string packageName,
                                 in string simpleGrammarName,
                                 in string simpleRuleName);

2002-12-03  Rich Burridge <rich.burridge@sun.com>

    * Adjusted the initWithState method in the 
      GNOME::Speech::Recognition::GrammarEvent interface to look like:

         initWithState(in ::GNOME::Speech::Recognition::Grammar source,
                       in long id,
                       in boolean enabledChanged,
                       in boolean definitionChanged,
                       in ::GNOME::Speech::Recognition::GrammarExceptionValue
                          grammarExceptionValue);

      The last parameter (::GNOME::Speech::Recognition::GrammarException) 
      was an exception, and it isn't valid IDL to use an exception at a 
      method parameter.

      There were a couple read-only attributes where a similar change was 
      needed.  With these changes, orbit-idl-2 can now compile the IDL files.

    * Adjusted use of ::java::awt::Component to Bonobo::ControlFrame

      These were in:

      ::GNOME::Speech::EngineProperties getControlComponent();
      ::GNOME::Speech::Recognition::SpeakerManager getControlComponent();

    * Adjusted use of ::java::beans::PropertyChangeListener to Bonobo::Listener

      These were in:

      ::GNOME::Speech::EngineProperties addPropertyChangeListener
      ::GNOME::Speech::EngineProperties removePropertyChangeListener

    * Adjusted use of ::java::beans::PropertyVetoException to Bonobo::BadArg

      These were in:

      ::GNOME::Speech::Recognition::RecognizerProperties setCompleteTimeout
      ::GNOME::Speech::Recognition::RecognizerProperties setConfidenceLevel
      ::GNOME::Speech::Recognition::RecognizerProperties setIncompleteTimeout
      ::GNOME::Speech::Recognition::RecognizerProperties setNumResultAlternatives
      ::GNOME::Speech::Recognition::RecognizerProperties setResultAudioProvided
      ::GNOME::Speech::Recognition::RecognizerProperties setSensitivity
      ::GNOME::Speech::Recognition::RecognizerProperties setSpeedVsAccuracy
      ::GNOME::Speech::Recognition::RecognizerProperties setTrainingProvided

      ::GNOME::Speech::Synthesizer::SynthesizerProperties setPitch
      ::GNOME::Speech::Synthesizer::SynthesizerProperties setPitchRange
      ::GNOME::Speech::Synthesizer::SynthesizerProperties setSpeakingRate
      ::GNOME::Speech::Synthesizer::SynthesizerProperties setVoice
      ::GNOME::Speech::Synthesizer::SynthesizerProperties setVolume

    * Adjusted use of ::java::io::InputStream to Bonobo::Stream

      Note that Bonobo doesn't differentiate between input and output streams.
      This shouldn't be a problem as the uses of InputStream were all as
      method input parameters.

      These were in:

      ::GNOME::Speech::Recognition::Recognizer readVendorGrammar
      ::GNOME::Speech::Recognition::Recognizer readVendorResult
      ::GNOME::Speech::Recognition::SpeakerManager readVendorSpeakerProfile

    * Adjusted use of ::java::io::OutputStream to Bonobo::Stream
  
      Note that Bonobo doesn't differentiate between input and output streams.
      This shouldn't be a problem as the uses of OutputStream were all as
      method input parameters.
 
      These were in:

      ::GNOME::Speech::Recognition::Recognizer writeVendorGrammar
      ::GNOME::Speech::Recognition::Recognizer writeVendorResult
      ::GNOME::Speech::Recognition::SpeakerManager writeVendorSpeakerProfile

    * Adjusted use of ::java::io::Reader to Bonobo::Stream
  
      Note that Bonobo doesn't differentiate between input and output streams,
      or, as in this case, a character stream. This shouldn't be a problem as 
      the one use of Reader was as a method input parameter.
  
      This was in:
 
      ::GNOME::Speech::Recognition::Recognizer loadJSGFFromReader

    * Adjusted use of ::java::io::IOException to Bonobo::IOError

      These were in:

      ::GNOME::Speech::Recognition::Recognizer loadJSGFFromReader
      ::GNOME::Speech::Recognition::Recognizer loadJSGFFromURL
      ::GNOME::Speech::Recognition::Recognizer loadJSGFFromURLWithImports
      ::GNOME::Speech::Recognition::Recognizer readVendorGrammar
      ::GNOME::Speech::Recognition::Recognizer readVendorResult
      ::GNOME::Speech::Recognition::Recognizer writeVendorGrammar
      ::GNOME::Speech::Recognition::Recognizer writeVendorResult

      ::GNOME::Speech::Recognition::SpeakerManager readVendorSpeakerProfile
      ::GNOME::Speech::Recognition::SpeakerManager writeVendorSpeakerProfile

      ::GNOME::Speech::Synthesizer::Synthesizer speakTextFromURL

    * Fixed up use of ::java::lang::InterruptedException. Created a new
      InterruptedException exception in GNOME_Speech.idl. Adjusted the 
      ::GNOME::Speech::Recognition::Engine waitEngineState method to use 
      this new exception.

    * Fixed up use of ::java::util::EventObject.

      Adjusted definition of ::GNOME::Speech:SpeechEvent to:

        interface SpeechEvent : Bonobo::Unknown {
            ..
        };

      and added a:

        Bonobo::Unknown
        getSource();

      method.

    * Adjusted use of ::java::net::URL to 
      CosNaming::NamingContextExt::URLString and 
      ::java::net::MalformedURLException to 
      CosNaming::NamingContextExt::InvalidAddress

      These were in:

      ::GNOME::Speech::Recognition::Recognizer loadJSGFFromURL
      ::GNOME::Speech::Recognition::Recognizer loadJSGFFromURLWithImports

      ::GNOME::Speech::Synthesizer::Synthesizer speakTextFromURL

      This now means that the GNOME_Speech_Defs.idl IDL file in no longer 
      needed, and there are no Java specific dependancies.

2002-11-22  Rich Burridge <rich.burridge@sun.com>

    * Adjusted all remaining occurances of ::java::lang::Object to
      Bonobo::Unknown

    * Added a read-only string attribute called "message" to the
      GNOME::Speech::ExceptionValue interface. This will be a longer
      description of the cause of the exception.

      Similar change to the GNOME::Speech::ErrorValue interface.

      Similar change to the GNOME::Speech::Recognition::GrammarSyntaxDetail
      interface.

    * Removed the SpeechPermission interface in GNOME_Speech.idl. This was 
      only needed for security in the Java sandbox.

    * Removed the:

        ::java::util::Enumeration
        enumerateQueue();

      method in the Synthesizer interface in GNOME_Speech_Synthesis.idl. This
      method would be very ineffiecient in a CORBA client/server scenerio, and 
      there are other ways of achieving the same thing.

    * Added an AudioClip interface to the GNOME::Speech::Recognition module 
      with the following methods:

        void
        loop();

        void
        play();

        void
        stop();

    * Added a Boolean enum to the GNOME::Speech module, with three values:

      IS_TRUE, IS_FALSE, DONT_CARE

      Adjusted all occurrances of java.lang.Boolean to use this enum.

    * Adjusted the EngineErrorEvent interface in the GNOME::Speech module to
      have a readonly attribute called "problem", rather than a 
      java.lang.Throwable. 

      Added a:

          void
          initWithError(in ::GNOME::Speech::Engine source,
                        in long id,
                        in string error,
                        in long long oldEngineState,
                        in long long newEngineState);

      method to the interface to allow this value to be initially set.

    * Adjusted occurances of java::util::Locale in GNOME::Speech to use a
      string to hold the locale value.

    * Added the following typedef to the GNOME::Speech module:

        typedef sequence<::GNOME::Speech::EngineModeDesc> EngineListArray;

    * Adjusted the EngineList interface to be derived from Bonobo::Unknown
      and added a new method to return the Engine list:

        EngineListArray
        getEngineList();

    * Added the following typedef to the GNOME::Speech module:

        typedef sequence<::GNOME::Speech::Recognition::Grammar> GrammarArray;

      Adjusted the loadJSGFFromURLWithImports method in the Recognizer 
      interface in the GNOME::Speech::Recognition module to use this new 
      sequence, for the loadedGrammars parameter.

    * Tried compiling the IDL. Had to make the following changes because of
      compile time errors:

      - Didn't like "TRUE" and "FALSE" as two of the values in the Boolean enum.
        Changed to "IS_TRUE" and "IS_FALSE".
      - Conflict of initWithId methods in SpeechEvent and AudioEvent. Changed
        the latter to be called initWithEngineAndId.
      - Conflict of init methods in SpeechEvent and EngineEvent. Changed the
        latter to be called initWithEngineAndState.
      - Conflict of init methods in SpeechEvent and EngineErrorEvent. Changed 
        the latter to initWithErrorDesc.
      - The GrammarExceptionValue interface in the GNOME::Speech::Recognition
        module now needs to be derived from ExceptionValue, not 
        SpeechEceptionValue.
      - Conflict of init methods in ExceptionValue and GrammarExceptionValue.
        Changed the latter to initWithDetails.
      - Removed the readonly string attribute from the GrammarExceptionValue
        interface. There is already one in the ExceptionValue interface.
      - Conflict of init methods in SpeechEvent and GrammarEvent. Changed the
        latter to initWithGrammarAndId.
      - Conflict of init methods in SpeechEvent and ResultEvent. Changed the 
        latter to initWithResultAndId.
      - Conflict of init methods in AudioEvent and RecognizerAudioEvent. 
        Changed the latter to initWithRecognizerAndId.

2002-11-06  Rich Burridge <rich.burridge@sun.com>

    * Added a "Proposed Solution" section for most of the Java specific classes
      that still remain.

2002-11-05  Rich Burridge <rich.burridge@sun.com>

    * Adjusted the form of the base exception definition to:

        interface
        ExceptionValue : Bonobo::Unknown {

            void
            init(in string s);

        };

        exception
        SpeechException {
 
            ExceptionValue value;
 
        };  

    * Fleshed out the TODO file with a list of all places where Java specific
      classes are still used.

2002-11-04  Rich Burridge <rich.burridge@sun.com>

    * Removed all methods that were Java constructors with no parameters.
      GNOME IDL assumes that all objects already exist (created with 
      g_object_new for example), so these don't make sense.

    * There still needs to be a way to initialise objects with what would have 
      been Java constructors with one or more parameters. These methods are now 
      called init(). If there is more that one method per interface like this, 
      the second and subsequent have appropriate names to distinguish them. 
      For example:

        void
        init(string s);

        void
        init(string s, int id);

      Note that if there is a similar method in a peer interface then an 
      attempt is made to keep init method names the same.
 
    * Fixed up occurances of method over-loading using unique method names. 
      These were:

      GNOME_Speech_Recognition.idl:
        DictationGrammar:

        void
        setContext(in string preceding,
                   in string following);

        void
        setContextFromArray(in StringArray preceding,
                            in StringArray following);

      GNOME_Speech_Recognition.idl:
        FinalResult:

        ::java::applet::AudioClip
        getAudio();
 
        ::java::applet::AudioClip
        getAudioForToken(
            in ::GNOME::Speech::Recognition::ResultToken fromToken,
            in ::GNOME::Speech::Recognition::ResultToken toToken);

      GNOME_Speech_Recognition.idl:
        RuleGrammar:

        ::GNOME::Speech::Recognition::RuleParse
        parse(in string text,
              in string ruleName)
            raises (::GNOME::Speech::Recognition::GrammarException);

        ::GNOME::Speech::Recognition::RuleParse
        parseNthBest(
            in ::GNOME::Speech::Recognition::FinalRuleResult finalRuleResult,
            in long nBest,
            in string ruleName)
            raises (::GNOME::Speech::Recognition::GrammarException);
         
        ::GNOME::Speech::Recognition::RuleParse
        parseTokenSequence(
            in StringArray tokens,
            in string ruleName)
            raises (::GNOME::Speech::Recognition::GrammarException);

        void
        setEnabledForRule(in string ruleName,
                          in boolean enabled);
 
        void
        setEnabledForRuleArray(in StringArray ruleNames,
                               in boolean enabled);

      GNOME_Speech_Recognition.idl:
        Recognizer:

        ::GNOME::Speech::Recognition::RuleGrammar
        loadJSGFFromReader(in ::java::io::Reader JSGF)
            raises (::GNOME::Speech::Recognition::GrammarException,
                    ::java::io::IOException);

        ::GNOME::Speech::Recognition::RuleGrammar
        loadJSGFFromURL(
            in ::java::net::URL url,
            in string grammarName)
            raises (::GNOME::Speech::Recognition::GrammarException,
                    ::java::io::IOException,
                    ::java::net::MalformedURLException);

        ::GNOME::Speech::Recognition::RuleGrammar
        loadJSGFFromURLWithImports(
            in ::java::net::URL url,
            in string grammarName,
            in boolean loadImports,
            in boolean reloadGrammars,
            in ::java::util::Vector loadedGrammars)
            raises (::GNOME::Speech::Recognition::GrammarException,
                    ::java::io::IOException,
                    ::java::net::MalformedURLException);

      GNOME_Speech_Synthesis.idl:
        Synthesis:

        void
        cancel();
 
        void
        cancelItem(in ::java::lang::Object_ source);

        void
        speakText(in string text,
                  in ::GNOME::Speech::Synthesis::SpeakableListener listener)
            raises (::GNOME::Speech::Synthesis::JSMLException);
 
        void
        speakTextFromURL(in ::java::net::URL JSMLurl,
                     in ::GNOME::Speech::Synthesis::SpeakableListener listener)
            raises (::GNOME::Speech::Synthesis::JSMLException,
                    ::java::io::IOException,
                    ::java::net::MalformedURLException);
 
        void
        speakSpeakable(
            in ::GNOME::Speech::Synthesis::Speakable JSMLtext,
            in ::GNOME::Speech::Synthesis::SpeakableListener listener)
            raises (::GNOME::Speech::Synthesis::JSMLException);

    * For interfaces that already have create methods in the interface that 
      they are subclassed from, those create methods are removed.

    * The "factory" keyword has been replaced with "void". This was just used
      in the equivalent of the Java constructors (which are now init methods).

    * All "private" declarations have been removed.

    * All "abstract" keywords have been removed.

    * Occurances of the typedef "String" will be replaced by the basic type
      "string".

    * Removed all Java style Adapters. They don't make sense in IDL. These are:

      GNOME_Speech.idl:
        AudioAdapter 
        EngineAdapter 

      GNOME_Speech_Recognition.idl:
        GrammarAdapter 
        RecognizerAdapter
        RecognizerAudioAdapter
        ResultAdapter

      GNOME_Speech_Synthesis.idl:
        SpeakableAdapter
        SynthesizerAdapter

2002-10-24  Rich Burridge <rich.burridge@sun.com>

    * Added much more detail to the items in the TODO file. Forwarded to the
      gnome-speech-dev@sun.com alias for comments.

2002-10-22  Rich Burridge <rich.burridge@sun.com>

    * The four GNOME Speech IDL files can now be successfully parsed with the
      GNOME IDL compiler.

2002-10-17  Rich Burridge <rich.burridge@sun.com>

    * Created a GNOME_Speech_Defs.idl file containing all the other 
      definitions used by the three main GNOME Speech IDL files.

    * Created the following typedefs in GNOME_Speech.idl and adjusted the code
      accordingly:

        typedef string String;
        typedef sequence<String> StringArray;
        typedef sequence<::GNOME::Speech::Word> WordArray;

    * Created the following typedefs in GNOME_Speech_Recognition.idl and 
      adjusted the code accordingly:

        typedef string String;
        typedef sequence<String> StringArray;
        typedef sequence<float>  FloatArray;
        typedef sequence <::GNOME::Speech::Recognition::GrammarSyntaxDetail> 
                                 GrammarSyntaxDetailArray
        typedef sequence<::GNOME::Speech::Recognition::ResultToken> 
                                 ResultTokenArray;
        typedef sequence<sequence<::GNOME::Speech::Recognition::ResultToken>> 
                                 ResultTokenArray2D
        typedef sequence<::GNOME::Speech::Recognition::Rule> 
                                 RuleArray;
        typedef sequence<::GNOME::Speech::Recognition::RuleGrammar> 
                                 RuleGrammarArray;
        typedef sequence<::GNOME::Speech::Recognition::RuleName> 
                                 RuleNameArray;
        typedef sequence<::GNOME::Speech::Recognition::SpeakerProfile> 
                                 SpeakerProfileArray;

    * Created the following typedefs in GNOME_Speech_Synthesis.idl and 
      adjusted the code accordingly:

        typedef string String;
        typedef sequence<::GNOME::Speech::Synthesis::Voice> VoiceArray;

    * Changed "valuetype" to "interface" as appropriate in all IDL files.

    * Adjusted the various Java exceptions to be GNOME IDL style exceptions.

2002-10-16  Rich Burridge <rich.burridge@sun.com>

    * Merged the 83 .idl files into three:
      - GNOME_Speech.idl
      - GNOME_Speech_Recognition.idl
      - GNOME_Speech_Synthesis.idl

2002-10-15  Rich Burridge <rich.burridge@sun.com>

    * Replaced all occurances of ::CORBA::WStringValue with just "string".

    * Adjusted the base object for all .idl files to be Bonobo::Unknown

2002-10-13  Rich Burridge <rich.burridge@sun.com>

    * Adjusted the .idl files to separate each method signature, and generally
      make things more readable.

2002-10-11  Rich Burridge <rich.burridge@sun.com>

    * Starting fixing up the generated .idl files to me GNOME-like. 
      Changes include:
      - adjusting the #ifndef / #define lines.
      - adjusting the #include lines for the GNOME_Speech_... includes.
      - adjusting the ::javax::speech::... declarations.
      - removed the #pragma ID lines.
      - replaced arg0/arg1/... arguments with the equivalent names to the 
        Java code.

2002-10-10  Rich Burridge <rich.burridge@sun.com>

    * Using "rmic -idl <classnames>", converted the JSAPI implementation
      that comes with FreeTTS (.../FreeTTS/lib/jsapi.jar) to IDL files.

      Adjusted the:

      .../javax/speech/
      .../javax/speech/recognition/
      .../javax/speech/synthesis/

      .idl files from a hierarchical namespace to a flat one that GNOME uses.
      83 files placed in the idl subdirectory.
