diff options
Diffstat (limited to 'automation/source/testtool/cmdstrm.cxx')
-rw-r--r-- | automation/source/testtool/cmdstrm.cxx | 455 |
1 files changed, 0 insertions, 455 deletions
diff --git a/automation/source/testtool/cmdstrm.cxx b/automation/source/testtool/cmdstrm.cxx deleted file mode 100644 index ff81f4a57..000000000 --- a/automation/source/testtool/cmdstrm.cxx +++ /dev/null @@ -1,455 +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" -#include <vcl/keycod.hxx> -#include <basic/sbx.hxx> -#include <tools/stream.hxx> - -#include "cmdstrm.hxx" -#include "rcontrol.hxx" -#include "objtest.hxx" -#include "ittresid.hxx" -#include "svcommstream.hxx" -#include <basic/testtool.hrc> - -ControlDefLoad const CmdStream::arKeyCodes [] = -#include <keycodes.hxx> -CNames *CmdStream::pKeyCodes = NULL; - -ResMgr* IttResId::getIttResMgr() -{ - static ResMgr* pMgr = NULL; - if( ! pMgr ) - pMgr = CREATEVERSIONRESMGR( stt ); - return pMgr; -} - -CmdStream::CmdStream() -{ - pSammel = new SvMemoryStream(); - pCommStream = new SvCommStream( pSammel ); -} - -CmdStream::~CmdStream() -{ - delete pCommStream; - delete pSammel; -} - - -#define PUT_CHAR(ch) \ - sal_uInt16 nMCode = nModify + ch; \ - sal_uInt16 _Code = 1; \ - if ( (nMCode & 0xFF) == 0 ) \ - _Code |= 2; \ - if ( (nMCode >> 8) == 0 ) \ - _Code |= 4; \ - Result += (char) _Code; \ - Result += (char) ( nMCode & 0xFF ); \ - Result += (char) ( nMCode >> 8 ) - - -String CmdStream::WandleKeyEventString( String aKeys ) -{ - if ( !pKeyCodes ) - ReadFlatArray(arKeyCodes,pKeyCodes); - if ( !pKeyCodes ) - return aKeys; - - xub_StrLen nPos1 = 0; - while ( (nPos1 = aKeys.Search('<',nPos1)) != STRING_NOTFOUND) - { - xub_StrLen nPos2 = aKeys.Search('>',nPos1); - if ( nPos2 != STRING_NOTFOUND ) - { - String Work = aKeys.Copy(nPos1+1,nPos2-nPos1+1-2); - aKeys.Erase(nPos1,nPos2-nPos1+1); // Inclusive Spitze Klammern weg - String Result, Token; - sal_uInt16 nModify = 0; - while ( Work.Len() > 0 ) - { - Token = Work.GetToken(0,' '); - Work.Erase(0,Token.Len()+1); - ControlDef WhatName(Token,rtl::OString()); - sal_uInt16 nElement; - if (pKeyCodes->Seek_Entry(&WhatName,&nElement)) - { - // FIXME: HELPID - sal_uInt16 nCode = 0;//(sal_uInt16) pKeyCodes->GetObject(nElement)->pData->aUId.GetNum(); - if ( nCode >= KEY_SHIFT ) - nModify ^= nCode; - else - { - if ( ( nModify == 0 ) && - (((nCode & 0xFF00) == KEYGROUP_NUM) || - ((nCode & 0xFF00) == KEYGROUP_ALPHA) || - ( nCode == KEY_SPACE) || - ( nCode == KEY_ADD) || - ( nCode == KEY_SUBTRACT) || - ( nCode == KEY_MULTIPLY) || - ( nCode == KEY_DIVIDE) || - ( nCode == KEY_POINT) || - ( nCode == KEY_COMMA) || - ( nCode == KEY_LESS) || - ( nCode == KEY_GREATER) || - ( nCode == KEY_EQUAL) ) ) - { - switch ( nCode ) - { - case KEY_SPACE: Token = ' '; break; - case KEY_ADD: Token = '+'; break; - case KEY_SUBTRACT: Token = '-'; break; - case KEY_MULTIPLY: Token = '*'; break; - case KEY_DIVIDE: Token = '/'; break; - case KEY_POINT: Token = '.'; break; - case KEY_COMMA: Token = ','; break; - case KEY_LESS: Token = '<'; break; - case KEY_GREATER: Token = '>'; break; - case KEY_EQUAL: Token = '='; break; - default: -// if ( nModify == 0 ) -// Token.ToLower(); -// else -// Token.ToUpper(); - ; - } - Result += Token; - } - else - { - PUT_CHAR (nCode); - } - } - } - else - { - Result += '<'; - Result += Token; - Result += ' '; - Result += String( IttResId( S_INVALID_KEYCODE ) ); - Result += '>'; - } - } - aKeys.Insert(Result,nPos1); - nPos1 = nPos1 + Result.Len(); - } - else - nPos1 = aKeys.Len() + 1; - } - - return aKeys; -} - - -void CmdStream::WriteSortedParams( SbxArray* rPar, sal_Bool IsKeyString ) -{ - sal_uInt16 nParams = PARAM_NONE; - sal_uInt16 nNr1=0,nNr2=0,nNr3=0,nNr4=0; - comm_UINT32 nLNr1=0; - String aString1,aString2; - sal_Bool bBool1=sal_False,bBool2=sal_False; - - if ( rPar ) - { - for ( sal_uInt16 i = 1; i < rPar->Count() ; i++) - { - switch (rPar->Get( i )->GetType()) - { - case SbxLONG: // alles immer als Short �bertragen - case SbxULONG: - case SbxSALINT64: - case SbxSALUINT64: - case SbxDOUBLE: - case SbxINTEGER: - case SbxBYTE: - case SbxUSHORT: - case SbxINT: - case SbxUINT: - case SbxSINGLE: - if ( (nParams & PARAM_UINT16_1) == 0 ) - { - nParams |= PARAM_UINT16_1; - nNr1 = rPar->Get( i )->GetUShort(); - } - else if ( (nParams & PARAM_UINT16_2) == 0 ) - { - nParams |= PARAM_UINT16_2; - nNr2 = rPar->Get( i )->GetUShort(); - } - else if ( (nParams & PARAM_UINT16_3) == 0 ) - { - nParams |= PARAM_UINT16_3; - nNr3 = rPar->Get( i )->GetUShort(); - } - else if ( (nParams & PARAM_UINT16_4) == 0 ) - { - nParams |= PARAM_UINT16_4; - nNr4 = rPar->Get( i )->GetUShort(); - } - else - SbxBase::SetError( SbxERR_WRONG_ARGS ); - break; - case SbxOBJECT: // whenever a control is passed. TabPage, MenuBar - { - SbxProperty *pMember = NULL; - if ( rPar->Get( i )->ISA( SbxObject ) ) - pMember = ((SbxObject*)rPar->Get( i ))->GetDfltProperty(); - if ( pMember != NULL ) - { - if ( pMember->GetType() == SbxSTRING ) - { - if ( nParams & PARAM_STR_1 ) - if ( nParams & PARAM_STR_2 ) - SbxBase::SetError( SbxERR_WRONG_ARGS ); - else - { - nParams |= PARAM_STR_2; - aString2 = pMember->GetString(); - } - else - { - nParams |= PARAM_STR_1; - aString1 = pMember->GetString(); - } - break; - } - else if ( pMember->GetType() == SbxULONG ) - { - if ( nParams & PARAM_UINT32_1 ) - SbxBase::SetError( SbxERR_WRONG_ARGS ); - else - { - nParams |= PARAM_UINT32_1; - nLNr1 = pMember->GetULong(); - } - } - else - SbxBase::SetError( SbxERR_NAMED_NOT_FOUND ); - } - else - { - SbxBase::SetError( SbxERR_NAMED_NOT_FOUND ); - } - } - break; - case SbxSTRING: - case SbxCHAR: - if ( nParams & PARAM_STR_1 ) - if ( nParams & PARAM_STR_2 ) - SbxBase::SetError( SbxERR_WRONG_ARGS ); - else - { - nParams |= PARAM_STR_2; - aString2 = rPar->Get( i )->GetString(); - } - else - { - nParams |= PARAM_STR_1; - aString1 = rPar->Get( i )->GetString(); - } - break; - case SbxBOOL: - if ( nParams & PARAM_BOOL_1 ) - if ( nParams & PARAM_BOOL_2 ) - SbxBase::SetError( SbxERR_WRONG_ARGS ); - else - { - nParams |= PARAM_BOOL_2; - bBool2 = rPar->Get( i )->GetBool(); - } - else - { - nParams |= PARAM_BOOL_1; - bBool1 = rPar->Get( i )->GetBool(); - } - break; - default: - SbxBase::SetError( SbxERR_WRONG_ARGS ); - break; - } - } - } - Write (nParams); - if( nParams & PARAM_UINT16_1 ) Write( nNr1 ); - if( nParams & PARAM_UINT16_2 ) Write( nNr2 ); - if( nParams & PARAM_UINT16_3 ) Write( nNr3 ); - if( nParams & PARAM_UINT16_4 ) Write( nNr4 ); - if( nParams & PARAM_UINT32_1 ) Write( nLNr1 ); - if( nParams & PARAM_STR_1 ) Write( aString1, IsKeyString ); - if( nParams & PARAM_STR_2 ) Write( aString2, IsKeyString ); - if( nParams & PARAM_BOOL_1 ) Write( bBool1 ); - if( nParams & PARAM_BOOL_2 ) Write( bBool2 ); -} - -void CmdStream::GenCmdCommand( sal_uInt16 nNr, SbxArray* rPar ) -{ - Write(sal_uInt16(SICommand)); - Write(nNr); - WriteSortedParams(rPar, (nNr & M_KEY_STRING) != 0 ); -} - -void CmdStream::GenCmdSlot( sal_uInt16 nNr, SbxArray* rPar ) -{ - Write(sal_uInt16(SISlot)); - Write(nNr); - if (rPar) - { - sal_uInt16 nAnz = (rPar->Count()-1) >> 1; // Geteilt durch 2 - Write(nAnz); - sal_Bool bWriteUnoSlot = rPar->Get( 1 )->GetType() == SbxSTRING; - - for (sal_uInt16 n = 1 ; n <= nAnz ; n++) - { - /// #59513# nicht mehr ben�tigt -// sal_uLong nUserData = rPar->Get( 2*n-1 )->GetUserData(); -// rPar->Get( 2*n-1 )->SetUserData(ID_DoNothing); // Verhindert Ausf�hrung der Slots, die als Parameter �bergeben sind. - - if ( bWriteUnoSlot ) - Write(rPar->Get( 2*n-1 )->GetString()); - else - Write(rPar->Get( 2*n-1 )->GetUShort()); - switch (rPar->Get( 2*n )->GetType()) - { - case SbxINTEGER: - case SbxBYTE: - case SbxUSHORT: - case SbxINT: - case SbxUINT: - case SbxSINGLE: - if ( !bWriteUnoSlot ) - Write( (sal_uInt16)BinUINT16 ); - Write(rPar->Get( 2*n )->GetUShort()); - break; - case SbxLONG: - case SbxULONG: - case SbxSALINT64: - case SbxSALUINT64: - case SbxDOUBLE: - if ( !bWriteUnoSlot ) - Write( (sal_uInt16)BinUINT32 ); - Write(rPar->Get( 2*n )->GetULong()); - break; - case SbxSTRING: - case SbxCHAR: - if ( !bWriteUnoSlot ) - Write( (sal_uInt16)BinString); - Write((String)rPar->Get( 2*n )->GetString()); // Cast f�r OS/2 - break; - case SbxBOOL: - if ( !bWriteUnoSlot ) - Write( (sal_uInt16)BinBool); - Write(rPar->Get( 2*n )->GetBool()); - break; - default: - SbxBase::SetError( SbxERR_WRONG_ARGS ); - break; - } - - /// #59513# nicht mehr ben�tigt ( siehe oben ) -// rPar->Get( 2*n-1 )->SetUserData(nUserData); // Und wieder zur�cksetzen, so da� auch alles sauber ist. - } - } - else - Write(sal_uInt16(0)); -} - -void CmdStream::GenCmdUNOSlot( const String &aURL ) -{ - Write( sal_uInt16(SIUnoSlot) ); -/* Write( sal_uInt16(0) ); // Hier wird im Office die SID_OPENURL Eingetragen. - // Dies mu� nat�rlich im Office hart verdratet werden und nicht hier, - // da sich die ID ja mal �ndern kann. - - // Da auch die ID f�r das PoolItem im Office entnommen werden mu� hier also kein PoolItem - // gesendet werden. - - Write( sal_uInt16(0) ); // Anzahl PoolItems - - // Stattdessen wird noch eine extra String gesendet, der dann Officeseitig in ein - // SfxStringItem mit entsprechender ID gewandelt wird. - Write( aURL ); // String f�r das PoolItem*/ - - Write( aURL ); // Die UNO URL eben -} - -void CmdStream::GenCmdControl( comm_UINT32 nUId, sal_uInt16 nMethodId, SbxArray* rPar ) -{ - Write(sal_uInt16(SIControl)); - Write(nUId); - Write(nMethodId); - WriteSortedParams(rPar, (nMethodId & M_KEY_STRING) != 0 ); -} - -void CmdStream::GenCmdControl( String aUId, sal_uInt16 nMethodId, SbxArray* rPar ) -{ - Write(sal_uInt16(SIStringControl)); - Write(aUId); - Write(nMethodId); - WriteSortedParams(rPar, (nMethodId & M_KEY_STRING) != 0 ); -} - -void CmdStream::GenCmdFlow( sal_uInt16 nArt ) -{ - Write(sal_uInt16(SIFlow)); - Write(nArt); - Write(sal_uInt16(PARAM_NONE)); // Typ der folgenden Parameter -} - -void CmdStream::GenCmdFlow( sal_uInt16 nArt, comm_UINT32 nNr1 ) -{ - Write(sal_uInt16(SIFlow)); - Write(nArt); - Write(sal_uInt16(PARAM_UINT32_1)); // Typ der folgenden Parameter - Write(nNr1); -} - -void CmdStream::Write( String aString, sal_Bool IsKeyString ) -{ - if ( IsKeyString ) - Write( WandleKeyEventString( aString ), sal_False ); - else - Write( aString.GetBuffer(), aString.Len() ); -} - -SvMemoryStream* CmdStream::GetStream() -{ - return pSammel; -} - -void CmdStream::Reset( comm_UINT32 nSequence ) -{ - delete pCommStream; - delete pSammel; - pSammel = new SvMemoryStream(); - pCommStream = new SvCommStream( pSammel ); - GenCmdFlow (F_Sequence,nSequence); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |