Kaydet (Commit) b8633c58 authored tarafından Caolán McNamara's avatar Caolán McNamara

weld FontWorkGalleryDialog

Change-Id: I6a3a2b445d6f79d0c259c69176e1b23de1ff05d3
Reviewed-on: https://gerrit.libreoffice.org/61474Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 7aa30262
......@@ -27,6 +27,7 @@
#include <vcl/button.hxx>
#include <vcl/dialog.hxx>
#include <vcl/field.hxx>
#include <vcl/weld.hxx>
#include <svtools/valueset.hxx>
......@@ -59,31 +60,30 @@ public:
sal_Int32 getScale() const;
};
class SAL_WARN_UNUSED SVX_DLLPUBLIC FontWorkGalleryDialog : public ModalDialog
class SAL_WARN_UNUSED SVX_DLLPUBLIC FontWorkGalleryDialog : public weld::GenericDialogController
{
VclPtr<ValueSet> mpCtlFavorites;
VclPtr<OKButton> mpOKButton;
sal_uInt16 mnThemeId;
SdrView* mpSdrView;
DECL_LINK( DoubleClickFavoriteHdl, ValueSet*, void );
DECL_LINK( ClickOKHdl, Button*, void );
SdrObject** mppSdrObject;
SdrModel* mpDestModel;
std::vector<BitmapEx> maFavoritesHorizontal;
SvtValueSet maCtlFavorites;
std::unique_ptr<weld::CustomWeld> mxCtlFavorites;
std::unique_ptr<weld::Button> mxOKButton;
void initFavorites(sal_uInt16 nThemeId);
void insertSelectedFontwork();
void fillFavorites(sal_uInt16 nThemeId);
std::vector< BitmapEx> maFavoritesHorizontal;
DECL_LINK(DoubleClickFavoriteHdl, SvtValueSet*, void);
DECL_LINK(ClickOKHdl, weld::Button&, void );
public:
FontWorkGalleryDialog( SdrView* pView, vcl::Window* pParent );
FontWorkGalleryDialog(weld::Window* pParent, SdrView* pView);
virtual ~FontWorkGalleryDialog() override;
virtual void dispose() override;
// SJ: if the SdrObject** is set, the SdrObject is not inserted into the page when executing the dialog
void SetSdrObjectRef( SdrObject**, SdrModel* pModel );
......
......@@ -65,25 +65,25 @@ namespace svx
const int nColCount = 4;
const int nLineCount = 4;
FontWorkGalleryDialog::FontWorkGalleryDialog( SdrView* pSdrView, vcl::Window* pParent ) :
ModalDialog(pParent, "FontworkGalleryDialog", "svx/ui/fontworkgallerydialog.ui" ),
mnThemeId ( 0xffff ),
mpSdrView ( pSdrView ),
mppSdrObject ( nullptr ),
mpDestModel ( nullptr )
{
get(mpOKButton, "ok");
get(mpCtlFavorites, "ctlFavorites");
Size aSize(LogicToPixel(Size(200, 200), MapMode(MapUnit::MapAppFont)));
mpCtlFavorites->set_width_request(aSize.Width());
mpCtlFavorites->set_height_request(aSize.Height());
mpCtlFavorites->SetDoubleClickHdl( LINK( this, FontWorkGalleryDialog, DoubleClickFavoriteHdl ) );
mpOKButton->SetClickHdl( LINK( this, FontWorkGalleryDialog, ClickOKHdl ) );
mpCtlFavorites->SetColCount( nColCount );
mpCtlFavorites->SetLineCount( nLineCount );
mpCtlFavorites->SetExtraSpacing( 3 );
FontWorkGalleryDialog::FontWorkGalleryDialog(weld::Window* pParent, SdrView* pSdrView)
: GenericDialogController(pParent, "svx/ui/fontworkgallerydialog.ui", "FontworkGalleryDialog")
, mnThemeId(0xffff)
, mpSdrView(pSdrView)
, mppSdrObject(nullptr)
, mpDestModel(nullptr)
, maCtlFavorites(m_xBuilder->weld_scrolled_window("ctlFavoriteswin"))
, mxCtlFavorites(new weld::CustomWeld(*m_xBuilder, "ctlFavorites", maCtlFavorites))
, mxOKButton(m_xBuilder->weld_button("ok"))
{
Size aSize(maCtlFavorites.GetDrawingArea()->get_ref_device().LogicToPixel(Size(200, 200), MapMode(MapUnit::MapAppFont)));
mxCtlFavorites->set_size_request(aSize.Width(), aSize.Height());
maCtlFavorites.SetDoubleClickHdl( LINK( this, FontWorkGalleryDialog, DoubleClickFavoriteHdl ) );
mxOKButton->connect_clicked(LINK(this, FontWorkGalleryDialog, ClickOKHdl));
maCtlFavorites.SetColCount( nColCount );
maCtlFavorites.SetLineCount( nLineCount );
maCtlFavorites.SetExtraSpacing( 3 );
initFavorites( GALLERY_THEME_FONTWORK );
fillFavorites( GALLERY_THEME_FONTWORK );
......@@ -91,14 +91,6 @@ FontWorkGalleryDialog::FontWorkGalleryDialog( SdrView* pSdrView, vcl::Window* pP
FontWorkGalleryDialog::~FontWorkGalleryDialog()
{
disposeOnce();
}
void FontWorkGalleryDialog::dispose()
{
mpCtlFavorites.clear();
mpOKButton.clear();
ModalDialog::dispose();
}
void FontWorkGalleryDialog::initFavorites(sal_uInt16 nThemeId)
......@@ -121,8 +113,8 @@ void FontWorkGalleryDialog::initFavorites(sal_uInt16 nThemeId)
ScopedVclPtrInstance< VirtualDevice > pVDev;
const Point aNull(0, 0);
if (GetDPIScaleFactor() > 1)
aThumb.Scale(GetDPIScaleFactor(), GetDPIScaleFactor());
if (pVDev->GetDPIScaleFactor() > 1)
aThumb.Scale(pVDev->GetDPIScaleFactor(), pVDev->GetDPIScaleFactor());
const Size aSize(aThumb.GetSizePixel());
......@@ -147,7 +139,7 @@ void FontWorkGalleryDialog::fillFavorites(sal_uInt16 nThemeId)
{
mnThemeId = nThemeId;
Size aThumbSize( mpCtlFavorites->GetSizePixel() );
Size aThumbSize(maCtlFavorites.GetOutputSizePixel());
aThumbSize.setWidth( aThumbSize.Width() / nColCount );
aThumbSize.setHeight( aThumbSize.Height() / nLineCount );
aThumbSize.AdjustWidth( -12 );
......@@ -158,12 +150,12 @@ void FontWorkGalleryDialog::fillFavorites(sal_uInt16 nThemeId)
// ValueSet favorites
if( nFavCount > (nColCount * nLineCount) )
{
WinBits nWinBits = mpCtlFavorites->GetStyle();
WinBits nWinBits = maCtlFavorites.GetStyle();
nWinBits |= WB_VSCROLL;
mpCtlFavorites->SetStyle( nWinBits );
maCtlFavorites.SetStyle( nWinBits );
}
mpCtlFavorites->Clear();
maCtlFavorites.Clear();
for( std::vector<Bitmap *>::size_type nFavorite = 1; nFavorite <= nFavCount; nFavorite++ )
{
......@@ -171,7 +163,7 @@ void FontWorkGalleryDialog::fillFavorites(sal_uInt16 nThemeId)
aStr += " ";
aStr += OUString::number(nFavorite);
Image aThumbImage( maFavoritesHorizontal[nFavorite-1] );
mpCtlFavorites->InsertItem( static_cast<sal_uInt16>(nFavorite), aThumbImage, aStr );
maCtlFavorites.InsertItem( static_cast<sal_uInt16>(nFavorite), aThumbImage, aStr );
}
}
......@@ -183,7 +175,7 @@ void FontWorkGalleryDialog::SetSdrObjectRef( SdrObject** ppSdrObject, SdrModel*
void FontWorkGalleryDialog::insertSelectedFontwork()
{
sal_uInt16 nItemId = mpCtlFavorites->GetSelectedItemId();
sal_uInt16 nItemId = maCtlFavorites.GetSelectedItemId();
if( nItemId > 0 )
{
......@@ -258,21 +250,18 @@ void FontWorkGalleryDialog::insertSelectedFontwork()
}
}
IMPL_LINK_NOARG(FontWorkGalleryDialog, ClickOKHdl, Button*, void)
IMPL_LINK_NOARG(FontWorkGalleryDialog, ClickOKHdl, weld::Button&, void)
{
insertSelectedFontwork();
EndDialog( RET_OK );
m_xDialog->response(RET_OK);
}
IMPL_LINK_NOARG(FontWorkGalleryDialog, DoubleClickFavoriteHdl, ValueSet*, void)
IMPL_LINK_NOARG(FontWorkGalleryDialog, DoubleClickFavoriteHdl, SvtValueSet*, void)
{
insertSelectedFontwork();
EndDialog( RET_OK );
m_xDialog->response(RET_OK);
}
class FontworkAlignmentWindow : public ToolbarMenu
{
public:
......
......@@ -204,25 +204,6 @@ FontworkBar::~FontworkBar()
SetRepeatTarget(nullptr);
}
static vcl::Window* ImpGetViewWin(SdrView const * pView)
{
if( pView )
{
const sal_uInt32 nCount(pView->PaintWindowCount());
for(sal_uInt32 nNum(0); nNum < nCount; nNum++)
{
OutputDevice* pOut = &(pView->GetPaintWindow(nNum)->GetOutputDevice());
if(OUTDEV_WINDOW == pOut->GetOutDevType())
{
return static_cast<vcl::Window*>(pOut);
}
}
}
return nullptr;
}
namespace svx {
bool checkForSelectedFontWork( SdrView const * pSdrView, sal_uInt32& nCheckStatus )
{
......@@ -431,8 +412,8 @@ void FontworkBar::execute( SdrView* pSdrView, SfxRequest const & rReq, SfxBindin
{
case SID_FONTWORK_GALLERY_FLOATER:
{
ScopedVclPtrInstance< FontWorkGalleryDialog > aDlg( pSdrView, ImpGetViewWin(pSdrView) );
aDlg->Execute();
FontWorkGalleryDialog aDlg(rReq.GetFrameWeld(), pSdrView);
aDlg.run();
}
break;
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="svx">
<requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/>
<object class="GtkDialog" id="FontworkGalleryDialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="title" translatable="yes" context="fontworkgallerydialog|FontworkGalleryDialog">Fontwork Gallery</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="default_width">0</property>
<property name="default_height">0</property>
<property name="type_hint">dialog</property>
<child>
<placeholder/>
</child>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property>
......@@ -78,14 +83,16 @@
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="row_spacing">6</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="fontworkgallerydialog|label1">Select a Fontwork style:</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -93,11 +100,29 @@
</packing>
</child>
<child>
<object class="svtlo-ValueSet" id="ctlFavorites:border">
<object class="GtkScrolledWindow" id="ctlFavoriteswin">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkDrawingArea" id="ctlFavorites">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left_attach">0</property>
......
......@@ -144,10 +144,9 @@ void SwView::ExecDraw(SfxRequest& rReq)
}
else if ( nSlotId == SID_FONTWORK_GALLERY_FLOATER )
{
vcl::Window* pWin = &( m_pWrtShell->GetView().GetViewFrame()->GetWindow() );
vcl::Window& rWin = m_pWrtShell->GetView().GetViewFrame()->GetWindow();
if ( pWin )
pWin->EnterWait();
rWin.EnterWait();
if( !m_pWrtShell->HasDrawView() )
m_pWrtShell->MakeDrawView();
......@@ -156,9 +155,9 @@ void SwView::ExecDraw(SfxRequest& rReq)
if ( pSdrView )
{
SdrObject* pObj = nullptr;
ScopedVclPtrInstance< svx::FontWorkGalleryDialog > aDlg( pSdrView, pWin );
aDlg->SetSdrObjectRef( &pObj, pSdrView->GetModel() );
aDlg->Execute();
svx::FontWorkGalleryDialog aDlg(rWin.GetFrameWeld(), pSdrView);
aDlg.SetSdrObjectRef( &pObj, pSdrView->GetModel() );
aDlg.run();
if ( pObj )
{
Size aDocSize( m_pWrtShell->GetDocSize() );
......@@ -174,12 +173,7 @@ void SwView::ExecDraw(SfxRequest& rReq)
aPos.setY( aDocSize.Height() / 2 + rVisArea.Top() );
if( aPrefSize.Width() && aPrefSize.Height() )
{
if( pWin )
aSize = pWin->PixelToLogic(aPrefSize, MapMode(MapUnit::MapTwip));
else
aSize = Application::GetDefaultDevice()->PixelToLogic(aPrefSize, MapMode(MapUnit::MapTwip));
}
aSize = rWin.PixelToLogic(aPrefSize, MapMode(MapUnit::MapTwip));
else
aSize = Size( 2835, 2835 );
......@@ -188,8 +182,7 @@ void SwView::ExecDraw(SfxRequest& rReq)
rReq.Ignore ();
}
}
if( pWin )
pWin->LeaveWait();
rWin.LeaveWait();
}
else if ( m_nFormSfxId != USHRT_MAX )
GetViewFrame()->GetDispatcher()->Execute( SID_FM_LEAVE_CREATE );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment