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: stdmenu.hxx,v $
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 ************************************************************************/
34 #include "svtools/svtdllapi.h"
35 #include <tools/link.hxx>
37 #include <vcl/menu.hxx>
43 /*************************************************************************
52 Erlaubt die Auswahl von Fonts. Das Menu wird ueber Fill mit den FontNamen
53 gefuellt. Fill sortiert automatisch die FontNamen (inkl. aller Umlaute und
54 sprachabhaengig). Mit SetCurName()/GetCurName() kann der aktuelle Fontname
55 gesetzt/abgefragt werden. Wenn SetCurName() mit einem leeren String
56 aufgerufen wird, wird kein Eintrag als aktueller angezeigt (fuer DontKnow).
57 Vor dem Selectaufruf wird der ausgewaehlte Name automatisch als aktueller
58 gesetzt und wuerde beim naechsten Aufruf auch als aktueller Name angezeigt
59 werden. Deshalb sollte vor PopupMenu::Execute() gegebenenfalls mit
60 SetCurName() der aktuelle Fontname gesetzt werden.
62 Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein
63 Select-Handler gesetzt werden, um die Auswahl eines Namens mitzubekommen.
65 In dieses Menu koennen keine weiteren Items eingefuegt werden.
67 Spaeter soll auch das Menu die gleichen Bitmaps anzeigen, wie die
68 FontNameBox. Auf den Systemen, wo Menues nicht automatisch scrollen,
69 wird spaeter wohl ein A-Z Menu ziwschengeschaltet. Da ein Menu bei vielen
70 installierten Fonts bisher schon immer lange gebraucht hat, sollte dieses
71 Menu schon jetzt nur einmal erzeugt werden (da sonst das Kontextmenu bis
72 zu 10-Sekunden fuer die Erzeugung brauchen koennte).
76 FontList; FontStyleMenu; FontSizeMenu; FontNameBox
78 --------------------------------------------------------------------------
84 Erlaubt die Auswahl eines FontStyles. Mit Fill wird das FontStyleMenu mit
85 den Styles zum uebergebenen Font gefuellt. Nachgebildete Styles werden
86 immer mit eingefuegt (kann sich aber noch aendern, da vielleicht
87 nicht alle Applikationen [StarDraw,Formel,FontWork] mit Syntetic-Fonts
88 umgehen koennen). Mit SetCurStyle()/GetCurStyle() kann der aktuelle Fontstyle
89 gesetzt/abgefragt werden. Der Stylename muss mit FontList::GetStyleName()
90 ermittelt werden. Wenn SetCurStyle() mit einem leeren String aufgerufen wird,
91 wird kein Eintrag als aktueller angezeigt (fuer DontKnow). Vor dem Selectaufruf
92 wird der ausgewaehlte Style automatisch als aktueller gesetzt und wuerde beim
93 naechsten Aufruf auch als aktueller Style angezeigt werden. Deshalb sollte vor
94 PopupMenu::Execute() gegebenenfalls mit SetCurStyle() der aktuelle Style
95 gesetzt werden. Da die Styles vom ausgewaehlten Font abhaengen, sollte
96 nach einer Aenderung des Fontnamen das Menu mit Fill mit den Styles des
97 Fonts neu gefuellt werden.
99 Mit GetCurStyle() kann der ausgewaehlte Style abgefragt
100 werden. Mit Check wird der Style gecheckt/uncheckt, welcher aktiv
101 ist. Der Stylename muss mit FontList::GetStyleName() ermittelt werden. Vor
102 dem Selectaufruf wird der ausgewaehlte Style automatisch gecheckt. Mit
103 UncheckAllStyles() koennen alle Fontstyles geuncheckt werden (zum Beispiel
106 Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein
107 Select-Handler gesetzt werden, um die Auswahl eines Styles mitzubekommen.
109 An dieses Menu kann ueber MENU_APPEND weitere Items eingefuegt werden.
110 Bei Fill werden nur Items entfernt, die die Id zwischen FONTSTYLEMENU_FIRSTID
111 und FONTSTYLEMENU_LASTID haben.
115 FontList; FontNameMenu; FontSizeMenu; FontStyleBox
117 --------------------------------------------------------------------------
123 Erlaubt die Auswahl von Fontgroessen. Ueber Fill wird das FontSizeMenu
124 gefuellt und ueber GetCurHeight() kann die ausgewaehlte Fontgroesse
125 abgefragt werden. Mit SetCurHeight()/GetCurHeight() kann die aktuelle
126 Fontgroesse gesetzt/abgefragt werden. Wenn SetCurHeight() mit 0 aufgerufen
127 wird, wird kein Eintrag als aktueller angezeigt (fuer DontKnow). Vor dem
128 Selectaufruf wird die ausgewaehlte Groesse automatisch als aktuelle gesetzt
129 und wuerde beim naechsten Aufruf auch als aktuelle Groesse angezeigt werden.
130 Deshalb sollte vor PopupMenu::Execute() gegebenenfalls mit SetCurHeight()
131 die aktuelle Groesse gesetzt werden. Da die Groessen vom ausgewaehlten Font
132 abhaengen, sollte nach einer Aenderung des Fontnamen das Menu mit Fill mit
133 den Groessen des Fonts neu gefuellt werden.
135 Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein
136 Select-Handler gesetzt werden, um die Auswahl einer Groesse mitzubekommen.
138 Alle Groessen werden in 10tel Point angegeben.
140 In dieses Menu koennen keine weiteren Items eingefuegt werden.
142 Spaeter soll das Menu je nach System die Groessen anders darstelllen. Zum
143 Beispiel koennte der Mac spaeter vielleicht einmal die Groessen als Outline
144 darstellen, die als Bitmap-Fonts vorhanden sind.
148 FontList; FontNameMenu; FontStyleMenu; FontSizeBox
150 *************************************************************************/
156 class SVT_DLLPUBLIC FontNameMenu
: public PopupMenu
165 virtual ~FontNameMenu();
167 virtual void Select();
168 virtual void Highlight();
170 void Fill( const FontList
* pList
);
172 void SetCurName( const XubString
& rName
);
173 const XubString
& GetCurName() const { return maCurName
; }
175 void SetSelectHdl( const Link
& rLink
) { maSelectHdl
= rLink
; }
176 const Link
& GetSelectHdl() const { return maSelectHdl
; }
177 void SetHighlightHdl( const Link
& rLink
) { maHighlightHdl
= rLink
; }
178 const Link
& GetHighlightHdl() const { return maHighlightHdl
; }
185 #define FONTSTYLEMENU_FIRSTID 62000
186 #define FONTSTYLEMENU_LASTID 62999
188 class SVT_DLLPUBLIC FontStyleMenu
: public PopupMenu
191 XubString maCurStyle
;
195 SVT_DLLPRIVATE BOOL
ImplIsAlreadyInserted( const XubString
& rStyleName
, USHORT nCount
);
199 virtual ~FontStyleMenu();
201 virtual void Select();
202 virtual void Highlight();
204 void Fill( const XubString
& rName
, const FontList
* pList
);
205 void SetCurStyle( const XubString
& rStyle
);
206 const XubString
& GetCurStyle() const { return maCurStyle
; }
208 void SetSelectHdl( const Link
& rLink
) { maSelectHdl
= rLink
; }
209 const Link
& GetSelectHdl() const { return maSelectHdl
; }
210 void SetHighlightHdl( const Link
& rLink
) { maHighlightHdl
= rLink
; }
211 const Link
& GetHighlightHdl() const { return maHighlightHdl
; }
218 class SVT_DLLPUBLIC FontSizeMenu
: public PopupMenu
230 virtual void Select();
231 virtual void Highlight();
233 void Fill( const FontInfo
& rInfo
, const FontList
* pList
);
235 void SetCurHeight( long nHeight
);
236 long GetCurHeight() const { return mnCurHeight
; }
238 void SetSelectHdl( const Link
& rLink
) { maSelectHdl
= rLink
; }
239 const Link
& GetSelectHdl() const { return maSelectHdl
; }
240 void SetHighlightHdl( const Link
& rLink
) { maHighlightHdl
= rLink
; }
241 const Link
& GetHighlightHdl() const { return maHighlightHdl
; }
244 #endif // _STDMENU_HXX