merge the formfield patch from ooo-build
[ooovba.git] / svtools / inc / stdmenu.hxx
blob5202631a28da62227e71e83b78a275352b60db98
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: stdmenu.hxx,v $
10 * $Revision: 1.8 $
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 #ifndef _STDMENU_HXX
32 #define _STDMENU_HXX
34 #include "svtools/svtdllapi.h"
35 #include <tools/link.hxx>
36 #ifndef _MENU_HXX
37 #include <vcl/menu.hxx>
38 #endif
40 class FontList;
41 class FontInfo;
43 /*************************************************************************
45 Beschreibung
46 ============
48 class FontNameMenu
50 Beschreibung
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).
74 Querverweise
76 FontList; FontStyleMenu; FontSizeMenu; FontNameBox
78 --------------------------------------------------------------------------
80 class FontStyleMenu
82 Beschreibung
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
104 fuer DontKnow).
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.
113 Querverweise
115 FontList; FontNameMenu; FontSizeMenu; FontStyleBox
117 --------------------------------------------------------------------------
119 class FontSizeMenu
121 Beschreibung
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.
146 Querverweise
148 FontList; FontNameMenu; FontStyleMenu; FontSizeBox
150 *************************************************************************/
152 // ----------------
153 // - FontNameMenu -
154 // ----------------
156 class SVT_DLLPUBLIC FontNameMenu : public PopupMenu
158 private:
159 XubString maCurName;
160 Link maSelectHdl;
161 Link maHighlightHdl;
163 public:
164 FontNameMenu();
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; }
181 // -----------------
182 // - FontStyleMenu -
183 // -----------------
185 #define FONTSTYLEMENU_FIRSTID 62000
186 #define FONTSTYLEMENU_LASTID 62999
188 class SVT_DLLPUBLIC FontStyleMenu : public PopupMenu
190 private:
191 XubString maCurStyle;
192 Link maSelectHdl;
193 Link maHighlightHdl;
195 SVT_DLLPRIVATE BOOL ImplIsAlreadyInserted( const XubString& rStyleName, USHORT nCount );
197 public:
198 FontStyleMenu();
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; }
214 // ----------------
215 // - FontSizeMenu -
216 // ----------------
218 class SVT_DLLPUBLIC FontSizeMenu : public PopupMenu
220 private:
221 long* mpHeightAry;
222 long mnCurHeight;
223 Link maSelectHdl;
224 Link maHighlightHdl;
226 public:
227 FontSizeMenu();
228 ~FontSizeMenu();
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