Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <sfx2/frame.hxx>
21 : #include <sfx2/viewfrm.hxx>
22 : #include <sot/formats.hxx>
23 : #include <sfx2/sfxsids.hrc>
24 : #include <svl/macitem.hxx>
25 : #include <ucbhelper/content.hxx>
26 : #include <unotools/localfilehelper.hxx>
27 : #include "cuihyperdlg.hxx"
28 : #include "hltpbase.hxx"
29 : #include "macroass.hxx"
30 : #include <svx/svxdlg.hxx>
31 : #include <cuires.hrc>
32 : #include <vcl/builderfactory.hxx>
33 : #include <boost/scoped_ptr.hpp>
34 :
35 : using namespace ::ucbhelper;
36 :
37 : //# ComboBox-Control for URL's with History and Autocompletion #
38 :
39 0 : SvxHyperURLBox::SvxHyperURLBox( vcl::Window* pParent, INetProtocol eSmart )
40 : : SvtURLBox ( pParent, eSmart ),
41 0 : DropTargetHelper ( this )
42 : {
43 0 : }
44 :
45 0 : VCL_BUILDER_FACTORY_ARGS(SvxHyperURLBox, INetProtocol::Http)
46 :
47 0 : sal_Int8 SvxHyperURLBox::AcceptDrop( const AcceptDropEvent& /* rEvt */ )
48 : {
49 0 : return IsDropFormatSupported( SotClipboardFormatId::STRING ) ? DND_ACTION_COPY : DND_ACTION_NONE;
50 : }
51 :
52 0 : sal_Int8 SvxHyperURLBox::ExecuteDrop( const ExecuteDropEvent& rEvt )
53 : {
54 0 : TransferableDataHelper aDataHelper( rEvt.maDropEvent.Transferable );
55 0 : OUString aString;
56 0 : sal_Int8 nRet = DND_ACTION_NONE;
57 :
58 0 : if( aDataHelper.GetString( SotClipboardFormatId::STRING, aString ) )
59 : {
60 0 : SetText( aString );
61 0 : nRet = DND_ACTION_COPY;
62 : }
63 :
64 0 : return nRet;
65 : }
66 :
67 0 : void SvxHyperURLBox::Select()
68 : {
69 0 : SvtURLBox::Select();
70 0 : }
71 0 : void SvxHyperURLBox::Modify()
72 : {
73 0 : SvtURLBox::Modify();
74 0 : }
75 0 : bool SvxHyperURLBox::Notify( NotifyEvent& rNEvt )
76 : {
77 0 : return SvtURLBox::Notify( rNEvt );
78 : }
79 0 : bool SvxHyperURLBox::PreNotify( NotifyEvent& rNEvt )
80 : {
81 0 : return SvtURLBox::PreNotify( rNEvt );
82 : }
83 :
84 : //# Hyperlink-Dialog: Tabpages-Baseclass #
85 :
86 0 : SvxHyperlinkTabPageBase::SvxHyperlinkTabPageBase ( vcl::Window *pParent,
87 : IconChoiceDialog* pDlg,
88 : const OString& rID,
89 : const OUString& rUIXMLDescription,
90 : const SfxItemSet& rItemSet )
91 : : IconChoicePage ( pParent, rID, rUIXMLDescription, rItemSet ),
92 : mpCbbFrame ( NULL ),
93 : mpLbForm ( NULL ),
94 : mpEdIndication ( NULL ),
95 : mpEdText ( NULL ),
96 : mpBtScript ( NULL ),
97 : mbIsCloseDisabled ( false ),
98 : mpDialog ( pDlg ),
99 : mbStdControlsInit ( false ),
100 0 : aEmptyStr()
101 : {
102 : // create bookmark-window
103 0 : mpMarkWnd = VclPtr<SvxHlinkDlgMarkWnd>::Create( this );
104 0 : }
105 :
106 0 : SvxHyperlinkTabPageBase::~SvxHyperlinkTabPageBase()
107 : {
108 0 : disposeOnce();
109 0 : }
110 :
111 0 : void SvxHyperlinkTabPageBase::dispose()
112 : {
113 0 : maTimer.Stop();
114 :
115 0 : mpMarkWnd.disposeAndClear();
116 :
117 0 : mpCbbFrame.clear();
118 0 : mpLbForm.clear();
119 0 : mpEdIndication.clear();
120 0 : mpEdText.clear();
121 0 : mpBtScript.clear();
122 0 : mpDialog.clear();
123 :
124 0 : IconChoicePage::dispose();
125 0 : }
126 :
127 0 : void SvxHyperlinkTabPageBase::ActivatePage()
128 : {
129 0 : TabPage::ActivatePage();
130 0 : }
131 :
132 0 : void SvxHyperlinkTabPageBase::DeactivatePage()
133 : {
134 0 : TabPage::DeactivatePage();
135 0 : }
136 :
137 0 : bool SvxHyperlinkTabPageBase::QueryClose()
138 : {
139 0 : return !mbIsCloseDisabled;
140 : }
141 :
142 0 : void SvxHyperlinkTabPageBase::InitStdControls ()
143 : {
144 0 : if ( !mbStdControlsInit )
145 : {
146 0 : get(mpCbbFrame, "frame");
147 :
148 0 : SfxDispatcher* pDispatch = GetDispatcher();
149 0 : SfxViewFrame* pViewFrame = pDispatch ? pDispatch->GetFrame() : 0;
150 0 : SfxFrame* pFrame = pViewFrame ? &pViewFrame->GetTopFrame() : 0;
151 0 : if ( pFrame )
152 : {
153 0 : boost::scoped_ptr<TargetList> pList(new TargetList);
154 0 : pFrame->GetTargetList(*pList);
155 0 : if( !pList->empty() )
156 : {
157 0 : size_t nCount = pList->size();
158 : size_t i;
159 0 : for ( i = 0; i < nCount; i++ )
160 : {
161 0 : mpCbbFrame->InsertEntry( pList->at( i ) );
162 : }
163 0 : }
164 : }
165 :
166 0 : get(mpLbForm, "form");
167 0 : get(mpEdIndication, "indication");
168 0 : get(mpEdText, "name");
169 0 : get(mpBtScript, "script");
170 0 : mpBtScript->SetModeImage(Image(CUI_RES (RID_SVXBMP_SCRIPT)));
171 :
172 0 : mpBtScript->SetClickHdl ( LINK ( this, SvxHyperlinkTabPageBase, ClickScriptHdl_Impl ) );
173 0 : mpBtScript->EnableTextDisplay (false);
174 : }
175 :
176 0 : mbStdControlsInit = true;
177 0 : }
178 :
179 : // Move Extra-Window
180 0 : bool SvxHyperlinkTabPageBase::MoveToExtraWnd( Point aNewPos, bool bDisConnectDlg )
181 : {
182 0 : bool bReturn = mpMarkWnd->MoveTo ( aNewPos );
183 :
184 0 : if( bDisConnectDlg )
185 0 : mpMarkWnd->ConnectToDialog( false );
186 :
187 0 : return ( !bReturn && IsMarkWndVisible() );
188 : }
189 :
190 : // Show Extra-Window
191 0 : void SvxHyperlinkTabPageBase::ShowMarkWnd ()
192 : {
193 0 : static_cast<vcl::Window*>(mpMarkWnd)->Show();
194 :
195 : // Size of dialog-window in screen pixels
196 0 : Rectangle aDlgRect( mpDialog->GetWindowExtentsRelative( NULL ) );
197 0 : Point aDlgPos ( aDlgRect.TopLeft() );
198 0 : Size aDlgSize ( mpDialog->GetSizePixel () );
199 :
200 : // Absolute size of the screen
201 0 : Rectangle aScreen( mpDialog->GetDesktopRectPixel() );
202 :
203 : // Size of Extrawindow
204 0 : Size aExtraWndSize( mpMarkWnd->GetSizePixel () );
205 :
206 : // mpMarkWnd is a child of mpDialog, so coordinates for positioning must be relative to mpDialog
207 0 : if( aDlgPos.X()+(1.05*aDlgSize.Width())+aExtraWndSize.Width() > aScreen.Right() )
208 : {
209 0 : if( aDlgPos.X() - ( 0.05*aDlgSize.Width() ) - aExtraWndSize.Width() < 0 )
210 : {
211 : // Pos Extrawindow anywhere
212 0 : MoveToExtraWnd( Point(10,10) ); // very unlikely
213 0 : mpMarkWnd->ConnectToDialog( false );
214 : }
215 : else
216 : {
217 : // Pos Extrawindow on the left side of Dialog
218 0 : MoveToExtraWnd( Point(0,0) - Point( long(0.05*aDlgSize.Width()), 0 ) - Point( aExtraWndSize.Width(), 0 ) );
219 : }
220 : }
221 : else
222 : {
223 : // Pos Extrawindow on the right side of Dialog
224 0 : MoveToExtraWnd ( Point( long(1.05*aDlgSize.getWidth()), 0 ) );
225 : }
226 :
227 : // Set size of Extra-Window
228 0 : mpMarkWnd->SetSizePixel( Size( aExtraWndSize.Width(), aDlgSize.Height() ) );
229 0 : }
230 :
231 : // Fill Dialogfields
232 0 : void SvxHyperlinkTabPageBase::FillStandardDlgFields ( const SvxHyperlinkItem* pHyperlinkItem )
233 : {
234 : // Frame
235 0 : sal_Int32 nPos = mpCbbFrame->GetEntryPos ( pHyperlinkItem->GetTargetFrame() );
236 0 : if ( nPos != COMBOBOX_ENTRY_NOTFOUND)
237 0 : mpCbbFrame->SetText ( pHyperlinkItem->GetTargetFrame() );
238 :
239 : // Form
240 0 : OUString aStrFormText = CUI_RESSTR( RID_SVXSTR_HYPERDLG_FROM_TEXT );
241 0 : OUString aStrFormButton = CUI_RESSTR( RID_SVXSTR_HYPERDLG_FORM_BUTTON );
242 :
243 0 : if( pHyperlinkItem->GetInsertMode() & HLINK_HTMLMODE )
244 : {
245 0 : mpLbForm->Clear();
246 0 : mpLbForm->InsertEntry( aStrFormText );
247 0 : mpLbForm->SelectEntryPos ( 0 );
248 : }
249 : else
250 : {
251 0 : mpLbForm->Clear();
252 0 : mpLbForm->InsertEntry( aStrFormText );
253 0 : mpLbForm->InsertEntry( aStrFormButton );
254 0 : mpLbForm->SelectEntryPos ( pHyperlinkItem->GetInsertMode() == HLINK_BUTTON ? 1 : 0 );
255 : }
256 :
257 : // URL
258 0 : mpEdIndication->SetText ( pHyperlinkItem->GetName() );
259 :
260 : // Name
261 0 : mpEdText->SetText ( pHyperlinkItem->GetIntName() );
262 :
263 : // Script-button
264 0 : if ( !pHyperlinkItem->GetMacroEvents() )
265 0 : mpBtScript->Disable();
266 : else
267 0 : mpBtScript->Enable();
268 0 : }
269 :
270 : // Any action to do after apply-button is pressed
271 0 : void SvxHyperlinkTabPageBase::DoApply ()
272 : {
273 : // default-implemtation : do nothing
274 0 : }
275 :
276 : // Ask page whether an insert is possible
277 0 : bool SvxHyperlinkTabPageBase::AskApply ()
278 : {
279 : // default-implementation
280 0 : return true;
281 : }
282 :
283 : // This method would be called from bookmark-window to set new mark-string
284 0 : void SvxHyperlinkTabPageBase::SetMarkStr ( const OUString& /*aStrMark*/ )
285 : {
286 : // default-implemtation : do nothing
287 0 : }
288 :
289 : // Set initial focus
290 0 : void SvxHyperlinkTabPageBase::SetInitFocus()
291 : {
292 0 : GrabFocus();
293 0 : }
294 :
295 : // Ask dialog whether the curretn doc is a HTML-doc
296 0 : bool SvxHyperlinkTabPageBase::IsHTMLDoc() const
297 : {
298 0 : return static_cast<SvxHpLinkDlg*>(mpDialog.get())->IsHTMLDoc();
299 : }
300 :
301 : // retrieve dispatcher
302 0 : SfxDispatcher* SvxHyperlinkTabPageBase::GetDispatcher() const
303 : {
304 0 : return static_cast<SvxHpLinkDlg*>(mpDialog.get())->GetDispatcher();
305 : }
306 :
307 : // Click on imagebutton : Script
308 0 : IMPL_LINK_NOARG(SvxHyperlinkTabPageBase, ClickScriptHdl_Impl)
309 : {
310 : SvxHyperlinkItem *pHyperlinkItem = const_cast<SvxHyperlinkItem*>(static_cast<const SvxHyperlinkItem *>(
311 0 : GetItemSet().GetItem (SID_HYPERLINK_GETLINK)));
312 :
313 0 : if ( pHyperlinkItem->GetMacroEvents() )
314 : {
315 : // get macros from itemset
316 0 : const SvxMacroTableDtor* pMacroTbl = pHyperlinkItem->GetMacroTable();
317 0 : SvxMacroItem aItem ( GetWhich(SID_ATTR_MACROITEM) );
318 0 : if( pMacroTbl )
319 0 : aItem.SetMacroTable( *pMacroTbl );
320 :
321 : // create empty itemset for macro-dlg
322 0 : SfxItemSet* pItemSet = new SfxItemSet(SfxGetpApp()->GetPool(),
323 : SID_ATTR_MACROITEM,
324 0 : SID_ATTR_MACROITEM );
325 0 : pItemSet->Put ( aItem, SID_ATTR_MACROITEM );
326 :
327 : /* disable HyperLinkDlg for input while the MacroAssignDlg is working
328 : because if no JAVA is installed an error box occurs and then it is possible
329 : to close the HyperLinkDlg before its child (MacroAssignDlg) -> GPF
330 : */
331 0 : bool bIsInputEnabled = GetParent()->IsInputEnabled();
332 0 : if ( bIsInputEnabled )
333 0 : GetParent()->EnableInput( false );
334 0 : ScopedVclPtrInstance< SfxMacroAssignDlg > aDlg( this, mxDocumentFrame, *pItemSet );
335 :
336 : // add events
337 0 : SfxMacroTabPage *pMacroPage = static_cast<SfxMacroTabPage*>( aDlg->GetTabPage() );
338 :
339 0 : if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSEOVER_OBJECT )
340 0 : pMacroPage->AddEvent( OUString( CUI_RESSTR(RID_SVXSTR_HYPDLG_MACROACT1) ),
341 0 : SFX_EVENT_MOUSEOVER_OBJECT );
342 0 : if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSECLICK_OBJECT )
343 0 : pMacroPage->AddEvent( OUString( CUI_RESSTR(RID_SVXSTR_HYPDLG_MACROACT2) ),
344 0 : SFX_EVENT_MOUSECLICK_OBJECT);
345 0 : if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSEOUT_OBJECT )
346 0 : pMacroPage->AddEvent( OUString( CUI_RESSTR(RID_SVXSTR_HYPDLG_MACROACT3) ),
347 0 : SFX_EVENT_MOUSEOUT_OBJECT);
348 :
349 0 : if ( bIsInputEnabled )
350 0 : GetParent()->EnableInput( true );
351 : // execute dlg
352 0 : DisableClose( true );
353 0 : short nRet = aDlg->Execute();
354 0 : DisableClose( false );
355 0 : if ( RET_OK == nRet )
356 : {
357 0 : const SfxItemSet* pOutSet = aDlg->GetOutputItemSet();
358 : const SfxPoolItem* pItem;
359 0 : if( SfxItemState::SET == pOutSet->GetItemState( SID_ATTR_MACROITEM, false, &pItem ))
360 : {
361 0 : pHyperlinkItem->SetMacroTable( static_cast<const SvxMacroItem*>(pItem)->GetMacroTable() );
362 : }
363 : }
364 0 : delete pItemSet;
365 : }
366 :
367 0 : return 0L;
368 : }
369 :
370 : // Get Macro-Infos
371 0 : sal_uInt16 SvxHyperlinkTabPageBase::GetMacroEvents()
372 : {
373 : const SvxHyperlinkItem *pHyperlinkItem = static_cast<const SvxHyperlinkItem *>(
374 0 : GetItemSet().GetItem (SID_HYPERLINK_GETLINK));
375 :
376 0 : return pHyperlinkItem->GetMacroEvents();
377 : }
378 :
379 0 : SvxMacroTableDtor* SvxHyperlinkTabPageBase::GetMacroTable()
380 : {
381 : const SvxHyperlinkItem *pHyperlinkItem = static_cast<const SvxHyperlinkItem *>(
382 0 : GetItemSet().GetItem (SID_HYPERLINK_GETLINK));
383 :
384 0 : return const_cast<SvxMacroTableDtor*>(pHyperlinkItem->GetMacroTable());
385 : }
386 :
387 : // try to detect the current protocol that is used in rStrURL
388 0 : OUString SvxHyperlinkTabPageBase::GetSchemeFromURL( const OUString& rStrURL )
389 : {
390 0 : OUString aStrScheme;
391 :
392 0 : INetURLObject aURL( rStrURL );
393 0 : INetProtocol aProtocol = aURL.GetProtocol();
394 :
395 : // #77696#
396 : // our new INetUrlObject now has the ability
397 : // to detect if an Url is valid or not :-(
398 0 : if ( aProtocol == INetProtocol::NotValid )
399 : {
400 0 : if ( rStrURL.startsWithIgnoreAsciiCase( INET_HTTP_SCHEME ) )
401 : {
402 0 : aStrScheme = INET_HTTP_SCHEME;
403 : }
404 0 : else if ( rStrURL.startsWithIgnoreAsciiCase( INET_HTTPS_SCHEME ) )
405 : {
406 0 : aStrScheme = INET_HTTPS_SCHEME;
407 : }
408 0 : else if ( rStrURL.startsWithIgnoreAsciiCase( INET_FTP_SCHEME ) )
409 : {
410 0 : aStrScheme = INET_FTP_SCHEME;
411 : }
412 0 : else if ( rStrURL.startsWithIgnoreAsciiCase( INET_MAILTO_SCHEME ) )
413 : {
414 0 : aStrScheme = INET_MAILTO_SCHEME;
415 : }
416 : }
417 : else
418 0 : aStrScheme = INetURLObject::GetScheme( aProtocol );
419 0 : return aStrScheme;
420 : }
421 :
422 :
423 0 : void SvxHyperlinkTabPageBase::GetDataFromCommonFields( OUString& aStrName,
424 : OUString& aStrIntName, OUString& aStrFrame,
425 : SvxLinkInsertMode& eMode )
426 : {
427 0 : aStrIntName = mpEdText->GetText();
428 0 : aStrName = mpEdIndication->GetText();
429 0 : aStrFrame = mpCbbFrame->GetText();
430 0 : eMode = (SvxLinkInsertMode) (mpLbForm->GetSelectEntryPos()+1);
431 0 : if( IsHTMLDoc() )
432 0 : eMode = (SvxLinkInsertMode) ( sal_uInt16(eMode) | HLINK_HTMLMODE );
433 0 : }
434 :
435 : // reset dialog-fields
436 0 : void SvxHyperlinkTabPageBase::Reset( const SfxItemSet& rItemSet)
437 : {
438 :
439 : // Set dialog-fields from create-itemset
440 0 : maStrInitURL = aEmptyStr;
441 :
442 : const SvxHyperlinkItem *pHyperlinkItem = static_cast<const SvxHyperlinkItem *>(
443 0 : rItemSet.GetItem (SID_HYPERLINK_GETLINK));
444 :
445 0 : if ( pHyperlinkItem )
446 : {
447 : // set dialog-fields
448 0 : FillStandardDlgFields (pHyperlinkItem);
449 :
450 : // set all other fields
451 0 : FillDlgFields ( (OUString&)pHyperlinkItem->GetURL() );
452 :
453 : // Store initial URL
454 0 : maStrInitURL = pHyperlinkItem->GetURL();
455 : }
456 0 : }
457 :
458 : // Fill output-ItemSet
459 0 : bool SvxHyperlinkTabPageBase::FillItemSet( SfxItemSet* rOut)
460 : {
461 0 : OUString aStrURL, aStrName, aStrIntName, aStrFrame;
462 : SvxLinkInsertMode eMode;
463 :
464 0 : GetCurentItemData ( aStrURL, aStrName, aStrIntName, aStrFrame, eMode);
465 0 : if ( aStrName.isEmpty() ) //automatically create a visible name if the link is created without name
466 0 : aStrName = CreateUiNameFromURL(aStrURL);
467 :
468 0 : sal_uInt16 nEvents = GetMacroEvents();
469 0 : SvxMacroTableDtor* pTable = GetMacroTable();
470 :
471 : SvxHyperlinkItem aItem( SID_HYPERLINK_SETLINK, aStrName, aStrURL, aStrFrame,
472 0 : aStrIntName, eMode, nEvents, pTable );
473 0 : rOut->Put (aItem);
474 :
475 0 : return true;
476 : }
477 :
478 0 : OUString SvxHyperlinkTabPageBase::CreateUiNameFromURL( const OUString& aStrURL )
479 : {
480 0 : OUString aStrUiURL;
481 0 : INetURLObject aURLObj( aStrURL );
482 :
483 0 : switch(aURLObj.GetProtocol())
484 : {
485 : case INetProtocol::File:
486 0 : utl::LocalFileHelper::ConvertURLToSystemPath( aURLObj.GetMainURL(INetURLObject::NO_DECODE), aStrUiURL );
487 0 : break;
488 : case INetProtocol::Ftp :
489 : {
490 : //remove password from name
491 0 : INetURLObject aTmpURL(aURLObj);
492 0 : aTmpURL.SetPass(aEmptyStr);
493 0 : aStrUiURL = aTmpURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS );
494 : }
495 0 : break;
496 : default :
497 : {
498 0 : aStrUiURL = aURLObj.GetMainURL(INetURLObject::DECODE_UNAMBIGUOUS);
499 : }
500 : }
501 0 : if(aStrUiURL.isEmpty())
502 0 : return aStrURL;
503 0 : return aStrUiURL;
504 : }
505 :
506 : // Activate / Deactivate Tabpage
507 0 : void SvxHyperlinkTabPageBase::ActivatePage( const SfxItemSet& rItemSet )
508 : {
509 :
510 : // Set dialog-fields from input-itemset
511 : const SvxHyperlinkItem *pHyperlinkItem = static_cast<const SvxHyperlinkItem *>(
512 0 : rItemSet.GetItem (SID_HYPERLINK_GETLINK));
513 :
514 0 : if ( pHyperlinkItem )
515 : {
516 : // standard-fields
517 0 : FillStandardDlgFields (pHyperlinkItem);
518 : }
519 :
520 : // show mark-window if it was open before
521 0 : if ( ShouldOpenMarkWnd () )
522 0 : ShowMarkWnd ();
523 0 : }
524 :
525 0 : int SvxHyperlinkTabPageBase::DeactivatePage( SfxItemSet* _pSet)
526 : {
527 : // hide mark-wnd
528 0 : SetMarkWndShouldOpen( IsMarkWndVisible () );
529 0 : HideMarkWnd ();
530 :
531 : // retrieve data of dialog
532 0 : OUString aStrURL, aStrName, aStrIntName, aStrFrame;
533 : SvxLinkInsertMode eMode;
534 :
535 0 : GetCurentItemData ( aStrURL, aStrName, aStrIntName, aStrFrame, eMode);
536 :
537 0 : sal_uInt16 nEvents = GetMacroEvents();
538 0 : SvxMacroTableDtor* pTable = GetMacroTable();
539 :
540 0 : if( _pSet )
541 : {
542 : SvxHyperlinkItem aItem( SID_HYPERLINK_GETLINK, aStrName, aStrURL, aStrFrame,
543 0 : aStrIntName, eMode, nEvents, pTable );
544 0 : _pSet->Put( aItem );
545 : }
546 :
547 0 : return LEAVE_PAGE;
548 : }
549 :
550 0 : bool SvxHyperlinkTabPageBase::ShouldOpenMarkWnd()
551 : {
552 0 : return false;
553 : }
554 :
555 0 : void SvxHyperlinkTabPageBase::SetMarkWndShouldOpen(bool)
556 : {
557 0 : }
558 :
559 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|