Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #ifndef _STDMENU_HXX
30 : : #define _STDMENU_HXX
31 : :
32 : : #include "svtools/svtdllapi.h"
33 : : #include <tools/link.hxx>
34 : : #include <vcl/menu.hxx>
35 : :
36 : : class FontList;
37 : : class FontInfo;
38 : :
39 : : /*************************************************************************
40 : :
41 : : Beschreibung
42 : : ============
43 : :
44 : : class FontNameMenu
45 : :
46 : : Beschreibung
47 : :
48 : : Erlaubt die Auswahl von Fonts. Das Menu wird ueber Fill mit den FontNamen
49 : : gefuellt. Fill sortiert automatisch die FontNamen (inkl. aller Umlaute und
50 : : sprachabhaengig). Mit SetCurName()/GetCurName() kann der aktuelle Fontname
51 : : gesetzt/abgefragt werden. Wenn SetCurName() mit einem leeren String
52 : : aufgerufen wird, wird kein Eintrag als aktueller angezeigt (fuer DontKnow).
53 : : Vor dem Selectaufruf wird der ausgewaehlte Name automatisch als aktueller
54 : : gesetzt und wuerde beim naechsten Aufruf auch als aktueller Name angezeigt
55 : : werden. Deshalb sollte vor PopupMenu::Execute() gegebenenfalls mit
56 : : SetCurName() der aktuelle Fontname gesetzt werden.
57 : :
58 : : Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein
59 : : Select-Handler gesetzt werden, um die Auswahl eines Namens mitzubekommen.
60 : :
61 : : In dieses Menu koennen keine weiteren Items eingefuegt werden.
62 : :
63 : : Spaeter soll auch das Menu die gleichen Bitmaps anzeigen, wie die
64 : : FontNameBox. Auf den Systemen, wo Menues nicht automatisch scrollen,
65 : : wird spaeter wohl ein A-Z Menu ziwschengeschaltet. Da ein Menu bei vielen
66 : : installierten Fonts bisher schon immer lange gebraucht hat, sollte dieses
67 : : Menu schon jetzt nur einmal erzeugt werden (da sonst das Kontextmenu bis
68 : : zu 10-Sekunden fuer die Erzeugung brauchen koennte).
69 : :
70 : : Querverweise
71 : :
72 : : FontList; FontSizeMenu; FontNameBox
73 : :
74 : : --------------------------------------------------------------------------
75 : :
76 : : class FontSizeMenu
77 : :
78 : : Beschreibung
79 : :
80 : : Erlaubt die Auswahl von Fontgroessen. Ueber Fill wird das FontSizeMenu
81 : : gefuellt und ueber GetCurHeight() kann die ausgewaehlte Fontgroesse
82 : : abgefragt werden. Mit SetCurHeight()/GetCurHeight() kann die aktuelle
83 : : Fontgroesse gesetzt/abgefragt werden. Wenn SetCurHeight() mit 0 aufgerufen
84 : : wird, wird kein Eintrag als aktueller angezeigt (fuer DontKnow). Vor dem
85 : : Selectaufruf wird die ausgewaehlte Groesse automatisch als aktuelle gesetzt
86 : : und wuerde beim naechsten Aufruf auch als aktuelle Groesse angezeigt werden.
87 : : Deshalb sollte vor PopupMenu::Execute() gegebenenfalls mit SetCurHeight()
88 : : die aktuelle Groesse gesetzt werden. Da die Groessen vom ausgewaehlten Font
89 : : abhaengen, sollte nach einer Aenderung des Fontnamen das Menu mit Fill mit
90 : : den Groessen des Fonts neu gefuellt werden.
91 : :
92 : : Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein
93 : : Select-Handler gesetzt werden, um die Auswahl einer Groesse mitzubekommen.
94 : :
95 : : Alle Groessen werden in 10tel Point angegeben.
96 : :
97 : : In dieses Menu koennen keine weiteren Items eingefuegt werden.
98 : :
99 : : Spaeter soll das Menu je nach System die Groessen anders darstelllen. Zum
100 : : Beispiel koennte der Mac spaeter vielleicht einmal die Groessen als Outline
101 : : darstellen, die als Bitmap-Fonts vorhanden sind.
102 : :
103 : : Querverweise
104 : :
105 : : FontList; FontNameMenu; FontSizeBox
106 : :
107 : : *************************************************************************/
108 : :
109 : : // ----------------
110 : : // - FontNameMenu -
111 : : // ----------------
112 : :
113 : : class SVT_DLLPUBLIC FontNameMenu : public PopupMenu
114 : : {
115 : : private:
116 : : XubString maCurName;
117 : : Link maSelectHdl;
118 : : Link maHighlightHdl;
119 : :
120 : : public:
121 : : FontNameMenu();
122 : : virtual ~FontNameMenu();
123 : :
124 : : virtual void Select();
125 : : virtual void Highlight();
126 : :
127 : : void Fill( const FontList* pList );
128 : :
129 : : void SetCurName( const XubString& rName );
130 : 0 : const XubString& GetCurName() const { return maCurName; }
131 : :
132 : 0 : void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
133 : : const Link& GetSelectHdl() const { return maSelectHdl; }
134 : : void SetHighlightHdl( const Link& rLink ) { maHighlightHdl = rLink; }
135 : : const Link& GetHighlightHdl() const { return maHighlightHdl; }
136 : : };
137 : :
138 : : // ----------------
139 : : // - FontSizeMenu -
140 : : // ----------------
141 : :
142 : : class SVT_DLLPUBLIC FontSizeMenu : public PopupMenu
143 : : {
144 : : private:
145 : : long* mpHeightAry;
146 : : long mnCurHeight;
147 : : Link maSelectHdl;
148 : : Link maHighlightHdl;
149 : :
150 : : public:
151 : : FontSizeMenu();
152 : : ~FontSizeMenu();
153 : :
154 : : virtual void Select();
155 : : virtual void Highlight();
156 : :
157 : : void Fill( const FontInfo& rInfo, const FontList* pList );
158 : :
159 : : void SetCurHeight( long nHeight );
160 : 0 : long GetCurHeight() const { return mnCurHeight; }
161 : :
162 : 0 : void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
163 : : const Link& GetSelectHdl() const { return maSelectHdl; }
164 : : void SetHighlightHdl( const Link& rLink ) { maHighlightHdl = rLink; }
165 : : const Link& GetHighlightHdl() const { return maHighlightHdl; }
166 : : };
167 : :
168 : : #endif // _STDMENU_HXX
169 : :
170 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|