1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _STDMENU_HXX 25 #define _STDMENU_HXX 26 27 #include "svtools/svtdllapi.h" 28 #include <tools/link.hxx> 29 #ifndef _MENU_HXX 30 #include <vcl/menu.hxx> 31 #endif 32 33 class FontList; 34 class FontInfo; 35 36 /************************************************************************* 37 38 Beschreibung 39 ============ 40 41 class FontNameMenu 42 43 Beschreibung 44 45 Erlaubt die Auswahl von Fonts. Das Menu wird ueber Fill mit den FontNamen 46 gefuellt. Fill sortiert automatisch die FontNamen (inkl. aller Umlaute und 47 sprachabhaengig). Mit SetCurName()/GetCurName() kann der aktuelle Fontname 48 gesetzt/abgefragt werden. Wenn SetCurName() mit einem leeren String 49 aufgerufen wird, wird kein Eintrag als aktueller angezeigt (fuer DontKnow). 50 Vor dem Selectaufruf wird der ausgewaehlte Name automatisch als aktueller 51 gesetzt und wuerde beim naechsten Aufruf auch als aktueller Name angezeigt 52 werden. Deshalb sollte vor PopupMenu::Execute() gegebenenfalls mit 53 SetCurName() der aktuelle Fontname gesetzt werden. 54 55 Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein 56 Select-Handler gesetzt werden, um die Auswahl eines Namens mitzubekommen. 57 58 In dieses Menu koennen keine weiteren Items eingefuegt werden. 59 60 Spaeter soll auch das Menu die gleichen Bitmaps anzeigen, wie die 61 FontNameBox. Auf den Systemen, wo Menues nicht automatisch scrollen, 62 wird spaeter wohl ein A-Z Menu ziwschengeschaltet. Da ein Menu bei vielen 63 installierten Fonts bisher schon immer lange gebraucht hat, sollte dieses 64 Menu schon jetzt nur einmal erzeugt werden (da sonst das Kontextmenu bis 65 zu 10-Sekunden fuer die Erzeugung brauchen koennte). 66 67 Querverweise 68 69 FontList; FontStyleMenu; FontSizeMenu; FontNameBox 70 71 -------------------------------------------------------------------------- 72 73 class FontStyleMenu 74 75 Beschreibung 76 77 Erlaubt die Auswahl eines FontStyles. Mit Fill wird das FontStyleMenu mit 78 den Styles zum uebergebenen Font gefuellt. Nachgebildete Styles werden 79 immer mit eingefuegt (kann sich aber noch aendern, da vielleicht 80 nicht alle Applikationen [StarDraw,Formel,FontWork] mit Syntetic-Fonts 81 umgehen koennen). Mit SetCurStyle()/GetCurStyle() kann der aktuelle Fontstyle 82 gesetzt/abgefragt werden. Der Stylename muss mit FontList::GetStyleName() 83 ermittelt werden. Wenn SetCurStyle() mit einem leeren String aufgerufen wird, 84 wird kein Eintrag als aktueller angezeigt (fuer DontKnow). Vor dem Selectaufruf 85 wird der ausgewaehlte Style automatisch als aktueller gesetzt und wuerde beim 86 naechsten Aufruf auch als aktueller Style angezeigt werden. Deshalb sollte vor 87 PopupMenu::Execute() gegebenenfalls mit SetCurStyle() der aktuelle Style 88 gesetzt werden. Da die Styles vom ausgewaehlten Font abhaengen, sollte 89 nach einer Aenderung des Fontnamen das Menu mit Fill mit den Styles des 90 Fonts neu gefuellt werden. 91 92 Mit GetCurStyle() kann der ausgewaehlte Style abgefragt 93 werden. Mit Check wird der Style gecheckt/uncheckt, welcher aktiv 94 ist. Der Stylename muss mit FontList::GetStyleName() ermittelt werden. Vor 95 dem Selectaufruf wird der ausgewaehlte Style automatisch gecheckt. Mit 96 UncheckAllStyles() koennen alle Fontstyles geuncheckt werden (zum Beispiel 97 fuer DontKnow). 98 99 Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein 100 Select-Handler gesetzt werden, um die Auswahl eines Styles mitzubekommen. 101 102 An dieses Menu kann ueber MENU_APPEND weitere Items eingefuegt werden. 103 Bei Fill werden nur Items entfernt, die die Id zwischen FONTSTYLEMENU_FIRSTID 104 und FONTSTYLEMENU_LASTID haben. 105 106 Querverweise 107 108 FontList; FontNameMenu; FontSizeMenu; FontStyleBox 109 110 -------------------------------------------------------------------------- 111 112 class FontSizeMenu 113 114 Beschreibung 115 116 Erlaubt die Auswahl von Fontgroessen. Ueber Fill wird das FontSizeMenu 117 gefuellt und ueber GetCurHeight() kann die ausgewaehlte Fontgroesse 118 abgefragt werden. Mit SetCurHeight()/GetCurHeight() kann die aktuelle 119 Fontgroesse gesetzt/abgefragt werden. Wenn SetCurHeight() mit 0 aufgerufen 120 wird, wird kein Eintrag als aktueller angezeigt (fuer DontKnow). Vor dem 121 Selectaufruf wird die ausgewaehlte Groesse automatisch als aktuelle gesetzt 122 und wuerde beim naechsten Aufruf auch als aktuelle Groesse angezeigt werden. 123 Deshalb sollte vor PopupMenu::Execute() gegebenenfalls mit SetCurHeight() 124 die aktuelle Groesse gesetzt werden. Da die Groessen vom ausgewaehlten Font 125 abhaengen, sollte nach einer Aenderung des Fontnamen das Menu mit Fill mit 126 den Groessen des Fonts neu gefuellt werden. 127 128 Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein 129 Select-Handler gesetzt werden, um die Auswahl einer Groesse mitzubekommen. 130 131 Alle Groessen werden in 10tel Point angegeben. 132 133 In dieses Menu koennen keine weiteren Items eingefuegt werden. 134 135 Spaeter soll das Menu je nach System die Groessen anders darstelllen. Zum 136 Beispiel koennte der Mac spaeter vielleicht einmal die Groessen als Outline 137 darstellen, die als Bitmap-Fonts vorhanden sind. 138 139 Querverweise 140 141 FontList; FontNameMenu; FontStyleMenu; FontSizeBox 142 143 *************************************************************************/ 144 145 // ---------------- 146 // - FontNameMenu - 147 // ---------------- 148 149 class SVT_DLLPUBLIC FontNameMenu : public PopupMenu 150 { 151 private: 152 XubString maCurName; 153 Link maSelectHdl; 154 Link maHighlightHdl; 155 156 public: 157 FontNameMenu(); 158 virtual ~FontNameMenu(); 159 160 virtual void Select(); 161 virtual void Highlight(); 162 163 void Fill( const FontList* pList ); 164 165 void SetCurName( const XubString& rName ); GetCurName() const166 const XubString& GetCurName() const { return maCurName; } 167 SetSelectHdl(const Link & rLink)168 void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; } GetSelectHdl() const169 const Link& GetSelectHdl() const { return maSelectHdl; } SetHighlightHdl(const Link & rLink)170 void SetHighlightHdl( const Link& rLink ) { maHighlightHdl = rLink; } GetHighlightHdl() const171 const Link& GetHighlightHdl() const { return maHighlightHdl; } 172 }; 173 174 // ----------------- 175 // - FontStyleMenu - 176 // ----------------- 177 178 #define FONTSTYLEMENU_FIRSTID 62000 179 #define FONTSTYLEMENU_LASTID 62999 180 181 class SVT_DLLPUBLIC FontStyleMenu : public PopupMenu 182 { 183 private: 184 XubString maCurStyle; 185 Link maSelectHdl; 186 Link maHighlightHdl; 187 188 SVT_DLLPRIVATE sal_Bool ImplIsAlreadyInserted( const XubString& rStyleName, sal_uInt16 nCount ); 189 190 public: 191 FontStyleMenu(); 192 virtual ~FontStyleMenu(); 193 194 virtual void Select(); 195 virtual void Highlight(); 196 197 void Fill( const XubString& rName, const FontList* pList ); 198 void SetCurStyle( const XubString& rStyle ); GetCurStyle() const199 const XubString& GetCurStyle() const { return maCurStyle; } 200 SetSelectHdl(const Link & rLink)201 void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; } GetSelectHdl() const202 const Link& GetSelectHdl() const { return maSelectHdl; } SetHighlightHdl(const Link & rLink)203 void SetHighlightHdl( const Link& rLink ) { maHighlightHdl = rLink; } GetHighlightHdl() const204 const Link& GetHighlightHdl() const { return maHighlightHdl; } 205 }; 206 207 // ---------------- 208 // - FontSizeMenu - 209 // ---------------- 210 211 class SVT_DLLPUBLIC FontSizeMenu : public PopupMenu 212 { 213 private: 214 long* mpHeightAry; 215 long mnCurHeight; 216 Link maSelectHdl; 217 Link maHighlightHdl; 218 219 public: 220 FontSizeMenu(); 221 ~FontSizeMenu(); 222 223 virtual void Select(); 224 virtual void Highlight(); 225 226 void Fill( const FontInfo& rInfo, const FontList* pList ); 227 228 void SetCurHeight( long nHeight ); GetCurHeight() const229 long GetCurHeight() const { return mnCurHeight; } 230 SetSelectHdl(const Link & rLink)231 void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; } GetSelectHdl() const232 const Link& GetSelectHdl() const { return maSelectHdl; } SetHighlightHdl(const Link & rLink)233 void SetHighlightHdl( const Link& rLink ) { maHighlightHdl = rLink; } GetHighlightHdl() const234 const Link& GetHighlightHdl() const { return maHighlightHdl; } 235 }; 236 237 #endif // _STDMENU_HXX 238