/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. 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 3 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, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ ////////////////////////////////////////////// // // pyJournalBook - Python wrapper for the new journal book API // /////////////////////////////////////////////// #include "pyJournalBook.h" #include "../pfJournalBook/pfJournalBook.h" #include "cyAnimation.h" #include "pyColor.h" #include "pyImage.h" #include "hsResMgr.h" #include "../pnKeyedObject/plUoid.h" UInt32 pyJournalBook::fNextKeyID = 0; void pyJournalBook::IMakeNewKey( void ) { char name[ 128 ]; sprintf( name, "pyJournalBook-%d", fNextKeyID++ ); hsgResMgr::ResMgr()->NewKey( name, fBook, plLocation::kGlobalFixedLoc ); fBook->GetKey()->RefObject(); } pyJournalBook::pyJournalBook() { fBook = nil; } pyJournalBook::pyJournalBook( const char *esHTMLSource ) { fBook = TRACKED_NEW pfJournalBook( esHTMLSource ); IMakeNewKey(); } pyJournalBook::pyJournalBook( std::wstring esHTMLSource ) { fBook = TRACKED_NEW pfJournalBook( esHTMLSource.c_str() ); IMakeNewKey(); } pyJournalBook::pyJournalBook( const char *esHTMLSource, pyImage &coverImage, pyKey callbackKey ) { fBook = TRACKED_NEW pfJournalBook( esHTMLSource, coverImage.GetKey(), callbackKey.getKey(), callbackKey.getKey() != nil ? callbackKey.getKey()->GetUoid().GetLocation() : plLocation::kGlobalFixedLoc ); IMakeNewKey(); } pyJournalBook::pyJournalBook( std::wstring esHTMLSource, pyImage &coverImage, pyKey callbackKey ) { fBook = TRACKED_NEW pfJournalBook( esHTMLSource.c_str(), coverImage.GetKey(), callbackKey.getKey(), callbackKey.getKey() != nil ? callbackKey.getKey()->GetUoid().GetLocation() : plLocation::kGlobalFixedLoc ); IMakeNewKey(); } pyJournalBook::pyJournalBook( const char *esHTMLSource, pyImage &coverImage, pyKey callbackKey, const char *guiName ) { fBook = TRACKED_NEW pfJournalBook( esHTMLSource, coverImage.GetKey(), callbackKey.getKey(), callbackKey.getKey() != nil ? callbackKey.getKey()->GetUoid().GetLocation() : plLocation::kGlobalFixedLoc, guiName ); IMakeNewKey(); } pyJournalBook::pyJournalBook( std::wstring esHTMLSource, pyImage &coverImage, pyKey callbackKey, const char *guiName ) { fBook = TRACKED_NEW pfJournalBook( esHTMLSource.c_str(), coverImage.GetKey(), callbackKey.getKey(), callbackKey.getKey() != nil ? callbackKey.getKey()->GetUoid().GetLocation() : plLocation::kGlobalFixedLoc, guiName ); IMakeNewKey(); } pyJournalBook::pyJournalBook( const char *esHTMLSource, pyKey callbackKey ) { fBook = TRACKED_NEW pfJournalBook( esHTMLSource, nil, callbackKey.getKey(), callbackKey.getKey() != nil ? callbackKey.getKey()->GetUoid().GetLocation() : plLocation::kGlobalFixedLoc ); IMakeNewKey(); } pyJournalBook::pyJournalBook( std::wstring esHTMLSource, pyKey callbackKey ) { fBook = TRACKED_NEW pfJournalBook( esHTMLSource.c_str(), nil, callbackKey.getKey(), callbackKey.getKey() != nil ? callbackKey.getKey()->GetUoid().GetLocation() : plLocation::kGlobalFixedLoc ); IMakeNewKey(); } pyJournalBook::~pyJournalBook() { if( fBook != nil ) { fBook->GetKey()->UnRefObject(); fBook = nil; } } void pyJournalBook::MakeBook(std::string esHTMLSource, plKey coverImageKey /* = nil */, plKey callbackKey /* = nil */, std::string guiName /* = "" */) { if (fBook) fBook->GetKey()->UnRefObject(); plLocation loc = plLocation::kGlobalFixedLoc; if (callbackKey != nil) loc = callbackKey->GetUoid().GetLocation(); fBook = TRACKED_NEW pfJournalBook(esHTMLSource.c_str(), coverImageKey, callbackKey, loc, guiName.c_str()); IMakeNewKey(); } void pyJournalBook::MakeBook(std::wstring esHTMLSource, plKey coverImageKey /* = nil */, plKey callbackKey /* = nil */, std::string guiName /* = "" */) { if (fBook) fBook->GetKey()->UnRefObject(); plLocation loc = plLocation::kGlobalFixedLoc; if (callbackKey != nil) loc = callbackKey->GetUoid().GetLocation(); fBook = TRACKED_NEW pfJournalBook(esHTMLSource.c_str(), coverImageKey, callbackKey, loc, guiName.c_str()); IMakeNewKey(); } void pyJournalBook::Show( hsBool startOpened ) { if( fBook != nil ) fBook->Show( startOpened ); } void pyJournalBook::Hide( void ) { if( fBook != nil ) fBook->Hide(); } void pyJournalBook::Open( UInt32 startingPage ) { if( fBook != nil ) fBook->Open( startingPage ); } void pyJournalBook::Close( void ) { if( fBook != nil ) fBook->Close(); } void pyJournalBook::CloseAndHide( void ) { if( fBook != nil ) fBook->CloseAndHide(); } void pyJournalBook::NextPage( void ) { if( fBook != nil ) fBook->NextPage(); } void pyJournalBook::PreviousPage( void ) { if( fBook != nil ) fBook->PreviousPage(); } void pyJournalBook::GoToPage( UInt32 page ) { if( fBook != nil ) fBook->GoToPage( page ); } void pyJournalBook::SetSize( hsScalar width, hsScalar height ) { if( fBook != nil ) fBook->SetBookSize( width, height ); } UInt32 pyJournalBook::GetCurrentPage( void ) const { if( fBook != nil ) return fBook->GetCurrentPage(); return 0; } void pyJournalBook::SetPageMargin( UInt32 margin ) { if( fBook != nil ) fBook->SetPageMargin( margin ); } void pyJournalBook::AllowPageTurning( bool allow ) { if( fBook != nil ) fBook->AllowPageTurning(allow); } void pyJournalBook::SetGUI( const char *guiName ) { if (fBook != nil) fBook->SetGUI(guiName); } void pyJournalBook::LoadGUI( const char *guiName ) { pfJournalBook::LoadGUI(guiName); } void pyJournalBook::UnloadGUI( const char *guiName ) { pfJournalBook::UnloadGUI(guiName); } void pyJournalBook::UnloadAllGUIs() { pfJournalBook::UnloadAllGUIs(); } PyObject *pyJournalBook::GetMovie(UInt8 index) { if (fBook != nil) { plKey movie = fBook->GetMovie(index); if (movie == plKey(nil)) PYTHON_RETURN_NONE; PyObject* key = pyKey::New(movie); PyObject* animObj = cyAnimation::New(); cyAnimation* anim = cyAnimation::ConvertFrom(animObj); // points to internal object anim->AddRecvr(*(pyKey::ConvertFrom(key))); Py_DECREF(key); return animObj; } PYTHON_RETURN_NONE; } void pyJournalBook::SetEditable( hsBool editable ) { if (fBook != nil) fBook->SetEditable(editable); } std::string pyJournalBook::GetEditableText( void ) const { if (fBook != nil) return fBook->GetEditableText(); return ""; } void pyJournalBook::SetEditableText( std::string text ) { if (fBook != nil) fBook->SetEditableText(text); }