1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
23*b1cdbd2cSJim Jagielski #include "precompiled_automation.hxx"
24*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFramesSupplier.hpp>
25*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDispatch.hpp>
26*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDispatchProvider.hpp>
27*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XURLTransformer.hpp>
28*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
29*b1cdbd2cSJim Jagielski #include <comphelper/uieventslogger.hxx>
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski #include <tools/wintypes.hxx>
32*b1cdbd2cSJim Jagielski #include <vcl/dialog.hxx>
33*b1cdbd2cSJim Jagielski #include <vcl/button.hxx>
34*b1cdbd2cSJim Jagielski #include <vcl/menubtn.hxx>
35*b1cdbd2cSJim Jagielski #include <svtools/svtreebx.hxx>
36*b1cdbd2cSJim Jagielski #include <svtools/brwbox.hxx>
37*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
38*b1cdbd2cSJim Jagielski #include <vcl/dockwin.hxx>
39*b1cdbd2cSJim Jagielski #include <vcl/floatwin.hxx>
40*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx>
41*b1cdbd2cSJim Jagielski #include <vcl/combobox.hxx>
42*b1cdbd2cSJim Jagielski #include <vcl/morebtn.hxx>
43*b1cdbd2cSJim Jagielski #include <vcl/field.hxx>
44*b1cdbd2cSJim Jagielski #include <vcl/toolbox.hxx>
45*b1cdbd2cSJim Jagielski #include <vcl/tabctrl.hxx>
46*b1cdbd2cSJim Jagielski #include <vcl/tabpage.hxx>
47*b1cdbd2cSJim Jagielski #include <vcl/menu.hxx>
48*b1cdbd2cSJim Jagielski #include <vcl/status.hxx>
49*b1cdbd2cSJim Jagielski #include <svtools/prgsbar.hxx>
50*b1cdbd2cSJim Jagielski #include <svtools/editbrowsebox.hxx>
51*b1cdbd2cSJim Jagielski #include <vcl/splitwin.hxx>
52*b1cdbd2cSJim Jagielski #include <vcl/group.hxx>
53*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx>
54*b1cdbd2cSJim Jagielski #include <vcl/wrkwin.hxx>
55*b1cdbd2cSJim Jagielski #include <osl/diagnose.h>
56*b1cdbd2cSJim Jagielski #include <svtools/valueset.hxx>
57*b1cdbd2cSJim Jagielski #include <svtools/roadmap.hxx>
58*b1cdbd2cSJim Jagielski #include <svtools/table/tablecontrol.hxx>
59*b1cdbd2cSJim Jagielski #include <svtools/table/tablecontrolinterface.hxx>
60*b1cdbd2cSJim Jagielski #include <svl/poolitem.hxx>
61*b1cdbd2cSJim Jagielski #include <svtools/extensionlistbox.hxx>
62*b1cdbd2cSJim Jagielski #include <svtools/svtdata.hxx>
63*b1cdbd2cSJim Jagielski #include <tools/time.hxx>
64*b1cdbd2cSJim Jagielski #include <svtools/stringtransfer.hxx>
65*b1cdbd2cSJim Jagielski #include <tools/stream.hxx>
66*b1cdbd2cSJim Jagielski #include <tools/fsys.hxx>
67*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
68*b1cdbd2cSJim Jagielski #include <svtools/ttprops.hxx>
69*b1cdbd2cSJim Jagielski #include <basic/ttstrhlp.hxx>
70*b1cdbd2cSJim Jagielski #include <basic/dispdefs.hxx>
71*b1cdbd2cSJim Jagielski #include <basic/sbuno.hxx>
72*b1cdbd2cSJim Jagielski #include <vos/socket.hxx>
73*b1cdbd2cSJim Jagielski #include <svl/pickerhistory.hxx>
74*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XCancellable.hpp>
75*b1cdbd2cSJim Jagielski #include <sot/storage.hxx>
76*b1cdbd2cSJim Jagielski #include <sot/storinfo.hxx>
77*b1cdbd2cSJim Jagielski #include "statemnt.hxx"
78*b1cdbd2cSJim Jagielski #include "scmdstrm.hxx"
79*b1cdbd2cSJim Jagielski #include "retstrm.hxx"
80*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
81*b1cdbd2cSJim Jagielski #include "editwin.hxx"
82*b1cdbd2cSJim Jagielski #endif
83*b1cdbd2cSJim Jagielski #include "rcontrol.hxx"
84*b1cdbd2cSJim Jagielski #include <automation/communi.hxx>
85*b1cdbd2cSJim Jagielski #include "testtool.hxx"
86*b1cdbd2cSJim Jagielski #include "profiler.hxx"
87*b1cdbd2cSJim Jagielski #include "recorder.hxx"
88*b1cdbd2cSJim Jagielski #include "testtool.hrc"
89*b1cdbd2cSJim Jagielski #include <basic/svtmsg.hrc>
90*b1cdbd2cSJim Jagielski #include <algorithm>
91*b1cdbd2cSJim Jagielski #include <vcl/dibtools.hxx>
92*b1cdbd2cSJim Jagielski
93*b1cdbd2cSJim Jagielski using namespace com::sun::star::frame;
94*b1cdbd2cSJim Jagielski using namespace com::sun::star::uno;
95*b1cdbd2cSJim Jagielski //using namespace com::sun::star::util; geht wegen Color nicht
96*b1cdbd2cSJim Jagielski using namespace com::sun::star::beans;
97*b1cdbd2cSJim Jagielski using namespace svt;
98*b1cdbd2cSJim Jagielski //using namespace svt::table;
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski #ifndef SBX_VALUE_DECL_DEFINED
102*b1cdbd2cSJim Jagielski #define SBX_VALUE_DECL_DEFINED
103*b1cdbd2cSJim Jagielski SV_DECL_REF(SbxValue)
104*b1cdbd2cSJim Jagielski #endif
105*b1cdbd2cSJim Jagielski SV_IMPL_REF(SbxValue)
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski CommunicationLink *StatementFlow::pCommLink = NULL;
108*b1cdbd2cSJim Jagielski sal_Bool StatementFlow::bUseIPC = sal_True;
109*b1cdbd2cSJim Jagielski sal_Bool StatementFlow::bSending = sal_False;
110*b1cdbd2cSJim Jagielski ImplRemoteControl *StatementFlow::pRemoteControl = NULL;
111*b1cdbd2cSJim Jagielski
112*b1cdbd2cSJim Jagielski sal_uInt16 StatementCommand::nDirPos = 0;
113*b1cdbd2cSJim Jagielski Dir *StatementCommand::pDir = NULL;
114*b1cdbd2cSJim Jagielski pfunc_osl_printDebugMessage StatementCommand::pOriginal_osl_DebugMessageFunc = NULL;
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski #define RESET_APPLICATION_TO_BACKING_WINDOW
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski #define SET_WINP_CLOSING(pWin) \
121*b1cdbd2cSJim Jagielski pWindowWaitPointer = pWin; \
122*b1cdbd2cSJim Jagielski aWindowWaitUId = pControl->GetUniqueOrHelpId(); \
123*b1cdbd2cSJim Jagielski aWindowWaitOldHelpId = pWin->GetHelpId(); \
124*b1cdbd2cSJim Jagielski aWindowWaitOldUniqueId = pWin->GetUniqueId(); \
125*b1cdbd2cSJim Jagielski pWin->SetHelpId( rtl::OString("TT_Win_is_closing_HID") ); \
126*b1cdbd2cSJim Jagielski pWin->SetUniqueId( rtl::OString("TT_Win_is_closing_UID") );
127*b1cdbd2cSJim Jagielski
128*b1cdbd2cSJim Jagielski // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
129*b1cdbd2cSJim Jagielski
StatementFlow(StatementList * pAfterThis,sal_uInt16 nArtP)130*b1cdbd2cSJim Jagielski StatementFlow::StatementFlow( StatementList *pAfterThis, sal_uInt16 nArtP )
131*b1cdbd2cSJim Jagielski : nArt(nArtP)
132*b1cdbd2cSJim Jagielski , nParams(0)
133*b1cdbd2cSJim Jagielski , nSNr1(0)
134*b1cdbd2cSJim Jagielski , nLNr1(0)
135*b1cdbd2cSJim Jagielski , aString1()
136*b1cdbd2cSJim Jagielski , bBool1(sal_False)
137*b1cdbd2cSJim Jagielski {
138*b1cdbd2cSJim Jagielski QueStatement( pAfterThis );
139*b1cdbd2cSJim Jagielski }
140*b1cdbd2cSJim Jagielski
StatementFlow(sal_uLong nServiceId,SCmdStream * pCmdIn,ImplRemoteControl * pRC)141*b1cdbd2cSJim Jagielski StatementFlow::StatementFlow( sal_uLong nServiceId, SCmdStream *pCmdIn, ImplRemoteControl *pRC )
142*b1cdbd2cSJim Jagielski : nArt(0)
143*b1cdbd2cSJim Jagielski , nParams(0)
144*b1cdbd2cSJim Jagielski , nSNr1(0)
145*b1cdbd2cSJim Jagielski , nLNr1(0)
146*b1cdbd2cSJim Jagielski , aString1()
147*b1cdbd2cSJim Jagielski , bBool1(sal_False)
148*b1cdbd2cSJim Jagielski {
149*b1cdbd2cSJim Jagielski QueStatement( NULL );
150*b1cdbd2cSJim Jagielski bUseIPC = (nServiceId == SI_IPCCommandBlock);
151*b1cdbd2cSJim Jagielski pRemoteControl = pRC;
152*b1cdbd2cSJim Jagielski pCmdIn->Read( nArt );
153*b1cdbd2cSJim Jagielski pCmdIn->Read( nParams );
154*b1cdbd2cSJim Jagielski
155*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_1 ) pCmdIn->Read( nSNr1 );
156*b1cdbd2cSJim Jagielski if( nParams & PARAM_ULONG_1 ) pCmdIn->Read( nLNr1 );
157*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 ) pCmdIn->Read( aString1 );
158*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_1 ) pCmdIn->Read( bBool1 ); // sollte nie auftreten!!
159*b1cdbd2cSJim Jagielski
160*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
161*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Reading FlowControl: " );
162*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nArt ) );
163*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Params:" );
164*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_1 ) {m_pDbgWin->AddText( " n1:" );m_pDbgWin->AddText( String::CreateFromInt32( nSNr1 ) );}
165*b1cdbd2cSJim Jagielski if( nParams & PARAM_ULONG_1 ) {m_pDbgWin->AddText( " l1:" );m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );}
166*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 ) {m_pDbgWin->AddText( " s1:" );m_pDbgWin->AddText( aString1 );}
167*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_1 ) {m_pDbgWin->AddText( " b2:" );m_pDbgWin->AddText( bBool1 ? "TRUE" : "FALSE" );}
168*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
169*b1cdbd2cSJim Jagielski #endif
170*b1cdbd2cSJim Jagielski }
171*b1cdbd2cSJim Jagielski
SendViaSocket()172*b1cdbd2cSJim Jagielski void StatementFlow::SendViaSocket()
173*b1cdbd2cSJim Jagielski {
174*b1cdbd2cSJim Jagielski if ( bSending )
175*b1cdbd2cSJim Jagielski {
176*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
177*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "SendViaSocket called recursively. Aborted!!!\n" );
178*b1cdbd2cSJim Jagielski #endif
179*b1cdbd2cSJim Jagielski DBG_ERROR("SendViaSocket called recursively. Aborted!!!");
180*b1cdbd2cSJim Jagielski return;
181*b1cdbd2cSJim Jagielski }
182*b1cdbd2cSJim Jagielski bSending = sal_True;
183*b1cdbd2cSJim Jagielski if ( pCommLink )
184*b1cdbd2cSJim Jagielski {
185*b1cdbd2cSJim Jagielski if ( !pCommLink->TransferDataStream( pRet->GetStream() ) ) // tritt ein Fehler auf, so wird sofort gel�scht ...
186*b1cdbd2cSJim Jagielski pCommLink = NULL;
187*b1cdbd2cSJim Jagielski }
188*b1cdbd2cSJim Jagielski else
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski // Macht nix. Wenn das Basic nicht mehr da ist, ist sowiso alles egal
191*b1cdbd2cSJim Jagielski DBG_ERROR("Cannot send results to TestTool");
192*b1cdbd2cSJim Jagielski }
193*b1cdbd2cSJim Jagielski
194*b1cdbd2cSJim Jagielski pRet->Reset();
195*b1cdbd2cSJim Jagielski bSending = sal_False;
196*b1cdbd2cSJim Jagielski IsError = sal_False;
197*b1cdbd2cSJim Jagielski }
198*b1cdbd2cSJim Jagielski
Execute()199*b1cdbd2cSJim Jagielski sal_Bool StatementFlow::Execute()
200*b1cdbd2cSJim Jagielski {
201*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
202*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Executing Flow: " );
203*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nArt ) );
204*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
205*b1cdbd2cSJim Jagielski #endif
206*b1cdbd2cSJim Jagielski switch ( nArt )
207*b1cdbd2cSJim Jagielski {
208*b1cdbd2cSJim Jagielski case F_EndCommandBlock:
209*b1cdbd2cSJim Jagielski {
210*b1cdbd2cSJim Jagielski
211*b1cdbd2cSJim Jagielski if ( !bUseIPC )
212*b1cdbd2cSJim Jagielski {
213*b1cdbd2cSJim Jagielski // bBool1 wurde im CTOR auf sal_False initialisiert
214*b1cdbd2cSJim Jagielski if ( !bBool1 ) // also erster Durchlauf
215*b1cdbd2cSJim Jagielski {
216*b1cdbd2cSJim Jagielski pRemoteControl->pRetStream = pRet->GetStream();
217*b1cdbd2cSJim Jagielski bBool1 = sal_True; // wurde im CTOR auf sal_False initialisiert
218*b1cdbd2cSJim Jagielski nRetryCount = nRetryCount * 4;
219*b1cdbd2cSJim Jagielski }
220*b1cdbd2cSJim Jagielski if ( pRemoteControl->pRetStream && (nRetryCount--) ) // also solange nicht abgeholt
221*b1cdbd2cSJim Jagielski {
222*b1cdbd2cSJim Jagielski return sal_False; // Bitte einmal vom Callstack runter
223*b1cdbd2cSJim Jagielski }
224*b1cdbd2cSJim Jagielski }
225*b1cdbd2cSJim Jagielski
226*b1cdbd2cSJim Jagielski }
227*b1cdbd2cSJim Jagielski break;
228*b1cdbd2cSJim Jagielski }
229*b1cdbd2cSJim Jagielski
230*b1cdbd2cSJim Jagielski Advance();
231*b1cdbd2cSJim Jagielski switch ( nArt )
232*b1cdbd2cSJim Jagielski {
233*b1cdbd2cSJim Jagielski case F_EndCommandBlock:
234*b1cdbd2cSJim Jagielski if ( !bUseIPC )
235*b1cdbd2cSJim Jagielski { // wird oben abgehandelt
236*b1cdbd2cSJim Jagielski pRet->Reset();
237*b1cdbd2cSJim Jagielski IsError = sal_False;
238*b1cdbd2cSJim Jagielski }
239*b1cdbd2cSJim Jagielski else
240*b1cdbd2cSJim Jagielski SendViaSocket();
241*b1cdbd2cSJim Jagielski
242*b1cdbd2cSJim Jagielski break;
243*b1cdbd2cSJim Jagielski
244*b1cdbd2cSJim Jagielski case F_Sequence:
245*b1cdbd2cSJim Jagielski
246*b1cdbd2cSJim Jagielski pRet->GenReturn(RET_Sequence,nLNr1);
247*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
248*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Sending Sequence Nr: " );
249*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );
250*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
251*b1cdbd2cSJim Jagielski #endif
252*b1cdbd2cSJim Jagielski
253*b1cdbd2cSJim Jagielski break;
254*b1cdbd2cSJim Jagielski // case RET_:
255*b1cdbd2cSJim Jagielski default:
256*b1cdbd2cSJim Jagielski DBG_ERROR( "Unknown Flowcontrol" );
257*b1cdbd2cSJim Jagielski break;
258*b1cdbd2cSJim Jagielski }
259*b1cdbd2cSJim Jagielski
260*b1cdbd2cSJim Jagielski delete this;
261*b1cdbd2cSJim Jagielski return sal_True;
262*b1cdbd2cSJim Jagielski }
263*b1cdbd2cSJim Jagielski
264*b1cdbd2cSJim Jagielski // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
265*b1cdbd2cSJim Jagielski
266*b1cdbd2cSJim Jagielski // neue Hilfsfunktion, die stetig erweitert werden muss
ImpGetRType(Window * pWin)267*b1cdbd2cSJim Jagielski static short ImpGetRType( Window *pWin )
268*b1cdbd2cSJim Jagielski {
269*b1cdbd2cSJim Jagielski short nRT = C_NoType;
270*b1cdbd2cSJim Jagielski WindowType eRT = pWin->GetType();
271*b1cdbd2cSJim Jagielski switch( eRT ) {
272*b1cdbd2cSJim Jagielski case WINDOW_WINDOW: nRT = C_Window ; break;
273*b1cdbd2cSJim Jagielski
274*b1cdbd2cSJim Jagielski case WINDOW_TABCONTROL: nRT = C_TabControl ; break;
275*b1cdbd2cSJim Jagielski case WINDOW_RADIOBUTTON: nRT = C_RadioButton ; break;
276*b1cdbd2cSJim Jagielski case WINDOW_CHECKBOX: nRT = C_CheckBox ; break;
277*b1cdbd2cSJim Jagielski case WINDOW_TRISTATEBOX: nRT = C_TriStateBox ; break;
278*b1cdbd2cSJim Jagielski case WINDOW_EDIT: nRT = C_Edit ; break;
279*b1cdbd2cSJim Jagielski case WINDOW_MULTILINEEDIT: nRT = C_MultiLineEdit ; break;
280*b1cdbd2cSJim Jagielski case WINDOW_MULTILISTBOX: nRT = C_MultiListBox ; break;
281*b1cdbd2cSJim Jagielski case WINDOW_LISTBOX: nRT = C_ListBox ; break;
282*b1cdbd2cSJim Jagielski case WINDOW_COMBOBOX: nRT = C_ComboBox ; break;
283*b1cdbd2cSJim Jagielski case WINDOW_PUSHBUTTON: nRT = C_PushButton ; break;
284*b1cdbd2cSJim Jagielski case WINDOW_SPINFIELD: nRT = C_SpinField ; break;
285*b1cdbd2cSJim Jagielski case WINDOW_PATTERNFIELD: nRT = C_PatternField ; break;
286*b1cdbd2cSJim Jagielski case WINDOW_NUMERICFIELD: nRT = C_NumericField ; break;
287*b1cdbd2cSJim Jagielski case WINDOW_METRICFIELD: nRT = C_MetricField ; break;
288*b1cdbd2cSJim Jagielski case WINDOW_CURRENCYFIELD: nRT = C_CurrencyField ; break;
289*b1cdbd2cSJim Jagielski case WINDOW_DATEFIELD: nRT = C_DateField ; break;
290*b1cdbd2cSJim Jagielski case WINDOW_TIMEFIELD: nRT = C_TimeField ; break;
291*b1cdbd2cSJim Jagielski case WINDOW_IMAGERADIOBUTTON: nRT = C_ImageRadioButton ; break;
292*b1cdbd2cSJim Jagielski case WINDOW_NUMERICBOX: nRT = C_NumericBox ; break;
293*b1cdbd2cSJim Jagielski case WINDOW_METRICBOX: nRT = C_MetricBox ; break;
294*b1cdbd2cSJim Jagielski case WINDOW_CURRENCYBOX: nRT = C_CurrencyBox ; break;
295*b1cdbd2cSJim Jagielski case WINDOW_DATEBOX: nRT = C_DateBox ; break;
296*b1cdbd2cSJim Jagielski case WINDOW_TIMEBOX: nRT = C_TimeBox ; break;
297*b1cdbd2cSJim Jagielski case WINDOW_IMAGEBUTTON: nRT = C_ImageButton ; break;
298*b1cdbd2cSJim Jagielski case WINDOW_MENUBUTTON: nRT = C_MenuButton ; break;
299*b1cdbd2cSJim Jagielski case WINDOW_MOREBUTTON: nRT = C_MoreButton ; break;
300*b1cdbd2cSJim Jagielski
301*b1cdbd2cSJim Jagielski
302*b1cdbd2cSJim Jagielski case WINDOW_TABPAGE: nRT = C_TabPage; break;
303*b1cdbd2cSJim Jagielski case WINDOW_MODALDIALOG: nRT = C_ModalDlg; break;
304*b1cdbd2cSJim Jagielski case WINDOW_FLOATINGWINDOW: nRT = C_FloatWin; break;
305*b1cdbd2cSJim Jagielski case WINDOW_MODELESSDIALOG: nRT = C_ModelessDlg; break;
306*b1cdbd2cSJim Jagielski case WINDOW_WORKWINDOW: nRT = C_WorkWin; break;
307*b1cdbd2cSJim Jagielski case WINDOW_DOCKINGWINDOW: nRT = C_DockingWin; break;
308*b1cdbd2cSJim Jagielski
309*b1cdbd2cSJim Jagielski case WINDOW_MESSBOX: nRT = C_MessBox; break;
310*b1cdbd2cSJim Jagielski case WINDOW_INFOBOX: nRT = C_InfoBox; break;
311*b1cdbd2cSJim Jagielski case WINDOW_WARNINGBOX: nRT = C_WarningBox; break;
312*b1cdbd2cSJim Jagielski case WINDOW_ERRORBOX: nRT = C_ErrorBox; break;
313*b1cdbd2cSJim Jagielski case WINDOW_QUERYBOX: nRT = C_QueryBox; break;
314*b1cdbd2cSJim Jagielski #if 0 //ifndef VCL
315*b1cdbd2cSJim Jagielski case WINDOW_FILEDIALOG: nRT = C_FileDlg; break;
316*b1cdbd2cSJim Jagielski case WINDOW_PATHDIALOG: nRT = C_PathDlg; break;
317*b1cdbd2cSJim Jagielski case WINDOW_PRINTDIALOG: nRT = C_PrintDlg; break;
318*b1cdbd2cSJim Jagielski case WINDOW_PRINTERSETUPDIALOG: nRT = C_PrinterSetupDlg;break;
319*b1cdbd2cSJim Jagielski case WINDOW_COLORDIALOG: nRT = C_ColorDlg; break;
320*b1cdbd2cSJim Jagielski #endif
321*b1cdbd2cSJim Jagielski case WINDOW_TABDIALOG: nRT = C_TabDlg; break;
322*b1cdbd2cSJim Jagielski // case WINDOW_TABDIALOG: nRT = C_SingleTabDlg; break;
323*b1cdbd2cSJim Jagielski
324*b1cdbd2cSJim Jagielski case WINDOW_PATTERNBOX: nRT = C_PatternBox; break;
325*b1cdbd2cSJim Jagielski case WINDOW_TOOLBOX: nRT = C_ToolBox; break;
326*b1cdbd2cSJim Jagielski // Gibts nicht case WINDOW_VALUESET: nRT = C_ValueSet; break;
327*b1cdbd2cSJim Jagielski case WINDOW_CONTROL: nRT = C_Control; break;
328*b1cdbd2cSJim Jagielski case WINDOW_OKBUTTON: nRT = C_OkButton; break;
329*b1cdbd2cSJim Jagielski case WINDOW_CANCELBUTTON: nRT = C_CancelButton; break;
330*b1cdbd2cSJim Jagielski case WINDOW_BUTTONDIALOG: nRT = C_ButtonDialog; break;
331*b1cdbd2cSJim Jagielski case WINDOW_TREELISTBOX: nRT = C_TreeListBox; break;
332*b1cdbd2cSJim Jagielski
333*b1cdbd2cSJim Jagielski case WINDOW_DIALOG: nRT = C_Dialog; break;
334*b1cdbd2cSJim Jagielski }
335*b1cdbd2cSJim Jagielski return nRT;
336*b1cdbd2cSJim Jagielski }
337*b1cdbd2cSJim Jagielski
338*b1cdbd2cSJim Jagielski // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
339*b1cdbd2cSJim Jagielski
StatementSlot(SCmdStream * pCmdIn)340*b1cdbd2cSJim Jagielski StatementSlot::StatementSlot( SCmdStream *pCmdIn )
341*b1cdbd2cSJim Jagielski : pItemArr(NULL)
342*b1cdbd2cSJim Jagielski {
343*b1cdbd2cSJim Jagielski QueStatement( NULL );
344*b1cdbd2cSJim Jagielski pCmdIn->Read( nFunctionId );
345*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
346*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Reading Slot: " );
347*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nFunctionId ) );
348*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
349*b1cdbd2cSJim Jagielski #endif
350*b1cdbd2cSJim Jagielski pCmdIn->Read( nAnzahl );
351*b1cdbd2cSJim Jagielski if ( nAnzahl )
352*b1cdbd2cSJim Jagielski {
353*b1cdbd2cSJim Jagielski switch ( pCmdIn->GetNextType() )
354*b1cdbd2cSJim Jagielski {
355*b1cdbd2cSJim Jagielski case BinUSHORT: // use old calling method
356*b1cdbd2cSJim Jagielski {
357*b1cdbd2cSJim Jagielski nAnzahl++;
358*b1cdbd2cSJim Jagielski pItemArr = new SfxPoolItem*[nAnzahl];
359*b1cdbd2cSJim Jagielski for (sal_uInt16 i = 0 ; i+1 < nAnzahl ; i++)
360*b1cdbd2cSJim Jagielski pCmdIn->Read( pItemArr[i] );
361*b1cdbd2cSJim Jagielski pItemArr[nAnzahl-1] = NULL;
362*b1cdbd2cSJim Jagielski }
363*b1cdbd2cSJim Jagielski break;
364*b1cdbd2cSJim Jagielski case BinString: // new Method
365*b1cdbd2cSJim Jagielski {
366*b1cdbd2cSJim Jagielski aArgs.realloc(nAnzahl);
367*b1cdbd2cSJim Jagielski PropertyValue* pArg = aArgs.getArray();
368*b1cdbd2cSJim Jagielski for (sal_uInt16 i = 0 ; i < nAnzahl ; i++)
369*b1cdbd2cSJim Jagielski pCmdIn->Read( pArg[i] );
370*b1cdbd2cSJim Jagielski }
371*b1cdbd2cSJim Jagielski break;
372*b1cdbd2cSJim Jagielski }
373*b1cdbd2cSJim Jagielski }
374*b1cdbd2cSJim Jagielski }
375*b1cdbd2cSJim Jagielski
376*b1cdbd2cSJim Jagielski // Constructor for UnoSlot
StatementSlot()377*b1cdbd2cSJim Jagielski StatementSlot::StatementSlot()
378*b1cdbd2cSJim Jagielski : nAnzahl( 0 )
379*b1cdbd2cSJim Jagielski , pItemArr(NULL)
380*b1cdbd2cSJim Jagielski , nFunctionId( 0 )
381*b1cdbd2cSJim Jagielski , bMenuClosed(sal_False)
382*b1cdbd2cSJim Jagielski {}
383*b1cdbd2cSJim Jagielski
StatementSlot(sal_uLong nSlot,SfxPoolItem * pItem)384*b1cdbd2cSJim Jagielski StatementSlot::StatementSlot( sal_uLong nSlot, SfxPoolItem* pItem )
385*b1cdbd2cSJim Jagielski : pItemArr(NULL)
386*b1cdbd2cSJim Jagielski , bMenuClosed(sal_False)
387*b1cdbd2cSJim Jagielski {
388*b1cdbd2cSJim Jagielski QueStatement( NULL );
389*b1cdbd2cSJim Jagielski nFunctionId = sal_uInt16(nSlot);
390*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
391*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Reading Slot: " );
392*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nFunctionId ) );
393*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
394*b1cdbd2cSJim Jagielski #endif
395*b1cdbd2cSJim Jagielski if ( pItem )
396*b1cdbd2cSJim Jagielski {
397*b1cdbd2cSJim Jagielski nAnzahl = 2;
398*b1cdbd2cSJim Jagielski pItemArr = new SfxPoolItem*[2];
399*b1cdbd2cSJim Jagielski pItemArr[0] = pItem;
400*b1cdbd2cSJim Jagielski pItemArr[1] = NULL;
401*b1cdbd2cSJim Jagielski }
402*b1cdbd2cSJim Jagielski else
403*b1cdbd2cSJim Jagielski nAnzahl = 0;
404*b1cdbd2cSJim Jagielski }
405*b1cdbd2cSJim Jagielski
~StatementSlot()406*b1cdbd2cSJim Jagielski StatementSlot::~StatementSlot()
407*b1cdbd2cSJim Jagielski {
408*b1cdbd2cSJim Jagielski if (nAnzahl)
409*b1cdbd2cSJim Jagielski {
410*b1cdbd2cSJim Jagielski if ( pItemArr )
411*b1cdbd2cSJim Jagielski {
412*b1cdbd2cSJim Jagielski for (sal_uInt16 i = 0 ; i+1 < nAnzahl ; i++)
413*b1cdbd2cSJim Jagielski delete pItemArr[i];
414*b1cdbd2cSJim Jagielski delete[] pItemArr;
415*b1cdbd2cSJim Jagielski }
416*b1cdbd2cSJim Jagielski
417*b1cdbd2cSJim Jagielski aArgs.realloc( 0 );
418*b1cdbd2cSJim Jagielski }
419*b1cdbd2cSJim Jagielski }
420*b1cdbd2cSJim Jagielski
AddReferer()421*b1cdbd2cSJim Jagielski void StatementSlot::AddReferer()
422*b1cdbd2cSJim Jagielski {
423*b1cdbd2cSJim Jagielski HACK( "only to test!" );
424*b1cdbd2cSJim Jagielski // because slot 6102 /*SID_VERB_START*/ crashes when called with Property Referer
425*b1cdbd2cSJim Jagielski // We return to the previous behavior (which was a bug realy) of not adding this Property to calls which have no properties at all
426*b1cdbd2cSJim Jagielski // according to MBA most likely this Property can be removed at all and is maybe only needed for Slots with URLs
427*b1cdbd2cSJim Jagielski if ( !nAnzahl )
428*b1cdbd2cSJim Jagielski return;
429*b1cdbd2cSJim Jagielski
430*b1cdbd2cSJim Jagielski PropertyValue* pArg;
431*b1cdbd2cSJim Jagielski
432*b1cdbd2cSJim Jagielski nAnzahl++;
433*b1cdbd2cSJim Jagielski aArgs.realloc(nAnzahl);
434*b1cdbd2cSJim Jagielski pArg = aArgs.getArray();
435*b1cdbd2cSJim Jagielski pArg[nAnzahl-1].Name = rtl::OUString::createFromAscii("Referer");
436*b1cdbd2cSJim Jagielski pArg[nAnzahl-1].Value <<= ::rtl::OUString::createFromAscii("private:user");
437*b1cdbd2cSJim Jagielski
438*b1cdbd2cSJim Jagielski nAnzahl++;
439*b1cdbd2cSJim Jagielski aArgs.realloc(nAnzahl);
440*b1cdbd2cSJim Jagielski pArg = aArgs.getArray();
441*b1cdbd2cSJim Jagielski pArg[nAnzahl-1].Name = rtl::OUString::createFromAscii("SynchronMode");
442*b1cdbd2cSJim Jagielski pArg[nAnzahl-1].Value <<= sal_Bool( sal_True );
443*b1cdbd2cSJim Jagielski }
444*b1cdbd2cSJim Jagielski
445*b1cdbd2cSJim Jagielski class SlotStatusListener : public cppu::WeakImplHelper1< XStatusListener >
446*b1cdbd2cSJim Jagielski {
447*b1cdbd2cSJim Jagielski public:
448*b1cdbd2cSJim Jagielski SlotStatusListener();
449*b1cdbd2cSJim Jagielski
450*b1cdbd2cSJim Jagielski // XStatusListener
451*b1cdbd2cSJim Jagielski virtual void SAL_CALL statusChanged( const ::com::sun::star::frame::FeatureStateEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
452*b1cdbd2cSJim Jagielski // XEventListener
453*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
454*b1cdbd2cSJim Jagielski
455*b1cdbd2cSJim Jagielski // local Members
456*b1cdbd2cSJim Jagielski sal_Bool bDisposed;
457*b1cdbd2cSJim Jagielski sal_Bool bEnabled;
458*b1cdbd2cSJim Jagielski };
459*b1cdbd2cSJim Jagielski /*
460*b1cdbd2cSJim Jagielski struct FeatureStateEvent : public ::com::sun::star::lang::EventObject
461*b1cdbd2cSJim Jagielski ::com::sun::star::util::URL FeatureURL;
462*b1cdbd2cSJim Jagielski ::rtl::OUString FeatureDescriptor;
463*b1cdbd2cSJim Jagielski sal_Bool IsEnabled;
464*b1cdbd2cSJim Jagielski sal_Bool Requery;
465*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Any State;
466*b1cdbd2cSJim Jagielski
467*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > Source;
468*b1cdbd2cSJim Jagielski */
469*b1cdbd2cSJim Jagielski
SlotStatusListener()470*b1cdbd2cSJim Jagielski SlotStatusListener::SlotStatusListener()
471*b1cdbd2cSJim Jagielski : bDisposed( sal_False )
472*b1cdbd2cSJim Jagielski , bEnabled( sal_True )
473*b1cdbd2cSJim Jagielski {}
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski // XStatusListener
statusChanged(const::com::sun::star::frame::FeatureStateEvent & Event)476*b1cdbd2cSJim Jagielski void SAL_CALL SlotStatusListener::statusChanged( const ::com::sun::star::frame::FeatureStateEvent& Event ) throw (::com::sun::star::uno::RuntimeException)
477*b1cdbd2cSJim Jagielski {
478*b1cdbd2cSJim Jagielski // DBG_ERROR1("FeatureURL: %s", ByteString( String( Event.FeatureURL.Complete ), RTL_TEXTENCODING_UTF8 ).GetBuffer() );
479*b1cdbd2cSJim Jagielski // DBG_ERROR1("FeatureDescriptor: %s", ByteString( String( Event.FeatureDescriptor ), RTL_TEXTENCODING_UTF8 ).GetBuffer() );
480*b1cdbd2cSJim Jagielski bEnabled = Event.IsEnabled;
481*b1cdbd2cSJim Jagielski // DBG_ASSERT( Event.IsEnabled, "Not enabled" );
482*b1cdbd2cSJim Jagielski // DBG_ASSERT( !Event.Requery, "Requery" );
483*b1cdbd2cSJim Jagielski }
484*b1cdbd2cSJim Jagielski
485*b1cdbd2cSJim Jagielski // XEventListener
disposing(const::com::sun::star::lang::EventObject &)486*b1cdbd2cSJim Jagielski void SAL_CALL SlotStatusListener::disposing( const ::com::sun::star::lang::EventObject& ) throw (::com::sun::star::uno::RuntimeException)
487*b1cdbd2cSJim Jagielski {
488*b1cdbd2cSJim Jagielski bDisposed = sal_True;
489*b1cdbd2cSJim Jagielski }
490*b1cdbd2cSJim Jagielski
Execute()491*b1cdbd2cSJim Jagielski sal_Bool StatementSlot::Execute()
492*b1cdbd2cSJim Jagielski {
493*b1cdbd2cSJim Jagielski if ( IsError )
494*b1cdbd2cSJim Jagielski {
495*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
496*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Skipping Slot: " );
497*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nFunctionId ) );
498*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
499*b1cdbd2cSJim Jagielski #endif
500*b1cdbd2cSJim Jagielski
501*b1cdbd2cSJim Jagielski Advance();
502*b1cdbd2cSJim Jagielski delete this;
503*b1cdbd2cSJim Jagielski return sal_True;
504*b1cdbd2cSJim Jagielski }
505*b1cdbd2cSJim Jagielski
506*b1cdbd2cSJim Jagielski InitProfile();
507*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
508*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Executing Slot: " );
509*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nFunctionId ) );
510*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
511*b1cdbd2cSJim Jagielski #endif
512*b1cdbd2cSJim Jagielski
513*b1cdbd2cSJim Jagielski PopupMenu *pPopup = NULL;
514*b1cdbd2cSJim Jagielski MenuBar *pMenuBar = NULL;
515*b1cdbd2cSJim Jagielski Menu *pMenu;
516*b1cdbd2cSJim Jagielski
517*b1cdbd2cSJim Jagielski GetCurrentMenues( pPopup, pMenuBar, pMenu );
518*b1cdbd2cSJim Jagielski if ( pPopup )
519*b1cdbd2cSJim Jagielski {
520*b1cdbd2cSJim Jagielski if ( !bMenuClosed )
521*b1cdbd2cSJim Jagielski {
522*b1cdbd2cSJim Jagielski pPopup->EndExecute(0);
523*b1cdbd2cSJim Jagielski aSubMenuId1 = 0;
524*b1cdbd2cSJim Jagielski aSubMenuId2 = 0;
525*b1cdbd2cSJim Jagielski aSubMenuId3 = 0;
526*b1cdbd2cSJim Jagielski pMenuWindow = NULL;
527*b1cdbd2cSJim Jagielski bMenuClosed = sal_True;
528*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
529*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Closed contextmenu\n" );
530*b1cdbd2cSJim Jagielski #endif
531*b1cdbd2cSJim Jagielski return sal_False;
532*b1cdbd2cSJim Jagielski }
533*b1cdbd2cSJim Jagielski else if ( nRetryCount-- )
534*b1cdbd2cSJim Jagielski {
535*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
536*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Waiting for contextmenu to close\n" );
537*b1cdbd2cSJim Jagielski #endif
538*b1cdbd2cSJim Jagielski return sal_False;
539*b1cdbd2cSJim Jagielski }
540*b1cdbd2cSJim Jagielski else
541*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_MENU_NOT_CLOSING ) );
542*b1cdbd2cSJim Jagielski }
543*b1cdbd2cSJim Jagielski
544*b1cdbd2cSJim Jagielski Advance();
545*b1cdbd2cSJim Jagielski
546*b1cdbd2cSJim Jagielski if ( !IsError )
547*b1cdbd2cSJim Jagielski {
548*b1cdbd2cSJim Jagielski if ( ( nAnzahl == 0 && !getenv("OLDSLOTHANDLING") ) || aArgs.hasElements() )
549*b1cdbd2cSJim Jagielski { // trying to call slots via uno
550*b1cdbd2cSJim Jagielski AddReferer();
551*b1cdbd2cSJim Jagielski if ( !aUnoUrl.Len() )
552*b1cdbd2cSJim Jagielski aUnoUrl = CUniString("slot:").Append( String::CreateFromInt32( nFunctionId ) );
553*b1cdbd2cSJim Jagielski ::com::sun::star::util::URL aTargetURL;
554*b1cdbd2cSJim Jagielski aTargetURL.Complete = aUnoUrl;
555*b1cdbd2cSJim Jagielski Reference < XFramesSupplier > xDesktop = Reference < XFramesSupplier >( ::comphelper::getProcessServiceFactory()->createInstance( CUniString("com.sun.star.frame.Desktop") ), UNO_QUERY );
556*b1cdbd2cSJim Jagielski Reference < XFrame > xFrame;
557*b1cdbd2cSJim Jagielski
558*b1cdbd2cSJim Jagielski if ( xDesktop.is() )
559*b1cdbd2cSJim Jagielski {
560*b1cdbd2cSJim Jagielski xFrame = xDesktop->getActiveFrame();
561*b1cdbd2cSJim Jagielski if ( !xFrame.is() )
562*b1cdbd2cSJim Jagielski {
563*b1cdbd2cSJim Jagielski Reference < XFrames > xFrames;
564*b1cdbd2cSJim Jagielski xFrames = xDesktop->getFrames();
565*b1cdbd2cSJim Jagielski if ( xFrames.is() && xFrames->getCount() > 0 )
566*b1cdbd2cSJim Jagielski {
567*b1cdbd2cSJim Jagielski Any aFrame = xFrames->getByIndex( xFrames->getCount() -1 );
568*b1cdbd2cSJim Jagielski aFrame >>= xFrame;
569*b1cdbd2cSJim Jagielski }
570*b1cdbd2cSJim Jagielski }
571*b1cdbd2cSJim Jagielski if ( !xFrame.is() )
572*b1cdbd2cSJim Jagielski {
573*b1cdbd2cSJim Jagielski if ( GetFirstDocFrame() )
574*b1cdbd2cSJim Jagielski GetFirstDocFrame()->ToTop();
575*b1cdbd2cSJim Jagielski xFrame = xDesktop->getActiveFrame();
576*b1cdbd2cSJim Jagielski }
577*b1cdbd2cSJim Jagielski }
578*b1cdbd2cSJim Jagielski
579*b1cdbd2cSJim Jagielski if ( xFrame.is() )
580*b1cdbd2cSJim Jagielski xDesktop = Reference < XFramesSupplier >( xFrame, UNO_QUERY );
581*b1cdbd2cSJim Jagielski else
582*b1cdbd2cSJim Jagielski xDesktop.clear();
583*b1cdbd2cSJim Jagielski
584*b1cdbd2cSJim Jagielski while ( xDesktop.is() && xDesktop->getActiveFrame().is() )
585*b1cdbd2cSJim Jagielski {
586*b1cdbd2cSJim Jagielski xFrame = xDesktop->getActiveFrame();
587*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
588*b1cdbd2cSJim Jagielski ::rtl::OUString aName;
589*b1cdbd2cSJim Jagielski if ( xFrame.is() )
590*b1cdbd2cSJim Jagielski aName = xFrame->getName();
591*b1cdbd2cSJim Jagielski #endif
592*b1cdbd2cSJim Jagielski xDesktop = Reference < XFramesSupplier >( xFrame, UNO_QUERY );
593*b1cdbd2cSJim Jagielski }
594*b1cdbd2cSJim Jagielski
595*b1cdbd2cSJim Jagielski if ( !xFrame.is() )
596*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR1( S_UNO_URL_EXECUTE_FAILED_NO_FRAME, aTargetURL.Complete ) );
597*b1cdbd2cSJim Jagielski else
598*b1cdbd2cSJim Jagielski {
599*b1cdbd2cSJim Jagielski Reference < ::com::sun::star::util::XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance( CUniString("com.sun.star.util.URLTransformer" )), UNO_QUERY );
600*b1cdbd2cSJim Jagielski xTrans->parseStrict( aTargetURL );
601*b1cdbd2cSJim Jagielski
602*b1cdbd2cSJim Jagielski Reference < XDispatchProvider > xProv( xFrame, UNO_QUERY );
603*b1cdbd2cSJim Jagielski Reference < XDispatch > xDisp;
604*b1cdbd2cSJim Jagielski while ( xProv.is() && !xDisp.is() )
605*b1cdbd2cSJim Jagielski {
606*b1cdbd2cSJim Jagielski xDisp = xProv->queryDispatch( aTargetURL, ::rtl::OUString(), 0 );
607*b1cdbd2cSJim Jagielski if ( !xDisp.is() )
608*b1cdbd2cSJim Jagielski {
609*b1cdbd2cSJim Jagielski xFrame = Reference < XFrame > ( xFrame->getCreator(), UNO_QUERY );
610*b1cdbd2cSJim Jagielski xProv = Reference < XDispatchProvider > ( xFrame, UNO_QUERY );
611*b1cdbd2cSJim Jagielski }
612*b1cdbd2cSJim Jagielski }
613*b1cdbd2cSJim Jagielski
614*b1cdbd2cSJim Jagielski if ( xDisp.is() )
615*b1cdbd2cSJim Jagielski {
616*b1cdbd2cSJim Jagielski Reference < XStatusListener > xListener = ( XStatusListener* )new SlotStatusListener;
617*b1cdbd2cSJim Jagielski xDisp->addStatusListener( xListener, aTargetURL );
618*b1cdbd2cSJim Jagielski if ( static_cast< SlotStatusListener* >(xListener.get())->bEnabled )
619*b1cdbd2cSJim Jagielski {
620*b1cdbd2cSJim Jagielski if ( bIsSlotInExecute )
621*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_SLOT_IN_EXECUTE ) );
622*b1cdbd2cSJim Jagielski else
623*b1cdbd2cSJim Jagielski {
624*b1cdbd2cSJim Jagielski bIsSlotInExecute = sal_True;
625*b1cdbd2cSJim Jagielski xDisp->dispatch( aTargetURL, aArgs );
626*b1cdbd2cSJim Jagielski bIsSlotInExecute = sal_False;
627*b1cdbd2cSJim Jagielski }
628*b1cdbd2cSJim Jagielski }
629*b1cdbd2cSJim Jagielski else
630*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR1( S_UNO_URL_EXECUTE_FAILED_DISABLED, aTargetURL.Complete ) );
631*b1cdbd2cSJim Jagielski xDisp->removeStatusListener( xListener, aTargetURL );
632*b1cdbd2cSJim Jagielski }
633*b1cdbd2cSJim Jagielski else
634*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR1( S_UNO_URL_EXECUTE_FAILED_NO_DISPATCHER, aTargetURL.Complete ) );
635*b1cdbd2cSJim Jagielski }
636*b1cdbd2cSJim Jagielski }
637*b1cdbd2cSJim Jagielski else
638*b1cdbd2cSJim Jagielski {
639*b1cdbd2cSJim Jagielski DirectLog( S_QAError, GEN_RES_STR0( S_DEPRECATED ) );
640*b1cdbd2cSJim Jagielski if ( !pTTProperties )
641*b1cdbd2cSJim Jagielski pTTProperties = new TTProperties();
642*b1cdbd2cSJim Jagielski
643*b1cdbd2cSJim Jagielski switch ( pTTProperties->ExecuteFunction( nFunctionId, pItemArr, EXECUTEMODE_DIALOGASYNCHRON | nUseBindings ) )
644*b1cdbd2cSJim Jagielski {
645*b1cdbd2cSJim Jagielski case TT_PR_ERR_NODISPATCHER:
646*b1cdbd2cSJim Jagielski {
647*b1cdbd2cSJim Jagielski ReportError( rtl::OString::valueOf((sal_Int32)nFunctionId), GEN_RES_STR0( S_SID_EXECUTE_FAILED_NO_DISPATCHER ) );
648*b1cdbd2cSJim Jagielski }
649*b1cdbd2cSJim Jagielski break;
650*b1cdbd2cSJim Jagielski case TT_PR_ERR_NOEXECUTE:
651*b1cdbd2cSJim Jagielski {
652*b1cdbd2cSJim Jagielski ReportError( rtl::OString::valueOf((sal_Int32)nFunctionId), GEN_RES_STR0( S_SID_EXECUTE_FAILED ) );
653*b1cdbd2cSJim Jagielski }
654*b1cdbd2cSJim Jagielski break;
655*b1cdbd2cSJim Jagielski }
656*b1cdbd2cSJim Jagielski }
657*b1cdbd2cSJim Jagielski }
658*b1cdbd2cSJim Jagielski
659*b1cdbd2cSJim Jagielski
660*b1cdbd2cSJim Jagielski /* Neues Verfahren ab 334!
661*b1cdbd2cSJim Jagielski Neue Methode zum einstellen, da� Modale Dialoge immer Asynchron aufgerufen werden
662*b1cdbd2cSJim Jagielski und echter Returnwert, ob Slot geklappt hat
663*b1cdbd2cSJim Jagielski und Testen ob Slot �berhaupt durch UI aufgerufen werden kann */
664*b1cdbd2cSJim Jagielski
665*b1cdbd2cSJim Jagielski
666*b1cdbd2cSJim Jagielski SendProfile( SlotString( nFunctionId ) );
667*b1cdbd2cSJim Jagielski delete this;
668*b1cdbd2cSJim Jagielski return sal_True;
669*b1cdbd2cSJim Jagielski }
670*b1cdbd2cSJim Jagielski
671*b1cdbd2cSJim Jagielski // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
672*b1cdbd2cSJim Jagielski
StatementUnoSlot(SCmdStream * pIn)673*b1cdbd2cSJim Jagielski StatementUnoSlot::StatementUnoSlot(SCmdStream *pIn)
674*b1cdbd2cSJim Jagielski {
675*b1cdbd2cSJim Jagielski QueStatement( NULL );
676*b1cdbd2cSJim Jagielski
677*b1cdbd2cSJim Jagielski pIn->Read( aUnoUrl );
678*b1cdbd2cSJim Jagielski
679*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
680*b1cdbd2cSJim Jagielski StatementList::m_pDbgWin->AddText( "UnoUrl:" );
681*b1cdbd2cSJim Jagielski StatementList::m_pDbgWin->AddText( aUnoUrl );
682*b1cdbd2cSJim Jagielski StatementList::m_pDbgWin->AddText( "\n" );
683*b1cdbd2cSJim Jagielski #endif
684*b1cdbd2cSJim Jagielski
685*b1cdbd2cSJim Jagielski }
686*b1cdbd2cSJim Jagielski
687*b1cdbd2cSJim Jagielski // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
688*b1cdbd2cSJim Jagielski
StatementCommand(StatementList * pAfterThis,sal_uInt16 MethodId,sal_uInt16 Params,sal_uInt16 Nr1)689*b1cdbd2cSJim Jagielski StatementCommand::StatementCommand( StatementList *pAfterThis, sal_uInt16 MethodId, sal_uInt16 Params, sal_uInt16 Nr1 )
690*b1cdbd2cSJim Jagielski : nMethodId( MethodId )
691*b1cdbd2cSJim Jagielski , nParams(Params)
692*b1cdbd2cSJim Jagielski , nNr1(Nr1)
693*b1cdbd2cSJim Jagielski , nNr2(0)
694*b1cdbd2cSJim Jagielski , nNr3(0)
695*b1cdbd2cSJim Jagielski , nNr4(0)
696*b1cdbd2cSJim Jagielski , nLNr1(0)
697*b1cdbd2cSJim Jagielski , aString1()
698*b1cdbd2cSJim Jagielski , aString2()
699*b1cdbd2cSJim Jagielski , bBool1(sal_False)
700*b1cdbd2cSJim Jagielski , bBool2(sal_False)
701*b1cdbd2cSJim Jagielski {
702*b1cdbd2cSJim Jagielski QueStatement( pAfterThis );
703*b1cdbd2cSJim Jagielski
704*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
705*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Directly adding Conmmand:" );
706*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Methode: " );
707*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
708*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Params:" );
709*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_1 ) {m_pDbgWin->AddText( " n1:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr1 ) );}
710*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_2 ) {m_pDbgWin->AddText( " n2:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr2 ) );}
711*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_3 ) {m_pDbgWin->AddText( " n3:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr3 ) );}
712*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_4 ) {m_pDbgWin->AddText( " n4:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr4 ) );}
713*b1cdbd2cSJim Jagielski if( nParams & PARAM_ULONG_1 ) {m_pDbgWin->AddText( " nl1:" );m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );}
714*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 ) {m_pDbgWin->AddText( " s1:" );m_pDbgWin->AddText( aString1 );}
715*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_2 ) {m_pDbgWin->AddText( " s2:" );m_pDbgWin->AddText( aString2 );}
716*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_1 ) {m_pDbgWin->AddText( " b1:" );m_pDbgWin->AddText( bBool1 ? "TRUE" : "FALSE" );}
717*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_2 ) {m_pDbgWin->AddText( " b2:" );m_pDbgWin->AddText( bBool2 ? "TRUE" : "FALSE" );}
718*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
719*b1cdbd2cSJim Jagielski #endif
720*b1cdbd2cSJim Jagielski }
721*b1cdbd2cSJim Jagielski
722*b1cdbd2cSJim Jagielski
StatementCommand(SCmdStream * pCmdIn)723*b1cdbd2cSJim Jagielski StatementCommand::StatementCommand( SCmdStream *pCmdIn )
724*b1cdbd2cSJim Jagielski : nMethodId(0)
725*b1cdbd2cSJim Jagielski , nParams(0)
726*b1cdbd2cSJim Jagielski , nNr1(0)
727*b1cdbd2cSJim Jagielski , nNr2(0)
728*b1cdbd2cSJim Jagielski , nNr3(0)
729*b1cdbd2cSJim Jagielski , nNr4(0)
730*b1cdbd2cSJim Jagielski , nLNr1(0)
731*b1cdbd2cSJim Jagielski , aString1()
732*b1cdbd2cSJim Jagielski , aString2()
733*b1cdbd2cSJim Jagielski , bBool1(sal_False)
734*b1cdbd2cSJim Jagielski , bBool2(sal_False)
735*b1cdbd2cSJim Jagielski {
736*b1cdbd2cSJim Jagielski QueStatement( NULL );
737*b1cdbd2cSJim Jagielski pCmdIn->Read( nMethodId );
738*b1cdbd2cSJim Jagielski pCmdIn->Read( nParams );
739*b1cdbd2cSJim Jagielski
740*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_1 ) pCmdIn->Read( nNr1 );
741*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_2 ) pCmdIn->Read( nNr2 );
742*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_3 ) pCmdIn->Read( nNr3 );
743*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_4 ) pCmdIn->Read( nNr4 );
744*b1cdbd2cSJim Jagielski if( nParams & PARAM_ULONG_1 ) pCmdIn->Read( nLNr1 );
745*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 ) pCmdIn->Read( aString1 );
746*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_2 ) pCmdIn->Read( aString2 );
747*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_1 ) pCmdIn->Read( bBool1 );
748*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_2 ) pCmdIn->Read( bBool2 );
749*b1cdbd2cSJim Jagielski
750*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
751*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Reading Conmmand:" );
752*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Methode: " );
753*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
754*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Params:" );
755*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_1 ) {m_pDbgWin->AddText( " n1:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr1 ) );}
756*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_2 ) {m_pDbgWin->AddText( " n2:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr2 ) );}
757*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_3 ) {m_pDbgWin->AddText( " n3:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr3 ) );}
758*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_4 ) {m_pDbgWin->AddText( " n4:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr4 ) );}
759*b1cdbd2cSJim Jagielski if( nParams & PARAM_ULONG_1 ) {m_pDbgWin->AddText( " nl1:" );m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );}
760*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 ) {m_pDbgWin->AddText( " s1:" );m_pDbgWin->AddText( aString1 );}
761*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_2 ) {m_pDbgWin->AddText( " s2:" );m_pDbgWin->AddText( aString2 );}
762*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_1 ) {m_pDbgWin->AddText( " b1:" );m_pDbgWin->AddText( bBool1 ? "TRUE" : "FALSE" );}
763*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_2 ) {m_pDbgWin->AddText( " b2:" );m_pDbgWin->AddText( bBool2 ? "TRUE" : "FALSE" );}
764*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
765*b1cdbd2cSJim Jagielski #endif
766*b1cdbd2cSJim Jagielski
767*b1cdbd2cSJim Jagielski if ( nMethodId == RC_AppAbort )
768*b1cdbd2cSJim Jagielski {
769*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
770*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "*Deleting all Commands:\n" );
771*b1cdbd2cSJim Jagielski #endif
772*b1cdbd2cSJim Jagielski bReadingCommands = sal_False;
773*b1cdbd2cSJim Jagielski while ( StatementList::pFirst != this ) // Alles L�schen au�er mich selbst
774*b1cdbd2cSJim Jagielski {
775*b1cdbd2cSJim Jagielski StatementList *pDeQue = StatementList::pFirst;
776*b1cdbd2cSJim Jagielski pDeQue->Advance();
777*b1cdbd2cSJim Jagielski delete pDeQue;
778*b1cdbd2cSJim Jagielski }
779*b1cdbd2cSJim Jagielski bReadingCommands = sal_True;
780*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
781*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "*Done deleting all Commands:\n" );
782*b1cdbd2cSJim Jagielski #endif
783*b1cdbd2cSJim Jagielski }
784*b1cdbd2cSJim Jagielski
785*b1cdbd2cSJim Jagielski }
786*b1cdbd2cSJim Jagielski
WriteControlData(Window * pBase,sal_uLong nConf,sal_Bool bFirst)787*b1cdbd2cSJim Jagielski void StatementCommand::WriteControlData( Window *pBase, sal_uLong nConf, sal_Bool bFirst )
788*b1cdbd2cSJim Jagielski {
789*b1cdbd2cSJim Jagielski
790*b1cdbd2cSJim Jagielski if ( IsDialog(pBase) && !bFirst )
791*b1cdbd2cSJim Jagielski return;
792*b1cdbd2cSJim Jagielski
793*b1cdbd2cSJim Jagielski if ( bFirst )
794*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, rtl::OString(), (comm_ULONG)nConf | DH_MODE_DATA_VALID, UniString(), sal_True );
795*b1cdbd2cSJim Jagielski
796*b1cdbd2cSJim Jagielski if ( bFirst )
797*b1cdbd2cSJim Jagielski {
798*b1cdbd2cSJim Jagielski if ( pBase->GetType() == WINDOW_WINDOW && pBase->GetParent() && pBase->GetParent()->GetType() == WINDOW_CONTROL &&
799*b1cdbd2cSJim Jagielski dynamic_cast< svt::table::TableControl* > ( pBase->GetParent() ) )
800*b1cdbd2cSJim Jagielski pBase = pBase->GetParent();
801*b1cdbd2cSJim Jagielski }
802*b1cdbd2cSJim Jagielski
803*b1cdbd2cSJim Jagielski { // Klammerung, so da� der String nicht w�hrend der Rekursion bestehen bleibt
804*b1cdbd2cSJim Jagielski String aName;
805*b1cdbd2cSJim Jagielski sal_Bool bSkip = sal_False;
806*b1cdbd2cSJim Jagielski
807*b1cdbd2cSJim Jagielski switch ( pBase->GetType() )
808*b1cdbd2cSJim Jagielski {
809*b1cdbd2cSJim Jagielski case WINDOW_RADIOBUTTON:
810*b1cdbd2cSJim Jagielski case WINDOW_CHECKBOX:
811*b1cdbd2cSJim Jagielski case WINDOW_TRISTATEBOX:
812*b1cdbd2cSJim Jagielski case WINDOW_PUSHBUTTON:
813*b1cdbd2cSJim Jagielski case WINDOW_OKBUTTON:
814*b1cdbd2cSJim Jagielski case WINDOW_CANCELBUTTON:
815*b1cdbd2cSJim Jagielski case WINDOW_IMAGERADIOBUTTON:
816*b1cdbd2cSJim Jagielski case WINDOW_IMAGEBUTTON:
817*b1cdbd2cSJim Jagielski case WINDOW_MENUBUTTON:
818*b1cdbd2cSJim Jagielski case WINDOW_MOREBUTTON:
819*b1cdbd2cSJim Jagielski case WINDOW_TABPAGE:
820*b1cdbd2cSJim Jagielski case WINDOW_MODALDIALOG:
821*b1cdbd2cSJim Jagielski case WINDOW_FLOATINGWINDOW:
822*b1cdbd2cSJim Jagielski case WINDOW_MODELESSDIALOG:
823*b1cdbd2cSJim Jagielski case WINDOW_WORKWINDOW:
824*b1cdbd2cSJim Jagielski case WINDOW_DOCKINGWINDOW:
825*b1cdbd2cSJim Jagielski case WINDOW_CONTROL:
826*b1cdbd2cSJim Jagielski
827*b1cdbd2cSJim Jagielski case WINDOW_FILEDIALOG:
828*b1cdbd2cSJim Jagielski case WINDOW_PATHDIALOG:
829*b1cdbd2cSJim Jagielski case WINDOW_PRINTDIALOG:
830*b1cdbd2cSJim Jagielski case WINDOW_PRINTERSETUPDIALOG:
831*b1cdbd2cSJim Jagielski case WINDOW_COLORDIALOG:
832*b1cdbd2cSJim Jagielski case WINDOW_TABDIALOG:
833*b1cdbd2cSJim Jagielski
834*b1cdbd2cSJim Jagielski case WINDOW_BUTTONDIALOG:
835*b1cdbd2cSJim Jagielski
836*b1cdbd2cSJim Jagielski case WINDOW_MENUBARWINDOW:
837*b1cdbd2cSJim Jagielski aName = pBase->GetText().EraseAllChars('~');
838*b1cdbd2cSJim Jagielski break;
839*b1cdbd2cSJim Jagielski
840*b1cdbd2cSJim Jagielski case WINDOW_EDIT:
841*b1cdbd2cSJim Jagielski case WINDOW_MULTILINEEDIT:
842*b1cdbd2cSJim Jagielski case WINDOW_MULTILISTBOX:
843*b1cdbd2cSJim Jagielski case WINDOW_LISTBOX:
844*b1cdbd2cSJim Jagielski case WINDOW_COMBOBOX:
845*b1cdbd2cSJim Jagielski case WINDOW_SPINFIELD:
846*b1cdbd2cSJim Jagielski case WINDOW_PATTERNFIELD:
847*b1cdbd2cSJim Jagielski case WINDOW_NUMERICFIELD:
848*b1cdbd2cSJim Jagielski case WINDOW_METRICFIELD:
849*b1cdbd2cSJim Jagielski case WINDOW_CURRENCYFIELD:
850*b1cdbd2cSJim Jagielski case WINDOW_DATEFIELD:
851*b1cdbd2cSJim Jagielski case WINDOW_TIMEFIELD:
852*b1cdbd2cSJim Jagielski case WINDOW_NUMERICBOX:
853*b1cdbd2cSJim Jagielski case WINDOW_METRICBOX:
854*b1cdbd2cSJim Jagielski case WINDOW_CURRENCYBOX:
855*b1cdbd2cSJim Jagielski case WINDOW_DATEBOX:
856*b1cdbd2cSJim Jagielski case WINDOW_TIMEBOX:
857*b1cdbd2cSJim Jagielski case WINDOW_PATTERNBOX:
858*b1cdbd2cSJim Jagielski case WINDOW_TOOLBOX:
859*b1cdbd2cSJim Jagielski aName = pBase->GetQuickHelpText();
860*b1cdbd2cSJim Jagielski break;
861*b1cdbd2cSJim Jagielski
862*b1cdbd2cSJim Jagielski case WINDOW_MESSBOX:
863*b1cdbd2cSJim Jagielski case WINDOW_INFOBOX:
864*b1cdbd2cSJim Jagielski case WINDOW_WARNINGBOX:
865*b1cdbd2cSJim Jagielski case WINDOW_ERRORBOX:
866*b1cdbd2cSJim Jagielski case WINDOW_QUERYBOX:
867*b1cdbd2cSJim Jagielski aName = ((MessBox*)pBase)->GetMessText();
868*b1cdbd2cSJim Jagielski break;
869*b1cdbd2cSJim Jagielski
870*b1cdbd2cSJim Jagielski default:
871*b1cdbd2cSJim Jagielski if ( pBase->GetUniqueOrHelpId().isEmpty() && !( nConf & DH_MODE_ALLWIN ) )
872*b1cdbd2cSJim Jagielski bSkip = sal_True;
873*b1cdbd2cSJim Jagielski break;
874*b1cdbd2cSJim Jagielski }
875*b1cdbd2cSJim Jagielski
876*b1cdbd2cSJim Jagielski if ( !bSkip )
877*b1cdbd2cSJim Jagielski {
878*b1cdbd2cSJim Jagielski if ( aName.Len() == 0 )
879*b1cdbd2cSJim Jagielski aName = pBase->GetQuickHelpText();
880*b1cdbd2cSJim Jagielski if ( aName.Len() == 0 )
881*b1cdbd2cSJim Jagielski aName = pBase->GetHelpText();
882*b1cdbd2cSJim Jagielski if ( aName.Len() == 0 )
883*b1cdbd2cSJim Jagielski aName = pBase->GetText();
884*b1cdbd2cSJim Jagielski
885*b1cdbd2cSJim Jagielski
886*b1cdbd2cSJim Jagielski String aTypeSuffix;
887*b1cdbd2cSJim Jagielski if ( pBase->GetType() == WINDOW_CONTROL )
888*b1cdbd2cSJim Jagielski {
889*b1cdbd2cSJim Jagielski if ( dynamic_cast< EditBrowseBox* >(pBase) )
890*b1cdbd2cSJim Jagielski aTypeSuffix.AppendAscii( "/BrowseBox", 10 );
891*b1cdbd2cSJim Jagielski else if ( dynamic_cast< ValueSet* >(pBase) )
892*b1cdbd2cSJim Jagielski aTypeSuffix.AppendAscii( "/ValueSet", 9 );
893*b1cdbd2cSJim Jagielski else if ( dynamic_cast< ORoadmap* >(pBase) )
894*b1cdbd2cSJim Jagielski aTypeSuffix.AppendAscii( "/RoadMap", 8 );
895*b1cdbd2cSJim Jagielski else if ( dynamic_cast< IExtensionListBox* >(pBase) )
896*b1cdbd2cSJim Jagielski aTypeSuffix.AppendAscii( "/ExtensionListBox" );
897*b1cdbd2cSJim Jagielski else if ( dynamic_cast< svt::table::TableControl* >(pBase) )
898*b1cdbd2cSJim Jagielski aTypeSuffix.AppendAscii( "/TableControl" );
899*b1cdbd2cSJim Jagielski else
900*b1cdbd2cSJim Jagielski aTypeSuffix.AppendAscii( "/Unknown", 8 );
901*b1cdbd2cSJim Jagielski }
902*b1cdbd2cSJim Jagielski
903*b1cdbd2cSJim Jagielski rtl::OString aId = pBase->GetUniqueOrHelpId();
904*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, aId, (comm_ULONG)pBase->GetType(),
905*b1cdbd2cSJim Jagielski TypeString(pBase->GetType()).Append(aTypeSuffix).AppendAscii(": ").Append(aName), sal_False );
906*b1cdbd2cSJim Jagielski
907*b1cdbd2cSJim Jagielski
908*b1cdbd2cSJim Jagielski if ( pBase->GetType() == WINDOW_TOOLBOX ) // Buttons und Controls auf Toolboxen.
909*b1cdbd2cSJim Jagielski {
910*b1cdbd2cSJim Jagielski ToolBox *pTB = ((ToolBox*)pBase);
911*b1cdbd2cSJim Jagielski sal_uInt16 i;
912*b1cdbd2cSJim Jagielski for ( i = 0; i < pTB->GetItemCount() ; i++ )
913*b1cdbd2cSJim Jagielski {
914*b1cdbd2cSJim Jagielski aName = String();
915*b1cdbd2cSJim Jagielski // if ( aName.Len() == 0 )
916*b1cdbd2cSJim Jagielski // aName = pTB->GetQuickHelpText();
917*b1cdbd2cSJim Jagielski if ( aName.Len() == 0 )
918*b1cdbd2cSJim Jagielski aName = pTB->GetHelpText( pTB->GetItemId( i ) );
919*b1cdbd2cSJim Jagielski if ( aName.Len() == 0 )
920*b1cdbd2cSJim Jagielski aName = pTB->GetItemText( pTB->GetItemId( i ) );
921*b1cdbd2cSJim Jagielski
922*b1cdbd2cSJim Jagielski Window *pItemWin;
923*b1cdbd2cSJim Jagielski pItemWin = pTB->GetItemWindow( pTB->GetItemId( i ) );
924*b1cdbd2cSJim Jagielski if ( pTB->GetItemType( i ) == TOOLBOXITEM_BUTTON && ( !pItemWin || !pItemWin->IsVisible() ) )
925*b1cdbd2cSJim Jagielski {
926*b1cdbd2cSJim Jagielski if ( pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
927*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, Str2Id(pTB->GetItemCommand(pTB->GetItemId( i ))), (comm_ULONG)WINDOW_BUTTON,
928*b1cdbd2cSJim Jagielski TypeString(WINDOW_BUTTON).AppendAscii(": ").Append(aName), sal_False );
929*b1cdbd2cSJim Jagielski if ( !pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
930*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, pTB->GetHelpId(pTB->GetItemId( i )), (comm_ULONG)WINDOW_BUTTON,
931*b1cdbd2cSJim Jagielski TypeString(WINDOW_BUTTON).AppendAscii(": ").Append(aName), sal_False );
932*b1cdbd2cSJim Jagielski }
933*b1cdbd2cSJim Jagielski else
934*b1cdbd2cSJim Jagielski {
935*b1cdbd2cSJim Jagielski if ( pItemWin )
936*b1cdbd2cSJim Jagielski {
937*b1cdbd2cSJim Jagielski if ( pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
938*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, Str2Id(pTB->GetItemCommand(pTB->GetItemId( i ))), (comm_ULONG)pItemWin->GetType(),
939*b1cdbd2cSJim Jagielski TypeString(pItemWin->GetType()).AppendAscii(": ").Append(aName), sal_False );
940*b1cdbd2cSJim Jagielski if ( !pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
941*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, pTB->GetHelpId(pTB->GetItemId( i )), (comm_ULONG)pItemWin->GetType(),
942*b1cdbd2cSJim Jagielski TypeString(pItemWin->GetType()).AppendAscii(": ").Append(aName), sal_False );
943*b1cdbd2cSJim Jagielski sal_uInt16 ii;
944*b1cdbd2cSJim Jagielski for( ii = 0 ; ii < pItemWin->GetChildCount(); ii++ )
945*b1cdbd2cSJim Jagielski WriteControlData( pItemWin->GetChild(ii), nConf, sal_False );
946*b1cdbd2cSJim Jagielski }
947*b1cdbd2cSJim Jagielski else
948*b1cdbd2cSJim Jagielski {
949*b1cdbd2cSJim Jagielski if ( nConf & DH_MODE_ALLWIN )
950*b1cdbd2cSJim Jagielski {
951*b1cdbd2cSJim Jagielski String aToolBoxItemType;
952*b1cdbd2cSJim Jagielski switch ( pTB->GetItemType( i ) )
953*b1cdbd2cSJim Jagielski {
954*b1cdbd2cSJim Jagielski case TOOLBOXITEM_DONTKNOW:
955*b1cdbd2cSJim Jagielski aToolBoxItemType.AssignAscii("TOOLBOXITEM_DONTKNOW");
956*b1cdbd2cSJim Jagielski break;
957*b1cdbd2cSJim Jagielski case TOOLBOXITEM_BUTTON:
958*b1cdbd2cSJim Jagielski aToolBoxItemType.AssignAscii("TOOLBOXITEM_BUTTON");
959*b1cdbd2cSJim Jagielski break;
960*b1cdbd2cSJim Jagielski case TOOLBOXITEM_SPACE:
961*b1cdbd2cSJim Jagielski aToolBoxItemType.AssignAscii("TOOLBOXITEM_SPACE");
962*b1cdbd2cSJim Jagielski break;
963*b1cdbd2cSJim Jagielski case TOOLBOXITEM_SEPARATOR:
964*b1cdbd2cSJim Jagielski aToolBoxItemType.AssignAscii("TOOLBOXITEM_SEPARATOR");
965*b1cdbd2cSJim Jagielski break;
966*b1cdbd2cSJim Jagielski case TOOLBOXITEM_BREAK:
967*b1cdbd2cSJim Jagielski aToolBoxItemType.AssignAscii("TOOLBOXITEM_BREAK");
968*b1cdbd2cSJim Jagielski break;
969*b1cdbd2cSJim Jagielski default:
970*b1cdbd2cSJim Jagielski DBG_ERROR1( "Unknown TOOLBOXITEM %i", pTB->GetItemType( i ) );
971*b1cdbd2cSJim Jagielski }
972*b1cdbd2cSJim Jagielski if ( pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
973*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, Str2Id( pTB->GetItemCommand(pTB->GetItemId( i )) ), (comm_ULONG)WINDOW_BASE,
974*b1cdbd2cSJim Jagielski aToolBoxItemType.AppendAscii(": ").Append(aName), sal_False );
975*b1cdbd2cSJim Jagielski if ( !pTB->GetItemCommand(pTB->GetItemId( i )).Len() || ( nConf & DH_MODE_ALLWIN ) )
976*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, pTB->GetHelpId(pTB->GetItemId( i )), (comm_ULONG)WINDOW_BASE,
977*b1cdbd2cSJim Jagielski aToolBoxItemType.AppendAscii(": ").Append(aName), sal_False );
978*b1cdbd2cSJim Jagielski }
979*b1cdbd2cSJim Jagielski }
980*b1cdbd2cSJim Jagielski }
981*b1cdbd2cSJim Jagielski }
982*b1cdbd2cSJim Jagielski
983*b1cdbd2cSJim Jagielski return; // ToolBox ist hier schon komplett abgehandelt.
984*b1cdbd2cSJim Jagielski }
985*b1cdbd2cSJim Jagielski
986*b1cdbd2cSJim Jagielski
987*b1cdbd2cSJim Jagielski if ( pBase->GetType() == WINDOW_BUTTONDIALOG // Buttons auf Buttondialogen mit ID
988*b1cdbd2cSJim Jagielski || pBase->GetType() == WINDOW_MESSBOX
989*b1cdbd2cSJim Jagielski || pBase->GetType() == WINDOW_INFOBOX
990*b1cdbd2cSJim Jagielski || pBase->GetType() == WINDOW_WARNINGBOX
991*b1cdbd2cSJim Jagielski || pBase->GetType() == WINDOW_ERRORBOX
992*b1cdbd2cSJim Jagielski || pBase->GetType() == WINDOW_QUERYBOX )
993*b1cdbd2cSJim Jagielski {
994*b1cdbd2cSJim Jagielski ButtonDialog *pBD = ((ButtonDialog*)pBase);
995*b1cdbd2cSJim Jagielski sal_uInt16 i;
996*b1cdbd2cSJim Jagielski for ( i = 0; i < pBD->GetButtonCount() ; i++ )
997*b1cdbd2cSJim Jagielski {
998*b1cdbd2cSJim Jagielski aName = String();
999*b1cdbd2cSJim Jagielski if ( aName.Len() == 0 )
1000*b1cdbd2cSJim Jagielski aName = pBD->GetPushButton( pBD->GetButtonId(i) )->GetText();
1001*b1cdbd2cSJim Jagielski ByteString aID;
1002*b1cdbd2cSJim Jagielski switch ( pBD->GetButtonId(i) )
1003*b1cdbd2cSJim Jagielski {
1004*b1cdbd2cSJim Jagielski case BUTTONID_OK:
1005*b1cdbd2cSJim Jagielski aID.Assign("Ok");
1006*b1cdbd2cSJim Jagielski break;
1007*b1cdbd2cSJim Jagielski case BUTTONID_CANCEL:
1008*b1cdbd2cSJim Jagielski aID.Assign("Cancel");
1009*b1cdbd2cSJim Jagielski break;
1010*b1cdbd2cSJim Jagielski case BUTTONID_YES:
1011*b1cdbd2cSJim Jagielski aID.Assign("Yes");
1012*b1cdbd2cSJim Jagielski break;
1013*b1cdbd2cSJim Jagielski case BUTTONID_NO:
1014*b1cdbd2cSJim Jagielski aID.Assign("No");
1015*b1cdbd2cSJim Jagielski break;
1016*b1cdbd2cSJim Jagielski case BUTTONID_RETRY:
1017*b1cdbd2cSJim Jagielski aID.Assign("Retry");
1018*b1cdbd2cSJim Jagielski break;
1019*b1cdbd2cSJim Jagielski case BUTTONID_HELP:
1020*b1cdbd2cSJim Jagielski aID.Assign("Help");
1021*b1cdbd2cSJim Jagielski break;
1022*b1cdbd2cSJim Jagielski default:
1023*b1cdbd2cSJim Jagielski aID = ByteString::CreateFromInt32( pBD->GetButtonId(i) );
1024*b1cdbd2cSJim Jagielski break;
1025*b1cdbd2cSJim Jagielski }
1026*b1cdbd2cSJim Jagielski
1027*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, aID, (comm_ULONG)pBD->GetPushButton( pBD->GetButtonId(i) )->GetType(), // So da� der Text angezeigt wird!
1028*b1cdbd2cSJim Jagielski TypeString(pBD->GetPushButton( pBD->GetButtonId(i) )->GetType()).AppendAscii(": ").Append(aName)
1029*b1cdbd2cSJim Jagielski .AppendAscii(" ButtonId = ").AppendAscii( aID.GetBuffer() ), sal_False );
1030*b1cdbd2cSJim Jagielski }
1031*b1cdbd2cSJim Jagielski
1032*b1cdbd2cSJim Jagielski return; // ButtonDialog ist hier schon komplett abgehandelt.
1033*b1cdbd2cSJim Jagielski }
1034*b1cdbd2cSJim Jagielski
1035*b1cdbd2cSJim Jagielski
1036*b1cdbd2cSJim Jagielski Menu* pMenu = GetMatchingMenu( pBase );
1037*b1cdbd2cSJim Jagielski
1038*b1cdbd2cSJim Jagielski if ( pMenu ) // Menus
1039*b1cdbd2cSJim Jagielski {
1040*b1cdbd2cSJim Jagielski sal_uInt16 i;
1041*b1cdbd2cSJim Jagielski for ( i = 0; i < pMenu->GetItemCount() ; i++ )
1042*b1cdbd2cSJim Jagielski {
1043*b1cdbd2cSJim Jagielski sal_uInt16 nID = pMenu->GetItemId( i );
1044*b1cdbd2cSJim Jagielski
1045*b1cdbd2cSJim Jagielski aName = String();
1046*b1cdbd2cSJim Jagielski if ( aName.Len() == 0 )
1047*b1cdbd2cSJim Jagielski aName = pMenu->GetHelpText( nID );
1048*b1cdbd2cSJim Jagielski if ( aName.Len() == 0 )
1049*b1cdbd2cSJim Jagielski aName = pMenu->GetItemText( nID );
1050*b1cdbd2cSJim Jagielski
1051*b1cdbd2cSJim Jagielski
1052*b1cdbd2cSJim Jagielski if ( pMenu->GetItemType( i ) == MENUITEM_STRING || pMenu->GetItemType( i ) == MENUITEM_IMAGE || pMenu->GetItemType( i ) == MENUITEM_STRINGIMAGE || (nConf & DH_MODE_ALLWIN) )
1053*b1cdbd2cSJim Jagielski {
1054*b1cdbd2cSJim Jagielski String aMenuItemType;
1055*b1cdbd2cSJim Jagielski switch ( pMenu->GetItemType( i ) )
1056*b1cdbd2cSJim Jagielski {
1057*b1cdbd2cSJim Jagielski case MENUITEM_STRING:
1058*b1cdbd2cSJim Jagielski aMenuItemType.AssignAscii("MENUITEM_STRING");
1059*b1cdbd2cSJim Jagielski break;
1060*b1cdbd2cSJim Jagielski case MENUITEM_STRINGIMAGE:
1061*b1cdbd2cSJim Jagielski aMenuItemType.AssignAscii("MENUITEM_STRINGIMAGE");
1062*b1cdbd2cSJim Jagielski break;
1063*b1cdbd2cSJim Jagielski case MENUITEM_IMAGE:
1064*b1cdbd2cSJim Jagielski aMenuItemType.AssignAscii("MENUITEM_IMAGE");
1065*b1cdbd2cSJim Jagielski break;
1066*b1cdbd2cSJim Jagielski case MENUITEM_SEPARATOR:
1067*b1cdbd2cSJim Jagielski aMenuItemType.AssignAscii("MENUITEM_SEPARATOR");
1068*b1cdbd2cSJim Jagielski break;
1069*b1cdbd2cSJim Jagielski case MENUITEM_DONTKNOW:
1070*b1cdbd2cSJim Jagielski aMenuItemType.AssignAscii("MENUITEM_DONTKNOW");
1071*b1cdbd2cSJim Jagielski break;
1072*b1cdbd2cSJim Jagielski default:
1073*b1cdbd2cSJim Jagielski DBG_ERROR1( "Unknown MENUITEM %i", pMenu->GetItemType( i ) );
1074*b1cdbd2cSJim Jagielski }
1075*b1cdbd2cSJim Jagielski if ( pMenu->GetItemCommand(nID).Len() || ( nConf & DH_MODE_ALLWIN ) )
1076*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, Str2Id( pMenu->GetItemCommand(nID) ), (comm_ULONG)0,
1077*b1cdbd2cSJim Jagielski aMenuItemType.AppendAscii(": ").Append(aName), sal_False );
1078*b1cdbd2cSJim Jagielski if ( !pMenu->GetItemCommand(nID).Len() || ( nConf & DH_MODE_ALLWIN ) )
1079*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_WinInfo, rtl::OString::valueOf( (sal_Int32)nID ), (comm_ULONG)0,
1080*b1cdbd2cSJim Jagielski aMenuItemType.AppendAscii(": ").Append(aName), sal_False );
1081*b1cdbd2cSJim Jagielski }
1082*b1cdbd2cSJim Jagielski }
1083*b1cdbd2cSJim Jagielski
1084*b1cdbd2cSJim Jagielski return; // Menu ist hier schon komplett abgehandelt.
1085*b1cdbd2cSJim Jagielski }
1086*b1cdbd2cSJim Jagielski }
1087*b1cdbd2cSJim Jagielski }
1088*b1cdbd2cSJim Jagielski
1089*b1cdbd2cSJim Jagielski for( sal_uInt16 i = 0 ; i < pBase->GetChildCount(); i++ )
1090*b1cdbd2cSJim Jagielski WriteControlData( pBase->GetChild(i), nConf, sal_False );
1091*b1cdbd2cSJim Jagielski }
1092*b1cdbd2cSJim Jagielski
1093*b1cdbd2cSJim Jagielski class SysWinContainer : public WorkWindow
1094*b1cdbd2cSJim Jagielski {
1095*b1cdbd2cSJim Jagielski private:
1096*b1cdbd2cSJim Jagielski ToolBox *pClientWin;
1097*b1cdbd2cSJim Jagielski DockingWindow *pDock;
1098*b1cdbd2cSJim Jagielski public:
1099*b1cdbd2cSJim Jagielski SysWinContainer( ToolBox *pClient );
1100*b1cdbd2cSJim Jagielski ~SysWinContainer();
1101*b1cdbd2cSJim Jagielski virtual void Resize();
1102*b1cdbd2cSJim Jagielski virtual void Resizing( Size& rSize );
1103*b1cdbd2cSJim Jagielski };
1104*b1cdbd2cSJim Jagielski
SysWinContainer(ToolBox * pClient)1105*b1cdbd2cSJim Jagielski SysWinContainer::SysWinContainer( ToolBox *pClient )
1106*b1cdbd2cSJim Jagielski : WorkWindow( NULL, WB_BORDER | WB_SIZEMOVE | WB_CLOSEABLE )
1107*b1cdbd2cSJim Jagielski , pClientWin( pClient )
1108*b1cdbd2cSJim Jagielski {
1109*b1cdbd2cSJim Jagielski pDock = new DockingWindow( this );
1110*b1cdbd2cSJim Jagielski pClientWin->SetParent( pDock );
1111*b1cdbd2cSJim Jagielski pClientWin->SetFloatingMode( sal_False );
1112*b1cdbd2cSJim Jagielski SetText( pClient->GetText() );
1113*b1cdbd2cSJim Jagielski SetPosPixel( Point( 1,40 ) );
1114*b1cdbd2cSJim Jagielski Resize();
1115*b1cdbd2cSJim Jagielski pDock->Show();
1116*b1cdbd2cSJim Jagielski EnableAlwaysOnTop();
1117*b1cdbd2cSJim Jagielski Show();
1118*b1cdbd2cSJim Jagielski }
1119*b1cdbd2cSJim Jagielski
~SysWinContainer()1120*b1cdbd2cSJim Jagielski SysWinContainer::~SysWinContainer()
1121*b1cdbd2cSJim Jagielski {
1122*b1cdbd2cSJim Jagielski delete pDock;
1123*b1cdbd2cSJim Jagielski }
1124*b1cdbd2cSJim Jagielski
Resize()1125*b1cdbd2cSJim Jagielski void SysWinContainer::Resize()
1126*b1cdbd2cSJim Jagielski {
1127*b1cdbd2cSJim Jagielski Size aSize( GetOutputSizePixel() );
1128*b1cdbd2cSJim Jagielski Resizing( aSize );
1129*b1cdbd2cSJim Jagielski // aSize = pClientWin->GetSizePixel();
1130*b1cdbd2cSJim Jagielski // aSize = pClientWin->CalcWindowSizePixel();
1131*b1cdbd2cSJim Jagielski if ( aSize != GetSizePixel() )
1132*b1cdbd2cSJim Jagielski {
1133*b1cdbd2cSJim Jagielski SetOutputSizePixel( aSize );
1134*b1cdbd2cSJim Jagielski pDock->SetSizePixel( aSize );
1135*b1cdbd2cSJim Jagielski pClientWin->SetSizePixel( aSize );
1136*b1cdbd2cSJim Jagielski }
1137*b1cdbd2cSJim Jagielski }
1138*b1cdbd2cSJim Jagielski
Resizing(Size & rSize)1139*b1cdbd2cSJim Jagielski void SysWinContainer::Resizing( Size& rSize )
1140*b1cdbd2cSJim Jagielski {
1141*b1cdbd2cSJim Jagielski Size aSize;
1142*b1cdbd2cSJim Jagielski Size aBestSize;
1143*b1cdbd2cSJim Jagielski sal_uInt16 i;
1144*b1cdbd2cSJim Jagielski sal_Bool bHasValue = sal_False;
1145*b1cdbd2cSJim Jagielski sal_uLong nBestValue = 0;
1146*b1cdbd2cSJim Jagielski sal_uLong nThisValue;
1147*b1cdbd2cSJim Jagielski for ( i=1 ; i<=1 ; i++ )
1148*b1cdbd2cSJim Jagielski {
1149*b1cdbd2cSJim Jagielski aSize = pClientWin->CalcWindowSizePixel( i );
1150*b1cdbd2cSJim Jagielski nThisValue = Abs( aSize.Width() - rSize.Width() ) + Abs( aSize.Height() - rSize.Height() );
1151*b1cdbd2cSJim Jagielski if ( !bHasValue || ( nThisValue < nBestValue ) )
1152*b1cdbd2cSJim Jagielski {
1153*b1cdbd2cSJim Jagielski nBestValue = nThisValue;
1154*b1cdbd2cSJim Jagielski aBestSize = aSize;
1155*b1cdbd2cSJim Jagielski bHasValue = sal_True;
1156*b1cdbd2cSJim Jagielski }
1157*b1cdbd2cSJim Jagielski }
1158*b1cdbd2cSJim Jagielski rSize = aBestSize;
1159*b1cdbd2cSJim Jagielski }
1160*b1cdbd2cSJim Jagielski
1161*b1cdbd2cSJim Jagielski
1162*b1cdbd2cSJim Jagielski class DisplayHidWin : public ToolBox
1163*b1cdbd2cSJim Jagielski {
1164*b1cdbd2cSJim Jagielski Edit *pEdit;
1165*b1cdbd2cSJim Jagielski Size aMinEditSize;
1166*b1cdbd2cSJim Jagielski sal_uInt16 nLastItemID;
1167*b1cdbd2cSJim Jagielski sal_Bool bIsDraging;
1168*b1cdbd2cSJim Jagielski sal_Bool bIsPermanentDraging;
1169*b1cdbd2cSJim Jagielski void SetDraging( sal_Bool bNewDraging );
1170*b1cdbd2cSJim Jagielski Image *pShow, *pShow2;
1171*b1cdbd2cSJim Jagielski sal_Bool bConfigChanged;
1172*b1cdbd2cSJim Jagielski void EnableButtons( sal_uLong nConf );
1173*b1cdbd2cSJim Jagielski
1174*b1cdbd2cSJim Jagielski sal_uLong nEventHookID;
stub_VCLEventHookProc(NotifyEvent & rEvt,void * pData)1175*b1cdbd2cSJim Jagielski static long stub_VCLEventHookProc( NotifyEvent& rEvt, void* pData )
1176*b1cdbd2cSJim Jagielski {
1177*b1cdbd2cSJim Jagielski return ((DisplayHidWin*)pData)->VCLEventHook( rEvt );
1178*b1cdbd2cSJim Jagielski }
1179*b1cdbd2cSJim Jagielski
1180*b1cdbd2cSJim Jagielski long VCLEventHook( NotifyEvent& rEvt );
1181*b1cdbd2cSJim Jagielski Window *pLastMouseMoveWin;
1182*b1cdbd2cSJim Jagielski
1183*b1cdbd2cSJim Jagielski SysWinContainer *pContainer;
1184*b1cdbd2cSJim Jagielski
1185*b1cdbd2cSJim Jagielski // aborting by pressing shist twice
1186*b1cdbd2cSJim Jagielski sal_Bool bOldShift;
1187*b1cdbd2cSJim Jagielski Time aLatest;
1188*b1cdbd2cSJim Jagielski sal_uInt16 nShiftCount;
1189*b1cdbd2cSJim Jagielski
1190*b1cdbd2cSJim Jagielski public:
1191*b1cdbd2cSJim Jagielski DisplayHidWin();
1192*b1cdbd2cSJim Jagielski ~DisplayHidWin();
1193*b1cdbd2cSJim Jagielski
1194*b1cdbd2cSJim Jagielski virtual void Tracking( const TrackingEvent& rTEvt );
1195*b1cdbd2cSJim Jagielski virtual void Click();
1196*b1cdbd2cSJim Jagielski virtual void Select();
1197*b1cdbd2cSJim Jagielski virtual void SetText( const XubString& rStr );
1198*b1cdbd2cSJim Jagielski
SetDisplayText(const String & aNewText)1199*b1cdbd2cSJim Jagielski void SetDisplayText( const String &aNewText ){ pEdit->SetText(aNewText); }
GetDisplayText() const1200*b1cdbd2cSJim Jagielski String GetDisplayText() const { return pEdit->GetText(); }
IsDisplayTextModified() const1201*b1cdbd2cSJim Jagielski sal_Bool IsDisplayTextModified() const { return pEdit->IsModified(); }
ClearDisplayTextModified() const1202*b1cdbd2cSJim Jagielski void ClearDisplayTextModified() const { pEdit->ClearModifyFlag(); }
1203*b1cdbd2cSJim Jagielski
1204*b1cdbd2cSJim Jagielski void SetConfig( sal_uLong nConf );
1205*b1cdbd2cSJim Jagielski sal_uLong GetConfig();
1206*b1cdbd2cSJim Jagielski
IsConfigChanged()1207*b1cdbd2cSJim Jagielski sal_Bool IsConfigChanged() { return bConfigChanged; }
ConfigSent()1208*b1cdbd2cSJim Jagielski void ConfigSent() { bConfigChanged = sal_False; }
1209*b1cdbd2cSJim Jagielski
IsSendData()1210*b1cdbd2cSJim Jagielski sal_Bool IsSendData() { return GetItemState( TT_SEND_DATA ) == STATE_CHECK; }
1211*b1cdbd2cSJim Jagielski // sal_Bool IsAllWin() { return GetItemState( TT_ALLWIN ) == STATE_CHECK; }
1212*b1cdbd2cSJim Jagielski
IsDraging()1213*b1cdbd2cSJim Jagielski sal_Bool IsDraging() { return bIsDraging; }
1214*b1cdbd2cSJim Jagielski
LastMouseMoveWin()1215*b1cdbd2cSJim Jagielski Window* LastMouseMoveWin() { return pLastMouseMoveWin; }
1216*b1cdbd2cSJim Jagielski };
1217*b1cdbd2cSJim Jagielski
DisplayHidWin()1218*b1cdbd2cSJim Jagielski DisplayHidWin::DisplayHidWin()
1219*b1cdbd2cSJim Jagielski : ToolBox( StatementList::GetFirstDocFrame(), TTProperties::GetSvtResId(DisplayHidToolBox) )
1220*b1cdbd2cSJim Jagielski , bIsDraging( sal_False )
1221*b1cdbd2cSJim Jagielski , bIsPermanentDraging( sal_False )
1222*b1cdbd2cSJim Jagielski , pShow( NULL )
1223*b1cdbd2cSJim Jagielski , pShow2( NULL )
1224*b1cdbd2cSJim Jagielski , pLastMouseMoveWin( NULL )
1225*b1cdbd2cSJim Jagielski , bOldShift( 0 )
1226*b1cdbd2cSJim Jagielski , nShiftCount( 0 )
1227*b1cdbd2cSJim Jagielski {
1228*b1cdbd2cSJim Jagielski SetOutStyle( TOOLBOX_STYLE_HANDPOINTER | TOOLBOX_STYLE_FLAT );
1229*b1cdbd2cSJim Jagielski pEdit = new Edit( this, WB_CENTER | WB_BORDER );
1230*b1cdbd2cSJim Jagielski aMinEditSize = GetItemRect( TT_OUTPUT ).GetSize();
1231*b1cdbd2cSJim Jagielski /**/ aMinEditSize=Size(20,20);
1232*b1cdbd2cSJim Jagielski aMinEditSize.Width() *= 12;
1233*b1cdbd2cSJim Jagielski pEdit->SetSizePixel( aMinEditSize );
1234*b1cdbd2cSJim Jagielski pEdit->Show();
1235*b1cdbd2cSJim Jagielski SetItemWindow( TT_OUTPUT, pEdit );
1236*b1cdbd2cSJim Jagielski Resize();
1237*b1cdbd2cSJim Jagielski pContainer = new SysWinContainer( this );
1238*b1cdbd2cSJim Jagielski nEventHookID = Application::AddEventHook( stub_VCLEventHookProc, this );
1239*b1cdbd2cSJim Jagielski }
1240*b1cdbd2cSJim Jagielski
~DisplayHidWin()1241*b1cdbd2cSJim Jagielski DisplayHidWin::~DisplayHidWin()
1242*b1cdbd2cSJim Jagielski {
1243*b1cdbd2cSJim Jagielski Application::RemoveEventHook( nEventHookID );
1244*b1cdbd2cSJim Jagielski Hide(); // so GetFirstDocFrame won't return ourselves (needed for SOPlayer)
1245*b1cdbd2cSJim Jagielski SetParent( StatementList::GetFirstDocFrame() );
1246*b1cdbd2cSJim Jagielski delete pContainer;
1247*b1cdbd2cSJim Jagielski delete pEdit;
1248*b1cdbd2cSJim Jagielski }
1249*b1cdbd2cSJim Jagielski
SetDraging(sal_Bool bNewDraging)1250*b1cdbd2cSJim Jagielski void DisplayHidWin::SetDraging( sal_Bool bNewDraging )
1251*b1cdbd2cSJim Jagielski {
1252*b1cdbd2cSJim Jagielski if ( !pShow )
1253*b1cdbd2cSJim Jagielski pShow = new Image( GetItemImage( TT_SHOW ) );
1254*b1cdbd2cSJim Jagielski if ( !pShow2 )
1255*b1cdbd2cSJim Jagielski pShow2 = new Image( Bitmap( TTProperties::GetSvtResId( TT_SHOW2 ) ) );
1256*b1cdbd2cSJim Jagielski
1257*b1cdbd2cSJim Jagielski if ( bNewDraging )
1258*b1cdbd2cSJim Jagielski SetItemImage( TT_SHOW, *pShow2 );
1259*b1cdbd2cSJim Jagielski else
1260*b1cdbd2cSJim Jagielski SetItemImage( TT_SHOW, *pShow );
1261*b1cdbd2cSJim Jagielski
1262*b1cdbd2cSJim Jagielski bIsDraging = bNewDraging;
1263*b1cdbd2cSJim Jagielski }
1264*b1cdbd2cSJim Jagielski
EnableButtons(sal_uLong nConf)1265*b1cdbd2cSJim Jagielski void DisplayHidWin::EnableButtons( sal_uLong nConf )
1266*b1cdbd2cSJim Jagielski {
1267*b1cdbd2cSJim Jagielski sal_Bool bSend = sal_Bool(nConf & DH_MODE_SEND_DATA);
1268*b1cdbd2cSJim Jagielski EnableItem( TT_ALLWIN, bSend );
1269*b1cdbd2cSJim Jagielski EnableItem( TT_KURZNAME, bSend );
1270*b1cdbd2cSJim Jagielski EnableItem( TT_LANGNAME, bSend );
1271*b1cdbd2cSJim Jagielski }
1272*b1cdbd2cSJim Jagielski
Tracking(const TrackingEvent & rTEvt)1273*b1cdbd2cSJim Jagielski void DisplayHidWin::Tracking( const TrackingEvent& rTEvt )
1274*b1cdbd2cSJim Jagielski {
1275*b1cdbd2cSJim Jagielski // if ( nLastItemID == TT_SHOW && GetItemState( TT_SHOW ) == STATE_NOCHECK && ( rTEvt.IsTrackingEnded() || rTEvt.IsTrackingCanceled() ) )
1276*b1cdbd2cSJim Jagielski // SetDraging( sal_False );
1277*b1cdbd2cSJim Jagielski if ( nLastItemID == TT_SHOW && GetItemState( TT_SHOW ) == STATE_NOCHECK )
1278*b1cdbd2cSJim Jagielski EndTracking( ENDTRACK_CANCEL );
1279*b1cdbd2cSJim Jagielski ToolBox::Tracking( rTEvt);
1280*b1cdbd2cSJim Jagielski }
1281*b1cdbd2cSJim Jagielski
Click()1282*b1cdbd2cSJim Jagielski void DisplayHidWin::Click()
1283*b1cdbd2cSJim Jagielski {
1284*b1cdbd2cSJim Jagielski nLastItemID = GetCurItemId();
1285*b1cdbd2cSJim Jagielski if ( nLastItemID == TT_SHOW )
1286*b1cdbd2cSJim Jagielski {
1287*b1cdbd2cSJim Jagielski SetDraging( sal_True );
1288*b1cdbd2cSJim Jagielski }
1289*b1cdbd2cSJim Jagielski ToolBox::Click();
1290*b1cdbd2cSJim Jagielski }
1291*b1cdbd2cSJim Jagielski
Select()1292*b1cdbd2cSJim Jagielski void DisplayHidWin::Select()
1293*b1cdbd2cSJim Jagielski {
1294*b1cdbd2cSJim Jagielski if ( GetItemState( GetCurItemId() ) == STATE_NOCHECK )
1295*b1cdbd2cSJim Jagielski {
1296*b1cdbd2cSJim Jagielski SetItemState( GetCurItemId(), STATE_CHECK );
1297*b1cdbd2cSJim Jagielski if ( GetCurItemId() == TT_SHOW )
1298*b1cdbd2cSJim Jagielski {
1299*b1cdbd2cSJim Jagielski bIsPermanentDraging = sal_True;
1300*b1cdbd2cSJim Jagielski SetDraging( sal_True );
1301*b1cdbd2cSJim Jagielski }
1302*b1cdbd2cSJim Jagielski }
1303*b1cdbd2cSJim Jagielski else
1304*b1cdbd2cSJim Jagielski {
1305*b1cdbd2cSJim Jagielski SetItemState( GetCurItemId(), STATE_NOCHECK );
1306*b1cdbd2cSJim Jagielski if ( GetCurItemId() == TT_SHOW )
1307*b1cdbd2cSJim Jagielski {
1308*b1cdbd2cSJim Jagielski bIsPermanentDraging = sal_False;
1309*b1cdbd2cSJim Jagielski SetDraging( sal_False );
1310*b1cdbd2cSJim Jagielski }
1311*b1cdbd2cSJim Jagielski }
1312*b1cdbd2cSJim Jagielski if ( GetCurItemId() == TT_SEND_DATA )
1313*b1cdbd2cSJim Jagielski {
1314*b1cdbd2cSJim Jagielski EnableButtons( GetConfig() );
1315*b1cdbd2cSJim Jagielski }
1316*b1cdbd2cSJim Jagielski }
1317*b1cdbd2cSJim Jagielski
SetConfig(sal_uLong nConf)1318*b1cdbd2cSJim Jagielski void DisplayHidWin::SetConfig( sal_uLong nConf )
1319*b1cdbd2cSJim Jagielski {
1320*b1cdbd2cSJim Jagielski SetItemState( TT_KURZNAME, ( nConf & DH_MODE_KURZNAME ) ? STATE_CHECK : STATE_NOCHECK );
1321*b1cdbd2cSJim Jagielski SetItemState( TT_LANGNAME, ( nConf & DH_MODE_LANGNAME ) ? STATE_CHECK : STATE_NOCHECK );
1322*b1cdbd2cSJim Jagielski SetItemState( TT_ALLWIN, ( nConf & DH_MODE_ALLWIN ) ? STATE_CHECK : STATE_NOCHECK );
1323*b1cdbd2cSJim Jagielski SetItemState( TT_SEND_DATA, ( nConf & DH_MODE_SEND_DATA ) ? STATE_CHECK : STATE_NOCHECK );
1324*b1cdbd2cSJim Jagielski EnableButtons( nConf );
1325*b1cdbd2cSJim Jagielski }
1326*b1cdbd2cSJim Jagielski
GetConfig()1327*b1cdbd2cSJim Jagielski sal_uLong DisplayHidWin::GetConfig()
1328*b1cdbd2cSJim Jagielski {
1329*b1cdbd2cSJim Jagielski sal_uLong nConf = 0;
1330*b1cdbd2cSJim Jagielski if ( GetItemState( TT_KURZNAME ) == STATE_CHECK )
1331*b1cdbd2cSJim Jagielski nConf |= DH_MODE_KURZNAME;
1332*b1cdbd2cSJim Jagielski if ( GetItemState( TT_LANGNAME ) == STATE_CHECK )
1333*b1cdbd2cSJim Jagielski nConf |= DH_MODE_LANGNAME;
1334*b1cdbd2cSJim Jagielski if ( GetItemState( TT_ALLWIN ) == STATE_CHECK )
1335*b1cdbd2cSJim Jagielski nConf |= DH_MODE_ALLWIN;
1336*b1cdbd2cSJim Jagielski if ( IsSendData() )
1337*b1cdbd2cSJim Jagielski nConf |= DH_MODE_SEND_DATA;
1338*b1cdbd2cSJim Jagielski
1339*b1cdbd2cSJim Jagielski return nConf;
1340*b1cdbd2cSJim Jagielski }
1341*b1cdbd2cSJim Jagielski
SetText(const XubString & rStr)1342*b1cdbd2cSJim Jagielski void DisplayHidWin::SetText( const XubString& rStr )
1343*b1cdbd2cSJim Jagielski {
1344*b1cdbd2cSJim Jagielski pContainer->SetText( rStr );
1345*b1cdbd2cSJim Jagielski }
1346*b1cdbd2cSJim Jagielski
VCLEventHook(NotifyEvent & rEvt)1347*b1cdbd2cSJim Jagielski long DisplayHidWin::VCLEventHook( NotifyEvent& rEvt )
1348*b1cdbd2cSJim Jagielski {
1349*b1cdbd2cSJim Jagielski if ( EVENT_MOUSEMOVE == rEvt.GetType() )
1350*b1cdbd2cSJim Jagielski {
1351*b1cdbd2cSJim Jagielski pLastMouseMoveWin = rEvt.GetWindow();
1352*b1cdbd2cSJim Jagielski
1353*b1cdbd2cSJim Jagielski // check if abort with pressing shift twice
1354*b1cdbd2cSJim Jagielski MouseEvent* pMEvt = (MouseEvent*)rEvt.GetMouseEvent();
1355*b1cdbd2cSJim Jagielski
1356*b1cdbd2cSJim Jagielski if ( ( pMEvt->IsShift() && !bOldShift ) ) // Shift pressed
1357*b1cdbd2cSJim Jagielski {
1358*b1cdbd2cSJim Jagielski if ( aLatest < Time() )
1359*b1cdbd2cSJim Jagielski {
1360*b1cdbd2cSJim Jagielski nShiftCount = 0;
1361*b1cdbd2cSJim Jagielski aLatest = Time()+Time( 0, 0, 0, 50 );
1362*b1cdbd2cSJim Jagielski }
1363*b1cdbd2cSJim Jagielski nShiftCount++;
1364*b1cdbd2cSJim Jagielski }
1365*b1cdbd2cSJim Jagielski if ( ( !pMEvt->IsShift() && bOldShift ) ) // Shift released
1366*b1cdbd2cSJim Jagielski {
1367*b1cdbd2cSJim Jagielski nShiftCount++;
1368*b1cdbd2cSJim Jagielski if ( nShiftCount == 4 && aLatest > Time() )
1369*b1cdbd2cSJim Jagielski {
1370*b1cdbd2cSJim Jagielski bIsPermanentDraging = sal_False;
1371*b1cdbd2cSJim Jagielski SetDraging( sal_False );
1372*b1cdbd2cSJim Jagielski SetItemState( TT_SHOW, STATE_NOCHECK );
1373*b1cdbd2cSJim Jagielski }
1374*b1cdbd2cSJim Jagielski }
1375*b1cdbd2cSJim Jagielski bOldShift = pMEvt->IsShift();
1376*b1cdbd2cSJim Jagielski }
1377*b1cdbd2cSJim Jagielski if ( ( ( EVENT_MOUSEBUTTONUP == rEvt.GetType() && rEvt.GetMouseEvent()->GetButtons() == MOUSE_LEFT) || ( EVENT_MOUSEMOVE == rEvt.GetType() && !rEvt.GetMouseEvent()->GetButtons() ) )
1378*b1cdbd2cSJim Jagielski && IsDraging() && !bIsPermanentDraging )
1379*b1cdbd2cSJim Jagielski SetDraging( sal_False );
1380*b1cdbd2cSJim Jagielski return 0;
1381*b1cdbd2cSJim Jagielski }
1382*b1cdbd2cSJim Jagielski
1383*b1cdbd2cSJim Jagielski
DisplayHID()1384*b1cdbd2cSJim Jagielski sal_Bool StatementCommand::DisplayHID()
1385*b1cdbd2cSJim Jagielski {
1386*b1cdbd2cSJim Jagielski // Return sal_True -> reexecute command
1387*b1cdbd2cSJim Jagielski
1388*b1cdbd2cSJim Jagielski if ( !bBool2 ) // Wird auf sal_False initialisiert
1389*b1cdbd2cSJim Jagielski {
1390*b1cdbd2cSJim Jagielski bBool2 = sal_True; // Wir sind initialisiert.
1391*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayInstance = this; // Und haben die Macht (Alle anderen beenden sich)
1392*b1cdbd2cSJim Jagielski
1393*b1cdbd2cSJim Jagielski if ( !(nParams & PARAM_ULONG_1) )
1394*b1cdbd2cSJim Jagielski {
1395*b1cdbd2cSJim Jagielski if( GetTTSettings()->pDisplayHidWin ) // Nichts ver�ndern
1396*b1cdbd2cSJim Jagielski nLNr1 = GetTTSettings()->pDisplayHidWin->GetConfig();
1397*b1cdbd2cSJim Jagielski else // Beim ersten Aufruf wollen wir alles richtig einstellen
1398*b1cdbd2cSJim Jagielski nLNr1 = DH_MODE_KURZNAME | DH_MODE_LANGNAME;
1399*b1cdbd2cSJim Jagielski
1400*b1cdbd2cSJim Jagielski if( ((nParams & PARAM_BOOL_1) && bBool1) )
1401*b1cdbd2cSJim Jagielski nLNr1 |= DH_MODE_SEND_DATA;
1402*b1cdbd2cSJim Jagielski else
1403*b1cdbd2cSJim Jagielski nLNr1 &= ( ~DH_MODE_SEND_DATA );
1404*b1cdbd2cSJim Jagielski }
1405*b1cdbd2cSJim Jagielski
1406*b1cdbd2cSJim Jagielski if ( GetTTSettings()->pDisplayHidWin )
1407*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->SetConfig( nLNr1 );
1408*b1cdbd2cSJim Jagielski }
1409*b1cdbd2cSJim Jagielski
1410*b1cdbd2cSJim Jagielski if ( GetTTSettings()->pDisplayInstance && GetTTSettings()->pDisplayInstance != this )
1411*b1cdbd2cSJim Jagielski {
1412*b1cdbd2cSJim Jagielski DBG_WARNING("Mehrere DisplayHID am laufen");
1413*b1cdbd2cSJim Jagielski return sal_False; // Noch eine andere Instanz macht das gleiche!
1414*b1cdbd2cSJim Jagielski }
1415*b1cdbd2cSJim Jagielski
1416*b1cdbd2cSJim Jagielski if ( !GetTTSettings()->pDisplayHidWin )
1417*b1cdbd2cSJim Jagielski {
1418*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin = new DisplayHidWin();
1419*b1cdbd2cSJim Jagielski GetTTSettings()->aOriginalCaption = GetTTSettings()->pDisplayHidWin->GetText();
1420*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->Show();
1421*b1cdbd2cSJim Jagielski if ( bBool1 )
1422*b1cdbd2cSJim Jagielski nLNr1 |= DH_MODE_SEND_DATA;
1423*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->SetConfig( nLNr1 );
1424*b1cdbd2cSJim Jagielski
1425*b1cdbd2cSJim Jagielski GetTTSettings()->Old = NULL;
1426*b1cdbd2cSJim Jagielski GetTTSettings()->Act = NULL;
1427*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayInstance = this;
1428*b1cdbd2cSJim Jagielski }
1429*b1cdbd2cSJim Jagielski else
1430*b1cdbd2cSJim Jagielski {
1431*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->GetWindow( WINDOW_OVERLAP )->Enable( sal_True, sal_True );
1432*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->GetWindow( WINDOW_OVERLAP )->EnableInput( sal_True, sal_True );
1433*b1cdbd2cSJim Jagielski }
1434*b1cdbd2cSJim Jagielski
1435*b1cdbd2cSJim Jagielski
1436*b1cdbd2cSJim Jagielski if ( GetTTSettings()->pDisplayHidWin->IsVisible() && !bDying )
1437*b1cdbd2cSJim Jagielski {
1438*b1cdbd2cSJim Jagielski
1439*b1cdbd2cSJim Jagielski if ( GetTTSettings()->pDisplayHidWin->IsDraging() )
1440*b1cdbd2cSJim Jagielski {
1441*b1cdbd2cSJim Jagielski
1442*b1cdbd2cSJim Jagielski
1443*b1cdbd2cSJim Jagielski #define HIGHLIGHT_WIN( WinPtr ) \
1444*b1cdbd2cSJim Jagielski { \
1445*b1cdbd2cSJim Jagielski Color aLineColMem = WinPtr->GetLineColor(); \
1446*b1cdbd2cSJim Jagielski WinPtr->SetLineColor( Color( COL_WHITE ) ); \
1447*b1cdbd2cSJim Jagielski Color aFillColMem = WinPtr->GetFillColor(); \
1448*b1cdbd2cSJim Jagielski WinPtr->SetFillColor( Color( COL_LIGHTRED ) ); \
1449*b1cdbd2cSJim Jagielski RasterOp aROp = WinPtr->GetRasterOp(); \
1450*b1cdbd2cSJim Jagielski WinPtr->SetRasterOp( ROP_XOR ); \
1451*b1cdbd2cSJim Jagielski Size aSz = WinPtr->PixelToLogic( WinPtr->GetSizePixel() );\
1452*b1cdbd2cSJim Jagielski sal_uLong nMaxCornerRadius = WinPtr->PixelToLogic( Point( 80, 0 ) ).X();\
1453*b1cdbd2cSJim Jagielski sal_uLong iCorner = std::max ((sal_uLong) 8, (sal_uLong) std::min( nMaxCornerRadius, (sal_uLong) std::min((sal_uLong) (aSz.Width() / 6), (sal_uLong)(aSz.Height() / 6))));\
1454*b1cdbd2cSJim Jagielski WinPtr->DrawRect(Rectangle(Point(),aSz), iCorner, iCorner);\
1455*b1cdbd2cSJim Jagielski WinPtr->SetLineColor( aLineColMem ); \
1456*b1cdbd2cSJim Jagielski WinPtr->SetFillColor( aFillColMem ); \
1457*b1cdbd2cSJim Jagielski WinPtr->SetRasterOp( aROp ); \
1458*b1cdbd2cSJim Jagielski }
1459*b1cdbd2cSJim Jagielski
1460*b1cdbd2cSJim Jagielski
1461*b1cdbd2cSJim Jagielski #define SET_WIN( WinPtr ) \
1462*b1cdbd2cSJim Jagielski if ( StatementList::WinPtrValid(WinPtr) ) \
1463*b1cdbd2cSJim Jagielski { \
1464*b1cdbd2cSJim Jagielski HIGHLIGHT_WIN ( WinPtr ); \
1465*b1cdbd2cSJim Jagielski }
1466*b1cdbd2cSJim Jagielski
1467*b1cdbd2cSJim Jagielski #define RESET_WIN( WinPtr ) \
1468*b1cdbd2cSJim Jagielski if ( StatementList::WinPtrValid(WinPtr) ) \
1469*b1cdbd2cSJim Jagielski { \
1470*b1cdbd2cSJim Jagielski WinPtr->Invalidate( INVALIDATE_NOTRANSPARENT ); \
1471*b1cdbd2cSJim Jagielski WinPtr->Update(); \
1472*b1cdbd2cSJim Jagielski }
1473*b1cdbd2cSJim Jagielski
1474*b1cdbd2cSJim Jagielski
1475*b1cdbd2cSJim Jagielski GetTTSettings()->Old = GetTTSettings()->Act;
1476*b1cdbd2cSJim Jagielski // GetTTSettings()->Act = GetMouseWin();
1477*b1cdbd2cSJim Jagielski GetTTSettings()->Act = GetTTSettings()->pDisplayHidWin->LastMouseMoveWin();
1478*b1cdbd2cSJim Jagielski
1479*b1cdbd2cSJim Jagielski if ( !StatementList::WinPtrValid ( GetTTSettings()->Old ) )
1480*b1cdbd2cSJim Jagielski GetTTSettings()->Old = NULL;
1481*b1cdbd2cSJim Jagielski if ( !StatementList::WinPtrValid ( GetTTSettings()->Act ) )
1482*b1cdbd2cSJim Jagielski GetTTSettings()->Act = NULL;
1483*b1cdbd2cSJim Jagielski
1484*b1cdbd2cSJim Jagielski if ( GetTTSettings()->Act && GetTTSettings()->Act->GetType() == WINDOW_BORDERWINDOW )
1485*b1cdbd2cSJim Jagielski GetTTSettings()->Act = GetTTSettings()->Act->GetWindow( WINDOW_CLIENT );
1486*b1cdbd2cSJim Jagielski
1487*b1cdbd2cSJim Jagielski if ( GetTTSettings()->Act != GetTTSettings()->Old )
1488*b1cdbd2cSJim Jagielski {
1489*b1cdbd2cSJim Jagielski if ( GetTTSettings()->Old )
1490*b1cdbd2cSJim Jagielski {
1491*b1cdbd2cSJim Jagielski RESET_WIN(GetTTSettings()->Old);
1492*b1cdbd2cSJim Jagielski }
1493*b1cdbd2cSJim Jagielski if ( GetTTSettings()->Act )
1494*b1cdbd2cSJim Jagielski {
1495*b1cdbd2cSJim Jagielski SET_WIN(GetTTSettings()->Act);
1496*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->SetDisplayText( Id2Str(GetTTSettings()->Act->GetUniqueOrHelpId()).AppendAscii(" WinType: ")
1497*b1cdbd2cSJim Jagielski .Append(UniString::CreateFromInt64(GetTTSettings()->Act->GetType())).AppendAscii(" ").Append(GetTTSettings()->Act->GetText()));
1498*b1cdbd2cSJim Jagielski if ( GetTTSettings()->Act && !GetTTSettings()->Act->GetUniqueId().equals( GetTTSettings()->Act->GetHelpId() ) )
1499*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->SetText(UniString( TTProperties::GetSvtResId( TT_ALTERNATE_CAPTION ) ).AppendAscii(GetTTSettings()->Act->GetHelpId().getStr()));
1500*b1cdbd2cSJim Jagielski else
1501*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->SetText( GetTTSettings()->aOriginalCaption );
1502*b1cdbd2cSJim Jagielski }
1503*b1cdbd2cSJim Jagielski else
1504*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->SetDisplayText(CUniString("Kein Window/Control gefunden"));
1505*b1cdbd2cSJim Jagielski }
1506*b1cdbd2cSJim Jagielski else if ( GetTTSettings()->Act )
1507*b1cdbd2cSJim Jagielski {
1508*b1cdbd2cSJim Jagielski // SET_WIN(GetTTSettings()->Act);
1509*b1cdbd2cSJim Jagielski // allow setting a HelpID manually (just enter the ID in the displayHID Window and terminate it by |
1510*b1cdbd2cSJim Jagielski if ( GetTTSettings()->pDisplayHidWin->IsDisplayTextModified() && GetTTSettings()->pDisplayHidWin->GetDisplayText().GetTokenCount( '|' ) > 1 )
1511*b1cdbd2cSJim Jagielski {
1512*b1cdbd2cSJim Jagielski GetTTSettings()->Act->SetUniqueId( Str2Id( GetTTSettings()->pDisplayHidWin->GetDisplayText().GetToken( '|' ) ) );
1513*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->ClearDisplayTextModified();
1514*b1cdbd2cSJim Jagielski }
1515*b1cdbd2cSJim Jagielski }
1516*b1cdbd2cSJim Jagielski /* if ( Application::GetLastInputInterval() > 5000 ) // 5 Sekunden lang nix geschehen
1517*b1cdbd2cSJim Jagielski {
1518*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin->ToTop( TOTOP_NOGRABFOCUS );
1519*b1cdbd2cSJim Jagielski }
1520*b1cdbd2cSJim Jagielski */
1521*b1cdbd2cSJim Jagielski if ( GetTTSettings()->pDisplayHidWin->IsSendData() /*&& bBool2*/ && GetTTSettings()->Act )
1522*b1cdbd2cSJim Jagielski {
1523*b1cdbd2cSJim Jagielski if ( !StatementFlow::bSending )
1524*b1cdbd2cSJim Jagielski { // Normalerweise syncronisierung �ber Protokoll. Hier ist das aber asyncron!!!
1525*b1cdbd2cSJim Jagielski WriteControlData( GetTTSettings()->Act, GetTTSettings()->pDisplayHidWin->GetConfig() );
1526*b1cdbd2cSJim Jagielski new StatementFlow( this, F_EndCommandBlock ); // Kommando zum Senden erzeugen und in que eintragen
1527*b1cdbd2cSJim Jagielski }
1528*b1cdbd2cSJim Jagielski }
1529*b1cdbd2cSJim Jagielski } //if ( GetTTSettings()->pDisplayHidWin->IsDraging() )
1530*b1cdbd2cSJim Jagielski else
1531*b1cdbd2cSJim Jagielski {
1532*b1cdbd2cSJim Jagielski if ( GetTTSettings()->Act )
1533*b1cdbd2cSJim Jagielski {
1534*b1cdbd2cSJim Jagielski RESET_WIN(GetTTSettings()->Act);
1535*b1cdbd2cSJim Jagielski GetTTSettings()->Act = NULL;
1536*b1cdbd2cSJim Jagielski }
1537*b1cdbd2cSJim Jagielski }
1538*b1cdbd2cSJim Jagielski
1539*b1cdbd2cSJim Jagielski if ( pFirst == this ) // Sollte immer so sein, aber besser isses
1540*b1cdbd2cSJim Jagielski if ( pNext ) // Befehle warten auf Ausf�hrung
1541*b1cdbd2cSJim Jagielski { // An Ende neu einsortieren
1542*b1cdbd2cSJim Jagielski Advance();
1543*b1cdbd2cSJim Jagielski QueStatement( NULL );
1544*b1cdbd2cSJim Jagielski }
1545*b1cdbd2cSJim Jagielski // { // Ersten und 2. austauschen.
1546*b1cdbd2cSJim Jagielski // pFirst = pNext;
1547*b1cdbd2cSJim Jagielski // pNext = pNext->pNext;
1548*b1cdbd2cSJim Jagielski // pFirst->pNext = this;
1549*b1cdbd2cSJim Jagielski // }
1550*b1cdbd2cSJim Jagielski
1551*b1cdbd2cSJim Jagielski }
1552*b1cdbd2cSJim Jagielski else
1553*b1cdbd2cSJim Jagielski {
1554*b1cdbd2cSJim Jagielski delete GetTTSettings()->pDisplayHidWin;
1555*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayHidWin = NULL;
1556*b1cdbd2cSJim Jagielski GetTTSettings()->pDisplayInstance = NULL;
1557*b1cdbd2cSJim Jagielski }
1558*b1cdbd2cSJim Jagielski
1559*b1cdbd2cSJim Jagielski return GetTTSettings()->pDisplayHidWin != NULL;
1560*b1cdbd2cSJim Jagielski }
1561*b1cdbd2cSJim Jagielski
1562*b1cdbd2cSJim Jagielski class TranslateWin : public WorkWindow
1563*b1cdbd2cSJim Jagielski {
1564*b1cdbd2cSJim Jagielski private:
1565*b1cdbd2cSJim Jagielski DECL_LINK( DoAccept, PushButton* );
1566*b1cdbd2cSJim Jagielski DECL_LINK( DoNext, PushButton* );
1567*b1cdbd2cSJim Jagielski DECL_LINK( DoSelect, PushButton* );
1568*b1cdbd2cSJim Jagielski DECL_LINK( DoRestore, PushButton* );
1569*b1cdbd2cSJim Jagielski DECL_LINK( TranslationChanged, Edit* );
1570*b1cdbd2cSJim Jagielski DECL_LINK( ShowInplace, Timer* );
1571*b1cdbd2cSJim Jagielski
1572*b1cdbd2cSJim Jagielski Timer InplaceTimer;
1573*b1cdbd2cSJim Jagielski
1574*b1cdbd2cSJim Jagielski // virtual void MouseButtonUp( const MouseEvent& rMEvt );
1575*b1cdbd2cSJim Jagielski // virtual void MouseMove( const MouseEvent& rMEvt );
1576*b1cdbd2cSJim Jagielski
1577*b1cdbd2cSJim Jagielski PushButton PushButtonTT_PB_NEXT;
1578*b1cdbd2cSJim Jagielski GroupBox GroupBoxTT_GB_TRANSLATION;
1579*b1cdbd2cSJim Jagielski Edit EditTT_E_NEW;
1580*b1cdbd2cSJim Jagielski GroupBox GroupBoxTT_GB_COMMENT;
1581*b1cdbd2cSJim Jagielski Edit EditTT_E_COMMENT;
1582*b1cdbd2cSJim Jagielski PushButton PushButtonTT_PB_ACCEPT;
1583*b1cdbd2cSJim Jagielski FixedText FixedTextTT_FT_OLD;
1584*b1cdbd2cSJim Jagielski PushButton PushButtonTT_PB_SELECT;
1585*b1cdbd2cSJim Jagielski PushButton PushButtonTT_PB_RESTORE;
1586*b1cdbd2cSJim Jagielski
1587*b1cdbd2cSJim Jagielski Window *Old;
1588*b1cdbd2cSJim Jagielski Window *Act;
1589*b1cdbd2cSJim Jagielski Window *pTranslateWin;
1590*b1cdbd2cSJim Jagielski sal_Bool bSelecting;
1591*b1cdbd2cSJim Jagielski
1592*b1cdbd2cSJim Jagielski sal_Bool bAvailable;
1593*b1cdbd2cSJim Jagielski sal_Bool bNext;
1594*b1cdbd2cSJim Jagielski
1595*b1cdbd2cSJim Jagielski sal_Bool TestChangedDataSaved();
1596*b1cdbd2cSJim Jagielski
1597*b1cdbd2cSJim Jagielski
1598*b1cdbd2cSJim Jagielski sal_uLong nEventHookID;
stub_VCLEventHookProc(NotifyEvent & rEvt,void * pData)1599*b1cdbd2cSJim Jagielski static long stub_VCLEventHookProc( NotifyEvent& rEvt, void* pData )
1600*b1cdbd2cSJim Jagielski {
1601*b1cdbd2cSJim Jagielski return ((TranslateWin*)pData)->VCLEventHook( rEvt );
1602*b1cdbd2cSJim Jagielski }
1603*b1cdbd2cSJim Jagielski
1604*b1cdbd2cSJim Jagielski long VCLEventHook( NotifyEvent& rEvt );
1605*b1cdbd2cSJim Jagielski
1606*b1cdbd2cSJim Jagielski public:
1607*b1cdbd2cSJim Jagielski TranslateWin();
1608*b1cdbd2cSJim Jagielski ~TranslateWin();
1609*b1cdbd2cSJim Jagielski
1610*b1cdbd2cSJim Jagielski static String MarkShortcutErrors( Window* pBase, sal_Bool bMark );
1611*b1cdbd2cSJim Jagielski
IsTranslationAvailable()1612*b1cdbd2cSJim Jagielski sal_Bool IsTranslationAvailable(){ return bAvailable; }
IsNextDialog()1613*b1cdbd2cSJim Jagielski sal_Bool IsNextDialog(){ return bNext; }
ResetNextDialog()1614*b1cdbd2cSJim Jagielski void ResetNextDialog(){ bNext = sal_False; }
1615*b1cdbd2cSJim Jagielski
GetTranslationWindow()1616*b1cdbd2cSJim Jagielski Window* GetTranslationWindow(){ return pTranslateWin; }
GetOriginalText()1617*b1cdbd2cSJim Jagielski String GetOriginalText(){ return FixedTextTT_FT_OLD.GetText(); }
GetTranslationText()1618*b1cdbd2cSJim Jagielski String GetTranslationText(){ return EditTT_E_NEW.GetText(); }
GetComment()1619*b1cdbd2cSJim Jagielski String GetComment(){ return EditTT_E_COMMENT.GetText(); }
1620*b1cdbd2cSJim Jagielski
1621*b1cdbd2cSJim Jagielski void EnableTranslation();
1622*b1cdbd2cSJim Jagielski };
1623*b1cdbd2cSJim Jagielski
TranslateWin()1624*b1cdbd2cSJim Jagielski TranslateWin::TranslateWin()
1625*b1cdbd2cSJim Jagielski : WorkWindow( NULL, TTProperties::GetSvtResId( TT_INLINE_TRANSLATION ) )
1626*b1cdbd2cSJim Jagielski , PushButtonTT_PB_NEXT( this, TTProperties::GetSvtResId( TT_PB_NEXT ) )
1627*b1cdbd2cSJim Jagielski , GroupBoxTT_GB_TRANSLATION( this, TTProperties::GetSvtResId( TT_GB_TRANSLATION ) )
1628*b1cdbd2cSJim Jagielski , EditTT_E_NEW( this, TTProperties::GetSvtResId( TT_E_NEW ) )
1629*b1cdbd2cSJim Jagielski , GroupBoxTT_GB_COMMENT( this, TTProperties::GetSvtResId( TT_GB_COMMENT ) )
1630*b1cdbd2cSJim Jagielski , EditTT_E_COMMENT( this, TTProperties::GetSvtResId( TT_E_COMMENT ) )
1631*b1cdbd2cSJim Jagielski , PushButtonTT_PB_ACCEPT( this, TTProperties::GetSvtResId( TT_PB_ACCEPT ) )
1632*b1cdbd2cSJim Jagielski , FixedTextTT_FT_OLD( this, TTProperties::GetSvtResId( TT_FT_OLD ) )
1633*b1cdbd2cSJim Jagielski , PushButtonTT_PB_SELECT( this, TTProperties::GetSvtResId( TT_PB_SELECT ) )
1634*b1cdbd2cSJim Jagielski , PushButtonTT_PB_RESTORE( this, TTProperties::GetSvtResId( TT_PB_RESTORE ) )
1635*b1cdbd2cSJim Jagielski , Old( NULL )
1636*b1cdbd2cSJim Jagielski , Act( NULL )
1637*b1cdbd2cSJim Jagielski , pTranslateWin( NULL )
1638*b1cdbd2cSJim Jagielski , bSelecting( sal_False )
1639*b1cdbd2cSJim Jagielski , bAvailable( sal_False )
1640*b1cdbd2cSJim Jagielski , bNext( sal_False )
1641*b1cdbd2cSJim Jagielski {
1642*b1cdbd2cSJim Jagielski FreeResource();
1643*b1cdbd2cSJim Jagielski PushButtonTT_PB_NEXT.SetClickHdl( LINK( this, TranslateWin, DoNext ) );
1644*b1cdbd2cSJim Jagielski PushButtonTT_PB_ACCEPT.SetClickHdl( LINK( this, TranslateWin, DoAccept ) );
1645*b1cdbd2cSJim Jagielski PushButtonTT_PB_SELECT.SetClickHdl( LINK( this, TranslateWin, DoSelect ) );
1646*b1cdbd2cSJim Jagielski PushButtonTT_PB_RESTORE.SetClickHdl( LINK( this, TranslateWin, DoRestore ) );
1647*b1cdbd2cSJim Jagielski EditTT_E_NEW.SetModifyHdl( LINK( this, TranslateWin, TranslationChanged ) );
1648*b1cdbd2cSJim Jagielski InplaceTimer.SetTimeout( 250 );
1649*b1cdbd2cSJim Jagielski InplaceTimer.SetTimeoutHdl( LINK( this, TranslateWin, ShowInplace ) );
1650*b1cdbd2cSJim Jagielski EnableAlwaysOnTop();
1651*b1cdbd2cSJim Jagielski nEventHookID = Application::AddEventHook( stub_VCLEventHookProc, this );
1652*b1cdbd2cSJim Jagielski }
1653*b1cdbd2cSJim Jagielski
~TranslateWin()1654*b1cdbd2cSJim Jagielski TranslateWin::~TranslateWin()
1655*b1cdbd2cSJim Jagielski {
1656*b1cdbd2cSJim Jagielski Application::RemoveEventHook( nEventHookID );
1657*b1cdbd2cSJim Jagielski }
1658*b1cdbd2cSJim Jagielski
TestChangedDataSaved()1659*b1cdbd2cSJim Jagielski sal_Bool TranslateWin::TestChangedDataSaved()
1660*b1cdbd2cSJim Jagielski {
1661*b1cdbd2cSJim Jagielski if ( ( EditTT_E_NEW.GetText().CompareTo( FixedTextTT_FT_OLD.GetText() ) != COMPARE_EQUAL
1662*b1cdbd2cSJim Jagielski || EditTT_E_COMMENT.GetText().Len() )
1663*b1cdbd2cSJim Jagielski && PushButtonTT_PB_ACCEPT.IsEnabled() )
1664*b1cdbd2cSJim Jagielski {
1665*b1cdbd2cSJim Jagielski return MessBox( this, TTProperties::GetSvtResId( TT_DISCARD_CHANGED_DATA ) ).Execute() == RET_YES;
1666*b1cdbd2cSJim Jagielski }
1667*b1cdbd2cSJim Jagielski else
1668*b1cdbd2cSJim Jagielski return sal_True;
1669*b1cdbd2cSJim Jagielski }
1670*b1cdbd2cSJim Jagielski
IMPL_LINK(TranslateWin,DoAccept,PushButton *,EMPTYARG)1671*b1cdbd2cSJim Jagielski IMPL_LINK( TranslateWin, DoAccept, PushButton*, EMPTYARG )
1672*b1cdbd2cSJim Jagielski {
1673*b1cdbd2cSJim Jagielski PushButtonTT_PB_SELECT.Disable();
1674*b1cdbd2cSJim Jagielski PushButtonTT_PB_NEXT.Disable();
1675*b1cdbd2cSJim Jagielski PushButtonTT_PB_RESTORE.Disable();
1676*b1cdbd2cSJim Jagielski EditTT_E_NEW.Disable();
1677*b1cdbd2cSJim Jagielski EditTT_E_COMMENT.Disable();
1678*b1cdbd2cSJim Jagielski PushButtonTT_PB_ACCEPT.Disable();
1679*b1cdbd2cSJim Jagielski bAvailable = sal_True;
1680*b1cdbd2cSJim Jagielski return 0;
1681*b1cdbd2cSJim Jagielski }
1682*b1cdbd2cSJim Jagielski
IMPL_LINK(TranslateWin,DoNext,PushButton *,EMPTYARG)1683*b1cdbd2cSJim Jagielski IMPL_LINK( TranslateWin, DoNext, PushButton*, EMPTYARG )
1684*b1cdbd2cSJim Jagielski {
1685*b1cdbd2cSJim Jagielski if ( TestChangedDataSaved() )
1686*b1cdbd2cSJim Jagielski {
1687*b1cdbd2cSJim Jagielski PushButtonTT_PB_SELECT.Disable();
1688*b1cdbd2cSJim Jagielski PushButtonTT_PB_NEXT.Disable();
1689*b1cdbd2cSJim Jagielski PushButtonTT_PB_RESTORE.Disable();
1690*b1cdbd2cSJim Jagielski EditTT_E_NEW.Disable();
1691*b1cdbd2cSJim Jagielski EditTT_E_COMMENT.Disable();
1692*b1cdbd2cSJim Jagielski PushButtonTT_PB_ACCEPT.Disable();
1693*b1cdbd2cSJim Jagielski bNext = sal_True;
1694*b1cdbd2cSJim Jagielski }
1695*b1cdbd2cSJim Jagielski return 0;
1696*b1cdbd2cSJim Jagielski }
1697*b1cdbd2cSJim Jagielski
IMPL_LINK(TranslateWin,DoSelect,PushButton *,EMPTYARG)1698*b1cdbd2cSJim Jagielski IMPL_LINK( TranslateWin, DoSelect, PushButton*, EMPTYARG )
1699*b1cdbd2cSJim Jagielski {
1700*b1cdbd2cSJim Jagielski if ( bSelecting )
1701*b1cdbd2cSJim Jagielski {
1702*b1cdbd2cSJim Jagielski // ReleaseMouse();
1703*b1cdbd2cSJim Jagielski bSelecting = sal_False;
1704*b1cdbd2cSJim Jagielski }
1705*b1cdbd2cSJim Jagielski else
1706*b1cdbd2cSJim Jagielski {
1707*b1cdbd2cSJim Jagielski if ( TestChangedDataSaved() )
1708*b1cdbd2cSJim Jagielski {
1709*b1cdbd2cSJim Jagielski PushButtonTT_PB_RESTORE.Disable();
1710*b1cdbd2cSJim Jagielski // CaptureMouse();
1711*b1cdbd2cSJim Jagielski bSelecting = sal_True;
1712*b1cdbd2cSJim Jagielski }
1713*b1cdbd2cSJim Jagielski }
1714*b1cdbd2cSJim Jagielski return 0;
1715*b1cdbd2cSJim Jagielski }
1716*b1cdbd2cSJim Jagielski
IMPL_LINK(TranslateWin,DoRestore,PushButton *,EMPTYARG)1717*b1cdbd2cSJim Jagielski IMPL_LINK( TranslateWin, DoRestore, PushButton*, EMPTYARG )
1718*b1cdbd2cSJim Jagielski {
1719*b1cdbd2cSJim Jagielski String sTT_E_OLD( FixedTextTT_FT_OLD.GetText());
1720*b1cdbd2cSJim Jagielski sTT_E_OLD.SearchAndReplaceAll( CUniString("\\n"), CUniString("\n") );
1721*b1cdbd2cSJim Jagielski sTT_E_OLD.SearchAndReplaceAll( CUniString("\\t"), CUniString("\t") );
1722*b1cdbd2cSJim Jagielski
1723*b1cdbd2cSJim Jagielski String sTT_E_NEW( EditTT_E_NEW.GetText());
1724*b1cdbd2cSJim Jagielski sTT_E_NEW.SearchAndReplaceAll( CUniString("\\n"), CUniString("\n") );
1725*b1cdbd2cSJim Jagielski sTT_E_NEW.SearchAndReplaceAll( CUniString("\\t"), CUniString("\t") );
1726*b1cdbd2cSJim Jagielski
1727*b1cdbd2cSJim Jagielski if ( StatementList::WinPtrValid( pTranslateWin ) && pTranslateWin->GetText().CompareTo( sTT_E_NEW ) == COMPARE_EQUAL )
1728*b1cdbd2cSJim Jagielski { // Im ersten schritt nur in der UI zur�ck
1729*b1cdbd2cSJim Jagielski pTranslateWin->SetText( sTT_E_OLD );
1730*b1cdbd2cSJim Jagielski }
1731*b1cdbd2cSJim Jagielski else
1732*b1cdbd2cSJim Jagielski { // Im zweite Schritt auch den eingegebenen Text
1733*b1cdbd2cSJim Jagielski EditTT_E_NEW.SetText( FixedTextTT_FT_OLD.GetText() );
1734*b1cdbd2cSJim Jagielski PushButtonTT_PB_RESTORE.Disable();
1735*b1cdbd2cSJim Jagielski }
1736*b1cdbd2cSJim Jagielski if ( StatementList::WinPtrValid( pTranslateWin ) )
1737*b1cdbd2cSJim Jagielski MarkShortcutErrors( pTranslateWin->GetWindow( WINDOW_OVERLAP ), sal_True );
1738*b1cdbd2cSJim Jagielski return 0;
1739*b1cdbd2cSJim Jagielski }
1740*b1cdbd2cSJim Jagielski
IMPL_LINK(TranslateWin,TranslationChanged,Edit *,pEdit)1741*b1cdbd2cSJim Jagielski IMPL_LINK( TranslateWin, TranslationChanged, Edit*, pEdit )
1742*b1cdbd2cSJim Jagielski {
1743*b1cdbd2cSJim Jagielski (void) pEdit; /* avoid warning about unused parameter */
1744*b1cdbd2cSJim Jagielski PushButtonTT_PB_RESTORE.Enable();
1745*b1cdbd2cSJim Jagielski InplaceTimer.Start();
1746*b1cdbd2cSJim Jagielski return 0;
1747*b1cdbd2cSJim Jagielski }
1748*b1cdbd2cSJim Jagielski
IMPL_LINK(TranslateWin,ShowInplace,Timer *,EMPTYARG)1749*b1cdbd2cSJim Jagielski IMPL_LINK( TranslateWin, ShowInplace, Timer*, EMPTYARG )
1750*b1cdbd2cSJim Jagielski {
1751*b1cdbd2cSJim Jagielski PushButtonTT_PB_RESTORE.Enable();
1752*b1cdbd2cSJim Jagielski if ( StatementList::WinPtrValid( pTranslateWin ) )
1753*b1cdbd2cSJim Jagielski {
1754*b1cdbd2cSJim Jagielski String sTT_E_NEW( EditTT_E_NEW.GetText());
1755*b1cdbd2cSJim Jagielski // alle CRs UnQuoten
1756*b1cdbd2cSJim Jagielski sTT_E_NEW.SearchAndReplaceAll( CUniString("\\n"), CUniString("\n") );
1757*b1cdbd2cSJim Jagielski // alle TABSs UnQuoten
1758*b1cdbd2cSJim Jagielski sTT_E_NEW.SearchAndReplaceAll( CUniString("\\t"), CUniString("\t") );
1759*b1cdbd2cSJim Jagielski pTranslateWin->SetText( sTT_E_NEW );
1760*b1cdbd2cSJim Jagielski
1761*b1cdbd2cSJim Jagielski MarkShortcutErrors( pTranslateWin->GetWindow( WINDOW_OVERLAP ), sal_True );
1762*b1cdbd2cSJim Jagielski }
1763*b1cdbd2cSJim Jagielski return 0;
1764*b1cdbd2cSJim Jagielski }
1765*b1cdbd2cSJim Jagielski
VCLEventHook(NotifyEvent & rEvt)1766*b1cdbd2cSJim Jagielski long TranslateWin::VCLEventHook( NotifyEvent& rEvt )
1767*b1cdbd2cSJim Jagielski {
1768*b1cdbd2cSJim Jagielski if ( EVENT_MOUSEMOVE == rEvt.GetType() )
1769*b1cdbd2cSJim Jagielski {
1770*b1cdbd2cSJim Jagielski if ( bSelecting )
1771*b1cdbd2cSJim Jagielski {
1772*b1cdbd2cSJim Jagielski const MouseEvent *pMEvt = rEvt.GetMouseEvent();
1773*b1cdbd2cSJim Jagielski Old = Act;
1774*b1cdbd2cSJim Jagielski Act = rEvt.GetWindow();
1775*b1cdbd2cSJim Jagielski
1776*b1cdbd2cSJim Jagielski if ( Act )
1777*b1cdbd2cSJim Jagielski {
1778*b1cdbd2cSJim Jagielski Window *pWin = Act;
1779*b1cdbd2cSJim Jagielski sal_uInt16 i;
1780*b1cdbd2cSJim Jagielski for ( i = 0 ; i < Act->GetChildCount() ; i++ )
1781*b1cdbd2cSJim Jagielski {
1782*b1cdbd2cSJim Jagielski pWin = Act->GetChild(i);
1783*b1cdbd2cSJim Jagielski Rectangle aWinPosSize( pWin->GetPosPixel(), pWin->GetSizePixel() );
1784*b1cdbd2cSJim Jagielski
1785*b1cdbd2cSJim Jagielski if ( ( pWin->IsMouseTransparent() || !pWin->IsEnabled() ) && aWinPosSize.IsInside( pMEvt->GetPosPixel() ) )
1786*b1cdbd2cSJim Jagielski {
1787*b1cdbd2cSJim Jagielski Act = pWin;
1788*b1cdbd2cSJim Jagielski break;
1789*b1cdbd2cSJim Jagielski }
1790*b1cdbd2cSJim Jagielski }
1791*b1cdbd2cSJim Jagielski }
1792*b1cdbd2cSJim Jagielski
1793*b1cdbd2cSJim Jagielski if ( !StatementList::WinPtrValid ( Old ) )
1794*b1cdbd2cSJim Jagielski Old = NULL;
1795*b1cdbd2cSJim Jagielski
1796*b1cdbd2cSJim Jagielski if ( Act != Old )
1797*b1cdbd2cSJim Jagielski {
1798*b1cdbd2cSJim Jagielski if ( Old )
1799*b1cdbd2cSJim Jagielski {
1800*b1cdbd2cSJim Jagielski Window *pWin;
1801*b1cdbd2cSJim Jagielski if ( Old->IsMouseTransparent() && Old->GET_REAL_PARENT() )
1802*b1cdbd2cSJim Jagielski pWin = Old->GET_REAL_PARENT();
1803*b1cdbd2cSJim Jagielski else
1804*b1cdbd2cSJim Jagielski pWin = Old;
1805*b1cdbd2cSJim Jagielski RESET_WIN(pWin);
1806*b1cdbd2cSJim Jagielski }
1807*b1cdbd2cSJim Jagielski if ( Act )
1808*b1cdbd2cSJim Jagielski {
1809*b1cdbd2cSJim Jagielski SET_WIN(Act);
1810*b1cdbd2cSJim Jagielski FixedTextTT_FT_OLD.SetText( Act->GetText() );
1811*b1cdbd2cSJim Jagielski }
1812*b1cdbd2cSJim Jagielski else
1813*b1cdbd2cSJim Jagielski FixedTextTT_FT_OLD.SetText( String() );
1814*b1cdbd2cSJim Jagielski }
1815*b1cdbd2cSJim Jagielski else if ( Act )
1816*b1cdbd2cSJim Jagielski {
1817*b1cdbd2cSJim Jagielski // SET_WIN(Act);
1818*b1cdbd2cSJim Jagielski }
1819*b1cdbd2cSJim Jagielski /* if ( Application::GetLastInputInterval() > 5000 ) // 5 Sekunden lang nix geschehen
1820*b1cdbd2cSJim Jagielski {
1821*b1cdbd2cSJim Jagielski ToTop();
1822*b1cdbd2cSJim Jagielski }
1823*b1cdbd2cSJim Jagielski */
1824*b1cdbd2cSJim Jagielski } //if ( bSelecting )
1825*b1cdbd2cSJim Jagielski else
1826*b1cdbd2cSJim Jagielski {
1827*b1cdbd2cSJim Jagielski if ( Act )
1828*b1cdbd2cSJim Jagielski {
1829*b1cdbd2cSJim Jagielski if ( Act->IsMouseTransparent() && Act->GET_REAL_PARENT() )
1830*b1cdbd2cSJim Jagielski Act = Act->GET_REAL_PARENT();
1831*b1cdbd2cSJim Jagielski RESET_WIN(Act);
1832*b1cdbd2cSJim Jagielski Act = NULL;
1833*b1cdbd2cSJim Jagielski }
1834*b1cdbd2cSJim Jagielski }
1835*b1cdbd2cSJim Jagielski }
1836*b1cdbd2cSJim Jagielski else if ( EVENT_MOUSEBUTTONUP == rEvt.GetType() )
1837*b1cdbd2cSJim Jagielski {
1838*b1cdbd2cSJim Jagielski if ( bSelecting )
1839*b1cdbd2cSJim Jagielski {
1840*b1cdbd2cSJim Jagielski pTranslateWin = Act;
1841*b1cdbd2cSJim Jagielski if ( pTranslateWin )
1842*b1cdbd2cSJim Jagielski {
1843*b1cdbd2cSJim Jagielski MarkShortcutErrors( pTranslateWin->GetWindow( WINDOW_OVERLAP ), sal_True );
1844*b1cdbd2cSJim Jagielski // alle CRs quoten (NF)
1845*b1cdbd2cSJim Jagielski String sTT_E_NEW( pTranslateWin->GetText());
1846*b1cdbd2cSJim Jagielski sTT_E_NEW.SearchAndReplaceAll( CUniString("\n"), CUniString("\\n") );
1847*b1cdbd2cSJim Jagielski // alle TABSs quoten ()
1848*b1cdbd2cSJim Jagielski sTT_E_NEW.SearchAndReplaceAll( CUniString("\t"), CUniString("\\t") );
1849*b1cdbd2cSJim Jagielski
1850*b1cdbd2cSJim Jagielski FixedTextTT_FT_OLD.SetText( sTT_E_NEW );
1851*b1cdbd2cSJim Jagielski EditTT_E_NEW.SetText( sTT_E_NEW );
1852*b1cdbd2cSJim Jagielski EditTT_E_NEW.Enable();
1853*b1cdbd2cSJim Jagielski EditTT_E_NEW.GrabFocus();
1854*b1cdbd2cSJim Jagielski EditTT_E_COMMENT.SetText( String() );
1855*b1cdbd2cSJim Jagielski EditTT_E_COMMENT.Enable();
1856*b1cdbd2cSJim Jagielski PushButtonTT_PB_ACCEPT.Enable();
1857*b1cdbd2cSJim Jagielski }
1858*b1cdbd2cSJim Jagielski // ReleaseMouse();
1859*b1cdbd2cSJim Jagielski bSelecting = sal_False;
1860*b1cdbd2cSJim Jagielski }
1861*b1cdbd2cSJim Jagielski }
1862*b1cdbd2cSJim Jagielski
1863*b1cdbd2cSJim Jagielski return 0;
1864*b1cdbd2cSJim Jagielski }
1865*b1cdbd2cSJim Jagielski
1866*b1cdbd2cSJim Jagielski #define FDS_ACTION_COLLECT 1
1867*b1cdbd2cSJim Jagielski #define FDS_ACTION_MARK 2
1868*b1cdbd2cSJim Jagielski #define FDS_ACTION_UNMARK 3
1869*b1cdbd2cSJim Jagielski
1870*b1cdbd2cSJim Jagielski class FindShortcutErrors: public Search
1871*b1cdbd2cSJim Jagielski {
1872*b1cdbd2cSJim Jagielski String aShortcuts,aDoubleShortcuts;
1873*b1cdbd2cSJim Jagielski sal_uInt16 nAction;
1874*b1cdbd2cSJim Jagielski public:
1875*b1cdbd2cSJim Jagielski FindShortcutErrors();
1876*b1cdbd2cSJim Jagielski virtual sal_Bool IsWinOK( Window *pWin );
1877*b1cdbd2cSJim Jagielski void SetAction( sal_uInt16 nA );
GetDoubleShortcuts()1878*b1cdbd2cSJim Jagielski String GetDoubleShortcuts() { return aDoubleShortcuts; }
1879*b1cdbd2cSJim Jagielski };
1880*b1cdbd2cSJim Jagielski
FindShortcutErrors()1881*b1cdbd2cSJim Jagielski FindShortcutErrors::FindShortcutErrors()
1882*b1cdbd2cSJim Jagielski : Search( SEARCH_NOOVERLAP | SEARCH_NO_TOPLEVEL_WIN )
1883*b1cdbd2cSJim Jagielski {
1884*b1cdbd2cSJim Jagielski SetAction( FDS_ACTION_COLLECT ); // Wir fange immer mit sammeln an, ODER??
1885*b1cdbd2cSJim Jagielski }
1886*b1cdbd2cSJim Jagielski
SetAction(sal_uInt16 nA)1887*b1cdbd2cSJim Jagielski void FindShortcutErrors::SetAction( sal_uInt16 nA )
1888*b1cdbd2cSJim Jagielski {
1889*b1cdbd2cSJim Jagielski nAction = nA;
1890*b1cdbd2cSJim Jagielski if ( FDS_ACTION_COLLECT == nAction )
1891*b1cdbd2cSJim Jagielski {
1892*b1cdbd2cSJim Jagielski aShortcuts = UniString();
1893*b1cdbd2cSJim Jagielski aDoubleShortcuts = UniString();
1894*b1cdbd2cSJim Jagielski }
1895*b1cdbd2cSJim Jagielski }
1896*b1cdbd2cSJim Jagielski
IsWinOK(Window * pWin)1897*b1cdbd2cSJim Jagielski sal_Bool FindShortcutErrors::IsWinOK( Window *pWin )
1898*b1cdbd2cSJim Jagielski {
1899*b1cdbd2cSJim Jagielski if ( pWin->IsReallyVisible() )
1900*b1cdbd2cSJim Jagielski {
1901*b1cdbd2cSJim Jagielski String aText = pWin->GetText();
1902*b1cdbd2cSJim Jagielski xub_StrLen nPos = aText.Search('~');
1903*b1cdbd2cSJim Jagielski String aShortcut;
1904*b1cdbd2cSJim Jagielski sal_Bool bHasAccel = sal_False;
1905*b1cdbd2cSJim Jagielski if ( nPos != STRING_NOTFOUND )
1906*b1cdbd2cSJim Jagielski {
1907*b1cdbd2cSJim Jagielski aShortcut = aText.Copy( nPos+1, 1 );
1908*b1cdbd2cSJim Jagielski aShortcut.ToLowerAscii();
1909*b1cdbd2cSJim Jagielski bHasAccel = aShortcut.Len() == 1;
1910*b1cdbd2cSJim Jagielski }
1911*b1cdbd2cSJim Jagielski
1912*b1cdbd2cSJim Jagielski switch ( nAction )
1913*b1cdbd2cSJim Jagielski {
1914*b1cdbd2cSJim Jagielski case FDS_ACTION_COLLECT:
1915*b1cdbd2cSJim Jagielski {
1916*b1cdbd2cSJim Jagielski if ( aShortcuts.Search( aShortcut ) != STRING_NOTFOUND )
1917*b1cdbd2cSJim Jagielski aDoubleShortcuts += aShortcut;
1918*b1cdbd2cSJim Jagielski else
1919*b1cdbd2cSJim Jagielski aShortcuts += aShortcut;
1920*b1cdbd2cSJim Jagielski }
1921*b1cdbd2cSJim Jagielski break;
1922*b1cdbd2cSJim Jagielski case FDS_ACTION_MARK:
1923*b1cdbd2cSJim Jagielski {
1924*b1cdbd2cSJim Jagielski sal_Bool bMissing = sal_False;
1925*b1cdbd2cSJim Jagielski if ( !bHasAccel && aText.Len() ) // should there be an accelarator defined
1926*b1cdbd2cSJim Jagielski {
1927*b1cdbd2cSJim Jagielski
1928*b1cdbd2cSJim Jagielski Window* pChild;
1929*b1cdbd2cSJim Jagielski pChild = pWin->GetWindow( WINDOW_CLIENT );
1930*b1cdbd2cSJim Jagielski
1931*b1cdbd2cSJim Jagielski if ( (pChild->GetType() == WINDOW_RADIOBUTTON) ||
1932*b1cdbd2cSJim Jagielski (pChild->GetType() == WINDOW_IMAGERADIOBUTTON) ||
1933*b1cdbd2cSJim Jagielski (pChild->GetType() == WINDOW_CHECKBOX) ||
1934*b1cdbd2cSJim Jagielski (pChild->GetType() == WINDOW_TRISTATEBOX) ||
1935*b1cdbd2cSJim Jagielski (pChild->GetType() == WINDOW_PUSHBUTTON) )
1936*b1cdbd2cSJim Jagielski {
1937*b1cdbd2cSJim Jagielski if ( !pChild->GetText().EqualsAscii( "..." ) )
1938*b1cdbd2cSJim Jagielski bMissing = sal_True;
1939*b1cdbd2cSJim Jagielski }
1940*b1cdbd2cSJim Jagielski
1941*b1cdbd2cSJim Jagielski if ( pChild->GetType() == WINDOW_FIXEDTEXT )
1942*b1cdbd2cSJim Jagielski {
1943*b1cdbd2cSJim Jagielski Window* pTempChild = pWin->GetWindow( WINDOW_NEXT );
1944*b1cdbd2cSJim Jagielski if ( pTempChild )
1945*b1cdbd2cSJim Jagielski pTempChild = pTempChild->GetWindow( WINDOW_CLIENT );
1946*b1cdbd2cSJim Jagielski
1947*b1cdbd2cSJim Jagielski if ( pTempChild && pChild->GetText().Len() )
1948*b1cdbd2cSJim Jagielski {
1949*b1cdbd2cSJim Jagielski if ( (pTempChild->GetType() == WINDOW_EDIT) ||
1950*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_MULTILINEEDIT) ||
1951*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_SPINFIELD) ||
1952*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_PATTERNFIELD) ||
1953*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_NUMERICFIELD) ||
1954*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_METRICFIELD) ||
1955*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_CURRENCYFIELD) ||
1956*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_DATEFIELD) ||
1957*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_TIMEFIELD) ||
1958*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_LISTBOX) ||
1959*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_MULTILISTBOX) ||
1960*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_COMBOBOX) ||
1961*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_PATTERNBOX) ||
1962*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_NUMERICBOX) ||
1963*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_METRICBOX) ||
1964*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_CURRENCYBOX) ||
1965*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_DATEBOX) ||
1966*b1cdbd2cSJim Jagielski (pTempChild->GetType() == WINDOW_TIMEBOX) )
1967*b1cdbd2cSJim Jagielski {
1968*b1cdbd2cSJim Jagielski bMissing = sal_True;
1969*b1cdbd2cSJim Jagielski }
1970*b1cdbd2cSJim Jagielski }
1971*b1cdbd2cSJim Jagielski }
1972*b1cdbd2cSJim Jagielski }
1973*b1cdbd2cSJim Jagielski
1974*b1cdbd2cSJim Jagielski if ( bHasAccel && aDoubleShortcuts.Search( aShortcut ) != STRING_NOTFOUND )
1975*b1cdbd2cSJim Jagielski {
1976*b1cdbd2cSJim Jagielski if ( pWin->GetType() == WINDOW_GROUPBOX )
1977*b1cdbd2cSJim Jagielski pWin->SetControlForeground( Color( COL_LIGHTRED ) );
1978*b1cdbd2cSJim Jagielski else
1979*b1cdbd2cSJim Jagielski {
1980*b1cdbd2cSJim Jagielski pWin->SetControlBackground();
1981*b1cdbd2cSJim Jagielski Color aCol(COL_GRAY);
1982*b1cdbd2cSJim Jagielski aCol.SetRed( 0xff );
1983*b1cdbd2cSJim Jagielski pWin->SetControlBackground( aCol );
1984*b1cdbd2cSJim Jagielski }
1985*b1cdbd2cSJim Jagielski }
1986*b1cdbd2cSJim Jagielski else if ( bMissing )
1987*b1cdbd2cSJim Jagielski {
1988*b1cdbd2cSJim Jagielski pWin->SetControlBackground();
1989*b1cdbd2cSJim Jagielski Color aCol(COL_GRAY);
1990*b1cdbd2cSJim Jagielski aCol.SetRed( 0xff );
1991*b1cdbd2cSJim Jagielski aCol.SetGreen( 0xff );
1992*b1cdbd2cSJim Jagielski pWin->SetControlBackground( aCol );
1993*b1cdbd2cSJim Jagielski }
1994*b1cdbd2cSJim Jagielski else
1995*b1cdbd2cSJim Jagielski {
1996*b1cdbd2cSJim Jagielski pWin->SetControlForeground();
1997*b1cdbd2cSJim Jagielski pWin->SetControlBackground();
1998*b1cdbd2cSJim Jagielski }
1999*b1cdbd2cSJim Jagielski }
2000*b1cdbd2cSJim Jagielski break;
2001*b1cdbd2cSJim Jagielski case FDS_ACTION_UNMARK:
2002*b1cdbd2cSJim Jagielski {
2003*b1cdbd2cSJim Jagielski pWin->SetControlForeground();
2004*b1cdbd2cSJim Jagielski pWin->SetControlBackground();
2005*b1cdbd2cSJim Jagielski }
2006*b1cdbd2cSJim Jagielski break;
2007*b1cdbd2cSJim Jagielski }
2008*b1cdbd2cSJim Jagielski }
2009*b1cdbd2cSJim Jagielski else
2010*b1cdbd2cSJim Jagielski if ( FDS_ACTION_MARK == nAction || FDS_ACTION_UNMARK == nAction )
2011*b1cdbd2cSJim Jagielski {
2012*b1cdbd2cSJim Jagielski pWin->SetControlForeground();
2013*b1cdbd2cSJim Jagielski pWin->SetControlBackground();
2014*b1cdbd2cSJim Jagielski }
2015*b1cdbd2cSJim Jagielski
2016*b1cdbd2cSJim Jagielski return sal_False;
2017*b1cdbd2cSJim Jagielski }
2018*b1cdbd2cSJim Jagielski
MarkShortcutErrors(Window * pBase,sal_Bool bMark)2019*b1cdbd2cSJim Jagielski String TranslateWin::MarkShortcutErrors( Window* pBase, sal_Bool bMark )
2020*b1cdbd2cSJim Jagielski {
2021*b1cdbd2cSJim Jagielski if ( pBase )
2022*b1cdbd2cSJim Jagielski {
2023*b1cdbd2cSJim Jagielski FindShortcutErrors aFinder;
2024*b1cdbd2cSJim Jagielski if ( bMark )
2025*b1cdbd2cSJim Jagielski {
2026*b1cdbd2cSJim Jagielski StatementList::SearchAllWin( pBase, aFinder, sal_True ); // collect Shortcuts first
2027*b1cdbd2cSJim Jagielski aFinder.SetAction( FDS_ACTION_MARK );
2028*b1cdbd2cSJim Jagielski }
2029*b1cdbd2cSJim Jagielski else
2030*b1cdbd2cSJim Jagielski aFinder.SetAction( FDS_ACTION_UNMARK );
2031*b1cdbd2cSJim Jagielski StatementList::SearchAllWin( pBase, aFinder, sal_True );
2032*b1cdbd2cSJim Jagielski return aFinder.GetDoubleShortcuts();
2033*b1cdbd2cSJim Jagielski }
2034*b1cdbd2cSJim Jagielski return UniString();
2035*b1cdbd2cSJim Jagielski }
2036*b1cdbd2cSJim Jagielski
EnableTranslation()2037*b1cdbd2cSJim Jagielski void TranslateWin::EnableTranslation()
2038*b1cdbd2cSJim Jagielski {
2039*b1cdbd2cSJim Jagielski PushButtonTT_PB_SELECT.Enable();
2040*b1cdbd2cSJim Jagielski PushButtonTT_PB_NEXT.Enable();
2041*b1cdbd2cSJim Jagielski bAvailable = sal_False;
2042*b1cdbd2cSJim Jagielski bNext = sal_False;
2043*b1cdbd2cSJim Jagielski }
2044*b1cdbd2cSJim Jagielski
Translate()2045*b1cdbd2cSJim Jagielski void StatementCommand::Translate()
2046*b1cdbd2cSJim Jagielski {
2047*b1cdbd2cSJim Jagielski // Es wurde eine initale UniqueId mitgegeben. Dann nur die dopelten Shortcuts liefern
2048*b1cdbd2cSJim Jagielski if( (nParams & PARAM_STR_1) && nLNr1 )
2049*b1cdbd2cSJim Jagielski {
2050*b1cdbd2cSJim Jagielski String aDouble;
2051*b1cdbd2cSJim Jagielski Window *pWin = SearchTree( Str2Id( aString1 ) ,sal_False );
2052*b1cdbd2cSJim Jagielski if ( pWin )
2053*b1cdbd2cSJim Jagielski {
2054*b1cdbd2cSJim Jagielski pWin = pWin->GetWindow( WINDOW_OVERLAP );
2055*b1cdbd2cSJim Jagielski aDouble = TranslateWin::MarkShortcutErrors( pWin, sal_True );
2056*b1cdbd2cSJim Jagielski }
2057*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, aDouble );
2058*b1cdbd2cSJim Jagielski return;
2059*b1cdbd2cSJim Jagielski }
2060*b1cdbd2cSJim Jagielski
2061*b1cdbd2cSJim Jagielski if ( !GetTTSettings()->pTranslateWin )
2062*b1cdbd2cSJim Jagielski {
2063*b1cdbd2cSJim Jagielski GetTTSettings()->pTranslateWin = new TranslateWin;
2064*b1cdbd2cSJim Jagielski GetTTSettings()->bToTop = sal_True;
2065*b1cdbd2cSJim Jagielski }
2066*b1cdbd2cSJim Jagielski
2067*b1cdbd2cSJim Jagielski GetTTSettings()->pTranslateWin->Show();
2068*b1cdbd2cSJim Jagielski if ( GetTTSettings()->bToTop )
2069*b1cdbd2cSJim Jagielski {
2070*b1cdbd2cSJim Jagielski GetTTSettings()->pTranslateWin->ToTop();
2071*b1cdbd2cSJim Jagielski GetTTSettings()->bToTop = sal_False;
2072*b1cdbd2cSJim Jagielski }
2073*b1cdbd2cSJim Jagielski
2074*b1cdbd2cSJim Jagielski // GetTTSettings()->pTranslateWin->GetWindow( WINDOW_OVERLAP )->Enable( sal_True, sal_True );
2075*b1cdbd2cSJim Jagielski GetTTSettings()->pTranslateWin->GetWindow( WINDOW_OVERLAP )->EnableInput( sal_True, sal_True );
2076*b1cdbd2cSJim Jagielski
2077*b1cdbd2cSJim Jagielski if ( GetTTSettings()->pTranslateWin->IsTranslationAvailable() )
2078*b1cdbd2cSJim Jagielski {
2079*b1cdbd2cSJim Jagielski String aTranslation;
2080*b1cdbd2cSJim Jagielski Window* pTranslationWindow = GetTTSettings()->pTranslateWin->GetTranslationWindow();
2081*b1cdbd2cSJim Jagielski
2082*b1cdbd2cSJim Jagielski DBG_ASSERT( pTranslationWindow, "Kein Translation Window" );
2083*b1cdbd2cSJim Jagielski
2084*b1cdbd2cSJim Jagielski if ( WinPtrValid( pTranslationWindow ) )
2085*b1cdbd2cSJim Jagielski {
2086*b1cdbd2cSJim Jagielski if ( pTranslationWindow->GetType() == WINDOW_BORDERWINDOW && pTranslationWindow->GetWindow( WINDOW_CLIENT ) )
2087*b1cdbd2cSJim Jagielski {
2088*b1cdbd2cSJim Jagielski Window* pNew = pTranslationWindow->GetWindow( WINDOW_CLIENT );
2089*b1cdbd2cSJim Jagielski // Bei Dockingwindoes das kanze Geraffel von Docking Floating �berspringen
2090*b1cdbd2cSJim Jagielski while ( IsDialog( pNew ) && pNew->GetUniqueOrHelpId().isEmpty() && pNew->GetChildCount() == 1 )
2091*b1cdbd2cSJim Jagielski pNew = pNew->GetChild( 0 );
2092*b1cdbd2cSJim Jagielski pTranslationWindow = pNew;
2093*b1cdbd2cSJim Jagielski }
2094*b1cdbd2cSJim Jagielski
2095*b1cdbd2cSJim Jagielski aTranslation = CUniString("0;");
2096*b1cdbd2cSJim Jagielski
2097*b1cdbd2cSJim Jagielski aTranslation += Id2Str( pTranslationWindow->GetUniqueOrHelpId() );
2098*b1cdbd2cSJim Jagielski aTranslation += ';';
2099*b1cdbd2cSJim Jagielski
2100*b1cdbd2cSJim Jagielski aTranslation += TypeString( pTranslationWindow->GetType() );
2101*b1cdbd2cSJim Jagielski aTranslation += ';';
2102*b1cdbd2cSJim Jagielski
2103*b1cdbd2cSJim Jagielski Window* pParentDialog = pTranslationWindow;
2104*b1cdbd2cSJim Jagielski while ( pParentDialog && !IsDialog( pParentDialog ) )
2105*b1cdbd2cSJim Jagielski {
2106*b1cdbd2cSJim Jagielski pParentDialog = pParentDialog->GET_REAL_PARENT();
2107*b1cdbd2cSJim Jagielski }
2108*b1cdbd2cSJim Jagielski
2109*b1cdbd2cSJim Jagielski if ( pParentDialog )
2110*b1cdbd2cSJim Jagielski {
2111*b1cdbd2cSJim Jagielski aTranslation += Id2Str(pParentDialog->GetUniqueOrHelpId());
2112*b1cdbd2cSJim Jagielski aTranslation += ';';
2113*b1cdbd2cSJim Jagielski aTranslation += TypeString( pParentDialog->GetType() );
2114*b1cdbd2cSJim Jagielski }
2115*b1cdbd2cSJim Jagielski else
2116*b1cdbd2cSJim Jagielski aTranslation.AppendAscii( "0;" ); // Zahl + leerer String
2117*b1cdbd2cSJim Jagielski aTranslation += ';';
2118*b1cdbd2cSJim Jagielski
2119*b1cdbd2cSJim Jagielski aTranslation += '\"';
2120*b1cdbd2cSJim Jagielski aTranslation += GetTTSettings()->pTranslateWin->GetOriginalText();
2121*b1cdbd2cSJim Jagielski aTranslation += '\"';
2122*b1cdbd2cSJim Jagielski
2123*b1cdbd2cSJim Jagielski aTranslation += ';';
2124*b1cdbd2cSJim Jagielski
2125*b1cdbd2cSJim Jagielski aTranslation += '\"';
2126*b1cdbd2cSJim Jagielski aTranslation += GetTTSettings()->pTranslateWin->GetTranslationText();
2127*b1cdbd2cSJim Jagielski aTranslation += '\"';
2128*b1cdbd2cSJim Jagielski
2129*b1cdbd2cSJim Jagielski aTranslation += ';';
2130*b1cdbd2cSJim Jagielski
2131*b1cdbd2cSJim Jagielski aTranslation += '\"';
2132*b1cdbd2cSJim Jagielski aTranslation += GetTTSettings()->pTranslateWin->GetComment();
2133*b1cdbd2cSJim Jagielski aTranslation += '\"';
2134*b1cdbd2cSJim Jagielski
2135*b1cdbd2cSJim Jagielski // alle CRs quoten (NF)
2136*b1cdbd2cSJim Jagielski aTranslation.SearchAndReplaceAll( CUniString("\n"), CUniString("\\n") );
2137*b1cdbd2cSJim Jagielski // alle TABSs quoten ()
2138*b1cdbd2cSJim Jagielski aTranslation.SearchAndReplaceAll( CUniString("\t"), CUniString("\\t") );
2139*b1cdbd2cSJim Jagielski
2140*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, aTranslation );
2141*b1cdbd2cSJim Jagielski GetTTSettings()->pTranslateWin->EnableTranslation();
2142*b1cdbd2cSJim Jagielski GetTTSettings()->bToTop = sal_True;
2143*b1cdbd2cSJim Jagielski }
2144*b1cdbd2cSJim Jagielski else
2145*b1cdbd2cSJim Jagielski {
2146*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, String() );
2147*b1cdbd2cSJim Jagielski GetTTSettings()->pTranslateWin->EnableTranslation();
2148*b1cdbd2cSJim Jagielski ErrorBox err( GetTTSettings()->pTranslateWin, TTProperties::GetSvtResId( TT_NO_CONTROL ));
2149*b1cdbd2cSJim Jagielski err.Execute();
2150*b1cdbd2cSJim Jagielski GetTTSettings()->bToTop = sal_True;
2151*b1cdbd2cSJim Jagielski }
2152*b1cdbd2cSJim Jagielski
2153*b1cdbd2cSJim Jagielski }
2154*b1cdbd2cSJim Jagielski else if ( GetTTSettings()->pTranslateWin->IsNextDialog() )
2155*b1cdbd2cSJim Jagielski {
2156*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, CUniString("1") );
2157*b1cdbd2cSJim Jagielski GetTTSettings()->pTranslateWin->ResetNextDialog();
2158*b1cdbd2cSJim Jagielski GetTTSettings()->pTranslateWin->LoseFocus();
2159*b1cdbd2cSJim Jagielski GetTTSettings()->bToTop = sal_True;
2160*b1cdbd2cSJim Jagielski }
2161*b1cdbd2cSJim Jagielski else
2162*b1cdbd2cSJim Jagielski {
2163*b1cdbd2cSJim Jagielski GetTTSettings()->pTranslateWin->EnableTranslation();
2164*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, String() );
2165*b1cdbd2cSJim Jagielski }
2166*b1cdbd2cSJim Jagielski }
2167*b1cdbd2cSJim Jagielski
GetNextOverlap(Window * pBase)2168*b1cdbd2cSJim Jagielski Window* StatementCommand::GetNextOverlap( Window* pBase )
2169*b1cdbd2cSJim Jagielski { // Findet irgendwelche Overlap-Fenster, die schlie�bar aussehen
2170*b1cdbd2cSJim Jagielski // Eventuell mu� noch die Auswahl verfeinert werden.
2171*b1cdbd2cSJim Jagielski
2172*b1cdbd2cSJim Jagielski if ( pBase->GetType() != WINDOW_BORDERWINDOW )
2173*b1cdbd2cSJim Jagielski pBase = pBase->GetWindow( WINDOW_OVERLAP );
2174*b1cdbd2cSJim Jagielski
2175*b1cdbd2cSJim Jagielski Window *pControl = NULL;
2176*b1cdbd2cSJim Jagielski if ( pBase->GetWindow( WINDOW_FIRSTOVERLAP ) )
2177*b1cdbd2cSJim Jagielski {
2178*b1cdbd2cSJim Jagielski pControl = GetNextOverlap( pBase->GetWindow( WINDOW_FIRSTOVERLAP ) );
2179*b1cdbd2cSJim Jagielski }
2180*b1cdbd2cSJim Jagielski
2181*b1cdbd2cSJim Jagielski if ( !pControl && pBase->GetWindow( WINDOW_NEXT ) )
2182*b1cdbd2cSJim Jagielski {
2183*b1cdbd2cSJim Jagielski pControl = GetNextOverlap( pBase->GetWindow( WINDOW_NEXT ) );
2184*b1cdbd2cSJim Jagielski }
2185*b1cdbd2cSJim Jagielski
2186*b1cdbd2cSJim Jagielski if ( !pControl )
2187*b1cdbd2cSJim Jagielski {
2188*b1cdbd2cSJim Jagielski Window *pTest = pBase->GetWindow( WINDOW_CLIENT );
2189*b1cdbd2cSJim Jagielski if ( IsAccessable (pTest)
2190*b1cdbd2cSJim Jagielski && pTest->IsEnabled()
2191*b1cdbd2cSJim Jagielski && pTest->IsVisible()
2192*b1cdbd2cSJim Jagielski && ((pTest->GetStyle() & WB_CLOSEABLE ) || (pBase->GetStyle() & WB_CLOSEABLE )) )
2193*b1cdbd2cSJim Jagielski return pTest;
2194*b1cdbd2cSJim Jagielski else
2195*b1cdbd2cSJim Jagielski return NULL;
2196*b1cdbd2cSJim Jagielski }
2197*b1cdbd2cSJim Jagielski else
2198*b1cdbd2cSJim Jagielski return pControl;
2199*b1cdbd2cSJim Jagielski }
2200*b1cdbd2cSJim Jagielski
GetNextRecoverWin()2201*b1cdbd2cSJim Jagielski Window* StatementCommand::GetNextRecoverWin()
2202*b1cdbd2cSJim Jagielski {
2203*b1cdbd2cSJim Jagielski // �ber die TopLevelWindows der App iterieren
2204*b1cdbd2cSJim Jagielski Window* pBase = Application::GetFirstTopLevelWindow();
2205*b1cdbd2cSJim Jagielski Window *pControl = NULL;
2206*b1cdbd2cSJim Jagielski Window* pMyFirstDocFrame = NULL;
2207*b1cdbd2cSJim Jagielski while ( pBase )
2208*b1cdbd2cSJim Jagielski {
2209*b1cdbd2cSJim Jagielski // zuerst weitere Fenster auf dem Fenster suchen und schliessen
2210*b1cdbd2cSJim Jagielski pControl = GetNextOverlap( pBase );
2211*b1cdbd2cSJim Jagielski if ( pControl && pControl->GetType() == WINDOW_HELPTEXTWINDOW )
2212*b1cdbd2cSJim Jagielski {} // skip it
2213*b1cdbd2cSJim Jagielski else
2214*b1cdbd2cSJim Jagielski {
2215*b1cdbd2cSJim Jagielski if ( pControl && pControl->IsVisible() && !IsFirstDocFrame( pControl ) && !IsIMEWin( pControl ) )
2216*b1cdbd2cSJim Jagielski {
2217*b1cdbd2cSJim Jagielski Window* pTB = pControl->GetChild( 0 );
2218*b1cdbd2cSJim Jagielski if ( pControl->GetChildCount() == 1 && pTB->GetType() == WINDOW_TOOLBOX )
2219*b1cdbd2cSJim Jagielski // return pTB;
2220*b1cdbd2cSJim Jagielski ; // do not act on floating toolboxes #i38796
2221*b1cdbd2cSJim Jagielski else
2222*b1cdbd2cSJim Jagielski return pControl;
2223*b1cdbd2cSJim Jagielski }
2224*b1cdbd2cSJim Jagielski
2225*b1cdbd2cSJim Jagielski // dann das Fenster selbst Schliessen
2226*b1cdbd2cSJim Jagielski // erstes DocWin �berspringen
2227*b1cdbd2cSJim Jagielski // Assumption that Doc Windows are Borderwindows and ButtonDialog and such are not
2228*b1cdbd2cSJim Jagielski if ( pBase->IsVisible() && !IsFirstDocFrame( pBase ) && pBase->GetType() != WINDOW_BORDERWINDOW && !IsIMEWin( pBase ) )
2229*b1cdbd2cSJim Jagielski return pBase;
2230*b1cdbd2cSJim Jagielski
2231*b1cdbd2cSJim Jagielski if ( !pMyFirstDocFrame && IsFirstDocFrame( pBase ) )
2232*b1cdbd2cSJim Jagielski pMyFirstDocFrame = pBase;
2233*b1cdbd2cSJim Jagielski }
2234*b1cdbd2cSJim Jagielski
2235*b1cdbd2cSJim Jagielski pBase = Application::GetNextTopLevelWindow( pBase );
2236*b1cdbd2cSJim Jagielski }
2237*b1cdbd2cSJim Jagielski #ifdef RESET_APPLICATION_TO_BACKING_WINDOW
2238*b1cdbd2cSJim Jagielski // close the FirstDocFrame last, It will not be closed, but the Document inside will be closed.
2239*b1cdbd2cSJim Jagielski if ( IsDocWin( pMyFirstDocFrame ) )
2240*b1cdbd2cSJim Jagielski return pMyFirstDocFrame;
2241*b1cdbd2cSJim Jagielski #endif // def RESET_APPLICATION_TO_BACKING_WINDOW
2242*b1cdbd2cSJim Jagielski
2243*b1cdbd2cSJim Jagielski return NULL;
2244*b1cdbd2cSJim Jagielski }
2245*b1cdbd2cSJim Jagielski
Execute()2246*b1cdbd2cSJim Jagielski sal_Bool StatementCommand::Execute()
2247*b1cdbd2cSJim Jagielski {
2248*b1cdbd2cSJim Jagielski if ( IsError )
2249*b1cdbd2cSJim Jagielski {
2250*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
2251*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Skipping Command: " );
2252*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
2253*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
2254*b1cdbd2cSJim Jagielski #endif
2255*b1cdbd2cSJim Jagielski
2256*b1cdbd2cSJim Jagielski Advance();
2257*b1cdbd2cSJim Jagielski delete this;
2258*b1cdbd2cSJim Jagielski return sal_True;
2259*b1cdbd2cSJim Jagielski }
2260*b1cdbd2cSJim Jagielski
2261*b1cdbd2cSJim Jagielski InitProfile();
2262*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
2263*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Executing Command: " );
2264*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
2265*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
2266*b1cdbd2cSJim Jagielski #endif
2267*b1cdbd2cSJim Jagielski
2268*b1cdbd2cSJim Jagielski
2269*b1cdbd2cSJim Jagielski
2270*b1cdbd2cSJim Jagielski
2271*b1cdbd2cSJim Jagielski
2272*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
2273*b1cdbd2cSJim Jagielski #define REPORT_WIN_CLOSED(pControl, aInfo) \
2274*b1cdbd2cSJim Jagielski _REPORT_WIN_CLOSED(pControl, aInfo) \
2275*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( aInfo.AppendAscii(" \"").Append( pControl->GetText() ).AppendAscii("\" geschlossen, RType = ").Append( TypeString(pControl->GetType()) ).AppendAscii(", UId = ").Append( UIdString( pControl->GetUniqueOrHelpId() ) ) );
2276*b1cdbd2cSJim Jagielski #else
2277*b1cdbd2cSJim Jagielski #define REPORT_WIN_CLOSED(pControl, aInfo) _REPORT_WIN_CLOSED(pControl, aInfo)
2278*b1cdbd2cSJim Jagielski #endif
2279*b1cdbd2cSJim Jagielski
2280*b1cdbd2cSJim Jagielski #define REPORT_WIN_CLOSEDc(pControl, aInfo ) \
2281*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSED(pControl, CUniString(aInfo) )
2282*b1cdbd2cSJim Jagielski
2283*b1cdbd2cSJim Jagielski #define _REPORT_WIN_CLOSED(pControl, aInfo) \
2284*b1cdbd2cSJim Jagielski if ( aString1.Len() ) \
2285*b1cdbd2cSJim Jagielski aString1 += '\n'; \
2286*b1cdbd2cSJim Jagielski aString1 += aInfo; \
2287*b1cdbd2cSJim Jagielski aString1.AppendAscii(" \""); \
2288*b1cdbd2cSJim Jagielski aString1 += pControl->GetText(); \
2289*b1cdbd2cSJim Jagielski aString1.AppendAscii("\" geschlossen, RType = ");\
2290*b1cdbd2cSJim Jagielski aString1 += TypeString(pControl->GetType()); \
2291*b1cdbd2cSJim Jagielski aString1.AppendAscii(", UId = "); \
2292*b1cdbd2cSJim Jagielski aString1 += UIdString(pControl->GetUniqueOrHelpId());
2293*b1cdbd2cSJim Jagielski
2294*b1cdbd2cSJim Jagielski
2295*b1cdbd2cSJim Jagielski switch ( nMethodId )
2296*b1cdbd2cSJim Jagielski {
2297*b1cdbd2cSJim Jagielski case RC_AppDelay:
2298*b1cdbd2cSJim Jagielski if ( !bBool1 )
2299*b1cdbd2cSJim Jagielski {
2300*b1cdbd2cSJim Jagielski nLNr1 = Time().GetTime() + nNr1/10;
2301*b1cdbd2cSJim Jagielski bBool1 = sal_True;
2302*b1cdbd2cSJim Jagielski }
2303*b1cdbd2cSJim Jagielski if ( Time().GetTime() < long(nLNr1) ) // Aktuelle Zeit kleiner Endzeit
2304*b1cdbd2cSJim Jagielski return sal_False;
2305*b1cdbd2cSJim Jagielski break;
2306*b1cdbd2cSJim Jagielski case RC_DisplayHid:
2307*b1cdbd2cSJim Jagielski if ( DisplayHID() )
2308*b1cdbd2cSJim Jagielski return sal_False;
2309*b1cdbd2cSJim Jagielski break;
2310*b1cdbd2cSJim Jagielski case RC_ResetApplication:
2311*b1cdbd2cSJim Jagielski {
2312*b1cdbd2cSJim Jagielski if ( !bBool1 )
2313*b1cdbd2cSJim Jagielski {
2314*b1cdbd2cSJim Jagielski nRetryCount = 150; // das sollte reichen.
2315*b1cdbd2cSJim Jagielski bBool1 = sal_True; // Nur beim ersten mal!
2316*b1cdbd2cSJim Jagielski nNr1 = 1; // Welcher Button ist dran?
2317*b1cdbd2cSJim Jagielski nLNr1 = 0; // Speichern des AppWin
2318*b1cdbd2cSJim Jagielski aString1 = UniString(); // Liste der geschlossenen Fenster
2319*b1cdbd2cSJim Jagielski
2320*b1cdbd2cSJim Jagielski // So da� nacher auch wieder alles auf Default steht
2321*b1cdbd2cSJim Jagielski nUseBindings = 0;
2322*b1cdbd2cSJim Jagielski bCatchGPF = sal_True;
2323*b1cdbd2cSJim Jagielski bUsePostEvents = sal_True;
2324*b1cdbd2cSJim Jagielski
2325*b1cdbd2cSJim Jagielski aSubMenuId1 = 0;
2326*b1cdbd2cSJim Jagielski aSubMenuId2 = 0;
2327*b1cdbd2cSJim Jagielski aSubMenuId3 = 0;
2328*b1cdbd2cSJim Jagielski pMenuWindow = NULL;
2329*b1cdbd2cSJim Jagielski }
2330*b1cdbd2cSJim Jagielski if ( !nRetryCount )
2331*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_RESETAPPLICATION_FAILED_COMPLEX ) );
2332*b1cdbd2cSJim Jagielski
2333*b1cdbd2cSJim Jagielski Window *pControl = GetNextRecoverWin();
2334*b1cdbd2cSJim Jagielski
2335*b1cdbd2cSJim Jagielski if ( pControl )
2336*b1cdbd2cSJim Jagielski {
2337*b1cdbd2cSJim Jagielski bBool2 = sal_False; // flag for wait when all windows are closed
2338*b1cdbd2cSJim Jagielski pControl->GrabFocus();
2339*b1cdbd2cSJim Jagielski
2340*b1cdbd2cSJim Jagielski if ( pControl->GetType() != WINDOW_DOCKINGWINDOW
2341*b1cdbd2cSJim Jagielski && pControl->GetType() != WINDOW_FLOATINGWINDOW
2342*b1cdbd2cSJim Jagielski && pControl->GetType() != WINDOW_MODELESSDIALOG
2343*b1cdbd2cSJim Jagielski && pControl->GetType() != WINDOW_WORKWINDOW
2344*b1cdbd2cSJim Jagielski && pControl->GetType() != WINDOW_TOOLBOX
2345*b1cdbd2cSJim Jagielski && pControl->GetType() != WINDOW_BORDERWINDOW
2346*b1cdbd2cSJim Jagielski && nRetryCount-- )
2347*b1cdbd2cSJim Jagielski {
2348*b1cdbd2cSJim Jagielski short nRT = ImpGetRType( pControl );
2349*b1cdbd2cSJim Jagielski
2350*b1cdbd2cSJim Jagielski if ( nRT == C_TabControl && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
2351*b1cdbd2cSJim Jagielski { // Bei Tabcontrol den zugeh�rigen Tabdialog nehmen
2352*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT();
2353*b1cdbd2cSJim Jagielski nRT = ImpGetRType( pControl );
2354*b1cdbd2cSJim Jagielski }
2355*b1cdbd2cSJim Jagielski
2356*b1cdbd2cSJim Jagielski switch( nRT )
2357*b1cdbd2cSJim Jagielski {
2358*b1cdbd2cSJim Jagielski case C_ModalDlg:
2359*b1cdbd2cSJim Jagielski case C_Dialog:
2360*b1cdbd2cSJim Jagielski case C_TabDlg:
2361*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSEDc(pControl, "Dialog");
2362*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
2363*b1cdbd2cSJim Jagielski ((SystemWindow*)pControl)->Close();
2364*b1cdbd2cSJim Jagielski break;
2365*b1cdbd2cSJim Jagielski case C_WorkWin:
2366*b1cdbd2cSJim Jagielski break;
2367*b1cdbd2cSJim Jagielski case C_MessBox:
2368*b1cdbd2cSJim Jagielski case C_InfoBox:
2369*b1cdbd2cSJim Jagielski case C_WarningBox:
2370*b1cdbd2cSJim Jagielski case C_ErrorBox:
2371*b1cdbd2cSJim Jagielski case C_QueryBox:
2372*b1cdbd2cSJim Jagielski case C_ButtonDialog:
2373*b1cdbd2cSJim Jagielski {
2374*b1cdbd2cSJim Jagielski ButtonDialog* pBD = (ButtonDialog*)pControl;
2375*b1cdbd2cSJim Jagielski // nNr1 >= 10 bedeutet (Custom)-Buttons durchgehen
2376*b1cdbd2cSJim Jagielski if ( nNr1 >= 10+pBD->GetButtonCount() ) nNr1 = 1;
2377*b1cdbd2cSJim Jagielski switch( nNr1 )
2378*b1cdbd2cSJim Jagielski {
2379*b1cdbd2cSJim Jagielski case 5:
2380*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_OK ) )
2381*b1cdbd2cSJim Jagielski {
2382*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSEDc(pControl, "Message Box (OK)");
2383*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
2384*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_OK);
2385*b1cdbd2cSJim Jagielski }
2386*b1cdbd2cSJim Jagielski nNr1 = 10; // Nochmal alle Buttons der Reihe nach
2387*b1cdbd2cSJim Jagielski break;
2388*b1cdbd2cSJim Jagielski case 4:
2389*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_CANCEL ) )
2390*b1cdbd2cSJim Jagielski {
2391*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSEDc(pControl, "Message Box (Cancel)");
2392*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
2393*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_CANCEL);
2394*b1cdbd2cSJim Jagielski }
2395*b1cdbd2cSJim Jagielski nNr1++;
2396*b1cdbd2cSJim Jagielski break;
2397*b1cdbd2cSJim Jagielski case 3:
2398*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_YES ) )
2399*b1cdbd2cSJim Jagielski {
2400*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSEDc(pControl, "Message Box (Yes)");
2401*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
2402*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_YES);
2403*b1cdbd2cSJim Jagielski }
2404*b1cdbd2cSJim Jagielski nNr1++;
2405*b1cdbd2cSJim Jagielski break;
2406*b1cdbd2cSJim Jagielski case 2: // BUG 48239
2407*b1cdbd2cSJim Jagielski case 1:
2408*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_NO ) )
2409*b1cdbd2cSJim Jagielski {
2410*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSEDc(pControl, "Message Box (No)");
2411*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
2412*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_NO);
2413*b1cdbd2cSJim Jagielski }
2414*b1cdbd2cSJim Jagielski nNr1++;
2415*b1cdbd2cSJim Jagielski break;
2416*b1cdbd2cSJim Jagielski default:
2417*b1cdbd2cSJim Jagielski {
2418*b1cdbd2cSJim Jagielski sal_uInt16 nID = pBD->GetButtonId( nNr1-10 );
2419*b1cdbd2cSJim Jagielski if ( nID != BUTTONID_HELP )
2420*b1cdbd2cSJim Jagielski {
2421*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSED(pControl, CUniString("Message Box (").Append( UniString::CreateFromInt32(nID) ).AppendAscii(")"));
2422*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
2423*b1cdbd2cSJim Jagielski pBD->EndDialog(nID);
2424*b1cdbd2cSJim Jagielski }
2425*b1cdbd2cSJim Jagielski nNr1++;
2426*b1cdbd2cSJim Jagielski }
2427*b1cdbd2cSJim Jagielski }
2428*b1cdbd2cSJim Jagielski break;
2429*b1cdbd2cSJim Jagielski }
2430*b1cdbd2cSJim Jagielski default:
2431*b1cdbd2cSJim Jagielski DBG_ERROR( "Unknown Windowtype" );
2432*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSEDc(pControl, "Unknown Windowtype");
2433*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_RESETAPPLICATION_FAILED_UNKNOWN ), pControl->GetType() );
2434*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
2435*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Unbekannter Objekttyp aus UId" );
2436*b1cdbd2cSJim Jagielski #endif
2437*b1cdbd2cSJim Jagielski break;
2438*b1cdbd2cSJim Jagielski }
2439*b1cdbd2cSJim Jagielski return sal_False;
2440*b1cdbd2cSJim Jagielski }
2441*b1cdbd2cSJim Jagielski else
2442*b1cdbd2cSJim Jagielski {
2443*b1cdbd2cSJim Jagielski if ( (pControl->GetType() == WINDOW_DOCKINGWINDOW || pControl->GetType() == WINDOW_TOOLBOX) && nRetryCount-- )
2444*b1cdbd2cSJim Jagielski {
2445*b1cdbd2cSJim Jagielski if ( (((DockingWindow*)pControl)->GetStyle() | ((DockingWindow*)pControl)->GetFloatStyle()) & WB_CLOSEABLE )
2446*b1cdbd2cSJim Jagielski {
2447*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSED(pControl, TypeString(pControl->GetType()));
2448*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
2449*b1cdbd2cSJim Jagielski ((DockingWindow*)pControl)->Close();
2450*b1cdbd2cSJim Jagielski
2451*b1cdbd2cSJim Jagielski // Eigentlich nur bei TaskWindows! Hoffen wir mal, da� keine anderen DockingWindows dazwischen hauen.
2452*b1cdbd2cSJim Jagielski if ( (Window*)nLNr1 != pControl )
2453*b1cdbd2cSJim Jagielski nNr1 = 1; // Zum durchprobieren der Buttons beim Schlie�en
2454*b1cdbd2cSJim Jagielski nLNr1 = (sal_uLong)pControl;
2455*b1cdbd2cSJim Jagielski
2456*b1cdbd2cSJim Jagielski return sal_False;
2457*b1cdbd2cSJim Jagielski }
2458*b1cdbd2cSJim Jagielski }
2459*b1cdbd2cSJim Jagielski if ( nRetryCount--
2460*b1cdbd2cSJim Jagielski && ( (pControl->GetType() == WINDOW_FLOATINGWINDOW)
2461*b1cdbd2cSJim Jagielski || (pControl->GetType() == WINDOW_MODELESSDIALOG)
2462*b1cdbd2cSJim Jagielski || (pControl->GetType() == WINDOW_WORKWINDOW)
2463*b1cdbd2cSJim Jagielski || (pControl->GetType() == WINDOW_BORDERWINDOW) ) )
2464*b1cdbd2cSJim Jagielski {
2465*b1cdbd2cSJim Jagielski // if ( pControl->GetStyle() & WB_CLOSEABLE )
2466*b1cdbd2cSJim Jagielski {
2467*b1cdbd2cSJim Jagielski #ifdef RESET_APPLICATION_TO_BACKING_WINDOW
2468*b1cdbd2cSJim Jagielski // Special handling for last Document; do not close the Frame, only the Document
2469*b1cdbd2cSJim Jagielski if ( GetDocWinCount() == 1 && IsDocFrame( pControl ) )
2470*b1cdbd2cSJim Jagielski {
2471*b1cdbd2cSJim Jagielski if ( IsDocWin( pControl ) )
2472*b1cdbd2cSJim Jagielski {
2473*b1cdbd2cSJim Jagielski if ( GetDocFrameMenuBar( pControl ) )
2474*b1cdbd2cSJim Jagielski {
2475*b1cdbd2cSJim Jagielski MenuBar* pMenu = GetDocFrameMenuBar( pControl );
2476*b1cdbd2cSJim Jagielski if ( pMenu->HasCloser() )
2477*b1cdbd2cSJim Jagielski {
2478*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSED( pControl, TypeString(pControl->GetType()));
2479*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
2480*b1cdbd2cSJim Jagielski
2481*b1cdbd2cSJim Jagielski pMenu->GetCloserHdl().Call( pMenu );
2482*b1cdbd2cSJim Jagielski
2483*b1cdbd2cSJim Jagielski // nur bei TaskWindows!
2484*b1cdbd2cSJim Jagielski if ( (Window*)nLNr1 != pControl )
2485*b1cdbd2cSJim Jagielski nNr1 = 1; // Zum durchprobieren der Buttons beim Schlie�en
2486*b1cdbd2cSJim Jagielski nLNr1 = (sal_uLong)pControl;
2487*b1cdbd2cSJim Jagielski
2488*b1cdbd2cSJim Jagielski return sal_False;
2489*b1cdbd2cSJim Jagielski }
2490*b1cdbd2cSJim Jagielski }
2491*b1cdbd2cSJim Jagielski }
2492*b1cdbd2cSJim Jagielski }
2493*b1cdbd2cSJim Jagielski else
2494*b1cdbd2cSJim Jagielski #endif // def RESET_APPLICATION_TO_BACKING_WINDOW
2495*b1cdbd2cSJim Jagielski {
2496*b1cdbd2cSJim Jagielski REPORT_WIN_CLOSED( pControl, TypeString(pControl->GetType()));
2497*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
2498*b1cdbd2cSJim Jagielski ((SystemWindow*)pControl)->Close();
2499*b1cdbd2cSJim Jagielski
2500*b1cdbd2cSJim Jagielski // Eigentlich nur bei TaskWindows!
2501*b1cdbd2cSJim Jagielski if ( (Window*)nLNr1 != pControl )
2502*b1cdbd2cSJim Jagielski nNr1 = 1; // Zum durchprobieren der Buttons beim Schlie�en
2503*b1cdbd2cSJim Jagielski nLNr1 = (sal_uLong)pControl;
2504*b1cdbd2cSJim Jagielski
2505*b1cdbd2cSJim Jagielski return sal_False;
2506*b1cdbd2cSJim Jagielski }
2507*b1cdbd2cSJim Jagielski }
2508*b1cdbd2cSJim Jagielski }
2509*b1cdbd2cSJim Jagielski }
2510*b1cdbd2cSJim Jagielski }
2511*b1cdbd2cSJim Jagielski // wait for some time if more windows show up
2512*b1cdbd2cSJim Jagielski // E.g.: Floating toolbars on a Task which was hidden by another Task before
2513*b1cdbd2cSJim Jagielski if ( !bBool2 )
2514*b1cdbd2cSJim Jagielski {
2515*b1cdbd2cSJim Jagielski nLNr1 = Time().GetTime() + 100; // 100 = 1 Second
2516*b1cdbd2cSJim Jagielski bBool2 = sal_True;
2517*b1cdbd2cSJim Jagielski }
2518*b1cdbd2cSJim Jagielski if ( Time().GetTime() < long(nLNr1) ) // Aktuelle Zeit kleiner Endzeit
2519*b1cdbd2cSJim Jagielski return sal_False;
2520*b1cdbd2cSJim Jagielski else
2521*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, aString1);
2522*b1cdbd2cSJim Jagielski }
2523*b1cdbd2cSJim Jagielski break;
2524*b1cdbd2cSJim Jagielski case RC_WaitSlot:
2525*b1cdbd2cSJim Jagielski {
2526*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
2527*b1cdbd2cSJim Jagielski nNr1 = 1000; // defaults to 1000 = 1 Sec.
2528*b1cdbd2cSJim Jagielski if ( !bBool1 )
2529*b1cdbd2cSJim Jagielski {
2530*b1cdbd2cSJim Jagielski nLNr1 = Time().GetTime() + nNr1/10;
2531*b1cdbd2cSJim Jagielski bBool1 = sal_True;
2532*b1cdbd2cSJim Jagielski }
2533*b1cdbd2cSJim Jagielski
2534*b1cdbd2cSJim Jagielski if ( !bIsSlotInExecute )
2535*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, comm_USHORT(CONST_WSFinished) );
2536*b1cdbd2cSJim Jagielski else
2537*b1cdbd2cSJim Jagielski {
2538*b1cdbd2cSJim Jagielski if ( Time().GetTime() < long(nLNr1) ) // Aktuelle Zeit kleiner Endzeit
2539*b1cdbd2cSJim Jagielski return sal_False;
2540*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, comm_USHORT(CONST_WSTimeout) );
2541*b1cdbd2cSJim Jagielski }
2542*b1cdbd2cSJim Jagielski }
2543*b1cdbd2cSJim Jagielski break;
2544*b1cdbd2cSJim Jagielski }
2545*b1cdbd2cSJim Jagielski
2546*b1cdbd2cSJim Jagielski
2547*b1cdbd2cSJim Jagielski Advance();
2548*b1cdbd2cSJim Jagielski
2549*b1cdbd2cSJim Jagielski
2550*b1cdbd2cSJim Jagielski switch ( nMethodId )
2551*b1cdbd2cSJim Jagielski {
2552*b1cdbd2cSJim Jagielski case RC_AppDelay: // Diese Befehle werden anderswo behandelt
2553*b1cdbd2cSJim Jagielski case RC_DisplayHid:
2554*b1cdbd2cSJim Jagielski case RC_ResetApplication:
2555*b1cdbd2cSJim Jagielski case RC_WaitSlot:
2556*b1cdbd2cSJim Jagielski
2557*b1cdbd2cSJim Jagielski case RC_AppAbort: // Sofortiges L�schen aller Befehle
2558*b1cdbd2cSJim Jagielski break;
2559*b1cdbd2cSJim Jagielski case RC_Assert:
2560*b1cdbd2cSJim Jagielski {
2561*b1cdbd2cSJim Jagielski ByteString aAssertion( "Diese Assertion wurde vom Testtool per Befehl ausgel�st" );
2562*b1cdbd2cSJim Jagielski aAssertion = ByteString( String( aAssertion, RTL_TEXTENCODING_MS_1252 ), RTL_TEXTENCODING_UTF8 );
2563*b1cdbd2cSJim Jagielski DBG_ASSERT( !aString1.Len(), ByteString( aString1, RTL_TEXTENCODING_UTF8 ).GetBuffer() );
2564*b1cdbd2cSJim Jagielski DBG_ASSERT( aString1.Len(), aAssertion.GetBuffer() );
2565*b1cdbd2cSJim Jagielski OSL_ENSURE( !aString1.Len(), ByteString( aString1, RTL_TEXTENCODING_UTF8 ).GetBuffer() );
2566*b1cdbd2cSJim Jagielski OSL_ENSURE( aString1.Len(), aAssertion.GetBuffer() );
2567*b1cdbd2cSJim Jagielski }
2568*b1cdbd2cSJim Jagielski break;
2569*b1cdbd2cSJim Jagielski case RC_CaptureAssertions:
2570*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
2571*b1cdbd2cSJim Jagielski if( !(nParams & PARAM_BOOL_1) || bBool1 )
2572*b1cdbd2cSJim Jagielski {
2573*b1cdbd2cSJim Jagielski DBG_INSTOUTERROR( DBG_OUT_TESTTOOL );
2574*b1cdbd2cSJim Jagielski osl_setDebugMessageFunc( osl_TestToolDebugPrint );
2575*b1cdbd2cSJim Jagielski }
2576*b1cdbd2cSJim Jagielski else
2577*b1cdbd2cSJim Jagielski {
2578*b1cdbd2cSJim Jagielski DBG_INSTOUTERROR( DBG_OUT_MSGBOX );
2579*b1cdbd2cSJim Jagielski osl_setDebugMessageFunc( pOriginal_osl_DebugMessageFunc );
2580*b1cdbd2cSJim Jagielski }
2581*b1cdbd2cSJim Jagielski #endif
2582*b1cdbd2cSJim Jagielski break;
2583*b1cdbd2cSJim Jagielski case RC_Translate:
2584*b1cdbd2cSJim Jagielski Translate();
2585*b1cdbd2cSJim Jagielski break;
2586*b1cdbd2cSJim Jagielski case RC_ApplicationBusy:
2587*b1cdbd2cSJim Jagielski {
2588*b1cdbd2cSJim Jagielski sal_Bool bWait = sal_False;
2589*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_NO_ACTIVE_WINDOW ) );
2590*b1cdbd2cSJim Jagielski // if ( Application::GetAppWindow() )
2591*b1cdbd2cSJim Jagielski // bWait = Application::GetAppWindow()->IsWait();
2592*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, bWait );
2593*b1cdbd2cSJim Jagielski break;
2594*b1cdbd2cSJim Jagielski }
2595*b1cdbd2cSJim Jagielski case RC_GetClipboard:
2596*b1cdbd2cSJim Jagielski {
2597*b1cdbd2cSJim Jagielski ::rtl::OUString aTemp;
2598*b1cdbd2cSJim Jagielski ::svt::OStringTransfer::PasteString( aTemp, GetFirstDocFrame() );
2599*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, String( aTemp ) );
2600*b1cdbd2cSJim Jagielski }
2601*b1cdbd2cSJim Jagielski break;
2602*b1cdbd2cSJim Jagielski case RC_SetClipboard:
2603*b1cdbd2cSJim Jagielski ::svt::OStringTransfer::CopyString(aString1,GetFirstDocFrame());
2604*b1cdbd2cSJim Jagielski break;
2605*b1cdbd2cSJim Jagielski case RC_WinTree:
2606*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, Tree( NULL, 0));
2607*b1cdbd2cSJim Jagielski break;
2608*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
2609*b1cdbd2cSJim Jagielski case RC_NoDebug:
2610*b1cdbd2cSJim Jagielski m_pDbgWin->bQuiet = sal_True;
2611*b1cdbd2cSJim Jagielski m_pDbgWin->Hide();
2612*b1cdbd2cSJim Jagielski m_pDbgWin->Clear();
2613*b1cdbd2cSJim Jagielski break;
2614*b1cdbd2cSJim Jagielski case RC_Debug:
2615*b1cdbd2cSJim Jagielski m_pDbgWin->bQuiet = sal_False;
2616*b1cdbd2cSJim Jagielski m_pDbgWin->Show();
2617*b1cdbd2cSJim Jagielski break;
2618*b1cdbd2cSJim Jagielski #endif
2619*b1cdbd2cSJim Jagielski case RC_GPF:
2620*b1cdbd2cSJim Jagielski ((TabControl*)NULL)->SetCurPageId( 12345 );
2621*b1cdbd2cSJim Jagielski break;
2622*b1cdbd2cSJim Jagielski case RC_GetNextCloseWindow:
2623*b1cdbd2cSJim Jagielski {
2624*b1cdbd2cSJim Jagielski Window *pWin = GetActive( WINDOW_BASE ); // WINDOW_ANYTYPE
2625*b1cdbd2cSJim Jagielski if ( !pWin )
2626*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_NO_ACTIVE_WINDOW ) );
2627*b1cdbd2cSJim Jagielski else if ( !IsDialog(pWin) )
2628*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_NO_DIALOG_IN_GETACTIVE ) );
2629*b1cdbd2cSJim Jagielski else
2630*b1cdbd2cSJim Jagielski {
2631*b1cdbd2cSJim Jagielski pRet->GenReturn( RET_Value, nMethodId, Id2Str(pWin->GetUniqueOrHelpId()) );
2632*b1cdbd2cSJim Jagielski }
2633*b1cdbd2cSJim Jagielski }
2634*b1cdbd2cSJim Jagielski break;
2635*b1cdbd2cSJim Jagielski case RC_UseBindings:
2636*b1cdbd2cSJim Jagielski if( !(nParams & PARAM_BOOL_1) || bBool1 )
2637*b1cdbd2cSJim Jagielski nUseBindings = SFX_USE_BINDINGS;
2638*b1cdbd2cSJim Jagielski else
2639*b1cdbd2cSJim Jagielski nUseBindings = 0;
2640*b1cdbd2cSJim Jagielski break;
2641*b1cdbd2cSJim Jagielski case RC_Profile:
2642*b1cdbd2cSJim Jagielski // Bei folgenden Parametern passiert folgendes:
2643*b1cdbd2cSJim Jagielski // ein boolean=false Alles Profiling stoppen (Ergebnisse liefern)
2644*b1cdbd2cSJim Jagielski // ein boolean=true, 1-4 ints Einteilung der Zeiten in K�stchen
2645*b1cdbd2cSJim Jagielski // kein! boolean keine ints loggen jeden Befehls
2646*b1cdbd2cSJim Jagielski // kein! boolean 1 int loggen alle int Millisekunden
2647*b1cdbd2cSJim Jagielski // ein String wird in das Logfile �bernommen(sonst passiert nichts)
2648*b1cdbd2cSJim Jagielski if( !(nParams & PARAM_BOOL_1) || bBool1 )
2649*b1cdbd2cSJim Jagielski {
2650*b1cdbd2cSJim Jagielski if ( !pProfiler )
2651*b1cdbd2cSJim Jagielski {
2652*b1cdbd2cSJim Jagielski pProfiler = new TTProfiler;
2653*b1cdbd2cSJim Jagielski InitProfile();
2654*b1cdbd2cSJim Jagielski }
2655*b1cdbd2cSJim Jagielski
2656*b1cdbd2cSJim Jagielski if( !(nParams & PARAM_BOOL_1) && (nParams & PARAM_USHORT_1) )
2657*b1cdbd2cSJim Jagielski { // Autoprofiling: Profile nNr
2658*b1cdbd2cSJim Jagielski if ( pProfiler->IsProfilingPerCommand() )
2659*b1cdbd2cSJim Jagielski {
2660*b1cdbd2cSJim Jagielski pProfiler->StopProfilingPerCommand();
2661*b1cdbd2cSJim Jagielski }
2662*b1cdbd2cSJim Jagielski pProfiler->StartAutoProfiling( nNr1 );
2663*b1cdbd2cSJim Jagielski
2664*b1cdbd2cSJim Jagielski // Der Header ist abh�ngig vom Modus
2665*b1cdbd2cSJim Jagielski pRet->GenReturn( RET_ProfileInfo, 0, pProfiler->GetProfileHeader() );
2666*b1cdbd2cSJim Jagielski }
2667*b1cdbd2cSJim Jagielski else if ( nParams & PARAM_USHORT_1 )
2668*b1cdbd2cSJim Jagielski { // Partitioning initialisieren: Profile true [,nNr][,nNr][,nNr][,nNr]
2669*b1cdbd2cSJim Jagielski comm_ULONG nAnzahl=0;
2670*b1cdbd2cSJim Jagielski if ( nParams & PARAM_USHORT_1 ) { nAnzahl++; };
2671*b1cdbd2cSJim Jagielski if ( nParams & PARAM_USHORT_2 ) { nAnzahl++; };
2672*b1cdbd2cSJim Jagielski if ( nParams & PARAM_USHORT_3 ) { nAnzahl++; };
2673*b1cdbd2cSJim Jagielski if ( nParams & PARAM_USHORT_4 ) { nAnzahl++; };
2674*b1cdbd2cSJim Jagielski
2675*b1cdbd2cSJim Jagielski // Hier werden die Parameter ans Testtool zur�ck �bertragen.
2676*b1cdbd2cSJim Jagielski // Das ist zwar etwas eigenartig, aber ansonsten m�sste man im Testtool
2677*b1cdbd2cSJim Jagielski // die einfache Struktur der Remotebefehle aufbrechen.
2678*b1cdbd2cSJim Jagielski pRet->GenReturn( RET_ProfileInfo, S_ProfileReset, nAnzahl );
2679*b1cdbd2cSJim Jagielski
2680*b1cdbd2cSJim Jagielski // Und die einzelnen Grenzen
2681*b1cdbd2cSJim Jagielski if ( nParams & PARAM_USHORT_1 ) { pRet->GenReturn( RET_ProfileInfo, S_ProfileBorder1, (comm_ULONG)nNr1 ); };
2682*b1cdbd2cSJim Jagielski if ( nParams & PARAM_USHORT_2 ) { pRet->GenReturn( RET_ProfileInfo, S_ProfileBorder2, (comm_ULONG)nNr2 ); };
2683*b1cdbd2cSJim Jagielski if ( nParams & PARAM_USHORT_3 ) { pRet->GenReturn( RET_ProfileInfo, S_ProfileBorder3, (comm_ULONG)nNr3 ); };
2684*b1cdbd2cSJim Jagielski if ( nParams & PARAM_USHORT_4 ) { pRet->GenReturn( RET_ProfileInfo, S_ProfileBorder4, (comm_ULONG)nNr4 ); };
2685*b1cdbd2cSJim Jagielski
2686*b1cdbd2cSJim Jagielski pProfiler->StartPartitioning();
2687*b1cdbd2cSJim Jagielski }
2688*b1cdbd2cSJim Jagielski else if( nParams == PARAM_STR_1 ) // Genau ein String!
2689*b1cdbd2cSJim Jagielski { // Nur einen String ins Profiling aufnehmen
2690*b1cdbd2cSJim Jagielski aString1 += '\n';
2691*b1cdbd2cSJim Jagielski pRet->GenReturn( RET_ProfileInfo, 0, aString1 );
2692*b1cdbd2cSJim Jagielski }
2693*b1cdbd2cSJim Jagielski else
2694*b1cdbd2cSJim Jagielski { // Normales Profiling je Kommando: profile
2695*b1cdbd2cSJim Jagielski if ( pProfiler->IsAutoProfiling() )
2696*b1cdbd2cSJim Jagielski {
2697*b1cdbd2cSJim Jagielski pRet->GenReturn( RET_ProfileInfo, 0, pProfiler->GetAutoProfiling() );
2698*b1cdbd2cSJim Jagielski pProfiler->StopAutoProfiling();
2699*b1cdbd2cSJim Jagielski }
2700*b1cdbd2cSJim Jagielski pProfiler->StartProfilingPerCommand();
2701*b1cdbd2cSJim Jagielski
2702*b1cdbd2cSJim Jagielski // Der Header ist abh�ngig vom Modus
2703*b1cdbd2cSJim Jagielski pRet->GenReturn( RET_ProfileInfo, 0, pProfiler->GetProfileHeader() );
2704*b1cdbd2cSJim Jagielski }
2705*b1cdbd2cSJim Jagielski }
2706*b1cdbd2cSJim Jagielski else // Profiling wieder ausschalten: Profile false
2707*b1cdbd2cSJim Jagielski if ( pProfiler )
2708*b1cdbd2cSJim Jagielski {
2709*b1cdbd2cSJim Jagielski if ( pProfiler->IsProfilingPerCommand() )
2710*b1cdbd2cSJim Jagielski pProfiler->StopProfilingPerCommand();
2711*b1cdbd2cSJim Jagielski
2712*b1cdbd2cSJim Jagielski if ( pProfiler->IsAutoProfiling() )
2713*b1cdbd2cSJim Jagielski {
2714*b1cdbd2cSJim Jagielski pRet->GenReturn( RET_ProfileInfo, 0, pProfiler->GetAutoProfiling() );
2715*b1cdbd2cSJim Jagielski pProfiler->StopAutoProfiling();
2716*b1cdbd2cSJim Jagielski }
2717*b1cdbd2cSJim Jagielski
2718*b1cdbd2cSJim Jagielski if ( pProfiler->IsPartitioning() )
2719*b1cdbd2cSJim Jagielski {
2720*b1cdbd2cSJim Jagielski pRet->GenReturn( RET_ProfileInfo, S_ProfileDump, (comm_ULONG)0 );
2721*b1cdbd2cSJim Jagielski pProfiler->StopPartitioning();
2722*b1cdbd2cSJim Jagielski }
2723*b1cdbd2cSJim Jagielski
2724*b1cdbd2cSJim Jagielski delete pProfiler;
2725*b1cdbd2cSJim Jagielski pProfiler = NULL;
2726*b1cdbd2cSJim Jagielski }
2727*b1cdbd2cSJim Jagielski break;
2728*b1cdbd2cSJim Jagielski case RC_MenuGetItemCount:
2729*b1cdbd2cSJim Jagielski case RC_MenuGetItemId:
2730*b1cdbd2cSJim Jagielski case RC_MenuGetItemPos:
2731*b1cdbd2cSJim Jagielski case RC_MenuIsSeperator:
2732*b1cdbd2cSJim Jagielski case RC_MenuIsItemChecked:
2733*b1cdbd2cSJim Jagielski case RC_MenuIsItemEnabled:
2734*b1cdbd2cSJim Jagielski case RC_MenuGetItemText:
2735*b1cdbd2cSJim Jagielski case RC_MenuGetItemCommand:
2736*b1cdbd2cSJim Jagielski case RC_MenuHasSubMenu:
2737*b1cdbd2cSJim Jagielski case RC_MenuSelect:
2738*b1cdbd2cSJim Jagielski {
2739*b1cdbd2cSJim Jagielski PopupMenu *pPopup = NULL;
2740*b1cdbd2cSJim Jagielski MenuBar *pMenuBar = NULL;
2741*b1cdbd2cSJim Jagielski Menu *pMenu;
2742*b1cdbd2cSJim Jagielski
2743*b1cdbd2cSJim Jagielski sal_uInt16 nErr = GetCurrentMenues( pPopup, pMenuBar, pMenu );
2744*b1cdbd2cSJim Jagielski
2745*b1cdbd2cSJim Jagielski if ( !pMenu )
2746*b1cdbd2cSJim Jagielski {
2747*b1cdbd2cSJim Jagielski if ( nErr == 1 )
2748*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_NO_POPUP ) );
2749*b1cdbd2cSJim Jagielski else
2750*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_NO_SUBMENU ) );
2751*b1cdbd2cSJim Jagielski break;
2752*b1cdbd2cSJim Jagielski }
2753*b1cdbd2cSJim Jagielski
2754*b1cdbd2cSJim Jagielski sal_uInt16 nItemCount = 0;
2755*b1cdbd2cSJim Jagielski switch ( nMethodId )
2756*b1cdbd2cSJim Jagielski {
2757*b1cdbd2cSJim Jagielski case RC_MenuGetItemCount:
2758*b1cdbd2cSJim Jagielski case RC_MenuGetItemId:
2759*b1cdbd2cSJim Jagielski case RC_MenuIsSeperator:
2760*b1cdbd2cSJim Jagielski {
2761*b1cdbd2cSJim Jagielski nItemCount = pMenu->GetItemCount();
2762*b1cdbd2cSJim Jagielski if ( pMenu->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES )
2763*b1cdbd2cSJim Jagielski { // jep, we have to adjust the count
2764*b1cdbd2cSJim Jagielski sal_Bool bLastWasSeperator = sal_True; // sal_True for Separator at the top
2765*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 0 ; i < pMenu->GetItemCount() ; i++ )
2766*b1cdbd2cSJim Jagielski {
2767*b1cdbd2cSJim Jagielski if ( !pMenu->IsItemEnabled( pMenu->GetItemId( i ) ) )
2768*b1cdbd2cSJim Jagielski nItemCount--;
2769*b1cdbd2cSJim Jagielski else
2770*b1cdbd2cSJim Jagielski {
2771*b1cdbd2cSJim Jagielski if ( pMenu->GetItemType( i ) == MENUITEM_SEPARATOR && bLastWasSeperator )
2772*b1cdbd2cSJim Jagielski nItemCount--;
2773*b1cdbd2cSJim Jagielski bLastWasSeperator = pMenu->GetItemType( i ) == MENUITEM_SEPARATOR;
2774*b1cdbd2cSJim Jagielski }
2775*b1cdbd2cSJim Jagielski }
2776*b1cdbd2cSJim Jagielski if ( bLastWasSeperator ) // Separator at bottom
2777*b1cdbd2cSJim Jagielski nItemCount--;
2778*b1cdbd2cSJim Jagielski }
2779*b1cdbd2cSJim Jagielski }
2780*b1cdbd2cSJim Jagielski break;
2781*b1cdbd2cSJim Jagielski }
2782*b1cdbd2cSJim Jagielski
2783*b1cdbd2cSJim Jagielski // for certain methods calculate the physical index (reinserting the hidden entries)
2784*b1cdbd2cSJim Jagielski sal_uInt16 nPhysicalIndex = 0;
2785*b1cdbd2cSJim Jagielski switch ( nMethodId )
2786*b1cdbd2cSJim Jagielski {
2787*b1cdbd2cSJim Jagielski case RC_MenuGetItemId:
2788*b1cdbd2cSJim Jagielski case RC_MenuIsSeperator:
2789*b1cdbd2cSJim Jagielski {
2790*b1cdbd2cSJim Jagielski nPhysicalIndex = nNr1;
2791*b1cdbd2cSJim Jagielski if ( pMenu->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES )
2792*b1cdbd2cSJim Jagielski { // jep, we have to adjust the position
2793*b1cdbd2cSJim Jagielski sal_Bool bLastWasSeperator = sal_True; // sal_True for Separator at the top
2794*b1cdbd2cSJim Jagielski sal_uInt16 nVisibleCount = 0;
2795*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 0 ; i < pMenu->GetItemCount() && nVisibleCount < nNr1 ; i++ )
2796*b1cdbd2cSJim Jagielski {
2797*b1cdbd2cSJim Jagielski if ( pMenu->IsItemEnabled( pMenu->GetItemId( i ) )
2798*b1cdbd2cSJim Jagielski && !( pMenu->GetItemType( i ) == MENUITEM_SEPARATOR && bLastWasSeperator ) )
2799*b1cdbd2cSJim Jagielski {
2800*b1cdbd2cSJim Jagielski nVisibleCount++;
2801*b1cdbd2cSJim Jagielski bLastWasSeperator = pMenu->GetItemType( i ) == MENUITEM_SEPARATOR;
2802*b1cdbd2cSJim Jagielski }
2803*b1cdbd2cSJim Jagielski else
2804*b1cdbd2cSJim Jagielski nPhysicalIndex++;
2805*b1cdbd2cSJim Jagielski }
2806*b1cdbd2cSJim Jagielski DBG_ASSERT( nVisibleCount == nNr1, "Adaption of Index failed: nVisibleCount != nNr1" );
2807*b1cdbd2cSJim Jagielski }
2808*b1cdbd2cSJim Jagielski }
2809*b1cdbd2cSJim Jagielski break;
2810*b1cdbd2cSJim Jagielski }
2811*b1cdbd2cSJim Jagielski
2812*b1cdbd2cSJim Jagielski
2813*b1cdbd2cSJim Jagielski
2814*b1cdbd2cSJim Jagielski switch ( nMethodId )
2815*b1cdbd2cSJim Jagielski {
2816*b1cdbd2cSJim Jagielski case RC_MenuGetItemCount:
2817*b1cdbd2cSJim Jagielski {
2818*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_ULONG)nItemCount );
2819*b1cdbd2cSJim Jagielski }
2820*b1cdbd2cSJim Jagielski break;
2821*b1cdbd2cSJim Jagielski case RC_MenuGetItemId:
2822*b1cdbd2cSJim Jagielski {
2823*b1cdbd2cSJim Jagielski if ( ValueOK( rtl::OString(), RcString( nMethodId ),nNr1,nItemCount) )
2824*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_ULONG)pMenu->GetItemId(nPhysicalIndex-1) );
2825*b1cdbd2cSJim Jagielski }
2826*b1cdbd2cSJim Jagielski break;
2827*b1cdbd2cSJim Jagielski case RC_MenuGetItemPos:
2828*b1cdbd2cSJim Jagielski {
2829*b1cdbd2cSJim Jagielski sal_uInt16 nLogicalPos = pMenu->GetItemPos(nNr1);
2830*b1cdbd2cSJim Jagielski if ( MENU_ITEM_NOTFOUND != nLogicalPos && pMenu->GetMenuFlags() & MENU_FLAG_HIDEDISABLEDENTRIES )
2831*b1cdbd2cSJim Jagielski { // jep, we have to adjust the position
2832*b1cdbd2cSJim Jagielski if ( !pMenu->IsItemEnabled( nNr1 ) )
2833*b1cdbd2cSJim Jagielski nLogicalPos = MENU_ITEM_NOTFOUND;
2834*b1cdbd2cSJim Jagielski else
2835*b1cdbd2cSJim Jagielski {
2836*b1cdbd2cSJim Jagielski sal_Bool bLastWasSeperator = sal_False;
2837*b1cdbd2cSJim Jagielski for ( int i = nLogicalPos ; i >= 0 ; i-- )
2838*b1cdbd2cSJim Jagielski {
2839*b1cdbd2cSJim Jagielski if ( !pMenu->IsItemEnabled( pMenu->GetItemId( sal::static_int_cast< sal_uInt16 >(i) ) ) ||
2840*b1cdbd2cSJim Jagielski ( pMenu->GetItemType( sal::static_int_cast< sal_uInt16 >(i) ) == MENUITEM_SEPARATOR && bLastWasSeperator ) )
2841*b1cdbd2cSJim Jagielski nLogicalPos--;
2842*b1cdbd2cSJim Jagielski bLastWasSeperator = pMenu->GetItemType( sal::static_int_cast< sal_uInt16 >(i) ) == MENUITEM_SEPARATOR;
2843*b1cdbd2cSJim Jagielski }
2844*b1cdbd2cSJim Jagielski }
2845*b1cdbd2cSJim Jagielski }
2846*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_ULONG)(nLogicalPos+1) );
2847*b1cdbd2cSJim Jagielski }
2848*b1cdbd2cSJim Jagielski break;
2849*b1cdbd2cSJim Jagielski case RC_MenuIsSeperator:
2850*b1cdbd2cSJim Jagielski {
2851*b1cdbd2cSJim Jagielski if ( ValueOK( rtl::OString(), RcString( nMethodId ),nNr1,nItemCount) )
2852*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_BOOL)(pMenu->GetItemType(nPhysicalIndex-1) == MENUITEM_SEPARATOR) );
2853*b1cdbd2cSJim Jagielski }
2854*b1cdbd2cSJim Jagielski break;
2855*b1cdbd2cSJim Jagielski case RC_MenuIsItemChecked:
2856*b1cdbd2cSJim Jagielski {
2857*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_BOOL)pMenu->IsItemChecked(nNr1) );
2858*b1cdbd2cSJim Jagielski }
2859*b1cdbd2cSJim Jagielski break;
2860*b1cdbd2cSJim Jagielski case RC_MenuIsItemEnabled:
2861*b1cdbd2cSJim Jagielski {
2862*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_BOOL)pMenu->IsItemEnabled(nNr1) );
2863*b1cdbd2cSJim Jagielski }
2864*b1cdbd2cSJim Jagielski break;
2865*b1cdbd2cSJim Jagielski case RC_MenuGetItemText:
2866*b1cdbd2cSJim Jagielski {
2867*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (String)pMenu->GetItemText(nNr1) );
2868*b1cdbd2cSJim Jagielski }
2869*b1cdbd2cSJim Jagielski break;
2870*b1cdbd2cSJim Jagielski case RC_MenuGetItemCommand:
2871*b1cdbd2cSJim Jagielski {
2872*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (String)pMenu->GetItemCommand(nNr1) );
2873*b1cdbd2cSJim Jagielski }
2874*b1cdbd2cSJim Jagielski break;
2875*b1cdbd2cSJim Jagielski case RC_MenuHasSubMenu:
2876*b1cdbd2cSJim Jagielski {
2877*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (sal_Bool)(pMenu->GetPopupMenu(nNr1) != NULL) );
2878*b1cdbd2cSJim Jagielski }
2879*b1cdbd2cSJim Jagielski break;
2880*b1cdbd2cSJim Jagielski case RC_MenuSelect:
2881*b1cdbd2cSJim Jagielski {
2882*b1cdbd2cSJim Jagielski if ( pMenu->GetPopupMenu(nNr1) )
2883*b1cdbd2cSJim Jagielski {
2884*b1cdbd2cSJim Jagielski if ( !aSubMenuId1 )
2885*b1cdbd2cSJim Jagielski aSubMenuId1 = nNr1;
2886*b1cdbd2cSJim Jagielski else if ( !aSubMenuId2 )
2887*b1cdbd2cSJim Jagielski aSubMenuId2 = nNr1;
2888*b1cdbd2cSJim Jagielski else if ( !aSubMenuId3 )
2889*b1cdbd2cSJim Jagielski aSubMenuId3 = nNr1;
2890*b1cdbd2cSJim Jagielski
2891*b1cdbd2cSJim Jagielski if ( pPopup )
2892*b1cdbd2cSJim Jagielski pPopup->SelectEntry(nNr1);
2893*b1cdbd2cSJim Jagielski else
2894*b1cdbd2cSJim Jagielski pMenuBar->SelectEntry(nNr1);
2895*b1cdbd2cSJim Jagielski }
2896*b1cdbd2cSJim Jagielski else
2897*b1cdbd2cSJim Jagielski {
2898*b1cdbd2cSJim Jagielski if ( pPopup )
2899*b1cdbd2cSJim Jagielski {
2900*b1cdbd2cSJim Jagielski pPopup->EndExecute(nNr1);
2901*b1cdbd2cSJim Jagielski aSubMenuId1 = 0;
2902*b1cdbd2cSJim Jagielski aSubMenuId2 = 0;
2903*b1cdbd2cSJim Jagielski aSubMenuId3 = 0;
2904*b1cdbd2cSJim Jagielski pMenuWindow = NULL;
2905*b1cdbd2cSJim Jagielski }
2906*b1cdbd2cSJim Jagielski else
2907*b1cdbd2cSJim Jagielski {
2908*b1cdbd2cSJim Jagielski pMenuBar->SelectEntry(nNr1);
2909*b1cdbd2cSJim Jagielski aSubMenuId1 = 0;
2910*b1cdbd2cSJim Jagielski aSubMenuId2 = 0;
2911*b1cdbd2cSJim Jagielski aSubMenuId3 = 0;
2912*b1cdbd2cSJim Jagielski pMenuWindow = NULL;
2913*b1cdbd2cSJim Jagielski }
2914*b1cdbd2cSJim Jagielski }
2915*b1cdbd2cSJim Jagielski }
2916*b1cdbd2cSJim Jagielski break;
2917*b1cdbd2cSJim Jagielski }
2918*b1cdbd2cSJim Jagielski }
2919*b1cdbd2cSJim Jagielski break;
2920*b1cdbd2cSJim Jagielski case RC_SetControlType:
2921*b1cdbd2cSJim Jagielski {
2922*b1cdbd2cSJim Jagielski DirectLog( S_QAError, GEN_RES_STR0( S_DEPRECATED ) );
2923*b1cdbd2cSJim Jagielski }
2924*b1cdbd2cSJim Jagielski break;
2925*b1cdbd2cSJim Jagielski case RC_Kill:
2926*b1cdbd2cSJim Jagielski case RC_RmDir:
2927*b1cdbd2cSJim Jagielski case RC_MkDir:
2928*b1cdbd2cSJim Jagielski case RC_FileCopy:
2929*b1cdbd2cSJim Jagielski case RC_Name:
2930*b1cdbd2cSJim Jagielski case RC_Dir:
2931*b1cdbd2cSJim Jagielski case RC_FileLen:
2932*b1cdbd2cSJim Jagielski case RC_FileDateTime:
2933*b1cdbd2cSJim Jagielski {
2934*b1cdbd2cSJim Jagielski long nErrorcode = FSYS_ERR_OK;
2935*b1cdbd2cSJim Jagielski switch ( nMethodId )
2936*b1cdbd2cSJim Jagielski {
2937*b1cdbd2cSJim Jagielski case RC_Kill:
2938*b1cdbd2cSJim Jagielski {
2939*b1cdbd2cSJim Jagielski DirEntry aFile( aString1 );
2940*b1cdbd2cSJim Jagielski nErrorcode = aFile.GetError();
2941*b1cdbd2cSJim Jagielski if ( FSYS_ERR_OK == nErrorcode && FileStat( aFile ).IsKind( FSYS_KIND_FILE ) )
2942*b1cdbd2cSJim Jagielski nErrorcode = aFile.Kill();
2943*b1cdbd2cSJim Jagielski else
2944*b1cdbd2cSJim Jagielski nErrorcode = FSYS_ERR_NOTAFILE;
2945*b1cdbd2cSJim Jagielski }
2946*b1cdbd2cSJim Jagielski break;
2947*b1cdbd2cSJim Jagielski case RC_RmDir:
2948*b1cdbd2cSJim Jagielski {
2949*b1cdbd2cSJim Jagielski DirEntry aDir( aString1 );
2950*b1cdbd2cSJim Jagielski nErrorcode = aDir.GetError();
2951*b1cdbd2cSJim Jagielski if ( FSYS_ERR_OK == nErrorcode && FileStat( aDir ).IsKind( FSYS_KIND_DIR ) )
2952*b1cdbd2cSJim Jagielski nErrorcode = aDir.Kill();
2953*b1cdbd2cSJim Jagielski else
2954*b1cdbd2cSJim Jagielski nErrorcode = FSYS_ERR_NOTADIRECTORY;
2955*b1cdbd2cSJim Jagielski }
2956*b1cdbd2cSJim Jagielski break;
2957*b1cdbd2cSJim Jagielski case RC_MkDir:
2958*b1cdbd2cSJim Jagielski {
2959*b1cdbd2cSJim Jagielski DirEntry aDir( aString1 );
2960*b1cdbd2cSJim Jagielski nErrorcode = aDir.GetError();
2961*b1cdbd2cSJim Jagielski if ( !nErrorcode && !aDir.MakeDir() )
2962*b1cdbd2cSJim Jagielski nErrorcode = FSYS_ERR_UNKNOWN;
2963*b1cdbd2cSJim Jagielski // Workaround f�r Bug 60693
2964*b1cdbd2cSJim Jagielski // nErrorcode = aDir.GetError();
2965*b1cdbd2cSJim Jagielski }
2966*b1cdbd2cSJim Jagielski break;
2967*b1cdbd2cSJim Jagielski case RC_FileCopy:
2968*b1cdbd2cSJim Jagielski {
2969*b1cdbd2cSJim Jagielski nErrorcode = DirEntry( aString1 ).CopyTo( DirEntry( aString2 ), FSYS_ACTION_COPYFILE );
2970*b1cdbd2cSJim Jagielski }
2971*b1cdbd2cSJim Jagielski break;
2972*b1cdbd2cSJim Jagielski case RC_Name:
2973*b1cdbd2cSJim Jagielski {
2974*b1cdbd2cSJim Jagielski nErrorcode = DirEntry( aString1 ).MoveTo( DirEntry( aString2 ) );
2975*b1cdbd2cSJim Jagielski }
2976*b1cdbd2cSJim Jagielski break;
2977*b1cdbd2cSJim Jagielski case RC_Dir:
2978*b1cdbd2cSJim Jagielski {
2979*b1cdbd2cSJim Jagielski
2980*b1cdbd2cSJim Jagielski String aPath;
2981*b1cdbd2cSJim Jagielski sal_uInt16 nDirFlags = 0;
2982*b1cdbd2cSJim Jagielski // from basic/source/inc/runtime.hxx
2983*b1cdbd2cSJim Jagielski #define Sb_ATTR_NORMAL 0x0000
2984*b1cdbd2cSJim Jagielski #define Sb_ATTR_HIDDEN 0x0002
2985*b1cdbd2cSJim Jagielski #define Sb_ATTR_SYSTEM 0x0004
2986*b1cdbd2cSJim Jagielski #define Sb_ATTR_VOLUME 0x0008
2987*b1cdbd2cSJim Jagielski #define Sb_ATTR_DIRECTORY 0x0010
2988*b1cdbd2cSJim Jagielski #define Sb_ATTR_ARCHIVE 0x0020
2989*b1cdbd2cSJim Jagielski // copied from Basic and adapted basic/source/runtime/methods.cxx Revision 1.54
2990*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_STR_1) )
2991*b1cdbd2cSJim Jagielski {
2992*b1cdbd2cSJim Jagielski delete pDir;
2993*b1cdbd2cSJim Jagielski pDir = NULL; // wg. Sonderbehandlung Sb_ATTR_VOLUME
2994*b1cdbd2cSJim Jagielski DirEntry aEntry( aString1 );
2995*b1cdbd2cSJim Jagielski FileStat aStat( aEntry );
2996*b1cdbd2cSJim Jagielski if(!aStat.GetError() && (aStat.GetKind() & FSYS_KIND_FILE))
2997*b1cdbd2cSJim Jagielski {
2998*b1cdbd2cSJim Jagielski // OK, only a filename
2999*b1cdbd2cSJim Jagielski // cut off path (VB4)
3000*b1cdbd2cSJim Jagielski aPath = aEntry.GetName();
3001*b1cdbd2cSJim Jagielski }
3002*b1cdbd2cSJim Jagielski else
3003*b1cdbd2cSJim Jagielski {
3004*b1cdbd2cSJim Jagielski sal_uInt16 nFlags = 0;
3005*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_USHORT_1) )
3006*b1cdbd2cSJim Jagielski nDirFlags = nFlags = nNr1;
3007*b1cdbd2cSJim Jagielski else
3008*b1cdbd2cSJim Jagielski nDirFlags = nFlags = Sb_ATTR_HIDDEN | Sb_ATTR_SYSTEM | Sb_ATTR_DIRECTORY;
3009*b1cdbd2cSJim Jagielski
3010*b1cdbd2cSJim Jagielski // Nur diese Bitmaske ist unter Windows erlaubt
3011*b1cdbd2cSJim Jagielski // Sb_ATTR_VOLUME wird getrennt gehandelt
3012*b1cdbd2cSJim Jagielski if( nDirFlags & Sb_ATTR_VOLUME )
3013*b1cdbd2cSJim Jagielski aPath = aEntry.GetVolume();
3014*b1cdbd2cSJim Jagielski else
3015*b1cdbd2cSJim Jagielski {
3016*b1cdbd2cSJim Jagielski // Die richtige Auswahl treffen
3017*b1cdbd2cSJim Jagielski sal_uInt16 nMode = FSYS_KIND_FILE;
3018*b1cdbd2cSJim Jagielski if( nFlags & Sb_ATTR_DIRECTORY )
3019*b1cdbd2cSJim Jagielski nMode |= FSYS_KIND_DIR;
3020*b1cdbd2cSJim Jagielski if( nFlags == Sb_ATTR_DIRECTORY )
3021*b1cdbd2cSJim Jagielski nMode = FSYS_KIND_DIR;
3022*b1cdbd2cSJim Jagielski pDir = new Dir( aEntry, (DirEntryKind) nMode );
3023*b1cdbd2cSJim Jagielski nErrorcode = pDir->GetError();
3024*b1cdbd2cSJim Jagielski nDirPos = 0;
3025*b1cdbd2cSJim Jagielski }
3026*b1cdbd2cSJim Jagielski }
3027*b1cdbd2cSJim Jagielski }
3028*b1cdbd2cSJim Jagielski
3029*b1cdbd2cSJim Jagielski if( pDir )
3030*b1cdbd2cSJim Jagielski {
3031*b1cdbd2cSJim Jagielski for( ;; )
3032*b1cdbd2cSJim Jagielski {
3033*b1cdbd2cSJim Jagielski if( nDirPos >= pDir->Count() )
3034*b1cdbd2cSJim Jagielski {
3035*b1cdbd2cSJim Jagielski delete pDir;
3036*b1cdbd2cSJim Jagielski pDir = NULL;
3037*b1cdbd2cSJim Jagielski aPath.Erase();
3038*b1cdbd2cSJim Jagielski break;
3039*b1cdbd2cSJim Jagielski }
3040*b1cdbd2cSJim Jagielski DirEntry aNextEntry=(*(pDir))[nDirPos++];
3041*b1cdbd2cSJim Jagielski aPath = aNextEntry.GetName(); //Full();
3042*b1cdbd2cSJim Jagielski break;
3043*b1cdbd2cSJim Jagielski }
3044*b1cdbd2cSJim Jagielski }
3045*b1cdbd2cSJim Jagielski if ( !nErrorcode )
3046*b1cdbd2cSJim Jagielski {
3047*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, aPath );
3048*b1cdbd2cSJim Jagielski }
3049*b1cdbd2cSJim Jagielski
3050*b1cdbd2cSJim Jagielski
3051*b1cdbd2cSJim Jagielski
3052*b1cdbd2cSJim Jagielski /* keep old Implementation for now
3053*b1cdbd2cSJim Jagielski // neues Verzeichnis einlesen
3054*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_STR_1) )
3055*b1cdbd2cSJim Jagielski {
3056*b1cdbd2cSJim Jagielski if ( pDir )
3057*b1cdbd2cSJim Jagielski {
3058*b1cdbd2cSJim Jagielski delete pDir;
3059*b1cdbd2cSJim Jagielski pDir = NULL;
3060*b1cdbd2cSJim Jagielski }
3061*b1cdbd2cSJim Jagielski DirEntryKind aDirEntryKind = FSYS_KIND_FILE | FSYS_KIND_DIR;
3062*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_USHORT_1) && nNr1 )
3063*b1cdbd2cSJim Jagielski {
3064*b1cdbd2cSJim Jagielski if ( nNr1 & 16 )
3065*b1cdbd2cSJim Jagielski aDirEntryKind = FSYS_KIND_DIR;
3066*b1cdbd2cSJim Jagielski else
3067*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_SELECTION_BY_ATTRIBUTE_ONLY_DIRECTORIES ) );
3068*b1cdbd2cSJim Jagielski }
3069*b1cdbd2cSJim Jagielski
3070*b1cdbd2cSJim Jagielski DirEntry aEntry( aString1 );
3071*b1cdbd2cSJim Jagielski nErrorcode = aEntry.GetError();
3072*b1cdbd2cSJim Jagielski if ( !nErrorcode )
3073*b1cdbd2cSJim Jagielski {
3074*b1cdbd2cSJim Jagielski nDirPos = 0;
3075*b1cdbd2cSJim Jagielski FileStat aFS( aEntry );
3076*b1cdbd2cSJim Jagielski if ( !aFS.IsKind( FSYS_KIND_WILD ) && !aFS.IsKind( FSYS_KIND_DIR ) && aEntry.Exists() )
3077*b1cdbd2cSJim Jagielski { // Sonderbehandlung f�r genau einen Eintrag
3078*b1cdbd2cSJim Jagielski if ( !aFS.IsKind( FSYS_KIND_DIR ) && ( aDirEntryKind == FSYS_KIND_DIR ) )
3079*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, String() );
3080*b1cdbd2cSJim Jagielski else
3081*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (String)(aEntry.GetName()) );
3082*b1cdbd2cSJim Jagielski
3083*b1cdbd2cSJim Jagielski break;
3084*b1cdbd2cSJim Jagielski }
3085*b1cdbd2cSJim Jagielski else
3086*b1cdbd2cSJim Jagielski {
3087*b1cdbd2cSJim Jagielski pDir = new Dir( aEntry, aDirEntryKind );
3088*b1cdbd2cSJim Jagielski nErrorcode = pDir->GetError();
3089*b1cdbd2cSJim Jagielski }
3090*b1cdbd2cSJim Jagielski }
3091*b1cdbd2cSJim Jagielski }
3092*b1cdbd2cSJim Jagielski
3093*b1cdbd2cSJim Jagielski if ( !pDir )
3094*b1cdbd2cSJim Jagielski pDir = new Dir;
3095*b1cdbd2cSJim Jagielski
3096*b1cdbd2cSJim Jagielski if ( !nErrorcode && ValueOK( nMethodId, GEN_RES_STR0( S_NO_MORE_FILES ), nDirPos+1, pDir->Count()+1 ) )
3097*b1cdbd2cSJim Jagielski {
3098*b1cdbd2cSJim Jagielski if ( nDirPos == pDir->Count() )
3099*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, String() );
3100*b1cdbd2cSJim Jagielski else
3101*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (String)((*pDir)[ nDirPos ].GetName()) );
3102*b1cdbd2cSJim Jagielski nDirPos++;
3103*b1cdbd2cSJim Jagielski }*/
3104*b1cdbd2cSJim Jagielski }
3105*b1cdbd2cSJim Jagielski break;
3106*b1cdbd2cSJim Jagielski case RC_FileLen:
3107*b1cdbd2cSJim Jagielski {
3108*b1cdbd2cSJim Jagielski DirEntry aFile( aString1 );
3109*b1cdbd2cSJim Jagielski nErrorcode = aFile.GetError();
3110*b1cdbd2cSJim Jagielski if ( FSYS_ERR_OK == nErrorcode )
3111*b1cdbd2cSJim Jagielski {
3112*b1cdbd2cSJim Jagielski FileStat aFS( aFile );
3113*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, static_cast<comm_ULONG>(aFS.GetSize()) ); //GetSize() sal_uLong != comm_ULONG on 64bit
3114*b1cdbd2cSJim Jagielski nErrorcode = aFS.GetError();
3115*b1cdbd2cSJim Jagielski }
3116*b1cdbd2cSJim Jagielski }
3117*b1cdbd2cSJim Jagielski break;
3118*b1cdbd2cSJim Jagielski case RC_FileDateTime:
3119*b1cdbd2cSJim Jagielski {
3120*b1cdbd2cSJim Jagielski DirEntry aFile( aString1 );
3121*b1cdbd2cSJim Jagielski nErrorcode = aFile.GetError();
3122*b1cdbd2cSJim Jagielski if ( FSYS_ERR_OK == nErrorcode )
3123*b1cdbd2cSJim Jagielski {
3124*b1cdbd2cSJim Jagielski FileStat aStat( aFile );
3125*b1cdbd2cSJim Jagielski Time aTime( aStat.TimeModified() );
3126*b1cdbd2cSJim Jagielski Date aDate( aStat.DateModified() );
3127*b1cdbd2cSJim Jagielski nErrorcode = aStat.GetError();
3128*b1cdbd2cSJim Jagielski
3129*b1cdbd2cSJim Jagielski double fSerial = (double)( aDate - Date(30,12,1899) );
3130*b1cdbd2cSJim Jagielski long nSeconds = aTime.GetHour();
3131*b1cdbd2cSJim Jagielski nSeconds *= 3600;
3132*b1cdbd2cSJim Jagielski nSeconds += aTime.GetMin() * 60;
3133*b1cdbd2cSJim Jagielski nSeconds += aTime.GetSec();
3134*b1cdbd2cSJim Jagielski double nDays = ((double)nSeconds) / (double)(24.0*3600.0);
3135*b1cdbd2cSJim Jagielski fSerial += nDays;
3136*b1cdbd2cSJim Jagielski
3137*b1cdbd2cSJim Jagielski SbxValueRef xValue = new SbxValue( SbxDATE );
3138*b1cdbd2cSJim Jagielski xValue->PutDate( fSerial );
3139*b1cdbd2cSJim Jagielski
3140*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, *xValue );
3141*b1cdbd2cSJim Jagielski }
3142*b1cdbd2cSJim Jagielski }
3143*b1cdbd2cSJim Jagielski break;
3144*b1cdbd2cSJim Jagielski }
3145*b1cdbd2cSJim Jagielski switch ( nErrorcode )
3146*b1cdbd2cSJim Jagielski {
3147*b1cdbd2cSJim Jagielski case FSYS_ERR_OK:
3148*b1cdbd2cSJim Jagielski break;
3149*b1cdbd2cSJim Jagielski case FSYS_ERR_MISPLACEDCHAR:
3150*b1cdbd2cSJim Jagielski {
3151*b1cdbd2cSJim Jagielski ReportError( CUniString("MISPLACEDCHAR") );
3152*b1cdbd2cSJim Jagielski }
3153*b1cdbd2cSJim Jagielski break;
3154*b1cdbd2cSJim Jagielski case FSYS_ERR_INVALIDCHAR:
3155*b1cdbd2cSJim Jagielski {
3156*b1cdbd2cSJim Jagielski ReportError( CUniString("INVALIDCHAR") );
3157*b1cdbd2cSJim Jagielski }
3158*b1cdbd2cSJim Jagielski break;
3159*b1cdbd2cSJim Jagielski case FSYS_ERR_NOTEXISTS:
3160*b1cdbd2cSJim Jagielski {
3161*b1cdbd2cSJim Jagielski ReportError( CUniString("NOTEXISTS") );
3162*b1cdbd2cSJim Jagielski }
3163*b1cdbd2cSJim Jagielski break;
3164*b1cdbd2cSJim Jagielski case FSYS_ERR_ALREADYEXISTS:
3165*b1cdbd2cSJim Jagielski {
3166*b1cdbd2cSJim Jagielski ReportError( CUniString("ALREADYEXISTS") );
3167*b1cdbd2cSJim Jagielski }
3168*b1cdbd2cSJim Jagielski break;
3169*b1cdbd2cSJim Jagielski case FSYS_ERR_NOTADIRECTORY:
3170*b1cdbd2cSJim Jagielski {
3171*b1cdbd2cSJim Jagielski ReportError( CUniString("NOTADIRECTORY") );
3172*b1cdbd2cSJim Jagielski }
3173*b1cdbd2cSJim Jagielski break;
3174*b1cdbd2cSJim Jagielski case FSYS_ERR_NOTAFILE:
3175*b1cdbd2cSJim Jagielski {
3176*b1cdbd2cSJim Jagielski ReportError( CUniString("NOTAFILE") );
3177*b1cdbd2cSJim Jagielski }
3178*b1cdbd2cSJim Jagielski break;
3179*b1cdbd2cSJim Jagielski case FSYS_ERR_INVALIDDEVICE:
3180*b1cdbd2cSJim Jagielski {
3181*b1cdbd2cSJim Jagielski ReportError( CUniString("INVALIDDEVICE") );
3182*b1cdbd2cSJim Jagielski }
3183*b1cdbd2cSJim Jagielski break;
3184*b1cdbd2cSJim Jagielski case FSYS_ERR_ACCESSDENIED:
3185*b1cdbd2cSJim Jagielski {
3186*b1cdbd2cSJim Jagielski ReportError( CUniString("ACCESSDENIED") );
3187*b1cdbd2cSJim Jagielski }
3188*b1cdbd2cSJim Jagielski break;
3189*b1cdbd2cSJim Jagielski case FSYS_ERR_LOCKVIOLATION:
3190*b1cdbd2cSJim Jagielski {
3191*b1cdbd2cSJim Jagielski ReportError( CUniString("LOCKVIOLATION") );
3192*b1cdbd2cSJim Jagielski }
3193*b1cdbd2cSJim Jagielski break;
3194*b1cdbd2cSJim Jagielski case FSYS_ERR_VOLUMEFULL:
3195*b1cdbd2cSJim Jagielski {
3196*b1cdbd2cSJim Jagielski ReportError( CUniString("VOLUMEFULL") );
3197*b1cdbd2cSJim Jagielski }
3198*b1cdbd2cSJim Jagielski break;
3199*b1cdbd2cSJim Jagielski case FSYS_ERR_ISWILDCARD:
3200*b1cdbd2cSJim Jagielski {
3201*b1cdbd2cSJim Jagielski ReportError( CUniString("ISWILDCARD") );
3202*b1cdbd2cSJim Jagielski }
3203*b1cdbd2cSJim Jagielski break;
3204*b1cdbd2cSJim Jagielski case FSYS_ERR_NOTSUPPORTED:
3205*b1cdbd2cSJim Jagielski {
3206*b1cdbd2cSJim Jagielski ReportError( CUniString("NOTSUPPORTED") );
3207*b1cdbd2cSJim Jagielski }
3208*b1cdbd2cSJim Jagielski break;
3209*b1cdbd2cSJim Jagielski case FSYS_ERR_UNKNOWN:
3210*b1cdbd2cSJim Jagielski {
3211*b1cdbd2cSJim Jagielski ReportError( CUniString("UNKNOWN") );
3212*b1cdbd2cSJim Jagielski }
3213*b1cdbd2cSJim Jagielski break;
3214*b1cdbd2cSJim Jagielski default:
3215*b1cdbd2cSJim Jagielski {
3216*b1cdbd2cSJim Jagielski ReportError( CUniString("Not an FSYS Error") );
3217*b1cdbd2cSJim Jagielski }
3218*b1cdbd2cSJim Jagielski }
3219*b1cdbd2cSJim Jagielski
3220*b1cdbd2cSJim Jagielski }
3221*b1cdbd2cSJim Jagielski break;
3222*b1cdbd2cSJim Jagielski case RC_TypeKeysDelay:
3223*b1cdbd2cSJim Jagielski {
3224*b1cdbd2cSJim Jagielski if( (nParams & PARAM_BOOL_1) )
3225*b1cdbd2cSJim Jagielski {
3226*b1cdbd2cSJim Jagielski bDoTypeKeysDelay = bBool1;
3227*b1cdbd2cSJim Jagielski }
3228*b1cdbd2cSJim Jagielski else if( nParams & PARAM_USHORT_1 )
3229*b1cdbd2cSJim Jagielski {
3230*b1cdbd2cSJim Jagielski nMinTypeKeysDelay = nNr1;
3231*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_2 )
3232*b1cdbd2cSJim Jagielski nMaxTypeKeysDelay = nNr2;
3233*b1cdbd2cSJim Jagielski else
3234*b1cdbd2cSJim Jagielski nMaxTypeKeysDelay = nMinTypeKeysDelay;
3235*b1cdbd2cSJim Jagielski }
3236*b1cdbd2cSJim Jagielski else
3237*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
3238*b1cdbd2cSJim Jagielski }
3239*b1cdbd2cSJim Jagielski break;
3240*b1cdbd2cSJim Jagielski case RC_GetMouseStyle:
3241*b1cdbd2cSJim Jagielski {
3242*b1cdbd2cSJim Jagielski Pointer aPointer;
3243*b1cdbd2cSJim Jagielski // if ( DragManager::GetDragManager() )
3244*b1cdbd2cSJim Jagielski // aPointer = DragManager::GetDragManager()->GetDragPointer();
3245*b1cdbd2cSJim Jagielski // else
3246*b1cdbd2cSJim Jagielski {
3247*b1cdbd2cSJim Jagielski Window *pActualWin = GetMouseWin();
3248*b1cdbd2cSJim Jagielski if ( pActualWin )
3249*b1cdbd2cSJim Jagielski aPointer = pActualWin->GetPointer();
3250*b1cdbd2cSJim Jagielski else
3251*b1cdbd2cSJim Jagielski {
3252*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR1( S_POINTER_OUTSIDE_APPWIN, RcString( nMethodId ) ) );
3253*b1cdbd2cSJim Jagielski aPointer = Pointer( POINTER_NULL );
3254*b1cdbd2cSJim Jagielski }
3255*b1cdbd2cSJim Jagielski }
3256*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_ULONG)aPointer.GetStyle() );
3257*b1cdbd2cSJim Jagielski }
3258*b1cdbd2cSJim Jagielski break;
3259*b1cdbd2cSJim Jagielski case RC_UnpackStorage:
3260*b1cdbd2cSJim Jagielski {
3261*b1cdbd2cSJim Jagielski if( (nParams & PARAM_STR_1) )
3262*b1cdbd2cSJim Jagielski {
3263*b1cdbd2cSJim Jagielski String aFileName( aString1 );
3264*b1cdbd2cSJim Jagielski DirEntry aDestPath;
3265*b1cdbd2cSJim Jagielski if( (nParams & PARAM_STR_2) )
3266*b1cdbd2cSJim Jagielski aDestPath = DirEntry( aString2 );
3267*b1cdbd2cSJim Jagielski else
3268*b1cdbd2cSJim Jagielski {
3269*b1cdbd2cSJim Jagielski aDestPath = DirEntry( aFileName );
3270*b1cdbd2cSJim Jagielski aDestPath.SetExtension( CUniString( "plaintext" ) );
3271*b1cdbd2cSJim Jagielski }
3272*b1cdbd2cSJim Jagielski
3273*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
3274*b1cdbd2cSJim Jagielski sal_uInt16 nEntries = Dir( aDestPath, FSYS_KIND_FILE | FSYS_KIND_DIR ).Count();
3275*b1cdbd2cSJim Jagielski (void) nEntries; /* avoid warning about unused parameter */
3276*b1cdbd2cSJim Jagielski #endif
3277*b1cdbd2cSJim Jagielski // The Count is only larger than 2 is the path is a directory which is not empty
3278*b1cdbd2cSJim Jagielski // the Count of 2 results from the "." and ".." directory
3279*b1cdbd2cSJim Jagielski if ( Dir( aDestPath, FSYS_KIND_FILE | FSYS_KIND_DIR ).Count() > 2 )
3280*b1cdbd2cSJim Jagielski DirectLog( S_QAError, GEN_RES_STR1( S_DIRECTORY_NOT_EMPTY, aDestPath.GetFull() ) );
3281*b1cdbd2cSJim Jagielski
3282*b1cdbd2cSJim Jagielski SotStorageRef xStorage = new SotStorage( aFileName, STREAM_STD_READ );
3283*b1cdbd2cSJim Jagielski if ( xStorage->GetError() )
3284*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR2(S_UNPACKING_STORAGE_FAILED, aFileName, aDestPath.GetFull()) );
3285*b1cdbd2cSJim Jagielski else
3286*b1cdbd2cSJim Jagielski UnpackStorage( xStorage, aDestPath );
3287*b1cdbd2cSJim Jagielski }
3288*b1cdbd2cSJim Jagielski else
3289*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
3290*b1cdbd2cSJim Jagielski }
3291*b1cdbd2cSJim Jagielski break;
3292*b1cdbd2cSJim Jagielski case RC_CloseSysDialog:
3293*b1cdbd2cSJim Jagielski case RC_ExistsSysDialog:
3294*b1cdbd2cSJim Jagielski {
3295*b1cdbd2cSJim Jagielski if( (nParams & PARAM_USHORT_1) )
3296*b1cdbd2cSJim Jagielski {
3297*b1cdbd2cSJim Jagielski Reference < ::com::sun::star::util::XCancellable > xPicker;
3298*b1cdbd2cSJim Jagielski switch( nNr1 )
3299*b1cdbd2cSJim Jagielski {
3300*b1cdbd2cSJim Jagielski case CONST_FilePicker:
3301*b1cdbd2cSJim Jagielski {
3302*b1cdbd2cSJim Jagielski xPicker.set( Reference < ::com::sun::star::util::XCancellable >( svt::GetTopMostFilePicker(), UNO_QUERY ) );
3303*b1cdbd2cSJim Jagielski }
3304*b1cdbd2cSJim Jagielski break;
3305*b1cdbd2cSJim Jagielski case CONST_FolderPicker:
3306*b1cdbd2cSJim Jagielski {
3307*b1cdbd2cSJim Jagielski xPicker.set( Reference < ::com::sun::star::util::XCancellable >( svt::GetTopMostFolderPicker(), UNO_QUERY ) );
3308*b1cdbd2cSJim Jagielski }
3309*b1cdbd2cSJim Jagielski break;
3310*b1cdbd2cSJim Jagielski default:
3311*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
3312*b1cdbd2cSJim Jagielski }
3313*b1cdbd2cSJim Jagielski switch( nMethodId )
3314*b1cdbd2cSJim Jagielski {
3315*b1cdbd2cSJim Jagielski case RC_CloseSysDialog:
3316*b1cdbd2cSJim Jagielski {
3317*b1cdbd2cSJim Jagielski if ( xPicker.is() )
3318*b1cdbd2cSJim Jagielski xPicker->cancel();
3319*b1cdbd2cSJim Jagielski else
3320*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
3321*b1cdbd2cSJim Jagielski }
3322*b1cdbd2cSJim Jagielski break;
3323*b1cdbd2cSJim Jagielski case RC_ExistsSysDialog:
3324*b1cdbd2cSJim Jagielski {
3325*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_BOOL)xPicker.is() );
3326*b1cdbd2cSJim Jagielski }
3327*b1cdbd2cSJim Jagielski break;
3328*b1cdbd2cSJim Jagielski default:
3329*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
3330*b1cdbd2cSJim Jagielski }
3331*b1cdbd2cSJim Jagielski }
3332*b1cdbd2cSJim Jagielski else
3333*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
3334*b1cdbd2cSJim Jagielski }
3335*b1cdbd2cSJim Jagielski break;
3336*b1cdbd2cSJim Jagielski case RC_SAXCheckWellformed:
3337*b1cdbd2cSJim Jagielski case RC_SAXReadFile:
3338*b1cdbd2cSJim Jagielski
3339*b1cdbd2cSJim Jagielski case RC_SAXGetNodeType:
3340*b1cdbd2cSJim Jagielski case RC_SAXGetAttributeCount:
3341*b1cdbd2cSJim Jagielski case RC_SAXGetAttributeName:
3342*b1cdbd2cSJim Jagielski case RC_SAXGetAttributeValue:
3343*b1cdbd2cSJim Jagielski case RC_SAXGetChildCount:
3344*b1cdbd2cSJim Jagielski case RC_SAXGetElementName:
3345*b1cdbd2cSJim Jagielski case RC_SAXGetChars:
3346*b1cdbd2cSJim Jagielski
3347*b1cdbd2cSJim Jagielski case RC_SAXSeekElement:
3348*b1cdbd2cSJim Jagielski case RC_SAXHasElement:
3349*b1cdbd2cSJim Jagielski case RC_SAXGetElementPath:
3350*b1cdbd2cSJim Jagielski
3351*b1cdbd2cSJim Jagielski case RC_SAXRelease:
3352*b1cdbd2cSJim Jagielski {
3353*b1cdbd2cSJim Jagielski HandleSAXParser();
3354*b1cdbd2cSJim Jagielski }
3355*b1cdbd2cSJim Jagielski break;
3356*b1cdbd2cSJim Jagielski case RC_RecordMacro:
3357*b1cdbd2cSJim Jagielski {
3358*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_BOOL_1) )
3359*b1cdbd2cSJim Jagielski bBool1 = sal_True;
3360*b1cdbd2cSJim Jagielski
3361*b1cdbd2cSJim Jagielski MacroRecorder::GetMacroRecorder()->SetActionRecord( bBool1 );
3362*b1cdbd2cSJim Jagielski }
3363*b1cdbd2cSJim Jagielski break;
3364*b1cdbd2cSJim Jagielski case RC_GetDocumentCount :
3365*b1cdbd2cSJim Jagielski {
3366*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_USHORT)GetDocWinCount() );
3367*b1cdbd2cSJim Jagielski }
3368*b1cdbd2cSJim Jagielski break;
3369*b1cdbd2cSJim Jagielski case RC_ActivateDocument :
3370*b1cdbd2cSJim Jagielski {
3371*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_1 )
3372*b1cdbd2cSJim Jagielski {
3373*b1cdbd2cSJim Jagielski if ( ValueOK( rtl::OString(), RcString( nMethodId ), nNr1, GetDocWinCount() ) )
3374*b1cdbd2cSJim Jagielski {
3375*b1cdbd2cSJim Jagielski Window* pWin = GetDocWin( nNr1-1 );
3376*b1cdbd2cSJim Jagielski if ( pWin )
3377*b1cdbd2cSJim Jagielski {
3378*b1cdbd2cSJim Jagielski pWin->ToTop();
3379*b1cdbd2cSJim Jagielski pWin->GrabFocus();
3380*b1cdbd2cSJim Jagielski }
3381*b1cdbd2cSJim Jagielski }
3382*b1cdbd2cSJim Jagielski }
3383*b1cdbd2cSJim Jagielski else
3384*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR0( S_INVALID_PARAMETERS ) );
3385*b1cdbd2cSJim Jagielski }
3386*b1cdbd2cSJim Jagielski break;
3387*b1cdbd2cSJim Jagielski case RC_GetSystemLanguage :
3388*b1cdbd2cSJim Jagielski {
3389*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (comm_USHORT)Application::GetSettings().GetLanguage() );
3390*b1cdbd2cSJim Jagielski }
3391*b1cdbd2cSJim Jagielski break;
3392*b1cdbd2cSJim Jagielski case RC_CatchGPF :
3393*b1cdbd2cSJim Jagielski {
3394*b1cdbd2cSJim Jagielski if( (nParams & PARAM_BOOL_1) )
3395*b1cdbd2cSJim Jagielski bCatchGPF = bBool1;
3396*b1cdbd2cSJim Jagielski else
3397*b1cdbd2cSJim Jagielski bCatchGPF = sal_True;
3398*b1cdbd2cSJim Jagielski }
3399*b1cdbd2cSJim Jagielski break;
3400*b1cdbd2cSJim Jagielski case RC_IsProduct :
3401*b1cdbd2cSJim Jagielski {
3402*b1cdbd2cSJim Jagielski sal_Bool bIsProduct;
3403*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
3404*b1cdbd2cSJim Jagielski bIsProduct = sal_False;
3405*b1cdbd2cSJim Jagielski #else
3406*b1cdbd2cSJim Jagielski bIsProduct = sal_True;
3407*b1cdbd2cSJim Jagielski #endif
3408*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, nMethodId, (sal_Bool)bIsProduct );
3409*b1cdbd2cSJim Jagielski }
3410*b1cdbd2cSJim Jagielski break;
3411*b1cdbd2cSJim Jagielski case RC_UsePostEvents :
3412*b1cdbd2cSJim Jagielski {
3413*b1cdbd2cSJim Jagielski if( (nParams & PARAM_BOOL_1) )
3414*b1cdbd2cSJim Jagielski bUsePostEvents = bBool1;
3415*b1cdbd2cSJim Jagielski else
3416*b1cdbd2cSJim Jagielski bUsePostEvents = sal_True;
3417*b1cdbd2cSJim Jagielski }
3418*b1cdbd2cSJim Jagielski break;
3419*b1cdbd2cSJim Jagielski default:
3420*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR1( S_UNKNOWN_COMMAND, RcString( nMethodId ) ) );
3421*b1cdbd2cSJim Jagielski }
3422*b1cdbd2cSJim Jagielski SendProfile( RcString(nMethodId) );
3423*b1cdbd2cSJim Jagielski delete this;
3424*b1cdbd2cSJim Jagielski return sal_True;
3425*b1cdbd2cSJim Jagielski }
3426*b1cdbd2cSJim Jagielski
3427*b1cdbd2cSJim Jagielski
UnpackStorage(SotStorageRef xStorage,DirEntry & aBaseDir)3428*b1cdbd2cSJim Jagielski sal_Bool StatementCommand::UnpackStorage( SotStorageRef xStorage, DirEntry &aBaseDir )
3429*b1cdbd2cSJim Jagielski {
3430*b1cdbd2cSJim Jagielski SvStorageInfoList aList;
3431*b1cdbd2cSJim Jagielski xStorage->FillInfoList( &aList );
3432*b1cdbd2cSJim Jagielski
3433*b1cdbd2cSJim Jagielski for( sal_uInt16 i = 0; i < aList.Count(); i++ )
3434*b1cdbd2cSJim Jagielski {
3435*b1cdbd2cSJim Jagielski SvStorageInfo& rInfo = aList.GetObject( i );
3436*b1cdbd2cSJim Jagielski String aName = rInfo.GetName();
3437*b1cdbd2cSJim Jagielski DirEntry aPath ( aBaseDir );
3438*b1cdbd2cSJim Jagielski aPath += DirEntry( aName );
3439*b1cdbd2cSJim Jagielski sal_Bool bIsStorage = xStorage->IsStorage( aName );
3440*b1cdbd2cSJim Jagielski if ( bIsStorage )
3441*b1cdbd2cSJim Jagielski {
3442*b1cdbd2cSJim Jagielski SotStorageRef xSubStorage = xStorage->OpenSotStorage( aName, STREAM_STD_READ );
3443*b1cdbd2cSJim Jagielski if ( xSubStorage->GetError() )
3444*b1cdbd2cSJim Jagielski {
3445*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR2(S_UNPACKING_STORAGE_FAILED, aName, aPath.GetFull()) );
3446*b1cdbd2cSJim Jagielski return sal_False;
3447*b1cdbd2cSJim Jagielski }
3448*b1cdbd2cSJim Jagielski UnpackStorage( xSubStorage, aPath );
3449*b1cdbd2cSJim Jagielski }
3450*b1cdbd2cSJim Jagielski else
3451*b1cdbd2cSJim Jagielski {
3452*b1cdbd2cSJim Jagielski if ( !aPath.MakeDir( sal_True ) )
3453*b1cdbd2cSJim Jagielski {
3454*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR1(S_CANNOT_CREATE_DIRECTORY, aPath.GetFull()) );
3455*b1cdbd2cSJim Jagielski return sal_False;
3456*b1cdbd2cSJim Jagielski }
3457*b1cdbd2cSJim Jagielski SotStorageStreamRef xStream = xStorage->OpenSotStream( aName, STREAM_STD_READ );
3458*b1cdbd2cSJim Jagielski SvFileStream aDestination( aPath.GetFull(), STREAM_STD_READWRITE | STREAM_TRUNC );
3459*b1cdbd2cSJim Jagielski (*xStream) >> aDestination;
3460*b1cdbd2cSJim Jagielski if ( aDestination.GetError() != ERRCODE_NONE )
3461*b1cdbd2cSJim Jagielski {
3462*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR2(S_UNPACKING_STORAGE_FAILED, aName, aPath.GetFull()) );
3463*b1cdbd2cSJim Jagielski return sal_False;
3464*b1cdbd2cSJim Jagielski }
3465*b1cdbd2cSJim Jagielski aDestination.Close();
3466*b1cdbd2cSJim Jagielski }
3467*b1cdbd2cSJim Jagielski }
3468*b1cdbd2cSJim Jagielski return sal_True;
3469*b1cdbd2cSJim Jagielski }
3470*b1cdbd2cSJim Jagielski
3471*b1cdbd2cSJim Jagielski
3472*b1cdbd2cSJim Jagielski // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3473*b1cdbd2cSJim Jagielski
StatementControl(SCmdStream * pCmdIn,sal_uInt16 nControlIdType)3474*b1cdbd2cSJim Jagielski StatementControl::StatementControl( SCmdStream *pCmdIn, sal_uInt16 nControlIdType )
3475*b1cdbd2cSJim Jagielski : StatementList()
3476*b1cdbd2cSJim Jagielski , nNr1( 0 )
3477*b1cdbd2cSJim Jagielski , nNr2( 0 )
3478*b1cdbd2cSJim Jagielski , nNr3( 0 )
3479*b1cdbd2cSJim Jagielski , nNr4( 0 )
3480*b1cdbd2cSJim Jagielski , nLNr1( 0 )
3481*b1cdbd2cSJim Jagielski , aString1()
3482*b1cdbd2cSJim Jagielski , aString2()
3483*b1cdbd2cSJim Jagielski , bBool1(sal_False)
3484*b1cdbd2cSJim Jagielski , bBool2(sal_False)
3485*b1cdbd2cSJim Jagielski {
3486*b1cdbd2cSJim Jagielski QueStatement( NULL );
3487*b1cdbd2cSJim Jagielski //HELPID BACKWARD (SIControl is no longer needed)
3488*b1cdbd2cSJim Jagielski if ( nControlIdType == SIControl )
3489*b1cdbd2cSJim Jagielski {
3490*b1cdbd2cSJim Jagielski comm_ULONG nId;
3491*b1cdbd2cSJim Jagielski pCmdIn->Read( nId );
3492*b1cdbd2cSJim Jagielski aUId = rtl::OString( nId );
3493*b1cdbd2cSJim Jagielski if ( nId == 0 )
3494*b1cdbd2cSJim Jagielski aUId = UID_ACTIVE;
3495*b1cdbd2cSJim Jagielski else
3496*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1c( S_INTERNAL_ERROR, "using numeric HelpID from old Testtool" ) );
3497*b1cdbd2cSJim Jagielski }
3498*b1cdbd2cSJim Jagielski else if ( nControlIdType == SIStringControl )
3499*b1cdbd2cSJim Jagielski {
3500*b1cdbd2cSJim Jagielski String aId;
3501*b1cdbd2cSJim Jagielski pCmdIn->Read( aId );
3502*b1cdbd2cSJim Jagielski aUId = Str2Id( aId );
3503*b1cdbd2cSJim Jagielski }
3504*b1cdbd2cSJim Jagielski else
3505*b1cdbd2cSJim Jagielski {
3506*b1cdbd2cSJim Jagielski DBG_ERROR( "Wrong ControlType" );
3507*b1cdbd2cSJim Jagielski }
3508*b1cdbd2cSJim Jagielski
3509*b1cdbd2cSJim Jagielski pCmdIn->Read( nMethodId );
3510*b1cdbd2cSJim Jagielski pCmdIn->Read( nParams );
3511*b1cdbd2cSJim Jagielski
3512*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_1 ) pCmdIn->Read( nNr1 );
3513*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_2 ) pCmdIn->Read( nNr2 );
3514*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_3 ) pCmdIn->Read( nNr3 );
3515*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_4 ) pCmdIn->Read( nNr4 );
3516*b1cdbd2cSJim Jagielski if( nParams & PARAM_ULONG_1 ) pCmdIn->Read( nLNr1 );
3517*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 ) pCmdIn->Read( aString1 );
3518*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_2 ) pCmdIn->Read( aString2 );
3519*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_1 ) pCmdIn->Read( bBool1 );
3520*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_2 ) pCmdIn->Read( bBool2 );
3521*b1cdbd2cSJim Jagielski
3522*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
3523*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Reading Control: UId: " );
3524*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( Id2Str( aUId ) );
3525*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Methode: " );
3526*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
3527*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Params:" );
3528*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_1 ) {m_pDbgWin->AddText( " n1:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr1 ) );}
3529*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_2 ) {m_pDbgWin->AddText( " n2:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr2 ) );}
3530*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_3 ) {m_pDbgWin->AddText( " n3:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr3 ) );}
3531*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_4 ) {m_pDbgWin->AddText( " n4:" );m_pDbgWin->AddText( String::CreateFromInt32( nNr4 ) );}
3532*b1cdbd2cSJim Jagielski if( nParams & PARAM_ULONG_1 ) {m_pDbgWin->AddText( " nl1:" );m_pDbgWin->AddText( String::CreateFromInt64( nLNr1 ) );}
3533*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 ) {m_pDbgWin->AddText( " s1:" );m_pDbgWin->AddText( aString1 );}
3534*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_2 ) {m_pDbgWin->AddText( " s2:" );m_pDbgWin->AddText( aString2 );}
3535*b1cdbd2cSJim Jagielski /* if( nParams & PARAM_BOOL_1 ) pCmdIn->Read( bBool1 );
3536*b1cdbd2cSJim Jagielski if( nParams & PARAM_BOOL_2 ) pCmdIn->Read( bBool2 );*/
3537*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
3538*b1cdbd2cSJim Jagielski #endif
3539*b1cdbd2cSJim Jagielski }
3540*b1cdbd2cSJim Jagielski
IsDialog(Window * pWin)3541*b1cdbd2cSJim Jagielski sal_Bool IsDialog(Window *pWin)
3542*b1cdbd2cSJim Jagielski { // Alles was von SystemWindow abgeleitet ist
3543*b1cdbd2cSJim Jagielski if ( !pWin )
3544*b1cdbd2cSJim Jagielski return sal_False;
3545*b1cdbd2cSJim Jagielski
3546*b1cdbd2cSJim Jagielski switch (pWin->GetType())
3547*b1cdbd2cSJim Jagielski {
3548*b1cdbd2cSJim Jagielski case WINDOW_FLOATINGWINDOW:
3549*b1cdbd2cSJim Jagielski case WINDOW_DOCKINGWINDOW:
3550*b1cdbd2cSJim Jagielski case WINDOW_MODELESSDIALOG:
3551*b1cdbd2cSJim Jagielski case WINDOW_DIALOG:
3552*b1cdbd2cSJim Jagielski case WINDOW_MODALDIALOG:
3553*b1cdbd2cSJim Jagielski case WINDOW_WORKWINDOW:
3554*b1cdbd2cSJim Jagielski case WINDOW_TABDIALOG:
3555*b1cdbd2cSJim Jagielski
3556*b1cdbd2cSJim Jagielski case WINDOW_MESSBOX:
3557*b1cdbd2cSJim Jagielski case WINDOW_INFOBOX:
3558*b1cdbd2cSJim Jagielski case WINDOW_WARNINGBOX:
3559*b1cdbd2cSJim Jagielski case WINDOW_ERRORBOX:
3560*b1cdbd2cSJim Jagielski case WINDOW_QUERYBOX:
3561*b1cdbd2cSJim Jagielski case WINDOW_BUTTONDIALOG:
3562*b1cdbd2cSJim Jagielski case WINDOW_FILEDIALOG:
3563*b1cdbd2cSJim Jagielski case WINDOW_PRINTDIALOG:
3564*b1cdbd2cSJim Jagielski case WINDOW_PRINTERSETUPDIALOG:
3565*b1cdbd2cSJim Jagielski
3566*b1cdbd2cSJim Jagielski // ab hier nicht ansprechbar (da nicht implementiert)
3567*b1cdbd2cSJim Jagielski case WINDOW_SYSWINDOW:
3568*b1cdbd2cSJim Jagielski case WINDOW_SYSTEMDIALOG:
3569*b1cdbd2cSJim Jagielski case WINDOW_COLORDIALOG:
3570*b1cdbd2cSJim Jagielski case WINDOW_FONTDIALOG:
3571*b1cdbd2cSJim Jagielski case WINDOW_PATHDIALOG:
3572*b1cdbd2cSJim Jagielski
3573*b1cdbd2cSJim Jagielski
3574*b1cdbd2cSJim Jagielski return sal_True;
3575*b1cdbd2cSJim Jagielski // break;
3576*b1cdbd2cSJim Jagielski default:
3577*b1cdbd2cSJim Jagielski return sal_False;
3578*b1cdbd2cSJim Jagielski // break;
3579*b1cdbd2cSJim Jagielski }
3580*b1cdbd2cSJim Jagielski }
3581*b1cdbd2cSJim Jagielski
3582*b1cdbd2cSJim Jagielski
IsAccessable(Window * pWin)3583*b1cdbd2cSJim Jagielski sal_Bool IsAccessable(Window *pWin)
3584*b1cdbd2cSJim Jagielski {
3585*b1cdbd2cSJim Jagielski if ( pWin == NULL )
3586*b1cdbd2cSJim Jagielski return sal_False;
3587*b1cdbd2cSJim Jagielski
3588*b1cdbd2cSJim Jagielski return pWin->IsEnabled() && pWin->IsInputEnabled();
3589*b1cdbd2cSJim Jagielski }
3590*b1cdbd2cSJim Jagielski
3591*b1cdbd2cSJim Jagielski
3592*b1cdbd2cSJim Jagielski
3593*b1cdbd2cSJim Jagielski // neue Hilfsfunktion
ImpGetButton(Window * pBase,WinBits nMask,WinBits nWinBits)3594*b1cdbd2cSJim Jagielski static Window*ImpGetButton( Window *pBase, WinBits nMask, WinBits nWinBits )
3595*b1cdbd2cSJim Jagielski {
3596*b1cdbd2cSJim Jagielski sal_uInt16 n = pBase->GetChildCount();
3597*b1cdbd2cSJim Jagielski for( sal_uInt16 i = 0 ; i < n; i++ ) {
3598*b1cdbd2cSJim Jagielski Window *pChild = pBase->GetChild(i);
3599*b1cdbd2cSJim Jagielski if( pChild->GetType() == WINDOW_OKBUTTON
3600*b1cdbd2cSJim Jagielski || pChild->GetType() == WINDOW_CANCELBUTTON
3601*b1cdbd2cSJim Jagielski || pChild->GetType() == WINDOW_HELPBUTTON
3602*b1cdbd2cSJim Jagielski || pChild->GetType() == WINDOW_PUSHBUTTON )
3603*b1cdbd2cSJim Jagielski if( !nMask || ( pChild->GetStyle() & nMask ) == nWinBits )
3604*b1cdbd2cSJim Jagielski return pChild;
3605*b1cdbd2cSJim Jagielski }
3606*b1cdbd2cSJim Jagielski return NULL;
3607*b1cdbd2cSJim Jagielski }
3608*b1cdbd2cSJim Jagielski
ControlOK(Window * pControl,const sal_Char * cBezeichnung)3609*b1cdbd2cSJim Jagielski sal_Bool StatementControl::ControlOK( Window *pControl, const sal_Char* cBezeichnung )
3610*b1cdbd2cSJim Jagielski {
3611*b1cdbd2cSJim Jagielski if ( pControl && ( ( ( IsAccessable(pControl) || (nMethodId & M_WITH_RETURN) ) &&
3612*b1cdbd2cSJim Jagielski pControl->IsVisible() ) ||
3613*b1cdbd2cSJim Jagielski aUId.equals( UID_ACTIVE ) ) )
3614*b1cdbd2cSJim Jagielski return sal_True;
3615*b1cdbd2cSJim Jagielski else
3616*b1cdbd2cSJim Jagielski {
3617*b1cdbd2cSJim Jagielski UniString aBezeichnung( cBezeichnung, RTL_TEXTENCODING_ASCII_US );
3618*b1cdbd2cSJim Jagielski if ( aBezeichnung.Len() > 0 )
3619*b1cdbd2cSJim Jagielski {
3620*b1cdbd2cSJim Jagielski if (!pControl)
3621*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_WIN_NOT_FOUND, aBezeichnung ) );
3622*b1cdbd2cSJim Jagielski else if ( !pControl->IsVisible() )
3623*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_WIN_INVISIBLE, aBezeichnung ) );
3624*b1cdbd2cSJim Jagielski else
3625*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_WIN_DISABLED, aBezeichnung ) );
3626*b1cdbd2cSJim Jagielski }
3627*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
3628*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( aBezeichnung.AppendAscii(" NotFound or Disabled or Invisible") );
3629*b1cdbd2cSJim Jagielski #endif
3630*b1cdbd2cSJim Jagielski
3631*b1cdbd2cSJim Jagielski return sal_False;
3632*b1cdbd2cSJim Jagielski }
3633*b1cdbd2cSJim Jagielski }
3634*b1cdbd2cSJim Jagielski
3635*b1cdbd2cSJim Jagielski
ValueOK(rtl::OString aId,String aBezeichnung,sal_uLong nValue,sal_uLong nMax)3636*b1cdbd2cSJim Jagielski sal_Bool StatementList::ValueOK( rtl::OString aId, String aBezeichnung, sal_uLong nValue, sal_uLong nMax )
3637*b1cdbd2cSJim Jagielski {
3638*b1cdbd2cSJim Jagielski
3639*b1cdbd2cSJim Jagielski if ( nMax < nValue )
3640*b1cdbd2cSJim Jagielski {
3641*b1cdbd2cSJim Jagielski if ( aBezeichnung.Len() > 0 )
3642*b1cdbd2cSJim Jagielski ReportError( aId, GEN_RES_STR3( S_NUMBER_TOO_BIG, aBezeichnung, UniString::CreateFromInt32( nValue ), UniString::CreateFromInt32( nMax ) ) );
3643*b1cdbd2cSJim Jagielski return sal_False;
3644*b1cdbd2cSJim Jagielski }
3645*b1cdbd2cSJim Jagielski if ( nValue < 1 )
3646*b1cdbd2cSJim Jagielski {
3647*b1cdbd2cSJim Jagielski if ( aBezeichnung.Len() > 0 )
3648*b1cdbd2cSJim Jagielski ReportError( aId, GEN_RES_STR3c3( S_NUMBER_TOO_SMALL, aBezeichnung, UniString::CreateFromInt32( nValue ), "1" ) );
3649*b1cdbd2cSJim Jagielski return sal_False;
3650*b1cdbd2cSJim Jagielski }
3651*b1cdbd2cSJim Jagielski return sal_True;
3652*b1cdbd2cSJim Jagielski }
3653*b1cdbd2cSJim Jagielski
GetCurrentMenues(PopupMenu * & pPopup,MenuBar * & pMenuBar,Menu * & pMenu)3654*b1cdbd2cSJim Jagielski sal_uInt16 StatementList::GetCurrentMenues( PopupMenu *&pPopup, MenuBar *&pMenuBar, Menu *&pMenu )
3655*b1cdbd2cSJim Jagielski {
3656*b1cdbd2cSJim Jagielski if ( WinPtrValid( pMenuWindow ) )
3657*b1cdbd2cSJim Jagielski pMenuBar = pMenuWindow->GetMenuBar();
3658*b1cdbd2cSJim Jagielski
3659*b1cdbd2cSJim Jagielski if ( pMenuBar ) // use MenuBar as base
3660*b1cdbd2cSJim Jagielski pMenu = pMenuBar;
3661*b1cdbd2cSJim Jagielski else // use contextmenu as base
3662*b1cdbd2cSJim Jagielski {
3663*b1cdbd2cSJim Jagielski pMenu = PopupMenu::GetActivePopupMenu();
3664*b1cdbd2cSJim Jagielski pPopup = PopupMenu::GetActivePopupMenu();
3665*b1cdbd2cSJim Jagielski }
3666*b1cdbd2cSJim Jagielski
3667*b1cdbd2cSJim Jagielski if ( !pMenu )
3668*b1cdbd2cSJim Jagielski return 1;
3669*b1cdbd2cSJim Jagielski
3670*b1cdbd2cSJim Jagielski if ( aSubMenuId1 )
3671*b1cdbd2cSJim Jagielski {
3672*b1cdbd2cSJim Jagielski pPopup = pMenu->GetPopupMenu( aSubMenuId1 );
3673*b1cdbd2cSJim Jagielski pMenu = pPopup;
3674*b1cdbd2cSJim Jagielski }
3675*b1cdbd2cSJim Jagielski
3676*b1cdbd2cSJim Jagielski if ( pMenu && aSubMenuId2 )
3677*b1cdbd2cSJim Jagielski {
3678*b1cdbd2cSJim Jagielski pPopup = pMenu->GetPopupMenu( aSubMenuId2 );
3679*b1cdbd2cSJim Jagielski pMenu = pPopup;
3680*b1cdbd2cSJim Jagielski }
3681*b1cdbd2cSJim Jagielski
3682*b1cdbd2cSJim Jagielski if ( pMenu && aSubMenuId3 )
3683*b1cdbd2cSJim Jagielski {
3684*b1cdbd2cSJim Jagielski pPopup = pMenu->GetPopupMenu( aSubMenuId3 );
3685*b1cdbd2cSJim Jagielski pMenu = pPopup;
3686*b1cdbd2cSJim Jagielski }
3687*b1cdbd2cSJim Jagielski
3688*b1cdbd2cSJim Jagielski return 0;
3689*b1cdbd2cSJim Jagielski }
3690*b1cdbd2cSJim Jagielski
AnimateMouse(Window * pControl,TTHotSpots aWohin)3691*b1cdbd2cSJim Jagielski void StatementControl::AnimateMouse( Window *pControl, TTHotSpots aWohin )
3692*b1cdbd2cSJim Jagielski {
3693*b1cdbd2cSJim Jagielski Point aZiel;
3694*b1cdbd2cSJim Jagielski
3695*b1cdbd2cSJim Jagielski switch (aWohin)
3696*b1cdbd2cSJim Jagielski {
3697*b1cdbd2cSJim Jagielski case MitteLinks:
3698*b1cdbd2cSJim Jagielski {
3699*b1cdbd2cSJim Jagielski long nHeight = pControl->GetSizePixel().Height();
3700*b1cdbd2cSJim Jagielski aZiel.X() += 5;
3701*b1cdbd2cSJim Jagielski aZiel.Y() += nHeight / 2;
3702*b1cdbd2cSJim Jagielski }
3703*b1cdbd2cSJim Jagielski break;
3704*b1cdbd2cSJim Jagielski case Mitte:
3705*b1cdbd2cSJim Jagielski {
3706*b1cdbd2cSJim Jagielski Size aSize = pControl->GetOutputSizePixel();
3707*b1cdbd2cSJim Jagielski aZiel.Move( aSize.Width() / 2, aSize.Height() / 2 );
3708*b1cdbd2cSJim Jagielski }
3709*b1cdbd2cSJim Jagielski break;
3710*b1cdbd2cSJim Jagielski case MitteOben:
3711*b1cdbd2cSJim Jagielski {
3712*b1cdbd2cSJim Jagielski long nWidth = pControl->GetSizePixel().Width();
3713*b1cdbd2cSJim Jagielski aZiel.X() += nWidth / 2;
3714*b1cdbd2cSJim Jagielski aZiel.Y() += 5;
3715*b1cdbd2cSJim Jagielski }
3716*b1cdbd2cSJim Jagielski break;
3717*b1cdbd2cSJim Jagielski }
3718*b1cdbd2cSJim Jagielski AnimateMouse( pControl, aZiel );
3719*b1cdbd2cSJim Jagielski }
3720*b1cdbd2cSJim Jagielski
3721*b1cdbd2cSJim Jagielski
AnimateMouse(Window * pControl,Point aWohin)3722*b1cdbd2cSJim Jagielski void StatementControl::AnimateMouse( Window *pControl, Point aWohin )
3723*b1cdbd2cSJim Jagielski {
3724*b1cdbd2cSJim Jagielski Point aAkt = pControl->GetPointerPosPixel();
3725*b1cdbd2cSJim Jagielski Point aZiel = aWohin;
3726*b1cdbd2cSJim Jagielski
3727*b1cdbd2cSJim Jagielski long nSteps;
3728*b1cdbd2cSJim Jagielski Point aDiff = aAkt - aZiel;
3729*b1cdbd2cSJim Jagielski
3730*b1cdbd2cSJim Jagielski if ( Abs(aDiff.X()) < Abs(aDiff.Y()) )
3731*b1cdbd2cSJim Jagielski nSteps = Abs(aDiff.Y()) / 5;
3732*b1cdbd2cSJim Jagielski else
3733*b1cdbd2cSJim Jagielski nSteps = Abs(aDiff.X()) / 5;
3734*b1cdbd2cSJim Jagielski if ( nSteps == 0 )
3735*b1cdbd2cSJim Jagielski return;
3736*b1cdbd2cSJim Jagielski
3737*b1cdbd2cSJim Jagielski aDiff *= 1000;
3738*b1cdbd2cSJim Jagielski aDiff /= nSteps;
3739*b1cdbd2cSJim Jagielski
3740*b1cdbd2cSJim Jagielski StatementList::bExecuting = sal_True; // Bah ist das ein ekliger Hack
3741*b1cdbd2cSJim Jagielski // Das verhindert, da� schon der n�chste Befehl ausgef�hrt wird.
3742*b1cdbd2cSJim Jagielski
3743*b1cdbd2cSJim Jagielski for ( ; nSteps ; nSteps-- )
3744*b1cdbd2cSJim Jagielski {
3745*b1cdbd2cSJim Jagielski if ( Abs((aAkt - pControl->GetPointerPosPixel()).X()) > 5 ||
3746*b1cdbd2cSJim Jagielski Abs((aAkt - pControl->GetPointerPosPixel()).Y()) > 5 )
3747*b1cdbd2cSJim Jagielski nSteps = 1;
3748*b1cdbd2cSJim Jagielski aAkt = aZiel + aDiff * nSteps / 1000;
3749*b1cdbd2cSJim Jagielski pControl->SetPointerPosPixel(aAkt);
3750*b1cdbd2cSJim Jagielski SafeReschedule();
3751*b1cdbd2cSJim Jagielski }
3752*b1cdbd2cSJim Jagielski pControl->SetPointerPosPixel(aZiel);
3753*b1cdbd2cSJim Jagielski StatementList::bExecuting = sal_False; // Bah ist das ein ekliger Hack
3754*b1cdbd2cSJim Jagielski }
3755*b1cdbd2cSJim Jagielski
3756*b1cdbd2cSJim Jagielski
MaybeDoTypeKeysDelay(Window * pTestWindow)3757*b1cdbd2cSJim Jagielski sal_Bool StatementControl::MaybeDoTypeKeysDelay( Window *pTestWindow )
3758*b1cdbd2cSJim Jagielski {
3759*b1cdbd2cSJim Jagielski if ( bDoTypeKeysDelay )
3760*b1cdbd2cSJim Jagielski {
3761*b1cdbd2cSJim Jagielski sal_uLong nTimeWait = nMinTypeKeysDelay;
3762*b1cdbd2cSJim Jagielski if ( nMaxTypeKeysDelay != nMinTypeKeysDelay )
3763*b1cdbd2cSJim Jagielski nTimeWait += Time::GetSystemTicks() % ( nMaxTypeKeysDelay - nMinTypeKeysDelay );
3764*b1cdbd2cSJim Jagielski Timer aTimer;
3765*b1cdbd2cSJim Jagielski aTimer.SetTimeout( nTimeWait );
3766*b1cdbd2cSJim Jagielski aTimer.Start();
3767*b1cdbd2cSJim Jagielski StatementList::bExecuting = sal_True; // Bah ist das ein ekliger Hack
3768*b1cdbd2cSJim Jagielski // Das verhindert, da� schon der n�chste Befehl ausgef�hrt wird.
3769*b1cdbd2cSJim Jagielski while ( aTimer.IsActive() )
3770*b1cdbd2cSJim Jagielski {
3771*b1cdbd2cSJim Jagielski SafeReschedule( sal_True );
3772*b1cdbd2cSJim Jagielski }
3773*b1cdbd2cSJim Jagielski StatementList::bExecuting = sal_False; // Bah ist das ein ekliger Hack
3774*b1cdbd2cSJim Jagielski if ( !WinPtrValid(pTestWindow ) )
3775*b1cdbd2cSJim Jagielski {
3776*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_WINDOW_DISAPPEARED, MethodString( nMethodId ) ) );
3777*b1cdbd2cSJim Jagielski return sal_False;
3778*b1cdbd2cSJim Jagielski }
3779*b1cdbd2cSJim Jagielski }
3780*b1cdbd2cSJim Jagielski return sal_True;
3781*b1cdbd2cSJim Jagielski }
3782*b1cdbd2cSJim Jagielski
HandleVisibleControls(Window * pControl)3783*b1cdbd2cSJim Jagielski sal_Bool StatementControl::HandleVisibleControls( Window *pControl )
3784*b1cdbd2cSJim Jagielski {
3785*b1cdbd2cSJim Jagielski if( pControl ) // Also auch bei Disabled nicht jedoch bei Invisible
3786*b1cdbd2cSJim Jagielski {
3787*b1cdbd2cSJim Jagielski switch( nMethodId )
3788*b1cdbd2cSJim Jagielski {
3789*b1cdbd2cSJim Jagielski case M_IsEnabled:
3790*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, IsAccessable(pControl) );
3791*b1cdbd2cSJim Jagielski break;
3792*b1cdbd2cSJim Jagielski case M_IsVisible:
3793*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pControl->IsVisible() );
3794*b1cdbd2cSJim Jagielski break;
3795*b1cdbd2cSJim Jagielski case M_GetPosX:
3796*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
3797*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r FloatingWindows
3798*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
3799*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r TabDialoge
3800*b1cdbd2cSJim Jagielski if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
3801*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r Border
3802*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_BOOL_1) && bBool1 )
3803*b1cdbd2cSJim Jagielski pControl = pControl->GetWindow( WINDOW_OVERLAP );
3804*b1cdbd2cSJim Jagielski
3805*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_SPLITWINDOW )
3806*b1cdbd2cSJim Jagielski {
3807*b1cdbd2cSJim Jagielski Point aPos = pControl->GetPosPixel();
3808*b1cdbd2cSJim Jagielski aPos = pControl->GET_REAL_PARENT()->OutputToScreenPixel( aPos );
3809*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)aPos.X() );
3810*b1cdbd2cSJim Jagielski }
3811*b1cdbd2cSJim Jagielski else
3812*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetPosPixel().X() );
3813*b1cdbd2cSJim Jagielski break;
3814*b1cdbd2cSJim Jagielski case M_GetPosY:
3815*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
3816*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r FloatingWindows
3817*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
3818*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r TabDialoge
3819*b1cdbd2cSJim Jagielski if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
3820*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r Border
3821*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_BOOL_1) && bBool1 )
3822*b1cdbd2cSJim Jagielski pControl = pControl->GetWindow( WINDOW_OVERLAP );
3823*b1cdbd2cSJim Jagielski
3824*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_SPLITWINDOW )
3825*b1cdbd2cSJim Jagielski {
3826*b1cdbd2cSJim Jagielski Point aPos = pControl->GetPosPixel();
3827*b1cdbd2cSJim Jagielski aPos = pControl->GET_REAL_PARENT()->OutputToScreenPixel( aPos );
3828*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)aPos.Y() );
3829*b1cdbd2cSJim Jagielski }
3830*b1cdbd2cSJim Jagielski else
3831*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetPosPixel().Y() );
3832*b1cdbd2cSJim Jagielski break;
3833*b1cdbd2cSJim Jagielski case M_GetSizeX:
3834*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
3835*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r FloatingWindows
3836*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
3837*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r TabDialoge
3838*b1cdbd2cSJim Jagielski if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
3839*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r Border
3840*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_BOOL_1) && bBool1 )
3841*b1cdbd2cSJim Jagielski pControl = pControl->GetWindow( WINDOW_OVERLAP );
3842*b1cdbd2cSJim Jagielski
3843*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetSizePixel().Width() );
3844*b1cdbd2cSJim Jagielski break;
3845*b1cdbd2cSJim Jagielski case M_GetSizeY:
3846*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
3847*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r FloatingWindows
3848*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
3849*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r TabDialoge
3850*b1cdbd2cSJim Jagielski if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
3851*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r Border
3852*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_BOOL_1) && bBool1 )
3853*b1cdbd2cSJim Jagielski pControl = pControl->GetWindow( WINDOW_OVERLAP );
3854*b1cdbd2cSJim Jagielski
3855*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetSizePixel().Height() );
3856*b1cdbd2cSJim Jagielski break;
3857*b1cdbd2cSJim Jagielski case M_SnapShot:
3858*b1cdbd2cSJim Jagielski {
3859*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_DOCKINGWINDOW && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
3860*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r FloatingWindows
3861*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_TABCONTROL && pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_TABDIALOG )
3862*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r TabDialoge
3863*b1cdbd2cSJim Jagielski if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_BORDERWINDOW )
3864*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT(); // Sonderbehandlung f�r Border
3865*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_BOOL_1) && bBool1 )
3866*b1cdbd2cSJim Jagielski pControl = pControl->GetWindow( WINDOW_OVERLAP );
3867*b1cdbd2cSJim Jagielski
3868*b1cdbd2cSJim Jagielski Bitmap aBmp = pControl->SnapShot();
3869*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_WORKWINDOW )
3870*b1cdbd2cSJim Jagielski {
3871*b1cdbd2cSJim Jagielski Point aStart = pControl->GetPosPixel();
3872*b1cdbd2cSJim Jagielski if ( !(nParams & PARAM_USHORT_4) )
3873*b1cdbd2cSJim Jagielski {
3874*b1cdbd2cSJim Jagielski nParams |= PARAM_USHORT_1;
3875*b1cdbd2cSJim Jagielski nParams |= PARAM_USHORT_2;
3876*b1cdbd2cSJim Jagielski nParams |= PARAM_USHORT_3;
3877*b1cdbd2cSJim Jagielski nParams |= PARAM_USHORT_4;
3878*b1cdbd2cSJim Jagielski nNr1 = (sal_uInt16)-aStart.X();
3879*b1cdbd2cSJim Jagielski nNr2 = (sal_uInt16)-aStart.Y();
3880*b1cdbd2cSJim Jagielski nNr3 = (sal_uInt16)pControl->GetSizePixel().Width() + 2*(sal_uInt16)aStart.X();
3881*b1cdbd2cSJim Jagielski nNr4 = (sal_uInt16)pControl->GetSizePixel().Height() + 2*(sal_uInt16)aStart.Y();
3882*b1cdbd2cSJim Jagielski }
3883*b1cdbd2cSJim Jagielski nNr1 = std::max((sal_uInt16)-aStart.X(),nNr1);
3884*b1cdbd2cSJim Jagielski nNr2 = std::max((sal_uInt16)-aStart.Y(),nNr2);
3885*b1cdbd2cSJim Jagielski nNr3 = std::min((sal_uInt16)(pControl->GetSizePixel().Width() + 2*(sal_uInt16)aStart.X()),nNr3);
3886*b1cdbd2cSJim Jagielski nNr4 = std::min((sal_uInt16)(pControl->GetSizePixel().Height() + 2*(sal_uInt16)aStart.Y()),nNr4);
3887*b1cdbd2cSJim Jagielski }
3888*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_4 )
3889*b1cdbd2cSJim Jagielski { // Zuschneiden
3890*b1cdbd2cSJim Jagielski Point aPt(-nNr1,-nNr2);
3891*b1cdbd2cSJim Jagielski Size aSz(nNr3,nNr4);
3892*b1cdbd2cSJim Jagielski VirtualDevice aVDev( *pControl );
3893*b1cdbd2cSJim Jagielski
3894*b1cdbd2cSJim Jagielski aVDev.SetOutputSizePixel( aSz );
3895*b1cdbd2cSJim Jagielski aVDev.DrawBitmap( aPt, aBmp );
3896*b1cdbd2cSJim Jagielski aBmp = aVDev.GetBitmap( Point(), aSz );
3897*b1cdbd2cSJim Jagielski }
3898*b1cdbd2cSJim Jagielski
3899*b1cdbd2cSJim Jagielski SvFileStream fOut;
3900*b1cdbd2cSJim Jagielski fOut.Open(aString1,STREAM_STD_WRITE);
3901*b1cdbd2cSJim Jagielski WriteDIB(aBmp, fOut, true, true);
3902*b1cdbd2cSJim Jagielski if ( fOut.GetError() )
3903*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_ERROR_SAVING_IMAGE, UniString::CreateFromInt32( fOut.GetError() ) ) );
3904*b1cdbd2cSJim Jagielski fOut.Close();
3905*b1cdbd2cSJim Jagielski }
3906*b1cdbd2cSJim Jagielski break;
3907*b1cdbd2cSJim Jagielski case M_GetFixedTextCount:
3908*b1cdbd2cSJim Jagielski {
3909*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, CountWinByRT( pControl, WINDOW_FIXEDTEXT, sal_True ) );
3910*b1cdbd2cSJim Jagielski }
3911*b1cdbd2cSJim Jagielski break;
3912*b1cdbd2cSJim Jagielski case M_GetFixedText:
3913*b1cdbd2cSJim Jagielski {
3914*b1cdbd2cSJim Jagielski if( ( nParams & PARAM_USHORT_1 ) == 0 )
3915*b1cdbd2cSJim Jagielski nNr1 = 1;
3916*b1cdbd2cSJim Jagielski
3917*b1cdbd2cSJim Jagielski FixedText* pFixedText = (FixedText*)GetWinByRT( pControl, WINDOW_FIXEDTEXT, sal_True, nNr1-1 );
3918*b1cdbd2cSJim Jagielski if ( pFixedText )
3919*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pFixedText->GetText() );
3920*b1cdbd2cSJim Jagielski else
3921*b1cdbd2cSJim Jagielski ValueOK(aUId, MethodString( nMethodId ),nNr1,CountWinByRT( pControl, WINDOW_FIXEDTEXT, sal_True ) );
3922*b1cdbd2cSJim Jagielski }
3923*b1cdbd2cSJim Jagielski break;
3924*b1cdbd2cSJim Jagielski case M_HasFocus:
3925*b1cdbd2cSJim Jagielski {
3926*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pControl->HasFocus() );
3927*b1cdbd2cSJim Jagielski break;
3928*b1cdbd2cSJim Jagielski }
3929*b1cdbd2cSJim Jagielski case M_GetScreenRectangle:
3930*b1cdbd2cSJim Jagielski {
3931*b1cdbd2cSJim Jagielski Rectangle aRect = bBool1 ? pControl->GetClientWindowExtentsRelative(NULL) : pControl->GetWindowExtentsRelative( NULL );
3932*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId,
3933*b1cdbd2cSJim Jagielski UniString::CreateFromInt32(aRect.Left()).
3934*b1cdbd2cSJim Jagielski AppendAscii(",").Append(UniString::CreateFromInt32(aRect.Top())).
3935*b1cdbd2cSJim Jagielski AppendAscii(",").Append(UniString::CreateFromInt32(aRect.GetWidth())).
3936*b1cdbd2cSJim Jagielski AppendAscii(",").Append(UniString::CreateFromInt32(aRect.GetHeight()))
3937*b1cdbd2cSJim Jagielski );
3938*b1cdbd2cSJim Jagielski }
3939*b1cdbd2cSJim Jagielski break;
3940*b1cdbd2cSJim Jagielski case M_GetHelpText:
3941*b1cdbd2cSJim Jagielski {
3942*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pControl->GetHelpText());
3943*b1cdbd2cSJim Jagielski }
3944*b1cdbd2cSJim Jagielski break;
3945*b1cdbd2cSJim Jagielski case M_GetQuickHelpText:
3946*b1cdbd2cSJim Jagielski {
3947*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId,pControl->GetQuickHelpText());
3948*b1cdbd2cSJim Jagielski }
3949*b1cdbd2cSJim Jagielski break;
3950*b1cdbd2cSJim Jagielski default:
3951*b1cdbd2cSJim Jagielski return sal_False;
3952*b1cdbd2cSJim Jagielski }
3953*b1cdbd2cSJim Jagielski SendProfile( UIdString( aUId ).Append('.').Append( MethodString( nMethodId ) ) );
3954*b1cdbd2cSJim Jagielski return sal_True;
3955*b1cdbd2cSJim Jagielski }
3956*b1cdbd2cSJim Jagielski return sal_False;
3957*b1cdbd2cSJim Jagielski }
3958*b1cdbd2cSJim Jagielski
HandleCommonMethods(Window * pControl)3959*b1cdbd2cSJim Jagielski sal_Bool StatementControl::HandleCommonMethods( Window *pControl )
3960*b1cdbd2cSJim Jagielski {
3961*b1cdbd2cSJim Jagielski switch( nMethodId ) // Diese k�nnen an jedem Window ausgef�hrt werden
3962*b1cdbd2cSJim Jagielski {
3963*b1cdbd2cSJim Jagielski case M_Exists: // Oben schon Behandelt. Unterdr�ckt hier nur Fehler
3964*b1cdbd2cSJim Jagielski case M_NotExists:
3965*b1cdbd2cSJim Jagielski case M_IsEnabled:
3966*b1cdbd2cSJim Jagielski case M_IsVisible:
3967*b1cdbd2cSJim Jagielski case M_SnapShot:
3968*b1cdbd2cSJim Jagielski break;
3969*b1cdbd2cSJim Jagielski case M_Caption :
3970*b1cdbd2cSJim Jagielski {
3971*b1cdbd2cSJim Jagielski if ( pControl->GetText().Len() == 0 && IsDocFrame( pControl->GetWindow( WINDOW_FRAME ) ) )
3972*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pControl->GetWindow( WINDOW_FRAME )->GetText());
3973*b1cdbd2cSJim Jagielski else
3974*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pControl->GetText());
3975*b1cdbd2cSJim Jagielski }
3976*b1cdbd2cSJim Jagielski break;
3977*b1cdbd2cSJim Jagielski case M_GetRT:
3978*b1cdbd2cSJim Jagielski {
3979*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pControl->GetType() );
3980*b1cdbd2cSJim Jagielski }
3981*b1cdbd2cSJim Jagielski break;
3982*b1cdbd2cSJim Jagielski case M_TypeKeys:
3983*b1cdbd2cSJim Jagielski {
3984*b1cdbd2cSJim Jagielski if( !(nParams & PARAM_USHORT_1) ) // Anzahl wiederholungen
3985*b1cdbd2cSJim Jagielski nNr1 = 1;
3986*b1cdbd2cSJim Jagielski if( !(nParams & PARAM_BOOL_1) ) // Follow Focus
3987*b1cdbd2cSJim Jagielski bBool1 = sal_False; // so bleibt das bisherige Verhalten
3988*b1cdbd2cSJim Jagielski
3989*b1cdbd2cSJim Jagielski if ( !bBool1 ) // Altes Verhalten
3990*b1cdbd2cSJim Jagielski pControl->GrabFocus();
3991*b1cdbd2cSJim Jagielski else // If focus is not inside given control we grab it once.
3992*b1cdbd2cSJim Jagielski {
3993*b1cdbd2cSJim Jagielski Window *pFocus = GetpApp()->GetFocusWindow();
3994*b1cdbd2cSJim Jagielski if ( !pFocus || !pControl->IsWindowOrChild( pFocus, sal_True ) )
3995*b1cdbd2cSJim Jagielski pControl->GrabFocus();
3996*b1cdbd2cSJim Jagielski }
3997*b1cdbd2cSJim Jagielski
3998*b1cdbd2cSJim Jagielski
3999*b1cdbd2cSJim Jagielski // maybe this can get removed since we are using GetPreferredKeyInputWindow()
4000*b1cdbd2cSJim Jagielski if ( pControl->GetType() == WINDOW_COMBOBOX )
4001*b1cdbd2cSJim Jagielski { // Bei COMBOBOX an das Edit direkt liefern
4002*b1cdbd2cSJim Jagielski Window *pTemp = NULL;
4003*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 0 ; i < pControl->GetChildCount() && !pTemp ; i++ )
4004*b1cdbd2cSJim Jagielski if ( pControl->GetChild( i )->GetType() == WINDOW_EDIT )
4005*b1cdbd2cSJim Jagielski pTemp = pControl->GetChild( i );
4006*b1cdbd2cSJim Jagielski if ( pTemp )
4007*b1cdbd2cSJim Jagielski pControl = pTemp;
4008*b1cdbd2cSJim Jagielski }
4009*b1cdbd2cSJim Jagielski
4010*b1cdbd2cSJim Jagielski Window *pDeliverHere = pControl;
4011*b1cdbd2cSJim Jagielski for (int j = 0; j < nNr1; j++)
4012*b1cdbd2cSJim Jagielski for (xub_StrLen i = 0; i < aString1.Len(); i++)
4013*b1cdbd2cSJim Jagielski {
4014*b1cdbd2cSJim Jagielski if ( StatementList::bUsePostEvents )
4015*b1cdbd2cSJim Jagielski { // grab focus every time
4016*b1cdbd2cSJim Jagielski Window *pFocus = GetpApp()->GetFocusWindow();
4017*b1cdbd2cSJim Jagielski if ( !pFocus || !pControl->IsWindowOrChild( pFocus, sal_True ) )
4018*b1cdbd2cSJim Jagielski pControl->GrabFocus();
4019*b1cdbd2cSJim Jagielski }
4020*b1cdbd2cSJim Jagielski if ( bBool1 ) // Jedesmal das FocusWindow finden
4021*b1cdbd2cSJim Jagielski {
4022*b1cdbd2cSJim Jagielski Window *pFocus = GetpApp()->GetFocusWindow();
4023*b1cdbd2cSJim Jagielski if ( pFocus && pControl->IsWindowOrChild( pFocus, sal_True ) )
4024*b1cdbd2cSJim Jagielski pDeliverHere = pFocus;
4025*b1cdbd2cSJim Jagielski else // sonst fallback auf das Basisfenster
4026*b1cdbd2cSJim Jagielski pDeliverHere = pControl;
4027*b1cdbd2cSJim Jagielski }
4028*b1cdbd2cSJim Jagielski pDeliverHere = pDeliverHere->GetPreferredKeyInputWindow();
4029*b1cdbd2cSJim Jagielski KeyEvent aEvent;
4030*b1cdbd2cSJim Jagielski if ( ((sal_uInt16)aString1.GetChar(i)) <= 7 )
4031*b1cdbd2cSJim Jagielski {
4032*b1cdbd2cSJim Jagielski sal_uInt16 nVal = 0;
4033*b1cdbd2cSJim Jagielski switch (aString1.GetChar(i))
4034*b1cdbd2cSJim Jagielski {
4035*b1cdbd2cSJim Jagielski case 1: nVal = aString1.GetChar(i+1) + (aString1.GetChar(i+2) << 8);
4036*b1cdbd2cSJim Jagielski i += 2;
4037*b1cdbd2cSJim Jagielski break;
4038*b1cdbd2cSJim Jagielski case 3: nVal = (aString1.GetChar(i+1) << 8);
4039*b1cdbd2cSJim Jagielski i++;
4040*b1cdbd2cSJim Jagielski break;
4041*b1cdbd2cSJim Jagielski case 5: nVal = aString1.GetChar(i+1);
4042*b1cdbd2cSJim Jagielski i++;
4043*b1cdbd2cSJim Jagielski break;
4044*b1cdbd2cSJim Jagielski case 7: nVal = 0;
4045*b1cdbd2cSJim Jagielski break;
4046*b1cdbd2cSJim Jagielski }
4047*b1cdbd2cSJim Jagielski // #105672#
4048*b1cdbd2cSJim Jagielski // find out the keycode
4049*b1cdbd2cSJim Jagielski sal_uInt16 nKeygroup = nVal & KEYGROUP_TYPE;
4050*b1cdbd2cSJim Jagielski sal_uInt16 nKeyCode = nVal & KEY_CODE;
4051*b1cdbd2cSJim Jagielski sal_Unicode aCh;
4052*b1cdbd2cSJim Jagielski switch (nKeygroup)
4053*b1cdbd2cSJim Jagielski {
4054*b1cdbd2cSJim Jagielski case KEYGROUP_NUM:
4055*b1cdbd2cSJim Jagielski aCh = nKeyCode - KEY_0 + '0';
4056*b1cdbd2cSJim Jagielski break;
4057*b1cdbd2cSJim Jagielski case KEYGROUP_ALPHA:
4058*b1cdbd2cSJim Jagielski aCh = nKeyCode - KEY_A;
4059*b1cdbd2cSJim Jagielski if ( nVal & KEY_MOD1 )
4060*b1cdbd2cSJim Jagielski {}
4061*b1cdbd2cSJim Jagielski else if ( nVal & KEY_SHIFT )
4062*b1cdbd2cSJim Jagielski aCh += 'A';
4063*b1cdbd2cSJim Jagielski else
4064*b1cdbd2cSJim Jagielski aCh += 'a';
4065*b1cdbd2cSJim Jagielski break;
4066*b1cdbd2cSJim Jagielski case KEYGROUP_MISC:
4067*b1cdbd2cSJim Jagielski { // CR ESC TAB BACK
4068*b1cdbd2cSJim Jagielski ByteString aPrintableMisc("\x0d\x1b\x09\x08 **+-*/.,<>=",16);
4069*b1cdbd2cSJim Jagielski if ( nKeyCode-KEY_RETURN < aPrintableMisc.Len()
4070*b1cdbd2cSJim Jagielski && nKeyCode != KEY_INSERT && nKeyCode != KEY_DELETE )
4071*b1cdbd2cSJim Jagielski aCh = aPrintableMisc.GetChar( nKeyCode-KEY_RETURN );
4072*b1cdbd2cSJim Jagielski else
4073*b1cdbd2cSJim Jagielski aCh = 0;
4074*b1cdbd2cSJim Jagielski }
4075*b1cdbd2cSJim Jagielski break;
4076*b1cdbd2cSJim Jagielski case KEYGROUP_CURSOR:
4077*b1cdbd2cSJim Jagielski case KEYGROUP_FKEYS:
4078*b1cdbd2cSJim Jagielski default:
4079*b1cdbd2cSJim Jagielski aCh = 0;
4080*b1cdbd2cSJim Jagielski }
4081*b1cdbd2cSJim Jagielski aEvent = KeyEvent(aCh,KeyCode(nVal & 0xFFF,nVal & 0xF000));
4082*b1cdbd2cSJim Jagielski }
4083*b1cdbd2cSJim Jagielski else
4084*b1cdbd2cSJim Jagielski {
4085*b1cdbd2cSJim Jagielski // CR ESC TAB BACK
4086*b1cdbd2cSJim Jagielski String aPrintableMisc = CUniString("\x0d\x1b\x09\x08 xx+-*/.,<>=");
4087*b1cdbd2cSJim Jagielski sal_Unicode aCh = aString1.GetChar(i);
4088*b1cdbd2cSJim Jagielski if ( aCh >= 'a' && aCh <= 'z' )
4089*b1cdbd2cSJim Jagielski aEvent = KeyEvent(aCh, KeyCode(KEYGROUP_ALPHA + aCh-'a', 0));
4090*b1cdbd2cSJim Jagielski else if ( aCh >= 'A' && aCh <= 'Z' )
4091*b1cdbd2cSJim Jagielski aEvent = KeyEvent(aCh, KeyCode(KEYGROUP_ALPHA + aCh-'a', KEY_SHIFT));
4092*b1cdbd2cSJim Jagielski else if ( aCh >= '0' && aCh <= '9' )
4093*b1cdbd2cSJim Jagielski aEvent = KeyEvent(aCh, KeyCode(KEYGROUP_NUM + aCh-'0', 0));
4094*b1cdbd2cSJim Jagielski else if ( aPrintableMisc.Search(aCh) != STRING_NOTFOUND )
4095*b1cdbd2cSJim Jagielski aEvent = KeyEvent(aCh, KeyCode(KEYGROUP_MISC + (sal_uInt16)aPrintableMisc.Search(aCh), 0));
4096*b1cdbd2cSJim Jagielski else // Sollte eigentlich nicht auftreten
4097*b1cdbd2cSJim Jagielski aEvent = KeyEvent(aCh, KeyCode());
4098*b1cdbd2cSJim Jagielski }
4099*b1cdbd2cSJim Jagielski ImplKeyInput( pDeliverHere, aEvent );
4100*b1cdbd2cSJim Jagielski if ( !MaybeDoTypeKeysDelay( pControl ) )
4101*b1cdbd2cSJim Jagielski break;
4102*b1cdbd2cSJim Jagielski else
4103*b1cdbd2cSJim Jagielski SafeReschedule();SafeReschedule();SafeReschedule();
4104*b1cdbd2cSJim Jagielski }
4105*b1cdbd2cSJim Jagielski }
4106*b1cdbd2cSJim Jagielski break;
4107*b1cdbd2cSJim Jagielski
4108*b1cdbd2cSJim Jagielski #define CalcMouseButton\
4109*b1cdbd2cSJim Jagielski sal_uInt16 nButton = MOUSE_LEFT;\
4110*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_USHORT_3) )\
4111*b1cdbd2cSJim Jagielski {\
4112*b1cdbd2cSJim Jagielski switch ( nNr3 )\
4113*b1cdbd2cSJim Jagielski {\
4114*b1cdbd2cSJim Jagielski case 1: nButton = MOUSE_LEFT; break;\
4115*b1cdbd2cSJim Jagielski case 2: nButton = MOUSE_MIDDLE; break;\
4116*b1cdbd2cSJim Jagielski case 3: nButton = MOUSE_RIGHT; break;\
4117*b1cdbd2cSJim Jagielski }\
4118*b1cdbd2cSJim Jagielski }\
4119*b1cdbd2cSJim Jagielski
4120*b1cdbd2cSJim Jagielski case M_MouseDown:
4121*b1cdbd2cSJim Jagielski {
4122*b1cdbd2cSJim Jagielski CalcMouseButton;
4123*b1cdbd2cSJim Jagielski Size aS = pControl->GetOutputSizePixel();
4124*b1cdbd2cSJim Jagielski Point aPos = Point(aS.Width() * nNr1 / 100,aS.Height() * nNr2 / 100);
4125*b1cdbd2cSJim Jagielski Window *pActualWin = pControl->FindWindow( aPos );
4126*b1cdbd2cSJim Jagielski // AnimateMouse( pControl, aPos );
4127*b1cdbd2cSJim Jagielski
4128*b1cdbd2cSJim Jagielski if ( pActualWin )
4129*b1cdbd2cSJim Jagielski aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
4130*b1cdbd2cSJim Jagielski // aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
4131*b1cdbd2cSJim Jagielski else
4132*b1cdbd2cSJim Jagielski pActualWin = pControl;
4133*b1cdbd2cSJim Jagielski
4134*b1cdbd2cSJim Jagielski AnimateMouse( pActualWin, aPos );
4135*b1cdbd2cSJim Jagielski pActualWin->GrabFocus();
4136*b1cdbd2cSJim Jagielski MouseEvent aMEvnt(aPos,1,MOUSE_SIMPLECLICK|MOUSE_SELECT,nButton);
4137*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pActualWin, aMEvnt );
4138*b1cdbd2cSJim Jagielski }
4139*b1cdbd2cSJim Jagielski break;
4140*b1cdbd2cSJim Jagielski case M_MouseUp:
4141*b1cdbd2cSJim Jagielski {
4142*b1cdbd2cSJim Jagielski CalcMouseButton;
4143*b1cdbd2cSJim Jagielski Size aS = pControl->GetOutputSizePixel();
4144*b1cdbd2cSJim Jagielski Point aPos = Point(aS.Width() * nNr1 / 100,aS.Height() * nNr2 / 100);
4145*b1cdbd2cSJim Jagielski Window *pActualWin = pControl->FindWindow( aPos );
4146*b1cdbd2cSJim Jagielski
4147*b1cdbd2cSJim Jagielski if ( pActualWin )
4148*b1cdbd2cSJim Jagielski aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
4149*b1cdbd2cSJim Jagielski // aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
4150*b1cdbd2cSJim Jagielski else
4151*b1cdbd2cSJim Jagielski pActualWin = pControl;
4152*b1cdbd2cSJim Jagielski
4153*b1cdbd2cSJim Jagielski AnimateMouse( pActualWin, aPos );
4154*b1cdbd2cSJim Jagielski // pActualWin->GrabFocus();
4155*b1cdbd2cSJim Jagielski MouseEvent aMEvt( aPos, 1, MOUSE_SIMPLECLICK|MOUSE_SELECT, nButton );
4156*b1cdbd2cSJim Jagielski ImplMouseButtonUp( pActualWin, aMEvt );
4157*b1cdbd2cSJim Jagielski }
4158*b1cdbd2cSJim Jagielski break;
4159*b1cdbd2cSJim Jagielski case M_MouseMove:
4160*b1cdbd2cSJim Jagielski {
4161*b1cdbd2cSJim Jagielski CalcMouseButton;
4162*b1cdbd2cSJim Jagielski Size aS = pControl->GetOutputSizePixel();
4163*b1cdbd2cSJim Jagielski Point aPos = Point(aS.Width() * nNr1 / 100,aS.Height() * nNr2 / 100);
4164*b1cdbd2cSJim Jagielski Window *pActualWin = pControl->FindWindow( aPos );
4165*b1cdbd2cSJim Jagielski
4166*b1cdbd2cSJim Jagielski if ( pActualWin )
4167*b1cdbd2cSJim Jagielski {
4168*b1cdbd2cSJim Jagielski aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
4169*b1cdbd2cSJim Jagielski // aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
4170*b1cdbd2cSJim Jagielski }
4171*b1cdbd2cSJim Jagielski else
4172*b1cdbd2cSJim Jagielski pActualWin = pControl;
4173*b1cdbd2cSJim Jagielski
4174*b1cdbd2cSJim Jagielski AnimateMouse( pActualWin, aPos );
4175*b1cdbd2cSJim Jagielski // pActualWin->GrabFocus();
4176*b1cdbd2cSJim Jagielski MouseEvent aMEvt( aPos, 0, MOUSE_SIMPLEMOVE|MOUSE_DRAGMOVE, nButton );
4177*b1cdbd2cSJim Jagielski ImplMouseMove( pActualWin, aMEvt );
4178*b1cdbd2cSJim Jagielski }
4179*b1cdbd2cSJim Jagielski break;
4180*b1cdbd2cSJim Jagielski case M_MouseDoubleClick:
4181*b1cdbd2cSJim Jagielski {
4182*b1cdbd2cSJim Jagielski CalcMouseButton;
4183*b1cdbd2cSJim Jagielski Size aS = pControl->GetOutputSizePixel();
4184*b1cdbd2cSJim Jagielski Point aPos = Point(aS.Width() * nNr1 / 100,aS.Height() * nNr2 / 100);
4185*b1cdbd2cSJim Jagielski Window *pActualWin = pControl->FindWindow( aPos );
4186*b1cdbd2cSJim Jagielski
4187*b1cdbd2cSJim Jagielski if ( pActualWin )
4188*b1cdbd2cSJim Jagielski {
4189*b1cdbd2cSJim Jagielski aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
4190*b1cdbd2cSJim Jagielski // aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
4191*b1cdbd2cSJim Jagielski }
4192*b1cdbd2cSJim Jagielski else
4193*b1cdbd2cSJim Jagielski pActualWin = pControl;
4194*b1cdbd2cSJim Jagielski
4195*b1cdbd2cSJim Jagielski AnimateMouse( pActualWin, aPos );
4196*b1cdbd2cSJim Jagielski pActualWin->GrabFocus();
4197*b1cdbd2cSJim Jagielski MouseEvent aMEvnt;
4198*b1cdbd2cSJim Jagielski aMEvnt = MouseEvent(aPos,1,MOUSE_SIMPLECLICK|MOUSE_SELECT,nButton);
4199*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pActualWin, aMEvnt );
4200*b1cdbd2cSJim Jagielski ImplMouseButtonUp ( pActualWin, aMEvnt );
4201*b1cdbd2cSJim Jagielski aMEvnt = MouseEvent(aPos,2,MOUSE_SIMPLECLICK|MOUSE_SELECT,nButton);
4202*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pActualWin, aMEvnt );
4203*b1cdbd2cSJim Jagielski ImplMouseButtonUp ( pActualWin, aMEvnt );
4204*b1cdbd2cSJim Jagielski }
4205*b1cdbd2cSJim Jagielski break;
4206*b1cdbd2cSJim Jagielski case M_DisplayPercent:
4207*b1cdbd2cSJim Jagielski {
4208*b1cdbd2cSJim Jagielski ModelessDialog *pDlg = new ModelessDialog(NULL);
4209*b1cdbd2cSJim Jagielski pDlg->SetOutputSizePixel(Size(100,30));
4210*b1cdbd2cSJim Jagielski
4211*b1cdbd2cSJim Jagielski Edit *pMyEd = new Edit(pDlg,WB_CENTER | WB_BORDER );
4212*b1cdbd2cSJim Jagielski pMyEd->SetSizePixel(Size(100,30));
4213*b1cdbd2cSJim Jagielski pDlg->SetText(UniString("Schlie�en", RTL_TEXTENCODING_ISO_8859_1));
4214*b1cdbd2cSJim Jagielski pDlg->Show();
4215*b1cdbd2cSJim Jagielski pMyEd->Show();
4216*b1cdbd2cSJim Jagielski sal_uLong nTime = Time().GetTime();
4217*b1cdbd2cSJim Jagielski
4218*b1cdbd2cSJim Jagielski while (pDlg->IsVisible())
4219*b1cdbd2cSJim Jagielski {
4220*b1cdbd2cSJim Jagielski pDlg->ToTop();
4221*b1cdbd2cSJim Jagielski for (int i = 1 ; i<10 ; i++)
4222*b1cdbd2cSJim Jagielski SafeReschedule();
4223*b1cdbd2cSJim Jagielski Point Pos = pControl->GetPointerPosPixel();
4224*b1cdbd2cSJim Jagielski Size Siz=pControl->GetOutputSizePixel();
4225*b1cdbd2cSJim Jagielski if ( Time().GetTime() - nTime > 10 )
4226*b1cdbd2cSJim Jagielski {
4227*b1cdbd2cSJim Jagielski nTime = Time().GetTime();
4228*b1cdbd2cSJim Jagielski pMyEd->SetText(UniString::CreateFromInt32(Pos.X()*100/Siz.Width()).AppendAscii("%x").Append( UniString::CreateFromInt32(Pos.Y()*100/Siz.Height()) ).Append('%'));
4229*b1cdbd2cSJim Jagielski }
4230*b1cdbd2cSJim Jagielski }
4231*b1cdbd2cSJim Jagielski
4232*b1cdbd2cSJim Jagielski delete pMyEd;
4233*b1cdbd2cSJim Jagielski delete pDlg;
4234*b1cdbd2cSJim Jagielski }
4235*b1cdbd2cSJim Jagielski break;
4236*b1cdbd2cSJim Jagielski case M_OpenContextMenu:
4237*b1cdbd2cSJim Jagielski {
4238*b1cdbd2cSJim Jagielski aSubMenuId1 = 0;
4239*b1cdbd2cSJim Jagielski aSubMenuId2 = 0;
4240*b1cdbd2cSJim Jagielski aSubMenuId3 = 0;
4241*b1cdbd2cSJim Jagielski pMenuWindow = NULL;
4242*b1cdbd2cSJim Jagielski Point aPos;
4243*b1cdbd2cSJim Jagielski ToolBox* pTB = (ToolBox*)pControl;
4244*b1cdbd2cSJim Jagielski if ( (pControl->GetType() == WINDOW_TOOLBOX) && pTB->IsMenuEnabled() )
4245*b1cdbd2cSJim Jagielski {
4246*b1cdbd2cSJim Jagielski pTB->ExecuteCustomMenu();
4247*b1cdbd2cSJim Jagielski /* Rectangle aRect = pTB->GetMenubuttonRect();
4248*b1cdbd2cSJim Jagielski AnimateMouse( pControl, aRect.Center() );
4249*b1cdbd2cSJim Jagielski MouseEvent aMEvnt(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
4250*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pTB, aMEvnt );*/
4251*b1cdbd2cSJim Jagielski }
4252*b1cdbd2cSJim Jagielski else
4253*b1cdbd2cSJim Jagielski {
4254*b1cdbd2cSJim Jagielski sal_Bool bAtMousePos = ( nParams & PARAM_BOOL_1 ) && bBool1;
4255*b1cdbd2cSJim Jagielski if ( bAtMousePos )
4256*b1cdbd2cSJim Jagielski {
4257*b1cdbd2cSJim Jagielski aPos = pControl->GetPointerPosPixel();
4258*b1cdbd2cSJim Jagielski Window *pActualWin = pControl->FindWindow( aPos );
4259*b1cdbd2cSJim Jagielski
4260*b1cdbd2cSJim Jagielski if ( pActualWin )
4261*b1cdbd2cSJim Jagielski {
4262*b1cdbd2cSJim Jagielski aPos = pActualWin->AbsoluteScreenToOutputPixel( pControl->OutputToAbsoluteScreenPixel ( aPos ) );
4263*b1cdbd2cSJim Jagielski // aPos = pActualWin->ScreenToOutputPixel( pControl->OutputToScreenPixel ( aPos ) );
4264*b1cdbd2cSJim Jagielski pControl = pActualWin;
4265*b1cdbd2cSJim Jagielski }
4266*b1cdbd2cSJim Jagielski }
4267*b1cdbd2cSJim Jagielski CommandEvent aEvent( aPos, COMMAND_CONTEXTMENU, bAtMousePos );
4268*b1cdbd2cSJim Jagielski ImplCommand( pControl, aEvent );
4269*b1cdbd2cSJim Jagielski }
4270*b1cdbd2cSJim Jagielski }
4271*b1cdbd2cSJim Jagielski break;
4272*b1cdbd2cSJim Jagielski case M_UseMenu:
4273*b1cdbd2cSJim Jagielski {
4274*b1cdbd2cSJim Jagielski aSubMenuId1 = 0;
4275*b1cdbd2cSJim Jagielski aSubMenuId2 = 0;
4276*b1cdbd2cSJim Jagielski aSubMenuId3 = 0;
4277*b1cdbd2cSJim Jagielski pMenuWindow = NULL;
4278*b1cdbd2cSJim Jagielski
4279*b1cdbd2cSJim Jagielski while ( pControl && !( ( pControl->GetType() == WINDOW_SYSWINDOW || pControl->GetType() == WINDOW_WORKWINDOW ) && ControlOK( pControl, "" ) ) )
4280*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT();
4281*b1cdbd2cSJim Jagielski
4282*b1cdbd2cSJim Jagielski if ( pControl && ((SystemWindow*)pControl)->GetMenuBar() )
4283*b1cdbd2cSJim Jagielski pMenuWindow = ((SystemWindow*)pControl);
4284*b1cdbd2cSJim Jagielski else
4285*b1cdbd2cSJim Jagielski ReportError( GEN_RES_STR1( S_NO_MENU, MethodString( nMethodId ) ) );
4286*b1cdbd2cSJim Jagielski }
4287*b1cdbd2cSJim Jagielski break;
4288*b1cdbd2cSJim Jagielski case M_FadeIn:
4289*b1cdbd2cSJim Jagielski case M_FadeOut:
4290*b1cdbd2cSJim Jagielski case M_Pin:
4291*b1cdbd2cSJim Jagielski case M_IsFadeIn:
4292*b1cdbd2cSJim Jagielski case M_IsPin:
4293*b1cdbd2cSJim Jagielski {
4294*b1cdbd2cSJim Jagielski WindowAlign aWindowAlign = WINDOWALIGN_LEFT;
4295*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_USHORT_1) )
4296*b1cdbd2cSJim Jagielski {
4297*b1cdbd2cSJim Jagielski switch ( nNr1 )
4298*b1cdbd2cSJim Jagielski {
4299*b1cdbd2cSJim Jagielski case CONST_ALIGN_LEFT:
4300*b1cdbd2cSJim Jagielski aWindowAlign = WINDOWALIGN_LEFT;
4301*b1cdbd2cSJim Jagielski break;
4302*b1cdbd2cSJim Jagielski case CONST_ALIGN_TOP:
4303*b1cdbd2cSJim Jagielski aWindowAlign = WINDOWALIGN_TOP;
4304*b1cdbd2cSJim Jagielski break;
4305*b1cdbd2cSJim Jagielski case CONST_ALIGN_RIGHT:
4306*b1cdbd2cSJim Jagielski aWindowAlign = WINDOWALIGN_RIGHT;
4307*b1cdbd2cSJim Jagielski break;
4308*b1cdbd2cSJim Jagielski case CONST_ALIGN_BOTTOM:
4309*b1cdbd2cSJim Jagielski aWindowAlign = WINDOWALIGN_BOTTOM;
4310*b1cdbd2cSJim Jagielski break;
4311*b1cdbd2cSJim Jagielski default:
4312*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INVALID_POSITION, MethodString( nMethodId ) ) );
4313*b1cdbd2cSJim Jagielski }
4314*b1cdbd2cSJim Jagielski }
4315*b1cdbd2cSJim Jagielski
4316*b1cdbd2cSJim Jagielski Window* pTemp = NULL;
4317*b1cdbd2cSJim Jagielski while ( !pTemp && pControl )
4318*b1cdbd2cSJim Jagielski {
4319*b1cdbd2cSJim Jagielski pTemp = GetFadeSplitWin( pControl, aWindowAlign );
4320*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT();
4321*b1cdbd2cSJim Jagielski }
4322*b1cdbd2cSJim Jagielski
4323*b1cdbd2cSJim Jagielski if ( !pTemp )
4324*b1cdbd2cSJim Jagielski {
4325*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_SPLITWIN_NOT_FOUND, MethodString( nMethodId ) ) );
4326*b1cdbd2cSJim Jagielski break;
4327*b1cdbd2cSJim Jagielski }
4328*b1cdbd2cSJim Jagielski
4329*b1cdbd2cSJim Jagielski pControl = pTemp; // So da� wir unten ohne Fehler durchkommen
4330*b1cdbd2cSJim Jagielski SplitWindow *pSW = (SplitWindow*) pTemp;
4331*b1cdbd2cSJim Jagielski
4332*b1cdbd2cSJim Jagielski // Rectangle GetAutoHideRect() const;
4333*b1cdbd2cSJim Jagielski // Rectangle GetFadeInRect() const;
4334*b1cdbd2cSJim Jagielski // Rectangle GetFadeOutRect() const;
4335*b1cdbd2cSJim Jagielski
4336*b1cdbd2cSJim Jagielski switch( nMethodId )
4337*b1cdbd2cSJim Jagielski {
4338*b1cdbd2cSJim Jagielski case M_FadeIn:
4339*b1cdbd2cSJim Jagielski if ( pSW->IsFadeInButtonVisible() )
4340*b1cdbd2cSJim Jagielski pSW->FadeIn();
4341*b1cdbd2cSJim Jagielski break;
4342*b1cdbd2cSJim Jagielski case M_FadeOut:
4343*b1cdbd2cSJim Jagielski if ( pSW->IsFadeOutButtonVisible() )
4344*b1cdbd2cSJim Jagielski pSW->FadeOut();
4345*b1cdbd2cSJim Jagielski break;
4346*b1cdbd2cSJim Jagielski case M_Pin:
4347*b1cdbd2cSJim Jagielski if ( ( pSW->GetAutoHideState() && bBool1 )
4348*b1cdbd2cSJim Jagielski || ( !pSW->GetAutoHideState() && !bBool1 ) )
4349*b1cdbd2cSJim Jagielski {
4350*b1cdbd2cSJim Jagielski MouseEvent aMEvnt;
4351*b1cdbd2cSJim Jagielski Point aPt( pSW->GetAutoHideRect().Center() );
4352*b1cdbd2cSJim Jagielski aMEvnt = MouseEvent( aPt,1,MOUSE_SIMPLECLICK,MOUSE_LEFT );
4353*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pControl, aMEvnt, FORCE_DIRECT_CALL );
4354*b1cdbd2cSJim Jagielski ImplMouseButtonUp ( pControl, aMEvnt, FORCE_DIRECT_CALL );
4355*b1cdbd2cSJim Jagielski }
4356*b1cdbd2cSJim Jagielski // pSW->AutoHide();
4357*b1cdbd2cSJim Jagielski break;
4358*b1cdbd2cSJim Jagielski case M_IsFadeIn:
4359*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pSW->IsFadeOutButtonVisible() );
4360*b1cdbd2cSJim Jagielski break;
4361*b1cdbd2cSJim Jagielski case M_IsPin:
4362*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)!pSW->GetAutoHideState() );
4363*b1cdbd2cSJim Jagielski break;
4364*b1cdbd2cSJim Jagielski default:
4365*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
4366*b1cdbd2cSJim Jagielski }
4367*b1cdbd2cSJim Jagielski SendProfile( UIdString( aUId ).Append('.').Append( MethodString( nMethodId ) ) );
4368*b1cdbd2cSJim Jagielski }
4369*b1cdbd2cSJim Jagielski break;
4370*b1cdbd2cSJim Jagielski case M_StatusGetText:
4371*b1cdbd2cSJim Jagielski case M_StatusIsProgress:
4372*b1cdbd2cSJim Jagielski case M_StatusGetItemCount:
4373*b1cdbd2cSJim Jagielski case M_StatusGetItemId:
4374*b1cdbd2cSJim Jagielski {
4375*b1cdbd2cSJim Jagielski StatusBar *pStatus = NULL;
4376*b1cdbd2cSJim Jagielski while ( !pStatus && pControl )
4377*b1cdbd2cSJim Jagielski {
4378*b1cdbd2cSJim Jagielski pStatus = (StatusBar*)GetWinByRT( pControl, WINDOW_STATUSBAR, sal_True );
4379*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT();
4380*b1cdbd2cSJim Jagielski }
4381*b1cdbd2cSJim Jagielski
4382*b1cdbd2cSJim Jagielski if ( !pStatus )
4383*b1cdbd2cSJim Jagielski {
4384*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_STATUSBAR, MethodString( nMethodId ) ) );
4385*b1cdbd2cSJim Jagielski break;
4386*b1cdbd2cSJim Jagielski }
4387*b1cdbd2cSJim Jagielski
4388*b1cdbd2cSJim Jagielski switch ( nMethodId )
4389*b1cdbd2cSJim Jagielski {
4390*b1cdbd2cSJim Jagielski case M_StatusGetText:
4391*b1cdbd2cSJim Jagielski {
4392*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_USHORT_1) )
4393*b1cdbd2cSJim Jagielski {
4394*b1cdbd2cSJim Jagielski if ( pStatus->AreItemsVisible() )
4395*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, String(pStatus->GetItemText(nNr1)));
4396*b1cdbd2cSJim Jagielski else
4397*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_ITEMS_INVISIBLE, MethodString( nMethodId ) ) );
4398*b1cdbd2cSJim Jagielski }
4399*b1cdbd2cSJim Jagielski else
4400*b1cdbd2cSJim Jagielski {
4401*b1cdbd2cSJim Jagielski if ( pStatus->AreItemsVisible() )
4402*b1cdbd2cSJim Jagielski {
4403*b1cdbd2cSJim Jagielski if ( pStatus->GetItemCount() == 1 )
4404*b1cdbd2cSJim Jagielski {
4405*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pStatus->GetItemText( pStatus->GetItemId(0) ));
4406*b1cdbd2cSJim Jagielski }
4407*b1cdbd2cSJim Jagielski else
4408*b1cdbd2cSJim Jagielski {
4409*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, String() );
4410*b1cdbd2cSJim Jagielski }
4411*b1cdbd2cSJim Jagielski }
4412*b1cdbd2cSJim Jagielski else
4413*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (String)pStatus->GetText() );
4414*b1cdbd2cSJim Jagielski }
4415*b1cdbd2cSJim Jagielski }
4416*b1cdbd2cSJim Jagielski break;
4417*b1cdbd2cSJim Jagielski case M_StatusIsProgress:
4418*b1cdbd2cSJim Jagielski {
4419*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)pStatus->IsProgressMode() );
4420*b1cdbd2cSJim Jagielski }
4421*b1cdbd2cSJim Jagielski break;
4422*b1cdbd2cSJim Jagielski case M_StatusGetItemCount:
4423*b1cdbd2cSJim Jagielski if ( pStatus->AreItemsVisible() )
4424*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(pStatus->GetItemCount()));
4425*b1cdbd2cSJim Jagielski else
4426*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(0));
4427*b1cdbd2cSJim Jagielski break;
4428*b1cdbd2cSJim Jagielski case M_StatusGetItemId:
4429*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,pStatus->GetItemCount()) )
4430*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(pStatus->GetItemId(nNr1-1)));
4431*b1cdbd2cSJim Jagielski break;
4432*b1cdbd2cSJim Jagielski }
4433*b1cdbd2cSJim Jagielski }
4434*b1cdbd2cSJim Jagielski break;
4435*b1cdbd2cSJim Jagielski case M_HasScrollBar:
4436*b1cdbd2cSJim Jagielski case M_IsScrollBarEnabled:
4437*b1cdbd2cSJim Jagielski {
4438*b1cdbd2cSJim Jagielski if ( (nParams | PARAM_USHORT_1) != PARAM_USHORT_1 ) // so there are other params
4439*b1cdbd2cSJim Jagielski {
4440*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR0( S_INVALID_PARAMETERS ) );
4441*b1cdbd2cSJim Jagielski break;
4442*b1cdbd2cSJim Jagielski }
4443*b1cdbd2cSJim Jagielski
4444*b1cdbd2cSJim Jagielski if( !(nParams & PARAM_USHORT_1) )
4445*b1cdbd2cSJim Jagielski nNr1 = CONST_ALIGN_RIGHT; // default is right Scrollbar(vertical)
4446*b1cdbd2cSJim Jagielski
4447*b1cdbd2cSJim Jagielski if ( (nNr1 != CONST_ALIGN_RIGHT) && (nNr1 != CONST_ALIGN_BOTTOM) )
4448*b1cdbd2cSJim Jagielski {
4449*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INVALID_POSITION, MethodString( nMethodId ) ) );
4450*b1cdbd2cSJim Jagielski break;
4451*b1cdbd2cSJim Jagielski }
4452*b1cdbd2cSJim Jagielski
4453*b1cdbd2cSJim Jagielski ScrollBar *pScroll = NULL;
4454*b1cdbd2cSJim Jagielski
4455*b1cdbd2cSJim Jagielski sal_uInt16 nSteps = 2;
4456*b1cdbd2cSJim Jagielski while ( !pScroll && pControl && nSteps-- )
4457*b1cdbd2cSJim Jagielski {
4458*b1cdbd2cSJim Jagielski pScroll = GetScrollBar( pControl, nNr1, sal_True );
4459*b1cdbd2cSJim Jagielski pControl = pControl->GET_REAL_PARENT();
4460*b1cdbd2cSJim Jagielski }
4461*b1cdbd2cSJim Jagielski
4462*b1cdbd2cSJim Jagielski switch ( nMethodId )
4463*b1cdbd2cSJim Jagielski {
4464*b1cdbd2cSJim Jagielski case M_HasScrollBar:
4465*b1cdbd2cSJim Jagielski {
4466*b1cdbd2cSJim Jagielski if ( pScroll )
4467*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)sal_True );
4468*b1cdbd2cSJim Jagielski else
4469*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)sal_False );
4470*b1cdbd2cSJim Jagielski }
4471*b1cdbd2cSJim Jagielski break;
4472*b1cdbd2cSJim Jagielski case M_IsScrollBarEnabled:
4473*b1cdbd2cSJim Jagielski {
4474*b1cdbd2cSJim Jagielski if ( !pScroll )
4475*b1cdbd2cSJim Jagielski {
4476*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_SCROLLBAR, MethodString( nMethodId ) ) );
4477*b1cdbd2cSJim Jagielski break;
4478*b1cdbd2cSJim Jagielski }
4479*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pScroll->IsEnabled() );
4480*b1cdbd2cSJim Jagielski }
4481*b1cdbd2cSJim Jagielski break;
4482*b1cdbd2cSJim Jagielski }
4483*b1cdbd2cSJim Jagielski }
4484*b1cdbd2cSJim Jagielski break;
4485*b1cdbd2cSJim Jagielski default:
4486*b1cdbd2cSJim Jagielski return sal_False;
4487*b1cdbd2cSJim Jagielski }
4488*b1cdbd2cSJim Jagielski return sal_True;
4489*b1cdbd2cSJim Jagielski }
4490*b1cdbd2cSJim Jagielski
4491*b1cdbd2cSJim Jagielski
Execute()4492*b1cdbd2cSJim Jagielski sal_Bool StatementControl::Execute()
4493*b1cdbd2cSJim Jagielski {
4494*b1cdbd2cSJim Jagielski Window *pControl;
4495*b1cdbd2cSJim Jagielski sal_Bool bStatementDone = sal_True;
4496*b1cdbd2cSJim Jagielski
4497*b1cdbd2cSJim Jagielski
4498*b1cdbd2cSJim Jagielski if ( IsError )
4499*b1cdbd2cSJim Jagielski {
4500*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
4501*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Skipping Window: " );
4502*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( Id2Str( aUId ) );
4503*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Method: " );
4504*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
4505*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
4506*b1cdbd2cSJim Jagielski #endif
4507*b1cdbd2cSJim Jagielski Advance();
4508*b1cdbd2cSJim Jagielski delete this;
4509*b1cdbd2cSJim Jagielski return sal_True;
4510*b1cdbd2cSJim Jagielski }
4511*b1cdbd2cSJim Jagielski
4512*b1cdbd2cSJim Jagielski InitProfile();
4513*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
4514*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Executing Window: " );
4515*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( Id2Str( aUId ) );
4516*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Method: " );
4517*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nMethodId ) );
4518*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
4519*b1cdbd2cSJim Jagielski #endif
4520*b1cdbd2cSJim Jagielski
4521*b1cdbd2cSJim Jagielski
4522*b1cdbd2cSJim Jagielski if ( aUId.equals( UID_ACTIVE ) )
4523*b1cdbd2cSJim Jagielski pControl = GetAnyActive();
4524*b1cdbd2cSJim Jagielski else
4525*b1cdbd2cSJim Jagielski {
4526*b1cdbd2cSJim Jagielski sal_Bool bSearchButtonOnToolbox = (nParams == PARAM_NONE) && ((M_Click == nMethodId) || (M_TearOff == nMethodId) || (M_IsEnabled == nMethodId) || (M_OpenMenu == nMethodId));
4527*b1cdbd2cSJim Jagielski bSearchButtonOnToolbox |= (nParams == PARAM_USHORT_1) && (M_GetState == nMethodId);
4528*b1cdbd2cSJim Jagielski if ( nMethodId == M_TypeKeys || nMethodId == M_MouseDown
4529*b1cdbd2cSJim Jagielski || nMethodId == M_MouseUp || nMethodId == M_MouseMove
4530*b1cdbd2cSJim Jagielski || nMethodId == M_SnapShot )
4531*b1cdbd2cSJim Jagielski {
4532*b1cdbd2cSJim Jagielski pControl = NULL;
4533*b1cdbd2cSJim Jagielski if ( /*(nMethodId == M_SnapShot || nMethodId == M_TypeKeys) &&*/ !pControl )
4534*b1cdbd2cSJim Jagielski pControl = SearchTree( aUId ,bSearchButtonOnToolbox );
4535*b1cdbd2cSJim Jagielski }
4536*b1cdbd2cSJim Jagielski else
4537*b1cdbd2cSJim Jagielski pControl = SearchTree( aUId ,bSearchButtonOnToolbox );
4538*b1cdbd2cSJim Jagielski }
4539*b1cdbd2cSJim Jagielski
4540*b1cdbd2cSJim Jagielski
4541*b1cdbd2cSJim Jagielski if ( pControl && pControl->GetType() == WINDOW_TOOLBOX )
4542*b1cdbd2cSJim Jagielski {
4543*b1cdbd2cSJim Jagielski if ( !aUId.equals( pControl->GetUniqueOrHelpId() ) )
4544*b1cdbd2cSJim Jagielski { // Also wenn wir irgendwas auf einer Toolbox gefunden haben
4545*b1cdbd2cSJim Jagielski switch ( nMethodId )
4546*b1cdbd2cSJim Jagielski {
4547*b1cdbd2cSJim Jagielski case M_Click:
4548*b1cdbd2cSJim Jagielski case M_TearOff:
4549*b1cdbd2cSJim Jagielski case M_OpenMenu:
4550*b1cdbd2cSJim Jagielski case M_GetState:
4551*b1cdbd2cSJim Jagielski break;
4552*b1cdbd2cSJim Jagielski case M_IsEnabled:
4553*b1cdbd2cSJim Jagielski nMethodId = _M_IsEnabled; // Umlabeln, da die Behandlung essentiell anders ist!
4554*b1cdbd2cSJim Jagielski break;
4555*b1cdbd2cSJim Jagielski default:
4556*b1cdbd2cSJim Jagielski pControl = NULL;
4557*b1cdbd2cSJim Jagielski }
4558*b1cdbd2cSJim Jagielski }
4559*b1cdbd2cSJim Jagielski }
4560*b1cdbd2cSJim Jagielski
4561*b1cdbd2cSJim Jagielski
4562*b1cdbd2cSJim Jagielski switch ( nMethodId )
4563*b1cdbd2cSJim Jagielski {
4564*b1cdbd2cSJim Jagielski case M_Exists:
4565*b1cdbd2cSJim Jagielski case M_NotExists:
4566*b1cdbd2cSJim Jagielski Time aT;
4567*b1cdbd2cSJim Jagielski sal_uInt16 aSeconds = aT.GetMin()*60+aT.GetSec();
4568*b1cdbd2cSJim Jagielski if ( !bBool2 ) // wurde im Konstruktor auf sal_False gesetzt
4569*b1cdbd2cSJim Jagielski {
4570*b1cdbd2cSJim Jagielski bBool2 = sal_True;
4571*b1cdbd2cSJim Jagielski nNr2 = aSeconds;
4572*b1cdbd2cSJim Jagielski if( !(nParams & PARAM_USHORT_1) )
4573*b1cdbd2cSJim Jagielski nNr1 = 0; // defaultm��ig sofort zur�ck
4574*b1cdbd2cSJim Jagielski }
4575*b1cdbd2cSJim Jagielski if ( aSeconds < nNr2 ) // Falls die Stunde umgesprungen ist
4576*b1cdbd2cSJim Jagielski aSeconds += 60*60;
4577*b1cdbd2cSJim Jagielski
4578*b1cdbd2cSJim Jagielski if ( /* !IsAccessable(pControl)#87019# */ !pControl || !pControl->IsVisible() )
4579*b1cdbd2cSJim Jagielski pControl = NULL;
4580*b1cdbd2cSJim Jagielski if ( ((nMethodId == M_Exists) && pControl) ||
4581*b1cdbd2cSJim Jagielski ((nMethodId == M_NotExists) && !pControl) )
4582*b1cdbd2cSJim Jagielski { // Wenn Bedingung erf�llt
4583*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)sal_True );
4584*b1cdbd2cSJim Jagielski }
4585*b1cdbd2cSJim Jagielski else
4586*b1cdbd2cSJim Jagielski if ( aSeconds <= nNr2 + nNr1 ) // Zeit ist noch nicht abgelaufen
4587*b1cdbd2cSJim Jagielski return sal_False;
4588*b1cdbd2cSJim Jagielski else
4589*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)sal_False );
4590*b1cdbd2cSJim Jagielski
4591*b1cdbd2cSJim Jagielski Advance();
4592*b1cdbd2cSJim Jagielski delete this;
4593*b1cdbd2cSJim Jagielski return sal_True;
4594*b1cdbd2cSJim Jagielski // break;
4595*b1cdbd2cSJim Jagielski }
4596*b1cdbd2cSJim Jagielski
4597*b1cdbd2cSJim Jagielski
4598*b1cdbd2cSJim Jagielski short nRT = 0;
4599*b1cdbd2cSJim Jagielski
4600*b1cdbd2cSJim Jagielski if( pControl ) // Das Fenster Existiert irgendwo, kann aber auch hidden sein!
4601*b1cdbd2cSJim Jagielski {
4602*b1cdbd2cSJim Jagielski nRT = ImpGetRType( pControl );
4603*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
4604*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Type is: " );
4605*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( String::CreateFromInt32( nRT ) );
4606*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
4607*b1cdbd2cSJim Jagielski #endif
4608*b1cdbd2cSJim Jagielski }
4609*b1cdbd2cSJim Jagielski
4610*b1cdbd2cSJim Jagielski if ( nRT == C_Window && // Search for WorkWindow to satisfy these commands
4611*b1cdbd2cSJim Jagielski ( nMethodId == M_Close
4612*b1cdbd2cSJim Jagielski // || nMethodId == M_Size
4613*b1cdbd2cSJim Jagielski // || nMethodId == M_Move
4614*b1cdbd2cSJim Jagielski || nMethodId == M_IsMax
4615*b1cdbd2cSJim Jagielski || nMethodId == M_IsMin
4616*b1cdbd2cSJim Jagielski || nMethodId == M_IsRestore
4617*b1cdbd2cSJim Jagielski || nMethodId == M_Minimize
4618*b1cdbd2cSJim Jagielski || nMethodId == M_Maximize
4619*b1cdbd2cSJim Jagielski || nMethodId == M_Restore ) )
4620*b1cdbd2cSJim Jagielski {
4621*b1cdbd2cSJim Jagielski Window* pNewControl = pControl;
4622*b1cdbd2cSJim Jagielski while ( pNewControl && pNewControl->GetType() != WINDOW_WORKWINDOW )
4623*b1cdbd2cSJim Jagielski pNewControl = pNewControl->GET_REAL_PARENT();
4624*b1cdbd2cSJim Jagielski
4625*b1cdbd2cSJim Jagielski if ( pNewControl )
4626*b1cdbd2cSJim Jagielski {
4627*b1cdbd2cSJim Jagielski pControl = pNewControl;
4628*b1cdbd2cSJim Jagielski nRT = C_WorkWin;
4629*b1cdbd2cSJim Jagielski }
4630*b1cdbd2cSJim Jagielski }
4631*b1cdbd2cSJim Jagielski
4632*b1cdbd2cSJim Jagielski
4633*b1cdbd2cSJim Jagielski if ( (!ControlOK( pControl, "" )) && ( nMethodId != M_SnapShot ) && (nRetryCount--))
4634*b1cdbd2cSJim Jagielski {
4635*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
4636*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( CUniString("Reschedule command (").Append( UniString::CreateFromInt32(nRetryCount) ).AppendAscii(")\n") );
4637*b1cdbd2cSJim Jagielski #endif
4638*b1cdbd2cSJim Jagielski return sal_False;
4639*b1cdbd2cSJim Jagielski }
4640*b1cdbd2cSJim Jagielski
4641*b1cdbd2cSJim Jagielski if( ControlOK( pControl, "" ) )
4642*b1cdbd2cSJim Jagielski {
4643*b1cdbd2cSJim Jagielski if ( nMethodId == M_OpenContextMenu && !bBool2 )
4644*b1cdbd2cSJim Jagielski {
4645*b1cdbd2cSJim Jagielski pControl->GrabFocus(); // to get asyncron focus on unix
4646*b1cdbd2cSJim Jagielski bBool2 = sal_True;
4647*b1cdbd2cSJim Jagielski return sal_False;
4648*b1cdbd2cSJim Jagielski }
4649*b1cdbd2cSJim Jagielski // TODO: handle GetFocus for all Methods and Windows like this (remove part below)
4650*b1cdbd2cSJim Jagielski // See for impact of changed focus for HandleVisibleControls() (taking Snapshots might be different, possible exclude those methods)
4651*b1cdbd2cSJim Jagielski if (( (nRT == C_TreeListBox) && !bBool2 )
4652*b1cdbd2cSJim Jagielski && nMethodId != M_TypeKeys // TypeKeys macht das selbst, falls eigenes Focushandling gew�nscht
4653*b1cdbd2cSJim Jagielski && nMethodId != M_MouseDown
4654*b1cdbd2cSJim Jagielski && nMethodId != M_MouseUp
4655*b1cdbd2cSJim Jagielski && nMethodId != M_MouseMove
4656*b1cdbd2cSJim Jagielski /*&& nMethodId != M_MouseDoubleClick*/ )
4657*b1cdbd2cSJim Jagielski {
4658*b1cdbd2cSJim Jagielski if ( !pControl->HasFocus() )
4659*b1cdbd2cSJim Jagielski {
4660*b1cdbd2cSJim Jagielski pControl->GrabFocus();
4661*b1cdbd2cSJim Jagielski int i = 10;
4662*b1cdbd2cSJim Jagielski while ( i-- && !pControl->HasFocus() ) // reschedule a bit
4663*b1cdbd2cSJim Jagielski {
4664*b1cdbd2cSJim Jagielski SafeReschedule();
4665*b1cdbd2cSJim Jagielski if ( !WinPtrValid( pControl ) )
4666*b1cdbd2cSJim Jagielski return sal_False;
4667*b1cdbd2cSJim Jagielski }
4668*b1cdbd2cSJim Jagielski if ( !pControl->HasFocus() ) // to get asyncronous focus
4669*b1cdbd2cSJim Jagielski {
4670*b1cdbd2cSJim Jagielski bBool2 = sal_True;
4671*b1cdbd2cSJim Jagielski return sal_False;
4672*b1cdbd2cSJim Jagielski }
4673*b1cdbd2cSJim Jagielski }
4674*b1cdbd2cSJim Jagielski }
4675*b1cdbd2cSJim Jagielski }
4676*b1cdbd2cSJim Jagielski
4677*b1cdbd2cSJim Jagielski Advance();
4678*b1cdbd2cSJim Jagielski
4679*b1cdbd2cSJim Jagielski if ( HandleVisibleControls( pControl ) )
4680*b1cdbd2cSJim Jagielski {
4681*b1cdbd2cSJim Jagielski delete this;
4682*b1cdbd2cSJim Jagielski return sal_True;
4683*b1cdbd2cSJim Jagielski }
4684*b1cdbd2cSJim Jagielski if( ControlOK( pControl, "Window/Control" ) )
4685*b1cdbd2cSJim Jagielski {
4686*b1cdbd2cSJim Jagielski if (((( nRT < C_TabPage && nRT > C_TabControl )
4687*b1cdbd2cSJim Jagielski || nRT == C_PatternBox
4688*b1cdbd2cSJim Jagielski || nRT == C_ToolBox
4689*b1cdbd2cSJim Jagielski || nRT == C_ValueSet
4690*b1cdbd2cSJim Jagielski || nRT == C_Control
4691*b1cdbd2cSJim Jagielski || nRT == C_TreeListBox
4692*b1cdbd2cSJim Jagielski )
4693*b1cdbd2cSJim Jagielski || nMethodId == M_OpenContextMenu )
4694*b1cdbd2cSJim Jagielski && nMethodId != M_TypeKeys // TypeKeys macht das selbst, falls eigenes Focushandling gew�nscht
4695*b1cdbd2cSJim Jagielski && nMethodId != M_MouseDown
4696*b1cdbd2cSJim Jagielski && nMethodId != M_MouseUp
4697*b1cdbd2cSJim Jagielski && nMethodId != M_MouseMove
4698*b1cdbd2cSJim Jagielski /*&& nMethodId != M_MouseDoubleClick*/ )
4699*b1cdbd2cSJim Jagielski pControl->GrabFocus();
4700*b1cdbd2cSJim Jagielski
4701*b1cdbd2cSJim Jagielski /* leads to problems because settext sets the text whereas typekeys adds to the text.
4702*b1cdbd2cSJim Jagielski if ( bDoTypeKeysDelay && nMethodId == M_SetText && ( nParams & PARAM_STR_1 ) )
4703*b1cdbd2cSJim Jagielski { // Hier wird das Statement auf ein TypeKeys umgebogen
4704*b1cdbd2cSJim Jagielski nMethodId = M_TypeKeys;
4705*b1cdbd2cSJim Jagielski nParams = PARAM_BOOL_1 | PARAM_STR_1;
4706*b1cdbd2cSJim Jagielski bBool1 = sal_True;
4707*b1cdbd2cSJim Jagielski pControl->GrabFocus();
4708*b1cdbd2cSJim Jagielski }
4709*b1cdbd2cSJim Jagielski */
4710*b1cdbd2cSJim Jagielski if ( !HandleCommonMethods( pControl ) )
4711*b1cdbd2cSJim Jagielski {
4712*b1cdbd2cSJim Jagielski switch( nRT )
4713*b1cdbd2cSJim Jagielski {
4714*b1cdbd2cSJim Jagielski case C_TabControl:
4715*b1cdbd2cSJim Jagielski switch( nMethodId )
4716*b1cdbd2cSJim Jagielski {
4717*b1cdbd2cSJim Jagielski case M_GetPageId:
4718*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_USHORT_1) )
4719*b1cdbd2cSJim Jagielski {
4720*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((TabControl*)pControl)->GetPageCount() ) )
4721*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)((TabControl*)pControl)->GetPageId(nNr1-1));
4722*b1cdbd2cSJim Jagielski }
4723*b1cdbd2cSJim Jagielski else
4724*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)((TabControl*)pControl)->GetCurPageId());
4725*b1cdbd2cSJim Jagielski break;
4726*b1cdbd2cSJim Jagielski case M_GetPageCount:
4727*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)((TabControl*)pControl)->GetPageCount());
4728*b1cdbd2cSJim Jagielski break;
4729*b1cdbd2cSJim Jagielski case M_SetPageId:
4730*b1cdbd2cSJim Jagielski if (((TabControl*)pControl)->GetCurPageId())
4731*b1cdbd2cSJim Jagielski ((TabControl*)pControl)->DeactivatePage();
4732*b1cdbd2cSJim Jagielski ((TabControl*)pControl)->SetCurPageId( nNr1 );
4733*b1cdbd2cSJim Jagielski ((TabControl*)pControl)->ActivatePage();
4734*b1cdbd2cSJim Jagielski break;
4735*b1cdbd2cSJim Jagielski case M_SetPageNr:
4736*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((TabControl*)pControl)->GetPageCount() ) )
4737*b1cdbd2cSJim Jagielski {
4738*b1cdbd2cSJim Jagielski if (((TabControl*)pControl)->GetCurPageId())
4739*b1cdbd2cSJim Jagielski ((TabControl*)pControl)->DeactivatePage();
4740*b1cdbd2cSJim Jagielski ((TabControl*)pControl)->SetCurPageId( ((TabControl*)pControl)->GetPageId( nNr1-1 ) );
4741*b1cdbd2cSJim Jagielski ((TabControl*)pControl)->ActivatePage();
4742*b1cdbd2cSJim Jagielski }
4743*b1cdbd2cSJim Jagielski break;
4744*b1cdbd2cSJim Jagielski case M_GetPage:
4745*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, Id2Str( ((TabControl*)pControl)->GetTabPage(((TabControl*)pControl)->GetCurPageId())->GetUniqueOrHelpId() ) );
4746*b1cdbd2cSJim Jagielski break;
4747*b1cdbd2cSJim Jagielski case M_SetPage :
4748*b1cdbd2cSJim Jagielski { // Wegen lokaler Variablen
4749*b1cdbd2cSJim Jagielski TabControl *pTControl = ((TabControl*)pControl);
4750*b1cdbd2cSJim Jagielski sal_uInt16 nActive = pTControl->GetCurPageId();
4751*b1cdbd2cSJim Jagielski sal_uInt16 i,anz;
4752*b1cdbd2cSJim Jagielski rtl::OString aID;
4753*b1cdbd2cSJim Jagielski rtl::OString aWantedID;
4754*b1cdbd2cSJim Jagielski //HELPID BACKWARD (No numbers please (remove PARAM_ULONG_1 part)
4755*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_ULONG_1) )
4756*b1cdbd2cSJim Jagielski {
4757*b1cdbd2cSJim Jagielski //aWantedID = rtl::OString( nLNr1 );
4758*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1c( S_INTERNAL_ERROR, "using numeric HelpID from old Testtool" ) );
4759*b1cdbd2cSJim Jagielski }
4760*b1cdbd2cSJim Jagielski else if ( (nParams & PARAM_STR_1) )
4761*b1cdbd2cSJim Jagielski {
4762*b1cdbd2cSJim Jagielski aWantedID = Str2Id( aString1 );
4763*b1cdbd2cSJim Jagielski }
4764*b1cdbd2cSJim Jagielski else
4765*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
4766*b1cdbd2cSJim Jagielski
4767*b1cdbd2cSJim Jagielski i = pTControl->GetPagePos( pTControl->GetCurPageId() );
4768*b1cdbd2cSJim Jagielski for ( anz=0 ; anz < pTControl->GetPageCount() && !aID.equals( aWantedID ) ; anz++ )
4769*b1cdbd2cSJim Jagielski {
4770*b1cdbd2cSJim Jagielski pTControl->SelectTabPage( pTControl->GetPageId(i) );
4771*b1cdbd2cSJim Jagielski /*if (pTControl->GetCurPageId())
4772*b1cdbd2cSJim Jagielski pTControl->DeactivatePage();
4773*b1cdbd2cSJim Jagielski pTControl->SetCurPageId( pTControl->GetPageId(i) );
4774*b1cdbd2cSJim Jagielski pTControl->ActivatePage();*/
4775*b1cdbd2cSJim Jagielski aID = pTControl->GetTabPage(pTControl->GetCurPageId())->GetUniqueOrHelpId();
4776*b1cdbd2cSJim Jagielski i++;
4777*b1cdbd2cSJim Jagielski if ( i >= pTControl->GetPageCount() )
4778*b1cdbd2cSJim Jagielski i = 0;
4779*b1cdbd2cSJim Jagielski if ( !MaybeDoTypeKeysDelay( pTControl ) || !MaybeDoTypeKeysDelay( pTControl ) || !MaybeDoTypeKeysDelay( pTControl ) ) // 3 Mal aufrufen
4780*b1cdbd2cSJim Jagielski break;
4781*b1cdbd2cSJim Jagielski }
4782*b1cdbd2cSJim Jagielski if ( !aID.equals( aWantedID ) )
4783*b1cdbd2cSJim Jagielski {
4784*b1cdbd2cSJim Jagielski pTControl->SelectTabPage( nActive );
4785*b1cdbd2cSJim Jagielski /*if (pTControl->GetCurPageId())
4786*b1cdbd2cSJim Jagielski pTControl->DeactivatePage();
4787*b1cdbd2cSJim Jagielski pTControl->SetCurPageId( nActive );
4788*b1cdbd2cSJim Jagielski pTControl->ActivatePage();*/
4789*b1cdbd2cSJim Jagielski ReportError( aWantedID, GEN_RES_STR1( S_TABPAGE_NOT_FOUND, MethodString( nMethodId ) ) );
4790*b1cdbd2cSJim Jagielski }
4791*b1cdbd2cSJim Jagielski }
4792*b1cdbd2cSJim Jagielski break;
4793*b1cdbd2cSJim Jagielski default:
4794*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "TabControl" ) );
4795*b1cdbd2cSJim Jagielski break;
4796*b1cdbd2cSJim Jagielski }
4797*b1cdbd2cSJim Jagielski break;
4798*b1cdbd2cSJim Jagielski case C_RadioButton:
4799*b1cdbd2cSJim Jagielski case C_ImageRadioButton:
4800*b1cdbd2cSJim Jagielski switch( nMethodId )
4801*b1cdbd2cSJim Jagielski {
4802*b1cdbd2cSJim Jagielski case M_AnimateMouse :
4803*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteLinks);
4804*b1cdbd2cSJim Jagielski break;
4805*b1cdbd2cSJim Jagielski case M_IsChecked :
4806*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((RadioButton*)pControl)->IsChecked());
4807*b1cdbd2cSJim Jagielski break;
4808*b1cdbd2cSJim Jagielski case M_Check :
4809*b1cdbd2cSJim Jagielski ((RadioButton*)pControl)->Check();
4810*b1cdbd2cSJim Jagielski ((RadioButton*)pControl)->Click();
4811*b1cdbd2cSJim Jagielski break;
4812*b1cdbd2cSJim Jagielski default:
4813*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "RadioButton" ) );
4814*b1cdbd2cSJim Jagielski break;
4815*b1cdbd2cSJim Jagielski }
4816*b1cdbd2cSJim Jagielski break;
4817*b1cdbd2cSJim Jagielski case C_CheckBox:
4818*b1cdbd2cSJim Jagielski case C_TriStateBox:
4819*b1cdbd2cSJim Jagielski switch( nMethodId )
4820*b1cdbd2cSJim Jagielski {
4821*b1cdbd2cSJim Jagielski case M_AnimateMouse :
4822*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteLinks);
4823*b1cdbd2cSJim Jagielski break;
4824*b1cdbd2cSJim Jagielski case M_IsChecked :
4825*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_BOOL( ((TriStateBox*)pControl)->GetState() == STATE_CHECK) );
4826*b1cdbd2cSJim Jagielski break;
4827*b1cdbd2cSJim Jagielski case M_IsTristate :
4828*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_BOOL( ((TriStateBox*)pControl)->GetState() == STATE_DONTKNOW) );
4829*b1cdbd2cSJim Jagielski break;
4830*b1cdbd2cSJim Jagielski case M_GetState :
4831*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((TriStateBox*)pControl)->GetState()));
4832*b1cdbd2cSJim Jagielski break;
4833*b1cdbd2cSJim Jagielski case M_Check :
4834*b1cdbd2cSJim Jagielski ((TriStateBox*)pControl)->SetState( STATE_CHECK );
4835*b1cdbd2cSJim Jagielski ((TriStateBox*)pControl)->Click();
4836*b1cdbd2cSJim Jagielski break;
4837*b1cdbd2cSJim Jagielski case M_UnCheck :
4838*b1cdbd2cSJim Jagielski ((TriStateBox*)pControl)->SetState( STATE_NOCHECK );
4839*b1cdbd2cSJim Jagielski ((TriStateBox*)pControl)->Click();
4840*b1cdbd2cSJim Jagielski break;
4841*b1cdbd2cSJim Jagielski case M_TriState :
4842*b1cdbd2cSJim Jagielski if ( ((TriStateBox*)pControl)->IsTriStateEnabled() )
4843*b1cdbd2cSJim Jagielski {
4844*b1cdbd2cSJim Jagielski ((TriStateBox*)pControl)->SetState( STATE_DONTKNOW );
4845*b1cdbd2cSJim Jagielski ((TriStateBox*)pControl)->Click();
4846*b1cdbd2cSJim Jagielski }
4847*b1cdbd2cSJim Jagielski else
4848*b1cdbd2cSJim Jagielski {
4849*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR0( S_TRISTATE_NOT_ALLOWED ) );
4850*b1cdbd2cSJim Jagielski }
4851*b1cdbd2cSJim Jagielski break;
4852*b1cdbd2cSJim Jagielski case M_Click :
4853*b1cdbd2cSJim Jagielski {
4854*b1cdbd2cSJim Jagielski TriStateBox *pTB = ((TriStateBox*)pControl);
4855*b1cdbd2cSJim Jagielski if ( pTB->GetState() == STATE_NOCHECK )
4856*b1cdbd2cSJim Jagielski pTB->SetState( STATE_CHECK );
4857*b1cdbd2cSJim Jagielski else if ( pTB->GetState() == STATE_CHECK )
4858*b1cdbd2cSJim Jagielski {
4859*b1cdbd2cSJim Jagielski if ( pTB->IsTriStateEnabled() )
4860*b1cdbd2cSJim Jagielski pTB->SetState( STATE_DONTKNOW );
4861*b1cdbd2cSJim Jagielski else
4862*b1cdbd2cSJim Jagielski pTB->SetState( STATE_NOCHECK );
4863*b1cdbd2cSJim Jagielski }
4864*b1cdbd2cSJim Jagielski else
4865*b1cdbd2cSJim Jagielski pTB->SetState( STATE_NOCHECK );
4866*b1cdbd2cSJim Jagielski pTB->Click();
4867*b1cdbd2cSJim Jagielski }
4868*b1cdbd2cSJim Jagielski break;
4869*b1cdbd2cSJim Jagielski default:
4870*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "TriStateBox" ) );
4871*b1cdbd2cSJim Jagielski break;
4872*b1cdbd2cSJim Jagielski }
4873*b1cdbd2cSJim Jagielski break;
4874*b1cdbd2cSJim Jagielski case C_Edit:
4875*b1cdbd2cSJim Jagielski case C_MultiLineEdit:
4876*b1cdbd2cSJim Jagielski switch( nMethodId )
4877*b1cdbd2cSJim Jagielski {
4878*b1cdbd2cSJim Jagielski case M_AnimateMouse :
4879*b1cdbd2cSJim Jagielski AnimateMouse( pControl, Mitte);
4880*b1cdbd2cSJim Jagielski break;
4881*b1cdbd2cSJim Jagielski case M_GetText :
4882*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((Edit*)pControl)->GetText());
4883*b1cdbd2cSJim Jagielski break;
4884*b1cdbd2cSJim Jagielski case M_IsWritable:
4885*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL) !((Edit*)pControl)->IsReadOnly() );
4886*b1cdbd2cSJim Jagielski break;
4887*b1cdbd2cSJim Jagielski default:
4888*b1cdbd2cSJim Jagielski if ( ! ((Edit*)pControl)->IsReadOnly() )
4889*b1cdbd2cSJim Jagielski {
4890*b1cdbd2cSJim Jagielski switch( nMethodId )
4891*b1cdbd2cSJim Jagielski {
4892*b1cdbd2cSJim Jagielski case M_SetText :
4893*b1cdbd2cSJim Jagielski ((Edit*)pControl)->SetText( aString1 );
4894*b1cdbd2cSJim Jagielski if ( nRT == C_MultiLineEdit ) // since SetModifyFlag is not virtual we have to do this
4895*b1cdbd2cSJim Jagielski ((MultiLineEdit*)pControl)->SetModifyFlag();
4896*b1cdbd2cSJim Jagielski else
4897*b1cdbd2cSJim Jagielski ((Edit*)pControl)->SetModifyFlag();
4898*b1cdbd2cSJim Jagielski ((Edit*)pControl)->Modify();
4899*b1cdbd2cSJim Jagielski if ( ((Edit*)pControl)->GetText().CompareTo(aString1) != COMPARE_EQUAL )
4900*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_ERROR_IN_SET_TEXT, MethodString( nMethodId ) ) );
4901*b1cdbd2cSJim Jagielski break;
4902*b1cdbd2cSJim Jagielski default:
4903*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "(MultiLine)Edit" ) );
4904*b1cdbd2cSJim Jagielski break;
4905*b1cdbd2cSJim Jagielski }
4906*b1cdbd2cSJim Jagielski }
4907*b1cdbd2cSJim Jagielski else
4908*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1c( S_ATTEMPT_TO_WRITE_READONLY, "(MultiLine)Edit" ) );
4909*b1cdbd2cSJim Jagielski }
4910*b1cdbd2cSJim Jagielski break;
4911*b1cdbd2cSJim Jagielski case C_MultiListBox:
4912*b1cdbd2cSJim Jagielski case C_ListBox:
4913*b1cdbd2cSJim Jagielski switch( nMethodId )
4914*b1cdbd2cSJim Jagielski {
4915*b1cdbd2cSJim Jagielski case M_AnimateMouse :
4916*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteOben);
4917*b1cdbd2cSJim Jagielski break;
4918*b1cdbd2cSJim Jagielski case M_GetSelCount :
4919*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((ListBox*)pControl)->GetSelectEntryCount()));
4920*b1cdbd2cSJim Jagielski break;
4921*b1cdbd2cSJim Jagielski case M_GetSelIndex :
4922*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
4923*b1cdbd2cSJim Jagielski {
4924*b1cdbd2cSJim Jagielski if ( ((ListBox*)pControl)->GetSelectEntryCount() == 0 )
4925*b1cdbd2cSJim Jagielski {
4926*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(0));
4927*b1cdbd2cSJim Jagielski break;
4928*b1cdbd2cSJim Jagielski }
4929*b1cdbd2cSJim Jagielski nNr1 = 1;
4930*b1cdbd2cSJim Jagielski }
4931*b1cdbd2cSJim Jagielski ValueOK(aUId, MethodString( nMethodId ),nNr1,((ListBox*)pControl)->GetSelectEntryCount());
4932*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((ListBox*)pControl)->GetSelectEntryPos(nNr1-1)) +1);
4933*b1cdbd2cSJim Jagielski break;
4934*b1cdbd2cSJim Jagielski case M_GetSelText :
4935*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
4936*b1cdbd2cSJim Jagielski nNr1 = 1;
4937*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((ListBox*)pControl)->GetSelectEntry(nNr1-1));
4938*b1cdbd2cSJim Jagielski break;
4939*b1cdbd2cSJim Jagielski case M_GetItemCount :
4940*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((ListBox*)pControl)->GetEntryCount()));
4941*b1cdbd2cSJim Jagielski break;
4942*b1cdbd2cSJim Jagielski case M_GetItemText :
4943*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((ListBox*)pControl)->GetEntry(nNr1-1));
4944*b1cdbd2cSJim Jagielski break;
4945*b1cdbd2cSJim Jagielski case M_Select:
4946*b1cdbd2cSJim Jagielski case M_MultiSelect:
4947*b1cdbd2cSJim Jagielski {
4948*b1cdbd2cSJim Jagielski sal_Bool bUnselectBeforeSelect = ( nMethodId == M_Select );
4949*b1cdbd2cSJim Jagielski sal_Bool bFehler = sal_False;
4950*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_BOOL_1) )
4951*b1cdbd2cSJim Jagielski bBool1 = sal_True;
4952*b1cdbd2cSJim Jagielski
4953*b1cdbd2cSJim Jagielski if ( nMethodId == M_MultiSelect && nRT == C_ListBox )
4954*b1cdbd2cSJim Jagielski {
4955*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "ListBox" ) );
4956*b1cdbd2cSJim Jagielski bFehler = sal_True;
4957*b1cdbd2cSJim Jagielski }
4958*b1cdbd2cSJim Jagielski
4959*b1cdbd2cSJim Jagielski if ( !bBool1 && nMethodId == M_Select )
4960*b1cdbd2cSJim Jagielski {
4961*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_SELECT_FALSE, MethodString( nMethodId ) ) );
4962*b1cdbd2cSJim Jagielski bFehler = sal_True;
4963*b1cdbd2cSJim Jagielski }
4964*b1cdbd2cSJim Jagielski
4965*b1cdbd2cSJim Jagielski if ( !bFehler )
4966*b1cdbd2cSJim Jagielski {
4967*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 )
4968*b1cdbd2cSJim Jagielski {
4969*b1cdbd2cSJim Jagielski ListBox *pLB = ((ListBox*)pControl);
4970*b1cdbd2cSJim Jagielski sal_uInt16 nPos;
4971*b1cdbd2cSJim Jagielski if ( (nPos = pLB->GetEntryPos( aString1 )) == LISTBOX_ENTRY_NOTFOUND )
4972*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
4973*b1cdbd2cSJim Jagielski else
4974*b1cdbd2cSJim Jagielski {
4975*b1cdbd2cSJim Jagielski if ( bUnselectBeforeSelect )
4976*b1cdbd2cSJim Jagielski pLB->SetNoSelection();
4977*b1cdbd2cSJim Jagielski pLB->SelectEntryPos( nPos, bBool1 );
4978*b1cdbd2cSJim Jagielski if ( pLB->IsEntryPosSelected( nPos ) ? !bBool1 : bBool1 ) // XOR rein mit BOOL
4979*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_METHOD_FAILED, MethodString( nMethodId ), aString1 ) );
4980*b1cdbd2cSJim Jagielski }
4981*b1cdbd2cSJim Jagielski }
4982*b1cdbd2cSJim Jagielski else
4983*b1cdbd2cSJim Jagielski {
4984*b1cdbd2cSJim Jagielski ListBox *pLB = ((ListBox*)pControl);
4985*b1cdbd2cSJim Jagielski pLB = static_cast<ListBox*>(pControl);
4986*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,pLB->GetEntryCount()) )
4987*b1cdbd2cSJim Jagielski {
4988*b1cdbd2cSJim Jagielski if ( bUnselectBeforeSelect )
4989*b1cdbd2cSJim Jagielski pLB->SetNoSelection();
4990*b1cdbd2cSJim Jagielski pLB->SelectEntryPos( nNr1-1, bBool1 );
4991*b1cdbd2cSJim Jagielski if ( pLB->IsEntryPosSelected( nNr1-1 ) ? !bBool1 : bBool1 ) // XOR rein mit BOOL
4992*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_METHOD_FAILED, MethodString( nMethodId ), UniString::CreateFromInt32( nNr1 ) ) );
4993*b1cdbd2cSJim Jagielski }
4994*b1cdbd2cSJim Jagielski }
4995*b1cdbd2cSJim Jagielski ((ListBox*)pControl)->Select();
4996*b1cdbd2cSJim Jagielski }
4997*b1cdbd2cSJim Jagielski }
4998*b1cdbd2cSJim Jagielski break;
4999*b1cdbd2cSJim Jagielski case M_SetNoSelection :
5000*b1cdbd2cSJim Jagielski ((ListBox*)pControl)->SetNoSelection();
5001*b1cdbd2cSJim Jagielski ((ListBox*)pControl)->Select();
5002*b1cdbd2cSJim Jagielski break;
5003*b1cdbd2cSJim Jagielski default:
5004*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "(Multi)ListBox" ) );
5005*b1cdbd2cSJim Jagielski break;
5006*b1cdbd2cSJim Jagielski }
5007*b1cdbd2cSJim Jagielski break;
5008*b1cdbd2cSJim Jagielski case C_ComboBox:
5009*b1cdbd2cSJim Jagielski case C_PatternBox:
5010*b1cdbd2cSJim Jagielski case C_NumericBox:
5011*b1cdbd2cSJim Jagielski case C_MetricBox:
5012*b1cdbd2cSJim Jagielski case C_CurrencyBox:
5013*b1cdbd2cSJim Jagielski case C_DateBox:
5014*b1cdbd2cSJim Jagielski case C_TimeBox:
5015*b1cdbd2cSJim Jagielski switch( nMethodId )
5016*b1cdbd2cSJim Jagielski {
5017*b1cdbd2cSJim Jagielski case M_AnimateMouse :
5018*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteOben);
5019*b1cdbd2cSJim Jagielski break;
5020*b1cdbd2cSJim Jagielski case M_GetSelText :
5021*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((ComboBox*)pControl)->GetText());
5022*b1cdbd2cSJim Jagielski break;
5023*b1cdbd2cSJim Jagielski case M_GetSelIndex :
5024*b1cdbd2cSJim Jagielski {
5025*b1cdbd2cSJim Jagielski sal_uInt16 nPos = ((ComboBox*)pControl)->GetEntryPos(((ComboBox*)pControl)->GetText());
5026*b1cdbd2cSJim Jagielski if ( nPos == COMBOBOX_ENTRY_NOTFOUND )
5027*b1cdbd2cSJim Jagielski nPos = 0;
5028*b1cdbd2cSJim Jagielski else
5029*b1cdbd2cSJim Jagielski nPos++;
5030*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG) nPos);
5031*b1cdbd2cSJim Jagielski }
5032*b1cdbd2cSJim Jagielski break;
5033*b1cdbd2cSJim Jagielski case M_GetItemCount :
5034*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((ComboBox*)pControl)->GetEntryCount()));
5035*b1cdbd2cSJim Jagielski break;
5036*b1cdbd2cSJim Jagielski case M_GetItemText :
5037*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((ComboBox*)pControl)->GetEntry(nNr1-1));
5038*b1cdbd2cSJim Jagielski break;
5039*b1cdbd2cSJim Jagielski case M_IsWritable:
5040*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL) !((ComboBox*)pControl)->IsReadOnly() );
5041*b1cdbd2cSJim Jagielski break;
5042*b1cdbd2cSJim Jagielski case M_Select :
5043*b1cdbd2cSJim Jagielski if( nParams & PARAM_USHORT_1 )
5044*b1cdbd2cSJim Jagielski {
5045*b1cdbd2cSJim Jagielski if ( !ValueOK(aUId, MethodString( nMethodId ),nNr1,((ComboBox*)pControl)->GetEntryCount()) )
5046*b1cdbd2cSJim Jagielski break;
5047*b1cdbd2cSJim Jagielski aString1 = ((ComboBox*)pControl)->GetEntry(nNr1-1);
5048*b1cdbd2cSJim Jagielski }
5049*b1cdbd2cSJim Jagielski else
5050*b1cdbd2cSJim Jagielski {
5051*b1cdbd2cSJim Jagielski if ( ((ComboBox*)pControl)->GetEntryPos( aString1 ) == COMBOBOX_ENTRY_NOTFOUND )
5052*b1cdbd2cSJim Jagielski {
5053*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
5054*b1cdbd2cSJim Jagielski break;
5055*b1cdbd2cSJim Jagielski }
5056*b1cdbd2cSJim Jagielski }
5057*b1cdbd2cSJim Jagielski
5058*b1cdbd2cSJim Jagielski
5059*b1cdbd2cSJim Jagielski ((ComboBox*)pControl)->SetText( aString1 );
5060*b1cdbd2cSJim Jagielski ((ComboBox*)pControl)->SetModifyFlag();
5061*b1cdbd2cSJim Jagielski ((ComboBox*)pControl)->Modify();
5062*b1cdbd2cSJim Jagielski break;
5063*b1cdbd2cSJim Jagielski case M_SetText :
5064*b1cdbd2cSJim Jagielski if ( ! ((ComboBox*)pControl)->IsReadOnly() )
5065*b1cdbd2cSJim Jagielski {
5066*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_STR_1) )
5067*b1cdbd2cSJim Jagielski aString1 = String();
5068*b1cdbd2cSJim Jagielski ((ComboBox*)pControl)->SetText( aString1 );
5069*b1cdbd2cSJim Jagielski ((ComboBox*)pControl)->SetModifyFlag();
5070*b1cdbd2cSJim Jagielski ((ComboBox*)pControl)->Modify();
5071*b1cdbd2cSJim Jagielski }
5072*b1cdbd2cSJim Jagielski else
5073*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1c( S_ATTEMPT_TO_WRITE_READONLY, "ComboBox" ) );
5074*b1cdbd2cSJim Jagielski break;
5075*b1cdbd2cSJim Jagielski default:
5076*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "ComboBox" ) );
5077*b1cdbd2cSJim Jagielski break;
5078*b1cdbd2cSJim Jagielski }
5079*b1cdbd2cSJim Jagielski break;
5080*b1cdbd2cSJim Jagielski case C_PushButton:
5081*b1cdbd2cSJim Jagielski case C_OkButton:
5082*b1cdbd2cSJim Jagielski case C_CancelButton:
5083*b1cdbd2cSJim Jagielski case C_ImageButton:
5084*b1cdbd2cSJim Jagielski switch( nMethodId )
5085*b1cdbd2cSJim Jagielski {
5086*b1cdbd2cSJim Jagielski case M_AnimateMouse :
5087*b1cdbd2cSJim Jagielski AnimateMouse( pControl, Mitte);
5088*b1cdbd2cSJim Jagielski break;
5089*b1cdbd2cSJim Jagielski case M_Click :
5090*b1cdbd2cSJim Jagielski ((PushButton*)pControl)->Click();
5091*b1cdbd2cSJim Jagielski break;
5092*b1cdbd2cSJim Jagielski default:
5093*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "PushButton" ) );
5094*b1cdbd2cSJim Jagielski break;
5095*b1cdbd2cSJim Jagielski }
5096*b1cdbd2cSJim Jagielski break;
5097*b1cdbd2cSJim Jagielski case C_MoreButton:
5098*b1cdbd2cSJim Jagielski switch( nMethodId )
5099*b1cdbd2cSJim Jagielski {
5100*b1cdbd2cSJim Jagielski case M_AnimateMouse :
5101*b1cdbd2cSJim Jagielski AnimateMouse( pControl, Mitte);
5102*b1cdbd2cSJim Jagielski break;
5103*b1cdbd2cSJim Jagielski case M_IsOpen :
5104*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((MoreButton*)pControl)->GetState());
5105*b1cdbd2cSJim Jagielski break;
5106*b1cdbd2cSJim Jagielski case M_Click :
5107*b1cdbd2cSJim Jagielski ((MoreButton*)pControl)->Click();
5108*b1cdbd2cSJim Jagielski break;
5109*b1cdbd2cSJim Jagielski case M_Open :
5110*b1cdbd2cSJim Jagielski ((MoreButton*)pControl)->SetState(sal_True);
5111*b1cdbd2cSJim Jagielski break;
5112*b1cdbd2cSJim Jagielski case M_Close :
5113*b1cdbd2cSJim Jagielski ((MoreButton*)pControl)->SetState(sal_False);
5114*b1cdbd2cSJim Jagielski break;
5115*b1cdbd2cSJim Jagielski default:
5116*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "MoreButton" ) );
5117*b1cdbd2cSJim Jagielski break;
5118*b1cdbd2cSJim Jagielski }
5119*b1cdbd2cSJim Jagielski break;
5120*b1cdbd2cSJim Jagielski case C_SpinField:
5121*b1cdbd2cSJim Jagielski case C_PatternField:
5122*b1cdbd2cSJim Jagielski case C_NumericField:
5123*b1cdbd2cSJim Jagielski case C_MetricField:
5124*b1cdbd2cSJim Jagielski case C_CurrencyField:
5125*b1cdbd2cSJim Jagielski case C_DateField:
5126*b1cdbd2cSJim Jagielski case C_TimeField:
5127*b1cdbd2cSJim Jagielski switch( nMethodId )
5128*b1cdbd2cSJim Jagielski {
5129*b1cdbd2cSJim Jagielski case M_AnimateMouse :
5130*b1cdbd2cSJim Jagielski AnimateMouse( pControl, Mitte);
5131*b1cdbd2cSJim Jagielski break;
5132*b1cdbd2cSJim Jagielski case M_GetText :
5133*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((SpinField*)pControl)->GetText());
5134*b1cdbd2cSJim Jagielski break;
5135*b1cdbd2cSJim Jagielski case M_IsWritable:
5136*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL) !((SpinField*)pControl)->IsReadOnly() );
5137*b1cdbd2cSJim Jagielski break;
5138*b1cdbd2cSJim Jagielski case M_SetText :
5139*b1cdbd2cSJim Jagielski if ( ! ((SpinField*)pControl)->IsReadOnly() )
5140*b1cdbd2cSJim Jagielski {
5141*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->SetText( aString1 );
5142*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->SetModifyFlag();
5143*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->Modify();
5144*b1cdbd2cSJim Jagielski }
5145*b1cdbd2cSJim Jagielski else
5146*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1c( S_ATTEMPT_TO_WRITE_READONLY, "SpinField" ) );
5147*b1cdbd2cSJim Jagielski break;
5148*b1cdbd2cSJim Jagielski case M_More :
5149*b1cdbd2cSJim Jagielski {
5150*b1cdbd2cSJim Jagielski if ( !(nParams & PARAM_USHORT_1) )
5151*b1cdbd2cSJim Jagielski nNr1 = 1;
5152*b1cdbd2cSJim Jagielski for (int i = 1; i<= nNr1; i++)
5153*b1cdbd2cSJim Jagielski {
5154*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->Up();
5155*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->SetModifyFlag();
5156*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->Modify();
5157*b1cdbd2cSJim Jagielski }
5158*b1cdbd2cSJim Jagielski }
5159*b1cdbd2cSJim Jagielski break;
5160*b1cdbd2cSJim Jagielski case M_Less :
5161*b1cdbd2cSJim Jagielski {
5162*b1cdbd2cSJim Jagielski if ( !(nParams & PARAM_USHORT_1) )
5163*b1cdbd2cSJim Jagielski nNr1 = 1;
5164*b1cdbd2cSJim Jagielski for (int i = 1; i<= nNr1; i++)
5165*b1cdbd2cSJim Jagielski {
5166*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->Down();
5167*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->SetModifyFlag();
5168*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->Modify();
5169*b1cdbd2cSJim Jagielski }
5170*b1cdbd2cSJim Jagielski }
5171*b1cdbd2cSJim Jagielski break;
5172*b1cdbd2cSJim Jagielski case M_ToMin :
5173*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->First();
5174*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->SetModifyFlag();
5175*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->Modify();
5176*b1cdbd2cSJim Jagielski break;
5177*b1cdbd2cSJim Jagielski case M_ToMax :
5178*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->Last();
5179*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->SetModifyFlag();
5180*b1cdbd2cSJim Jagielski ((SpinField*)pControl)->Modify();
5181*b1cdbd2cSJim Jagielski break;
5182*b1cdbd2cSJim Jagielski default:
5183*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "SpinField" ) );
5184*b1cdbd2cSJim Jagielski break;
5185*b1cdbd2cSJim Jagielski }
5186*b1cdbd2cSJim Jagielski break;
5187*b1cdbd2cSJim Jagielski
5188*b1cdbd2cSJim Jagielski case C_MenuButton:
5189*b1cdbd2cSJim Jagielski switch( nMethodId )
5190*b1cdbd2cSJim Jagielski {
5191*b1cdbd2cSJim Jagielski case M_AnimateMouse :
5192*b1cdbd2cSJim Jagielski AnimateMouse( pControl, Mitte);
5193*b1cdbd2cSJim Jagielski break;
5194*b1cdbd2cSJim Jagielski case M_Click :
5195*b1cdbd2cSJim Jagielski {
5196*b1cdbd2cSJim Jagielski MouseEvent aMEvnt;
5197*b1cdbd2cSJim Jagielski Point aPt( pControl->GetSizePixel().Width() / 2, pControl->GetSizePixel().Height() / 2 );
5198*b1cdbd2cSJim Jagielski aMEvnt = MouseEvent( aPt,1,MOUSE_SIMPLECLICK,MOUSE_LEFT );
5199*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pControl, aMEvnt, FORCE_DIRECT_CALL );
5200*b1cdbd2cSJim Jagielski ImplMouseButtonUp ( pControl, aMEvnt, FORCE_DIRECT_CALL );
5201*b1cdbd2cSJim Jagielski }
5202*b1cdbd2cSJim Jagielski break;
5203*b1cdbd2cSJim Jagielski case M_Open :
5204*b1cdbd2cSJim Jagielski case M_OpenMenu :
5205*b1cdbd2cSJim Jagielski {
5206*b1cdbd2cSJim Jagielski MouseEvent aMEvnt;
5207*b1cdbd2cSJim Jagielski Point aPt( pControl->GetSizePixel().Width() / 2, pControl->GetSizePixel().Height() / 2 );
5208*b1cdbd2cSJim Jagielski aMEvnt = MouseEvent( aPt,1,MOUSE_SIMPLECLICK,MOUSE_LEFT );
5209*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pControl, aMEvnt, FORCE_DIRECT_CALL );
5210*b1cdbd2cSJim Jagielski
5211*b1cdbd2cSJim Jagielski sal_uLong nStart = Time::GetSystemTicks();
5212*b1cdbd2cSJim Jagielski sal_uLong nDelay = pControl->GetSettings().GetMouseSettings().GetActionDelay();
5213*b1cdbd2cSJim Jagielski while ( ( Time::GetSystemTicks() - nStart ) < nDelay + 100 )
5214*b1cdbd2cSJim Jagielski SafeReschedule();
5215*b1cdbd2cSJim Jagielski
5216*b1cdbd2cSJim Jagielski ImplMouseButtonUp ( pControl, aMEvnt, FORCE_DIRECT_CALL );
5217*b1cdbd2cSJim Jagielski
5218*b1cdbd2cSJim Jagielski aSubMenuId1 = 0;
5219*b1cdbd2cSJim Jagielski aSubMenuId2 = 0;
5220*b1cdbd2cSJim Jagielski aSubMenuId3 = 0;
5221*b1cdbd2cSJim Jagielski pMenuWindow = NULL;
5222*b1cdbd2cSJim Jagielski }
5223*b1cdbd2cSJim Jagielski break;
5224*b1cdbd2cSJim Jagielski default:
5225*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "MenuButton" ) );
5226*b1cdbd2cSJim Jagielski break;
5227*b1cdbd2cSJim Jagielski }
5228*b1cdbd2cSJim Jagielski break;
5229*b1cdbd2cSJim Jagielski case C_ToolBox:
5230*b1cdbd2cSJim Jagielski {
5231*b1cdbd2cSJim Jagielski ToolBox *pTB = ((ToolBox*)pControl);
5232*b1cdbd2cSJim Jagielski if ( !aUId.equals( pTB->GetUniqueOrHelpId() ) ) // So we found a Button on the ToolBox
5233*b1cdbd2cSJim Jagielski {
5234*b1cdbd2cSJim Jagielski if ( (nParams == PARAM_NONE) || (nParams == PARAM_USHORT_1) )
5235*b1cdbd2cSJim Jagielski { // Wir f�lschen einen Parameter
5236*b1cdbd2cSJim Jagielski nParams |= PARAM_STR_1;
5237*b1cdbd2cSJim Jagielski aString1 = Id2Str( aUId );
5238*b1cdbd2cSJim Jagielski }
5239*b1cdbd2cSJim Jagielski else
5240*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
5241*b1cdbd2cSJim Jagielski }
5242*b1cdbd2cSJim Jagielski
5243*b1cdbd2cSJim Jagielski #define FIND_ITEM\
5244*b1cdbd2cSJim Jagielski sal_uInt16 nItemPos = 0;\
5245*b1cdbd2cSJim Jagielski sal_Bool bItemFound = sal_False;\
5246*b1cdbd2cSJim Jagielski {\
5247*b1cdbd2cSJim Jagielski rtl::OString aButtonId;\
5248*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 )\
5249*b1cdbd2cSJim Jagielski aButtonId = Str2Id( aString1 );\
5250*b1cdbd2cSJim Jagielski else\
5251*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );\
5252*b1cdbd2cSJim Jagielski for ( nItemPos = 0; nItemPos < pTB->GetItemCount() && !aButtonId.equals(Str2Id( pTB->GetItemCommand(pTB->GetItemId(nItemPos)) )) &&\
5253*b1cdbd2cSJim Jagielski !aButtonId.equals(pTB->GetHelpId(pTB->GetItemId(nItemPos))) ; nItemPos++ ) {}\
5254*b1cdbd2cSJim Jagielski bItemFound = aButtonId.equals(Str2Id( pTB->GetItemCommand(pTB->GetItemId(nItemPos)) )) || aButtonId.equals(pTB->GetHelpId(pTB->GetItemId(nItemPos)));\
5255*b1cdbd2cSJim Jagielski if ( !bItemFound )\
5256*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_HELPID_ON_TOOLBOX_NOT_FOUND, MethodString( nMethodId ) ) );\
5257*b1cdbd2cSJim Jagielski else\
5258*b1cdbd2cSJim Jagielski {\
5259*b1cdbd2cSJim Jagielski if ( !pTB->IsItemEnabled( pTB->GetItemId(nItemPos) ) && nMethodId != _M_IsEnabled && nMethodId != M_GetState )\
5260*b1cdbd2cSJim Jagielski {\
5261*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_BUTTON_DISABLED_ON_TOOLBOX, MethodString( nMethodId ) ) );\
5262*b1cdbd2cSJim Jagielski bItemFound = sal_False;\
5263*b1cdbd2cSJim Jagielski }\
5264*b1cdbd2cSJim Jagielski else if ( !pTB->IsItemVisible( pTB->GetItemId(nItemPos) ) && nMethodId != M_GetState )\
5265*b1cdbd2cSJim Jagielski {\
5266*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_BUTTON_HIDDEN_ON_TOOLBOX, MethodString( nMethodId ) ) );\
5267*b1cdbd2cSJim Jagielski bItemFound = sal_False;\
5268*b1cdbd2cSJim Jagielski }\
5269*b1cdbd2cSJim Jagielski else\
5270*b1cdbd2cSJim Jagielski {\
5271*b1cdbd2cSJim Jagielski if ( pTB->IsMenuEnabled() )\
5272*b1cdbd2cSJim Jagielski { /* button is in Menu */\
5273*b1cdbd2cSJim Jagielski }\
5274*b1cdbd2cSJim Jagielski else\
5275*b1cdbd2cSJim Jagielski { /* Try the multi line way */\
5276*b1cdbd2cSJim Jagielski if ( pTB->GetItemRect(pTB->GetItemId(nItemPos)).IsEmpty() )\
5277*b1cdbd2cSJim Jagielski {\
5278*b1cdbd2cSJim Jagielski sal_uInt16 nLine = pTB->GetCurLine();\
5279*b1cdbd2cSJim Jagielski do\
5280*b1cdbd2cSJim Jagielski {\
5281*b1cdbd2cSJim Jagielski pTB->ShowLine( sal_False );\
5282*b1cdbd2cSJim Jagielski for ( int i = 1 ; i < 30 ; i++ )\
5283*b1cdbd2cSJim Jagielski SafeReschedule();\
5284*b1cdbd2cSJim Jagielski }\
5285*b1cdbd2cSJim Jagielski while ( pTB->GetCurLine() != nLine && pTB->GetItemRect(pTB->GetItemId(nItemPos)).IsEmpty() );\
5286*b1cdbd2cSJim Jagielski pTB->Invalidate( pTB->GetScrollRect() );\
5287*b1cdbd2cSJim Jagielski }\
5288*b1cdbd2cSJim Jagielski if ( pTB->GetItemRect(pTB->GetItemId(nItemPos)).IsEmpty() )\
5289*b1cdbd2cSJim Jagielski {\
5290*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_CANNOT_MAKE_BUTTON_VISIBLE_IN_TOOLBOX, MethodString( nMethodId ) ) );\
5291*b1cdbd2cSJim Jagielski bItemFound = sal_False;\
5292*b1cdbd2cSJim Jagielski }\
5293*b1cdbd2cSJim Jagielski }\
5294*b1cdbd2cSJim Jagielski }\
5295*b1cdbd2cSJim Jagielski }\
5296*b1cdbd2cSJim Jagielski }
5297*b1cdbd2cSJim Jagielski
5298*b1cdbd2cSJim Jagielski switch( nMethodId )
5299*b1cdbd2cSJim Jagielski {
5300*b1cdbd2cSJim Jagielski case M_AnimateMouse :
5301*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteLinks);
5302*b1cdbd2cSJim Jagielski break;
5303*b1cdbd2cSJim Jagielski case M_Click :
5304*b1cdbd2cSJim Jagielski {
5305*b1cdbd2cSJim Jagielski FIND_ITEM;
5306*b1cdbd2cSJim Jagielski if ( bItemFound ) // FIND_ITEM Erfolgreich
5307*b1cdbd2cSJim Jagielski {
5308*b1cdbd2cSJim Jagielski Rectangle aRect = pTB->GetItemRect(pTB->GetItemId(nItemPos));
5309*b1cdbd2cSJim Jagielski if ( aRect.IsEmpty() )
5310*b1cdbd2cSJim Jagielski {
5311*b1cdbd2cSJim Jagielski pTB->ExecuteCustomMenu();
5312*b1cdbd2cSJim Jagielski /* aRect = pTB->GetMenubuttonRect();
5313*b1cdbd2cSJim Jagielski MouseEvent aMEvnt(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
5314*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pTB, aMEvnt );*/
5315*b1cdbd2cSJim Jagielski
5316*b1cdbd2cSJim Jagielski aSubMenuId1 = 0;
5317*b1cdbd2cSJim Jagielski aSubMenuId2 = 0;
5318*b1cdbd2cSJim Jagielski aSubMenuId3 = 0;
5319*b1cdbd2cSJim Jagielski pMenuWindow = NULL;
5320*b1cdbd2cSJim Jagielski
5321*b1cdbd2cSJim Jagielski new StatementCommand( this, RC_MenuSelect, PARAM_USHORT_1, pTB->GetItemId(nItemPos) + TOOLBOX_MENUITEM_START );
5322*b1cdbd2cSJim Jagielski }
5323*b1cdbd2cSJim Jagielski else
5324*b1cdbd2cSJim Jagielski {
5325*b1cdbd2cSJim Jagielski aRect = pTB->GetItemRect(pTB->GetItemId(nItemPos));
5326*b1cdbd2cSJim Jagielski MouseEvent aMEvnt;
5327*b1cdbd2cSJim Jagielski aMEvnt = MouseEvent(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
5328*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pTB, aMEvnt, FORCE_DIRECT_CALL );
5329*b1cdbd2cSJim Jagielski ImplMouseButtonUp ( pTB, aMEvnt, FORCE_DIRECT_CALL );
5330*b1cdbd2cSJim Jagielski }
5331*b1cdbd2cSJim Jagielski }
5332*b1cdbd2cSJim Jagielski }
5333*b1cdbd2cSJim Jagielski break;
5334*b1cdbd2cSJim Jagielski case M_TearOff :
5335*b1cdbd2cSJim Jagielski {
5336*b1cdbd2cSJim Jagielski FIND_ITEM;
5337*b1cdbd2cSJim Jagielski if ( bItemFound ) // FIND_ITEM Erfolgreich
5338*b1cdbd2cSJim Jagielski {
5339*b1cdbd2cSJim Jagielski Rectangle aRect = pTB->GetItemPosDropDownRect( nItemPos );
5340*b1cdbd2cSJim Jagielski AnimateMouse( pControl, aRect.Center() );
5341*b1cdbd2cSJim Jagielski MouseEvent aMEvnt(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
5342*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pTB, aMEvnt, FORCE_DIRECT_CALL );
5343*b1cdbd2cSJim Jagielski
5344*b1cdbd2cSJim Jagielski Window *pWin = NULL;
5345*b1cdbd2cSJim Jagielski // Wait for the window to open.
5346*b1cdbd2cSJim Jagielski StatementList::bExecuting = sal_True; // Bah ist das ein ekliger Hack
5347*b1cdbd2cSJim Jagielski { // Das verhindert, da� schon der n�chste Befehl ausgef�hrt wird.
5348*b1cdbd2cSJim Jagielski Time aDelay;
5349*b1cdbd2cSJim Jagielski while ( !pWin && ( (pWin = GetPopupFloatingWin()) == NULL ) && ( Time() - aDelay ).GetSec() < 15 )
5350*b1cdbd2cSJim Jagielski SafeReschedule();
5351*b1cdbd2cSJim Jagielski }
5352*b1cdbd2cSJim Jagielski StatementList::bExecuting = sal_False; // Bah ist das ein ekliger Hack
5353*b1cdbd2cSJim Jagielski
5354*b1cdbd2cSJim Jagielski if ( pWin && pWin->GetType() == WINDOW_FLOATINGWINDOW )
5355*b1cdbd2cSJim Jagielski {
5356*b1cdbd2cSJim Jagielski aMEvnt = MouseEvent(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
5357*b1cdbd2cSJim Jagielski ImplMouseButtonUp( pTB, aMEvnt, FORCE_DIRECT_CALL );
5358*b1cdbd2cSJim Jagielski ((FloatingWindow*)pWin)->EndPopupMode( FLOATWIN_POPUPMODEEND_TEAROFF );
5359*b1cdbd2cSJim Jagielski }
5360*b1cdbd2cSJim Jagielski else
5361*b1cdbd2cSJim Jagielski {
5362*b1cdbd2cSJim Jagielski aMEvnt = MouseEvent(Point(1,-10), 1, MOUSE_SIMPLECLICK,MOUSE_LEFT);
5363*b1cdbd2cSJim Jagielski ImplMouseButtonUp( pTB, aMEvnt, FORCE_DIRECT_CALL );
5364*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_TEAROFF_FAILED, MethodString( nMethodId ) ) );
5365*b1cdbd2cSJim Jagielski }
5366*b1cdbd2cSJim Jagielski }
5367*b1cdbd2cSJim Jagielski }
5368*b1cdbd2cSJim Jagielski break;
5369*b1cdbd2cSJim Jagielski case M_OpenMenu :
5370*b1cdbd2cSJim Jagielski {
5371*b1cdbd2cSJim Jagielski FIND_ITEM;
5372*b1cdbd2cSJim Jagielski if ( bItemFound ) // FIND_ITEM Erfolgreich
5373*b1cdbd2cSJim Jagielski {
5374*b1cdbd2cSJim Jagielski Rectangle aRect = pTB->GetItemPosDropDownRect( nItemPos );
5375*b1cdbd2cSJim Jagielski AnimateMouse( pControl, aRect.Center() );
5376*b1cdbd2cSJim Jagielski MouseEvent aMEvnt(aRect.Center(),1,MOUSE_SIMPLECLICK,MOUSE_LEFT);
5377*b1cdbd2cSJim Jagielski ImplMouseButtonDown( pTB, aMEvnt);
5378*b1cdbd2cSJim Jagielski ImplMouseButtonUp( pTB, aMEvnt);
5379*b1cdbd2cSJim Jagielski
5380*b1cdbd2cSJim Jagielski // Das Fenster ist offen.
5381*b1cdbd2cSJim Jagielski aSubMenuId1 = 0;
5382*b1cdbd2cSJim Jagielski aSubMenuId2 = 0;
5383*b1cdbd2cSJim Jagielski aSubMenuId3 = 0;
5384*b1cdbd2cSJim Jagielski pMenuWindow = NULL;
5385*b1cdbd2cSJim Jagielski }
5386*b1cdbd2cSJim Jagielski }
5387*b1cdbd2cSJim Jagielski break;
5388*b1cdbd2cSJim Jagielski case _M_IsEnabled:
5389*b1cdbd2cSJim Jagielski {
5390*b1cdbd2cSJim Jagielski FIND_ITEM;
5391*b1cdbd2cSJim Jagielski if ( bItemFound ) // FIND_ITEM Erfolgreich
5392*b1cdbd2cSJim Jagielski {
5393*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pTB->IsItemEnabled( pTB->GetItemId(nItemPos) ) );
5394*b1cdbd2cSJim Jagielski }
5395*b1cdbd2cSJim Jagielski }
5396*b1cdbd2cSJim Jagielski break;
5397*b1cdbd2cSJim Jagielski case M_GetState :
5398*b1cdbd2cSJim Jagielski {
5399*b1cdbd2cSJim Jagielski FIND_ITEM;
5400*b1cdbd2cSJim Jagielski if ( bItemFound ) // FIND_ITEM Erfolgreich
5401*b1cdbd2cSJim Jagielski {
5402*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, CUniString("GetState"), nNr1, 4 ) )
5403*b1cdbd2cSJim Jagielski switch (nNr1)
5404*b1cdbd2cSJim Jagielski {
5405*b1cdbd2cSJim Jagielski case 0:
5406*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, Id2Str( pTB->GetHelpId(pTB->GetItemId(nItemPos)) ) );
5407*b1cdbd2cSJim Jagielski break;
5408*b1cdbd2cSJim Jagielski case 1:
5409*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTB->GetItemType(nItemPos));
5410*b1cdbd2cSJim Jagielski break;
5411*b1cdbd2cSJim Jagielski case 2:
5412*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTB->GetItemState(pTB->GetItemId(nItemPos)));
5413*b1cdbd2cSJim Jagielski break;
5414*b1cdbd2cSJim Jagielski case 3:
5415*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTB->GetItemId(nItemPos));
5416*b1cdbd2cSJim Jagielski break;
5417*b1cdbd2cSJim Jagielski case 11:
5418*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG) nItemPos + 1);
5419*b1cdbd2cSJim Jagielski break;
5420*b1cdbd2cSJim Jagielski case 12:
5421*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, Id2Str(pTB->GetHelpId())); // The toolbox's help id
5422*b1cdbd2cSJim Jagielski break;
5423*b1cdbd2cSJim Jagielski case 13:
5424*b1cdbd2cSJim Jagielski {
5425*b1cdbd2cSJim Jagielski Rectangle aRect = pTB->GetItemPosRect( nItemPos );
5426*b1cdbd2cSJim Jagielski Rectangle aTBRect = pTB->GetWindowExtentsRelative( NULL );
5427*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId,
5428*b1cdbd2cSJim Jagielski UniString::CreateFromInt32(aRect.Left()+aTBRect.Left()).
5429*b1cdbd2cSJim Jagielski AppendAscii(",").Append(UniString::CreateFromInt32(aRect.Top()+aTBRect.Top())).
5430*b1cdbd2cSJim Jagielski AppendAscii(",").Append(UniString::CreateFromInt32(aRect.GetWidth())).
5431*b1cdbd2cSJim Jagielski AppendAscii(",").Append(UniString::CreateFromInt32(aRect.GetHeight()))
5432*b1cdbd2cSJim Jagielski );
5433*b1cdbd2cSJim Jagielski break;
5434*b1cdbd2cSJim Jagielski }
5435*b1cdbd2cSJim Jagielski default:
5436*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
5437*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(0));
5438*b1cdbd2cSJim Jagielski break;
5439*b1cdbd2cSJim Jagielski }
5440*b1cdbd2cSJim Jagielski }
5441*b1cdbd2cSJim Jagielski }
5442*b1cdbd2cSJim Jagielski break;
5443*b1cdbd2cSJim Jagielski case M_GetItemHelpText :
5444*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pTB->GetItemCount() ))
5445*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (String)pTB->GetHelpText(pTB->GetItemId(nNr1-1)));
5446*b1cdbd2cSJim Jagielski break;
5447*b1cdbd2cSJim Jagielski case M_GetItemQuickHelpText :
5448*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pTB->GetItemCount() ))
5449*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (String)pTB->GetQuickHelpText(pTB->GetItemId(nNr1-1)));
5450*b1cdbd2cSJim Jagielski break;
5451*b1cdbd2cSJim Jagielski case M_GetItemText2:
5452*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pTB->GetItemCount() ))
5453*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (String)pTB->GetItemText(pTB->GetItemId(nNr1-1)));
5454*b1cdbd2cSJim Jagielski break;
5455*b1cdbd2cSJim Jagielski case M_GetItemText :
5456*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (String)pTB->GetItemText(nNr1));
5457*b1cdbd2cSJim Jagielski break;
5458*b1cdbd2cSJim Jagielski case M_GetText :
5459*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (String)pTB->GetText());
5460*b1cdbd2cSJim Jagielski break;
5461*b1cdbd2cSJim Jagielski case M_GetItemCount :
5462*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTB->GetItemCount());
5463*b1cdbd2cSJim Jagielski break;
5464*b1cdbd2cSJim Jagielski case M_SetNextToolBox :
5465*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_STR_1) )
5466*b1cdbd2cSJim Jagielski pTB->SetNextToolBox( aString1 );
5467*b1cdbd2cSJim Jagielski else
5468*b1cdbd2cSJim Jagielski pTB->SetNextToolBox( pTB->GetNextToolBox() );
5469*b1cdbd2cSJim Jagielski pTB->NextToolBox();
5470*b1cdbd2cSJim Jagielski break;
5471*b1cdbd2cSJim Jagielski case M_GetNextToolBox :
5472*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (String)pTB->GetNextToolBox());
5473*b1cdbd2cSJim Jagielski break;
5474*b1cdbd2cSJim Jagielski case M_Dock :
5475*b1cdbd2cSJim Jagielski case M_Undock :
5476*b1cdbd2cSJim Jagielski case M_IsDocked :
5477*b1cdbd2cSJim Jagielski case M_Close:
5478*b1cdbd2cSJim Jagielski case M_Size:
5479*b1cdbd2cSJim Jagielski case M_Move:
5480*b1cdbd2cSJim Jagielski case M_IsMax:
5481*b1cdbd2cSJim Jagielski case M_Minimize:
5482*b1cdbd2cSJim Jagielski case M_Maximize:
5483*b1cdbd2cSJim Jagielski case M_Help: // Alles was unten weiterbehandelt werden soll
5484*b1cdbd2cSJim Jagielski goto DockingWin;
5485*b1cdbd2cSJim Jagielski default:
5486*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "ToolBox" ) );
5487*b1cdbd2cSJim Jagielski break;
5488*b1cdbd2cSJim Jagielski }
5489*b1cdbd2cSJim Jagielski }
5490*b1cdbd2cSJim Jagielski break;
5491*b1cdbd2cSJim Jagielski
5492*b1cdbd2cSJim Jagielski case C_TreeListBox:
5493*b1cdbd2cSJim Jagielski switch( nMethodId )
5494*b1cdbd2cSJim Jagielski {
5495*b1cdbd2cSJim Jagielski
5496*b1cdbd2cSJim Jagielski
5497*b1cdbd2cSJim Jagielski
5498*b1cdbd2cSJim Jagielski #define GET_NTH_ENTRY_LBOX( First, Next, Anzahl) \
5499*b1cdbd2cSJim Jagielski SvLBoxEntry *pThisEntry = ((SvTreeListBox*)pControl)->First(); \
5500*b1cdbd2cSJim Jagielski { \
5501*b1cdbd2cSJim Jagielski int niTemp = Anzahl; \
5502*b1cdbd2cSJim Jagielski while ( niTemp-- ) \
5503*b1cdbd2cSJim Jagielski { \
5504*b1cdbd2cSJim Jagielski pThisEntry = ((SvTreeListBox*)pControl)->Next( pThisEntry ); \
5505*b1cdbd2cSJim Jagielski } \
5506*b1cdbd2cSJim Jagielski }
5507*b1cdbd2cSJim Jagielski
5508*b1cdbd2cSJim Jagielski case M_GetText : // Get the first text of the given (default=1) line
5509*b1cdbd2cSJim Jagielski { // should get removed some time
5510*b1cdbd2cSJim Jagielski SvTreeListBox *pTree = (SvTreeListBox*)pControl;
5511*b1cdbd2cSJim Jagielski SvLBoxEntry *pThisEntry = pTree->GetCurEntry();
5512*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
5513*b1cdbd2cSJim Jagielski nNr1 = 1;
5514*b1cdbd2cSJim Jagielski if ( pThisEntry )
5515*b1cdbd2cSJim Jagielski {
5516*b1cdbd2cSJim Jagielski SvLBoxString* pItem = NULL;
5517*b1cdbd2cSJim Jagielski sal_uInt16 nValidTextItemCount = 0;
5518*b1cdbd2cSJim Jagielski {
5519*b1cdbd2cSJim Jagielski sal_uInt16 nIndex = 0;
5520*b1cdbd2cSJim Jagielski SvLBoxItem *pMyItem;
5521*b1cdbd2cSJim Jagielski while ( ( nValidTextItemCount < nNr1 ) && nIndex < pThisEntry->ItemCount() )
5522*b1cdbd2cSJim Jagielski {
5523*b1cdbd2cSJim Jagielski pMyItem = pThisEntry->GetItem( nIndex );
5524*b1cdbd2cSJim Jagielski if ( pMyItem->IsA() == SV_ITEM_ID_LBOXSTRING )
5525*b1cdbd2cSJim Jagielski {
5526*b1cdbd2cSJim Jagielski pItem = (SvLBoxString*)pMyItem;
5527*b1cdbd2cSJim Jagielski nValidTextItemCount++;
5528*b1cdbd2cSJim Jagielski }
5529*b1cdbd2cSJim Jagielski nIndex++;
5530*b1cdbd2cSJim Jagielski }
5531*b1cdbd2cSJim Jagielski }
5532*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, CUniString("GetText"), nNr1, nValidTextItemCount ) )
5533*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
5534*b1cdbd2cSJim Jagielski }
5535*b1cdbd2cSJim Jagielski else
5536*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_NO_SELECTED_ENTRY, MethodString( nMethodId ), "TreeListBox" ) );
5537*b1cdbd2cSJim Jagielski }
5538*b1cdbd2cSJim Jagielski break;
5539*b1cdbd2cSJim Jagielski case M_GetSelCount :
5540*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((SvLBox*)pControl)->GetSelectionCount()));
5541*b1cdbd2cSJim Jagielski break;
5542*b1cdbd2cSJim Jagielski case M_GetItemCount :
5543*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((SvLBox*)pControl)->GetVisibleCount()) );
5544*b1cdbd2cSJim Jagielski break;
5545*b1cdbd2cSJim Jagielski case M_GetSelIndex :
5546*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
5547*b1cdbd2cSJim Jagielski nNr1 = 1;
5548*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, CUniString("GetSelIndex"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
5549*b1cdbd2cSJim Jagielski {
5550*b1cdbd2cSJim Jagielski nNr1--;
5551*b1cdbd2cSJim Jagielski GET_NTH_ENTRY_LBOX( FirstSelected, NextSelected, nNr1);
5552*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( ((SvTreeListBox*)pControl)->GetVisiblePos( pThisEntry )) +1 );
5553*b1cdbd2cSJim Jagielski }
5554*b1cdbd2cSJim Jagielski break;
5555*b1cdbd2cSJim Jagielski case M_Select :
5556*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_BOOL_1) )
5557*b1cdbd2cSJim Jagielski bBool1 = sal_True;
5558*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 )
5559*b1cdbd2cSJim Jagielski {
5560*b1cdbd2cSJim Jagielski /* ListBox *pLB = ((ListBox*)pControl);
5561*b1cdbd2cSJim Jagielski if ( pLB->GetEntryPos( aString1 ) == LISTBOX_ENTRY_NOTFOUND )
5562*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
5563*b1cdbd2cSJim Jagielski else
5564*b1cdbd2cSJim Jagielski {
5565*b1cdbd2cSJim Jagielski pLB->SelectEntry( aString1, bBool1 );
5566*b1cdbd2cSJim Jagielski if ( pLB->IsEntrySelected( aString1 ) ? !bBool1 : bBool1 ) // XOR rein mit BOOL
5567*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_METHOD_FAILED, MethodString( nMethodId ), aString1 ) );
5568*b1cdbd2cSJim Jagielski }
5569*b1cdbd2cSJim Jagielski */ ReportError( aUId, GEN_RES_STR1( S_SELECT_DESELECT_VIA_STRING_NOT_IMPLEMENTED, MethodString( nMethodId ) ) );
5570*b1cdbd2cSJim Jagielski }
5571*b1cdbd2cSJim Jagielski else
5572*b1cdbd2cSJim Jagielski {
5573*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
5574*b1cdbd2cSJim Jagielski {
5575*b1cdbd2cSJim Jagielski SvLBoxEntry *pEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
5576*b1cdbd2cSJim Jagielski ((SvTreeListBox*)pControl)->Select ( pEntry, bBool1 );
5577*b1cdbd2cSJim Jagielski }
5578*b1cdbd2cSJim Jagielski }
5579*b1cdbd2cSJim Jagielski break;
5580*b1cdbd2cSJim Jagielski case M_Collapse :
5581*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 )
5582*b1cdbd2cSJim Jagielski {
5583*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_SELECT_DESELECT_VIA_STRING_NOT_IMPLEMENTED, MethodString( nMethodId ) ) );
5584*b1cdbd2cSJim Jagielski }
5585*b1cdbd2cSJim Jagielski else
5586*b1cdbd2cSJim Jagielski {
5587*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
5588*b1cdbd2cSJim Jagielski {
5589*b1cdbd2cSJim Jagielski SvLBoxEntry *pEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
5590*b1cdbd2cSJim Jagielski ((SvTreeListBox*)pControl)->Collapse ( pEntry );
5591*b1cdbd2cSJim Jagielski }
5592*b1cdbd2cSJim Jagielski }
5593*b1cdbd2cSJim Jagielski break;
5594*b1cdbd2cSJim Jagielski case M_Expand :
5595*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 )
5596*b1cdbd2cSJim Jagielski {
5597*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_SELECT_DESELECT_VIA_STRING_NOT_IMPLEMENTED, MethodString( nMethodId ) ) );
5598*b1cdbd2cSJim Jagielski }
5599*b1cdbd2cSJim Jagielski else
5600*b1cdbd2cSJim Jagielski {
5601*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
5602*b1cdbd2cSJim Jagielski {
5603*b1cdbd2cSJim Jagielski SvLBoxEntry *pEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
5604*b1cdbd2cSJim Jagielski ((SvTreeListBox*)pControl)->Expand ( pEntry );
5605*b1cdbd2cSJim Jagielski }
5606*b1cdbd2cSJim Jagielski }
5607*b1cdbd2cSJim Jagielski break;
5608*b1cdbd2cSJim Jagielski case M_GetSelText :
5609*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
5610*b1cdbd2cSJim Jagielski nNr1 = 1;
5611*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_2) )
5612*b1cdbd2cSJim Jagielski nNr2 = 1;
5613*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, CUniString("GetSelText"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
5614*b1cdbd2cSJim Jagielski {
5615*b1cdbd2cSJim Jagielski nNr1--;
5616*b1cdbd2cSJim Jagielski GET_NTH_ENTRY_LBOX( FirstSelected, NextSelected, nNr1);
5617*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ),nNr2,pThisEntry->ItemCount() ) )
5618*b1cdbd2cSJim Jagielski {
5619*b1cdbd2cSJim Jagielski SvLBoxString* pItem = NULL;
5620*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_2) )
5621*b1cdbd2cSJim Jagielski pItem = (SvLBoxString*)pThisEntry->GetFirstItem( SV_ITEM_ID_LBOXSTRING );
5622*b1cdbd2cSJim Jagielski else
5623*b1cdbd2cSJim Jagielski {
5624*b1cdbd2cSJim Jagielski SvLBoxItem *pMyItem = pThisEntry->GetItem( nNr2-1 );
5625*b1cdbd2cSJim Jagielski if ( pMyItem->IsA() == SV_ITEM_ID_LBOXSTRING )
5626*b1cdbd2cSJim Jagielski pItem = (SvLBoxString*)pMyItem;
5627*b1cdbd2cSJim Jagielski }
5628*b1cdbd2cSJim Jagielski
5629*b1cdbd2cSJim Jagielski if ( pItem )
5630*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
5631*b1cdbd2cSJim Jagielski else
5632*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_LIST_BOX_STRING, MethodString( nMethodId ) ) );
5633*b1cdbd2cSJim Jagielski }
5634*b1cdbd2cSJim Jagielski }
5635*b1cdbd2cSJim Jagielski break;
5636*b1cdbd2cSJim Jagielski case M_GetItemText :
5637*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
5638*b1cdbd2cSJim Jagielski {
5639*b1cdbd2cSJim Jagielski SvLBoxEntry *pThisEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
5640*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_2) )
5641*b1cdbd2cSJim Jagielski nNr2 = 1;
5642*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ),nNr2,pThisEntry->ItemCount() ) )
5643*b1cdbd2cSJim Jagielski {
5644*b1cdbd2cSJim Jagielski SvLBoxString* pItem = NULL;
5645*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_2) )
5646*b1cdbd2cSJim Jagielski pItem = (SvLBoxString*)pThisEntry->GetFirstItem( SV_ITEM_ID_LBOXSTRING );
5647*b1cdbd2cSJim Jagielski else
5648*b1cdbd2cSJim Jagielski {
5649*b1cdbd2cSJim Jagielski SvLBoxItem *pMyItem = pThisEntry->GetItem( nNr2-1 );
5650*b1cdbd2cSJim Jagielski if ( pMyItem->IsA() == SV_ITEM_ID_LBOXSTRING )
5651*b1cdbd2cSJim Jagielski pItem = (SvLBoxString*)pMyItem;
5652*b1cdbd2cSJim Jagielski }
5653*b1cdbd2cSJim Jagielski
5654*b1cdbd2cSJim Jagielski if ( pItem )
5655*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
5656*b1cdbd2cSJim Jagielski else
5657*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_LIST_BOX_STRING, MethodString( nMethodId ) ) );
5658*b1cdbd2cSJim Jagielski }
5659*b1cdbd2cSJim Jagielski }
5660*b1cdbd2cSJim Jagielski break;
5661*b1cdbd2cSJim Jagielski case M_IsChecked :
5662*b1cdbd2cSJim Jagielski case M_IsTristate :
5663*b1cdbd2cSJim Jagielski case M_GetState :
5664*b1cdbd2cSJim Jagielski case M_Check :
5665*b1cdbd2cSJim Jagielski case M_UnCheck :
5666*b1cdbd2cSJim Jagielski case M_TriState :
5667*b1cdbd2cSJim Jagielski {
5668*b1cdbd2cSJim Jagielski SvTreeListBox *pTree = (SvTreeListBox*)pControl;
5669*b1cdbd2cSJim Jagielski SvLBoxEntry *pThisEntry = NULL;
5670*b1cdbd2cSJim Jagielski
5671*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
5672*b1cdbd2cSJim Jagielski {
5673*b1cdbd2cSJim Jagielski pThisEntry = pTree->GetCurEntry();
5674*b1cdbd2cSJim Jagielski if ( !pThisEntry )
5675*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_NO_SELECTED_ENTRY, MethodString( nMethodId ), "TreeListBox" ) );
5676*b1cdbd2cSJim Jagielski }
5677*b1cdbd2cSJim Jagielski else
5678*b1cdbd2cSJim Jagielski {
5679*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
5680*b1cdbd2cSJim Jagielski {
5681*b1cdbd2cSJim Jagielski pThisEntry = (SvLBoxEntry*)pTree->GetEntryAtVisPos( nNr1-1 );
5682*b1cdbd2cSJim Jagielski }
5683*b1cdbd2cSJim Jagielski }
5684*b1cdbd2cSJim Jagielski
5685*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_2) )
5686*b1cdbd2cSJim Jagielski nNr2 = 1;
5687*b1cdbd2cSJim Jagielski
5688*b1cdbd2cSJim Jagielski if ( pThisEntry )
5689*b1cdbd2cSJim Jagielski {
5690*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ),nNr2,pThisEntry->ItemCount() ) )
5691*b1cdbd2cSJim Jagielski {
5692*b1cdbd2cSJim Jagielski SvLBoxButton* pItem = NULL;
5693*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_2) )
5694*b1cdbd2cSJim Jagielski pItem = (SvLBoxButton*)pThisEntry->GetFirstItem( SV_ITEM_ID_LBOXBUTTON );
5695*b1cdbd2cSJim Jagielski else
5696*b1cdbd2cSJim Jagielski {
5697*b1cdbd2cSJim Jagielski SvLBoxItem *pMyItem = pThisEntry->GetItem( nNr2-1 );
5698*b1cdbd2cSJim Jagielski if ( pMyItem->IsA() == SV_ITEM_ID_LBOXBUTTON )
5699*b1cdbd2cSJim Jagielski pItem = (SvLBoxButton*)pMyItem;
5700*b1cdbd2cSJim Jagielski }
5701*b1cdbd2cSJim Jagielski
5702*b1cdbd2cSJim Jagielski if ( pItem )
5703*b1cdbd2cSJim Jagielski {
5704*b1cdbd2cSJim Jagielski switch( nMethodId )
5705*b1cdbd2cSJim Jagielski {
5706*b1cdbd2cSJim Jagielski case M_IsChecked :
5707*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_BOOL( pItem->IsStateChecked() ) );
5708*b1cdbd2cSJim Jagielski break;
5709*b1cdbd2cSJim Jagielski case M_IsTristate :
5710*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_BOOL( pItem->IsStateTristate() ) );
5711*b1cdbd2cSJim Jagielski break;
5712*b1cdbd2cSJim Jagielski case M_GetState :
5713*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pItem->GetButtonFlags() & ~SV_STATE_MASK ));
5714*b1cdbd2cSJim Jagielski break;
5715*b1cdbd2cSJim Jagielski case M_Check :
5716*b1cdbd2cSJim Jagielski if ( !pItem->IsStateChecked() )
5717*b1cdbd2cSJim Jagielski {
5718*b1cdbd2cSJim Jagielski pItem->SetStateChecked();
5719*b1cdbd2cSJim Jagielski pTree->CheckButtonHdl();
5720*b1cdbd2cSJim Jagielski pTree->InvalidateEntry( pThisEntry );
5721*b1cdbd2cSJim Jagielski }
5722*b1cdbd2cSJim Jagielski break;
5723*b1cdbd2cSJim Jagielski case M_UnCheck :
5724*b1cdbd2cSJim Jagielski if ( pItem->IsStateChecked() || pItem->IsStateTristate() )
5725*b1cdbd2cSJim Jagielski {
5726*b1cdbd2cSJim Jagielski pItem->SetStateUnchecked();
5727*b1cdbd2cSJim Jagielski pTree->CheckButtonHdl();
5728*b1cdbd2cSJim Jagielski pTree->InvalidateEntry( pThisEntry );
5729*b1cdbd2cSJim Jagielski }
5730*b1cdbd2cSJim Jagielski break;
5731*b1cdbd2cSJim Jagielski case M_TriState :
5732*b1cdbd2cSJim Jagielski if ( !pItem->IsStateTristate() )
5733*b1cdbd2cSJim Jagielski {
5734*b1cdbd2cSJim Jagielski pItem->SetStateTristate();
5735*b1cdbd2cSJim Jagielski pTree->CheckButtonHdl();
5736*b1cdbd2cSJim Jagielski pTree->InvalidateEntry( pThisEntry );
5737*b1cdbd2cSJim Jagielski }
5738*b1cdbd2cSJim Jagielski break;
5739*b1cdbd2cSJim Jagielski default:
5740*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
5741*b1cdbd2cSJim Jagielski break;
5742*b1cdbd2cSJim Jagielski }
5743*b1cdbd2cSJim Jagielski }
5744*b1cdbd2cSJim Jagielski else
5745*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_LIST_BOX_BUTTON, MethodString( nMethodId ) ) );
5746*b1cdbd2cSJim Jagielski }
5747*b1cdbd2cSJim Jagielski }
5748*b1cdbd2cSJim Jagielski }
5749*b1cdbd2cSJim Jagielski break;
5750*b1cdbd2cSJim Jagielski case M_GetItemType :
5751*b1cdbd2cSJim Jagielski {
5752*b1cdbd2cSJim Jagielski SvTreeListBox *pTree = (SvTreeListBox*)pControl;
5753*b1cdbd2cSJim Jagielski SvLBoxEntry *pThisEntry = NULL;
5754*b1cdbd2cSJim Jagielski
5755*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
5756*b1cdbd2cSJim Jagielski {
5757*b1cdbd2cSJim Jagielski pThisEntry = pTree->GetCurEntry();
5758*b1cdbd2cSJim Jagielski if ( !pThisEntry )
5759*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_NO_SELECTED_ENTRY, MethodString( nMethodId ), "TreeListBox" ) );
5760*b1cdbd2cSJim Jagielski }
5761*b1cdbd2cSJim Jagielski else
5762*b1cdbd2cSJim Jagielski {
5763*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
5764*b1cdbd2cSJim Jagielski {
5765*b1cdbd2cSJim Jagielski pThisEntry = (SvLBoxEntry*)pTree->GetEntryAtVisPos( nNr1-1 );
5766*b1cdbd2cSJim Jagielski }
5767*b1cdbd2cSJim Jagielski }
5768*b1cdbd2cSJim Jagielski
5769*b1cdbd2cSJim Jagielski if ( pThisEntry )
5770*b1cdbd2cSJim Jagielski {
5771*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_2) )
5772*b1cdbd2cSJim Jagielski nNr2 = 1;
5773*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ),nNr2,pThisEntry->ItemCount() ) )
5774*b1cdbd2cSJim Jagielski {
5775*b1cdbd2cSJim Jagielski SvLBoxItem *pMyItem = pThisEntry->GetItem( nNr2-1 );
5776*b1cdbd2cSJim Jagielski comm_USHORT nType;
5777*b1cdbd2cSJim Jagielski switch ( pMyItem->IsA() )
5778*b1cdbd2cSJim Jagielski {
5779*b1cdbd2cSJim Jagielski case SV_ITEM_ID_LBOXSTRING: nType = CONST_ItemTypeText ; break;
5780*b1cdbd2cSJim Jagielski case SV_ITEM_ID_LBOXBMP: nType = CONST_ItemTypeBMP ; break;
5781*b1cdbd2cSJim Jagielski case SV_ITEM_ID_LBOXBUTTON: nType = CONST_ItemTypeCheckbox ; break;
5782*b1cdbd2cSJim Jagielski case SV_ITEM_ID_LBOXCONTEXTBMP: nType = CONST_ItemTypeContextBMP ; break;
5783*b1cdbd2cSJim Jagielski default: nType = CONST_ItemTypeUnknown;
5784*b1cdbd2cSJim Jagielski }
5785*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, nType );
5786*b1cdbd2cSJim Jagielski }
5787*b1cdbd2cSJim Jagielski }
5788*b1cdbd2cSJim Jagielski }
5789*b1cdbd2cSJim Jagielski break;
5790*b1cdbd2cSJim Jagielski default:
5791*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "TreeListBox" ) );
5792*b1cdbd2cSJim Jagielski break;
5793*b1cdbd2cSJim Jagielski }
5794*b1cdbd2cSJim Jagielski break;
5795*b1cdbd2cSJim Jagielski case C_Control:
5796*b1cdbd2cSJim Jagielski {
5797*b1cdbd2cSJim Jagielski sal_uInt16 nRealControlType = 0;
5798*b1cdbd2cSJim Jagielski if ( dynamic_cast< EditBrowseBox* >(pControl) )
5799*b1cdbd2cSJim Jagielski nRealControlType = CONST_CTBrowseBox;
5800*b1cdbd2cSJim Jagielski else if ( dynamic_cast< ValueSet* >(pControl) )
5801*b1cdbd2cSJim Jagielski nRealControlType = CONST_CTValueSet;
5802*b1cdbd2cSJim Jagielski else if ( dynamic_cast< ORoadmap* >(pControl) )
5803*b1cdbd2cSJim Jagielski nRealControlType = CONST_CTORoadmap;
5804*b1cdbd2cSJim Jagielski else if ( dynamic_cast< IExtensionListBox* >(pControl) )
5805*b1cdbd2cSJim Jagielski nRealControlType = CONST_CTIExtensionListBox;
5806*b1cdbd2cSJim Jagielski else if ( dynamic_cast< ::svt::table::TableControl* >(pControl) )
5807*b1cdbd2cSJim Jagielski nRealControlType = CONST_CTTableControl;
5808*b1cdbd2cSJim Jagielski else
5809*b1cdbd2cSJim Jagielski nRealControlType = CONST_CTUnknown;
5810*b1cdbd2cSJim Jagielski
5811*b1cdbd2cSJim Jagielski switch( nMethodId )
5812*b1cdbd2cSJim Jagielski {
5813*b1cdbd2cSJim Jagielski case M_AnimateMouse :
5814*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteOben);
5815*b1cdbd2cSJim Jagielski break;
5816*b1cdbd2cSJim Jagielski default:
5817*b1cdbd2cSJim Jagielski switch( nRealControlType )
5818*b1cdbd2cSJim Jagielski {
5819*b1cdbd2cSJim Jagielski case CONST_CTBrowseBox:
5820*b1cdbd2cSJim Jagielski {
5821*b1cdbd2cSJim Jagielski EditBrowseBox* pEBBox = dynamic_cast< EditBrowseBox* >(pControl);
5822*b1cdbd2cSJim Jagielski switch( nMethodId )
5823*b1cdbd2cSJim Jagielski {
5824*b1cdbd2cSJim Jagielski
5825*b1cdbd2cSJim Jagielski
5826*b1cdbd2cSJim Jagielski /*
5827*b1cdbd2cSJim Jagielski
5828*b1cdbd2cSJim Jagielski
5829*b1cdbd2cSJim Jagielski sal_Bool MakeFieldVisible( long nRow, sal_uInt16 nColId, sal_Bool bComplete = sal_False );
5830*b1cdbd2cSJim Jagielski // access to dynamic values of cursor row
5831*b1cdbd2cSJim Jagielski String GetColumnTitle( sal_uInt16 nColumnId ) const;
5832*b1cdbd2cSJim Jagielski sal_uInt16 GetColumnId( sal_uInt16 nPos ) const;
5833*b1cdbd2cSJim Jagielski sal_uInt16 GetColumnPos( sal_uInt16 nColumnId ) const;
5834*b1cdbd2cSJim Jagielski // access and movement of cursor
5835*b1cdbd2cSJim Jagielski long GetCurRow() const { return nCurRow; }
5836*b1cdbd2cSJim Jagielski sal_uInt16 GetCurColumnId() const { return nCurColId; }
5837*b1cdbd2cSJim Jagielski sal_Bool GoToRow( long nRow );
5838*b1cdbd2cSJim Jagielski sal_Bool GoToRowAndDoNotModifySelection( long nRow );
5839*b1cdbd2cSJim Jagielski sal_Bool GoToColumnId( sal_uInt16 nColId );
5840*b1cdbd2cSJim Jagielski sal_Bool GoToRowColumnId( long nRow, sal_uInt16 nColId );
5841*b1cdbd2cSJim Jagielski // selections
5842*b1cdbd2cSJim Jagielski void SetNoSelection();
5843*b1cdbd2cSJim Jagielski void SelectAll();
5844*b1cdbd2cSJim Jagielski void SelectRow( long nRow, sal_Bool bSelect = sal_True, sal_Bool bExpand = sal_True );
5845*b1cdbd2cSJim Jagielski void SelectColumnPos( sal_uInt16 nCol, sal_Bool bSelect = sal_True )
5846*b1cdbd2cSJim Jagielski { SelectColumnPos( nCol, bSelect, sal_True); }
5847*b1cdbd2cSJim Jagielski void SelectColumnId( sal_uInt16 nColId, sal_Bool bSelect = sal_True )
5848*b1cdbd2cSJim Jagielski { SelectColumnPos( GetColumnPos(nColId), bSelect, sal_True); }
5849*b1cdbd2cSJim Jagielski long GetSelectRowCount() const;
5850*b1cdbd2cSJim Jagielski sal_uInt16 GetSelectColumnCount() const;
5851*b1cdbd2cSJim Jagielski sal_Bool IsRowSelected( long nRow ) const;
5852*b1cdbd2cSJim Jagielski sal_Bool IsColumnSelected( sal_uInt16 nColumnId ) const;
5853*b1cdbd2cSJim Jagielski long FirstSelectedRow( sal_Bool bInverse = sal_False );
5854*b1cdbd2cSJim Jagielski long LastSelectedRow( sal_Bool bInverse = sal_False );
5855*b1cdbd2cSJim Jagielski long PrevSelectedRow();
5856*b1cdbd2cSJim Jagielski long NextSelectedRow();
5857*b1cdbd2cSJim Jagielski const MultiSelection* GetSelection() const
5858*b1cdbd2cSJim Jagielski { return bMultiSelection ? uRow.pSel : 0; }
5859*b1cdbd2cSJim Jagielski void SetSelection( const MultiSelection &rSelection );
5860*b1cdbd2cSJim Jagielski
5861*b1cdbd2cSJim Jagielski virtual String GetCellText(long _nRow, sal_uInt16 _nColId) const;
5862*b1cdbd2cSJim Jagielski sal_uInt16 GetColumnCount() const { return ColCount(); }
5863*b1cdbd2cSJim Jagielski protected:
5864*b1cdbd2cSJim Jagielski virtual long GetRowCount() const;
5865*b1cdbd2cSJim Jagielski
5866*b1cdbd2cSJim Jagielski
5867*b1cdbd2cSJim Jagielski EditBrowseBox
5868*b1cdbd2cSJim Jagielski
5869*b1cdbd2cSJim Jagielski sal_Bool IsEditing() const {return aController.Is();}
5870*b1cdbd2cSJim Jagielski void InvalidateStatusCell(long nRow) {RowModified(nRow, 0);}
5871*b1cdbd2cSJim Jagielski void InvalidateHandleColumn();
5872*b1cdbd2cSJim Jagielski
5873*b1cdbd2cSJim Jagielski CellControllerRef Controller() const { return aController; }
5874*b1cdbd2cSJim Jagielski sal_Int32 GetBrowserFlags() const { return m_nBrowserFlags; }
5875*b1cdbd2cSJim Jagielski
5876*b1cdbd2cSJim Jagielski virtual void ActivateCell(long nRow, sal_uInt16 nCol, sal_Bool bSetCellFocus = sal_True);
5877*b1cdbd2cSJim Jagielski virtual void DeactivateCell(sal_Bool bUpdate = sal_True);
5878*b1cdbd2cSJim Jagielski
5879*b1cdbd2cSJim Jagielski
5880*b1cdbd2cSJim Jagielski
5881*b1cdbd2cSJim Jagielski */
5882*b1cdbd2cSJim Jagielski case M_GetSelText :
5883*b1cdbd2cSJim Jagielski {
5884*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pEBBox->GetCellText( pEBBox->GetCurrRow(), pEBBox->GetColumnId( pEBBox->GetCurrColumn() )));
5885*b1cdbd2cSJim Jagielski }
5886*b1cdbd2cSJim Jagielski break;
5887*b1cdbd2cSJim Jagielski case M_GetColumnCount :
5888*b1cdbd2cSJim Jagielski {
5889*b1cdbd2cSJim Jagielski sal_uInt16 nColCount = pEBBox->GetColumnCount();
5890*b1cdbd2cSJim Jagielski comm_USHORT nUnfrozenColCount = 0;
5891*b1cdbd2cSJim Jagielski sal_uInt16 i;
5892*b1cdbd2cSJim Jagielski for ( i=0 ; i < nColCount ; i++ )
5893*b1cdbd2cSJim Jagielski {
5894*b1cdbd2cSJim Jagielski if ( !pEBBox->IsFrozen( pEBBox->GetColumnId( i ) ) )
5895*b1cdbd2cSJim Jagielski nUnfrozenColCount++;
5896*b1cdbd2cSJim Jagielski }
5897*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, nUnfrozenColCount );
5898*b1cdbd2cSJim Jagielski }
5899*b1cdbd2cSJim Jagielski break;
5900*b1cdbd2cSJim Jagielski case M_GetRowCount :
5901*b1cdbd2cSJim Jagielski {
5902*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pEBBox->GetRowCount() );
5903*b1cdbd2cSJim Jagielski }
5904*b1cdbd2cSJim Jagielski break;
5905*b1cdbd2cSJim Jagielski case M_IsEditing :
5906*b1cdbd2cSJim Jagielski {
5907*b1cdbd2cSJim Jagielski CellControllerRef aControler;
5908*b1cdbd2cSJim Jagielski aControler = pEBBox->Controller();
5909*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)aControler.Is() );
5910*b1cdbd2cSJim Jagielski }
5911*b1cdbd2cSJim Jagielski break;
5912*b1cdbd2cSJim Jagielski case M_Select :
5913*b1cdbd2cSJim Jagielski {
5914*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,pEBBox->GetRowCount() ) )
5915*b1cdbd2cSJim Jagielski {
5916*b1cdbd2cSJim Jagielski sal_uInt16 nColCount = pEBBox->GetColumnCount();
5917*b1cdbd2cSJim Jagielski comm_USHORT nUnfrozenColCount = 0;
5918*b1cdbd2cSJim Jagielski sal_uInt16 i;
5919*b1cdbd2cSJim Jagielski for ( i=0 ; i < nColCount ; i++ )
5920*b1cdbd2cSJim Jagielski {
5921*b1cdbd2cSJim Jagielski if ( !pEBBox->IsFrozen( pEBBox->GetColumnId( i ) ) )
5922*b1cdbd2cSJim Jagielski nUnfrozenColCount++;
5923*b1cdbd2cSJim Jagielski }
5924*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr2,nUnfrozenColCount ) )
5925*b1cdbd2cSJim Jagielski pEBBox->GoToRowColumnId( nNr1-1, pEBBox->GetColumnId( nNr2 ) );
5926*b1cdbd2cSJim Jagielski }
5927*b1cdbd2cSJim Jagielski }
5928*b1cdbd2cSJim Jagielski break;
5929*b1cdbd2cSJim Jagielski
5930*b1cdbd2cSJim Jagielski
5931*b1cdbd2cSJim Jagielski
5932*b1cdbd2cSJim Jagielski /*
5933*b1cdbd2cSJim Jagielski case M_GetSelCount :
5934*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((SvLBox*)pControl)->GetSelectionCount()));
5935*b1cdbd2cSJim Jagielski break;
5936*b1cdbd2cSJim Jagielski case M_GetSelIndex :
5937*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
5938*b1cdbd2cSJim Jagielski nNr1 = 1;
5939*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, CUniString("GetSelIndex"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
5940*b1cdbd2cSJim Jagielski {
5941*b1cdbd2cSJim Jagielski nNr1--;
5942*b1cdbd2cSJim Jagielski COUNT_LBOX( FirstSelected, NextSelected, nNr1);
5943*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( ((SvTreeListBox*)pControl)->GetVisiblePos( pThisEntry )) +1 );
5944*b1cdbd2cSJim Jagielski }
5945*b1cdbd2cSJim Jagielski break;
5946*b1cdbd2cSJim Jagielski case M_GetSelText :
5947*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
5948*b1cdbd2cSJim Jagielski nNr1 = 1;
5949*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, CUniString("GetSelText"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
5950*b1cdbd2cSJim Jagielski {
5951*b1cdbd2cSJim Jagielski nNr1--;
5952*b1cdbd2cSJim Jagielski COUNT_LBOX( FirstSelected, NextSelected, nNr1);
5953*b1cdbd2cSJim Jagielski GetFirstValidTextItem( pThisEntry );
5954*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
5955*b1cdbd2cSJim Jagielski }
5956*b1cdbd2cSJim Jagielski break;
5957*b1cdbd2cSJim Jagielski case M_GetItemCount :
5958*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(((SvLBox*)pControl)->GetVisibleCount()) );
5959*b1cdbd2cSJim Jagielski break;
5960*b1cdbd2cSJim Jagielski case M_GetItemText :
5961*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
5962*b1cdbd2cSJim Jagielski {
5963*b1cdbd2cSJim Jagielski SvLBoxEntry *pEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
5964*b1cdbd2cSJim Jagielski GetFirstValidTextItem( pEntry );
5965*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
5966*b1cdbd2cSJim Jagielski }
5967*b1cdbd2cSJim Jagielski break;
5968*b1cdbd2cSJim Jagielski case M_Select :
5969*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_BOOL_1) )
5970*b1cdbd2cSJim Jagielski bBool1 = sal_True;
5971*b1cdbd2cSJim Jagielski if( nParams & PARAM_STR_1 )
5972*b1cdbd2cSJim Jagielski {
5973*b1cdbd2cSJim Jagielski / * ListBox *pLB = ((ListBox*)pControl);
5974*b1cdbd2cSJim Jagielski if ( pLB->GetEntryPos( aString1 ) == LISTBOX_ENTRY_NOTFOUND )
5975*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
5976*b1cdbd2cSJim Jagielski else
5977*b1cdbd2cSJim Jagielski {
5978*b1cdbd2cSJim Jagielski pLB->SelectEntry( aString1, bBool1 );
5979*b1cdbd2cSJim Jagielski if ( pLB->IsEntrySelected( aString1 ) ? !bBool1 : bBool1 ) // XOR rein mit BOOL
5980*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_METHOD_FAILED, MethodString( nMethodId ), aString1 ) );
5981*b1cdbd2cSJim Jagielski }
5982*b1cdbd2cSJim Jagielski * / ReportError( aUId, GEN_RES_STR1( S_SELECT_DESELECT_VIA_STRING_NOT_IMPLEMENTED, MethodString( nMethodId ) ) );
5983*b1cdbd2cSJim Jagielski }
5984*b1cdbd2cSJim Jagielski else
5985*b1cdbd2cSJim Jagielski {
5986*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,((SvLBox*)pControl)->GetVisibleCount()) )
5987*b1cdbd2cSJim Jagielski {
5988*b1cdbd2cSJim Jagielski SvLBoxEntry *pEntry = (SvLBoxEntry*)((SvTreeListBox*)pControl)->GetEntryAtVisPos( nNr1-1 );
5989*b1cdbd2cSJim Jagielski ((SvTreeListBox*)pControl)->Select ( pEntry, bBool1 );
5990*b1cdbd2cSJim Jagielski }
5991*b1cdbd2cSJim Jagielski }
5992*b1cdbd2cSJim Jagielski break;*/
5993*b1cdbd2cSJim Jagielski default:
5994*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "EditBrowseBox" ) );
5995*b1cdbd2cSJim Jagielski break;
5996*b1cdbd2cSJim Jagielski }
5997*b1cdbd2cSJim Jagielski }
5998*b1cdbd2cSJim Jagielski break;
5999*b1cdbd2cSJim Jagielski case CONST_CTValueSet:
6000*b1cdbd2cSJim Jagielski {
6001*b1cdbd2cSJim Jagielski ValueSet *pVS = dynamic_cast< ValueSet* >(pControl);
6002*b1cdbd2cSJim Jagielski switch ( nMethodId )
6003*b1cdbd2cSJim Jagielski {
6004*b1cdbd2cSJim Jagielski case M_GetItemCount:
6005*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pVS->GetItemCount()));
6006*b1cdbd2cSJim Jagielski break;
6007*b1cdbd2cSJim Jagielski case M_GetItemText:
6008*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pVS->GetItemCount() ))
6009*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pVS->GetItemText( pVS->GetItemId( nNr1-1 ) ) );
6010*b1cdbd2cSJim Jagielski break;
6011*b1cdbd2cSJim Jagielski case M_Select:
6012*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pVS->GetItemCount() ))
6013*b1cdbd2cSJim Jagielski pVS->SelectItem( pVS->GetItemId( nNr1-1 ) );
6014*b1cdbd2cSJim Jagielski break;
6015*b1cdbd2cSJim Jagielski case M_GetSelIndex :
6016*b1cdbd2cSJim Jagielski if ( pVS->IsNoSelection() )
6017*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(0));
6018*b1cdbd2cSJim Jagielski else
6019*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pVS->GetItemPos( pVS->GetSelectItemId() ) +1));
6020*b1cdbd2cSJim Jagielski break;
6021*b1cdbd2cSJim Jagielski case M_GetSelText :
6022*b1cdbd2cSJim Jagielski if ( pVS->IsNoSelection() )
6023*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, String() );
6024*b1cdbd2cSJim Jagielski else
6025*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pVS->GetItemText( pVS->GetSelectItemId() ) );
6026*b1cdbd2cSJim Jagielski break;
6027*b1cdbd2cSJim Jagielski case M_SetNoSelection :
6028*b1cdbd2cSJim Jagielski pVS->SetNoSelection();
6029*b1cdbd2cSJim Jagielski break;
6030*b1cdbd2cSJim Jagielski default:
6031*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "ValueSet" ) );
6032*b1cdbd2cSJim Jagielski break;
6033*b1cdbd2cSJim Jagielski }
6034*b1cdbd2cSJim Jagielski }
6035*b1cdbd2cSJim Jagielski break;
6036*b1cdbd2cSJim Jagielski case CONST_CTORoadmap:
6037*b1cdbd2cSJim Jagielski {
6038*b1cdbd2cSJim Jagielski ORoadmap *pRM = dynamic_cast< ORoadmap* >(pControl);
6039*b1cdbd2cSJim Jagielski switch ( nMethodId )
6040*b1cdbd2cSJim Jagielski {
6041*b1cdbd2cSJim Jagielski case M_GetItemCount:
6042*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pRM->GetItemCount()));
6043*b1cdbd2cSJim Jagielski break;
6044*b1cdbd2cSJim Jagielski case M_GetItemText:
6045*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pRM->GetItemCount() ))
6046*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pRM->GetRoadmapItemLabel( pRM->GetItemID( nNr1-1 ) ) );
6047*b1cdbd2cSJim Jagielski break;
6048*b1cdbd2cSJim Jagielski case M_Select:
6049*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pRM->GetItemCount() ))
6050*b1cdbd2cSJim Jagielski {
6051*b1cdbd2cSJim Jagielski if ( pRM->IsRoadmapItemEnabled( pRM->GetItemID( nNr1-1 ) ) )
6052*b1cdbd2cSJim Jagielski pRM->SelectRoadmapItemByID( pRM->GetItemID( nNr1-1 ) );
6053*b1cdbd2cSJim Jagielski else
6054*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1c( S_WIN_DISABLED, "RoadmapItem" ) );
6055*b1cdbd2cSJim Jagielski }
6056*b1cdbd2cSJim Jagielski break;
6057*b1cdbd2cSJim Jagielski case M_GetSelIndex :
6058*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pRM->GetItemIndex( pRM->GetCurrentRoadmapItemID() ) +1));
6059*b1cdbd2cSJim Jagielski break;
6060*b1cdbd2cSJim Jagielski case M_GetSelText :
6061*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pRM->GetRoadmapItemLabel( pRM->GetCurrentRoadmapItemID() ) );
6062*b1cdbd2cSJim Jagielski break;
6063*b1cdbd2cSJim Jagielski case M_IsItemEnabled :
6064*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pRM->GetItemCount() ))
6065*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)pRM->IsRoadmapItemEnabled( pRM->GetItemID( nNr1-1 ) ) );
6066*b1cdbd2cSJim Jagielski break;
6067*b1cdbd2cSJim Jagielski default:
6068*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "RoadMap" ) );
6069*b1cdbd2cSJim Jagielski break;
6070*b1cdbd2cSJim Jagielski }
6071*b1cdbd2cSJim Jagielski }
6072*b1cdbd2cSJim Jagielski break;
6073*b1cdbd2cSJim Jagielski case CONST_CTIExtensionListBox:
6074*b1cdbd2cSJim Jagielski {
6075*b1cdbd2cSJim Jagielski IExtensionListBox *pELB = dynamic_cast< IExtensionListBox* >(pControl);
6076*b1cdbd2cSJim Jagielski switch ( nMethodId )
6077*b1cdbd2cSJim Jagielski {
6078*b1cdbd2cSJim Jagielski case M_GetItemCount:
6079*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pELB->getItemCount()));
6080*b1cdbd2cSJim Jagielski break;
6081*b1cdbd2cSJim Jagielski case M_GetItemText:
6082*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pELB->getItemCount() ))
6083*b1cdbd2cSJim Jagielski switch ( nNr2 )
6084*b1cdbd2cSJim Jagielski {
6085*b1cdbd2cSJim Jagielski case 1:
6086*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pELB->getItemName( nNr1 -1 ) );
6087*b1cdbd2cSJim Jagielski break;
6088*b1cdbd2cSJim Jagielski case 2:
6089*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pELB->getItemVersion( nNr1 -1 ) );
6090*b1cdbd2cSJim Jagielski break;
6091*b1cdbd2cSJim Jagielski case 3:
6092*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pELB->getItemDescription( nNr1 -1 ) );
6093*b1cdbd2cSJim Jagielski break;
6094*b1cdbd2cSJim Jagielski case 4:
6095*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pELB->getItemPublisher( nNr1 -1 ) );
6096*b1cdbd2cSJim Jagielski break;
6097*b1cdbd2cSJim Jagielski case 5:
6098*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pELB->getItemPublisherLink( nNr1 -1 ) );
6099*b1cdbd2cSJim Jagielski break;
6100*b1cdbd2cSJim Jagielski default:
6101*b1cdbd2cSJim Jagielski ValueOK( aUId, MethodString( nMethodId ).AppendAscii(" String Number"), nNr2, 5 );
6102*b1cdbd2cSJim Jagielski }
6103*b1cdbd2cSJim Jagielski break;
6104*b1cdbd2cSJim Jagielski case M_Select:
6105*b1cdbd2cSJim Jagielski if ( (nParams & PARAM_USHORT_1) )
6106*b1cdbd2cSJim Jagielski {
6107*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pELB->getItemCount() ))
6108*b1cdbd2cSJim Jagielski {
6109*b1cdbd2cSJim Jagielski pELB->select( nNr1-1 );
6110*b1cdbd2cSJim Jagielski }
6111*b1cdbd2cSJim Jagielski }
6112*b1cdbd2cSJim Jagielski else if ( (nParams & PARAM_STR_1) )
6113*b1cdbd2cSJim Jagielski {
6114*b1cdbd2cSJim Jagielski pELB->select( aString1 );
6115*b1cdbd2cSJim Jagielski sal_Bool bSuccess = sal_True;
6116*b1cdbd2cSJim Jagielski if ( pELB->getSelIndex() == EXTENSION_LISTBOX_ENTRY_NOTFOUND )
6117*b1cdbd2cSJim Jagielski bSuccess = sal_False;
6118*b1cdbd2cSJim Jagielski else
6119*b1cdbd2cSJim Jagielski {
6120*b1cdbd2cSJim Jagielski if ( !aString1.Equals( String( pELB->getItemName( pELB->getSelIndex() ) ) ) )
6121*b1cdbd2cSJim Jagielski bSuccess = sal_False;
6122*b1cdbd2cSJim Jagielski }
6123*b1cdbd2cSJim Jagielski if ( !bSuccess )
6124*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_ENTRY_NOT_FOUND, MethodString( nMethodId ), aString1 ) );
6125*b1cdbd2cSJim Jagielski }
6126*b1cdbd2cSJim Jagielski break;
6127*b1cdbd2cSJim Jagielski case M_GetSelCount :
6128*b1cdbd2cSJim Jagielski if ( pELB->getSelIndex() == EXTENSION_LISTBOX_ENTRY_NOTFOUND )
6129*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( 0 ));
6130*b1cdbd2cSJim Jagielski else
6131*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( 1 ));
6132*b1cdbd2cSJim Jagielski break;
6133*b1cdbd2cSJim Jagielski case M_GetSelIndex :
6134*b1cdbd2cSJim Jagielski if ( pELB->getSelIndex() == EXTENSION_LISTBOX_ENTRY_NOTFOUND )
6135*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( 0 ));
6136*b1cdbd2cSJim Jagielski else
6137*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG( pELB->getSelIndex() +1));
6138*b1cdbd2cSJim Jagielski break;
6139*b1cdbd2cSJim Jagielski /* xxxcase M_SetNoSelection :
6140*b1cdbd2cSJim Jagielski ((ListBox*)pControl)->SetNoSelection();
6141*b1cdbd2cSJim Jagielski ((ListBox*)pControl)->Select();
6142*b1cdbd2cSJim Jagielski break; */
6143*b1cdbd2cSJim Jagielski default:
6144*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "RoadMap" ) );
6145*b1cdbd2cSJim Jagielski break;
6146*b1cdbd2cSJim Jagielski }
6147*b1cdbd2cSJim Jagielski }
6148*b1cdbd2cSJim Jagielski break;
6149*b1cdbd2cSJim Jagielski
6150*b1cdbd2cSJim Jagielski case CONST_CTTableControl:
6151*b1cdbd2cSJim Jagielski {
6152*b1cdbd2cSJim Jagielski ::svt::table::TableControl *pTC = dynamic_cast< ::svt::table::TableControl* >(pControl);
6153*b1cdbd2cSJim Jagielski switch ( nMethodId )
6154*b1cdbd2cSJim Jagielski {
6155*b1cdbd2cSJim Jagielski case M_GetItemType :
6156*b1cdbd2cSJim Jagielski {
6157*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pTC->GetColumnCount() ) &&
6158*b1cdbd2cSJim Jagielski ValueOK( aUId, MethodString( nMethodId ), nNr2, pTC->GetRowCount() ))
6159*b1cdbd2cSJim Jagielski {
6160*b1cdbd2cSJim Jagielski ::svt::table::PTableModel pModel = pTC->GetModel();
6161*b1cdbd2cSJim Jagielski Any aCell;
6162*b1cdbd2cSJim Jagielski pModel->getCellContent( nNr1-1, nNr2-1, aCell );
6163*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, String( aCell.getValueTypeName() ));
6164*b1cdbd2cSJim Jagielski }
6165*b1cdbd2cSJim Jagielski }
6166*b1cdbd2cSJim Jagielski break;
6167*b1cdbd2cSJim Jagielski case M_GetItemText :
6168*b1cdbd2cSJim Jagielski {
6169*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pTC->GetColumnCount() ) &&
6170*b1cdbd2cSJim Jagielski ValueOK( aUId, MethodString( nMethodId ), nNr2, pTC->GetRowCount() ))
6171*b1cdbd2cSJim Jagielski {
6172*b1cdbd2cSJim Jagielski ::svt::table::PTableModel pModel = pTC->GetModel();
6173*b1cdbd2cSJim Jagielski Any aCell;
6174*b1cdbd2cSJim Jagielski pModel->getCellContent( nNr1-1, nNr2-1, aCell );
6175*b1cdbd2cSJim Jagielski /* doesn't work ATM since it gets casted to SbxDATE in VCLTestTool unfortunately
6176*b1cdbd2cSJim Jagielski SbxVariableRef xRes = new SbxVariable( SbxVARIANT );
6177*b1cdbd2cSJim Jagielski unoToSbxValue( xRes, aCell );
6178*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, *xRes );*/
6179*b1cdbd2cSJim Jagielski
6180*b1cdbd2cSJim Jagielski Type aType = aCell.getValueType();
6181*b1cdbd2cSJim Jagielski TypeClass eTypeClass = aType.getTypeClass();
6182*b1cdbd2cSJim Jagielski switch( eTypeClass )
6183*b1cdbd2cSJim Jagielski {
6184*b1cdbd2cSJim Jagielski /*case TypeClass_ENUM:
6185*b1cdbd2cSJim Jagielski {
6186*b1cdbd2cSJim Jagielski sal_Int32 nEnum = 0;
6187*b1cdbd2cSJim Jagielski enum2int( nEnum, aValue );
6188*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)nEnum );
6189*b1cdbd2cSJim Jagielski }
6190*b1cdbd2cSJim Jagielski break;*/
6191*b1cdbd2cSJim Jagielski case TypeClass_BOOLEAN:
6192*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, *(sal_Bool*)aCell.getValue() );
6193*b1cdbd2cSJim Jagielski break;
6194*b1cdbd2cSJim Jagielski case TypeClass_CHAR:
6195*b1cdbd2cSJim Jagielski {
6196*b1cdbd2cSJim Jagielski ::rtl::OUString aContent( *(sal_Unicode*)aCell.getValue() );
6197*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, aContent );
6198*b1cdbd2cSJim Jagielski }
6199*b1cdbd2cSJim Jagielski break;
6200*b1cdbd2cSJim Jagielski case TypeClass_STRING:
6201*b1cdbd2cSJim Jagielski {
6202*b1cdbd2cSJim Jagielski ::rtl::OUString aContent;
6203*b1cdbd2cSJim Jagielski aCell >>= aContent;
6204*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, aContent );
6205*b1cdbd2cSJim Jagielski }
6206*b1cdbd2cSJim Jagielski break;
6207*b1cdbd2cSJim Jagielski //case TypeClass_FLOAT: break;
6208*b1cdbd2cSJim Jagielski //case TypeClass_DOUBLE: break;
6209*b1cdbd2cSJim Jagielski //case TypeClass_OCTET: break;
6210*b1cdbd2cSJim Jagielski case TypeClass_BYTE:
6211*b1cdbd2cSJim Jagielski case TypeClass_SHORT:
6212*b1cdbd2cSJim Jagielski case TypeClass_LONG:
6213*b1cdbd2cSJim Jagielski case TypeClass_HYPER:
6214*b1cdbd2cSJim Jagielski case TypeClass_UNSIGNED_LONG:
6215*b1cdbd2cSJim Jagielski case TypeClass_UNSIGNED_HYPER:
6216*b1cdbd2cSJim Jagielski {
6217*b1cdbd2cSJim Jagielski comm_ULONG val = 0;
6218*b1cdbd2cSJim Jagielski aCell >>= val;
6219*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, val );
6220*b1cdbd2cSJim Jagielski }
6221*b1cdbd2cSJim Jagielski break;
6222*b1cdbd2cSJim Jagielski //case TypeClass_UNSIGNED_OCTET:break;
6223*b1cdbd2cSJim Jagielski case TypeClass_UNSIGNED_SHORT:
6224*b1cdbd2cSJim Jagielski {
6225*b1cdbd2cSJim Jagielski comm_USHORT val = 0;
6226*b1cdbd2cSJim Jagielski aCell >>= val;
6227*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, val );
6228*b1cdbd2cSJim Jagielski }
6229*b1cdbd2cSJim Jagielski break;
6230*b1cdbd2cSJim Jagielski default:
6231*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_USHORT(0) );
6232*b1cdbd2cSJim Jagielski break;
6233*b1cdbd2cSJim Jagielski }
6234*b1cdbd2cSJim Jagielski }
6235*b1cdbd2cSJim Jagielski }
6236*b1cdbd2cSJim Jagielski break;
6237*b1cdbd2cSJim Jagielski case M_GetColumnCount :
6238*b1cdbd2cSJim Jagielski {
6239*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTC->GetColumnCount() );
6240*b1cdbd2cSJim Jagielski }
6241*b1cdbd2cSJim Jagielski break;
6242*b1cdbd2cSJim Jagielski case M_GetRowCount :
6243*b1cdbd2cSJim Jagielski {
6244*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_ULONG)pTC->GetRowCount() );
6245*b1cdbd2cSJim Jagielski }
6246*b1cdbd2cSJim Jagielski break;
6247*b1cdbd2cSJim Jagielski case M_Select :
6248*b1cdbd2cSJim Jagielski {
6249*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, MethodString( nMethodId ), nNr1, pTC->GetRowCount() ))
6250*b1cdbd2cSJim Jagielski {
6251*b1cdbd2cSJim Jagielski if ( pTC->GoToRow( ::svt::table::RowPos( nNr1-1 ) ) )
6252*b1cdbd2cSJim Jagielski {
6253*b1cdbd2cSJim Jagielski Size aSize( pTC->GetSizePixel() );
6254*b1cdbd2cSJim Jagielski // DirectLog( S_QAError, UniString::CreateFromInt32( aSize.Width() ).Append( UniString::CreateFromInt32( aSize.Height() ) ) );
6255*b1cdbd2cSJim Jagielski Point aPos( aSize.Width() / 2, aSize.Height() / 2 );
6256*b1cdbd2cSJim Jagielski long nStep = aSize.Height() / 4;
6257*b1cdbd2cSJim Jagielski ::svt::table::RowPos nLastPos;
6258*b1cdbd2cSJim Jagielski while ( ( nLastPos = pTC->getTableControlInterface().hitTest( aPos ).nRow ) != nNr1-1 && nStep > 0 )
6259*b1cdbd2cSJim Jagielski {
6260*b1cdbd2cSJim Jagielski if ( nLastPos > nNr1-1 || nLastPos == ROW_INVALID )
6261*b1cdbd2cSJim Jagielski aPos.Y() -= nStep;
6262*b1cdbd2cSJim Jagielski else
6263*b1cdbd2cSJim Jagielski aPos.Y() += nStep;
6264*b1cdbd2cSJim Jagielski nStep /= 2;
6265*b1cdbd2cSJim Jagielski }
6266*b1cdbd2cSJim Jagielski if ( pTC->getTableControlInterface().hitTest( aPos ).nRow == nNr1-1 )
6267*b1cdbd2cSJim Jagielski {
6268*b1cdbd2cSJim Jagielski MouseEvent aMEvnt(aPos,1,MOUSE_SIMPLECLICK|MOUSE_SELECT,MOUSE_LEFT,KEY_MOD1);
6269*b1cdbd2cSJim Jagielski pTC->getSelEngine()->SelMouseButtonDown( aMEvnt );
6270*b1cdbd2cSJim Jagielski pTC->getSelEngine()->SelMouseButtonUp( aMEvnt );
6271*b1cdbd2cSJim Jagielski if ( pTC->IsRowSelected( nNr1-1 ) )
6272*b1cdbd2cSJim Jagielski pTC->Select();
6273*b1cdbd2cSJim Jagielski }
6274*b1cdbd2cSJim Jagielski else
6275*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_METHOD_FAILED, MethodString( nMethodId ), "find pos" ) );
6276*b1cdbd2cSJim Jagielski }
6277*b1cdbd2cSJim Jagielski else
6278*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_METHOD_FAILED, MethodString( nMethodId ), "GoTo" ) );
6279*b1cdbd2cSJim Jagielski }
6280*b1cdbd2cSJim Jagielski }
6281*b1cdbd2cSJim Jagielski break;
6282*b1cdbd2cSJim Jagielski case M_GetSelCount :
6283*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_USHORT( pTC->GetSelectedRowCount() ));
6284*b1cdbd2cSJim Jagielski break;
6285*b1cdbd2cSJim Jagielski case M_GetSelIndex :
6286*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
6287*b1cdbd2cSJim Jagielski nNr1 = 1;
6288*b1cdbd2cSJim Jagielski if ( ValueOK( aUId, CUniString("GetSelIndex"), nNr1, pTC->GetSelectedRowCount() ) )
6289*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_USHORT( pTC->GetSelectedRowIndex( nNr1-1 ) +1 ) );
6290*b1cdbd2cSJim Jagielski break;
6291*b1cdbd2cSJim Jagielski /* case M_GetSelText :
6292*b1cdbd2cSJim Jagielski if ( ! (nParams & PARAM_USHORT_1) )
6293*b1cdbd2cSJim Jagielski nNr1 = 1;
6294*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, CUniString("GetSelText"),nNr1,((SvLBox*)pControl)->GetSelectionCount()) )
6295*b1cdbd2cSJim Jagielski {
6296*b1cdbd2cSJim Jagielski nNr1--;
6297*b1cdbd2cSJim Jagielski COUNT_LBOX( FirstSelected, NextSelected, nNr1);
6298*b1cdbd2cSJim Jagielski GetFirstValidTextItem( pThisEntry );
6299*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pItem->GetText() );
6300*b1cdbd2cSJim Jagielski }
6301*b1cdbd2cSJim Jagielski break;
6302*b1cdbd2cSJim Jagielski */
6303*b1cdbd2cSJim Jagielski default:
6304*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "TableControl" ) );
6305*b1cdbd2cSJim Jagielski break;
6306*b1cdbd2cSJim Jagielski }
6307*b1cdbd2cSJim Jagielski }
6308*b1cdbd2cSJim Jagielski break;
6309*b1cdbd2cSJim Jagielski
6310*b1cdbd2cSJim Jagielski case CONST_CTUnknown:
6311*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_UNKNOWN_TYPE, UniString::CreateFromInt32( nRT ), MethodString(nMethodId) ) );
6312*b1cdbd2cSJim Jagielski break;
6313*b1cdbd2cSJim Jagielski default:
6314*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
6315*b1cdbd2cSJim Jagielski break;
6316*b1cdbd2cSJim Jagielski }
6317*b1cdbd2cSJim Jagielski }
6318*b1cdbd2cSJim Jagielski break;
6319*b1cdbd2cSJim Jagielski }
6320*b1cdbd2cSJim Jagielski case C_Window:
6321*b1cdbd2cSJim Jagielski switch( nMethodId )
6322*b1cdbd2cSJim Jagielski {
6323*b1cdbd2cSJim Jagielski case M_AnimateMouse :
6324*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteOben);
6325*b1cdbd2cSJim Jagielski break;
6326*b1cdbd2cSJim Jagielski default:
6327*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "Window" ) );
6328*b1cdbd2cSJim Jagielski break;
6329*b1cdbd2cSJim Jagielski }
6330*b1cdbd2cSJim Jagielski break;
6331*b1cdbd2cSJim Jagielski
6332*b1cdbd2cSJim Jagielski case C_DockingWin:
6333*b1cdbd2cSJim Jagielski DockingWin:
6334*b1cdbd2cSJim Jagielski switch( nMethodId )
6335*b1cdbd2cSJim Jagielski {
6336*b1cdbd2cSJim Jagielski case M_AnimateMouse :
6337*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteOben);
6338*b1cdbd2cSJim Jagielski break;
6339*b1cdbd2cSJim Jagielski case M_Dock :
6340*b1cdbd2cSJim Jagielski if ( ((DockingWindow*)pControl)->IsFloatingMode() )
6341*b1cdbd2cSJim Jagielski ((DockingWindow*)pControl)->SetFloatingMode(sal_False);
6342*b1cdbd2cSJim Jagielski else
6343*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_ALLOWED_ONLY_IN_FLOATING_MODE, MethodString( nMethodId ) ) );
6344*b1cdbd2cSJim Jagielski break;
6345*b1cdbd2cSJim Jagielski case M_Undock :
6346*b1cdbd2cSJim Jagielski if ( !((DockingWindow*)pControl)->IsFloatingMode() )
6347*b1cdbd2cSJim Jagielski ((DockingWindow*)pControl)->SetFloatingMode(sal_True);
6348*b1cdbd2cSJim Jagielski else
6349*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_ALLOWED_ONLY_IN_FLOATING_MODE, MethodString( nMethodId ) ) );
6350*b1cdbd2cSJim Jagielski break;
6351*b1cdbd2cSJim Jagielski case M_IsDocked :
6352*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL) !((DockingWindow*)pControl)->IsFloatingMode());
6353*b1cdbd2cSJim Jagielski break;
6354*b1cdbd2cSJim Jagielski case M_Close:
6355*b1cdbd2cSJim Jagielski //aWindowWaitUId = aUId;
6356*b1cdbd2cSJim Jagielski DBG_ASSERT( aUId.equals( pControl->GetUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
6357*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6358*b1cdbd2cSJim Jagielski ((DockingWindow*)pControl)->Close();
6359*b1cdbd2cSJim Jagielski break;
6360*b1cdbd2cSJim Jagielski case M_Size:
6361*b1cdbd2cSJim Jagielski case M_Move:
6362*b1cdbd2cSJim Jagielski case M_IsMax:
6363*b1cdbd2cSJim Jagielski case M_Minimize:
6364*b1cdbd2cSJim Jagielski case M_Maximize:
6365*b1cdbd2cSJim Jagielski if ( ((DockingWindow*)pControl)->IsFloatingMode() )
6366*b1cdbd2cSJim Jagielski {
6367*b1cdbd2cSJim Jagielski Window* pFloat = ((DockingWindow*)pControl)->GetFloatingWindow();
6368*b1cdbd2cSJim Jagielski if ( !pFloat && ((DockingWindow*)pControl)->IsFloatingMode() )
6369*b1cdbd2cSJim Jagielski {
6370*b1cdbd2cSJim Jagielski if ( pControl->GET_REAL_PARENT() && pControl->GET_REAL_PARENT()->GetType() == WINDOW_FLOATINGWINDOW )
6371*b1cdbd2cSJim Jagielski pFloat = pControl->GET_REAL_PARENT();
6372*b1cdbd2cSJim Jagielski else
6373*b1cdbd2cSJim Jagielski {
6374*b1cdbd2cSJim Jagielski DBG_ERROR("FloatingMode set but Parent is no FloatingWindow");
6375*b1cdbd2cSJim Jagielski }
6376*b1cdbd2cSJim Jagielski }
6377*b1cdbd2cSJim Jagielski if ( pFloat && pFloat->GetType() == WINDOW_FLOATINGWINDOW )
6378*b1cdbd2cSJim Jagielski {
6379*b1cdbd2cSJim Jagielski pControl = pFloat;
6380*b1cdbd2cSJim Jagielski goto FloatWin;
6381*b1cdbd2cSJim Jagielski }
6382*b1cdbd2cSJim Jagielski else
6383*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_CANNOT_FIND_FLOATING_WIN, MethodString( nMethodId ) ) );
6384*b1cdbd2cSJim Jagielski }
6385*b1cdbd2cSJim Jagielski else
6386*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_ALLOWED_ONLY_IN_DOCKING_MODE, MethodString( nMethodId ) ) );
6387*b1cdbd2cSJim Jagielski break;
6388*b1cdbd2cSJim Jagielski case M_Help: // Alles was unten weiterbehandelt werden soll
6389*b1cdbd2cSJim Jagielski goto MoreDialog;
6390*b1cdbd2cSJim Jagielski
6391*b1cdbd2cSJim Jagielski default:
6392*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "DockingWindow" ) );
6393*b1cdbd2cSJim Jagielski break;
6394*b1cdbd2cSJim Jagielski }
6395*b1cdbd2cSJim Jagielski break;
6396*b1cdbd2cSJim Jagielski case C_FloatWin:
6397*b1cdbd2cSJim Jagielski FloatWin:
6398*b1cdbd2cSJim Jagielski switch( nMethodId )
6399*b1cdbd2cSJim Jagielski {
6400*b1cdbd2cSJim Jagielski case M_AnimateMouse :
6401*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteOben);
6402*b1cdbd2cSJim Jagielski break;
6403*b1cdbd2cSJim Jagielski case M_IsMax :
6404*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, (comm_BOOL)!((FloatingWindow*)pControl)->IsRollUp());
6405*b1cdbd2cSJim Jagielski break;
6406*b1cdbd2cSJim Jagielski case M_Minimize :
6407*b1cdbd2cSJim Jagielski ((FloatingWindow*)pControl)->RollUp();
6408*b1cdbd2cSJim Jagielski break;
6409*b1cdbd2cSJim Jagielski case M_Maximize :
6410*b1cdbd2cSJim Jagielski ((FloatingWindow*)pControl)->RollDown();
6411*b1cdbd2cSJim Jagielski break;
6412*b1cdbd2cSJim Jagielski case M_Size:
6413*b1cdbd2cSJim Jagielski {
6414*b1cdbd2cSJim Jagielski if ( pControl->GetStyle() & WB_SIZEABLE )
6415*b1cdbd2cSJim Jagielski {
6416*b1cdbd2cSJim Jagielski Size aMin = ((FloatingWindow*)pControl)->GetMinOutputSizePixel();
6417*b1cdbd2cSJim Jagielski if ( aMin.Width() <= nNr1 && aMin.Height() <= nNr2 )
6418*b1cdbd2cSJim Jagielski {
6419*b1cdbd2cSJim Jagielski pControl->SetSizePixel(Size(nNr1,nNr2));
6420*b1cdbd2cSJim Jagielski pControl->Resize();
6421*b1cdbd2cSJim Jagielski }
6422*b1cdbd2cSJim Jagielski else
6423*b1cdbd2cSJim Jagielski {
6424*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_SIZE_BELOW_MINIMUM, String::CreateFromInt32( aMin.Width() ), String::CreateFromInt32( aMin.Height() ) ) );
6425*b1cdbd2cSJim Jagielski }
6426*b1cdbd2cSJim Jagielski }
6427*b1cdbd2cSJim Jagielski else
6428*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_SIZE_NOT_CHANGEABLE, MethodString( nMethodId ) ) );
6429*b1cdbd2cSJim Jagielski break;
6430*b1cdbd2cSJim Jagielski }
6431*b1cdbd2cSJim Jagielski case M_Close:
6432*b1cdbd2cSJim Jagielski DBG_ASSERT( aUId.equals( pControl->GetUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
6433*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6434*b1cdbd2cSJim Jagielski ((FloatingWindow*)pControl)->Close();
6435*b1cdbd2cSJim Jagielski break;
6436*b1cdbd2cSJim Jagielski case M_Help: // Alles was unten weiterbehandelt werden soll
6437*b1cdbd2cSJim Jagielski case M_Move:
6438*b1cdbd2cSJim Jagielski goto MoreDialog;
6439*b1cdbd2cSJim Jagielski default:
6440*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "FloatingWin" ) );
6441*b1cdbd2cSJim Jagielski break;
6442*b1cdbd2cSJim Jagielski }
6443*b1cdbd2cSJim Jagielski break;
6444*b1cdbd2cSJim Jagielski case C_ModelessDlg:
6445*b1cdbd2cSJim Jagielski case C_ModalDlg:
6446*b1cdbd2cSJim Jagielski case C_Dialog:
6447*b1cdbd2cSJim Jagielski case C_TabDlg:
6448*b1cdbd2cSJim Jagielski MoreDialog:
6449*b1cdbd2cSJim Jagielski switch( nMethodId )
6450*b1cdbd2cSJim Jagielski {
6451*b1cdbd2cSJim Jagielski case M_AnimateMouse :
6452*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteOben);
6453*b1cdbd2cSJim Jagielski break;
6454*b1cdbd2cSJim Jagielski case M_Close:
6455*b1cdbd2cSJim Jagielski DBG_ASSERT( aUId.equals( pControl->GetUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
6456*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6457*b1cdbd2cSJim Jagielski ((SystemWindow*)pControl)->Close();
6458*b1cdbd2cSJim Jagielski break;
6459*b1cdbd2cSJim Jagielski case M_OK:
6460*b1cdbd2cSJim Jagielski {
6461*b1cdbd2cSJim Jagielski Window *pChild = GetWinByRT( pControl, WINDOW_OKBUTTON );
6462*b1cdbd2cSJim Jagielski if( ControlOK( pChild, "OK Button" ) )
6463*b1cdbd2cSJim Jagielski {
6464*b1cdbd2cSJim Jagielski DBG_ASSERT( aUId.equals( pControl->GetUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
6465*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6466*b1cdbd2cSJim Jagielski ((Button*)pChild)->Click();
6467*b1cdbd2cSJim Jagielski }
6468*b1cdbd2cSJim Jagielski break;
6469*b1cdbd2cSJim Jagielski }
6470*b1cdbd2cSJim Jagielski case M_Cancel:
6471*b1cdbd2cSJim Jagielski {
6472*b1cdbd2cSJim Jagielski Window *pChild = GetWinByRT( pControl, WINDOW_CANCELBUTTON );
6473*b1cdbd2cSJim Jagielski if( ControlOK( pChild, "Cancel Button" ) )
6474*b1cdbd2cSJim Jagielski {
6475*b1cdbd2cSJim Jagielski DBG_ASSERT( aUId.equals( pControl->GetUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
6476*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6477*b1cdbd2cSJim Jagielski ((Button*)pChild)->Click();
6478*b1cdbd2cSJim Jagielski }
6479*b1cdbd2cSJim Jagielski break;
6480*b1cdbd2cSJim Jagielski }
6481*b1cdbd2cSJim Jagielski case M_Help:
6482*b1cdbd2cSJim Jagielski {
6483*b1cdbd2cSJim Jagielski Window *pChild = GetWinByRT( pControl, WINDOW_HELPBUTTON );
6484*b1cdbd2cSJim Jagielski if( ControlOK( pChild, "Help Button" ) )
6485*b1cdbd2cSJim Jagielski ((Button*)pChild)->Click();
6486*b1cdbd2cSJim Jagielski break;
6487*b1cdbd2cSJim Jagielski }
6488*b1cdbd2cSJim Jagielski case M_Default:
6489*b1cdbd2cSJim Jagielski {
6490*b1cdbd2cSJim Jagielski Window *pChild = ImpGetButton( pControl, WB_DEFBUTTON, WB_DEFBUTTON );
6491*b1cdbd2cSJim Jagielski if( ControlOK( pChild, "Default Button" ) )
6492*b1cdbd2cSJim Jagielski ((Button*)pChild)->Click();
6493*b1cdbd2cSJim Jagielski break;
6494*b1cdbd2cSJim Jagielski }
6495*b1cdbd2cSJim Jagielski case M_Move:
6496*b1cdbd2cSJim Jagielski {
6497*b1cdbd2cSJim Jagielski pControl->SetPosPixel(Point(nNr1,nNr2));
6498*b1cdbd2cSJim Jagielski break;
6499*b1cdbd2cSJim Jagielski }
6500*b1cdbd2cSJim Jagielski default:
6501*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "Dialog" ) );
6502*b1cdbd2cSJim Jagielski break;
6503*b1cdbd2cSJim Jagielski }
6504*b1cdbd2cSJim Jagielski break;
6505*b1cdbd2cSJim Jagielski case C_WorkWin:
6506*b1cdbd2cSJim Jagielski switch( nMethodId )
6507*b1cdbd2cSJim Jagielski {
6508*b1cdbd2cSJim Jagielski case M_AnimateMouse :
6509*b1cdbd2cSJim Jagielski AnimateMouse( pControl, MitteOben);
6510*b1cdbd2cSJim Jagielski break;
6511*b1cdbd2cSJim Jagielski case M_Close:
6512*b1cdbd2cSJim Jagielski DBG_ASSERT( aUId.equals( pControl->GetUniqueOrHelpId() ), "aUID != UniqueOrHelpId");
6513*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6514*b1cdbd2cSJim Jagielski ((WorkWindow*)pControl)->Close();
6515*b1cdbd2cSJim Jagielski break;
6516*b1cdbd2cSJim Jagielski case M_Size:
6517*b1cdbd2cSJim Jagielski case M_Move:
6518*b1cdbd2cSJim Jagielski goto FloatWin;
6519*b1cdbd2cSJim Jagielski // break;
6520*b1cdbd2cSJim Jagielski case M_IsMax :
6521*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((WorkWindow*)pControl)->IsMaximized() );
6522*b1cdbd2cSJim Jagielski break;
6523*b1cdbd2cSJim Jagielski case M_IsMin :
6524*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, ((WorkWindow*)pControl)->IsMinimized() );
6525*b1cdbd2cSJim Jagielski break;
6526*b1cdbd2cSJim Jagielski case M_IsRestore :
6527*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_BOOL (!((WorkWindow*)pControl)->IsMaximized() && !((WorkWindow*)pControl)->IsMinimized()) );
6528*b1cdbd2cSJim Jagielski break;
6529*b1cdbd2cSJim Jagielski case M_Minimize :
6530*b1cdbd2cSJim Jagielski ((WorkWindow*)pControl)->Maximize( sal_False );
6531*b1cdbd2cSJim Jagielski ((WorkWindow*)pControl)->Minimize();
6532*b1cdbd2cSJim Jagielski break;
6533*b1cdbd2cSJim Jagielski case M_Maximize :
6534*b1cdbd2cSJim Jagielski ((WorkWindow*)pControl)->Maximize();
6535*b1cdbd2cSJim Jagielski break;
6536*b1cdbd2cSJim Jagielski case M_Restore :
6537*b1cdbd2cSJim Jagielski ((WorkWindow*)pControl)->Maximize( sal_False );
6538*b1cdbd2cSJim Jagielski ((WorkWindow*)pControl)->Restore();
6539*b1cdbd2cSJim Jagielski break;
6540*b1cdbd2cSJim Jagielski case M_Help: // Alles was unten weiterbehandelt werden soll
6541*b1cdbd2cSJim Jagielski goto MoreDialog;
6542*b1cdbd2cSJim Jagielski default:
6543*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "WorkWindow" ) );
6544*b1cdbd2cSJim Jagielski break;
6545*b1cdbd2cSJim Jagielski }
6546*b1cdbd2cSJim Jagielski break;
6547*b1cdbd2cSJim Jagielski case C_TabPage:
6548*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_INTERNAL_ERROR, MethodString( nMethodId ) ) );
6549*b1cdbd2cSJim Jagielski break;
6550*b1cdbd2cSJim Jagielski case C_MessBox:
6551*b1cdbd2cSJim Jagielski case C_InfoBox:
6552*b1cdbd2cSJim Jagielski case C_WarningBox:
6553*b1cdbd2cSJim Jagielski case C_ErrorBox:
6554*b1cdbd2cSJim Jagielski case C_QueryBox:
6555*b1cdbd2cSJim Jagielski {
6556*b1cdbd2cSJim Jagielski sal_Bool bDone = sal_True;
6557*b1cdbd2cSJim Jagielski MessBox* pMB = (MessBox*)pControl;
6558*b1cdbd2cSJim Jagielski switch( nMethodId )
6559*b1cdbd2cSJim Jagielski {
6560*b1cdbd2cSJim Jagielski case M_GetCheckBoxText:
6561*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pMB->GetCheckBoxText() );
6562*b1cdbd2cSJim Jagielski break;
6563*b1cdbd2cSJim Jagielski case M_IsChecked :
6564*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_BOOL( pMB->GetCheckBoxState() == STATE_CHECK) );
6565*b1cdbd2cSJim Jagielski break;
6566*b1cdbd2cSJim Jagielski case M_Check :
6567*b1cdbd2cSJim Jagielski pMB->SetCheckBoxState( sal_True );
6568*b1cdbd2cSJim Jagielski break;
6569*b1cdbd2cSJim Jagielski case M_UnCheck :
6570*b1cdbd2cSJim Jagielski pMB->SetCheckBoxState( sal_False );
6571*b1cdbd2cSJim Jagielski break;
6572*b1cdbd2cSJim Jagielski case M_GetText :
6573*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pMB->GetMessText());
6574*b1cdbd2cSJim Jagielski break;
6575*b1cdbd2cSJim Jagielski
6576*b1cdbd2cSJim Jagielski default:
6577*b1cdbd2cSJim Jagielski bDone = sal_False;
6578*b1cdbd2cSJim Jagielski break;
6579*b1cdbd2cSJim Jagielski }
6580*b1cdbd2cSJim Jagielski if ( bDone )
6581*b1cdbd2cSJim Jagielski break; // break the case here else continue at C_ButtonDialog
6582*b1cdbd2cSJim Jagielski }
6583*b1cdbd2cSJim Jagielski case C_ButtonDialog:
6584*b1cdbd2cSJim Jagielski {
6585*b1cdbd2cSJim Jagielski ButtonDialog* pBD = (ButtonDialog*)pControl;
6586*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
6587*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "Working MessBox: " );
6588*b1cdbd2cSJim Jagielski if (pControl->IsVisible())
6589*b1cdbd2cSJim Jagielski m_pDbgWin->AddText("*(Visible)\n");
6590*b1cdbd2cSJim Jagielski else
6591*b1cdbd2cSJim Jagielski m_pDbgWin->AddText("*(nicht Visible)\n");
6592*b1cdbd2cSJim Jagielski #endif
6593*b1cdbd2cSJim Jagielski switch( nMethodId )
6594*b1cdbd2cSJim Jagielski {
6595*b1cdbd2cSJim Jagielski case M_AnimateMouse :
6596*b1cdbd2cSJim Jagielski AnimateMouse( pControl, Mitte);
6597*b1cdbd2cSJim Jagielski break;
6598*b1cdbd2cSJim Jagielski case M_OK:
6599*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_OK ) )
6600*b1cdbd2cSJim Jagielski {
6601*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6602*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_OK);
6603*b1cdbd2cSJim Jagielski }
6604*b1cdbd2cSJim Jagielski else
6605*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_OK_BUTTON, MethodString( nMethodId ) ) );
6606*b1cdbd2cSJim Jagielski break;
6607*b1cdbd2cSJim Jagielski case M_Cancel:
6608*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_CANCEL ) )
6609*b1cdbd2cSJim Jagielski {
6610*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6611*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_CANCEL);
6612*b1cdbd2cSJim Jagielski }
6613*b1cdbd2cSJim Jagielski else
6614*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_CANCEL_BUTTON, MethodString( nMethodId ) ) );
6615*b1cdbd2cSJim Jagielski break;
6616*b1cdbd2cSJim Jagielski case M_Yes:
6617*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_YES ) )
6618*b1cdbd2cSJim Jagielski {
6619*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6620*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_YES);
6621*b1cdbd2cSJim Jagielski }
6622*b1cdbd2cSJim Jagielski else
6623*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_YES_BUTTON, MethodString( nMethodId ) ) );
6624*b1cdbd2cSJim Jagielski break;
6625*b1cdbd2cSJim Jagielski case M_No:
6626*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_NO ) )
6627*b1cdbd2cSJim Jagielski {
6628*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6629*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_NO);
6630*b1cdbd2cSJim Jagielski }
6631*b1cdbd2cSJim Jagielski else
6632*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_NO_BUTTON, MethodString( nMethodId ) ) );
6633*b1cdbd2cSJim Jagielski break;
6634*b1cdbd2cSJim Jagielski case M_Repeat:
6635*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_RETRY ) )
6636*b1cdbd2cSJim Jagielski {
6637*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6638*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_RETRY);
6639*b1cdbd2cSJim Jagielski }
6640*b1cdbd2cSJim Jagielski else
6641*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_RETRY_BUTTON, MethodString( nMethodId ) ) );
6642*b1cdbd2cSJim Jagielski break;
6643*b1cdbd2cSJim Jagielski case M_Help:
6644*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( BUTTONID_HELP ) )
6645*b1cdbd2cSJim Jagielski {
6646*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6647*b1cdbd2cSJim Jagielski pBD->EndDialog(BUTTONID_HELP);
6648*b1cdbd2cSJim Jagielski }
6649*b1cdbd2cSJim Jagielski else
6650*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_HELP_BUTTON, MethodString( nMethodId ) ) );
6651*b1cdbd2cSJim Jagielski break;
6652*b1cdbd2cSJim Jagielski case M_Default:
6653*b1cdbd2cSJim Jagielski {
6654*b1cdbd2cSJim Jagielski WinBits Style = pControl->GetStyle();
6655*b1cdbd2cSJim Jagielski if ( Style & WB_DEF_OK )
6656*b1cdbd2cSJim Jagielski {
6657*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6658*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_OK);
6659*b1cdbd2cSJim Jagielski }
6660*b1cdbd2cSJim Jagielski else if ( Style & WB_DEF_CANCEL )
6661*b1cdbd2cSJim Jagielski {
6662*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6663*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_CANCEL);
6664*b1cdbd2cSJim Jagielski }
6665*b1cdbd2cSJim Jagielski else if ( Style & WB_DEF_YES )
6666*b1cdbd2cSJim Jagielski {
6667*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6668*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_YES);
6669*b1cdbd2cSJim Jagielski }
6670*b1cdbd2cSJim Jagielski else if ( Style & WB_DEF_NO )
6671*b1cdbd2cSJim Jagielski {
6672*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6673*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_NO);
6674*b1cdbd2cSJim Jagielski }
6675*b1cdbd2cSJim Jagielski else if ( Style & WB_DEF_RETRY )
6676*b1cdbd2cSJim Jagielski {
6677*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6678*b1cdbd2cSJim Jagielski pBD->EndDialog(RET_RETRY);
6679*b1cdbd2cSJim Jagielski }
6680*b1cdbd2cSJim Jagielski else
6681*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_NO_DEFAULT_BUTTON, MethodString( nMethodId ) ) );
6682*b1cdbd2cSJim Jagielski }
6683*b1cdbd2cSJim Jagielski break;
6684*b1cdbd2cSJim Jagielski case M_GetText :
6685*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, pControl->GetText());
6686*b1cdbd2cSJim Jagielski break;
6687*b1cdbd2cSJim Jagielski case M_Click:
6688*b1cdbd2cSJim Jagielski if ( nParams & PARAM_USHORT_1 )
6689*b1cdbd2cSJim Jagielski {
6690*b1cdbd2cSJim Jagielski if ( pBD->GetPushButton( nNr1 ) )
6691*b1cdbd2cSJim Jagielski {
6692*b1cdbd2cSJim Jagielski if ( nNr1 != BUTTONID_HELP )
6693*b1cdbd2cSJim Jagielski {
6694*b1cdbd2cSJim Jagielski SET_WINP_CLOSING(pControl);
6695*b1cdbd2cSJim Jagielski }
6696*b1cdbd2cSJim Jagielski pBD->GetPushButton( nNr1 )->Click();
6697*b1cdbd2cSJim Jagielski }
6698*b1cdbd2cSJim Jagielski else
6699*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_NO_DEFAULT_BUTTON, UniString::CreateFromInt32( nNr1 ), MethodString( nMethodId ) ) );
6700*b1cdbd2cSJim Jagielski }
6701*b1cdbd2cSJim Jagielski else
6702*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR1( S_BUTTONID_REQUIRED, MethodString( nMethodId ) ) );
6703*b1cdbd2cSJim Jagielski break;
6704*b1cdbd2cSJim Jagielski case M_GetButtonCount :
6705*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(pBD->GetButtonCount()));
6706*b1cdbd2cSJim Jagielski break;
6707*b1cdbd2cSJim Jagielski case M_GetButtonId :
6708*b1cdbd2cSJim Jagielski if ( ValueOK(aUId, MethodString( nMethodId ),nNr1,pBD->GetButtonCount()) )
6709*b1cdbd2cSJim Jagielski pRet->GenReturn ( RET_Value, aUId, comm_ULONG(pBD->GetButtonId(nNr1-1)));
6710*b1cdbd2cSJim Jagielski break;
6711*b1cdbd2cSJim Jagielski default:
6712*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2c2( S_UNKNOWN_METHOD, MethodString(nMethodId), "MessageBox" ) );
6713*b1cdbd2cSJim Jagielski break;
6714*b1cdbd2cSJim Jagielski }
6715*b1cdbd2cSJim Jagielski break;
6716*b1cdbd2cSJim Jagielski }
6717*b1cdbd2cSJim Jagielski default:
6718*b1cdbd2cSJim Jagielski DBG_ERROR( "Unknown Objekttype from UId or Method not suported" );
6719*b1cdbd2cSJim Jagielski ReportError( aUId, GEN_RES_STR2( S_UNKNOWN_TYPE, UniString::CreateFromInt32( nRT ), MethodString(nMethodId) ) );
6720*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
6721*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( " Unknown Objekttype from UId or Method not suported" );
6722*b1cdbd2cSJim Jagielski #endif
6723*b1cdbd2cSJim Jagielski break;
6724*b1cdbd2cSJim Jagielski }
6725*b1cdbd2cSJim Jagielski }
6726*b1cdbd2cSJim Jagielski for( int i = 0; i < 32; i++ )
6727*b1cdbd2cSJim Jagielski SafeReschedule();
6728*b1cdbd2cSJim Jagielski }
6729*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
6730*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( "\n" );
6731*b1cdbd2cSJim Jagielski #endif
6732*b1cdbd2cSJim Jagielski if ( bStatementDone )
6733*b1cdbd2cSJim Jagielski {
6734*b1cdbd2cSJim Jagielski SendProfile( UIdString( aUId ).Append('.').Append( MethodString( nMethodId ) ) );
6735*b1cdbd2cSJim Jagielski delete this;
6736*b1cdbd2cSJim Jagielski }
6737*b1cdbd2cSJim Jagielski else
6738*b1cdbd2cSJim Jagielski {
6739*b1cdbd2cSJim Jagielski if ( nRetryCount-- )
6740*b1cdbd2cSJim Jagielski {
6741*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
6742*b1cdbd2cSJim Jagielski m_pDbgWin->AddText( CUniString("Reschedule command (requed) (").Append( UniString::CreateFromInt32(nRetryCount) ).AppendAscii(")\n") );
6743*b1cdbd2cSJim Jagielski #endif
6744*b1cdbd2cSJim Jagielski QueStatement( this ); // will que at the start of the list
6745*b1cdbd2cSJim Jagielski }
6746*b1cdbd2cSJim Jagielski else
6747*b1cdbd2cSJim Jagielski {
6748*b1cdbd2cSJim Jagielski bStatementDone=sal_True;
6749*b1cdbd2cSJim Jagielski }
6750*b1cdbd2cSJim Jagielski }
6751*b1cdbd2cSJim Jagielski return bStatementDone;
6752*b1cdbd2cSJim Jagielski
6753*b1cdbd2cSJim Jagielski #define FINISH_NEXT
6754*b1cdbd2cSJim Jagielski #define FINISH_SAME
6755*b1cdbd2cSJim Jagielski
6756*b1cdbd2cSJim Jagielski }
6757