Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #ifndef INCLUDED_SVTOOLS_STDMENU_HXX
21 : #define INCLUDED_SVTOOLS_STDMENU_HXX
22 :
23 : #include <svtools/svtdllapi.h>
24 : #include <tools/link.hxx>
25 : #include <vcl/menu.hxx>
26 :
27 : class FontList;
28 : namespace vcl {
29 : class FontInfo;
30 : }
31 :
32 : /*************************************************************************
33 :
34 : Beschreibung
35 : ============
36 :
37 : class FontNameMenu
38 :
39 : Beschreibung
40 :
41 : Erlaubt die Auswahl von Fonts. Das Menu wird ueber Fill mit den FontNamen
42 : gefuellt. Fill sortiert automatisch die FontNamen (inkl. aller Umlaute und
43 : sprachabhaengig). Mit SetCurName()/GetCurName() kann der aktuelle Fontname
44 : gesetzt/abgefragt werden. Wenn SetCurName() mit einem leeren String
45 : aufgerufen wird, wird kein Eintrag als aktueller angezeigt (fuer DontKnow).
46 : Vor dem Selectaufruf wird der ausgewaehlte Name automatisch als aktueller
47 : gesetzt und wuerde beim naechsten Aufruf auch als aktueller Name angezeigt
48 : werden. Deshalb sollte vor PopupMenu::Execute() gegebenenfalls mit
49 : SetCurName() der aktuelle Fontname gesetzt werden.
50 :
51 : Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein
52 : Select-Handler gesetzt werden, um die Auswahl eines Namens mitzubekommen.
53 :
54 : In dieses Menu koennen keine weiteren Items eingefuegt werden.
55 :
56 : Spaeter soll auch das Menu die gleichen Bitmaps anzeigen, wie die
57 : FontNameBox. Auf den Systemen, wo Menues nicht automatisch scrollen,
58 : wird spaeter wohl ein A-Z Menu ziwschengeschaltet. Da ein Menu bei vielen
59 : installierten Fonts bisher schon immer lange gebraucht hat, sollte dieses
60 : Menu schon jetzt nur einmal erzeugt werden (da sonst das Kontextmenu bis
61 : zu 10-Sekunden fuer die Erzeugung brauchen koennte).
62 :
63 : Querverweise
64 :
65 : FontList; FontSizeMenu; FontNameBox
66 :
67 : --------------------------------------------------------------------------
68 :
69 : class FontSizeMenu
70 :
71 : Beschreibung
72 :
73 : Erlaubt die Auswahl von Fontgroessen. Ueber Fill wird das FontSizeMenu
74 : gefuellt und ueber GetCurHeight() kann die ausgewaehlte Fontgroesse
75 : abgefragt werden. Mit SetCurHeight()/GetCurHeight() kann die aktuelle
76 : Fontgroesse gesetzt/abgefragt werden. Wenn SetCurHeight() mit 0 aufgerufen
77 : wird, wird kein Eintrag als aktueller angezeigt (fuer DontKnow). Vor dem
78 : Selectaufruf wird die ausgewaehlte Groesse automatisch als aktuelle gesetzt
79 : und wuerde beim naechsten Aufruf auch als aktuelle Groesse angezeigt werden.
80 : Deshalb sollte vor PopupMenu::Execute() gegebenenfalls mit SetCurHeight()
81 : die aktuelle Groesse gesetzt werden. Da die Groessen vom ausgewaehlten Font
82 : abhaengen, sollte nach einer Aenderung des Fontnamen das Menu mit Fill mit
83 : den Groessen des Fonts neu gefuellt werden.
84 :
85 : Da die Id's und der interne Aufbau des Menus nicht bekannt ist, muss ein
86 : Select-Handler gesetzt werden, um die Auswahl einer Groesse mitzubekommen.
87 :
88 : Alle Groessen werden in 10tel Point angegeben.
89 :
90 : In dieses Menu koennen keine weiteren Items eingefuegt werden.
91 :
92 : Spaeter soll das Menu je nach System die Groessen anders darstelllen. Zum
93 : Beispiel koennte der Mac spaeter vielleicht einmal die Groessen als Outline
94 : darstellen, die als Bitmap-Fonts vorhanden sind.
95 :
96 : Querverweise
97 :
98 : FontList; FontNameMenu; FontSizeBox
99 :
100 : *************************************************************************/
101 :
102 : class SVT_DLLPUBLIC FontNameMenu : public PopupMenu
103 : {
104 : private:
105 : OUString maCurName;
106 : Link maSelectHdl;
107 : Link maHighlightHdl;
108 :
109 : public:
110 : FontNameMenu();
111 : virtual ~FontNameMenu();
112 :
113 : virtual void Select() SAL_OVERRIDE;
114 : virtual void Highlight() SAL_OVERRIDE;
115 :
116 : void Fill( const FontList* pList );
117 :
118 : void SetCurName( const OUString& rName );
119 0 : const OUString& GetCurName() const { return maCurName; }
120 :
121 0 : void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
122 : const Link& GetSelectHdl() const { return maSelectHdl; }
123 : void SetHighlightHdl( const Link& rLink ) { maHighlightHdl = rLink; }
124 : const Link& GetHighlightHdl() const { return maHighlightHdl; }
125 : };
126 :
127 : class SVT_DLLPUBLIC FontSizeMenu : public PopupMenu
128 : {
129 : private:
130 : long* mpHeightAry;
131 : long mnCurHeight;
132 : Link maSelectHdl;
133 : Link maHighlightHdl;
134 :
135 : public:
136 : FontSizeMenu();
137 : virtual ~FontSizeMenu();
138 :
139 : virtual void Select() SAL_OVERRIDE;
140 : virtual void Highlight() SAL_OVERRIDE;
141 :
142 : void Fill( const vcl::FontInfo& rInfo, const FontList* pList );
143 :
144 : void SetCurHeight( long nHeight );
145 0 : long GetCurHeight() const { return mnCurHeight; }
146 :
147 0 : void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
148 : const Link& GetSelectHdl() const { return maSelectHdl; }
149 : void SetHighlightHdl( const Link& rLink ) { maHighlightHdl = rLink; }
150 : const Link& GetHighlightHdl() const { return maHighlightHdl; }
151 : };
152 :
153 : #endif // INCLUDED_SVTOOLS_STDMENU_HXX
154 :
155 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|