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 : : #include <sfx2/bindings.hxx>
30 : : #include <svx/svxids.hrc>
31 : : #include <svx/grafctrl.hxx>
32 : : #include <svl/cjkoptions.hxx>
33 : : #include <sfx2/viewsh.hxx>
34 : : #include <sfx2/imagemgr.hxx>
35 : : #include <rtl/ustring.hxx>
36 : : #include <rtl/ustrbuf.hxx>
37 : :
38 : : #include "sddll.hxx"
39 : : #include "GraphicDocShell.hxx"
40 : :
41 : : #include <vcl/toolbox.hxx>
42 : :
43 : : #include "app.hxx"
44 : : #include "app.hrc"
45 : : #include "res_bmp.hrc"
46 : : #include "sdresid.hxx"
47 : : #include "tbx_ww.hxx"
48 : :
49 [ + - ]: 1436 : SFX_IMPL_TOOLBOX_CONTROL( SdTbxControl, TbxImageItem )
50 : :
51 : : /*************************************************************************
52 : : |*
53 : : |* Klasse fuer Toolbox
54 : : |*
55 : : \************************************************************************/
56 : :
57 : 1136 : SdTbxControl::SdTbxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) :
58 : 1136 : SfxToolBoxControl( nSlotId, nId, rTbx )
59 : : {
60 [ + - ][ + - ]: 1136 : rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
61 [ + - ]: 1136 : rTbx.Invalidate();
62 : 1136 : }
63 : :
64 : : /*-------------------------------------------------------------------------*/
65 : :
66 : 0 : SfxPopupWindowType SdTbxControl::GetPopupWindowType() const
67 : : {
68 : 0 : return( SFX_POPUPWINDOW_ONTIMEOUT );
69 : : }
70 : :
71 : : /*************************************************************************
72 : : |*
73 : : |* Hier wird das Fenster erzeugt
74 : : |* Lage der Toolbox mit GetToolBox() abfragbar
75 : : |* rItemRect sind die Screen-Koordinaten
76 : : |*
77 : : \************************************************************************/
78 : :
79 : 0 : SfxPopupWindow* SdTbxControl::CreatePopupWindow()
80 : : {
81 : 0 : SfxPopupWindow *pWin = NULL;
82 : 0 : rtl::OUString aToolBarResStr;
83 : 0 : rtl::OUStringBuffer aTbxResName( "private:resource/toolbar/" );
84 [ # # # # : 0 : switch( GetSlotId() )
# # # # #
# # # # ]
[ # # ]
85 : : {
86 : : case SID_OBJECT_ALIGN:
87 [ # # ]: 0 : aTbxResName.appendAscii( "alignmentbar" );
88 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
89 : 0 : break;
90 : : case SID_ZOOM_TOOLBOX:
91 [ # # ]: 0 : aTbxResName.appendAscii( "zoombar" );
92 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
93 : 0 : break;
94 : : case SID_OBJECT_CHOOSE_MODE:
95 [ # # ]: 0 : aTbxResName.appendAscii( "choosemodebar" );
96 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
97 : 0 : break;
98 : : case SID_POSITION:
99 [ # # ]: 0 : aTbxResName.appendAscii( "positionbar" );
100 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
101 : 0 : break;
102 : : case SID_DRAWTBX_TEXT:
103 [ # # ]: 0 : aTbxResName.appendAscii( "textbar" );
104 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
105 : 0 : break;
106 : : case SID_DRAWTBX_RECTANGLES:
107 [ # # ]: 0 : aTbxResName.appendAscii( "rectanglesbar" );
108 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
109 : 0 : break;
110 : : case SID_DRAWTBX_ELLIPSES:
111 [ # # ]: 0 : aTbxResName.appendAscii( "ellipsesbar" );
112 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
113 : 0 : break;
114 : : case SID_DRAWTBX_LINES:
115 [ # # ]: 0 : aTbxResName.appendAscii( "linesbar" );
116 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
117 : 0 : break;
118 : : case SID_DRAWTBX_ARROWS:
119 [ # # ]: 0 : aTbxResName.appendAscii( "arrowsbar" );
120 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
121 : 0 : break;
122 : : case SID_DRAWTBX_3D_OBJECTS:
123 [ # # ]: 0 : aTbxResName.appendAscii( "3dobjectsbar" );
124 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
125 : 0 : break;
126 : : case SID_DRAWTBX_CONNECTORS:
127 [ # # ]: 0 : aTbxResName.appendAscii( "connectorsbar" );
128 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
129 : 0 : break;
130 : : case SID_DRAWTBX_INSERT:
131 [ # # ]: 0 : aTbxResName.appendAscii( "insertbar" );
132 [ # # ]: 0 : aToolBarResStr = aTbxResName.makeStringAndClear();
133 : 0 : break;
134 : : }
135 : :
136 [ # # ]: 0 : if ( !aToolBarResStr.isEmpty() )
137 [ # # ]: 0 : createAndPositionSubToolBar( aToolBarResStr );
138 : :
139 : 0 : return( pWin );
140 : : }
141 : :
142 : : /*-------------------------------------------------------------------------*/
143 : :
144 : 1449 : void SdTbxControl::StateChanged( sal_uInt16 nSId,
145 : : SfxItemState eState, const SfxPoolItem* pState )
146 : : {
147 : 1449 : SfxToolBoxControl::StateChanged( nSId, eState, pState );
148 : :
149 [ + - ]: 1449 : if( eState == SFX_ITEM_AVAILABLE )
150 : : {
151 [ + - ][ + - ]: 1449 : TbxImageItem* pItem = PTR_CAST( TbxImageItem, pState );
152 : : // Im StarDesktop kann jetzt auch ein anderes Item ankommen,
153 : : // das nicht ausgewertet werden darf
154 [ + - ]: 1449 : if( pItem )
155 : : {
156 : 1449 : ToolBox& rTbx = GetToolBox();
157 : 1449 : sal_uInt16 nImage = pItem->GetValue();
158 [ + + ]: 1449 : if( nImage == 0 )
159 : : {
160 [ - + ]: 773 : if( rTbx.IsItemChecked( nSId ) )
161 : 0 : rTbx.CheckItem( nSId, sal_False );
162 : : }
163 : : else
164 : : {
165 : 676 : rtl::OUString aSlotURL( "slot:" );
166 : 676 : aSlotURL += rtl::OUString::valueOf( sal_Int32( nImage ));
167 : : Image aImage = GetImage( m_xFrame,
168 : : aSlotURL,
169 [ + - ]: 676 : hasBigImages()
170 [ + - ]: 676 : );
171 : :
172 : : // !-Operator prueft, ob Image nicht vorhanden ist
173 [ + - ]: 676 : if( !!aImage )
174 : : {
175 [ + - ][ + - ]: 676 : rTbx.SetItemImage( GetId(), aImage );
176 [ + - ][ + - ]: 676 : rTbx.CheckItem( GetId(), IsCheckable( nImage ) );
177 : :
178 [ + + ][ + + ]: 676 : if( nSId != SID_ZOOM_TOOLBOX &&
[ + + ][ - + ]
179 : : nSId != SID_DRAWTBX_INSERT &&
180 : : nSId != SID_POSITION &&
181 : : nSId != SID_OBJECT_ALIGN )
182 : : {
183 [ # # ][ # # ]: 0 : if( nSId != SID_OBJECT_CHOOSE_MODE &&
[ # # ]
184 [ # # ]: 0 : rTbx.IsItemChecked( SID_OBJECT_CHOOSE_MODE ) )
185 [ # # ]: 0 : rTbx.CheckItem( SID_OBJECT_CHOOSE_MODE, sal_False );
186 [ # # ][ # # ]: 0 : if( nSId != SID_DRAWTBX_TEXT &&
[ # # ]
187 [ # # ]: 0 : rTbx.IsItemChecked( SID_DRAWTBX_TEXT ) )
188 [ # # ]: 0 : rTbx.CheckItem( SID_DRAWTBX_TEXT, sal_False );
189 [ # # ][ # # ]: 0 : if( nSId != SID_DRAWTBX_RECTANGLES &&
[ # # ]
190 [ # # ]: 0 : rTbx.IsItemChecked( SID_DRAWTBX_RECTANGLES ) )
191 [ # # ]: 0 : rTbx.CheckItem( SID_DRAWTBX_RECTANGLES, sal_False );
192 [ # # ][ # # ]: 0 : if( nSId != SID_DRAWTBX_ELLIPSES &&
[ # # ]
193 [ # # ]: 0 : rTbx.IsItemChecked( SID_DRAWTBX_ELLIPSES ) )
194 [ # # ]: 0 : rTbx.CheckItem( SID_DRAWTBX_ELLIPSES, sal_False );
195 [ # # ][ # # ]: 0 : if( nSId != SID_DRAWTBX_LINES &&
[ # # ]
196 [ # # ]: 0 : rTbx.IsItemChecked( SID_DRAWTBX_LINES ) )
197 [ # # ]: 0 : rTbx.CheckItem( SID_DRAWTBX_LINES, sal_False );
198 [ # # ][ # # ]: 0 : if( nSId != SID_DRAWTBX_ARROWS &&
[ # # ]
199 [ # # ]: 0 : rTbx.IsItemChecked( SID_DRAWTBX_ARROWS ) )
200 [ # # ]: 0 : rTbx.CheckItem( SID_DRAWTBX_ARROWS, sal_False );
201 [ # # ][ # # ]: 0 : if( nSId != SID_DRAWTBX_3D_OBJECTS &&
[ # # ]
202 [ # # ]: 0 : rTbx.IsItemChecked( SID_DRAWTBX_3D_OBJECTS ) )
203 [ # # ]: 0 : rTbx.CheckItem( SID_DRAWTBX_3D_OBJECTS, sal_False );
204 [ # # ][ # # ]: 0 : if( nSId != SID_DRAWTBX_CONNECTORS &&
[ # # ]
205 [ # # ]: 0 : rTbx.IsItemChecked( SID_DRAWTBX_CONNECTORS ) )
206 [ # # ]: 0 : rTbx.CheckItem( SID_DRAWTBX_CONNECTORS, sal_False );
207 : : }
208 [ + - ]: 676 : }
209 : : }
210 : : }
211 : : }
212 : 1449 : }
213 : :
214 : : /*-------------------------------------------------------------------------*/
215 : :
216 : 676 : sal_Bool SdTbxControl::IsCheckable( sal_uInt16 nSId )
217 : : {
218 [ - + ]: 676 : switch( nSId )
219 : : {
220 : : case SID_OBJECT_ROTATE:
221 : : case SID_OBJECT_MIRROR:
222 : : case SID_OBJECT_CROP:
223 : : case SID_OBJECT_TRANSPARENCE:
224 : : case SID_OBJECT_GRADIENT:
225 : : case SID_OBJECT_SHEAR:
226 : : case SID_OBJECT_CROOK_ROTATE:
227 : : case SID_OBJECT_CROOK_SLANT:
228 : : case SID_OBJECT_CROOK_STRETCH:
229 : : case SID_CONVERT_TO_3D_LATHE:
230 : :
231 : : case SID_ATTR_CHAR:
232 : : case SID_ATTR_CHAR_VERTICAL:
233 : : case SID_TEXT_FITTOSIZE:
234 : : case SID_TEXT_FITTOSIZE_VERTICAL:
235 : : case SID_DRAW_CAPTION:
236 : : case SID_DRAW_CAPTION_VERTICAL:
237 : : case SID_DRAW_FONTWORK:
238 : : case SID_DRAW_FONTWORK_VERTICAL:
239 : :
240 : : case SID_DRAW_RECT:
241 : : case SID_DRAW_SQUARE:
242 : : case SID_DRAW_RECT_ROUND:
243 : : case SID_DRAW_SQUARE_ROUND:
244 : : case SID_DRAW_RECT_NOFILL:
245 : : case SID_DRAW_SQUARE_NOFILL:
246 : : case SID_DRAW_RECT_ROUND_NOFILL:
247 : : case SID_DRAW_SQUARE_ROUND_NOFILL:
248 : :
249 : : case SID_DRAW_ELLIPSE:
250 : : case SID_DRAW_CIRCLE:
251 : : case SID_DRAW_PIE:
252 : : case SID_DRAW_CIRCLEPIE:
253 : : case SID_DRAW_ELLIPSECUT:
254 : : case SID_DRAW_CIRCLECUT:
255 : : case SID_DRAW_ARC:
256 : : case SID_DRAW_CIRCLEARC:
257 : : case SID_DRAW_ELLIPSE_NOFILL:
258 : : case SID_DRAW_CIRCLE_NOFILL:
259 : : case SID_DRAW_PIE_NOFILL:
260 : : case SID_DRAW_CIRCLEPIE_NOFILL:
261 : : case SID_DRAW_ELLIPSECUT_NOFILL:
262 : : case SID_DRAW_CIRCLECUT_NOFILL:
263 : :
264 : : case SID_DRAW_BEZIER_NOFILL:
265 : : case SID_DRAW_POLYGON_NOFILL:
266 : : case SID_DRAW_XPOLYGON_NOFILL:
267 : : case SID_DRAW_BEZIER_FILL:
268 : : case SID_DRAW_POLYGON:
269 : : case SID_DRAW_XPOLYGON:
270 : : case SID_DRAW_FREELINE:
271 : : case SID_DRAW_FREELINE_NOFILL:
272 : :
273 : : case SID_DRAW_LINE:
274 : : case SID_DRAW_XLINE:
275 : : case SID_DRAW_MEASURELINE:
276 : : case SID_LINE_ARROW_START:
277 : : case SID_LINE_ARROW_END:
278 : : case SID_LINE_ARROWS:
279 : : case SID_LINE_ARROW_CIRCLE:
280 : : case SID_LINE_CIRCLE_ARROW:
281 : : case SID_LINE_ARROW_SQUARE:
282 : : case SID_LINE_SQUARE_ARROW:
283 : :
284 : : case SID_3D_CUBE:
285 : : case SID_3D_SPHERE:
286 : : case SID_3D_CYLINDER:
287 : : case SID_3D_CONE:
288 : : case SID_3D_PYRAMID:
289 : : case SID_3D_TORUS:
290 : : case SID_3D_SHELL:
291 : : case SID_3D_HALF_SPHERE:
292 : :
293 : : case SID_TOOL_CONNECTOR:
294 : : case SID_CONNECTOR_ARROW_START:
295 : : case SID_CONNECTOR_ARROW_END:
296 : : case SID_CONNECTOR_ARROWS:
297 : : case SID_CONNECTOR_CIRCLE_START:
298 : : case SID_CONNECTOR_CIRCLE_END:
299 : : case SID_CONNECTOR_CIRCLES:
300 : : case SID_CONNECTOR_LINE:
301 : : case SID_CONNECTOR_LINE_ARROW_START:
302 : : case SID_CONNECTOR_LINE_ARROW_END:
303 : : case SID_CONNECTOR_LINE_ARROWS:
304 : : case SID_CONNECTOR_LINE_CIRCLE_START:
305 : : case SID_CONNECTOR_LINE_CIRCLE_END:
306 : : case SID_CONNECTOR_LINE_CIRCLES:
307 : : case SID_CONNECTOR_CURVE:
308 : : case SID_CONNECTOR_CURVE_ARROW_START:
309 : : case SID_CONNECTOR_CURVE_ARROW_END:
310 : : case SID_CONNECTOR_CURVE_ARROWS:
311 : : case SID_CONNECTOR_CURVE_CIRCLE_START:
312 : : case SID_CONNECTOR_CURVE_CIRCLE_END:
313 : : case SID_CONNECTOR_CURVE_CIRCLES:
314 : : case SID_CONNECTOR_LINES:
315 : : case SID_CONNECTOR_LINES_ARROW_START:
316 : : case SID_CONNECTOR_LINES_ARROW_END:
317 : : case SID_CONNECTOR_LINES_ARROWS:
318 : : case SID_CONNECTOR_LINES_CIRCLE_START:
319 : : case SID_CONNECTOR_LINES_CIRCLE_END:
320 : : case SID_CONNECTOR_LINES_CIRCLES:
321 : :
322 : 0 : return( sal_True );
323 : : }
324 : 676 : return( sal_False );
325 : : }
326 : :
327 : :
328 : :
329 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|