1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: fntctl.cxx,v $
10 * $Revision: 1.8.76.1 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_svx.hxx"
34 #include <string> // HACK: prevent conflict between STLPORT and Workshop headern
35 #include <svtools/stdmenu.hxx>
36 #include <sfx2/app.hxx>
37 #include <sfx2/objsh.hxx>
38 #include <sfx2/dispatch.hxx>
40 #include <svx/fntctl.hxx> //
41 #include <svx/svxids.hrc>
42 #include "flstitem.hxx"
43 #include "fontitem.hxx"
45 // STATIC DATA -----------------------------------------------------------
47 SFX_IMPL_MENU_CONTROL(SvxFontMenuControl
, SvxFontItem
);
49 //--------------------------------------------------------------------
53 Ctor; setzt den Select-Handler am Men"u und tr"agt das Men"u
57 SvxFontMenuControl::SvxFontMenuControl
61 SfxBindings
& rBindings
63 pMenu ( new FontNameMenu
),
66 rMenu
.SetPopupMenu( _nId
, pMenu
);
67 pMenu
->SetSelectHdl( LINK( this, SvxFontMenuControl
, MenuSelect
) );
68 StartListening( rBindings
);
72 //--------------------------------------------------------------------
76 F"ullt das Men"u mit den aktuellen Fonts aus der Fontlist
80 void SvxFontMenuControl::FillMenu()
82 SfxObjectShell
*pDoc
= SfxObjectShell::Current();
86 const SvxFontListItem
* pFonts
=
87 (const SvxFontListItem
*)pDoc
->GetItem( SID_ATTR_CHAR_FONTLIST
);
88 const FontList
* pList
= pFonts
? pFonts
->GetFontList(): 0;
89 DBG_ASSERT( pList
, "Kein Fonts gefunden" );
94 //--------------------------------------------------------------------
98 Statusbenachrichtigung;
99 f"ullt ggf. das Men"u mit den aktuellen Fonts aus der Fontlist
101 Ist die Funktionalit"at disabled, wird der entsprechende
102 Men"ueintrag im Parentmen"u disabled, andernfalls wird er enabled.
103 Der aktuelle Font wird mit einer Checkmark versehen.
106 void SvxFontMenuControl::StateChanged(
108 USHORT
, SfxItemState eState
, const SfxPoolItem
* pState
)
111 rParent
.EnableItem( GetId(), SFX_ITEM_DISABLED
!= eState
);
113 if ( SFX_ITEM_AVAILABLE
== eState
)
115 if ( !pMenu
->GetItemCount() )
117 const SvxFontItem
* pFontItem
= PTR_CAST( SvxFontItem
, pState
);
121 aFont
= pFontItem
->GetFamilyName();
122 pMenu
->SetCurName( aFont
);
126 //--------------------------------------------------------------------
130 Statusbenachrichtigung "uber Bindings; bei DOCCHANGED
131 wird das Men"u mit den aktuellen Fonts aus der Fontlist
132 der DocumentShell gef"ullt.
135 void SvxFontMenuControl::Notify( SfxBroadcaster
&, const SfxHint
& rHint
)
137 if ( rHint
.Type() != TYPE(SfxSimpleHint
) &&
138 ( (SfxSimpleHint
&)rHint
).GetId() == SFX_HINT_DOCCHANGED
)
142 //--------------------------------------------------------------------
146 Select-Handler des Men"us; der Name des selektierten Fonts
147 wird in einem SvxFontItem verschickt. Das F"ullen mit den
148 weiteren Fontinformationen mu\s durch die Applikation geschehen.
151 IMPL_LINK_INLINE_START( SvxFontMenuControl
, MenuSelect
, FontNameMenu
*, pMen
)
153 SvxFontItem
aItem( GetId() );
154 aItem
.GetFamilyName() = pMen
->GetCurName();
155 GetBindings().GetDispatcher()->Execute( GetId(), SFX_CALLMODE_RECORD
, &aItem
, 0L );
158 IMPL_LINK_INLINE_END( SvxFontMenuControl
, MenuSelect
, FontNameMenu
*, pMen
)
160 //--------------------------------------------------------------------
164 Dtor; gibt das Men"u frei.
167 SvxFontMenuControl::~SvxFontMenuControl()
172 //--------------------------------------------------------------------
176 Gibt das Men"u zur"uck
179 PopupMenu
* SvxFontMenuControl::GetPopup() const