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
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sfx2.hxx"
26*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Reference.hxx>
27*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/IllegalArgumentException.hpp>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/DispatchResultEvent.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/DispatchResultState.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/task/XJobExecutor.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDesktop.hpp>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDispatchHelper.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFramesSupplier.hpp>
36*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XCloseable.hpp>
37*b1cdbd2cSJim Jagielski #include <com/sun/star/util/CloseVetoException.hpp>
38*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XLayoutManager.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/document/XEmbeddedScripts.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/embed/XStorage.hpp>
41*b1cdbd2cSJim Jagielski #include <com/sun/star/embed/ElementModes.hpp>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/system/SystemShellExecute.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/system/SystemShellExecuteFlags.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/system/SystemShellExecuteException.hpp>
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
47*b1cdbd2cSJim Jagielski #include <comphelper/storagehelper.hxx>
48*b1cdbd2cSJim Jagielski #include "comphelper/configurationhelper.hxx"
49*b1cdbd2cSJim Jagielski
50*b1cdbd2cSJim Jagielski #include <svtools/addresstemplate.hxx>
51*b1cdbd2cSJim Jagielski #include <svl/visitem.hxx>
52*b1cdbd2cSJim Jagielski #include <unotools/intlwrapper.hxx>
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski #include <unotools/configmgr.hxx>
55*b1cdbd2cSJim Jagielski #include <tools/config.hxx>
56*b1cdbd2cSJim Jagielski #include <tools/diagnose_ex.h>
57*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
58*b1cdbd2cSJim Jagielski #include <svl/intitem.hxx>
59*b1cdbd2cSJim Jagielski #include <svl/eitem.hxx>
60*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
61*b1cdbd2cSJim Jagielski #include <basic/sbstar.hxx>
62*b1cdbd2cSJim Jagielski #include <basic/basmgr.hxx>
63*b1cdbd2cSJim Jagielski #include <basic/basrdll.hxx>
64*b1cdbd2cSJim Jagielski #include <svtools/sfxecode.hxx>
65*b1cdbd2cSJim Jagielski #include <svtools/ehdl.hxx>
66*b1cdbd2cSJim Jagielski #include <vcl/help.hxx>
67*b1cdbd2cSJim Jagielski #include <vcl/stdtext.hxx>
68*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski #include <unotools/pathoptions.hxx>
71*b1cdbd2cSJim Jagielski #include <unotools/moduleoptions.hxx>
72*b1cdbd2cSJim Jagielski #include <svtools/helpopt.hxx>
73*b1cdbd2cSJim Jagielski #include <toolkit/helper/vclunohelper.hxx>
74*b1cdbd2cSJim Jagielski #include <tools/shl.hxx>
75*b1cdbd2cSJim Jagielski #include <unotools/bootstrap.hxx>
76*b1cdbd2cSJim Jagielski #include <vos/process.hxx>
77*b1cdbd2cSJim Jagielski #include <rtl/bootstrap.hxx>
78*b1cdbd2cSJim Jagielski #include <cppuhelper/exc_hlp.hxx>
79*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski #include <com/sun/star/script/provider/XScriptProviderFactory.hpp>
82*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XModuleManager.hpp>
83*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski #include "frmload.hxx"
86*b1cdbd2cSJim Jagielski #include "referers.hxx"
87*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
88*b1cdbd2cSJim Jagielski #include <sfx2/request.hxx>
89*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
90*b1cdbd2cSJim Jagielski #include <sfx2/bindings.hxx>
91*b1cdbd2cSJim Jagielski #include <sfx2/msg.hxx>
92*b1cdbd2cSJim Jagielski #include <sfx2/objface.hxx>
93*b1cdbd2cSJim Jagielski #include <sfx2/objitem.hxx>
94*b1cdbd2cSJim Jagielski #include <sfx2/objsh.hxx>
95*b1cdbd2cSJim Jagielski #include <sfx2/hintpost.hxx>
96*b1cdbd2cSJim Jagielski #include <sfx2/viewsh.hxx>
97*b1cdbd2cSJim Jagielski #include <sfx2/docfac.hxx>
98*b1cdbd2cSJim Jagielski #include <sfx2/docfile.hxx>
99*b1cdbd2cSJim Jagielski #include <sfx2/docfilt.hxx>
100*b1cdbd2cSJim Jagielski #include "docvor.hxx"
101*b1cdbd2cSJim Jagielski #include <sfx2/new.hxx>
102*b1cdbd2cSJim Jagielski #include <sfx2/templdlg.hxx>
103*b1cdbd2cSJim Jagielski #include "sfxtypes.hxx"
104*b1cdbd2cSJim Jagielski #include <sfx2/tabdlg.hxx>
105*b1cdbd2cSJim Jagielski #include "arrdecl.hxx"
106*b1cdbd2cSJim Jagielski #include "fltfnc.hxx"
107*b1cdbd2cSJim Jagielski #include <sfx2/sfx.hrc>
108*b1cdbd2cSJim Jagielski #include "app.hrc"
109*b1cdbd2cSJim Jagielski #include <sfx2/passwd.hxx>
110*b1cdbd2cSJim Jagielski #include "sfx2/sfxresid.hxx"
111*b1cdbd2cSJim Jagielski #include "arrdecl.hxx"
112*b1cdbd2cSJim Jagielski #include <sfx2/childwin.hxx>
113*b1cdbd2cSJim Jagielski #include "appdata.hxx"
114*b1cdbd2cSJim Jagielski #include "sfx2/minfitem.hxx"
115*b1cdbd2cSJim Jagielski #include <sfx2/event.hxx>
116*b1cdbd2cSJim Jagielski #include <sfx2/module.hxx>
117*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
118*b1cdbd2cSJim Jagielski #include "sfxpicklist.hxx"
119*b1cdbd2cSJim Jagielski #include "imestatuswindow.hxx"
120*b1cdbd2cSJim Jagielski #include <sfx2/sfxdlg.hxx>
121*b1cdbd2cSJim Jagielski #include <sfx2/dialogs.hrc>
122*b1cdbd2cSJim Jagielski #include "sorgitm.hxx"
123*b1cdbd2cSJim Jagielski #include "sfx2/sfxhelp.hxx"
124*b1cdbd2cSJim Jagielski #include <tools/svlibrary.hxx>
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
127*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
128*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
129*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::frame;
130*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::container;
131*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::util;
132*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::script;
133*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::system;
134*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang;
135*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::document;
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski namespace css = com::sun::star;
138*b1cdbd2cSJim Jagielski
139*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------------
QuitAgain_Impl(void * pObj,void * pArg)140*b1cdbd2cSJim Jagielski long QuitAgain_Impl( void* pObj, void* pArg )
141*b1cdbd2cSJim Jagielski {
142*b1cdbd2cSJim Jagielski SfxApplication* pApp = (SfxApplication*)pObj;
143*b1cdbd2cSJim Jagielski Timer* pTimer = (Timer*)pArg;
144*b1cdbd2cSJim Jagielski delete pTimer;
145*b1cdbd2cSJim Jagielski pApp->GetDispatcher_Impl()->Execute( SID_QUITAPP, SFX_CALLMODE_ASYNCHRON );
146*b1cdbd2cSJim Jagielski return 0;
147*b1cdbd2cSJim Jagielski }
148*b1cdbd2cSJim Jagielski
MiscExec_Impl(SfxRequest & rReq)149*b1cdbd2cSJim Jagielski void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
150*b1cdbd2cSJim Jagielski {
151*b1cdbd2cSJim Jagielski DBG_MEMTEST();
152*b1cdbd2cSJim Jagielski bool bDone = sal_False;
153*b1cdbd2cSJim Jagielski switch ( rReq.GetSlot() )
154*b1cdbd2cSJim Jagielski {
155*b1cdbd2cSJim Jagielski case SID_SETOPTIONS:
156*b1cdbd2cSJim Jagielski {
157*b1cdbd2cSJim Jagielski if( rReq.GetArgs() )
158*b1cdbd2cSJim Jagielski SetOptions_Impl( *rReq.GetArgs() );
159*b1cdbd2cSJim Jagielski break;
160*b1cdbd2cSJim Jagielski }
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski case SID_QUITAPP:
163*b1cdbd2cSJim Jagielski case SID_EXITANDRETURN:
164*b1cdbd2cSJim Jagielski case SID_LOGOUT:
165*b1cdbd2cSJim Jagielski {
166*b1cdbd2cSJim Jagielski // protect against reentrant calls
167*b1cdbd2cSJim Jagielski if ( pAppData_Impl->bInQuit )
168*b1cdbd2cSJim Jagielski return;
169*b1cdbd2cSJim Jagielski
170*b1cdbd2cSJim Jagielski if ( rReq.GetSlot() == SID_LOGOUT )
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski for ( SfxObjectShell *pObjSh = SfxObjectShell::GetFirst();
173*b1cdbd2cSJim Jagielski pObjSh; pObjSh = SfxObjectShell::GetNext( *pObjSh ) )
174*b1cdbd2cSJim Jagielski {
175*b1cdbd2cSJim Jagielski if ( !pObjSh->IsModified() )
176*b1cdbd2cSJim Jagielski continue;
177*b1cdbd2cSJim Jagielski
178*b1cdbd2cSJim Jagielski SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pObjSh );
179*b1cdbd2cSJim Jagielski if ( !pFrame || !pFrame->GetWindow().IsReallyVisible() )
180*b1cdbd2cSJim Jagielski continue;
181*b1cdbd2cSJim Jagielski
182*b1cdbd2cSJim Jagielski if ( pObjSh->PrepareClose(2) )
183*b1cdbd2cSJim Jagielski pObjSh->SetModified( sal_False );
184*b1cdbd2cSJim Jagielski else
185*b1cdbd2cSJim Jagielski return;
186*b1cdbd2cSJim Jagielski }
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski String aName = String::CreateFromAscii("vnd.sun.star.cmd:logout");
189*b1cdbd2cSJim Jagielski SfxStringItem aNameItem( SID_FILE_NAME, aName );
190*b1cdbd2cSJim Jagielski SfxStringItem aReferer( SID_REFERER, DEFINE_CONST_UNICODE( "private/user" ) );
191*b1cdbd2cSJim Jagielski pAppData_Impl->pAppDispat->Execute( SID_OPENDOC, SFX_CALLMODE_SLOT, &aNameItem, &aReferer, 0L );
192*b1cdbd2cSJim Jagielski return;
193*b1cdbd2cSJim Jagielski }
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski // aus verschachtelten Requests nach 100ms nochmal probieren
196*b1cdbd2cSJim Jagielski if( Application::GetDispatchLevel() > 1 )
197*b1cdbd2cSJim Jagielski {
198*b1cdbd2cSJim Jagielski /* Dont save the request for closing the application and try it later
199*b1cdbd2cSJim Jagielski again. This is an UI bound functionality ... and the user will try it again
200*b1cdbd2cSJim Jagielski if the dialog is closed. But we shouldnt close the application automaticly
201*b1cdbd2cSJim Jagielski if this dialog is closed by the user ...
202*b1cdbd2cSJim Jagielski So we ignore this request now and wait for a new user decision.
203*b1cdbd2cSJim Jagielski */
204*b1cdbd2cSJim Jagielski DBG_TRACE1( "QueryExit => FALSE (DispatchLevel == %u)", Application::GetDispatchLevel() );
205*b1cdbd2cSJim Jagielski return;
206*b1cdbd2cSJim Jagielski }
207*b1cdbd2cSJim Jagielski
208*b1cdbd2cSJim Jagielski // block reentrant calls
209*b1cdbd2cSJim Jagielski pAppData_Impl->bInQuit = sal_True;
210*b1cdbd2cSJim Jagielski Reference < XDesktop > xDesktop ( ::comphelper::getProcessServiceFactory()->createInstance( DEFINE_CONST_UNICODE("com.sun.star.frame.Desktop") ), UNO_QUERY );
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski rReq.ForgetAllArgs();
213*b1cdbd2cSJim Jagielski
214*b1cdbd2cSJim Jagielski // if terminate() failed, pAppData_Impl->bInQuit will now be sal_False, allowing further calls of SID_QUITAPP
215*b1cdbd2cSJim Jagielski sal_Bool bTerminated = xDesktop->terminate();
216*b1cdbd2cSJim Jagielski if (!bTerminated)
217*b1cdbd2cSJim Jagielski // if terminate() was successful, SfxApplication is now dead!
218*b1cdbd2cSJim Jagielski pAppData_Impl->bInQuit = sal_False;
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski // Returnwert setzten, ggf. terminieren
221*b1cdbd2cSJim Jagielski rReq.SetReturnValue( SfxBoolItem( rReq.GetSlot(), bTerminated ) );
222*b1cdbd2cSJim Jagielski return;
223*b1cdbd2cSJim Jagielski }
224*b1cdbd2cSJim Jagielski
225*b1cdbd2cSJim Jagielski case SID_CONFIG:
226*b1cdbd2cSJim Jagielski case SID_TOOLBOXOPTIONS:
227*b1cdbd2cSJim Jagielski case SID_CONFIGSTATUSBAR:
228*b1cdbd2cSJim Jagielski case SID_CONFIGMENU:
229*b1cdbd2cSJim Jagielski case SID_CONFIGACCEL:
230*b1cdbd2cSJim Jagielski case SID_CONFIGEVENT:
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski SfxAbstractDialogFactory* pFact =
233*b1cdbd2cSJim Jagielski SfxAbstractDialogFactory::Create();
234*b1cdbd2cSJim Jagielski
235*b1cdbd2cSJim Jagielski if ( pFact )
236*b1cdbd2cSJim Jagielski {
237*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG(rReq, pStringItem,
238*b1cdbd2cSJim Jagielski SfxStringItem, SID_CONFIG, sal_False);
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski SfxItemSet aSet(
241*b1cdbd2cSJim Jagielski GetPool(), SID_CONFIG, SID_CONFIG );
242*b1cdbd2cSJim Jagielski
243*b1cdbd2cSJim Jagielski if ( pStringItem )
244*b1cdbd2cSJim Jagielski {
245*b1cdbd2cSJim Jagielski aSet.Put( SfxStringItem(
246*b1cdbd2cSJim Jagielski SID_CONFIG, pStringItem->GetValue() ) );
247*b1cdbd2cSJim Jagielski }
248*b1cdbd2cSJim Jagielski
249*b1cdbd2cSJim Jagielski Reference< XFrame > xFrame;
250*b1cdbd2cSJim Jagielski const SfxItemSet* pIntSet = rReq.GetInternalArgs_Impl();
251*b1cdbd2cSJim Jagielski SFX_ITEMSET_ARG( pIntSet, pFrameItem, SfxUnoFrameItem, SID_FILLFRAME, sal_False );
252*b1cdbd2cSJim Jagielski if ( pFrameItem )
253*b1cdbd2cSJim Jagielski xFrame = pFrameItem->GetFrame();
254*b1cdbd2cSJim Jagielski
255*b1cdbd2cSJim Jagielski SfxAbstractTabDialog* pDlg = pFact->CreateTabDialog(
256*b1cdbd2cSJim Jagielski RID_SVXDLG_CUSTOMIZE,
257*b1cdbd2cSJim Jagielski NULL, &aSet, xFrame );
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski if ( pDlg )
260*b1cdbd2cSJim Jagielski {
261*b1cdbd2cSJim Jagielski const short nRet = pDlg->Execute();
262*b1cdbd2cSJim Jagielski
263*b1cdbd2cSJim Jagielski if ( nRet )
264*b1cdbd2cSJim Jagielski bDone = sal_True;
265*b1cdbd2cSJim Jagielski
266*b1cdbd2cSJim Jagielski delete pDlg;
267*b1cdbd2cSJim Jagielski }
268*b1cdbd2cSJim Jagielski }
269*b1cdbd2cSJim Jagielski break;
270*b1cdbd2cSJim Jagielski }
271*b1cdbd2cSJim Jagielski
272*b1cdbd2cSJim Jagielski case SID_CLOSEDOCS:
273*b1cdbd2cSJim Jagielski case SID_CLOSEWINS:
274*b1cdbd2cSJim Jagielski {
275*b1cdbd2cSJim Jagielski
276*b1cdbd2cSJim Jagielski Reference < XFramesSupplier > xDesktop ( ::comphelper::getProcessServiceFactory()->createInstance( DEFINE_CONST_UNICODE("com.sun.star.frame.Desktop") ), UNO_QUERY );
277*b1cdbd2cSJim Jagielski Reference< XIndexAccess > xTasks( xDesktop->getFrames(), UNO_QUERY );
278*b1cdbd2cSJim Jagielski if ( !xTasks.is() )
279*b1cdbd2cSJim Jagielski break;
280*b1cdbd2cSJim Jagielski
281*b1cdbd2cSJim Jagielski sal_Int32 n=0;
282*b1cdbd2cSJim Jagielski do
283*b1cdbd2cSJim Jagielski {
284*b1cdbd2cSJim Jagielski if ( xTasks->getCount() <= n )
285*b1cdbd2cSJim Jagielski break;
286*b1cdbd2cSJim Jagielski
287*b1cdbd2cSJim Jagielski Any aAny = xTasks->getByIndex(n);
288*b1cdbd2cSJim Jagielski Reference < XCloseable > xTask;
289*b1cdbd2cSJim Jagielski aAny >>= xTask;
290*b1cdbd2cSJim Jagielski try
291*b1cdbd2cSJim Jagielski {
292*b1cdbd2cSJim Jagielski xTask->close(sal_True);
293*b1cdbd2cSJim Jagielski n++;
294*b1cdbd2cSJim Jagielski }
295*b1cdbd2cSJim Jagielski catch( CloseVetoException& )
296*b1cdbd2cSJim Jagielski {
297*b1cdbd2cSJim Jagielski }
298*b1cdbd2cSJim Jagielski }
299*b1cdbd2cSJim Jagielski while( sal_True );
300*b1cdbd2cSJim Jagielski
301*b1cdbd2cSJim Jagielski sal_Bool bOk = ( n == 0);
302*b1cdbd2cSJim Jagielski rReq.SetReturnValue( SfxBoolItem( 0, bOk ) );
303*b1cdbd2cSJim Jagielski bDone = sal_True;
304*b1cdbd2cSJim Jagielski break;
305*b1cdbd2cSJim Jagielski }
306*b1cdbd2cSJim Jagielski
307*b1cdbd2cSJim Jagielski case SID_SAVEDOCS:
308*b1cdbd2cSJim Jagielski {
309*b1cdbd2cSJim Jagielski sal_Bool bOK = sal_True;
310*b1cdbd2cSJim Jagielski sal_Bool bTmpDone = sal_True;
311*b1cdbd2cSJim Jagielski for ( SfxObjectShell *pObjSh = SfxObjectShell::GetFirst();
312*b1cdbd2cSJim Jagielski pObjSh;
313*b1cdbd2cSJim Jagielski pObjSh = SfxObjectShell::GetNext( *pObjSh ) )
314*b1cdbd2cSJim Jagielski {
315*b1cdbd2cSJim Jagielski SfxRequest aReq( SID_SAVEDOC, 0, pObjSh->GetPool() );
316*b1cdbd2cSJim Jagielski if ( pObjSh->IsModified() )
317*b1cdbd2cSJim Jagielski {
318*b1cdbd2cSJim Jagielski pObjSh->ExecuteSlot( aReq );
319*b1cdbd2cSJim Jagielski SfxBoolItem *pItem = PTR_CAST( SfxBoolItem, aReq.GetReturnValue() );
320*b1cdbd2cSJim Jagielski bTmpDone = aReq.IsDone();
321*b1cdbd2cSJim Jagielski if ( !pItem || !pItem->GetValue() )
322*b1cdbd2cSJim Jagielski bOK = sal_False;
323*b1cdbd2cSJim Jagielski }
324*b1cdbd2cSJim Jagielski }
325*b1cdbd2cSJim Jagielski
326*b1cdbd2cSJim Jagielski rReq.SetReturnValue( SfxBoolItem( 0, bOK ) );
327*b1cdbd2cSJim Jagielski rReq.Done();
328*b1cdbd2cSJim Jagielski break;
329*b1cdbd2cSJim Jagielski }
330*b1cdbd2cSJim Jagielski
331*b1cdbd2cSJim Jagielski // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
332*b1cdbd2cSJim Jagielski case SID_HELPINDEX:
333*b1cdbd2cSJim Jagielski case SID_HELP_SUPPORTPAGE:
334*b1cdbd2cSJim Jagielski {
335*b1cdbd2cSJim Jagielski Help* pHelp = Application::GetHelp();
336*b1cdbd2cSJim Jagielski if ( pHelp )
337*b1cdbd2cSJim Jagielski {
338*b1cdbd2cSJim Jagielski if ( rReq.GetSlot() == SID_HELP_SUPPORTPAGE )
339*b1cdbd2cSJim Jagielski {
340*b1cdbd2cSJim Jagielski // show Support page with new URL
341*b1cdbd2cSJim Jagielski // Create a dummy Help URL to get the Language and System
342*b1cdbd2cSJim Jagielski // but don't use a real command, otherwise we may get an anchor
343*b1cdbd2cSJim Jagielski rtl::OUString sEmpty;
344*b1cdbd2cSJim Jagielski rtl::OUString sTmp( SfxHelp::CreateHelpURL( sEmpty, sEmpty ) );
345*b1cdbd2cSJim Jagielski
346*b1cdbd2cSJim Jagielski rtl::OUStringBuffer aBuff;
347*b1cdbd2cSJim Jagielski aBuff.appendAscii( RTL_CONSTASCII_STRINGPARAM( "vnd.sun.star.help://shared/text/shared/05/00000001.xhp" ) );
348*b1cdbd2cSJim Jagielski aBuff.append( sTmp.copy( sTmp.indexOf( sal_Unicode( '?' ) ) ) );
349*b1cdbd2cSJim Jagielski aBuff.appendAscii( RTL_CONSTASCII_STRINGPARAM( "&UseDB=no" ) );
350*b1cdbd2cSJim Jagielski
351*b1cdbd2cSJim Jagielski pHelp->Start( aBuff.makeStringAndClear(), NULL );
352*b1cdbd2cSJim Jagielski }
353*b1cdbd2cSJim Jagielski else
354*b1cdbd2cSJim Jagielski pHelp->Start( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:HelpIndex")), NULL ); // show start page
355*b1cdbd2cSJim Jagielski bDone = sal_True;
356*b1cdbd2cSJim Jagielski }
357*b1cdbd2cSJim Jagielski break;
358*b1cdbd2cSJim Jagielski }
359*b1cdbd2cSJim Jagielski
360*b1cdbd2cSJim Jagielski // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
361*b1cdbd2cSJim Jagielski case SID_HELPTIPS:
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski // Parameter aus werten
364*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG(rReq, pOnItem, SfxBoolItem, SID_HELPTIPS, sal_False);
365*b1cdbd2cSJim Jagielski bool bOn = pOnItem
366*b1cdbd2cSJim Jagielski ? ((SfxBoolItem*)pOnItem)->GetValue()
367*b1cdbd2cSJim Jagielski : !Help::IsQuickHelpEnabled();
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim Jagielski // ausf"uhren
370*b1cdbd2cSJim Jagielski if ( bOn )
371*b1cdbd2cSJim Jagielski Help::EnableQuickHelp();
372*b1cdbd2cSJim Jagielski else
373*b1cdbd2cSJim Jagielski Help::DisableQuickHelp();
374*b1cdbd2cSJim Jagielski SvtHelpOptions().SetHelpTips( bOn );
375*b1cdbd2cSJim Jagielski Invalidate(SID_HELPTIPS);
376*b1cdbd2cSJim Jagielski bDone = sal_True;
377*b1cdbd2cSJim Jagielski
378*b1cdbd2cSJim Jagielski // ggf. recorden
379*b1cdbd2cSJim Jagielski if ( !rReq.IsAPI() )
380*b1cdbd2cSJim Jagielski rReq.AppendItem( SfxBoolItem( SID_HELPTIPS, bOn) );
381*b1cdbd2cSJim Jagielski break;
382*b1cdbd2cSJim Jagielski }
383*b1cdbd2cSJim Jagielski // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
384*b1cdbd2cSJim Jagielski case SID_EXTENDEDHELP:
385*b1cdbd2cSJim Jagielski {
386*b1cdbd2cSJim Jagielski Help::StartExtHelp();
387*b1cdbd2cSJim Jagielski break;
388*b1cdbd2cSJim Jagielski }
389*b1cdbd2cSJim Jagielski case SID_HELPBALLOONS:
390*b1cdbd2cSJim Jagielski {
391*b1cdbd2cSJim Jagielski // Parameter auswerten
392*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG(rReq, pOnItem, SfxBoolItem, SID_HELPBALLOONS, sal_False);
393*b1cdbd2cSJim Jagielski bool bOn = pOnItem
394*b1cdbd2cSJim Jagielski ? ((SfxBoolItem*)pOnItem)->GetValue()
395*b1cdbd2cSJim Jagielski : !Help::IsBalloonHelpEnabled();
396*b1cdbd2cSJim Jagielski
397*b1cdbd2cSJim Jagielski // ausf"uhren
398*b1cdbd2cSJim Jagielski if ( bOn )
399*b1cdbd2cSJim Jagielski Help::EnableBalloonHelp();
400*b1cdbd2cSJim Jagielski else
401*b1cdbd2cSJim Jagielski Help::DisableBalloonHelp();
402*b1cdbd2cSJim Jagielski SvtHelpOptions().SetExtendedHelp( bOn );
403*b1cdbd2cSJim Jagielski Invalidate(SID_HELPBALLOONS);
404*b1cdbd2cSJim Jagielski bDone = sal_True;
405*b1cdbd2cSJim Jagielski
406*b1cdbd2cSJim Jagielski // ggf. recorden
407*b1cdbd2cSJim Jagielski if ( !rReq.IsAPI() )
408*b1cdbd2cSJim Jagielski rReq.AppendItem( SfxBoolItem( SID_HELPBALLOONS, bOn) );
409*b1cdbd2cSJim Jagielski break;
410*b1cdbd2cSJim Jagielski }
411*b1cdbd2cSJim Jagielski
412*b1cdbd2cSJim Jagielski // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
413*b1cdbd2cSJim Jagielski case SID_HELP_PI:
414*b1cdbd2cSJim Jagielski {
415*b1cdbd2cSJim Jagielski SvtHelpOptions aHelpOpt;
416*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG(rReq, pOnItem, SfxBoolItem, SID_HELP_PI, sal_False);
417*b1cdbd2cSJim Jagielski sal_Bool bOn = pOnItem
418*b1cdbd2cSJim Jagielski ? ((SfxBoolItem*)pOnItem)->GetValue()
419*b1cdbd2cSJim Jagielski : !aHelpOpt.IsHelpAgentAutoStartMode();
420*b1cdbd2cSJim Jagielski aHelpOpt.SetHelpAgentAutoStartMode( bOn );
421*b1cdbd2cSJim Jagielski Invalidate(SID_HELP_PI);
422*b1cdbd2cSJim Jagielski bDone = sal_True;
423*b1cdbd2cSJim Jagielski break;
424*b1cdbd2cSJim Jagielski }
425*b1cdbd2cSJim Jagielski
426*b1cdbd2cSJim Jagielski // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
427*b1cdbd2cSJim Jagielski case SID_ABOUT:
428*b1cdbd2cSJim Jagielski {
429*b1cdbd2cSJim Jagielski SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
430*b1cdbd2cSJim Jagielski if ( pFact )
431*b1cdbd2cSJim Jagielski {
432*b1cdbd2cSJim Jagielski VclAbstractDialog* pDlg = pFact->CreateVclDialog( 0, RID_DEFAULTABOUT );
433*b1cdbd2cSJim Jagielski pDlg->Execute();
434*b1cdbd2cSJim Jagielski delete pDlg;
435*b1cdbd2cSJim Jagielski bDone = sal_True;
436*b1cdbd2cSJim Jagielski }
437*b1cdbd2cSJim Jagielski break;
438*b1cdbd2cSJim Jagielski }
439*b1cdbd2cSJim Jagielski
440*b1cdbd2cSJim Jagielski // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
441*b1cdbd2cSJim Jagielski case SID_ORGANIZER:
442*b1cdbd2cSJim Jagielski {
443*b1cdbd2cSJim Jagielski SfxTemplateOrganizeDlg *pDlg =
444*b1cdbd2cSJim Jagielski new SfxTemplateOrganizeDlg(NULL);
445*b1cdbd2cSJim Jagielski pDlg->Execute();
446*b1cdbd2cSJim Jagielski delete pDlg;
447*b1cdbd2cSJim Jagielski bDone = sal_True;
448*b1cdbd2cSJim Jagielski break;
449*b1cdbd2cSJim Jagielski }
450*b1cdbd2cSJim Jagielski
451*b1cdbd2cSJim Jagielski case SID_TEMPLATE_ADDRESSBOKSOURCE:
452*b1cdbd2cSJim Jagielski {
453*b1cdbd2cSJim Jagielski svt::AddressBookSourceDialog aDialog(GetTopWindow(), ::comphelper::getProcessServiceFactory());
454*b1cdbd2cSJim Jagielski aDialog.Execute();
455*b1cdbd2cSJim Jagielski bDone = sal_True;
456*b1cdbd2cSJim Jagielski break;
457*b1cdbd2cSJim Jagielski }
458*b1cdbd2cSJim Jagielski
459*b1cdbd2cSJim Jagielski case SID_BASICSTOP:
460*b1cdbd2cSJim Jagielski StarBASIC::Stop();
461*b1cdbd2cSJim Jagielski break;
462*b1cdbd2cSJim Jagielski
463*b1cdbd2cSJim Jagielski case SID_BASICBREAK :
464*b1cdbd2cSJim Jagielski BASIC_DLL()->BasicBreak();
465*b1cdbd2cSJim Jagielski break;
466*b1cdbd2cSJim Jagielski
467*b1cdbd2cSJim Jagielski case SID_CRASH :
468*b1cdbd2cSJim Jagielski {
469*b1cdbd2cSJim Jagielski // Provoke a crash:
470*b1cdbd2cSJim Jagielski char * crash = 0;
471*b1cdbd2cSJim Jagielski *crash = 0;
472*b1cdbd2cSJim Jagielski break;
473*b1cdbd2cSJim Jagielski }
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski case SID_SHOW_IME_STATUS_WINDOW:
476*b1cdbd2cSJim Jagielski if (pAppData_Impl->m_xImeStatusWindow->canToggle())
477*b1cdbd2cSJim Jagielski {
478*b1cdbd2cSJim Jagielski SfxBoolItem const * pItem = static_cast< SfxBoolItem const * >(
479*b1cdbd2cSJim Jagielski rReq.GetArg(SID_SHOW_IME_STATUS_WINDOW, false,
480*b1cdbd2cSJim Jagielski TYPE(SfxBoolItem)));
481*b1cdbd2cSJim Jagielski bool bShow = pItem == 0
482*b1cdbd2cSJim Jagielski ? !pAppData_Impl->m_xImeStatusWindow->isShowing()
483*b1cdbd2cSJim Jagielski : ( pItem->GetValue() == sal_True );
484*b1cdbd2cSJim Jagielski pAppData_Impl->m_xImeStatusWindow->show(bShow);
485*b1cdbd2cSJim Jagielski if (pItem == 0)
486*b1cdbd2cSJim Jagielski rReq.AppendItem(SfxBoolItem(SID_SHOW_IME_STATUS_WINDOW,
487*b1cdbd2cSJim Jagielski bShow));
488*b1cdbd2cSJim Jagielski }
489*b1cdbd2cSJim Jagielski bDone = true;
490*b1cdbd2cSJim Jagielski break;
491*b1cdbd2cSJim Jagielski
492*b1cdbd2cSJim Jagielski case SID_AVAILABLE_TOOLBARS:
493*b1cdbd2cSJim Jagielski {
494*b1cdbd2cSJim Jagielski SfxStringItem const * pToolbarName = static_cast< SfxStringItem const *>(
495*b1cdbd2cSJim Jagielski rReq.GetArg(SID_AVAILABLE_TOOLBARS, false, TYPE(SfxStringItem)));
496*b1cdbd2cSJim Jagielski
497*b1cdbd2cSJim Jagielski if ( pToolbarName )
498*b1cdbd2cSJim Jagielski {
499*b1cdbd2cSJim Jagielski com::sun::star::uno::Reference< com::sun::star::frame::XFrame > xFrame;
500*b1cdbd2cSJim Jagielski Reference < XFramesSupplier > xDesktop ( ::comphelper::getProcessServiceFactory()->createInstance(
501*b1cdbd2cSJim Jagielski DEFINE_CONST_UNICODE("com.sun.star.frame.Desktop") ), UNO_QUERY );
502*b1cdbd2cSJim Jagielski xFrame = xDesktop->getActiveFrame();
503*b1cdbd2cSJim Jagielski
504*b1cdbd2cSJim Jagielski Reference< com::sun::star::beans::XPropertySet > xPropSet( xFrame, UNO_QUERY );
505*b1cdbd2cSJim Jagielski Reference< ::com::sun::star::frame::XLayoutManager > xLayoutManager;
506*b1cdbd2cSJim Jagielski if ( xPropSet.is() )
507*b1cdbd2cSJim Jagielski {
508*b1cdbd2cSJim Jagielski try
509*b1cdbd2cSJim Jagielski {
510*b1cdbd2cSJim Jagielski Any aValue = xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" )));
511*b1cdbd2cSJim Jagielski aValue >>= xLayoutManager;
512*b1cdbd2cSJim Jagielski }
513*b1cdbd2cSJim Jagielski catch ( ::com::sun::star::uno::RuntimeException& e )
514*b1cdbd2cSJim Jagielski {
515*b1cdbd2cSJim Jagielski throw e;
516*b1cdbd2cSJim Jagielski }
517*b1cdbd2cSJim Jagielski catch ( ::com::sun::star::uno::Exception& )
518*b1cdbd2cSJim Jagielski {
519*b1cdbd2cSJim Jagielski }
520*b1cdbd2cSJim Jagielski }
521*b1cdbd2cSJim Jagielski
522*b1cdbd2cSJim Jagielski if ( xLayoutManager.is() )
523*b1cdbd2cSJim Jagielski {
524*b1cdbd2cSJim Jagielski rtl::OUString aToolbarResName( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/" ));
525*b1cdbd2cSJim Jagielski rtl::OUStringBuffer aBuf( aToolbarResName );
526*b1cdbd2cSJim Jagielski aBuf.append( pToolbarName->GetValue() );
527*b1cdbd2cSJim Jagielski
528*b1cdbd2cSJim Jagielski // Parameter auswerten
529*b1cdbd2cSJim Jagielski rtl::OUString aToolbarName( aBuf.makeStringAndClear() );
530*b1cdbd2cSJim Jagielski sal_Bool bShow( !xLayoutManager->isElementVisible( aToolbarName ));
531*b1cdbd2cSJim Jagielski
532*b1cdbd2cSJim Jagielski if ( bShow )
533*b1cdbd2cSJim Jagielski {
534*b1cdbd2cSJim Jagielski xLayoutManager->createElement( aToolbarName );
535*b1cdbd2cSJim Jagielski xLayoutManager->showElement( aToolbarName );
536*b1cdbd2cSJim Jagielski }
537*b1cdbd2cSJim Jagielski else
538*b1cdbd2cSJim Jagielski xLayoutManager->hideElement( aToolbarName );
539*b1cdbd2cSJim Jagielski }
540*b1cdbd2cSJim Jagielski }
541*b1cdbd2cSJim Jagielski
542*b1cdbd2cSJim Jagielski bDone = true;
543*b1cdbd2cSJim Jagielski break;
544*b1cdbd2cSJim Jagielski }
545*b1cdbd2cSJim Jagielski
546*b1cdbd2cSJim Jagielski default:
547*b1cdbd2cSJim Jagielski break;
548*b1cdbd2cSJim Jagielski }
549*b1cdbd2cSJim Jagielski
550*b1cdbd2cSJim Jagielski if ( bDone )
551*b1cdbd2cSJim Jagielski rReq.Done();
552*b1cdbd2cSJim Jagielski }
553*b1cdbd2cSJim Jagielski
554*b1cdbd2cSJim Jagielski //--------------------------------------------------------------------
555*b1cdbd2cSJim Jagielski
MiscState_Impl(SfxItemSet & rSet)556*b1cdbd2cSJim Jagielski void SfxApplication::MiscState_Impl(SfxItemSet &rSet)
557*b1cdbd2cSJim Jagielski {
558*b1cdbd2cSJim Jagielski DBG_MEMTEST();
559*b1cdbd2cSJim Jagielski
560*b1cdbd2cSJim Jagielski LocaleDataWrapper aLocaleWrapper( ::comphelper::getProcessServiceFactory(), Application::GetSettings().GetLocale() );
561*b1cdbd2cSJim Jagielski const sal_uInt16 *pRanges = rSet.GetRanges();
562*b1cdbd2cSJim Jagielski DBG_ASSERT(pRanges && *pRanges, "Set ohne Bereich");
563*b1cdbd2cSJim Jagielski while ( *pRanges )
564*b1cdbd2cSJim Jagielski {
565*b1cdbd2cSJim Jagielski for(sal_uInt16 nWhich = *pRanges++; nWhich <= *pRanges; ++nWhich)
566*b1cdbd2cSJim Jagielski {
567*b1cdbd2cSJim Jagielski switch(nWhich)
568*b1cdbd2cSJim Jagielski {
569*b1cdbd2cSJim Jagielski case SID_TEMPLATE_ADDRESSBOKSOURCE:
570*b1cdbd2cSJim Jagielski if ( !SvtModuleOptions().IsModuleInstalled(SvtModuleOptions::E_SDATABASE) )
571*b1cdbd2cSJim Jagielski rSet.Put(SfxVisibilityItem(nWhich, sal_False));
572*b1cdbd2cSJim Jagielski break;
573*b1cdbd2cSJim Jagielski case SID_EXITANDRETURN:
574*b1cdbd2cSJim Jagielski case SID_QUITAPP:
575*b1cdbd2cSJim Jagielski {
576*b1cdbd2cSJim Jagielski if ( pAppData_Impl->nDocModalMode )
577*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
578*b1cdbd2cSJim Jagielski else
579*b1cdbd2cSJim Jagielski rSet.Put(SfxStringItem(nWhich, String(SfxResId(STR_QUITAPP))));
580*b1cdbd2cSJim Jagielski break;
581*b1cdbd2cSJim Jagielski }
582*b1cdbd2cSJim Jagielski
583*b1cdbd2cSJim Jagielski case SID_BASICSTOP:
584*b1cdbd2cSJim Jagielski if ( !StarBASIC::IsRunning() )
585*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
586*b1cdbd2cSJim Jagielski break;
587*b1cdbd2cSJim Jagielski
588*b1cdbd2cSJim Jagielski case SID_HELPTIPS:
589*b1cdbd2cSJim Jagielski {
590*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( SID_HELPTIPS, Help::IsQuickHelpEnabled() ) );
591*b1cdbd2cSJim Jagielski }
592*b1cdbd2cSJim Jagielski break;
593*b1cdbd2cSJim Jagielski case SID_HELPBALLOONS:
594*b1cdbd2cSJim Jagielski {
595*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( SID_HELPBALLOONS, Help::IsBalloonHelpEnabled() ) );
596*b1cdbd2cSJim Jagielski }
597*b1cdbd2cSJim Jagielski break;
598*b1cdbd2cSJim Jagielski case SID_HELP_PI:
599*b1cdbd2cSJim Jagielski {
600*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( SID_HELP_PI, SvtHelpOptions().IsHelpAgentAutoStartMode() ) );
601*b1cdbd2cSJim Jagielski }
602*b1cdbd2cSJim Jagielski break;
603*b1cdbd2cSJim Jagielski
604*b1cdbd2cSJim Jagielski case SID_EXTENDEDHELP:
605*b1cdbd2cSJim Jagielski {
606*b1cdbd2cSJim Jagielski }
607*b1cdbd2cSJim Jagielski break;
608*b1cdbd2cSJim Jagielski
609*b1cdbd2cSJim Jagielski case SID_CLOSEDOCS:
610*b1cdbd2cSJim Jagielski case SID_CLOSEWINS:
611*b1cdbd2cSJim Jagielski {
612*b1cdbd2cSJim Jagielski Reference < XFramesSupplier > xDesktop ( ::comphelper::getProcessServiceFactory()->createInstance( DEFINE_CONST_UNICODE("com.sun.star.frame.Desktop") ), UNO_QUERY );
613*b1cdbd2cSJim Jagielski Reference< XIndexAccess > xTasks( xDesktop->getFrames(), UNO_QUERY );
614*b1cdbd2cSJim Jagielski if ( !xTasks.is() || !xTasks->getCount() )
615*b1cdbd2cSJim Jagielski rSet.DisableItem(nWhich);
616*b1cdbd2cSJim Jagielski break;
617*b1cdbd2cSJim Jagielski }
618*b1cdbd2cSJim Jagielski
619*b1cdbd2cSJim Jagielski case SID_SAVEDOCS:
620*b1cdbd2cSJim Jagielski {
621*b1cdbd2cSJim Jagielski sal_Bool bModified = sal_False;
622*b1cdbd2cSJim Jagielski for ( SfxObjectShell *pObjSh = SfxObjectShell::GetFirst();
623*b1cdbd2cSJim Jagielski pObjSh;
624*b1cdbd2cSJim Jagielski pObjSh = SfxObjectShell::GetNext( *pObjSh ) )
625*b1cdbd2cSJim Jagielski {
626*b1cdbd2cSJim Jagielski if ( pObjSh->IsModified() )
627*b1cdbd2cSJim Jagielski {
628*b1cdbd2cSJim Jagielski bModified = sal_True;
629*b1cdbd2cSJim Jagielski break;
630*b1cdbd2cSJim Jagielski }
631*b1cdbd2cSJim Jagielski }
632*b1cdbd2cSJim Jagielski
633*b1cdbd2cSJim Jagielski if ( !bModified )
634*b1cdbd2cSJim Jagielski rSet.DisableItem( nWhich );
635*b1cdbd2cSJim Jagielski break;
636*b1cdbd2cSJim Jagielski }
637*b1cdbd2cSJim Jagielski
638*b1cdbd2cSJim Jagielski case SID_SHOW_IME_STATUS_WINDOW:
639*b1cdbd2cSJim Jagielski if (pAppData_Impl->m_xImeStatusWindow->canToggle())
640*b1cdbd2cSJim Jagielski rSet.Put(SfxBoolItem(
641*b1cdbd2cSJim Jagielski SID_SHOW_IME_STATUS_WINDOW,
642*b1cdbd2cSJim Jagielski pAppData_Impl->m_xImeStatusWindow->
643*b1cdbd2cSJim Jagielski isShowing()));
644*b1cdbd2cSJim Jagielski else
645*b1cdbd2cSJim Jagielski rSet.DisableItem(SID_SHOW_IME_STATUS_WINDOW);
646*b1cdbd2cSJim Jagielski break;
647*b1cdbd2cSJim Jagielski
648*b1cdbd2cSJim Jagielski default:
649*b1cdbd2cSJim Jagielski break;
650*b1cdbd2cSJim Jagielski }
651*b1cdbd2cSJim Jagielski }
652*b1cdbd2cSJim Jagielski
653*b1cdbd2cSJim Jagielski ++pRanges;
654*b1cdbd2cSJim Jagielski }
655*b1cdbd2cSJim Jagielski }
656*b1cdbd2cSJim Jagielski
657*b1cdbd2cSJim Jagielski typedef rtl_uString* (SAL_CALL *basicide_choose_macro)(XModel*, sal_Bool, rtl_uString*);
658*b1cdbd2cSJim Jagielski typedef void (SAL_CALL *basicide_macro_organizer)( sal_Int16 );
659*b1cdbd2cSJim Jagielski
660*b1cdbd2cSJim Jagielski #define DOSTRING( x ) #x
661*b1cdbd2cSJim Jagielski #define STRING( x ) DOSTRING( x )
662*b1cdbd2cSJim Jagielski
thisModule()663*b1cdbd2cSJim Jagielski extern "C" { static void SAL_CALL thisModule() {} }
664*b1cdbd2cSJim Jagielski
ChooseMacro(const Reference<XModel> & rxLimitToDocument,sal_Bool bChooseOnly,const::rtl::OUString & rMacroDesc=::rtl::OUString ())665*b1cdbd2cSJim Jagielski ::rtl::OUString ChooseMacro( const Reference< XModel >& rxLimitToDocument, sal_Bool bChooseOnly, const ::rtl::OUString& rMacroDesc = ::rtl::OUString() )
666*b1cdbd2cSJim Jagielski {
667*b1cdbd2cSJim Jagielski // get basctl dllname
668*b1cdbd2cSJim Jagielski static ::rtl::OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( SVLIBRARY( "basctl" ) ) );
669*b1cdbd2cSJim Jagielski
670*b1cdbd2cSJim Jagielski // load module
671*b1cdbd2cSJim Jagielski oslModule handleMod = osl_loadModuleRelative(
672*b1cdbd2cSJim Jagielski &thisModule, aLibName.pData, 0 );
673*b1cdbd2cSJim Jagielski
674*b1cdbd2cSJim Jagielski // get symbol
675*b1cdbd2cSJim Jagielski ::rtl::OUString aSymbol( RTL_CONSTASCII_USTRINGPARAM( "basicide_choose_macro" ) );
676*b1cdbd2cSJim Jagielski basicide_choose_macro pSymbol = (basicide_choose_macro) osl_getFunctionSymbol( handleMod, aSymbol.pData );
677*b1cdbd2cSJim Jagielski
678*b1cdbd2cSJim Jagielski // call basicide_choose_macro in basctl
679*b1cdbd2cSJim Jagielski rtl_uString* pScriptURL = pSymbol( rxLimitToDocument.get(), bChooseOnly, rMacroDesc.pData );
680*b1cdbd2cSJim Jagielski ::rtl::OUString aScriptURL( pScriptURL );
681*b1cdbd2cSJim Jagielski rtl_uString_release( pScriptURL );
682*b1cdbd2cSJim Jagielski return aScriptURL;
683*b1cdbd2cSJim Jagielski }
684*b1cdbd2cSJim Jagielski
MacroOrganizer(sal_Int16 nTabId)685*b1cdbd2cSJim Jagielski void MacroOrganizer( sal_Int16 nTabId )
686*b1cdbd2cSJim Jagielski {
687*b1cdbd2cSJim Jagielski // get basctl dllname
688*b1cdbd2cSJim Jagielski static ::rtl::OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( SVLIBRARY( "basctl" ) ) );
689*b1cdbd2cSJim Jagielski
690*b1cdbd2cSJim Jagielski // load module
691*b1cdbd2cSJim Jagielski oslModule handleMod = osl_loadModuleRelative(
692*b1cdbd2cSJim Jagielski &thisModule, aLibName.pData, 0 );
693*b1cdbd2cSJim Jagielski
694*b1cdbd2cSJim Jagielski // get symbol
695*b1cdbd2cSJim Jagielski ::rtl::OUString aSymbol( RTL_CONSTASCII_USTRINGPARAM( "basicide_macro_organizer" ) );
696*b1cdbd2cSJim Jagielski basicide_macro_organizer pSymbol = (basicide_macro_organizer) osl_getFunctionSymbol( handleMod, aSymbol.pData );
697*b1cdbd2cSJim Jagielski
698*b1cdbd2cSJim Jagielski // call basicide_macro_organizer in basctl
699*b1cdbd2cSJim Jagielski pSymbol( nTabId );
700*b1cdbd2cSJim Jagielski }
701*b1cdbd2cSJim Jagielski
702*b1cdbd2cSJim Jagielski #define RID_ERRBOX_MODULENOTINSTALLED (RID_OFA_START + 72)
703*b1cdbd2cSJim Jagielski
GetOffResManager_Impl()704*b1cdbd2cSJim Jagielski ResMgr* SfxApplication::GetOffResManager_Impl()
705*b1cdbd2cSJim Jagielski {
706*b1cdbd2cSJim Jagielski if ( !pAppData_Impl->pOfaResMgr )
707*b1cdbd2cSJim Jagielski pAppData_Impl->pOfaResMgr = CreateResManager( "ofa");
708*b1cdbd2cSJim Jagielski return pAppData_Impl->pOfaResMgr;
709*b1cdbd2cSJim Jagielski }
710*b1cdbd2cSJim Jagielski
711*b1cdbd2cSJim Jagielski namespace
712*b1cdbd2cSJim Jagielski {
lcl_getDialogParent(const Reference<XFrame> & _rxFrame,Window * _pFallback)713*b1cdbd2cSJim Jagielski Window* lcl_getDialogParent( const Reference< XFrame >& _rxFrame, Window* _pFallback )
714*b1cdbd2cSJim Jagielski {
715*b1cdbd2cSJim Jagielski if ( !_rxFrame.is() )
716*b1cdbd2cSJim Jagielski return _pFallback;
717*b1cdbd2cSJim Jagielski
718*b1cdbd2cSJim Jagielski try
719*b1cdbd2cSJim Jagielski {
720*b1cdbd2cSJim Jagielski Reference< awt::XWindow > xContainerWindow( _rxFrame->getContainerWindow(), UNO_SET_THROW );
721*b1cdbd2cSJim Jagielski Window* pWindow = VCLUnoHelper::GetWindow( xContainerWindow );
722*b1cdbd2cSJim Jagielski OSL_ENSURE( pWindow, "lcl_getDialogParent: cool, somebody implemented a VCL-less toolkit!" );
723*b1cdbd2cSJim Jagielski
724*b1cdbd2cSJim Jagielski if ( pWindow )
725*b1cdbd2cSJim Jagielski return pWindow->GetSystemWindow();
726*b1cdbd2cSJim Jagielski }
727*b1cdbd2cSJim Jagielski catch( const Exception& )
728*b1cdbd2cSJim Jagielski {
729*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION();
730*b1cdbd2cSJim Jagielski }
731*b1cdbd2cSJim Jagielski return _pFallback;
732*b1cdbd2cSJim Jagielski }
733*b1cdbd2cSJim Jagielski
lcl_getBasicIDEServiceName()734*b1cdbd2cSJim Jagielski const ::rtl::OUString& lcl_getBasicIDEServiceName()
735*b1cdbd2cSJim Jagielski {
736*b1cdbd2cSJim Jagielski static const ::rtl::OUString s_sBasicName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.script.BasicIDE" ) );
737*b1cdbd2cSJim Jagielski return s_sBasicName;
738*b1cdbd2cSJim Jagielski }
739*b1cdbd2cSJim Jagielski
lcl_getBasicIDEViewFrame(SfxObjectShell * i_pBasicIDE)740*b1cdbd2cSJim Jagielski SfxViewFrame* lcl_getBasicIDEViewFrame( SfxObjectShell* i_pBasicIDE )
741*b1cdbd2cSJim Jagielski {
742*b1cdbd2cSJim Jagielski SfxViewFrame* pView = SfxViewFrame::GetFirst( i_pBasicIDE );
743*b1cdbd2cSJim Jagielski while ( pView )
744*b1cdbd2cSJim Jagielski {
745*b1cdbd2cSJim Jagielski if ( pView->GetObjectShell()->GetFactory().GetDocumentServiceName() == lcl_getBasicIDEServiceName() )
746*b1cdbd2cSJim Jagielski break;
747*b1cdbd2cSJim Jagielski pView = SfxViewFrame::GetNext( *pView, i_pBasicIDE );
748*b1cdbd2cSJim Jagielski }
749*b1cdbd2cSJim Jagielski return pView;
750*b1cdbd2cSJim Jagielski }
lcl_findStartModuleFrame(const::comphelper::ComponentContext & i_rContext)751*b1cdbd2cSJim Jagielski Reference< XFrame > lcl_findStartModuleFrame( const ::comphelper::ComponentContext& i_rContext )
752*b1cdbd2cSJim Jagielski {
753*b1cdbd2cSJim Jagielski try
754*b1cdbd2cSJim Jagielski {
755*b1cdbd2cSJim Jagielski Reference < XFramesSupplier > xSupplier( i_rContext.createComponent( "com.sun.star.frame.Desktop" ), UNO_QUERY_THROW );
756*b1cdbd2cSJim Jagielski Reference < XIndexAccess > xContainer( xSupplier->getFrames(), UNO_QUERY_THROW );
757*b1cdbd2cSJim Jagielski
758*b1cdbd2cSJim Jagielski Reference< XModuleManager > xCheck( i_rContext.createComponent( "com.sun.star.frame.ModuleManager" ), UNO_QUERY_THROW );
759*b1cdbd2cSJim Jagielski
760*b1cdbd2cSJim Jagielski sal_Int32 nCount = xContainer->getCount();
761*b1cdbd2cSJim Jagielski for ( sal_Int32 i=0; i<nCount; ++i )
762*b1cdbd2cSJim Jagielski {
763*b1cdbd2cSJim Jagielski try
764*b1cdbd2cSJim Jagielski {
765*b1cdbd2cSJim Jagielski Reference < XFrame > xFrame( xContainer->getByIndex(i), UNO_QUERY_THROW );
766*b1cdbd2cSJim Jagielski ::rtl::OUString sModule = xCheck->identify( xFrame );
767*b1cdbd2cSJim Jagielski if ( sModule.equalsAscii( "com.sun.star.frame.StartModule" ) )
768*b1cdbd2cSJim Jagielski return xFrame;
769*b1cdbd2cSJim Jagielski }
770*b1cdbd2cSJim Jagielski catch( const UnknownModuleException& )
771*b1cdbd2cSJim Jagielski {
772*b1cdbd2cSJim Jagielski // silence
773*b1cdbd2cSJim Jagielski }
774*b1cdbd2cSJim Jagielski catch(const Exception&)
775*b1cdbd2cSJim Jagielski {
776*b1cdbd2cSJim Jagielski // re-throw, caught below
777*b1cdbd2cSJim Jagielski throw;
778*b1cdbd2cSJim Jagielski }
779*b1cdbd2cSJim Jagielski }
780*b1cdbd2cSJim Jagielski }
781*b1cdbd2cSJim Jagielski catch( const Exception& )
782*b1cdbd2cSJim Jagielski {
783*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION();
784*b1cdbd2cSJim Jagielski }
785*b1cdbd2cSJim Jagielski return NULL;
786*b1cdbd2cSJim Jagielski }
787*b1cdbd2cSJim Jagielski }
788*b1cdbd2cSJim Jagielski
getConfigurationStringValue(const::rtl::OUString & rPackage,const::rtl::OUString & rRelPath,const::rtl::OUString & rKey,const::rtl::OUString & rDefaultValue)789*b1cdbd2cSJim Jagielski static ::rtl::OUString getConfigurationStringValue(
790*b1cdbd2cSJim Jagielski const ::rtl::OUString& rPackage,
791*b1cdbd2cSJim Jagielski const ::rtl::OUString& rRelPath,
792*b1cdbd2cSJim Jagielski const ::rtl::OUString& rKey,
793*b1cdbd2cSJim Jagielski const ::rtl::OUString& rDefaultValue )
794*b1cdbd2cSJim Jagielski {
795*b1cdbd2cSJim Jagielski ::rtl::OUString aDefVal( rDefaultValue );
796*b1cdbd2cSJim Jagielski
797*b1cdbd2cSJim Jagielski try
798*b1cdbd2cSJim Jagielski {
799*b1cdbd2cSJim Jagielski ::comphelper::ConfigurationHelper::readDirectKey(
800*b1cdbd2cSJim Jagielski comphelper::getProcessServiceFactory(),
801*b1cdbd2cSJim Jagielski rPackage,
802*b1cdbd2cSJim Jagielski rRelPath,
803*b1cdbd2cSJim Jagielski rKey,
804*b1cdbd2cSJim Jagielski ::comphelper::ConfigurationHelper::E_READONLY) >>= aDefVal;
805*b1cdbd2cSJim Jagielski }
806*b1cdbd2cSJim Jagielski catch(const com::sun::star::uno::RuntimeException& exRun)
807*b1cdbd2cSJim Jagielski { throw exRun; }
808*b1cdbd2cSJim Jagielski catch(const com::sun::star::uno::Exception&)
809*b1cdbd2cSJim Jagielski {}
810*b1cdbd2cSJim Jagielski
811*b1cdbd2cSJim Jagielski return aDefVal;
812*b1cdbd2cSJim Jagielski }
813*b1cdbd2cSJim Jagielski
OfaExec_Impl(SfxRequest & rReq)814*b1cdbd2cSJim Jagielski void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
815*b1cdbd2cSJim Jagielski {
816*b1cdbd2cSJim Jagielski DBG_MEMTEST();
817*b1cdbd2cSJim Jagielski switch ( rReq.GetSlot() )
818*b1cdbd2cSJim Jagielski {
819*b1cdbd2cSJim Jagielski case SID_OPTIONS_TREEDIALOG:
820*b1cdbd2cSJim Jagielski {
821*b1cdbd2cSJim Jagielski String sPageURL;
822*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG( rReq, pURLItem, SfxStringItem, SID_OPTIONS_PAGEURL, sal_False );
823*b1cdbd2cSJim Jagielski if ( pURLItem )
824*b1cdbd2cSJim Jagielski sPageURL = pURLItem->GetValue();
825*b1cdbd2cSJim Jagielski const SfxItemSet* pArgs = rReq.GetInternalArgs_Impl();
826*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem = NULL;
827*b1cdbd2cSJim Jagielski Reference < XFrame > xFrame;
828*b1cdbd2cSJim Jagielski if ( pArgs && pArgs->GetItemState( SID_FILLFRAME, sal_False, &pItem ) == SFX_ITEM_SET )
829*b1cdbd2cSJim Jagielski {
830*b1cdbd2cSJim Jagielski OSL_ENSURE( pItem->ISA( SfxUnoFrameItem ), "SfxApplication::OfaExec_Impl: XFrames are to be transported via SfxUnoFrameItem by now!" );
831*b1cdbd2cSJim Jagielski xFrame = static_cast< const SfxUnoFrameItem*>( pItem )->GetFrame();
832*b1cdbd2cSJim Jagielski }
833*b1cdbd2cSJim Jagielski SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
834*b1cdbd2cSJim Jagielski if ( pFact )
835*b1cdbd2cSJim Jagielski {
836*b1cdbd2cSJim Jagielski VclAbstractDialog* pDlg =
837*b1cdbd2cSJim Jagielski pFact->CreateFrameDialog( NULL, xFrame, rReq.GetSlot(), sPageURL );
838*b1cdbd2cSJim Jagielski pDlg->Execute();
839*b1cdbd2cSJim Jagielski delete pDlg;
840*b1cdbd2cSJim Jagielski SfxViewFrame* pView = SfxViewFrame::GetFirst();
841*b1cdbd2cSJim Jagielski while ( pView )
842*b1cdbd2cSJim Jagielski {
843*b1cdbd2cSJim Jagielski pView->GetBindings().InvalidateAll(sal_False);
844*b1cdbd2cSJim Jagielski pView = SfxViewFrame::GetNext( *pView );
845*b1cdbd2cSJim Jagielski }
846*b1cdbd2cSJim Jagielski }
847*b1cdbd2cSJim Jagielski break;
848*b1cdbd2cSJim Jagielski }
849*b1cdbd2cSJim Jagielski
850*b1cdbd2cSJim Jagielski case SID_MORE_DICTIONARIES:
851*b1cdbd2cSJim Jagielski {
852*b1cdbd2cSJim Jagielski try
853*b1cdbd2cSJim Jagielski {
854*b1cdbd2cSJim Jagielski uno::Reference< css::system::XSystemShellExecute > xSystemShell(
855*b1cdbd2cSJim Jagielski css::system::SystemShellExecute::create(
856*b1cdbd2cSJim Jagielski ::comphelper::getProcessComponentContext() ) );
857*b1cdbd2cSJim Jagielski
858*b1cdbd2cSJim Jagielski // read repository URL from configuration
859*b1cdbd2cSJim Jagielski ::rtl::OUString sTemplRepoURL =
860*b1cdbd2cSJim Jagielski getConfigurationStringValue(
861*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii("org.openoffice.Office.Common"),
862*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii("Dictionaries"),
863*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii("RepositoryURL"),
864*b1cdbd2cSJim Jagielski ::rtl::OUString());
865*b1cdbd2cSJim Jagielski
866*b1cdbd2cSJim Jagielski if ( xSystemShell.is() && sTemplRepoURL.getLength() > 0 )
867*b1cdbd2cSJim Jagielski {
868*b1cdbd2cSJim Jagielski ::rtl::OUStringBuffer aURLBuf( sTemplRepoURL );
869*b1cdbd2cSJim Jagielski aURLBuf.appendAscii( "?" );
870*b1cdbd2cSJim Jagielski aURLBuf.appendAscii( "lang=" );
871*b1cdbd2cSJim Jagielski
872*b1cdbd2cSJim Jagielski // read locale from configuration
873*b1cdbd2cSJim Jagielski ::rtl::OUString sLocale = getConfigurationStringValue(
874*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii("org.openoffice.Setup"),
875*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii("L10N"),
876*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii("ooLocale"),
877*b1cdbd2cSJim Jagielski ::rtl::OUString::createFromAscii("en-US"));
878*b1cdbd2cSJim Jagielski
879*b1cdbd2cSJim Jagielski aURLBuf.append( sLocale );
880*b1cdbd2cSJim Jagielski xSystemShell->execute(
881*b1cdbd2cSJim Jagielski aURLBuf.makeStringAndClear(),
882*b1cdbd2cSJim Jagielski ::rtl::OUString(),
883*b1cdbd2cSJim Jagielski css::system::SystemShellExecuteFlags::DEFAULTS );
884*b1cdbd2cSJim Jagielski }
885*b1cdbd2cSJim Jagielski }
886*b1cdbd2cSJim Jagielski catch( const ::com::sun::star::uno::Exception& )
887*b1cdbd2cSJim Jagielski {
888*b1cdbd2cSJim Jagielski DBG_ERRORFILE( "SfxApplication::OfaExec_Impl(SID_MORE_DICTIONARIES): caught an exception!" );
889*b1cdbd2cSJim Jagielski }
890*b1cdbd2cSJim Jagielski break;
891*b1cdbd2cSJim Jagielski }
892*b1cdbd2cSJim Jagielski
893*b1cdbd2cSJim Jagielski case SID_BASICIDE_APPEAR:
894*b1cdbd2cSJim Jagielski {
895*b1cdbd2cSJim Jagielski SfxViewFrame* pView = lcl_getBasicIDEViewFrame( NULL );
896*b1cdbd2cSJim Jagielski if ( !pView )
897*b1cdbd2cSJim Jagielski {
898*b1cdbd2cSJim Jagielski SfxObjectShell* pBasicIDE = SfxObjectShell::CreateObject( lcl_getBasicIDEServiceName() );
899*b1cdbd2cSJim Jagielski pBasicIDE->DoInitNew( 0 );
900*b1cdbd2cSJim Jagielski pBasicIDE->SetModified( sal_False );
901*b1cdbd2cSJim Jagielski try
902*b1cdbd2cSJim Jagielski {
903*b1cdbd2cSJim Jagielski // load the Basic IDE via direct access to the SFX frame loader. A generic loadComponentFromURL
904*b1cdbd2cSJim Jagielski // (which could be done via SfxViewFrame::LoadDocumentIntoFrame) is not feasible here, since the Basic IDE
905*b1cdbd2cSJim Jagielski // does not really play nice with the framework's concept. For instance, it is a "singleton document",
906*b1cdbd2cSJim Jagielski // which conflicts, at the latest, with the framework's concept of loading into _blank frames.
907*b1cdbd2cSJim Jagielski // So, since we know that our frame loader can handle it, we skip the generic framework loader
908*b1cdbd2cSJim Jagielski // mechanism, and the type detection (which doesn't know about the Basic IDE).
909*b1cdbd2cSJim Jagielski ::comphelper::ComponentContext aContext( ::comphelper::getProcessServiceFactory() );
910*b1cdbd2cSJim Jagielski Reference< XSynchronousFrameLoader > xLoader( aContext.createComponent(
911*b1cdbd2cSJim Jagielski SfxFrameLoader_Impl::impl_getStaticImplementationName() ), UNO_QUERY_THROW );
912*b1cdbd2cSJim Jagielski ::comphelper::NamedValueCollection aLoadArgs;
913*b1cdbd2cSJim Jagielski aLoadArgs.put( "Model", pBasicIDE->GetModel() );
914*b1cdbd2cSJim Jagielski aLoadArgs.put( "URL", ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "private:factory/sbasic" ) ) );
915*b1cdbd2cSJim Jagielski
916*b1cdbd2cSJim Jagielski Reference< XFrame > xTargetFrame( lcl_findStartModuleFrame( aContext ) );
917*b1cdbd2cSJim Jagielski if ( !xTargetFrame.is() )
918*b1cdbd2cSJim Jagielski xTargetFrame = SfxFrame::CreateBlankFrame();
919*b1cdbd2cSJim Jagielski ENSURE_OR_THROW( xTargetFrame.is(), "could not obtain a frameto load the Basic IDE into!" );
920*b1cdbd2cSJim Jagielski
921*b1cdbd2cSJim Jagielski xLoader->load( aLoadArgs.getPropertyValues(), xTargetFrame );
922*b1cdbd2cSJim Jagielski }
923*b1cdbd2cSJim Jagielski catch( const Exception& )
924*b1cdbd2cSJim Jagielski {
925*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION();
926*b1cdbd2cSJim Jagielski }
927*b1cdbd2cSJim Jagielski
928*b1cdbd2cSJim Jagielski pView = lcl_getBasicIDEViewFrame( pBasicIDE );
929*b1cdbd2cSJim Jagielski if ( pView )
930*b1cdbd2cSJim Jagielski pView->SetName( String( RTL_CONSTASCII_USTRINGPARAM( "BASIC:1" ) ) );
931*b1cdbd2cSJim Jagielski }
932*b1cdbd2cSJim Jagielski
933*b1cdbd2cSJim Jagielski if ( pView )
934*b1cdbd2cSJim Jagielski pView->GetFrame().Appear();
935*b1cdbd2cSJim Jagielski
936*b1cdbd2cSJim Jagielski const SfxItemSet* pArgs = rReq.GetArgs();
937*b1cdbd2cSJim Jagielski if ( pArgs && pView )
938*b1cdbd2cSJim Jagielski {
939*b1cdbd2cSJim Jagielski SfxViewShell* pViewShell = pView->GetViewShell();
940*b1cdbd2cSJim Jagielski SfxObjectShell* pObjShell = pView->GetObjectShell();
941*b1cdbd2cSJim Jagielski if ( pViewShell && pObjShell )
942*b1cdbd2cSJim Jagielski {
943*b1cdbd2cSJim Jagielski SfxRequest aReq( SID_BASICIDE_SHOWWINDOW, SFX_CALLMODE_SYNCHRON, pObjShell->GetPool() );
944*b1cdbd2cSJim Jagielski aReq.SetArgs( *pArgs );
945*b1cdbd2cSJim Jagielski pViewShell->ExecuteSlot( aReq );
946*b1cdbd2cSJim Jagielski }
947*b1cdbd2cSJim Jagielski }
948*b1cdbd2cSJim Jagielski
949*b1cdbd2cSJim Jagielski rReq.Done();
950*b1cdbd2cSJim Jagielski }
951*b1cdbd2cSJim Jagielski break;
952*b1cdbd2cSJim Jagielski
953*b1cdbd2cSJim Jagielski case SID_BASICCHOOSER:
954*b1cdbd2cSJim Jagielski {
955*b1cdbd2cSJim Jagielski const SfxItemSet* pArgs = rReq.GetArgs();
956*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem;
957*b1cdbd2cSJim Jagielski sal_Bool bChooseOnly = sal_False;
958*b1cdbd2cSJim Jagielski Reference< XModel > xLimitToModel;
959*b1cdbd2cSJim Jagielski if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(SID_RECORDMACRO, sal_False, &pItem) )
960*b1cdbd2cSJim Jagielski {
961*b1cdbd2cSJim Jagielski sal_Bool bRecord = ((SfxBoolItem*)pItem)->GetValue();
962*b1cdbd2cSJim Jagielski if ( bRecord )
963*b1cdbd2cSJim Jagielski {
964*b1cdbd2cSJim Jagielski // !Hack
965*b1cdbd2cSJim Jagielski bChooseOnly = sal_False;
966*b1cdbd2cSJim Jagielski SfxObjectShell* pCurrentShell = SfxObjectShell::Current();
967*b1cdbd2cSJim Jagielski OSL_ENSURE( pCurrentShell, "macro recording outside an SFX document?" );
968*b1cdbd2cSJim Jagielski if ( pCurrentShell )
969*b1cdbd2cSJim Jagielski xLimitToModel = pCurrentShell->GetModel();
970*b1cdbd2cSJim Jagielski }
971*b1cdbd2cSJim Jagielski }
972*b1cdbd2cSJim Jagielski
973*b1cdbd2cSJim Jagielski rReq.SetReturnValue( SfxStringItem( rReq.GetSlot(), ChooseMacro( xLimitToModel, bChooseOnly ) ) );
974*b1cdbd2cSJim Jagielski rReq.Done();
975*b1cdbd2cSJim Jagielski }
976*b1cdbd2cSJim Jagielski break;
977*b1cdbd2cSJim Jagielski
978*b1cdbd2cSJim Jagielski case SID_MACROORGANIZER:
979*b1cdbd2cSJim Jagielski {
980*b1cdbd2cSJim Jagielski OSL_TRACE("handling SID_MACROORGANIZER");
981*b1cdbd2cSJim Jagielski const SfxItemSet* pArgs = rReq.GetArgs();
982*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem;
983*b1cdbd2cSJim Jagielski sal_Int16 nTabId = 0;
984*b1cdbd2cSJim Jagielski if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(SID_MACROORGANIZER, sal_False, &pItem) )
985*b1cdbd2cSJim Jagielski {
986*b1cdbd2cSJim Jagielski nTabId = ((SfxUInt16Item*)pItem)->GetValue();
987*b1cdbd2cSJim Jagielski }
988*b1cdbd2cSJim Jagielski
989*b1cdbd2cSJim Jagielski SfxApplication::MacroOrganizer( nTabId );
990*b1cdbd2cSJim Jagielski rReq.Done();
991*b1cdbd2cSJim Jagielski }
992*b1cdbd2cSJim Jagielski break;
993*b1cdbd2cSJim Jagielski
994*b1cdbd2cSJim Jagielski case SID_RUNMACRO:
995*b1cdbd2cSJim Jagielski {
996*b1cdbd2cSJim Jagielski SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
997*b1cdbd2cSJim Jagielski OSL_TRACE("SfxApplication::OfaExec_Impl: case ScriptOrg");
998*b1cdbd2cSJim Jagielski
999*b1cdbd2cSJim Jagielski Reference< XFrame > xFrame;
1000*b1cdbd2cSJim Jagielski const SfxItemSet* pIntSet = rReq.GetInternalArgs_Impl();
1001*b1cdbd2cSJim Jagielski SFX_ITEMSET_ARG( pIntSet, pFrameItem, SfxUnoFrameItem, SID_FILLFRAME, sal_False );
1002*b1cdbd2cSJim Jagielski if ( pFrameItem )
1003*b1cdbd2cSJim Jagielski xFrame = pFrameItem->GetFrame();
1004*b1cdbd2cSJim Jagielski
1005*b1cdbd2cSJim Jagielski if ( !xFrame.is() )
1006*b1cdbd2cSJim Jagielski {
1007*b1cdbd2cSJim Jagielski const SfxViewFrame* pViewFrame = SfxViewFrame::Current();
1008*b1cdbd2cSJim Jagielski if ( pViewFrame )
1009*b1cdbd2cSJim Jagielski xFrame = pViewFrame->GetFrame().GetFrameInterface();
1010*b1cdbd2cSJim Jagielski }
1011*b1cdbd2cSJim Jagielski
1012*b1cdbd2cSJim Jagielski do // artificial loop for flow control
1013*b1cdbd2cSJim Jagielski {
1014*b1cdbd2cSJim Jagielski AbstractScriptSelectorDialog* pDlg = pFact->CreateScriptSelectorDialog(
1015*b1cdbd2cSJim Jagielski lcl_getDialogParent( xFrame, GetTopWindow() ), sal_False, xFrame );
1016*b1cdbd2cSJim Jagielski OSL_ENSURE( pDlg, "SfxApplication::OfaExec_Impl( SID_RUNMACRO ): no dialog!" );
1017*b1cdbd2cSJim Jagielski if ( !pDlg )
1018*b1cdbd2cSJim Jagielski break;
1019*b1cdbd2cSJim Jagielski pDlg->SetRunLabel();
1020*b1cdbd2cSJim Jagielski
1021*b1cdbd2cSJim Jagielski short nDialogResult = pDlg->Execute();
1022*b1cdbd2cSJim Jagielski if ( !nDialogResult )
1023*b1cdbd2cSJim Jagielski break;
1024*b1cdbd2cSJim Jagielski
1025*b1cdbd2cSJim Jagielski Sequence< Any > args;
1026*b1cdbd2cSJim Jagielski Sequence< sal_Int16 > outIndex;
1027*b1cdbd2cSJim Jagielski Sequence< Any > outArgs;
1028*b1cdbd2cSJim Jagielski Any ret;
1029*b1cdbd2cSJim Jagielski
1030*b1cdbd2cSJim Jagielski Reference< XInterface > xScriptContext;
1031*b1cdbd2cSJim Jagielski
1032*b1cdbd2cSJim Jagielski Reference< XController > xController;
1033*b1cdbd2cSJim Jagielski if ( xFrame.is() )
1034*b1cdbd2cSJim Jagielski xController = xFrame->getController();
1035*b1cdbd2cSJim Jagielski if ( xController.is() )
1036*b1cdbd2cSJim Jagielski xScriptContext = xController->getModel();
1037*b1cdbd2cSJim Jagielski if ( !xScriptContext.is() )
1038*b1cdbd2cSJim Jagielski xScriptContext = xController;
1039*b1cdbd2cSJim Jagielski
1040*b1cdbd2cSJim Jagielski SfxObjectShell::CallXScript( xScriptContext, pDlg->GetScriptURL(), args, ret, outIndex, outArgs );
1041*b1cdbd2cSJim Jagielski }
1042*b1cdbd2cSJim Jagielski while ( false );
1043*b1cdbd2cSJim Jagielski rReq.Done();
1044*b1cdbd2cSJim Jagielski }
1045*b1cdbd2cSJim Jagielski break;
1046*b1cdbd2cSJim Jagielski
1047*b1cdbd2cSJim Jagielski case SID_SCRIPTORGANIZER:
1048*b1cdbd2cSJim Jagielski {
1049*b1cdbd2cSJim Jagielski SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
1050*b1cdbd2cSJim Jagielski OSL_TRACE("SfxApplication::OfaExec_Impl: case ScriptOrg");
1051*b1cdbd2cSJim Jagielski const SfxItemSet* pArgs = rReq.GetArgs();
1052*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem;
1053*b1cdbd2cSJim Jagielski String aLanguage;
1054*b1cdbd2cSJim Jagielski if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(SID_SCRIPTORGANIZER, sal_False, &pItem) )
1055*b1cdbd2cSJim Jagielski {
1056*b1cdbd2cSJim Jagielski aLanguage = ((SfxScriptOrganizerItem*)pItem)->getLanguage();
1057*b1cdbd2cSJim Jagielski }
1058*b1cdbd2cSJim Jagielski
1059*b1cdbd2cSJim Jagielski ::rtl::OUString aLang( aLanguage );
1060*b1cdbd2cSJim Jagielski OSL_TRACE("SfxApplication::OfaExec_Impl: about to create dialog for: %s", ::rtl::OUStringToOString( aLang , RTL_TEXTENCODING_ASCII_US ).pData->buffer);
1061*b1cdbd2cSJim Jagielski // not sure about the Window*
1062*b1cdbd2cSJim Jagielski VclAbstractDialog* pDlg = pFact->CreateSvxScriptOrgDialog( GetTopWindow(), aLanguage );
1063*b1cdbd2cSJim Jagielski if( pDlg )
1064*b1cdbd2cSJim Jagielski {
1065*b1cdbd2cSJim Jagielski pDlg->Execute();
1066*b1cdbd2cSJim Jagielski }
1067*b1cdbd2cSJim Jagielski else
1068*b1cdbd2cSJim Jagielski {
1069*b1cdbd2cSJim Jagielski OSL_TRACE("no dialog!!!");
1070*b1cdbd2cSJim Jagielski }
1071*b1cdbd2cSJim Jagielski rReq.Done();
1072*b1cdbd2cSJim Jagielski }
1073*b1cdbd2cSJim Jagielski break;
1074*b1cdbd2cSJim Jagielski
1075*b1cdbd2cSJim Jagielski case SID_OFFICE_CHECK_PLZ:
1076*b1cdbd2cSJim Jagielski {
1077*b1cdbd2cSJim Jagielski sal_Bool bRet = sal_False;
1078*b1cdbd2cSJim Jagielski SFX_REQUEST_ARG(rReq, pStringItem, SfxStringItem, rReq.GetSlot(), sal_False);
1079*b1cdbd2cSJim Jagielski
1080*b1cdbd2cSJim Jagielski if ( pStringItem )
1081*b1cdbd2cSJim Jagielski {
1082*b1cdbd2cSJim Jagielski String aPLZ = pStringItem->GetValue();
1083*b1cdbd2cSJim Jagielski bRet = sal_True /*!!!SfxIniManager::CheckPLZ( aPLZ )*/;
1084*b1cdbd2cSJim Jagielski }
1085*b1cdbd2cSJim Jagielski else
1086*b1cdbd2cSJim Jagielski SbxBase::SetError( SbxERR_WRONG_ARGS );
1087*b1cdbd2cSJim Jagielski rReq.SetReturnValue( SfxBoolItem( rReq.GetSlot(), bRet ) );
1088*b1cdbd2cSJim Jagielski }
1089*b1cdbd2cSJim Jagielski break;
1090*b1cdbd2cSJim Jagielski
1091*b1cdbd2cSJim Jagielski case SID_AUTO_CORRECT_DLG:
1092*b1cdbd2cSJim Jagielski {
1093*b1cdbd2cSJim Jagielski SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
1094*b1cdbd2cSJim Jagielski if ( pFact )
1095*b1cdbd2cSJim Jagielski {
1096*b1cdbd2cSJim Jagielski SfxItemSet aSet(GetPool(), SID_AUTO_CORRECT_DLG, SID_AUTO_CORRECT_DLG);
1097*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem=NULL;
1098*b1cdbd2cSJim Jagielski const SfxItemSet* pSet = rReq.GetArgs();
1099*b1cdbd2cSJim Jagielski SfxItemPool* pSetPool = pSet ? pSet->GetPool() : NULL;
1100*b1cdbd2cSJim Jagielski if ( pSet && pSet->GetItemState( pSetPool->GetWhich( SID_AUTO_CORRECT_DLG ), sal_False, &pItem ) == SFX_ITEM_SET )
1101*b1cdbd2cSJim Jagielski aSet.Put( *pItem );
1102*b1cdbd2cSJim Jagielski
1103*b1cdbd2cSJim Jagielski SfxAbstractTabDialog* pDlg = pFact->CreateTabDialog( RID_OFA_AUTOCORR_DLG, NULL, &aSet, NULL );
1104*b1cdbd2cSJim Jagielski pDlg->Execute();
1105*b1cdbd2cSJim Jagielski delete pDlg;
1106*b1cdbd2cSJim Jagielski }
1107*b1cdbd2cSJim Jagielski
1108*b1cdbd2cSJim Jagielski break;
1109*b1cdbd2cSJim Jagielski }
1110*b1cdbd2cSJim Jagielski
1111*b1cdbd2cSJim Jagielski case SID_SD_AUTOPILOT :
1112*b1cdbd2cSJim Jagielski case SID_NEWSD :
1113*b1cdbd2cSJim Jagielski {
1114*b1cdbd2cSJim Jagielski SvtModuleOptions aModuleOpt;
1115*b1cdbd2cSJim Jagielski if ( !aModuleOpt.IsImpress() )
1116*b1cdbd2cSJim Jagielski {
1117*b1cdbd2cSJim Jagielski ErrorBox( 0, ResId( RID_ERRBOX_MODULENOTINSTALLED, *GetOffResManager_Impl() )).Execute();
1118*b1cdbd2cSJim Jagielski return;
1119*b1cdbd2cSJim Jagielski }
1120*b1cdbd2cSJim Jagielski
1121*b1cdbd2cSJim Jagielski Reference< com::sun::star::lang::XMultiServiceFactory > xORB = ::comphelper::getProcessServiceFactory();
1122*b1cdbd2cSJim Jagielski Reference< com::sun::star::frame::XDispatchProvider > xProv(
1123*b1cdbd2cSJim Jagielski xORB->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.drawing.ModuleDispatcher")), UNO_QUERY );
1124*b1cdbd2cSJim Jagielski
1125*b1cdbd2cSJim Jagielski if ( xProv.is() )
1126*b1cdbd2cSJim Jagielski {
1127*b1cdbd2cSJim Jagielski ::rtl::OUString aCmd = ::rtl::OUString::createFromAscii( GetInterface()->GetSlot( rReq.GetSlot() )->GetUnoName() );
1128*b1cdbd2cSJim Jagielski Reference< com::sun::star::frame::XDispatchHelper > xHelper(
1129*b1cdbd2cSJim Jagielski xORB->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.frame.DispatchHelper")), UNO_QUERY );
1130*b1cdbd2cSJim Jagielski if ( xHelper.is() )
1131*b1cdbd2cSJim Jagielski {
1132*b1cdbd2cSJim Jagielski Sequence < com::sun::star::beans::PropertyValue > aSeq;
1133*b1cdbd2cSJim Jagielski if ( rReq.GetArgs() )
1134*b1cdbd2cSJim Jagielski TransformItems( rReq.GetSlot(), *rReq.GetArgs(), aSeq );
1135*b1cdbd2cSJim Jagielski Any aResult = xHelper->executeDispatch( xProv, aCmd, ::rtl::OUString(), 0, aSeq );
1136*b1cdbd2cSJim Jagielski ::com::sun::star::frame::DispatchResultEvent aEvent;
1137*b1cdbd2cSJim Jagielski sal_Bool bSuccess = (
1138*b1cdbd2cSJim Jagielski (aResult >>= aEvent) &&
1139*b1cdbd2cSJim Jagielski (aEvent.State == ::com::sun::star::frame::DispatchResultState::SUCCESS)
1140*b1cdbd2cSJim Jagielski );
1141*b1cdbd2cSJim Jagielski rReq.SetReturnValue( SfxBoolItem( rReq.GetSlot(), bSuccess ) );
1142*b1cdbd2cSJim Jagielski }
1143*b1cdbd2cSJim Jagielski }
1144*b1cdbd2cSJim Jagielski }
1145*b1cdbd2cSJim Jagielski break;
1146*b1cdbd2cSJim Jagielski
1147*b1cdbd2cSJim Jagielski case FN_LABEL :
1148*b1cdbd2cSJim Jagielski case FN_BUSINESS_CARD :
1149*b1cdbd2cSJim Jagielski case FN_XFORMS_INIT :
1150*b1cdbd2cSJim Jagielski {
1151*b1cdbd2cSJim Jagielski Reference< com::sun::star::lang::XMultiServiceFactory > xORB = ::comphelper::getProcessServiceFactory();
1152*b1cdbd2cSJim Jagielski Reference< com::sun::star::frame::XDispatchProvider > xProv(
1153*b1cdbd2cSJim Jagielski xORB->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.text.ModuleDispatcher")), UNO_QUERY );
1154*b1cdbd2cSJim Jagielski
1155*b1cdbd2cSJim Jagielski if ( xProv.is() )
1156*b1cdbd2cSJim Jagielski {
1157*b1cdbd2cSJim Jagielski ::rtl::OUString aCmd = ::rtl::OUString::createFromAscii( GetInterface()->GetSlot( rReq.GetSlot() )->GetUnoName() );
1158*b1cdbd2cSJim Jagielski Reference< com::sun::star::frame::XDispatchHelper > xHelper(
1159*b1cdbd2cSJim Jagielski xORB->createInstance( ::rtl::OUString::createFromAscii("com.sun.star.frame.DispatchHelper")), UNO_QUERY );
1160*b1cdbd2cSJim Jagielski if ( xHelper.is() )
1161*b1cdbd2cSJim Jagielski {
1162*b1cdbd2cSJim Jagielski Sequence < com::sun::star::beans::PropertyValue > aSeq;
1163*b1cdbd2cSJim Jagielski if ( rReq.GetArgs() )
1164*b1cdbd2cSJim Jagielski TransformItems( rReq.GetSlot(), *rReq.GetArgs(), aSeq );
1165*b1cdbd2cSJim Jagielski Any aResult = xHelper->executeDispatch( xProv, aCmd, ::rtl::OUString(), 0, aSeq );
1166*b1cdbd2cSJim Jagielski ::com::sun::star::frame::DispatchResultEvent aEvent;
1167*b1cdbd2cSJim Jagielski sal_Bool bSuccess = (
1168*b1cdbd2cSJim Jagielski (aResult >>= aEvent) &&
1169*b1cdbd2cSJim Jagielski (aEvent.State == ::com::sun::star::frame::DispatchResultState::SUCCESS)
1170*b1cdbd2cSJim Jagielski );
1171*b1cdbd2cSJim Jagielski rReq.SetReturnValue( SfxBoolItem( rReq.GetSlot(), bSuccess ) );
1172*b1cdbd2cSJim Jagielski }
1173*b1cdbd2cSJim Jagielski }
1174*b1cdbd2cSJim Jagielski }
1175*b1cdbd2cSJim Jagielski break;
1176*b1cdbd2cSJim Jagielski
1177*b1cdbd2cSJim Jagielski case SID_ADDRESS_DATA_SOURCE:
1178*b1cdbd2cSJim Jagielski {
1179*b1cdbd2cSJim Jagielski ::rtl::OUString sDialogServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.AddressBookSourcePilot" ) );
1180*b1cdbd2cSJim Jagielski try
1181*b1cdbd2cSJim Jagielski {
1182*b1cdbd2cSJim Jagielski Reference< com::sun::star::lang::XMultiServiceFactory > xORB = ::comphelper::getProcessServiceFactory();
1183*b1cdbd2cSJim Jagielski Reference< com::sun::star::ui::dialogs::XExecutableDialog > xDialog;
1184*b1cdbd2cSJim Jagielski if (xORB.is())
1185*b1cdbd2cSJim Jagielski xDialog = Reference< com::sun::star::ui::dialogs::XExecutableDialog >(xORB->createInstance(sDialogServiceName), UNO_QUERY);
1186*b1cdbd2cSJim Jagielski if (xDialog.is())
1187*b1cdbd2cSJim Jagielski xDialog->execute();
1188*b1cdbd2cSJim Jagielski else
1189*b1cdbd2cSJim Jagielski ShowServiceNotAvailableError(NULL, sDialogServiceName, sal_True);
1190*b1cdbd2cSJim Jagielski }
1191*b1cdbd2cSJim Jagielski catch(::com::sun::star::uno::Exception&)
1192*b1cdbd2cSJim Jagielski {
1193*b1cdbd2cSJim Jagielski }
1194*b1cdbd2cSJim Jagielski }
1195*b1cdbd2cSJim Jagielski break;
1196*b1cdbd2cSJim Jagielski
1197*b1cdbd2cSJim Jagielski case SID_COMP_BIBLIOGRAPHY:
1198*b1cdbd2cSJim Jagielski {
1199*b1cdbd2cSJim Jagielski SfxStringItem aURL(SID_FILE_NAME, String::CreateFromAscii(".component:Bibliography/View1"));
1200*b1cdbd2cSJim Jagielski SfxStringItem aRef(SID_REFERER, String::CreateFromAscii("private:user"));
1201*b1cdbd2cSJim Jagielski SfxStringItem aTarget(SID_TARGETNAME, String::CreateFromAscii("_blank"));
1202*b1cdbd2cSJim Jagielski SfxViewFrame::Current()->GetDispatcher()->Execute( SID_OPENDOC, SFX_CALLMODE_ASYNCHRON, &aURL, &aRef, &aTarget, 0L);
1203*b1cdbd2cSJim Jagielski }
1204*b1cdbd2cSJim Jagielski break;
1205*b1cdbd2cSJim Jagielski }
1206*b1cdbd2cSJim Jagielski }
1207*b1cdbd2cSJim Jagielski
OfaState_Impl(SfxItemSet & rSet)1208*b1cdbd2cSJim Jagielski void SfxApplication::OfaState_Impl(SfxItemSet &rSet)
1209*b1cdbd2cSJim Jagielski {
1210*b1cdbd2cSJim Jagielski SvtModuleOptions aModuleOpt;
1211*b1cdbd2cSJim Jagielski
1212*b1cdbd2cSJim Jagielski if( !aModuleOpt.IsWriter())
1213*b1cdbd2cSJim Jagielski {
1214*b1cdbd2cSJim Jagielski rSet.DisableItem( FN_LABEL );
1215*b1cdbd2cSJim Jagielski rSet.DisableItem( FN_BUSINESS_CARD );
1216*b1cdbd2cSJim Jagielski rSet.DisableItem( FN_XFORMS_INIT );
1217*b1cdbd2cSJim Jagielski }
1218*b1cdbd2cSJim Jagielski
1219*b1cdbd2cSJim Jagielski if ( !aModuleOpt.IsImpress() )
1220*b1cdbd2cSJim Jagielski rSet.DisableItem( SID_SD_AUTOPILOT );
1221*b1cdbd2cSJim Jagielski }
1222