/* -*- mode: C++; tab-width: 4; c-basic-offset: 4; -*- */ /* AbiCollab- Code to enable the modification of remote documents. * Copyright (C) 2005 by Martin Sevior * Copyright (C) 2006 by Marc Maurer * * 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., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ /*! Connect current document to a remote document */ /*bool AbiCollab_Connect(AV_View* v, EV_EditMethodCallData *d) { // Construct the Collaboration dialog XAP_DialogFactory * pDialogFactory = static_cast(XAP_App::getApp()->getDialogFactory()); AP_Dialog_Collaboration* pDialog = static_cast (pDialogFactory->requestDialog(s_CollabFactoryContainer.getDialogCollabId())); pDialog->runModal(pFrame); ... pDialogFactory->releaseDialog(pDialog); return true; }*/ /*! Disconnect the current document from a remote document */ /*bool AbiCollab_Disconnect(AV_View* v, EV_EditMethodCallData *d) { // Get the current view that the user is in. XAP_Frame *pFrame = XAP_App::getApp()->getLastFocussedFrame(); FV_View* pView = static_cast(pFrame->getCurrentView()); PD_Document * pDoc = static_cast(pFrame->getCurrentDoc()); UT_UCS4String sUCS4(d->m_pData,d->m_dataLength); UT_UTF8String sUTF8(sUCS4); AbiCollab* pCollab = s_CollabFactoryContainer.get(pDoc, sUTF8); UT_return_val_if_fail(pCollab, false); pCollab->getExport()->signal(PD_SIGNAL_DOCCLOSED); // remove the document listener if (!pDoc->removeListener(pCollab->getDocListenerId())) { UT_DEBUGMSG(("Eeeek, couldn't remove document listener!\n")); } // remove the main loop idle handler if(pCollab->getRemoteListener()) { pCollab->getRemoteListener()->stop(); delete pCollab->getRemoteListener(); pCollab->setRemoteListener(NULL); } // disconnect all connection handlers for (std::vector::const_iterator pos = pCollab->getConnections().begin(); pos != pCollab->getConnections().end(); pos++) { //AbiCollab_ConnectionHandler* handler = (*pos); //handler->disconnect(); //DELETEP(handler); } // remove the collaboration object from the global list (will delete it as well) s_CollabFactoryContainer.destroy(pDoc, sUTF8); return true; }*/ /*! * This method loads invokes AbiWord as a server to a remote document. * All the connect details are assumed to be in the call data. * This includes: * Local path-to-file to be loaded. * Name of Jabber server * Port of jabber server * username at Jabber server * password at Jabber server * name of remote user to connect. * server name of remote server to connect from * Start with the following command line.. * AbiWord-2.6 --plugin AbiCollab myServer myPort myUserName myPassword remoteUser remoteServer pathToDocument */ /*bool AbiCollab_invoke(AV_View * v, EV_EditMethodCallData * d) { UT_UTF8String sInput(d->m_pData,d->m_dataLength); // // Need to Create an AbiCollab for this document. // UT_UCS4String sUCS4(d->m_pData,d->m_dataLength); UT_UTF8String sUTF8(sUCS4); UT_DEBUGMSG(("Creating Collab with string |%s| \n",sUTF8.utf8_str())); UT_UTF8String sServer,sPort,sUsername,sPassword; UT_UTF8String * psPathName = NULL; UT_UTF8String * psRemoteServer = NULL; UT_UTF8String * psRemoteUser = NULL; bool b = s_CollabFactoryContainer.extractParams(sUTF8,sServer,sPort,sUsername,sPassword,&psRemoteServer,&psRemoteUser,&psPathName); if(!b) { UT_DEBUGMSG(("Error in command line startup! \n")); return false; } // // TODO create an AbiCollab from an existing document name. // AbiCollab* pCollab = s_CollabFactoryContainer.create(NULL, sUTF8,true,psPathName); UT_sint32 iPort = atoi(sPort.utf8_str()); // b= pCollab->createHandler(sServer,iPort,sUsername,sPassword,NULL); // if(!b) // return false; // // We only accept edits here // pCollab->setOffering(true); //pCollab->startRemoteListener(); UT_DEBUGMSG(("We are offering a collaboration!\n")); DELETEP(psPathName); DELETEP(psRemoteServer); DELETEP(psRemoteUser); // // OK block here until we get a quit // gtk_main(); return true; }*/