Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
2a82fbac
Kaydet (Commit)
2a82fbac
authored
Eyl 14, 2010
tarafından
Jan Holesovsky
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
toolbar-decorations-svx-tables-columns.diff: "New table" widget rework.
And a small update of the "Columns" widget.
üst
426ce43c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
218 additions
and
270 deletions
+218
-270
layctrl.cxx
svx/source/tbxctrls/layctrl.cxx
+218
-270
No files found.
svx/source/tbxctrls/layctrl.cxx
Dosyayı görüntüle @
2a82fbac
...
...
@@ -32,9 +32,7 @@
#include <string> // HACK: prevent conflict between STLPORT and Workshop headers
#include <vcl/toolbox.hxx>
#ifndef _SV_BUTTON_HXX //autogen
#include <vcl/button.hxx>
#endif
#include <svl/intitem.hxx>
#include <sfx2/dispatch.hxx>
#include <sfx2/app.hxx>
...
...
@@ -56,51 +54,72 @@ SFX_IMPL_TOOLBOX_CONTROL(SvxColumnsToolBoxControl,SfxUInt16Item);
// class TableWindow -----------------------------------------------------
const
long
TABLE_CELL_WIDTH
=
15
;
const
long
TABLE_CELL_HEIGHT
=
15
;
const
long
TABLE_CELLS_HORIZ
=
10
;
const
long
TABLE_CELLS_VERT
=
15
;
const
long
TABLE_POS_X
=
2
;
const
long
TABLE_POS_Y
=
2
;
const
long
TABLE_WIDTH
=
TABLE_POS_X
+
TABLE_CELLS_HORIZ
*
TABLE_CELL_WIDTH
;
const
long
TABLE_HEIGHT
=
TABLE_POS_Y
+
TABLE_CELLS_VERT
*
TABLE_CELL_HEIGHT
;
class
TableWindow
:
public
SfxPopupWindow
{
private
:
PushButton
aTableButton
;
::
Color
aLineColor
;
::
Color
aHighlightLineColor
;
::
Color
aFillColor
;
::
Color
aHighlightFillColor
;
::
Color
aBackgroundColor
;
long
nCol
;
long
nLine
;
long
nWidth
;
long
nHeight
;
long
nMX
;
long
nMY
;
long
nTextHeight
;
BOOL
bInitialKeyInput
;
BOOL
m_bMod1
;
ToolBox
&
rTbx
;
Reference
<
XFrame
>
mxFrame
;
rtl
::
OUString
maCommand
;
void
UpdateSize_Impl
(
long
nNewCol
,
long
nNewLine
);
DECL_LINK
(
SelectHdl
,
void
*
);
public
:
TableWindow
(
USHORT
nSlotId
,
const
rtl
::
OUString
&
rCmd
,
const
String
&
rText
,
ToolBox
&
rParentTbx
,
const
Reference
<
XFrame
>&
rFrame
);
~
TableWindow
();
void
KeyInput
(
const
KeyEvent
&
rKEvt
);
virtual
void
MouseMove
(
const
MouseEvent
&
rMEvt
);
virtual
void
MouseButtonDown
(
const
MouseEvent
&
rMEvt
);
virtual
void
MouseButtonUp
(
const
MouseEvent
&
rMEvt
);
virtual
void
Paint
(
const
Rectangle
&
);
virtual
void
PopupModeEnd
();
virtual
SfxPopupWindow
*
Clone
()
const
;
USHORT
GetColCount
()
const
{
return
(
USHORT
)
nCol
;
}
USHORT
GetLineCount
()
const
{
return
(
USHORT
)
nLine
;
}
private
:
void
Update
(
long
nNewCol
,
long
nNewLine
);
void
TableDialog
(
const
Sequence
<
PropertyValue
>&
rArgs
);
void
CloseAndShowTableDialog
();
};
// -----------------------------------------------------------------------
TableWindow
::
TableWindow
(
USHORT
nSlotId
,
const
rtl
::
OUString
&
rCmd
,
ToolBox
&
rParentTbx
,
const
Reference
<
XFrame
>&
rFrame
)
:
SfxPopupWindow
(
nSlotId
,
rFrame
,
WB_SYSTEMWINDOW
),
IMPL_LINK
(
TableWindow
,
SelectHdl
,
void
*
,
EMPTYARG
)
{
CloseAndShowTableDialog
();
return
NULL
;
}
// -----------------------------------------------------------------------
TableWindow
::
TableWindow
(
USHORT
nSlotId
,
const
rtl
::
OUString
&
rCmd
,
const
String
&
rText
,
ToolBox
&
rParentTbx
,
const
Reference
<
XFrame
>&
rFrame
)
:
SfxPopupWindow
(
nSlotId
,
rFrame
,
WinBits
(
WB_STDPOPUP
)
),
aTableButton
(
this
),
nCol
(
0
),
nLine
(
0
),
bInitialKeyInput
(
TRUE
),
m_bMod1
(
FALSE
),
rTbx
(
rParentTbx
),
...
...
@@ -109,38 +128,41 @@ TableWindow::TableWindow( USHORT nSlotId, const rtl::OUString& rCmd, ToolBox& rP
{
const
StyleSettings
&
rStyles
=
Application
::
GetSettings
().
GetStyleSettings
();
svtools
::
ColorConfig
aColorConfig
;
aLineColor
=
::
Color
(
aColorConfig
.
GetColorValue
(
svtools
::
FONTCOLOR
).
nColor
);
a
HighlightLineColor
=
rStyles
.
GetHighlightText
Color
();
a
LineColor
=
rStyles
.
GetShadow
Color
();
aFillColor
=
rStyles
.
GetWindowColor
();
aHighlightFillColor
=
rStyles
.
GetHighlightColor
();
aBackgroundColor
=
GetSettings
().
GetStyleSettings
().
GetFaceColor
();
nTextHeight
=
GetTextHeight
()
+
1
;
SetBackground
();
SetBackground
(
aBackgroundColor
);
Font
aFont
=
GetFont
();
aFont
.
SetColor
(
aLineColor
);
aFont
.
SetFillColor
(
a
Fill
Color
);
aFont
.
SetColor
(
::
Color
(
aColorConfig
.
GetColorValue
(
svtools
::
FONTCOLOR
).
nColor
)
);
aFont
.
SetFillColor
(
a
Background
Color
);
aFont
.
SetTransparent
(
FALSE
);
SetFont
(
aFont
);
nCol
=
0
;
nLine
=
0
;
nWidth
=
5
;
nHeight
=
5
;
SetText
(
rText
);
Size
aLogicSize
=
LogicToPixel
(
Size
(
55
,
35
),
MapMode
(
MAP_10TH_MM
)
);
nMX
=
aLogicSize
.
Width
();
nMY
=
aLogicSize
.
Height
();
SetOutputSizePixel
(
Size
(
nMX
*
nWidth
-
1
,
nMY
*
nHeight
-
1
+
nTextHeight
)
);
aTableButton
.
SetPosSizePixel
(
Point
(
TABLE_POS_X
+
TABLE_CELL_WIDTH
,
TABLE_HEIGHT
+
5
),
Size
(
TABLE_WIDTH
-
TABLE_POS_X
-
2
*
TABLE_CELL_WIDTH
,
24
)
);
aTableButton
.
SetText
(
String
(
SVX_RESSTR
(
RID_SVXSTR_MORE
)
)
);
aTableButton
.
SetClickHdl
(
LINK
(
this
,
TableWindow
,
SelectHdl
)
);
aTableButton
.
Show
();
SetOutputSizePixel
(
Size
(
TABLE_WIDTH
+
3
,
TABLE_HEIGHT
+
33
)
);
}
// -----------------------------------------------------------------------
TableWindow
::~
TableWindow
()
{
}
// -----------------------------------------------------------------------
SfxPopupWindow
*
TableWindow
::
Clone
()
const
{
return
new
TableWindow
(
GetId
(),
maCommand
,
rTbx
,
mxFrame
);
return
new
TableWindow
(
GetId
(),
maCommand
,
GetText
(),
rTbx
,
mxFrame
);
}
// -----------------------------------------------------------------------
...
...
@@ -151,164 +173,64 @@ void TableWindow::MouseMove( const MouseEvent& rMEvt )
Point
aPos
=
rMEvt
.
GetPosPixel
();
Point
aMousePos
(
aPos
);
if
(
rMEvt
.
IsEnterWindow
()
)
CaptureMouse
();
else
if
(
aMousePos
.
X
()
<
0
||
aMousePos
.
Y
()
<
0
)
{
nCol
=
0
;
nLine
=
0
;
ReleaseMouse
();
Invalidate
();
return
;
}
long
nNewCol
=
0
;
long
nNewLine
=
0
;
if
(
aPos
.
X
()
>
0
)
nNewCol
=
aPos
.
X
()
/
nMX
+
1
;
if
(
aPos
.
Y
()
>
0
)
nNewLine
=
aPos
.
Y
()
/
nMY
+
1
;
if
(
nNewCol
>
500
)
nNewCol
=
500
;
if
(
nNewLine
>
1000
)
nNewLine
=
1000
;
UpdateSize_Impl
(
nNewCol
,
nNewLine
);
long
nNewCol
=
(
aMousePos
.
X
()
-
TABLE_POS_X
+
TABLE_CELL_WIDTH
)
/
TABLE_CELL_WIDTH
;
long
nNewLine
=
(
aMousePos
.
Y
()
-
TABLE_POS_Y
+
TABLE_CELL_HEIGHT
)
/
TABLE_CELL_HEIGHT
;
Update
(
nNewCol
,
nNewLine
);
}
/* -----------------------------15.05.2002 17:14------------------------------
---------------------------------------------------------------------------*/
void
TableWindow
::
UpdateSize_Impl
(
long
nNewCol
,
long
nNewLine
)
{
Size
aWinSize
=
GetOutputSizePixel
();
Point
aWinPos
=
GetPosPixel
();
Point
aMaxPos
=
OutputToScreenPixel
(
GetDesktopRectPixel
().
BottomRight
()
);
if
(
(
nWidth
<=
nNewCol
)
||
(
nHeight
<
nNewLine
)
)
{
long
nOff
=
0
;
if
(
nWidth
<=
nNewCol
)
{
nWidth
=
nNewCol
;
nWidth
++
;
}
if
(
nHeight
<=
nNewLine
)
{
nHeight
=
nNewLine
;
nOff
=
1
;
}
while
(
nWidth
>
0
&&
(
short
)(
aWinPos
.
X
()
+
(
nMX
*
nWidth
-
1
))
>=
aMaxPos
.
X
()
-
3
)
nWidth
--
;
while
(
nHeight
>
0
&&
(
short
)(
aWinPos
.
Y
()
+
(
nMY
*
nHeight
-
1
+
nTextHeight
))
>=
aMaxPos
.
Y
()
-
3
)
nHeight
--
;
if
(
nNewCol
>
nWidth
)
nNewCol
=
nWidth
;
if
(
nNewLine
>
nHeight
)
nNewLine
=
nHeight
;
Size
_aWinSize
=
GetOutputSizePixel
();
Invalidate
(
Rectangle
(
0
,
_aWinSize
.
Height
()
-
nTextHeight
+
2
-
nOff
,
_aWinSize
.
Width
(),
_aWinSize
.
Height
()
)
);
SetOutputSizePixel
(
Size
(
nMX
*
nWidth
-
1
,
nMY
*
nHeight
-
1
+
nTextHeight
)
);
}
long
nMinCol
=
0
;
long
nMaxCol
=
0
;
long
nMinLine
=
0
;
long
nMaxLine
=
0
;
if
(
nNewCol
<
nCol
)
{
nMinCol
=
nNewCol
;
nMaxCol
=
nCol
;
}
else
{
nMinCol
=
nCol
;
nMaxCol
=
nNewCol
;
}
if
(
nNewLine
<
nLine
)
{
nMinLine
=
nNewLine
;
nMaxLine
=
nLine
;
}
else
{
nMinLine
=
nLine
;
nMaxLine
=
nNewLine
;
}
if
(
(
nNewCol
!=
nCol
)
||
(
nNewLine
!=
nLine
)
)
{
Invalidate
(
Rectangle
(
0
,
aWinSize
.
Height
()
-
nTextHeight
+
2
,
aWinSize
.
Width
(),
aWinSize
.
Height
()
)
);
if
(
nNewCol
!=
nCol
)
{
Invalidate
(
Rectangle
(
nMinCol
*
nMX
-
1
,
0
,
nMaxCol
*
nMX
+
1
,
nMaxLine
*
nMY
)
);
nCol
=
nNewCol
;
}
if
(
nNewLine
!=
nLine
)
{
Invalidate
(
Rectangle
(
0
,
nMinLine
*
nMY
-
2
,
nMaxCol
*
nMX
,
nMaxLine
*
nMY
+
1
)
);
nLine
=
nNewLine
;
}
}
Update
();
}
/* -----------------------------15.05.2002 14:22------------------------------
// -----------------------------------------------------------------------
---------------------------------------------------------------------------*/
void
TableWindow
::
KeyInput
(
const
KeyEvent
&
rKEvt
)
{
BOOL
bHandled
=
FALSE
;
bool
bHandled
=
false
;
USHORT
nModifier
=
rKEvt
.
GetKeyCode
().
GetModifier
();
USHORT
nKey
=
rKEvt
.
GetKeyCode
().
GetCode
();
if
(
!
nModifier
)
if
(
!
nModifier
)
{
if
(
KEY_UP
==
nKey
||
KEY_DOWN
==
nKey
||
KEY_LEFT
==
nKey
||
KEY_RIGHT
==
nKey
||
KEY_ESCAPE
==
nKey
||
KEY_RETURN
==
nKey
)
bHandled
=
true
;
long
nNewCol
=
nCol
;
long
nNewLine
=
nLine
;
switch
(
nKey
)
{
bHandled
=
TRUE
;
long
nNewCol
=
nCol
;
long
nNewLine
=
nLine
;
switch
(
nKey
)
{
case
KEY_UP
:
if
(
nNewLine
>
1
)
{
nNewLine
--
;
break
;
}
//no break;
case
KEY_ESCAPE
:
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CANCEL
);
case
KEY_UP
:
if
(
nNewLine
>
1
)
nNewLine
--
;
else
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CANCEL
);
break
;
case
KEY_DOWN
:
case
KEY_DOWN
:
if
(
nNewLine
<
TABLE_CELLS_VERT
)
nNewLine
++
;
else
CloseAndShowTableDialog
();
break
;
case
KEY_LEFT
:
if
(
nNewCol
)
nNewCol
--
;
case
KEY_LEFT
:
if
(
nNewCol
>
1
)
nNewCol
--
;
else
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CANCEL
);
break
;
case
KEY_RIGHT
:
case
KEY_RIGHT
:
if
(
nNewCol
<
TABLE_CELLS_HORIZ
)
nNewCol
++
;
else
CloseAndShowTableDialog
();
break
;
case
KEY_RETURN
:
if
(
IsMouseCaptured
())
ReleaseMouse
();
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CLOSEALL
);
case
KEY_ESCAPE
:
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CANCEL
);
break
;
}
case
KEY_RETURN
:
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CLOSEALL
);
break
;
case
KEY_TAB
:
CloseAndShowTableDialog
();
break
;
default
:
bHandled
=
false
;
}
if
(
bHandled
)
{
//make sure that a table can initially be created
if
(
bInitialKeyInput
)
{
...
...
@@ -318,27 +240,17 @@ void TableWindow::KeyInput( const KeyEvent& rKEvt )
if
(
!
nNewCol
)
nNewCol
=
1
;
}
Update
Size_Impl
(
nNewCol
,
nNewLine
);
Update
(
nNewCol
,
nNewLine
);
}
}
else
if
(
KEY_MOD1
==
nModifier
&&
KEY_RETURN
==
nKey
)
{
m_bMod1
=
TRUE
;
if
(
IsMouseCaptured
())
ReleaseMouse
();
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CLOSEALL
);
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CLOSEALL
);
}
if
(
!
bHandled
)
SfxPopupWindow
::
KeyInput
(
rKEvt
);
}
// -----------------------------------------------------------------------
void
TableWindow
::
MouseButtonDown
(
const
MouseEvent
&
rMEvt
)
{
SfxPopupWindow
::
MouseButtonDown
(
rMEvt
);
CaptureMouse
();
}
// -----------------------------------------------------------------------
...
...
@@ -346,56 +258,45 @@ void TableWindow::MouseButtonDown( const MouseEvent& rMEvt )
void
TableWindow
::
MouseButtonUp
(
const
MouseEvent
&
rMEvt
)
{
SfxPopupWindow
::
MouseButtonUp
(
rMEvt
);
ReleaseMouse
();
if
(
IsInPopupMode
()
)
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CLOSEALL
);
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CLOSEALL
);
}
// -----------------------------------------------------------------------
void
TableWindow
::
Paint
(
const
Rectangle
&
)
{
long
i
;
long
nStart
;
Size
aSize
=
GetOutputSizePixel
();
const
long
nSelectionWidth
=
TABLE_POS_X
+
nCol
*
TABLE_CELL_WIDTH
;
const
long
nSelectionHeight
=
TABLE_POS_Y
+
nLine
*
TABLE_CELL_HEIGHT
;
SetLineColor
();
SetFillColor
(
aHighlightFillColor
);
DrawRect
(
Rectangle
(
0
,
0
,
nCol
*
nMX
-
1
,
nLine
*
nMY
-
1
)
);
SetFillColor
(
aFillColor
);
DrawRect
(
Rectangle
(
nCol
*
nMX
-
1
,
0
,
aSize
.
Width
(),
aSize
.
Height
()
-
nTextHeight
+
1
)
);
DrawRect
(
Rectangle
(
0
,
nLine
*
nMY
-
1
,
aSize
.
Width
(),
aSize
.
Height
()
-
nTextHeight
+
1
)
);
SetLineColor
(
aHighlightLineColor
);
for
(
i
=
1
;
i
<
nCol
;
i
++
)
DrawLine
(
Point
(
i
*
nMX
-
1
,
0
),
Point
(
i
*
nMX
-
1
,
nLine
*
nMY
-
1
)
);
for
(
i
=
1
;
i
<
nLine
;
i
++
)
DrawLine
(
Point
(
0
,
i
*
nMY
-
1
),
Point
(
nCol
*
nMX
-
1
,
i
*
nMY
-
1
)
);
// the non-selected parts of the table
SetLineColor
(
aLineColor
);
for
(
i
=
1
;
i
<=
nWidth
;
i
++
)
{
if
(
i
<
nCol
)
nStart
=
nLine
*
nMY
-
1
;
else
nStart
=
0
;
DrawLine
(
Point
(
i
*
nMX
-
1
,
nStart
),
Point
(
i
*
nMX
-
1
,
nHeight
*
nMY
-
1
)
);
}
for
(
i
=
1
;
i
<=
nHeight
;
i
++
)
SetFillColor
(
aFillColor
);
DrawRect
(
Rectangle
(
nSelectionWidth
,
TABLE_POS_Y
,
TABLE_WIDTH
,
nSelectionHeight
)
);
DrawRect
(
Rectangle
(
TABLE_POS_X
,
nSelectionHeight
,
nSelectionWidth
,
TABLE_HEIGHT
)
);
DrawRect
(
Rectangle
(
nSelectionWidth
,
nSelectionHeight
,
TABLE_WIDTH
,
TABLE_HEIGHT
)
);
// the selection
if
(
nCol
>
0
&&
nLine
>
0
)
{
if
(
i
<
nLine
)
nStart
=
nCol
*
nMX
-
1
;
else
nStart
=
0
;
DrawLine
(
Point
(
nStart
,
i
*
nMY
-
1
),
Point
(
nWidth
*
nMX
-
1
,
i
*
nMY
-
1
)
);
SetFillColor
(
aHighlightFillColor
);
DrawRect
(
Rectangle
(
TABLE_POS_X
,
TABLE_POS_Y
,
nSelectionWidth
,
nSelectionHeight
)
);
}
SetLineColor
();
String
aText
;
// lines inside of the table
SetLineColor
(
aLineColor
);
for
(
long
i
=
1
;
i
<
TABLE_CELLS_VERT
;
++
i
)
DrawLine
(
Point
(
TABLE_POS_X
,
TABLE_POS_Y
+
i
*
TABLE_CELL_HEIGHT
),
Point
(
TABLE_WIDTH
,
TABLE_POS_Y
+
i
*
TABLE_CELL_HEIGHT
)
);
for
(
long
i
=
1
;
i
<
TABLE_CELLS_HORIZ
;
++
i
)
DrawLine
(
Point
(
TABLE_POS_X
+
i
*
TABLE_CELL_WIDTH
,
TABLE_POS_Y
),
Point
(
TABLE_POS_X
+
i
*
TABLE_CELL_WIDTH
,
TABLE_HEIGHT
)
);
// the text near the mouse cursor telling the table dimensions
if
(
nCol
&&
nLine
)
{
String
aText
;
aText
+=
String
::
CreateFromInt32
(
nCol
);
aText
.
AppendAscii
(
" x "
);
aText
+=
String
::
CreateFromInt32
(
nLine
);
...
...
@@ -405,22 +306,30 @@ void TableWindow::Paint( const Rectangle& )
aText
+=
String
(
SVX_RESSTR
(
RID_SVXSTR_PAGES
));
}
}
else
aText
=
Button
::
GetStandardText
(
BUTTON_CANCEL
);
Size
aTextSize
(
GetTextWidth
(
aText
),
GetTextHeight
()
);
Size
aSize
=
GetOutputSizePixel
();
Size
aTextSize
(
GetTextWidth
(
aText
),
GetTextHeight
()
);
Rectangle
aClearRect
(
0
,
aSize
.
Height
()
-
nTextHeight
+
2
,
(
aSize
.
Width
()),
aSize
.
Height
()
);
DrawRect
(
aClearRect
);
long
nTextX
=
nSelectionWidth
+
TABLE_CELL_WIDTH
;
long
nTextY
=
nSelectionHeight
+
TABLE_CELL_HEIGHT
;
const
long
nTipBorder
=
2
;
// #i95350# force RTL output
if
(
IsRTLEnabled
()
&&
nCol
&&
nLine
)
aText
.
Insert
(
0x202D
,
0
);
DrawText
(
Point
(
(
aSize
.
Width
()
-
aTextSize
.
Width
())
/
2
,
aSize
.
Height
()
-
nTextHeight
+
2
),
aText
);
if
(
aTextSize
.
Width
()
+
TABLE_POS_X
+
TABLE_CELL_WIDTH
+
2
*
nTipBorder
<
nSelectionWidth
)
nTextX
=
nSelectionWidth
-
TABLE_CELL_WIDTH
-
aTextSize
.
Width
();
SetLineColor
(
aLineColor
);
SetFillColor
();
DrawRect
(
Rectangle
(
Point
(
0
,
0
),
aSize
)
);
if
(
aTextSize
.
Height
()
+
TABLE_POS_Y
+
TABLE_CELL_HEIGHT
+
2
*
nTipBorder
<
nSelectionHeight
)
nTextY
=
nSelectionHeight
-
TABLE_CELL_HEIGHT
-
aTextSize
.
Height
();
SetLineColor
(
aLineColor
);
SetFillColor
(
aBackgroundColor
);
DrawRect
(
Rectangle
(
nTextX
-
2
*
nTipBorder
,
nTextY
-
2
*
nTipBorder
,
nTextX
+
aTextSize
.
Width
()
+
nTipBorder
,
nTextY
+
aTextSize
.
Height
()
+
nTipBorder
)
);
// #i95350# force RTL output
if
(
IsRTLEnabled
()
)
aText
.
Insert
(
0x202D
,
0
);
DrawText
(
Point
(
nTextX
,
nTextY
),
aText
);
}
}
// -----------------------------------------------------------------------
...
...
@@ -429,37 +338,71 @@ void TableWindow::PopupModeEnd()
{
if
(
!
IsPopupModeCanceled
()
&&
nCol
&&
nLine
)
{
Window
*
pParent
=
rTbx
.
GetParent
();
USHORT
nId
=
GetId
();
pParent
->
UserEvent
(
SVX_EVENT_COLUM_WINDOW_EXECUTE
,
reinterpret_cast
<
void
*>
(
nId
));
Reference
<
XDispatchProvider
>
xDispatchProvider
(
mxFrame
,
UNO_QUERY
);
if
(
xDispatchProvider
.
is
()
)
{
com
::
sun
::
star
::
util
::
URL
aTargetURL
;
Reference
<
XURLTransformer
>
xTrans
(
::
comphelper
::
getProcessServiceFactory
()
->
createInstance
(
rtl
::
OUString
::
createFromAscii
(
"com.sun.star.util.URLTransformer"
)),
UNO_QUERY
);
aTargetURL
.
Complete
=
maCommand
;
xTrans
->
parseStrict
(
aTargetURL
);
Reference
<
XDispatch
>
xDispatch
=
xDispatchProvider
->
queryDispatch
(
aTargetURL
,
rtl
::
OUString
(),
0
);
if
(
xDispatch
.
is
()
)
{
Sequence
<
PropertyValue
>
aArgs
(
2
);
aArgs
[
0
].
Name
=
::
rtl
::
OUString
(
RTL_CONSTASCII_USTRINGPARAM
(
"Columns"
));
aArgs
[
0
].
Value
=
makeAny
(
sal_Int16
(
nCol
));
aArgs
[
1
].
Name
=
::
rtl
::
OUString
(
RTL_CONSTASCII_USTRINGPARAM
(
"Rows"
));
aArgs
[
1
].
Value
=
makeAny
(
sal_Int16
(
nLine
));
Sequence
<
PropertyValue
>
aArgs
(
2
);
aArgs
[
0
].
Name
=
::
rtl
::
OUString
(
RTL_CONSTASCII_USTRINGPARAM
(
"Columns"
));
aArgs
[
0
].
Value
=
makeAny
(
sal_Int16
(
nCol
));
aArgs
[
1
].
Name
=
::
rtl
::
OUString
(
RTL_CONSTASCII_USTRINGPARAM
(
"Rows"
));
aArgs
[
1
].
Value
=
makeAny
(
sal_Int16
(
nLine
));
xDispatch
->
dispatch
(
aTargetURL
,
aArgs
);
}
}
TableDialog
(
aArgs
);
}
else
if
(
IsPopupModeCanceled
()
)
ReleaseMouse
();
SfxPopupWindow
::
PopupModeEnd
();
}
// -----------------------------------------------------------------------
void
TableWindow
::
Update
(
long
nNewCol
,
long
nNewLine
)
{
if
(
nNewCol
<
0
||
nNewCol
>
TABLE_CELLS_HORIZ
)
nNewCol
=
0
;
if
(
nNewLine
<
0
||
nNewLine
>
TABLE_CELLS_VERT
)
nNewLine
=
0
;
if
(
nNewCol
!=
nCol
||
nNewLine
!=
nLine
)
{
nCol
=
nNewCol
;
nLine
=
nNewLine
;
Invalidate
(
Rectangle
(
TABLE_POS_X
,
TABLE_POS_Y
,
TABLE_WIDTH
,
TABLE_HEIGHT
)
);
}
}
// -----------------------------------------------------------------------
void
TableWindow
::
TableDialog
(
const
Sequence
<
PropertyValue
>&
rArgs
)
{
Window
*
pParent
=
rTbx
.
GetParent
();
USHORT
nId
=
GetId
();
pParent
->
UserEvent
(
SVX_EVENT_COLUM_WINDOW_EXECUTE
,
reinterpret_cast
<
void
*>
(
nId
));
Reference
<
XDispatchProvider
>
xDispatchProvider
(
mxFrame
,
UNO_QUERY
);
if
(
xDispatchProvider
.
is
()
)
{
com
::
sun
::
star
::
util
::
URL
aTargetURL
;
Reference
<
XURLTransformer
>
xTrans
(
::
comphelper
::
getProcessServiceFactory
()
->
createInstance
(
rtl
::
OUString
::
createFromAscii
(
"com.sun.star.util.URLTransformer"
)),
UNO_QUERY
);
aTargetURL
.
Complete
=
maCommand
;
xTrans
->
parseStrict
(
aTargetURL
);
Reference
<
XDispatch
>
xDispatch
=
xDispatchProvider
->
queryDispatch
(
aTargetURL
,
rtl
::
OUString
(),
0
);
if
(
xDispatch
.
is
()
)
xDispatch
->
dispatch
(
aTargetURL
,
rArgs
);
}
}
// -----------------------------------------------------------------------
void
TableWindow
::
CloseAndShowTableDialog
()
{
// close the toolbar tool
EndPopupMode
(
FLOATWIN_POPUPMODEEND_CANCEL
);
// and open the table dialog instead
TableDialog
(
Sequence
<
PropertyValue
>
()
);
}
// class ColumnsWindow ---------------------------------------------------
class
ColumnsWindow
:
public
SfxPopupWindow
...
...
@@ -469,6 +412,7 @@ private:
::
Color
aHighlightLineColor
;
::
Color
aFillColor
;
::
Color
aHighlightFillColor
;
::
Color
aFaceColor
;
long
nCol
;
long
nWidth
;
long
nMX
;
...
...
@@ -481,7 +425,7 @@ private:
void
UpdateSize_Impl
(
long
nNewCol
);
public
:
ColumnsWindow
(
USHORT
nId
,
const
::
rtl
::
OUString
&
rCmd
,
ToolBox
&
rParentTbx
,
const
Reference
<
XFrame
>&
rFrame
);
ColumnsWindow
(
USHORT
nId
,
const
::
rtl
::
OUString
&
rCmd
,
const
String
&
rText
,
ToolBox
&
rParentTbx
,
const
Reference
<
XFrame
>&
rFrame
);
void
KeyInput
(
const
KeyEvent
&
rKEvt
);
virtual
void
MouseMove
(
const
MouseEvent
&
rMEvt
);
...
...
@@ -496,8 +440,8 @@ public:
// -----------------------------------------------------------------------
ColumnsWindow
::
ColumnsWindow
(
USHORT
nId
,
const
::
rtl
::
OUString
&
rCmd
,
ToolBox
&
rParentTbx
,
const
Reference
<
XFrame
>&
rFrame
)
:
SfxPopupWindow
(
nId
,
rFrame
,
WB_S
YSTEMWINDOW
),
ColumnsWindow
::
ColumnsWindow
(
USHORT
nId
,
const
::
rtl
::
OUString
&
rCmd
,
const
String
&
rText
,
ToolBox
&
rParentTbx
,
const
Reference
<
XFrame
>&
rFrame
)
:
SfxPopupWindow
(
nId
,
rFrame
,
WB_S
TDPOPUP
),
bInitialKeyInput
(
TRUE
),
m_bMod1
(
FALSE
),
rTbx
(
rParentTbx
),
...
...
@@ -510,18 +454,21 @@ ColumnsWindow::ColumnsWindow( USHORT nId, const ::rtl::OUString& rCmd, ToolBox&
aHighlightLineColor
=
rStyles
.
GetHighlightTextColor
();
aFillColor
=
rStyles
.
GetWindowColor
();
aHighlightFillColor
=
rStyles
.
GetHighlightColor
();
aFaceColor
=
rStyles
.
GetFaceColor
();
nTextHeight
=
GetTextHeight
()
+
1
;
SetBackground
();
Font
aFont
(
GetFont
()
);
aFont
.
SetColor
(
aLineColor
);
aFont
.
SetFillColor
(
aF
ill
Color
);
aFont
.
SetFillColor
(
aF
ace
Color
);
aFont
.
SetTransparent
(
FALSE
);
SetFont
(
aFont
);
nCol
=
0
;
nWidth
=
4
;
SetText
(
rText
);
Size
aLogicSize
=
LogicToPixel
(
Size
(
95
,
155
),
MapMode
(
MAP_10TH_MM
)
);
nMX
=
aLogicSize
.
Width
();
SetOutputSizePixel
(
Size
(
nMX
*
nWidth
-
1
,
aLogicSize
.
Height
()
+
nTextHeight
)
);
...
...
@@ -532,7 +479,7 @@ ColumnsWindow::ColumnsWindow( USHORT nId, const ::rtl::OUString& rCmd, ToolBox&
SfxPopupWindow
*
ColumnsWindow
::
Clone
()
const
{
return
new
ColumnsWindow
(
GetId
(),
maCommand
,
rTbx
,
mxFrame
);
return
new
ColumnsWindow
(
GetId
(),
maCommand
,
GetText
(),
rTbx
,
mxFrame
);
}
// -----------------------------------------------------------------------
...
...
@@ -730,12 +677,13 @@ void ColumnsWindow::Paint( const Rectangle& )
}
SetLineColor
();
SetFillColor
(
aF
ill
Color
);
SetFillColor
(
aF
ace
Color
);
String
aText
;
if
(
nCol
)
aText
=
String
(
String
::
CreateFromInt32
(
nCol
)
);
else
aText
=
Button
::
GetStandardText
(
BUTTON_CANCEL
);
aText
=
Button
::
GetStandardText
(
BUTTON_CANCEL
).
EraseAllChars
(
'~'
);
Size
aTextSize
(
GetTextWidth
(
aText
),
GetTextHeight
());
DrawText
(
Point
(
(
aSize
.
Width
()
-
aTextSize
.
Width
()
)
/
2
,
aSize
.
Height
()
-
nTextHeight
+
2
),
aText
);
...
...
@@ -744,7 +692,7 @@ void ColumnsWindow::Paint( const Rectangle& )
SetLineColor
(
aLineColor
);
SetFillColor
();
DrawRect
(
Rectangle
(
Point
(
0
,
0
),
aSize
)
);
DrawRect
(
Rectangle
(
0
,
0
,
aSize
.
Width
()
-
1
,
aSize
.
Height
()
-
nTextHeight
+
1
)
);
}
// -----------------------------------------------------------------------
...
...
@@ -802,7 +750,7 @@ SfxPopupWindow* SvxTableToolBoxControl::CreatePopupWindow()
if
(
bEnabled
)
{
ToolBox
&
rTbx
=
GetToolBox
();
TableWindow
*
pWin
=
new
TableWindow
(
GetSlotId
(),
m_aCommandURL
,
rTbx
,
m_xFrame
);
TableWindow
*
pWin
=
new
TableWindow
(
GetSlotId
(),
m_aCommandURL
,
GetToolBox
().
GetItemText
(
GetId
()
),
rTbx
,
m_xFrame
);
pWin
->
StartPopupMode
(
&
rTbx
,
FLOATWIN_POPUPMODE_GRABFOCUS
|
FLOATWIN_POPUPMODE_NOKEYCLOSE
);
SetPopupWindow
(
pWin
);
return
pWin
;
...
...
@@ -815,7 +763,7 @@ SfxPopupWindow* SvxTableToolBoxControl::CreatePopupWindow()
SfxPopupWindow
*
SvxTableToolBoxControl
::
CreatePopupWindowCascading
()
{
if
(
bEnabled
)
return
new
TableWindow
(
GetSlotId
(),
m_aCommandURL
,
GetToolBox
(),
m_xFrame
);
return
new
TableWindow
(
GetSlotId
(),
m_aCommandURL
,
GetToolBox
()
.
GetItemText
(
GetId
()
),
GetToolBox
()
,
m_xFrame
);
return
0
;
}
...
...
@@ -868,7 +816,7 @@ SfxPopupWindow* SvxColumnsToolBoxControl::CreatePopupWindow()
ColumnsWindow
*
pWin
=
0
;
if
(
bEnabled
)
{
pWin
=
new
ColumnsWindow
(
GetSlotId
(),
m_aCommandURL
,
GetToolBox
(),
m_xFrame
);
pWin
=
new
ColumnsWindow
(
GetSlotId
(),
m_aCommandURL
,
GetToolBox
()
.
GetItemText
(
GetId
()
),
GetToolBox
()
,
m_xFrame
);
pWin
->
StartPopupMode
(
&
GetToolBox
(),
FLOATWIN_POPUPMODE_GRABFOCUS
|
FLOATWIN_POPUPMODE_NOKEYCLOSE
);
SetPopupWindow
(
pWin
);
...
...
@@ -883,7 +831,7 @@ SfxPopupWindow* SvxColumnsToolBoxControl::CreatePopupWindowCascading()
ColumnsWindow
*
pWin
=
0
;
if
(
bEnabled
)
{
pWin
=
new
ColumnsWindow
(
GetSlotId
(),
m_aCommandURL
,
GetToolBox
(),
m_xFrame
);
pWin
=
new
ColumnsWindow
(
GetSlotId
(),
m_aCommandURL
,
GetToolBox
()
.
GetItemText
(
GetId
()
),
GetToolBox
()
,
m_xFrame
);
}
return
pWin
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment