/*****************************************************************************/ // File: TranslationUtils.h // Class: BTranslationUtils // Reimplemented by: Michael Wilber, Translation Kit Team // Reimplementation: 2002-04 // // Description: Utility functions for the Translation Kit // // // Copyright (c) 2002 OpenBeOS Project // // Original Version: Copyright 1998, Be Incorporated, All Rights Reserved. // Copyright 1995-1997, Jon Watte // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. /*****************************************************************************/ #if !defined(_TRANSLATION_UTILS_H) #define _TRANSLATION_UTILS_H #include #include class BBitmap; class BTranslatorRoster; class BPositionIO; class BMenu; // This class is a little different from many other classes. // You don't create an instance of it; you just call its various // static member functions for utility-like operations. class BTranslationUtils { BTranslationUtils(); ~BTranslationUtils(); BTranslationUtils(const BTranslationUtils &); BTranslationUtils & operator=(const BTranslationUtils &); public: // BITMAP getters - allocate the BBitmap; you call delete on it! static BBitmap *GetBitmap(const char *kName, BTranslatorRoster *roster = NULL); // Get bitmap - first try as file name, then as B_TRANSLATOR_BITMAP // resource type from app file -- can be of any kind for which a // translator is installed (TGA, etc) static BBitmap *GetBitmap(uint32 type, int32 id, BTranslatorRoster *roster = NULL); // Get bitmap - from app resource by id static BBitmap *GetBitmap(uint32 type, const char *kName, BTranslatorRoster *roster = NULL); // Get Bitmap - from app resource by name static BBitmap *GetBitmapFile(const char *kName, BTranslatorRoster *roster = NULL); // Get bitmap - from file only static BBitmap *GetBitmap(const entry_ref *kRef, BTranslatorRoster *roster = NULL); // Get bitmap - from open file (or BMemoryIO) static BBitmap *GetBitmap(BPositionIO *stream, BTranslatorRoster *roster = NULL); // Get bitmap - from open file or IO type object // This function does the real work for the other GetBitmap functions static status_t GetStyledText(BPositionIO *fromStream, BTextView *intoView, BTranslatorRoster *roster = NULL); // For styled text, we can translate from a stream // directly into a BTextView static status_t PutStyledText(BTextView *fromView, BPositionIO *intoStream, BTranslatorRoster *roster = NULL); // Saving is slightly different -- given the BTextView, a // B_STYLED_TEXT_FORMAT stream is written to intoStream. You can then call // Translate() yourself to translate that stream into something else if // you want, if it is a temp file or a BMallocIO. It's also OK to write // the B_STYLED_TEXT_FORMAT to a file, although the StyledEdit format // (TEXT file + style attributes) is preferred. This convenience function // is only marginally part of the Translation Kit, but what the hey :-) static status_t WriteStyledEditFile(BTextView *fromView, BFile *intoFile); // Writes the styled text data from fromView to intoFile static BMessage *GetDefaultSettings(translator_id forTranslator, BTranslatorRoster *roster = NULL); // Get default settings for the translator with the id forTranslator static BMessage *GetDefaultSettings(const char *kTranslatorName, int32 translatorVersion); // Get default settings for the translator with the name kTranslatorName // Envious of that "Save As" menu in ShowImage? Well, you can have your own! // AddTranslationItems will add menu items for all translations from the // basic format you specify (B_TRANSLATOR_BITMAP, B_TRANSLATOR_TEXT etc). // The translator ID and format constant chosen will be added to the message // that is sent to you when the menu item is selected. enum { B_TRANSLATION_MENU = 'BTMN' }; static status_t AddTranslationItems(BMenu *intoMenu, uint32 fromType, const BMessage *kModel = NULL, // default B_TRANSLATION_MENU const char *kTranslatorIdName = NULL, // default "be:translator" const char *kTranslatorTypeName = NULL, // default "be:type" BTranslatorRoster *roster = NULL); }; #endif /* _TRANSLATION_UTILS_H */