1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: insrule.cxx,v $
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 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_sw.hxx"
34 #ifdef SW_DLLIMPLEMENTATION
35 #undef SW_DLLIMPLEMENTATION
40 #include "hintids.hxx"
41 #include <svx/gallery.hxx>
42 #ifndef _MSGBOX_HXX //autogen
43 #include <vcl/msgbox.hxx>
45 #include <svx/brshitem.hxx>
46 #include <svtools/urihelper.hxx>
47 #include <vcl/graph.hxx>
49 #include "swtypes.hxx"
51 #include "insrule.hxx"
53 #include "insrule.hrc"
57 /*------------------------------------------------------------------------
59 ------------------------------------------------------------------------*/
62 SwInsertGrfRulerDlg::SwInsertGrfRulerDlg( Window
* pParent
) :
63 SfxModalDialog(pParent
, SW_RES(DLG_INSERT_RULER
)),
64 aSelectionFL(this, SW_RES(FL_SEL
)),
65 aOkPB (this, SW_RES(PB_OK
)),
66 aCancelPB (this, SW_RES(PB_CANCEL
)),
67 aHelpPB (this, SW_RES(PB_HELP
)),
69 sSimple (SW_RES(ST_SIMPLE
)),
71 pExampleVS (new SwRulerValueSet(this, SW_RES(VS_EXAMPLE
)))
74 pExampleVS
->SetLineCount(6);
75 pExampleVS
->SetColCount(1);
76 pExampleVS
->SetSelectHdl(LINK(this, SwInsertGrfRulerDlg
, SelectHdl
));
77 pExampleVS
->SetDoubleClickHdl(LINK(this, SwInsertGrfRulerDlg
, DoubleClickHdl
));
78 pExampleVS
->GrabFocus();
80 // Grafiknamen ermitteln
81 GalleryExplorer::BeginLocking(GALLERY_THEME_RULERS
);
82 GalleryExplorer::FillObjList( GALLERY_THEME_RULERS
, aGrfNames
);
83 pExampleVS
->SetHelpId(HID_VS_RULER
);
84 Color
aColor(COL_WHITE
);
85 pExampleVS
->InsertItem( 1, 1);
86 pExampleVS
->SetItemText( 1, sSimple
);
88 for(USHORT i
= 1; i
<= aGrfNames
.Count(); i
++)
90 pExampleVS
->InsertItem( i
+ 1, i
);
91 pExampleVS
->SetItemText( i
+ 1, *((String
*)aGrfNames
.GetObject(i
-1)));
96 /*-----------------14.02.97 13.18-------------------
98 --------------------------------------------------*/
100 SwInsertGrfRulerDlg::~SwInsertGrfRulerDlg()
102 GalleryExplorer::EndLocking(GALLERY_THEME_RULERS
);
106 /*-----------------14.02.97 13.17-------------------
108 --------------------------------------------------*/
110 String
SwInsertGrfRulerDlg::GetGraphicName()
113 USHORT nSel
= nSelPos
- 2; //align selection position with ValueSet index
114 if(nSel
< aGrfNames
.Count())
115 sRet
= URIHelper::SmartRel2Abs(
116 INetURLObject(), *(String
*) aGrfNames
.GetObject(nSel
),
117 URIHelper::GetMaybeFileHdl());
121 /*-----------------14.02.97 13.20-------------------
123 --------------------------------------------------*/
125 IMPL_LINK(SwInsertGrfRulerDlg
, SelectHdl
, ValueSet
*, pVS
)
127 nSelPos
= pVS
->GetSelectItemId();
132 /*-----------------14.02.97 14.17-------------------
134 --------------------------------------------------*/
135 SwRulerValueSet::SwRulerValueSet( Window
* pParent
, const ResId
& rResId
) :
136 SvxBmpNumValueSet(pParent
, rResId
)
138 SetStyle( GetStyle() & ~WB_ITEMBORDER
);
140 /*-----------------14.02.97 14.17-------------------
142 --------------------------------------------------*/
143 SwRulerValueSet::~SwRulerValueSet()
146 /*-----------------14.02.97 13.42-------------------
148 --------------------------------------------------*/
149 void __EXPORT
SwRulerValueSet::UserDraw( const UserDrawEvent
& rUDEvt
)
151 Rectangle aRect
= rUDEvt
.GetRect();
152 OutputDevice
* pDev
= rUDEvt
.GetDevice();
153 USHORT nItemId
= rUDEvt
.GetItemId();
154 Point aBLPos
= aRect
.TopLeft();
156 // Itemzaehlung beginnt bei 1, und die 1. ist die einfache Linie
160 if(GalleryExplorer::GetGraphicObj( GALLERY_THEME_RULERS
, nItemId
- 2,
163 Size aGrfSize
= aGraphic
.GetPrefSize();
164 if(aGrfSize
.Width() && aGrfSize
.Height())
166 int nRelGrf
= aGrfSize
.Height() * 100 / aGrfSize
.Width();
167 Size aWinSize
= aRect
.GetSize();
168 Size aPaintSize
= aWinSize
;
169 int nRelWin
= aWinSize
.Height() * 100 / aWinSize
.Width();
170 if(nRelGrf
> nRelWin
)
172 aPaintSize
.Width() = aWinSize
.Height() * 100 / nRelGrf
;
173 aBLPos
.X() += (aWinSize
.Width() - aPaintSize
.Width()) /2;
177 aPaintSize
.Height() = aWinSize
.Width() * nRelGrf
/100;
178 aBLPos
.Y() += (aWinSize
.Height() - aPaintSize
.Height()) /2;
180 aBLPos
.X() -= aPaintSize
.Width() /2;
181 aBLPos
.Y() -= aPaintSize
.Height() /2;
183 aPaintSize
.Width() *= 2;
184 aPaintSize
.Height() *= 2;
185 if(aPaintSize
.Height() < 2)
186 aPaintSize
.Height() = 2;
187 Region aRegion
= pDev
->GetClipRegion();
188 pDev
->SetClipRegion(aRect
);
189 aGraphic
.Draw(pDev
, aBLPos
, aPaintSize
);
190 pDev
->SetClipRegion(aRegion
);
195 SetGrfNotFound(TRUE
);
200 // Text fuer einfache Linie painten
201 Font aOldFont
= pDev
->GetFont();
202 Font aFont
= pDev
->GetFont();
203 Size aSize
= aFont
.GetSize();
204 int nRectHeight
= aRect
.GetHeight();
205 aSize
.Height() = nRectHeight
* 2 / 3;
206 aFont
.SetSize(aSize
);
207 pDev
->SetFont(aFont
);
208 String
aText(GetItemText(nItemId
));
209 aSize
.Width() = pDev
->GetTextWidth(aText
);
210 aSize
.Height() = pDev
->GetTextHeight();
212 aPos
.Y() += (nRectHeight
- aSize
.Height()) / 2;
213 aPos
.X() += (aRect
.GetWidth() - aSize
.Width()) / 2;
214 pDev
->DrawText(aPos
, aText
);
216 pDev
->SetFont(aOldFont
);
220 /*-----------------15.02.97 10.03-------------------
222 --------------------------------------------------*/
224 IMPL_LINK(SwInsertGrfRulerDlg
, DoubleClickHdl
, ValueSet
*, EMPTYARG
)