weld SwCaptionDialog

Change-Id: I5babfbf3489f88c5d6cdeffbd514d86368f04fa9
Reviewed-on: https://gerrit.libreoffice.org/65014
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
Caolán McNamara 2018-12-12 11:50:06 +00:00
parent 320e8d38b7
commit 72ebf150ab
10 changed files with 256 additions and 248 deletions

View File

@ -223,9 +223,6 @@
<glade-widget-class title="Calc Table Preview" name="sclo-ScAutoFmtPreview" <glade-widget-class title="Calc Table Preview" name="sclo-ScAutoFmtPreview"
generic-name="Calc Table Preview Window" parent="GtkDrawingArea" generic-name="Calc Table Preview Window" parent="GtkDrawingArea"
icon-name="widget-gtk-drawingarea"/> icon-name="widget-gtk-drawingarea"/>
<glade-widget-class title="Caption Preview" name="swuilo-SwCaptionPreview"
generic-name="Caption Preview Window" parent="GtkDrawingArea"
icon-name="widget-gtk-drawingarea"/>
<glade-widget-class title="Extension List" name="deploymentgui-ExtensionBox" <glade-widget-class title="Extension List" name="deploymentgui-ExtensionBox"
generic-name="Extensions List" parent="GtkDrawingArea" generic-name="Extensions List" parent="GtkDrawingArea"
icon-name="widget-gtk-drawingarea"/> icon-name="widget-gtk-drawingarea"/>

View File

@ -510,7 +510,6 @@ custom_widgets = [
'SvxTextEncodingBox', 'SvxTextEncodingBox',
'SvxTextEncodingBox', 'SvxTextEncodingBox',
'SwAddressPreview', 'SwAddressPreview',
'SwCaptionPreview',
'SwFieldRefTreeListBox', 'SwFieldRefTreeListBox',
'SwGlTreeListBox', 'SwGlTreeListBox',
'SwIdxTreeListBox', 'SwIdxTreeListBox',

View File

@ -377,7 +377,7 @@ public:
virtual VclPtr<SfxAbstractTabDialog> CreateSwCharDlg(weld::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet, virtual VclPtr<SfxAbstractTabDialog> CreateSwCharDlg(weld::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet,
SwCharDlgMode nDialogMode, const OUString* pFormatStr = nullptr) = 0; SwCharDlgMode nDialogMode, const OUString* pFormatStr = nullptr) = 0;
virtual VclPtr<AbstractSwConvertTableDlg> CreateSwConvertTableDlg(SwView& rView, bool bToTable) = 0; virtual VclPtr<AbstractSwConvertTableDlg> CreateSwConvertTableDlg(SwView& rView, bool bToTable) = 0;
virtual VclPtr<VclAbstractDialog> CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) = 0; virtual VclPtr<VclAbstractDialog> CreateSwCaptionDialog(weld::Window *pParent, SwView &rV) = 0;
virtual VclPtr<AbstractSwInsertDBColAutoPilot> CreateSwInsertDBColAutoPilot(SwView& rView, virtual VclPtr<AbstractSwInsertDBColAutoPilot> CreateSwInsertDBColAutoPilot(SwView& rView,
css::uno::Reference< css::sdbc::XDataSource> rxSource, css::uno::Reference< css::sdbc::XDataSource> rxSource,

View File

@ -495,7 +495,6 @@ void CaptionPreview::Paint(vcl::RenderContext& rRenderContext, const tools::Rect
rRenderContext.DrawText(Point(4, 6), maText); rRenderContext.DrawText(Point(4, 6), maText);
} }
IMPL_LINK(SwCaptionOptPage, TextFilterHdl, OUString&, rTest, bool) IMPL_LINK(SwCaptionOptPage, TextFilterHdl, OUString&, rTest, bool)
{ {
rTest = m_aTextFilter.filter(rTest); rTest = m_aTextFilter.filter(rTest);

View File

@ -801,10 +801,9 @@ VclPtr<AbstractSwConvertTableDlg> SwAbstractDialogFactory_Impl::CreateSwConvertT
return VclPtr<AbstractSwConvertTableDlg_Impl>::Create(o3tl::make_unique<SwConvertTableDlg>(rView, bToTable)); return VclPtr<AbstractSwConvertTableDlg_Impl>::Create(o3tl::make_unique<SwConvertTableDlg>(rView, bToTable));
} }
VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateSwCaptionDialog(weld::Window *pParent, SwView &rV)
{ {
VclPtr<Dialog> pDlg = VclPtr<SwCaptionDialog>::Create( pParent, rV ); return VclPtr<AbstractGenericDialog_Impl>::Create(o3tl::make_unique<SwCaptionDialog>(pParent, rV));
return VclPtr<VclAbstractDialog_Impl>::Create( pDlg );
} }
VclPtr<AbstractSwInsertDBColAutoPilot> SwAbstractDialogFactory_Impl::CreateSwInsertDBColAutoPilot( SwView& rView, VclPtr<AbstractSwInsertDBColAutoPilot> SwAbstractDialogFactory_Impl::CreateSwInsertDBColAutoPilot( SwView& rView,

View File

@ -604,7 +604,7 @@ public:
virtual VclPtr<SfxAbstractTabDialog> CreateSwCharDlg(weld::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet, virtual VclPtr<SfxAbstractTabDialog> CreateSwCharDlg(weld::Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet,
SwCharDlgMode nDialogMode, const OUString* pFormatStr = nullptr) override; SwCharDlgMode nDialogMode, const OUString* pFormatStr = nullptr) override;
virtual VclPtr<AbstractSwConvertTableDlg> CreateSwConvertTableDlg(SwView& rView, bool bToTable) override; virtual VclPtr<AbstractSwConvertTableDlg> CreateSwConvertTableDlg(SwView& rView, bool bToTable) override;
virtual VclPtr<VclAbstractDialog> CreateSwCaptionDialog ( vcl::Window *pParent, SwView &rV) override; virtual VclPtr<VclAbstractDialog> CreateSwCaptionDialog(weld::Window *pParent, SwView &rV) override;
virtual VclPtr<AbstractSwInsertDBColAutoPilot> CreateSwInsertDBColAutoPilot(SwView& rView, virtual VclPtr<AbstractSwInsertDBColAutoPilot> CreateSwInsertDBColAutoPilot(SwView& rView,
css::uno::Reference< css::sdbc::XDataSource> rxSource, css::uno::Reference< css::sdbc::XDataSource> rxSource,
css::uno::Reference<css::sdbcx::XColumnsSupplier> xColSupp, css::uno::Reference<css::sdbcx::XColumnsSupplier> xColSupp,

View File

@ -97,30 +97,36 @@ OUString TextFilterAutoConvert::filter(const OUString &rText)
return rText; return rText;
} }
SwCaptionDialog::SwCaptionDialog( vcl::Window *pParent, SwView &rV ) : IMPL_LINK(SwCaptionDialog, TextFilterHdl, OUString&, rTest, bool)
SvxStandardDialog( pParent, "InsertCaptionDialog", "modules/swriter/ui/insertcaption.ui" ),
m_sNone( SwResId(SW_STR_NONE) ),
m_aTextFilter(m_sNone),
rView( rV ),
pMgr( new SwFieldMgr(rView.GetWrtShellPtr()) ),
bCopyAttributes( false ),
bOrderNumberingFirst( SW_MOD()->GetModuleConfig()->IsCaptionOrderNumberingFirst() )
{ {
get(m_pTextEdit, "caption_edit"); rTest = m_aTextFilter.filter(rTest);
get(m_pCategoryBox, "category"); return true;
m_pCategoryBox->SetTextFilter(&m_aTextFilter); }
get(m_pFormatText, "numbering_label");
get(m_pFormatBox, "numbering"); SwCaptionDialog::SwCaptionDialog(weld::Window *pParent, SwView &rV)
get(m_pNumberingSeparatorFT, "num_separator"); : SfxDialogController(pParent, "modules/swriter/ui/insertcaption.ui", "InsertCaptionDialog")
get(m_pNumberingSeparatorED, "num_separator_edit"); , m_sNone(SwResId(SW_STR_NONE))
get(m_pSepText, "separator_label"); , m_aTextFilter(m_sNone)
get(m_pSepEdit, "separator_edit"); , rView(rV)
get(m_pPosText, "position_label"); , pMgr(new SwFieldMgr(rView.GetWrtShellPtr()))
get(m_pPosBox, "position"); , bCopyAttributes(false)
get(m_pPreview, "preview"); , bOrderNumberingFirst(SW_MOD()->GetModuleConfig()->IsCaptionOrderNumberingFirst())
get(m_pOKButton, "ok"); , m_xTextEdit(m_xBuilder->weld_entry("caption_edit"))
get(m_pAutoCaptionButton, "auto"); , m_xCategoryBox(m_xBuilder->weld_combo_box("category"))
get(m_pOptionButton, "options"); , m_xFormatText(m_xBuilder->weld_label("numbering_label"))
, m_xFormatBox(m_xBuilder->weld_combo_box("numbering"))
, m_xNumberingSeparatorFT(m_xBuilder->weld_label("num_separator"))
, m_xNumberingSeparatorED(m_xBuilder->weld_entry("num_separator_edit"))
, m_xSepText(m_xBuilder->weld_label("separator_label"))
, m_xSepEdit(m_xBuilder->weld_entry("separator_edit"))
, m_xPosText(m_xBuilder->weld_label("position_label"))
, m_xPosBox(m_xBuilder->weld_combo_box("position"))
, m_xOKButton(m_xBuilder->weld_button("ok"))
, m_xAutoCaptionButton(m_xBuilder->weld_button("auto"))
, m_xOptionButton(m_xBuilder->weld_button("options"))
, m_xPreview(new weld::CustomWeld(*m_xBuilder, "preview", m_aPreview))
{
m_xCategoryBox->connect_entry_insert_text(LINK(this, SwCaptionDialog, TextFilterHdl));
//#i61007# order of captions //#i61007# order of captions
ApplyCaptionOrder(); ApplyCaptionOrder();
@ -135,25 +141,24 @@ SwCaptionDialog::SwCaptionDialog( vcl::Window *pParent, SwView &rV ) :
xNameAccess = xObjs->getEmbeddedObjects(); xNameAccess = xObjs->getEmbeddedObjects();
} }
Link<Edit&,void> aLk = LINK( this, SwCaptionDialog, ModifyHdl ); m_xCategoryBox->connect_changed(LINK(this, SwCaptionDialog, ModifyComboHdl));
m_pCategoryBox->SetModifyHdl( aLk ); Link<weld::Entry&,void> aLk = LINK(this, SwCaptionDialog, ModifyEntryHdl);
m_pTextEdit->SetModifyHdl( aLk ); m_xTextEdit->connect_changed(aLk);
m_pNumberingSeparatorED->SetModifyHdl ( aLk ); m_xNumberingSeparatorED->connect_changed(aLk);
m_pSepEdit->SetModifyHdl( aLk ); m_xSepEdit->connect_changed(aLk);
m_pCategoryBox->SetSelectHdl( LINK(this, SwCaptionDialog, SelectHdl) ); m_xFormatBox->connect_changed(LINK(this, SwCaptionDialog, SelectListBoxHdl));
m_pFormatBox->SetSelectHdl( LINK(this, SwCaptionDialog, SelectListBoxHdl) ); m_xOptionButton->connect_clicked(LINK(this, SwCaptionDialog, OptionHdl));
m_pOptionButton->SetClickHdl( LINK( this, SwCaptionDialog, OptionHdl ) ); m_xAutoCaptionButton->connect_clicked(LINK(this, SwCaptionDialog, CaptionHdl));
m_pAutoCaptionButton->SetClickHdl(LINK(this, SwCaptionDialog, CaptionHdl));
m_pCategoryBox->InsertEntry( m_sNone ); m_xCategoryBox->append_text(m_sNone);
size_t nCount = pMgr->GetFieldTypeCount(); size_t nCount = pMgr->GetFieldTypeCount();
for (size_t i = 0; i < nCount; ++i) for (size_t i = 0; i < nCount; ++i)
{ {
SwFieldType *pType = pMgr->GetFieldType( SwFieldIds::Unknown, i ); SwFieldType *pType = pMgr->GetFieldType( SwFieldIds::Unknown, i );
if( pType->Which() == SwFieldIds::SetExp && if( pType->Which() == SwFieldIds::SetExp &&
static_cast<SwSetExpFieldType *>( pType)->GetType() & nsSwGetSetExpType::GSE_SEQ ) static_cast<SwSetExpFieldType *>( pType)->GetType() & nsSwGetSetExpType::GSE_SEQ )
m_pCategoryBox->InsertEntry(pType->GetName()); m_xCategoryBox->append_text(pType->GetName());
} }
OUString sString; OUString sString;
@ -205,11 +210,13 @@ SwCaptionDialog::SwCaptionDialog( vcl::Window *pParent, SwView &rV ) :
} }
if( nPoolId ) if( nPoolId )
{ {
if (!sString.isEmpty()) if (sString.isEmpty())
m_pCategoryBox->SetText( sString ); sString = SwStyleNameMapper::GetUIName(nPoolId, OUString());
auto nIndex = m_xCategoryBox->find_text(sString);
if (nIndex != -1)
m_xCategoryBox->set_active(nIndex);
else else
m_pCategoryBox->SetText( m_xCategoryBox->set_entry_text(sString);
SwStyleNameMapper::GetUIName( nPoolId, OUString() ));
} }
// aFormatBox // aFormatBox
@ -218,7 +225,7 @@ SwCaptionDialog::SwCaptionDialog( vcl::Window *pParent, SwView &rV ) :
for ( size_t i = nCount; i; ) for ( size_t i = nCount; i; )
{ {
SwFieldType* pFieldType = pMgr->GetFieldType(SwFieldIds::Unknown, --i); SwFieldType* pFieldType = pMgr->GetFieldType(SwFieldIds::Unknown, --i);
if( pFieldType->GetName() == m_pCategoryBox->GetText() ) if (pFieldType->GetName() == m_xCategoryBox->get_active_text())
{ {
nSelFormat = static_cast<sal_uInt16>(static_cast<SwSetExpFieldType*>(pFieldType)->GetSeqFormat()); nSelFormat = static_cast<sal_uInt16>(static_cast<SwSetExpFieldType*>(pFieldType)->GetSeqFormat());
break; break;
@ -228,11 +235,10 @@ SwCaptionDialog::SwCaptionDialog( vcl::Window *pParent, SwView &rV ) :
sal_uInt16 nFormatCount = pMgr->GetFormatCount(TYP_SEQFLD, false); sal_uInt16 nFormatCount = pMgr->GetFormatCount(TYP_SEQFLD, false);
for ( sal_uInt16 i = 0; i < nFormatCount; ++i ) for ( sal_uInt16 i = 0; i < nFormatCount; ++i )
{ {
m_pFormatBox->InsertEntry( pMgr->GetFormatStr(TYP_SEQFLD, i) );
const sal_uInt16 nFormatId = pMgr->GetFormatId(TYP_SEQFLD, i); const sal_uInt16 nFormatId = pMgr->GetFormatId(TYP_SEQFLD, i);
m_pFormatBox->SetEntryData( i, reinterpret_cast<void*>( nFormatId ) ); m_xFormatBox->append(OUString::number(nFormatId), pMgr->GetFormatStr(TYP_SEQFLD, i));
if( nFormatId == nSelFormat ) if (nFormatId == nSelFormat)
m_pFormatBox->SelectEntryPos( i ); m_xFormatBox->set_active(i);
} }
// aPosBox // aPosBox
@ -244,29 +250,29 @@ SwCaptionDialog::SwCaptionDialog( vcl::Window *pParent, SwView &rV ) :
|| eType == SelectionType::DrawObject || eType == SelectionType::DrawObject
|| eType == (SelectionType::DrawObject | SelectionType::Ornament)) || eType == (SelectionType::DrawObject | SelectionType::Ornament))
{ {
m_pPosBox->InsertEntry(SwResId(STR_CAPTION_ABOVE)); m_xPosBox->append_text(SwResId(STR_CAPTION_ABOVE));
m_pPosBox->InsertEntry(SwResId(STR_CAPTION_BELOW)); m_xPosBox->append_text(SwResId(STR_CAPTION_BELOW));
} }
else if(eType == SelectionType::Frame else if(eType == SelectionType::Frame
|| eType == SelectionType::Text) || eType == SelectionType::Text)
{ {
m_pPosBox->InsertEntry(SwResId(STR_CAPTION_BEGINNING)); m_xPosBox->append_text(SwResId(STR_CAPTION_BEGINNING));
m_pPosBox->InsertEntry(SwResId(STR_CAPTION_END )); m_xPosBox->append_text(SwResId(STR_CAPTION_END));
} }
if (eType & SelectionType::Table) if (eType & SelectionType::Table)
{ {
m_pPosBox->SelectEntryPos(0); m_xPosBox->set_active(0);
} }
else else
{ {
m_pPosBox->SelectEntryPos(1); m_xPosBox->set_active(1);
} }
m_pCategoryBox->GetModifyHdl().Call(*m_pCategoryBox); ModifyHdl();
m_pSepEdit->SetText(our_aSepTextSave); m_xSepEdit->set_text(our_aSepTextSave);
m_pTextEdit->GrabFocus(); m_xTextEdit->grab_focus();
DrawSample(); DrawSample();
} }
@ -274,7 +280,7 @@ void SwCaptionDialog::Apply()
{ {
InsCaptionOpt aOpt; InsCaptionOpt aOpt;
aOpt.UseCaption() = true; aOpt.UseCaption() = true;
OUString aName( m_pCategoryBox->GetText() ); OUString aName(m_xCategoryBox->get_active_text());
if ( aName == m_sNone ) if ( aName == m_sNone )
{ {
aOpt.SetCategory( OUString() ); aOpt.SetCategory( OUString() );
@ -283,25 +289,33 @@ void SwCaptionDialog::Apply()
else else
{ {
aOpt.SetCategory(comphelper::string::strip(aName, ' ')); aOpt.SetCategory(comphelper::string::strip(aName, ' '));
aOpt.SetNumSeparator( m_pNumberingSeparatorED->GetText() ); aOpt.SetNumSeparator(m_xNumberingSeparatorED->get_text());
} }
aOpt.SetNumType( static_cast<sal_uInt16>(reinterpret_cast<sal_uIntPtr>(m_pFormatBox->GetSelectedEntryData())) ); aOpt.SetNumType(m_xFormatBox->get_active_id().toUInt32());
aOpt.SetSeparator( m_pSepEdit->IsEnabled() ? m_pSepEdit->GetText() : OUString() ); aOpt.SetSeparator(m_xSepEdit->get_sensitive() ? m_xSepEdit->get_text() : OUString());
aOpt.SetCaption( m_pTextEdit->GetText() ); aOpt.SetCaption(m_xTextEdit->get_text());
aOpt.SetPos( m_pPosBox->GetSelectedEntryPos() ); aOpt.SetPos(m_xPosBox->get_active());
aOpt.IgnoreSeqOpts() = true; aOpt.IgnoreSeqOpts() = true;
aOpt.CopyAttributes() = bCopyAttributes; aOpt.CopyAttributes() = bCopyAttributes;
aOpt.SetCharacterStyle( sCharacterStyle ); aOpt.SetCharacterStyle( sCharacterStyle );
rView.InsertCaption( &aOpt ); rView.InsertCaption( &aOpt );
our_aSepTextSave = m_pSepEdit->GetText(); our_aSepTextSave = m_xSepEdit->get_text();
} }
IMPL_LINK_NOARG( SwCaptionDialog, OptionHdl, Button*, void ) short SwCaptionDialog::run()
{ {
OUString sFieldTypeName = m_pCategoryBox->GetText(); short nRet = SfxDialogController::run();
if (nRet == RET_OK)
Apply();
return nRet;
}
IMPL_LINK_NOARG(SwCaptionDialog, OptionHdl, weld::Button&, void)
{
OUString sFieldTypeName = m_xCategoryBox->get_active_text();
if(sFieldTypeName == m_sNone) if(sFieldTypeName == m_sNone)
sFieldTypeName.clear(); sFieldTypeName.clear();
SwSequenceOptionDialog aDlg(GetFrameWeld(), rView, sFieldTypeName); SwSequenceOptionDialog aDlg(m_xDialog.get(), rView, sFieldTypeName);
aDlg.SetApplyBorderAndShadow(bCopyAttributes); aDlg.SetApplyBorderAndShadow(bCopyAttributes);
aDlg.SetCharacterStyle( sCharacterStyle ); aDlg.SetCharacterStyle( sCharacterStyle );
aDlg.SetOrderNumberingFirst( bOrderNumberingFirst ); aDlg.SetOrderNumberingFirst( bOrderNumberingFirst );
@ -318,56 +332,62 @@ IMPL_LINK_NOARG( SwCaptionDialog, OptionHdl, Button*, void )
DrawSample(); DrawSample();
} }
IMPL_LINK_NOARG(SwCaptionDialog, SelectListBoxHdl, ListBox&, void) IMPL_LINK_NOARG(SwCaptionDialog, SelectListBoxHdl, weld::ComboBox&, void)
{
DrawSample();
}
IMPL_LINK_NOARG(SwCaptionDialog, SelectHdl, ComboBox&, void)
{ {
DrawSample(); DrawSample();
} }
IMPL_LINK_NOARG(SwCaptionDialog, ModifyHdl, Edit&, void) void SwCaptionDialog::ModifyHdl()
{ {
SwWrtShell &rSh = rView.GetWrtShell(); SwWrtShell &rSh = rView.GetWrtShell();
OUString sFieldTypeName = m_pCategoryBox->GetText(); OUString sFieldTypeName = m_xCategoryBox->get_active_text();
bool bCorrectFieldName = !sFieldTypeName.isEmpty(); bool bCorrectFieldName = !sFieldTypeName.isEmpty();
bool bNone = sFieldTypeName == m_sNone; bool bNone = sFieldTypeName == m_sNone;
SwFieldType* pType = (bCorrectFieldName && !bNone) SwFieldType* pType = (bCorrectFieldName && !bNone)
? rSh.GetFieldType( SwFieldIds::SetExp, sFieldTypeName ) ? rSh.GetFieldType( SwFieldIds::SetExp, sFieldTypeName )
: nullptr; : nullptr;
m_pOKButton->Enable( bCorrectFieldName && m_xOKButton->set_sensitive( bCorrectFieldName &&
(!pType || (!pType ||
static_cast<SwSetExpFieldType*>(pType)->GetType() == nsSwGetSetExpType::GSE_SEQ) ); static_cast<SwSetExpFieldType*>(pType)->GetType() == nsSwGetSetExpType::GSE_SEQ) );
m_pOptionButton->Enable( m_pOKButton->IsEnabled() && !bNone ); m_xOptionButton->set_sensitive(m_xOKButton->get_sensitive() && !bNone);
m_pNumberingSeparatorFT->Enable( bOrderNumberingFirst && !bNone ); m_xNumberingSeparatorFT->set_sensitive(bOrderNumberingFirst && !bNone);
m_pNumberingSeparatorED->Enable( bOrderNumberingFirst && !bNone ); m_xNumberingSeparatorED->set_sensitive(bOrderNumberingFirst && !bNone);
m_pFormatText->Enable( !bNone ); m_xFormatText->set_sensitive(!bNone);
m_pFormatBox->Enable( !bNone ); m_xFormatBox->set_sensitive(!bNone);
m_pSepText->Enable( !bNone ); m_xSepText->set_sensitive(!bNone);
m_pSepEdit->Enable( !bNone ); m_xSepEdit->set_sensitive(!bNone);
DrawSample(); DrawSample();
} }
IMPL_LINK_NOARG(SwCaptionDialog, CaptionHdl, Button*, void) IMPL_LINK_NOARG(SwCaptionDialog, ModifyEntryHdl, weld::Entry&, void)
{ {
SfxItemSet aSet( rView.GetDocShell()->GetDoc()->GetAttrPool() ); ModifyHdl();
SwCaptionOptDlg aDlg(GetFrameWeld(), aSet); }
IMPL_LINK_NOARG(SwCaptionDialog, ModifyComboHdl, weld::ComboBox&, void)
{
ModifyHdl();
}
IMPL_LINK_NOARG(SwCaptionDialog, CaptionHdl, weld::Button&, void)
{
SfxItemSet aSet(rView.GetDocShell()->GetDoc()->GetAttrPool());
SwCaptionOptDlg aDlg(m_xDialog.get(), aSet);
aDlg.run(); aDlg.run();
} }
void SwCaptionDialog::DrawSample() void SwCaptionDialog::DrawSample()
{ {
OUString aStr; OUString aStr;
OUString sCaption = m_pTextEdit->GetText(); OUString sCaption = m_xTextEdit->get_text();
// number // number
OUString sFieldTypeName = m_pCategoryBox->GetText(); OUString sFieldTypeName = m_xCategoryBox->get_active_text();
bool bNone = sFieldTypeName == m_sNone; bool bNone = sFieldTypeName == m_sNone;
if( !bNone ) if( !bNone )
{ {
const sal_uInt16 nNumFormat = static_cast<sal_uInt16>(reinterpret_cast<sal_uIntPtr>(m_pFormatBox->GetSelectedEntryData())); const sal_uInt16 nNumFormat = m_xFormatBox->get_active_id().toUInt32();
if( SVX_NUM_NUMBER_NONE != nNumFormat ) if (SVX_NUM_NUMBER_NONE != nNumFormat)
{ {
// category // category
//#i61007# order of captions //#i61007# order of captions
@ -405,43 +425,22 @@ void SwCaptionDialog::DrawSample()
//#i61007# order of captions //#i61007# order of captions
if( bOrderNumberingFirst ) if( bOrderNumberingFirst )
{ {
aStr += m_pNumberingSeparatorED->GetText() + sFieldTypeName; aStr += m_xNumberingSeparatorED->get_text() + sFieldTypeName;
} }
} }
if( !sCaption.isEmpty() ) if( !sCaption.isEmpty() )
{ {
aStr += m_pSepEdit->GetText(); aStr += m_xSepEdit->get_text();
} }
} }
aStr += sCaption; aStr += sCaption;
// do preview! // do preview!
m_pPreview->SetPreviewText( aStr ); m_aPreview.SetPreviewText(aStr);
} }
SwCaptionDialog::~SwCaptionDialog() SwCaptionDialog::~SwCaptionDialog()
{ {
disposeOnce();
}
void SwCaptionDialog::dispose()
{
pMgr.reset();
m_pTextEdit.clear();
m_pCategoryBox.clear();
m_pFormatText.clear();
m_pFormatBox.clear();
m_pNumberingSeparatorFT.clear();
m_pNumberingSeparatorED.clear();
m_pSepText.clear();
m_pSepEdit.clear();
m_pPosText.clear();
m_pPosBox.clear();
m_pOKButton.clear();
m_pAutoCaptionButton.clear();
m_pOptionButton.clear();
m_pPreview.clear();
SvxStandardDialog::dispose();
} }
SwSequenceOptionDialog::SwSequenceOptionDialog(weld::Window *pParent, SwView &rV, const OUString& rSeqFieldType ) SwSequenceOptionDialog::SwSequenceOptionDialog(weld::Window *pParent, SwView &rV, const OUString& rSeqFieldType )
@ -530,8 +529,8 @@ void SwSequenceOptionDialog::SetCharacterStyle(const OUString& rStyle)
// #i61007# order of captions // #i61007# order of captions
void SwCaptionDialog::ApplyCaptionOrder() void SwCaptionDialog::ApplyCaptionOrder()
{ {
m_pNumberingSeparatorFT->Enable(bOrderNumberingFirst); m_xNumberingSeparatorFT->set_sensitive(bOrderNumberingFirst);
m_pNumberingSeparatorED->Enable(bOrderNumberingFirst); m_xNumberingSeparatorED->set_sensitive(bOrderNumberingFirst);
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View File

@ -19,11 +19,7 @@
#ifndef INCLUDED_SW_SOURCE_UIBASE_INC_CPTION_HXX #ifndef INCLUDED_SW_SOURCE_UIBASE_INC_CPTION_HXX
#define INCLUDED_SW_SOURCE_UIBASE_INC_CPTION_HXX #define INCLUDED_SW_SOURCE_UIBASE_INC_CPTION_HXX
#include <svx/stddlg.hxx> #include <sfx2/basedlgs.hxx>
#include <vcl/fixed.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/edit.hxx>
#include <vcl/button.hxx>
#include "actctrl.hxx" #include "actctrl.hxx"
#include <com/sun/star/container/XNameAccess.hpp> #include <com/sun/star/container/XNameAccess.hpp>
@ -34,28 +30,10 @@
class SwFieldMgr; class SwFieldMgr;
class SwView; class SwView;
class SwCaptionDialog : public SfxDialogController
class SwCaptionDialog : public SvxStandardDialog
{ {
VclPtr<Edit> m_pTextEdit;
VclPtr<ComboBox> m_pCategoryBox;
OUString const m_sNone; OUString const m_sNone;
TextFilterAutoConvert m_aTextFilter; TextFilterAutoConvert m_aTextFilter;
VclPtr<FixedText> m_pFormatText;
VclPtr<ListBox> m_pFormatBox;
//#i61007# order of captions
VclPtr<FixedText> m_pNumberingSeparatorFT;
VclPtr<Edit> m_pNumberingSeparatorED;
VclPtr<FixedText> m_pSepText;
VclPtr<Edit> m_pSepEdit;
VclPtr<FixedText> m_pPosText;
VclPtr<ListBox> m_pPosBox;
VclPtr<OKButton> m_pOKButton;
VclPtr<PushButton> m_pAutoCaptionButton;
VclPtr<PushButton> m_pOptionButton;
VclPtr<SwCaptionPreview> m_pPreview;
SwView &rView; // search per active, avoid View SwView &rView; // search per active, avoid View
std::unique_ptr<SwFieldMgr> pMgr; // pointer to save the include std::unique_ptr<SwFieldMgr> pMgr; // pointer to save the include
@ -65,22 +43,41 @@ class SwCaptionDialog : public SvxStandardDialog
css::uno::Reference< css::container::XNameAccess > xNameAccess; css::uno::Reference< css::container::XNameAccess > xNameAccess;
DECL_LINK(SelectHdl, ComboBox&, void); CaptionPreview m_aPreview;
DECL_LINK(SelectListBoxHdl, ListBox&, void); std::unique_ptr<weld::Entry> m_xTextEdit;
DECL_LINK(ModifyHdl, Edit&, void); std::unique_ptr<weld::ComboBox> m_xCategoryBox;
DECL_LINK(OptionHdl, Button *, void); std::unique_ptr<weld::Label> m_xFormatText;
DECL_LINK(CaptionHdl, Button *, void); std::unique_ptr<weld::ComboBox> m_xFormatBox;
//#i61007# order of captions
std::unique_ptr<weld::Label> m_xNumberingSeparatorFT;
std::unique_ptr<weld::Entry> m_xNumberingSeparatorED;
std::unique_ptr<weld::Label> m_xSepText;
std::unique_ptr<weld::Entry> m_xSepEdit;
std::unique_ptr<weld::Label> m_xPosText;
std::unique_ptr<weld::ComboBox> m_xPosBox;
std::unique_ptr<weld::Button> m_xOKButton;
std::unique_ptr<weld::Button> m_xAutoCaptionButton;
std::unique_ptr<weld::Button> m_xOptionButton;
std::unique_ptr<weld::CustomWeld> m_xPreview;
virtual void Apply() override; DECL_LINK(SelectListBoxHdl, weld::ComboBox&, void);
DECL_LINK(ModifyEntryHdl, weld::Entry&, void);
DECL_LINK(ModifyComboHdl, weld::ComboBox&, void);
DECL_LINK(OptionHdl, weld::Button&, void);
DECL_LINK(CaptionHdl, weld::Button&, void);
DECL_LINK(TextFilterHdl, OUString&, bool);
void DrawSample(); void Apply();
void ApplyCaptionOrder(); //#i61007# order of captions
void ModifyHdl();
void DrawSample();
void ApplyCaptionOrder(); //#i61007# order of captions
static OUString our_aSepTextSave; // Save caption separator text static OUString our_aSepTextSave; // Save caption separator text
public: public:
SwCaptionDialog( vcl::Window *pParent, SwView &rV ); SwCaptionDialog(weld::Window *pParent, SwView &rV);
virtual short run() override;
virtual ~SwCaptionDialog() override; virtual ~SwCaptionDialog() override;
virtual void dispose() override;
}; };
#endif #endif

View File

@ -46,14 +46,12 @@ using namespace css;
void SwView::ExecDlgExt(SfxRequest const &rReq) void SwView::ExecDlgExt(SfxRequest const &rReq)
{ {
vcl::Window& rMDI = GetViewFrame()->GetWindow();
switch ( rReq.GetSlot() ) switch ( rReq.GetSlot() )
{ {
case FN_INSERT_CAPTION: case FN_INSERT_CAPTION:
{ {
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
ScopedVclPtr<VclAbstractDialog> pDialog(pFact->CreateSwCaptionDialog( &rMDI, *this )); ScopedVclPtr<VclAbstractDialog> pDialog(pFact->CreateSwCaptionDialog(GetFrameWeld(), *this ));
pDialog->Execute(); pDialog->Execute();
break; break;
} }

View File

@ -1,18 +1,106 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 --> <!-- Generated with glade 3.22.1 -->
<interface domain="sw"> <interface domain="sw">
<requires lib="gtk+" version="3.18"/> <requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/>
<object class="GtkDialog" id="InsertCaptionDialog"> <object class="GtkDialog" id="InsertCaptionDialog">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="border_width">6</property> <property name="border_width">6</property>
<property name="title" translatable="yes" context="insertcaption|InsertCaptionDialog">Insert Caption</property> <property name="title" translatable="yes" context="insertcaption|InsertCaptionDialog">Insert Caption</property>
<property name="modal">True</property>
<property name="default_width">0</property>
<property name="default_height">0</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<child>
<placeholder/>
</child>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1"> <object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">12</property> <property name="spacing">12</property>
<child internal-child="action_area">
<object class="GtkButtonBox" id="dialog-action_area1">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="auto">
<property name="label" translatable="yes" context="insertcaption|auto">Auto...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="options">
<property name="label" translatable="yes" context="insertcaption|options">Options...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ok">
<property name="label">gtk-ok</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="cancel">
<property name="label">gtk-cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="help">
<property name="label">gtk-help</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
<property name="secondary">True</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
<child> <child>
<object class="GtkBox" id="box1"> <object class="GtkBox" id="box1">
<property name="visible">True</property> <property name="visible">True</property>
@ -123,7 +211,7 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBox" id="numbering"> <object class="GtkComboBoxText" id="numbering">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
@ -172,7 +260,7 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBox" id="position"> <object class="GtkComboBoxText" id="position">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
@ -247,9 +335,24 @@
<property name="top_padding">6</property> <property name="top_padding">6</property>
<property name="left_padding">12</property> <property name="left_padding">12</property>
<child> <child>
<object class="swuilo-SwCaptionPreview" id="preview:border"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">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="preview">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
</object> </object>
</child> </child>
</object> </object>
@ -278,97 +381,14 @@
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
</child> </child>
<child internal-child="action_area">
<object class="GtkButtonBox" id="dialog-action_area1">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="ok">
<property name="label">gtk-ok</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="cancel">
<property name="label">gtk-cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="help">
<property name="label">gtk-help</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
<property name="secondary">True</property>
</packing>
</child>
<child>
<object class="GtkButton" id="auto">
<property name="label" translatable="yes" context="insertcaption|auto">Auto...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="options">
<property name="label" translatable="yes" context="insertcaption|options">Options...</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</object> </object>
</child> </child>
<action-widgets> <action-widgets>
<action-widget response="101">auto</action-widget>
<action-widget response="102">options</action-widget>
<action-widget response="-5">ok</action-widget> <action-widget response="-5">ok</action-widget>
<action-widget response="-6">cancel</action-widget> <action-widget response="-6">cancel</action-widget>
<action-widget response="-11">help</action-widget> <action-widget response="-11">help</action-widget>
<action-widget response="0">auto</action-widget>
<action-widget response="0">options</action-widget>
</action-widgets> </action-widgets>
</object> </object>
<object class="GtkAdjustment" id="adjustment1"> <object class="GtkAdjustment" id="adjustment1">