21 #include <strings.hrc>
30 #define USER_DATA_VERSION_1 "1"
31 #define USER_DATA_VERSION USER_DATA_VERSION_1
36 :
SwFieldPage(pPage, pController,
"modules/swriter/ui/fldfuncpage.ui",
"FieldFuncPage", pCoreSet)
38 , bDropDownLBChanged(false)
39 , m_xTypeLB(m_xBuilder->weld_tree_view(
"type"))
40 , m_xSelectionLB(m_xBuilder->weld_tree_view(
"select"))
41 , m_xFormat(m_xBuilder->weld_widget(
"formatframe"))
42 , m_xFormatLB(m_xBuilder->weld_tree_view(
"format"))
43 , m_xNameFT(m_xBuilder->weld_label(
"nameft"))
44 , m_xNameED(new
ConditionEdit(m_xBuilder->weld_entry(
"condFunction")))
45 , m_xValueGroup(m_xBuilder->weld_widget(
"valuegroup"))
46 , m_xValueFT(m_xBuilder->weld_label(
"valueft"))
47 , m_xValueED(m_xBuilder->weld_entry(
"value"))
48 , m_xCond1FT(m_xBuilder->weld_label(
"cond1ft"))
49 , m_xCond1ED(new
ConditionEdit(m_xBuilder->weld_entry(
"cond1")))
50 , m_xCond2FT(m_xBuilder->weld_label(
"cond2ft"))
51 , m_xCond2ED(new
ConditionEdit(m_xBuilder->weld_entry(
"cond2")))
52 , m_xMacroBT(m_xBuilder->weld_button(
"macro"))
53 , m_xListGroup(m_xBuilder->weld_widget(
"listgroup"))
54 , m_xListItemFT(m_xBuilder->weld_label(
"itemft"))
55 , m_xListItemED(m_xBuilder->weld_entry(
"item"))
56 , m_xListAddPB(m_xBuilder->weld_button(
"add"))
57 , m_xListItemsFT(m_xBuilder->weld_label(
"listitemft"))
58 , m_xListItemsLB(m_xBuilder->weld_tree_view(
"listitems"))
59 , m_xListRemovePB(m_xBuilder->weld_button(
"remove"))
60 , m_xListUpPB(m_xBuilder->weld_button(
"up"))
61 , m_xListDownPB(m_xBuilder->weld_button(
"down"))
62 , m_xListNameFT(m_xBuilder->weld_label(
"listnameft"))
63 , m_xListNameED(m_xBuilder->weld_entry(
"listname"))
71 auto nHeight =
m_xTypeLB->get_height_rows(10);
72 m_xTypeLB->set_size_request(nWidth, nHeight);
142 const sal_uInt16 nVal =
static_cast< sal_uInt16
>(sUserData.getToken(0,
';', nIdx).toInt32());
145 for (sal_Int32
i = 0, nEntryCount =
m_xTypeLB->n_children();
i < nEntryCount; ++
i)
189 const sal_Int32 nOld = GetTypeSel();
192 SetTypeSel(m_xTypeLB->get_selected_index());
194 if(GetTypeSel() == -1)
197 m_xTypeLB->select(0);
200 if (nOld == GetTypeSel())
209 m_xFormatLB->clear();
211 const sal_uInt16 nSize = GetFieldMgr().GetFormatCount(nTypeId, IsFieldDlgHtmlMode());
213 for (sal_uInt16
i = 0;
i < nSize;
i++)
215 m_xFormatLB->append(OUString::number(GetFieldMgr().GetFormatId(nTypeId,
i)),
216 GetFieldMgr().GetFormatStr(nTypeId,
i));
224 if (m_xFormatLB->get_selected_index() == -1)
225 m_xFormatLB->select(0);
228 bool bValue =
false, bName =
false, bMacro =
false, bInsert =
true;
229 bool bFormat = nSize != 0;
235 m_xCond1FT->set_visible(!bDropDown && bCondTextField);
236 m_xCond1ED->set_visible(!bDropDown && bCondTextField);
237 m_xCond2FT->set_visible(!bDropDown && bCondTextField);
238 m_xCond2ED->set_visible(!bDropDown && bCondTextField);
239 m_xValueGroup->set_visible(!bDropDown && !bCondTextField);
240 m_xMacroBT->set_visible(!bDropDown);
241 m_xNameED->set_visible(!bDropDown);
242 m_xNameFT->set_visible(!bDropDown);
244 m_xListGroup->set_visible(bDropDown);
246 m_xNameED->SetDropEnable(
false);
254 m_xListItemsLB->clear();
255 for (
const OUString& rItem : aItems)
256 m_xListItemsLB->append_text(rItem);
258 m_xListNameED->set_text(pDrop->
GetPar2());
259 m_xListNameED->save_value();
260 bDropDownLBChanged =
false;
264 m_xNameED->set_text(GetCurField()->GetPar1());
265 m_xValueED->set_text(GetCurField()->GetPar2());
270 m_xNameED->set_text(OUString());
271 m_xValueED->set_text(OUString());
274 ListEnableHdl(*m_xListItemED);
276 if (m_xNameFT->get_label() != m_sOldNameFT)
277 m_xNameFT->set_label(m_sOldNameFT);
278 if (m_xValueFT->get_label() != m_sOldValueFT)
279 m_xValueFT->set_label(m_sOldValueFT);
285 if (!GetFieldMgr().GetMacroPath().isEmpty())
290 m_xNameFT->set_label(
SwResId(STR_MACNAME));
291 m_xValueFT->set_label(
SwResId(STR_PROMPT));
292 m_xNameED->set_text(GetFieldMgr().GetMacroName());
293 m_xNameED->set_accessible_name(m_xNameFT->get_label());
294 m_xValueED->set_accessible_name(m_xValueFT->get_label());
298 m_xNameFT->set_label(
SwResId(STR_COND));
299 m_xNameED->SetDropEnable(
true);
301 m_xNameED->set_accessible_name(m_xNameFT->get_label());
302 m_xValueED->set_accessible_name(m_xValueFT->get_label());
307 m_xNameFT->set_label(
SwResId(STR_COND));
308 m_xNameED->SetDropEnable(
true);
309 m_xValueFT->set_label(
SwResId(STR_INSTEXT));
311 if (!IsFieldEdit() && pSh )
313 bName = bValue =
true;
314 m_xNameED->set_accessible_name(m_xNameFT->get_label());
315 m_xValueED->set_accessible_name(m_xValueFT->get_label());
320 m_xNameFT->set_label(
SwResId(STR_COND));
321 m_xNameED->SetDropEnable(
true);
325 m_xCond1ED->set_text(GetCurField()->GetPar2().
getToken(0,
'|', nIdx));
326 m_xCond2ED->set_text(GetCurField()->GetPar2().
getToken(0,
'|', nIdx));
329 bName = bValue =
true;
330 m_xNameED->set_accessible_name(m_xNameFT->get_label());
331 m_xValueED->set_accessible_name(m_xValueFT->get_label());
335 m_xNameFT->set_label(
SwResId(STR_JUMPEDITFLD));
336 m_xValueFT->set_label(
SwResId(STR_PROMPT));
337 bName = bValue =
true;
338 m_xNameED->set_accessible_name(m_xNameFT->get_label());
339 m_xValueED->set_accessible_name(m_xValueFT->get_label());
343 m_xValueFT->set_label(
SwResId(STR_PROMPT));
345 m_xNameED->set_accessible_name(m_xNameFT->get_label());
346 m_xValueED->set_accessible_name(m_xValueFT->get_label());
351 m_xNameFT->set_label(
SwResId(STR_COMBCHRS_FT));
352 m_xNameED->SetDropEnable(
true);
355 const sal_Int32 nLen = m_xNameED->get_text().getLength();
358 m_xNameED->set_accessible_name(m_xNameFT->get_label());
359 m_xValueED->set_accessible_name(m_xValueFT->get_label());
368 m_xSelectionLB->hide();
370 m_xFormat->set_sensitive(bFormat);
371 m_xNameFT->set_sensitive(bName);
372 m_xNameED->set_sensitive(bName);
373 m_xValueGroup->set_sensitive(bValue);
374 m_xMacroBT->set_sensitive(bMacro);
376 EnableInsert( bInsert );
384 m_xNameED->set_text( m_xSelectionLB->get_selected_text() );
389 SelectHdl(*m_xSelectionLB);
396 ListModifyHdl(&rControl);
401 ListModifyHdl(&rControl);
435 if( nSelPos < m_xListItemsLB->n_children() - 1)
451 ListEnableHdl(*m_xListItemED);
457 m_xListAddPB->set_sensitive(!m_xListItemED->get_text().isEmpty() &&
458 -1 == m_xListItemsLB->find_text(m_xListItemED->get_text()));
459 bool bEnableButtons = m_xListItemsLB->get_selected_index() != -1;
460 m_xListRemovePB->set_sensitive(bEnableButtons);
461 m_xListUpPB->set_sensitive(bEnableButtons && (m_xListItemsLB->get_selected_index() > 0));
462 m_xListDownPB->set_sensitive(bEnableButtons &&
463 (m_xListItemsLB->get_selected_index() < (m_xListItemsLB->n_children() - 1)));
475 std::vector<OUString> aLst;
477 const size_t nCount = aLst.size();
479 for (
size_t i = 0;
i < nCount; ++
i)
483 bool bEnable = nCount != 0;
514 sal_uInt16 nSubType = 0;
516 const sal_Int32 nEntryPos =
m_xFormatLB->get_selected_index();
517 const sal_uLong nFormat = (nEntryPos == -1)
544 for (sal_Int32
i = 0, nEntryCount =
m_xListItemsLB->n_children();
i < nEntryCount; ++
i)
557 m_xNameED->get_value_changed_from_saved() ||
576 return std::make_unique<SwFieldFuncPage>(pPage, pController, pAttrSet);
586 const sal_Int32 nEntryPos =
m_xTypeLB->get_selected_index();
587 const sal_uInt16 nTypeSel = ( -1 == nEntryPos )
589 :
m_xTypeLB->get_id(nEntryPos).toUInt32();
595 const sal_Int32 nLen = m_xNameED->get_text().getLength();
604 EnableInsert( bEnable );
#define LINK(Instance, Class, Member)
std::unique_ptr< weld::Button > m_xListRemovePB
IMPL_LINK_NOARG(SwFieldFuncPage, TypeHdl, weld::TreeView &, void)
void RestorePos(weld::TreeView &rLst1)
void ListModifyHdl(const weld::Widget *)
void SetUserData(const OUString &rString)
std::unique_ptr< weld::Button > m_xListDownPB
virtual sal_uInt16 GetGroup() override
sal_uInt32 GetFormat() const
Query parameters for dialog and for BASIC.
std::unique_ptr< weld::TreeView > m_xTypeLB
SwWrtShell * GetActiveWrtShell()
std::unique_ptr< weld::Label > m_xNameFT
static const char * FMT_MARK_ARY[]
std::unique_ptr< weld::Label > m_xValueFT
static sal_uInt16 GetPos(SwFieldTypesEnum nTypeId)
IMPL_LINK(SwFieldFuncPage, ListModifyButtonHdl, weld::Button &, rControl, void)
virtual bool FillItemSet(SfxItemSet *rSet) override
Used by the UI to modify the document model.
virtual OUString GetPar1() const
SwFieldMgr & GetFieldMgr()
void SetMacroPath(const OUString &rPath)
static SwFieldTypesEnum GetTypeId(sal_uInt16 nPos)
std::unique_ptr< ConditionEdit > m_xCond1ED
virtual ~SwFieldFuncPage() override
#define MAX_COMBINED_CHARACTERS
const OUString & GetSelectedItem() const
Returns the selected item.
const OUString & GetUserData() const
bool IsFieldDlgHtmlMode() const
std::unique_ptr< weld::TreeView > m_xListItemsLB
void FillFieldSelect(weld::TreeView &rListBox)
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
virtual void Reset(const SfxItemSet *rSet) override
void EnableInsert(bool bEnable)
const OUString & GetMacroPath() const
void SavePos(const weld::TreeView &rLst1)
SwFieldFuncPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *pSet)
#define USER_DATA_VERSION_1
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
SwFieldTypesEnum
List of FieldTypes at UI.
#define USER_DATA_VERSION
std::unique_ptr< ConditionEdit > m_xNameED
void InsertField(SwFieldTypesEnum nTypeId, sal_uInt16 nSubType, const OUString &rPar1, const OUString &rPar2, sal_uInt32 nFormatId, sal_Unicode cDelim= ' ', bool bIsAutomaticLanguage=true)
std::unique_ptr< weld::Entry > m_xListNameED
sal_Int32 GetTypeSel() const
std::unique_ptr< weld::TreeView > m_xFormatLB
OUString SwResId(const char *pId)
#define FIELD_COLUMN_WIDTH
std::unique_ptr< ConditionEdit > m_xCond2ED
SwFieldTypesEnum GetTypeId() const
std::unique_ptr< weld::Button > m_xMacroBT
virtual OUString GetPar2() const override
Returns the name of the field.
std::unique_ptr< weld::Entry > m_xListItemED
std::unique_ptr< weld::Entry > m_xValueED
OUString ChooseMacro(weld::Window *pParent, const css::uno::Reference< css::frame::XModel > &rxLimitToDocument, const css::uno::Reference< css::frame::XFrame > &xDocFrame, bool bChooseOnly)
std::unique_ptr< weld::TreeView > m_xSelectionLB
const o3tl::enumarray< SvxAdjust, unsigned short > aSvxToUnoAdjust USHRT_MAX
OUString GetSelText() const
get selected text of a node at current cursor
std::unique_ptr< weld::Widget > m_xValueGroup
sal_Int32 getToken(const Context &rContext, const char *pToken)
std::unique_ptr< weld::Button > m_xListAddPB
static OUString GetTypeStr(sal_uInt16 nPos)
static const SwFieldGroupRgn & GetGroupRange(bool bHtmlMode, sal_uInt16 nGrpId)
std::unique_ptr< weld::Button > m_xListUpPB
virtual void FillUserData() override
css::uno::Sequence< OUString > GetItemSequence() const
Returns the items of the dropdown box.
void GetSubTypes(SwFieldTypesEnum nId, std::vector< OUString > &rToFill)