diff options
Diffstat (limited to 'automation/source/server/server.cxx')
-rw-r--r-- | automation/source/server/server.cxx | 889 |
1 files changed, 0 insertions, 889 deletions
diff --git a/automation/source/server/server.cxx b/automation/source/server/server.cxx deleted file mode 100644 index 0fdafedd4..000000000 --- a/automation/source/server/server.cxx +++ /dev/null @@ -1,889 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_automation.hxx" - -// do not use Application Idle but AutoTimer instead -#define TIMERIDLE - -#include <vcl/timer.hxx> -#include <vcl/wrkwin.hxx> -#include <osl/diagnose.h> -#include <osl/mutex.hxx> -#include <osl/socket.hxx> - -#include <vcl/dialog.hxx> -#include <tools/stream.hxx> -#include <tools/config.hxx> - -#include <svtools/ttprops.hxx> -#include <basic/ttstrhlp.hxx> -#include <svl/stritem.hxx> -#include <svtools/stringtransfer.hxx> -#include <vcl/sound.hxx> -#include "testtool.hrc" -#include <vcl/bitmap.hxx> -// Hat keinen Includeschutz -#include <svtools/svtdata.hxx> -#include <rtl/textenc.h> -#include <rtl/uri.h> -#include <rtl/uri.hxx> -#include "statemnt.hxx" -#include "scmdstrm.hxx" -#include "rcontrol.hxx" -#include "server.hxx" -#include "testtool.hxx" -#include "automation/automation.hxx" -#include "recorder.hxx" - -#include "basic/svtmsg.hrc" - -#ifdef DBG_UTIL -void TestToolDebugPrint( const sal_Char *pString ) -{ - if ( !DbgFilterMessage( pString ) ) - StatementList::DirectLog( S_AssertError, UniString( pString, RTL_TEXTENCODING_UTF8 ) ); -} -void SAL_CALL osl_TestToolDebugPrint( const sal_Char *pString ) -{ - TestToolDebugPrint( pString ); -} -#endif - - -sal_uLong RemoteControlCommunicationManager::nPortIs = TT_PORT_NOT_INITIALIZED; -sal_uInt16 RemoteControlCommunicationManager::nComm = 0; -sal_Bool RemoteControlCommunicationManager::bQuiet = sal_False; - -#if OSL_DEBUG_LEVEL > 1 -RemoteControlCommunicationManager::RemoteControlCommunicationManager( EditWindow * pDbgWin ) -#else -RemoteControlCommunicationManager::RemoteControlCommunicationManager() -#endif -: CommunicationManagerServerViaSocket( GetPort(), 1, sal_True ) -#if OSL_DEBUG_LEVEL > 1 -, m_pDbgWin( pDbgWin ) -#endif -, pTimer( NULL ) -{ - bIsPortValid = ( GetPort() != 0 ); - if ( bQuiet ) - { - SetInfoType( CM_NO_TEXT ); - } - else - { - SetInfoType( CM_SHORT_TEXT | CM_ALL ); - ByteString aByteString; - InfoMsg( InfoString( aByteString, CM_ALL ) ); // Anzeigen, da� wir da sind - } -} - -RemoteControlCommunicationManager::~RemoteControlCommunicationManager() -{ - if ( pTimer ) - delete pTimer; - DoQuickShutdown(); -} - -void RemoteControlCommunicationManager::ConnectionOpened( CommunicationLink* pCL ) -{ - StatementFlow::pCommLink = pCL; - CommunicationManagerServerViaSocket::ConnectionOpened( pCL ); -} - - -void RemoteControlCommunicationManager::ConnectionClosed( CommunicationLink* pCL ) -{ - StatementFlow::pCommLink = NULL; - CommunicationManagerServerViaSocket::ConnectionClosed( pCL ); -} - - -IMPL_LINK( RemoteControlCommunicationManager, SetWinCaption, Timer*, EMPTYARG ) -{ - if ( pTimer ) - { - delete pTimer; - pTimer = NULL; - } - - if ( StatementList::GetFirstDocFrame() ) - { - if ( !aOriginalWinCaption.Len() ) - aOriginalWinCaption = StatementList::GetFirstDocFrame()->GetText(); - StatementList::GetFirstDocFrame()->SetText(String(aOriginalWinCaption).AppendAscii(" TT").Append(aAdditionalWinCaption).AppendAscii("[").Append(UniString::CreateFromInt32(nPortToListen)).AppendAscii("]")); - } - else - { // Dann Probieren wir es eben in 1 Sekunde nochmal - pTimer = new Timer(); // Wird im Link gel�scht - pTimer->SetTimeout( 1000 ); - pTimer->SetTimeoutHdl( LINK( this, RemoteControlCommunicationManager, SetWinCaption ) ); - pTimer->Start(); - } - return 0; -} - -void RemoteControlCommunicationManager::InfoMsg( InfoString aMsg ) -{ - if ( !bIsPortValid ) - return; - aAdditionalWinCaption = UniString( aMsg, RTL_TEXTENCODING_ASCII_US ); - SetWinCaption(); -#if OSL_DEBUG_LEVEL > 1 - m_pDbgWin->AddText( UniString( (ByteString)aMsg, RTL_TEXTENCODING_ASCII_US ) ); - m_pDbgWin->AddText( "\n" ); -#endif -} - -sal_uLong RemoteControlCommunicationManager::GetPort() -{ - if ( TT_PORT_NOT_INITIALIZED == nPortIs ) - { // Read Config - - sal_uInt16 i; - // are we to be automated at all? - sal_Bool bAutomate = sal_False; - for ( i = 0 ; i < Application::GetCommandLineParamCount() ; i++ ) - { - if ( Application::GetCommandLineParam( i ).EqualsIgnoreCaseAscii("/enableautomation") - || Application::GetCommandLineParam( i ).EqualsIgnoreCaseAscii("-enableautomation")) - { - bAutomate = sal_True; - break; - } - } - -// if started within Portal determin location of testtool.ini/rc by analysing the commandline -// /userid:demo1[/export/home/user/demo1] -// -userid:demo1[/export/home/user/demo1] - String aIniFileDir; - for ( i = 0 ; i < Application::GetCommandLineParamCount() ; i++ ) - { - if ( Application::GetCommandLineParam( i ).Copy(0,8).EqualsIgnoreCaseAscii("/userid:") - || Application::GetCommandLineParam( i ).Copy(0,8).EqualsIgnoreCaseAscii("-userid:") ) - { - rtl::OUString aEncHome - = Application::GetCommandLineParam(i).GetBuffer(); - - rtl::OUString aDecHome = rtl::Uri::decode(aEncHome, - rtl_UriDecodeWithCharset, - RTL_TEXTENCODING_UTF8); - - aIniFileDir = aDecHome; - aIniFileDir.Erase( 0, aIniFileDir.Search('[')+1 ); - aIniFileDir.Erase( aIniFileDir.Search(']') ); - } - } - - if ( ! aIniFileDir.Len() ) - aIniFileDir = Config::GetDefDirectory(); - - Config aConf(Config::GetConfigName( aIniFileDir, CUniString("testtool") )); - aConf.SetGroup("Communication"); - - ByteString aNoTesttoolKey( ByteString("Exclude_").Append( ByteString( Application::GetAppFileName(), RTL_TEXTENCODING_UTF8 ) ) ); -// -notesttool - for ( i = 0 ; i < Application::GetCommandLineParamCount() ; i++ ) - { - if ( Application::GetCommandLineParam( i ).CompareIgnoreCaseToAscii("-notesttool") == COMPARE_EQUAL ) - aConf.WriteKey( aNoTesttoolKey, "something" ); - } - - nPortIs = aConf.ReadKey("TTPort","0").ToInt32(); - - // noch pr�fen ob dieses Office getestet werden soll. - if ( !bAutomate || aConf.ReadKey( aNoTesttoolKey, "" ) != "" ) - nPortIs = 0; - - nComm = (sal_uInt16)aConf.ReadKey("Comm","0").ToInt32(); - if ( nComm ) - aConf.DeleteKey("Comm"); - - bQuiet = ( aConf.ReadKey("Quiet","no").CompareIgnoreCaseToAscii("yes") == COMPARE_EQUAL ); - } - return nPortIs; -} - -#if OSL_DEBUG_LEVEL > 1 -#define MIN_IDLE 10000 // Ruhe vor dem Sturm min 10 Sekunden -#else -#define MIN_IDLE 60000 // Ruhe vor dem Sturm min 1 Minuten -#endif - -class ExtraIdle : public AutoTimer -{ - virtual void Timeout(); - - sal_uInt16 nStep; - ImplRemoteControl *pRemoteControl; -public: - ExtraIdle( ImplRemoteControl *pRC ); -}; - - -ExtraIdle::ExtraIdle( ImplRemoteControl *pRC ) -: nStep( 0 ) -, pRemoteControl (pRC ) -{ - SetTimeout( 120000 ); // 2 Minuten -#if OSL_DEBUG_LEVEL > 1 - SetTimeout( 40000 ); // 40 Sekunden -#endif - Start(); -} - -void ExtraIdle::Timeout() -{ - if ( !StatementList::pTTProperties ) - StatementList::pTTProperties = new TTProperties(); - - if ( !StatementList::pTTProperties->GetSlots() ) - { - delete this; - return; - } - - // M�ssen wir selbst idlen? -#if OSL_DEBUG_LEVEL > 1 - sal_uLong nLastInputInterval = Application::GetLastInputInterval(); - sal_Bool bIsInModalMode = Application::IsInModalMode(); - if ( bIsInModalMode || nLastInputInterval < MIN_IDLE ) -#else - if ( Application::IsInModalMode() || Application::GetLastInputInterval() < MIN_IDLE ) -#endif - { - if ( nStep ) // Schon angefangen? dann abbrechen, sonst sp�ter nochmal - { - if ( nStep < 15 ) - { - Sound::Beep(); - Sound::Beep(); - } -#if OSL_DEBUG_LEVEL < 2 - delete this; -#endif - } -#if OSL_DEBUG_LEVEL > 1 - if ( nStep < 15 ) - { - Sound::Beep(); - Sound::Beep(); - } -#endif - return; - } - - if ( StatementList::pFirst ) // Verarbeitung neu aufsetzen - { - GetpApp()->PostUserEvent( LINK( pRemoteControl, ImplRemoteControl, CommandHdl ) ); - return; - } - - - switch ( nStep++ ) // Probieren ob wir noch was machen k�nnen - { - case 0: - { - SfxPoolItem *pItem = new SfxStringItem((sal_uInt16)StatementList::pTTProperties->nSidNewDocDirect, CUniString("swriter/web") ); - new StatementSlot( StatementList::pTTProperties->nSidNewDocDirect, pItem ); - SetTimeout(30000); - return; - } - case 1: - { - new StatementSlot( StatementList::pTTProperties->nSidSourceView ); -#if OSL_DEBUG_LEVEL > 1 - SetTimeout(7000); -#else - SetTimeout(1500); -#endif - return; - } - case 2: - { - new StatementSlot( StatementList::pTTProperties->nSidSelectAll ); - return; - } - case 3: - { - -#ifdef TT_NO_DECRYPT - String aStr = - "" - ; - -#else - ByteString aStr = - "\n" - "VRQJ`ob\n" - "YEZO\n" - "ob\n" - "UmRo`\n" - "5J~O2o5+90~5,6xW$+5:c9o0UXRm`Y UQ~JP~X]`Y\\|%Y`Yo]~O||2[pP0Y1J,|V),,7:,+|JS+U*[/O|K\n" - "|KaLYNV~]]2W/]*Y9|`*Y,P=[5P|U\n" - "]}mqbw`zZU\\L\n" - "LZdYWo9\n" - "/J\n" - "U~[QoZ\n" - "Rqd~V\n" - ",)1~00\n" - "\n" - ")0~*2=\n" - "++2\\5&K|~5n9r~9/*9<*~051*Q|0~0rY|~./97~Q*7,Z9<|KY0:=K*<=w~qY`IbOKzLwN,`7b,V~]E`]b\\ORE~\n" - "\n" - "Vq~bR`W;a+Y\\J=LKJa+W*I/PbR~JLUX[|b~`Z2P/R*[9a~W=9~/9p8=a*P=J0OZ~7L`JbL=P<WbaLQbPO]JYKbD\n" - "aY`J5J:b~7=2~+9)9W1,50b9X3P0`YbYVJ`Jb \\`Z]`Vb\n" - "VRQJ`b" - ; -#endif - - for ( sal_uInt16 i = 0 ; i < aStr.Len() ; i++ ) - { - if ( aStr.GetChar(i) < 32 || aStr.GetChar(i) > 126 ) - { - // do nothing - } - else - { - aStr.SetChar( i, aStr.GetChar(i) - 32 ); - aStr.SetChar( i, 126 - aStr.GetChar(i) ); - } - - if ( i > (aStr.Len() / 2) && (i&1) ) - { - sal_Char c = aStr.GetChar(i); - aStr.SetChar( i, aStr.GetChar(aStr.Len()-i-1) ); - aStr.SetChar( aStr.Len()-i-1, c ); - } - } - - ::svt::OStringTransfer::CopyString( UniString( aStr, RTL_TEXTENCODING_ASCII_US ), StatementList::GetFirstDocFrame() ); - - new StatementSlot( StatementList::pTTProperties->nSidPaste ); - return; - } - case 4: - { - new StatementSlot( StatementList::pTTProperties->nSidSourceView ); - return; - } - case 5: - { - new StatementSlot( StatementList::pTTProperties->nSidSelectAll ); - new StatementSlot( StatementList::pTTProperties->nSidCopy ); - new StatementSlot( StatementList::pTTProperties->nSidPaste ); - return; - } - case 6: - { - ByteString aTr("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"); - ByteString aData = -"P-S-0U04Fihixh00l0004b0b300-PS0g30428333y243q334j44426a6a65576c8k97aJecf7feccedg2inj3ghlshde5krk+lno" -"PpqpBfjsgusp1unp-po-PS0gm044x465e6b6L6boygeg-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo-ooo" -"-ooo-ooo-oo-1M04020Y30J0o080B040R040M-N0M700l010l000k000000000006000N011I112r222M-N0gJ40D000U001R011" -"0110500vr0001014p148mcg1R4koV18s95cwkAE2V8gImM5kgQY9WcosCw22I556p669I99aoaadrddd6eeeNghhIhhiriik6lll" -"NlmmImoprppp6qqqNsttItturuuw6xxxNxyyHyAA6BBBNBCCHCEE6FFFNFGGHGII6JJJNJKKHKMM6NNNNNOOHOQQ6RRRNRSSCSUU" -"NUVVIVVWpWWYIYYZrZZZ6+++M-N0Q700R000l000l000g00000006000N011I112r222M-N0kJ40C0003110d1110110r00t6000" -"Q041l18cF14gtk1ous48Acw295gAlEIMv28cxkY5FosQE2595dU9sY56q669N9aaCaddNdeeIeghrhhh6iiiNkllIllmrmmo6ppp" -"NpqqIqstrttt6uuuIwwxrxxx6yyyIAABrBBB6CCCIEEFrFFF6GGGIIIJrJJJ6KKKIMMNrNNN6OOOIQQRrRRR6SSSIUUVrVVV6WWW" -"IYYZrZZZ6+++U-S0d3009004Q040Of0TPU5QGjFCdPoji85WiqEopkCag321kP8dW4yO4KRlNi9iwzeTKup+Yk0lrdcicCEeLtVQ" -"z1IFeROmSJBa7VYMYY-0EWGkJWH6LpAVdrUepM7ScEpkTBkenX3YGuoFVU0IGk+dSzPpv0N6U07eTPFgid-YtvOD2ws5C96qDgIL" -"vhsoWmBPAozc+KgPjiVuW0TJnrt6PqF63p2VJEJ6A+l33JqESWh0G4yn1JkcaaEBnw17xmaf0q4BGkVy40Jj+FAyioG3KEukCtP1" -"OAdOe4ASVCPuUrQDFsqBoRWN6jqxOBfH-30WbgyZy+HtyI6xNVvt3M0lnfscjA8rBUeoRXifTPCceY6t46AR9ooG2jVzdmo+PQ6R" -"cAEDd7VE3GvUyDJzn2e0yyzypEdnCzUZorT029pk4LHJYsRQmR5smaW9EuCbt2A2s2Nd9ZKAkcJSWoTGPV5p6d1PZCiYt6kVETBB" -"K7zNWhRK7kMBCag7zELQ2e6HWHM+BwO4nJA-30uF2a2WgcgndWuk6gPbha0D5WFPq902KmjNwyg5xkVQvgd9W9SCfiFd95Ndh9yj" -"Odd7k38da3xWqtwcHPOEb7AvIPqAdRbz3XNNEYFu7bS9Iz-0UVQJc-gtgPCQ7cledmoGTULsGpjeu0TzkJi2tusMDnR4cisDw2rz" -"Vhs36hPC0oSH7V-UMAjVIC3dRFwNoc20a0+Culnm3q9QQJsgt00IeEoRXCh3jUg3eO8yGBOpFwYap5OrpoAfMeR6Q8L0sUIgI7B3" -"Oy9q5WMBAxg5PYnBSxZlywhwDlb45Il6Y+F-NaH62MEoByaq02d2aaEz5Bwx45DqfEC4ACqd4FYjI9IbAgqH7uFopm+JQRSHrSNd" -"ct0dwNo+FAUaD926b3wtUoRIPJ-MTLLiQcC92bTBue9RkDqqYRcXxn06S9Jm6Qhpk9IjH8JLyIinJj3EAF7bTH9jkf170OvzuO2j" -"I2jenHhQvnKoDSHSmWenEhfEHkVgekpfIOhkBhqLVaEvb83EyfD2Awrbk5+lwyvOne6yBA36rdrmna4xFOsvqGxRcgcJy-lXnjCn" -"eeWhGvqAbmSf7LcDwqykK9jqADpRqkXSq7MB7ZOHSgJhNitiw3i6y9LYjRNlq4Lc-00zCNL3CThC65Ajjlw8550bAbqa0d0Jz3BT" -"kH6EDgQhRUhjtyK9y9CjraNEw9ERUq6MmYa989nsRqsPxo+zi2IbOfxy9q3lFL-QSWn5qwp7nTFUwVe-XaDxnGfWOIYXXfIkILs-" -"lWPSm51tjj967w11u-YylxUO++EfuLsmr1c3jLdgcDYmK9roIAmz1t1vAalje3oyXDp335xkQ24rS1JhdokOn5cWpizqiE5bsbg4" -"4gWkfJ2IEVnSoWmj8eNeAFuoT0wzWWm9UgmDKRH2INGJy6OHTwn7zawsiPo796yQd6OsPORlTrUR-bEMLPj8nZdMwyX-Jb8npd2-" -"zV9JMRdNarUy1aF0tiihB0o+kQh5iy9r9BMqhPjf+WckJ9WWqmSQTEqAl+zwgw-+vH5WomSNVjbDLchO9Ae-ggdQGPcb+7Dq0X-d" -"XsFHj76-a0eUqKlN6cgHMKgKSmv8xcMVnCIPAnqR0SsThTWe8GSgo3pTGWTgBrtb1X2OfHMHsi8D3gkpPwKvoxoEuSJcTmD2kiAS" -"Pk3wl5C5NZDe9OrZMdDg6VQpDybXJ7EWLCdwsPoTGqhcGOGvrJ2WgFuuem+wP1ZGhkpee9rU7CTad9q9DxVgNzGWk+lGid6rKswa" -"1+Uc57RmFASpo3qbaGvuMReTLCWXsocM6lvXmSZHAhhaaV7EHH9sJglnrUlniII4I0gVZHFLys8VKKb2yKbAYHeSY3VlmgRywmqd" -"UXugq90wSsh0poya0qEAF9CjjadQumckue1unyK1sdcUwyxQOcARlHjLWYd3lS2ozCTQ48zZXesU66bAUfTdoXoOInm7MpPgwiDp" -"XDqJrEMEChxb747KzIHfxSdi++EwdRNK7RHEmgVhqiZkW1WqBEnjst6Oz08ztIPVknfPjq8NDB4h9g1sD+l1xQNzHNg+Jb1Vmii6" -"1dP-57LPdOhlWSTKYaCmzwAhGqyOlPrY9zXZodpZuoL2kjTBLBxaeGcM+NONZcN7GqIqFcNlhVgMXKHsd-WEBBR957ZZn7hk-mbb" -"FGxWLzaiHE6t48mXupNDlxi6d1w-yaPlmczA0gTsEhqRrsEbj48ProNvyivlaY06bdYSvGN7IOBc1ezBJiFd5OTz+RbzIsqJpCsJ" -"BOTSLjAdwXCzq-XExGbygb3X2oURVXxTB4q0e6euBRnXkIJuTM7SfQfQkdEEjN7J56t3oxP6B0cA4lgSDhURzsDzrkk0ECxfwaU3" -"ovagJuvzx07aksPdxkQ8aqEy618F-4wjCr3hZq8gq3gu7RJ4ovXa86R7ZskSYJC01o2OpfvJh0WqpYiIuE0zBqpI3kTJQZ0Or5ku" -"9RzhbzbV1AU0BzJ5vPTOBRIOIAiJiBiOdI8fR3dcWle3xCder+W6QELyr6NaldJipQCeAMwRr5mpzZESGAhuU3BDdkCh5ENgMUE-" -"sWotoCfnOwT7tJlXLHODk8K7Z4zYCG9Dh2fQazDE0JqBDruomfatotGADn25BCDpk6GI6SSftpUd71Qr1JBrgOr33aWswl983Uk7" -"cq9Em7vGtACekHlvOOVJfbdh76nNHzuQ1Z1oBvuU9l-dAg+-QWWFQ18D8U+zmYn1jypyarIXSrcIb67wLDTFXWm8F9XPmFWRBD3d" -"WukVJwhGNV5ZHVE1wCudY07ZIEAd1kgzgPcRSxFhRhFpXsnESjJhUNCA3DlrARwzz+llg0xpVHrJiddYT36P453qxpOmIE9e6-qJ" -"h4ipfTTt8f2Kq4mdWniErPtI+wrN-edvCQFtPdrL+tpV6EpPRXgmHnjRhV0eWWzqxdRZacX98CME3pvwDYWkO8TOUlcNQSKTU1iF" -"FC9WIBA8PulsCFVNH1qJwZxYYcaX6CGNnR7vHiIBDsTE51J4b4fYucNYFG9V5mCUdrJT57tHk9eghSOfgeHZDxuvQt8619pwKma7" -"3Nl00EFklZOk+APRmKviL+iyiG1sWfA3E0xUPznlQgvsHJRzD9u0TzHsB6tIMKLmOxvVHG9knpHerjAXNqIp7jwZzvYXIyW8kw8g" -"3ycECFaB2Y2U0l00NE7l2Aca2y5uhk+QJygN0857SQMVSEXjy+Q84nQjkTh1GAtFACtdHRhwQ6FhQMLjFu6zyxuFycbQA7qNSsiy" -"90wlAaUBBtFhxMV0TPd8DbVScjJoMSAYMh6GhAHnKOZsbdqvwtHKdZWZ9HQbdmVOt0xnnK5Ju9KfwhuHMZIoPt73BqspII6qBobB" -"5kfcwm183j4fwapcs50EoGgz2UZGuK88agfskePeYt9DOQD3qxxfuJ5lZUFHa8aqFJIT6MG2Kwtwuu0zBqTz8x5DYM7PDh29F9FU" -"1ge-wqqIMqmXlpbO65sila1be1yRGABAbw2njF5txZEAaqEyEo9FUPqnKQ4y1NQqSXkCpsqpO06UUCyBBzaDjawwoHkKOT1-zqpz" -"FU7JNudONE3fuYk83U9thALoAIeG6FKizOLgU4AcDcszCmGZgylUI-Edd9mAKL9nJe+YdiYxl7uX4mATdO30KcuDrRoTxBbiHbuA" -"qlorQn1D0opRuIhzVLm8+z8QRFlNA0683M1QYE+Lhka+kaIDvE8RHQHel4bOsMFp6lmV6D3cNhQvpG1sECm02a5tgF52reEBaYEw" -"OhD+RQiFedTm3OQg5iq2c04kidOoDgaPNGs1VitbrhIvAuzStaWksap3jp9UrAN1O-0nAECIfSP0QHVkGWtduz6XSmJ7MsLPmPJ3" -"hRjY7DtZXWjvtHcj9ooAXcPsI+3YgG951n7urnyB1kbQV+ZdlAbI11Y3orBMB+le8goi66fWyEX9FHpFEL32jNqSghzvyEC1227-" -"p5t8vx19mYHbOghy5K7voWUAXsjX2gwzicmKiNJR9OrHppAbVEVzVjOuYWmwCpGWFW1DlaoOc03PWkgqvVeezQY8IiM9Rptnniwf" -"Xa1XnMPo6ES0MHE5nwC8tT65VVw3C2peCu720i6oVvevcoMGeP3PVgvBkudifs0GNH7AaOGVFhrbE68B8sq6AH8BFvXhZfzdhb1f" -"Y1p-GVyr3qECy393zFEq0wHg2Vls4OiVD-J0d7JFKsuhUPgdykTCWhbqkdvwUUyg7qXPvdeC09AUAszRcVsk5iihIr1+N-0ATkGU" -"i6GPwTlzw-dALNmjbVjHOSAsWaihe303RxAmD4akSPWkjgtot17BTZfaSgaNH+ESoUGJ3GgPJqD8UBsAShIF-X0wwyFpDkTwESHg" -"jNwUF9EpszCwj1myzqZG9hIp76G1ymz7BuZF0T5pdA1GMG8AGuRbXEtJMkHsDJoztG06Jqm-khFPydXg-VB1k+l9AMwzzvtCDacK" -"k22WU1fByYcDpmW0Y9YF-zeZDDcQJVF8tT8cNNjt9GdIF3103ZFP8oulWCfnXETCKz3YQFsm3qOUu6GJ-lb2foo1WJqGpcCbyPmy" -"Ib95rQLJnk56YC1KmN5zMJ831cVsERyvdPOSW8kg-2uk8m3J4zgAWAhvvBOofIjFb5yNf0shVv-JJ9f49ZFcQ+LKDFKX3iNV1E-G" -"MxeEwbi-uGP8BGO4vGgV0IFbgswumfhk14OF3q+1qwRFpq4hr1s6zQEAgoVAW3QE4tsQpYW3JkcqDcnSOjbePZeFrFMor-o3UG2F" -"jmw8667eXk3UiM9vq5EpyrbQxexsJ3tKy7w6lGsumfMWIlcSglkLUzicysuPgqT5Wuzn8MkGvTYve2UyunErUnD-+Qwr0rDo1tOG" -"bbtcNNeFInx5rDK3DHahjTON3d3oTpePxioVK3sRLDh185yKMzTQv812ADCFcwvFHbetPF41f7kot00O2OMUkw4OPvuTRkhdAhgd" -"il2SM9bunNaNHqh9Ov8Qv3SKEl1O-BwzjYF0VWjkxycswQFqQotUPw+Q-6FrCPFWvaF2CP2F319stMfD-8bHsd87KZfQ9ChereG4" -"Z8XP8dNMipn-evkOVVFqfgN16dO8Ya9nqGFIpIW1Ljv7wOAzdZFsm5C1EuQoKzwyXDO0BDjceBsyTt40H0upG8D1N1ZP66OPIeQy" -"oXQwI63e+NnuYA0687-d6N6rDscj+VHn2R0RUXQFZ2+EANqcqvan4y0Erpl01fAfmLaI8pmOgsRUDvuF5e9YnWNhxtSzS4fsjj1J" -"1EIGpcw0WfiaOul1s19ZIECoLBx-#S"; - - - SvMemoryStream aStream; - xub_StrLen c; - xub_StrLen cRest = 0; - - xub_StrLen nIndex; - for ( nIndex = 0 ; nIndex < aData.Len() ; nIndex++ ) - { - if ( ( nIndex & 3 ) == 0 ) - { - cRest = aData.GetChar( nIndex ); - cRest = aTr.Search( (sal_Char)cRest ); - } - else - { - c = aData.GetChar( nIndex ); - c = aTr.Search( (sal_Char)c ); - - c <<= 2; - c |= ( ( cRest & 0x30 ) >> 4 ); - cRest <<= 2; - - aStream << sal_Char(c); - } - } - - aStream.Seek(0); - { - ::svt::OStringTransfer::CopyString( CUniString("\nSorry! no bitmap"), StatementList::GetFirstDocFrame() ); - } - - new StatementSlot( StatementList::pTTProperties->nSidPaste ); - return; - } - case 7: - { - new StatementSlot( 20384 ); // FN_TOOL_ANKER_CHAR aus SW? - return; - } - } - - // Wir sind am Ende - -#if OSL_DEBUG_LEVEL < 2 - delete this; -#endif -} - -IMPL_LINK( ImplRemoteControl, IdleHdl, Application*, EMPTYARG ) -{ - if( StatementList::pFirst ) - { - #if OSL_DEBUG_LEVEL > 1 - m_pDbgWin->AddText( "* " ); - #endif - GetpApp()->PostUserEvent( LINK( this, ImplRemoteControl, CommandHdl ) ); - } - return 0; -} - - - -IMPL_LINK( ImplRemoteControl, CommandHdl, Application*, EMPTYARG ) -{ -#if OSL_DEBUG_LEVEL > 1 - m_pDbgWin->AddText( "Entering CommandHdl\n" ); -#endif - - if ( StatementList::MaybeResetSafeReschedule() ) - { - StatementList::bExecuting = sal_False; // Wird nacher im SafeReschedule wieder zur�ckgesetzt -#if OSL_DEBUG_LEVEL > 1 - m_pDbgWin->AddText( "SafeReschedule has been reset\n" ); -#endif - } - - if ( ( StatementList::bReadingCommands && !StatementList::bDying ) || - ( StatementList::bExecuting ) || - ( StatementList::IsInReschedule() ) ) - { -#if OSL_DEBUG_LEVEL > 1 - if ( StatementList::bReadingCommands ) - m_pDbgWin->AddText( "Reading Commands " ); - if ( StatementList::bExecuting ) - m_pDbgWin->AddText( "In Execute " ); - if ( StatementList::IsInReschedule() ) - { - m_pDbgWin->AddText( "In Reschedule FocusWindow: 0x" ); - m_pDbgWin->AddText( - String::CreateFromInt64( - sal::static_int_cast< sal_Int64 >( - reinterpret_cast< sal_IntPtr >(GetpApp()->GetFocusWindow())), - 16 )); - m_pDbgWin->AddText( " " ); - } - m_pDbgWin->AddText( "Leaving CommandHdl\n" ); -#endif - return 0; // Garnicht erst irgendwelchen bl�dsinn machen - } - - while( StatementList::pFirst && ( !StatementList::bReadingCommands || StatementList::bDying ) ) - // Schleift hier bis Befehl nicht zur�ckkommt, - // Wird dann rekursiv �ber IdleHdl und PostUserEvent aufgerufen. - { - m_bInsideExecutionLoop = sal_True; -#ifdef TIMERIDLE - m_aIdleTimer.Stop(); - m_aIdleTimer.Start(); -#endif - StatementList *pC = StatementList::pFirst; - - if ( !StatementList::bCatchGPF ) - { - if (!pC->CheckWindowWait() || !pC->Execute()) - { -#if OSL_DEBUG_LEVEL > 1 - m_pDbgWin->AddText( "Leaving CommandHdl\n" ); -#endif - return 0; // So dass die App nochmal �ne chance bekommt - } - } - else - { - try - { - if (!pC->CheckWindowWait() || !pC->Execute()) - { -#if OSL_DEBUG_LEVEL > 1 - m_pDbgWin->AddText( "Leaving CommandHdl\n" ); -#endif - return 0; // So dass die App nochmal �ne chance bekommt - } - } - catch( ... ) - { - if ( !StatementFlow::bUseIPC ) - throw; // aus der Hilfe heraus nicht leise abbrechen - - try - { - ModelessDialog *pDlg = new ModelessDialog(NULL); - pDlg->SetOutputSizePixel(Size(150,0)); - pDlg->SetText( String ( TTProperties::GetSvtResId( TT_GPF ) ) ); - pDlg->Show(); - OSL_FAIL("GPF"); - pC->ReportError( GEN_RES_STR0( S_GPF_ABORT ) ); - StatementList::bDying = sal_True; - while ( StatementList::pFirst ) // Kommandos werden �bersprungen - StatementList::NormalReschedule(); - delete pDlg; - } - catch ( ... ) - { - Application::Quit(); - } - Application::Quit(); - } - } - - m_bInsideExecutionLoop = sal_False; - } - - StatementList::aWindowWaitUId = rtl::OString(); // Warten r�cksetzen, da handler sowieso verlassen wird - -#if OSL_DEBUG_LEVEL > 1 - m_pDbgWin->AddText( "Leaving CommandHdl\n" ); -#endif - return 0; -} - -IMPL_LINK( ImplRemoteControl, QueCommandsEvent, CommunicationLink*, pCL ) -{ - SvStream *pTemp = pCL->GetServiceData(); - QueCommands( SI_IPCCommandBlock, pTemp ); - delete pTemp; - return 0; -} - -sal_Bool ImplRemoteControl::QueCommands( sal_uLong nServiceId, SvStream *pIn ) -{ - sal_uInt16 nId; - - if( !m_bIdleInserted ) - { -#ifdef TIMERIDLE - m_aIdleTimer.SetTimeoutHdl( LINK( this, ImplRemoteControl, IdleHdl ) ); - m_aIdleTimer.SetTimeout( 500 ); - m_aIdleTimer.Start(); -#else - GetpApp()->InsertIdleHdl( LINK( this, ImplRemoteControl, IdleHdl ), 1 ); -#endif - m_bIdleInserted = sal_True; - } - - - StatementList::bReadingCommands = sal_True; - -#if OSL_DEBUG_LEVEL > 1 - if (!m_pDbgWin->bQuiet) - m_pDbgWin->Show(); - m_pDbgWin->AddText( "Reading " ); - m_pDbgWin->AddText( String::CreateFromInt64( nServiceId ) ); - m_pDbgWin->AddText( " :\n" ); -#endif - - if( nServiceId != SI_IPCCommandBlock && nServiceId != SI_DirectCommandBlock ) - { - OSL_TRACE( "Ungültiger Request :%i", (int)nServiceId ); - return sal_False; - } - - SCmdStream *pCmdStream = new SCmdStream(pIn); - - pCmdStream->Read( nId ); - while( !pIn->IsEof() ) - { - switch( nId ) - { - case SICommand: - { - new StatementCommand( pCmdStream ); // Wird im Konstruktor an Liste angeh�ngt - break; - } - case SIControl: - case SIStringControl: - { - new StatementControl( pCmdStream, nId ); // Wird im Konstruktor an Liste angeh�ngt - break; - } - case SISlot: - { - new StatementSlot( pCmdStream ); // Wird im Konstruktor an Liste angeh�ngt - break; - } - case SIUnoSlot: - { - new StatementUnoSlot( pCmdStream ); // Wird im Konstruktor an Liste angeh�ngt - break; - } - case SIFlow: - { - new StatementFlow( nServiceId, pCmdStream, this ); // Wird im Konstruktor an Liste angeh�ngt - break; - } - default: - OSL_TRACE( "Unbekannter Request Nr:%i", nId ); - break; - } - if( !pIn->IsEof() ) - pCmdStream->Read( nId ); - else { - OSL_FAIL( "truncated input stream" ); - } - } - - StatementList::bReadingCommands = sal_False; - - delete pCmdStream; -#if OSL_DEBUG_LEVEL > 1 - m_pDbgWin->AddText( "Done Reading " ); - m_pDbgWin->AddText( String::CreateFromInt64( nServiceId ) ); - m_pDbgWin->AddText( " :\n" ); -#endif - if ( !m_bInsideExecutionLoop ) - { -#if OSL_DEBUG_LEVEL > 1 - m_pDbgWin->AddText( "Posting Event for CommandHdl.\n" ); -#endif - - GetpApp()->PostUserEvent( LINK( this, ImplRemoteControl, CommandHdl ) ); - } - return sal_True; -} - - -SvStream* ImplRemoteControl::GetReturnStream() -{ - SvStream* pTemp = pRetStream; - pRetStream = NULL; - return pTemp; -} - -ImplRemoteControl::ImplRemoteControl() -: m_bIdleInserted( sal_False ) -, m_bInsideExecutionLoop( sal_False ) -#if OSL_DEBUG_LEVEL > 1 -, m_pDbgWin(NULL) -#endif -, pRetStream(NULL) -{ -#if OSL_DEBUG_LEVEL > 1 - if ( RemoteControlCommunicationManager::GetPort() != TT_NO_PORT_DEFINED || RemoteControlCommunicationManager::nComm ) - { - m_pDbgWin = new EditWindow( NULL, CUniString("Debug Window"), WB_VSCROLL ); - m_pDbgWin->bQuiet = sal_True; - m_pDbgWin->Hide(); - m_pDbgWin->bQuiet = sal_False; - m_pDbgWin->Show(); - - StatementList::m_pDbgWin = m_pDbgWin; - } -#endif - if ( RemoteControlCommunicationManager::GetPort() == TT_NO_PORT_DEFINED ) - pServiceMgr = NULL; - else - { -#if OSL_DEBUG_LEVEL > 1 - pServiceMgr = new RemoteControlCommunicationManager( m_pDbgWin ); -#else - pServiceMgr = new RemoteControlCommunicationManager(); -#endif - pServiceMgr->SetDataReceivedHdl( LINK( this, ImplRemoteControl, QueCommandsEvent ) ); - pServiceMgr->StartCommunication(); - -#ifdef DBG_UTIL - DbgSetPrintTestTool( TestToolDebugPrint ); - // first change it, so we get the original Pointer - StatementCommand::pOriginal_osl_DebugMessageFunc = osl_setDebugMessageFunc( osl_TestToolDebugPrint ); - if ( DbgGetErrorOut() != DBG_OUT_TESTTOOL ) - osl_setDebugMessageFunc( StatementCommand::pOriginal_osl_DebugMessageFunc ); -#endif - } - if ( RemoteControlCommunicationManager::nComm ) - new ExtraIdle( this ); // Setzt die Bearbeitung wieder auf -} - -ImplRemoteControl::~ImplRemoteControl() -{ - if ( MacroRecorder::HasMacroRecorder() ) - MacroRecorder::GetMacroRecorder()->SetActionRecord( sal_False ); // Will delete MacroRecorder if necessary - - - StatementList::bDying = sal_True; -#if OSL_DEBUG_LEVEL > 1 - if ( m_pDbgWin ) - m_pDbgWin->bQuiet = sal_True; // Keine Ausgabe mehr im Debugwindow -#endif - -#ifdef DBG_UTIL - // Zur�cksetzen, so da� nachfolgende Assertions nicht verloren gehen - DbgSetPrintTestTool( NULL ); - osl_setDebugMessageFunc( StatementCommand::pOriginal_osl_DebugMessageFunc ); -#endif - - if ( StatementList::pFirst ) - { // Es sind noch Kommandos da, also auch eine M�glichkeit zur�ckzusenden. - StatementList::pFirst->ReportError( GEN_RES_STR0( S_APP_SHUTDOWN ) ); - while ( StatementList::pFirst ) // Kommandos werden �bersprungen - StatementList::NormalReschedule(); // Fehler zur�ckgeschickt - } - - if ( pServiceMgr ) - pServiceMgr->StopCommunication(); - - if ( GetTTSettings()->pDisplayHidWin ) - { - delete (Window*)(GetTTSettings()->pDisplayHidWin); - GetTTSettings()->pDisplayHidWin = NULL; - } - if ( GetTTSettings()->pTranslateWin ) - { - delete (Window*)(GetTTSettings()->pTranslateWin); - GetTTSettings()->pTranslateWin = NULL; - } -#if OSL_DEBUG_LEVEL > 1 - delete m_pDbgWin; -#endif - if( m_bIdleInserted ) - { -#ifdef TIMERIDLE - m_aIdleTimer.Stop(); -#else - GetpApp()->RemoveIdleHdl( LINK( this, ImplRemoteControl, IdleHdl ) ); -#endif - m_bIdleInserted = sal_False; - } - delete pServiceMgr; -} - -RemoteControl::RemoteControl() -{ - pImpl = new ImplRemoteControl; -} - -RemoteControl::~RemoteControl() -{ - delete pImpl; -} - -static ::osl::Mutex aMutex; -static RemoteControl* pRemoteControl = 0; -extern "C" void CreateRemoteControl() -{ - if ( !pRemoteControl ) - { - ::osl::MutexGuard aGuard( aMutex ); - if ( !pRemoteControl ) - pRemoteControl = new RemoteControl(); - } -} - -extern "C" void DestroyRemoteControl() -{ - ::osl::MutexGuard aGuard( aMutex ); - delete pRemoteControl; - pRemoteControl = 0; -} - -extern "C" void CreateEventLogger() -{ - MacroRecorder::GetMacroRecorder()->SetActionLog(); -} - -extern "C" void DestroyEventLogger() -{ - MacroRecorder::GetMacroRecorder()->SetActionLog( sal_False ); // Will delete MacroRecorder if necessary -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |